
《软件工程基判续述础教程》内容循序渐进、深入浅出、概念清晰、结构条理,将软件工程的理论知识与软件工程的应用实践相结合,并配有适量的习题,帮助读者从不同的角度理解和掌握所学的知识,构建完整的软件工程知识体系。
- 书名 软件工程基础教程
- 出版社 国防工业出版社
- 页数 283页
- 开本 16
- 作者 潘广贞 杨剑
图书信息
作 译 者:田文洪
出版时间:2012-01
千 字 数:533
作者简介
作者姓名:田文洪

学位:博士
任职:教授、博导
研究方向:云计算、大数据资源调度来自;高性能并行处理;NP难问题近似算法
其他职业:电子科技大学客座脱口秀表演艺术家
内容简介
本书由浅入深、循序渐进地介绍了规范化的软件开发方法所涉及的概念和方法。内容包括过程模型、软件需求、设计工程、生产率和工作量度量、软件测试、软件维护、质量管理、项目管理和风险管理等内容,最后介绍了一些常用的软件开发工具,并给出编码风格上的来自建议。
目 录
U求放nit 1 Introduction to Software Engineeri客绿阻评企必ng 1
软件工程介绍
Learning Objectives 1
学习目标
1.1 A Brief Int360百科roduction to Software Engineering 1
软件工程简介
1.1.1 The Pioneering Era 2
开创时期
1.1.2 1945 to 1965: The Origins 2
1945到1965: 发起
1.1.3 1965 to 1985: The Softw海诉玉策斤味米候况形旧are Crisis 犯规甲曾脚2
1965到1985:软件危机
1.1.4 1985 t校京o 1989: No Silver Bullet 3
1985到1989:没有银弹
1.1.5 1990 to 1999: Prominence of the Internet 4
1990到1999:Internet盛行
1.1.6 帝运刚的吸湖呢2000 to Present: Lightweight Methodologies 4
2000年至今:轻量级方法
1.1.7 Current Trends in Software Engineering 4
软件工程的发展趋势
1.1.8 Software Engineering Today 5
今天的软件工程
1.2 Software 5
软件
1.2.1 A Formal Definition of Software 5
织急局 软件的正式定义
1.2.2 Characteristics of Software 5
软件的特征
1.2.3 The Dual Roles of Software 7
软件的双重角色
1.2.4 Class汽执解ification of Software 7
软件分类
1.2.5 皇务识地房轮级黑记Why does Software Change Very 反Fast? 7
为什么软河香却植坏年率采空件变化快?
1.3 Why Do We Need S新oftware Engi移须neering? 8
为什么需要软件工程?
1富换队危等文算宜.3.1 Softwa树获备开重re Crisis 般良间限号镇查散境8
软件危机
1.3.2 An Economist's View of Software and Softwa交心践置陈劳便轴re Engineerin欢液期测g 8
一个经济学家对软件和软件工程的看法
1.3.3 The Formal Definition of Software Engineering 9
软件工程的正式定义
1.4 Major Concerns and Objectives of Software Engineering 9
软件工程的目标和担忧
1.5 Seven Principles for Software Engineering 9
软件工程的七个原则
1.5.1 Manage Using a Phased Lifecycle Plan 9
使用阶段性的生命周期管理计划
1.5.2 Perform Continuous Validation 10
进行持续验证
1.5.3 Maintain Disciplined Product Control 10
维持有效的产品控制
1.5.4 Use Modern Programming/Engineering Practices 10
运用现代编程/工程实践
1.5.5 Maintain Clear Accountability for Results 10
维护清晰的问责机制
1.5.6 Use Better and Fewer People 10
用更好更少的人
1.5.7 Maintain a Commitment to Improve the Process 11
保持过程改进
1.6 Major Topics in Software Engineering 11
软件工程中的主要课题
1.7 Relationship to Other Disciplines 13
其他相关学科
1.8 Some Misunderstandings about Software Engineering 14
一些对软件工程的错误认识
1.9 Software Engineering Code of Professional and Ethical Responsibility 15
软件工程的专业和道德责任
Summary 16
总结
Notes 16
重点注释
Glossary of this unit 17
术语
Quiz 17
习题
References 18
参考文献
Further Reading 18
扩展阅读
Unit 2 Process Models 21
过程模型
Learning Objectives 21
学习目标
2.1 Introduction 21
简介
2.2 What is Software Process? 22
什么是软件过程?
2.3 Maturity Models 23
成熟度模型
2.4 Software Process Models 24
软件过程模型
2.4.1 The Waterfall Model 24
瀑布模型
2.4.2 The Evolutionary Model 26
演化模型
2.4.3 Component-based Model 28
基于组件的模型
2.4.4 Incremental Process Models 29
增量模型
2.4.5 Some New Process 33
一些新模型
2.5 How to Choose Process Models? 33
如何选择过程模型?
2.6 The Relationship between Process and Product 33
过程和产品的关系
Summary 34
总结
Notes 34
重点注释
Glossary of this unit 35
术语
Quiz 35
习题
References 36
参考文献
Unit 3 Software Requirements 37
软件需求
Learning Objectives 37
学习目标
3.1 Software Requirements Fundamentals 37
软件需求基础
3.1.1 Definition of a Software Requirement 38
软件需求定义
3.1.2 Product and Process Requirements 38
产品和过程需求
3.1.3 Functional and Non-functional Requirements 39
功能和非功能需求
3.1.4 Quantifiable Requirements 39
可量化的需求
3.1.5 System and Software Requirements 39
系统需求和软件需求
3.2 Requirements Process 40
需求过程
3.2.1 Process Models 40
过程模型
3.2.2 Process Actors 41
过程角色
3.3 Requirements Elicitation 41
需求获取
3.3.1 Requirements Sources 42
需求来源
3.3.2 Elicitation Techniques 42
需求获取方法
3.4 Requirements Analysis 43
需求分析
3.4.1 Requirements Classification 44
需求分类
3.4.2 Conceptual Modeling 45
概念建模
3.4.3 Architectural Design and Requirements Allocation 46
结构设计和需求配置
3.4.4 Requirements Negotiation 46
需求谈判
3.5 Requirements Specification 47
需求规格
3.5.1 The System Definition Document 47
系统定义文档
3.5.2 The Software Requirements Specification 48
需求规格说明书
3.6 Requirements Validation 52
需求验证
3.6.1 Requirements Reviews 52
需求审查
3.6.2 Prototyping 53
原型
3.6.3 Model Validation 53
模型验证
3.6.4 Acceptance Tests 54
验收测试
3.7 Practical Considerations 54
实际考虑因素
3.7.1 Iterative Nature of the Requirements Process 54
需求过程的迭代
3.7.2 Change Management 55
变更管理
3.8 Example: Online Recruiting System Requirement Specification 55
例:网上招聘系统的需求规格说明书
3.8.1 Introduction 55
导言
3.8.2 System Definitions 55
系统定义
3.8.3 Running Environment 56
应用环境
3.8.4 Function Specifications 57
功能规格
3.8.5 Performance Requirements 59
性能需求
3.8.6 Products Submitting 59
产品提交
3.8.7 Implementation Constrains 59
实现约束
Summary 59
总结
Notes 59
重点注释
Glossary of this unit 60
术语
Quiz 60
习题
References 60
参考文献
Unit 4 Software Design Engineering 62
软件设计工程
Learning Objectives 62
学习目标
4.1 Introduction to Design Engineering 62
设计工程简介
4.2 Design Process and Quality 63
设计过程和质量
4.3 Design Technologies 64
设计技术
4.3.1 Abstraction 64
抽象
4.3.2 Design Patterns 65
设计模式
4.3.3 Modularization 65
模块化
4.3.4 Information Hiding 67
信息隐藏
4.3.5 Function Independence 67
功能独立
4.3.6 Refinement 68
改进
4.3.7 Refactoring 68
重构
4.4 Design Models 68
设计模型
4.4.1 Data Design 70
数据结构设计
4.4.2 Architecture Design 72
架构设计
4.4.3 Interface Design 76
接口设计
4.4.4 Component Design 76
组件设计
4.4.5 Deploy Design 77
部署设计
4.5 Design Case Study 80
设计实例
Summary 82
总结
Notes 83
重点注释
Glossary of this unit 84
术语
Quiz 84
习题
References 84
参考文献
Unit 5 Software Productivity and Effort Metrics 86
软件生产率和工作量度量
Learning Objectives 86
学习目标
5.1 Introduction to Software Productivity and Project Effort Estimation 86
简介
5.2 Software Productivity Estimation 88
软件生产率估计
5.2.1 Size-based Metrics-Direct Measurement 89
基于规模的度量--直接度量
5.2.2 Function-points Metrics-Indirect Measurement 90
功能点度量--间接度量
5.2.3 The Relationship Between LOC and FP Based Metrics 92
LOC和FP度量的关系
5.2.4 How to Use These Metrics for Productivity Estimation? 92
如何运用这些度量进行生产率估计?
5.3 Estimation for Project Effort 93
项目工作量估计
5.3.1 Algorithmic Cost Modeling -Empirical Measurement 93
算法成本模型--基于经验的度量
5.3.2 The COCOMO Model 94
COCOMO模型
5.3.3 Estimation of Effort in Project Planning 95
项目计划中的工作量度量
5.3.4 Estimation of Effort by Tasks Breakdown 95
通过任务分解来估算工作量
5.3.5 Estimation of Effort by Current Available Resources 96
通过目前可用的资源来估算工作量
Summary 96
总结
Notes 96
重点注释
Glossary of this unit 98
术语
Quiz 98
习题
References 98
参考文献
Unit 6 Software Quality Management 99
软件质量管理
Learning Objectives 99
学习目标
6.1 An Introduction to Software Quality Management 99
简介
6.2 Software Quality 100
软件质量
6.2.1 Definition of Software Quality 100
软件质量定义
6.2.2 Quality Control 101
质量控制
6.2.3 Quality Assurance 101
质量保证
6.2.4 Quality Costs 102
质量成本
6.3 Software Quality Assurance 102
软件质量保证
6.3.1 Background Introduction 103
背景介绍
6.3.2 SQA Activities 104
SQA活动
6.4 Software Review 106
软件审查
6.4.1 Impact of Software Bug Costs 106
软件错误的代价
6.4.2 Software Defect Indicator and Removal 107
软件缺陷的发现和消除
6.5 Formal Technique Review 107
正式技术审查
6.5.1 Review Report 107
审查报告
6.5.2 Review Tutorial 108
审查指南
6.6 Software Reliability 109
软件可靠性
6.6.1 Measurement of Reliability and Availability 109
可靠性和可用性度量
6.6.2 Software Security 109
软件安全
6.7 ISO 9000 Family of Standards 109
ISO 9000标准
Summary 113
总结
Notes 113
重点注释
Glossary of this unit 114
术语
Quiz 114
习题
References 114
参考文献
Unit 7 Testing Techniques 116
测试方法
Learning Objectives 116
学习目标
7.1 Testing Introduction 116
测试简介
7.2 Testing Objective 117
测试目标
7.3 Testing Evaluation 117
测试评估
7.3.1 Coverage/Thoroughness Measures 117
覆盖性/彻底性度量
7.3.2 Fault Seeding 117
故障植入
7.4 Testing Techniques 117
测试方法
7.4.1 White-box Testing 117
白盒测试
7.4.2 Black-box Testing 122
黑盒测试
7.5 Example: Testing Design of Online Recruiting System 123
例:网上招聘系统的测试设计
7.5.1 Introduction 123
简介
7.5.2 Testing Design 124
测试设计
7.5.3 Testing Cases 124
测试用例
Summary 124
总结
Notes 125
重点注释
Glossary of this unit 125
术语
Quiz 126
习题
References 126
参考文献
Unit 8 Testing Strategies 127
测试策略
Learning Objectives 127
学习目标
8.1 Testing Strategies Introduction 127
测试策略简介
8.2 Unit Testing 127
单元测试
8.2.1 Unit Testing Considerations 128
单元测试考虑因素
8.2.2 Unit Testing Procedures 129
单元测试过程
8.3 Integration Testing 130
集成测试
8.3.1 Top-down Integration 130
自顶向下集成
8.3.2 Bottom-up Integration 131
自底向上集成
8.3.3 Regression Testing 132
回归测试
8.3.4 Smoke Testing 132
冒烟测试
8.4 Validation Testing 132
验证测试
8.4.1 Validation Testing Criteria 133
验证测试标准
8.4.2 Configuration Review 133
配置评审
8.4.3 Alpha and Beta Testing 133
Alpha和Beta测试
8.5 System Testing 134
系统测试
8.5.1 Recovery Testing 134
恢复测试
8.5.2 Security Testing 134
安全性测试
8.5.3 Stress Testing 134
压力测试
8.5.4 Performance Testing 135
性能测试
8.6 Example: Testing Report of Online Recruiting System 135
例:网上招聘系统测试报告
8.6.1 Introduction 135
简介
8.6.2 Testing Time, Place, and People 136
测试时间、地点和人员
8.6.3 Testing Environment 136
测试环境
8.6.4 Testing Execution 136
测试执行
8.6.5 Testing Result Analysis 137
测试结果分析
8.6.6 Testing Evaluation 138
测试评估
Summary 138
总结
Notes 138
重点注释
Glossary of this unit 139
术语
Quiz 139
习题
References 139
参考文献
Unit 9 Software Maintenance 141
软件维护
Learning Objectives 141
学习目标
9.1 Software Maintenance Fundamentals 141
软件维护基础
9.1.1 Definitions and Terminology 142
定义和术语
9.1.2 Need for Maintenance 142
维护的必要性
9.1.3 Majority of Maintenance Costs 142
维护成本
9.2 Key Issues in Software Maintenance 143
软件维护的关键问题
9.2.1 Technical Issues 143
技术问题
9.2.2 Management Issues 145
管理问题
9.2.3 Maintenance Cost Estimation 146
维护成本估计
9.3 Maintenance Process 146
维护过程
9.3.1 Maintenance Processes 146
维护过程
9.3.2 Maintenance Activities 148
维护活动
9.4 Techniques for Maintenance 150
维护技术
9.4.1 Program Comprehension 150
程序理解
9.4.2 Reengineering 150
再工程
9.4.3 Reverse Engineering 150
逆向工程
Summary 151
总结
Notes 151
重点注释
Glossary of this unit 151
术语
Quiz 151
习题
References 151
参考文献
Unit 10 Software Project Management 153
软件项目管理
Learning Objectives 153
学习目标
10.1 Introduction to Project Management 153
项目管理简介
10.2 Four Elements of Project Management 156
项目管理四要素
10.3 The People 157
人员
10.3.1 People Management Capability Maturity Model 158
人员管理能力成熟度模型
10.3.2 Team Building 160
团队建设
10.3.3 Team Organization 161
团队组织
10.3.4 Virtual Teams 162
虚拟团队
10.4 The Product 163
产品
10.4.1 Software Scope 163
软件范围
10.4.2 Problem Decomposition 164
问题分解
10.5 The Process 164
过程
10.6 The Project 167
项目
10.6.1 Project Estimation 168
项目估算
10.6.2 Project Planning 169
项目规划
Summary 170
总结
Notes 170
重点注释
Glossary of this unit 172
术语
Quiz 172
习题
References 172
参考文献
Unit 11 Software Risk Analysis and Management 174
软件风险分析和管理
Learning Objectives 174
学习目标
11.1 An Introduction to Software Risk Management 174
软件风险管理简介
11.2 Software Risk Management Strategy 175
软件风险管理策略
11.3 Software Risk Identification 176
软件风险识别
11.3.1 Evaluate the Whole Project 176
评价整个项目
11.3.2 Risk Classification 177
风险分类
11.4 Software Risk Assessment 178
软件风险评估
11.4.1 Building Risk List 178
制定风险清单
11.4.2 Assessing Risk Influence Factors 179
评估风险影响因素
11.4.3 Dynamic Ranking 183
动态排名
11.5 Software Risk Refinement 183
软件风险改进
11.6 Software Risk Aversion, Monitoring and Management 184
软件风险规避、监控和管理
Summary 187
总结
Notes 188
重点注释
Glossary of this unit 188
术语
Quiz 189
习题
References 189
参考文献
Unit 12 Software Engineering Development Tools 190
软件工程开发工具
Learning Objectives 190
学习目标
12.1 Software Requirements Tools 190
软件需求工具
12.2 Software Design Tools 191
软件设计工具
12.2.1 IBM Rational Software Architect 191
IBM 软件开发
12.2.2 PowerDesigner 191
PowerDesigner工具
12.3 Software Architecture Tools 192
软件架构工具
12.3.1 Visual Studio.NET 192
Visual Studio .NET工具
12.3.2 Visual Borland JBuilder 193
Visual Borland JBuilder工具
12.3.3 Eclipse 194
Eclipse工具
12.4 Software Maintenance Tools 196
软件维护工具
12.4.1 CASE Tool 196
CASE工具
12.4.2 Information Repository of CASE Environment 197
CASE环境的信息库
12.4.3 CASE Environment Structure 197
CASE环境结构
12.5 Software Testing Tools 198
软件测试工具
12.5.1 WinRunner 198
WinRunner工具
12.5.2 LoadRunner 199
LoadRunner工具
12.6 Software Configuration Management Tools 201
软件配置管理工具
12.6.1 Software Configuration Manager 202
软件配置管理
12.6.2 Source Code Management 203
软件代码管理
12.6.3 Version Management 204
版本管理
12.6.4 Operation Command 205
操作命令
12.7 Software Engineering Tools 211
软件工程工具
Appendix A General Style and Coding Standards for Software Projects 214
软件项目的一般风格和编码标准
A.1 Introduction 214
简介
A.1.1 Purpose 214
目的
A.1.2 Scope 215
范围
A.1.3 Coding Standard Documents 215
编码标准文档
A.1.4 Other Related Project Documents 215
其他相关文档
A.1.5 Terms Used in This Document 215
文档中的术语
A.1.6 References 216
参考文献
A.1.7 Our Limited Lifetime Warranty 216
有限的使用期限保证
A.1.8 The Emotional Topic of Coding Standards 216
编码标准的情绪问题
A.2 Project Dependent Standards 217
项目依赖标准
A.3 File And Module Guidelines 217
文件和模块指南
A.3.1 Module Design Guidelines 217
模块设计指南
A.3.2 Header (Include) Files 218
Header (Include) 文件
A.3.3 Source File Layout Guideline 218
源文件布局指南
A.3.4 File Naming Guideline 219
文件命名指南
A.3.5 File Informational Headers 219
文件头
A.3.6 Subroutine Header 220
子程序头
A.4 Constants and Macros 221
常量和宏
A.4.1 Use Constants and Macros Instead of Hard Coded Literal Values 221
用常量和宏代替硬编码
A.4.2 Only Define Constants and Macros Once 221
常量和宏只定义一次
A.4.3 Place Parenthesis around Each Macro Parameters 221
为每个宏参数加小括号
A.4.4 Notes about Style 221
记录风格
A.5 Global Data Guidelines 222
全局数据指南
A.6 Subroutines 222
子程序
A.6.1 Subroutine Scope Guidelines 222
子程序范围指南
A.6.2 Subroutine Declaration Guidelines 222
子程序声明指南
A.6.3 Subroutine Layout Guidelines 222
子程序布局指南
A.6.4 Subroutine Size Guidelines 222
子程序规模指南
A.6.5 Parameter List Guidelines 223
参数列表指南
A.6.6 Variable Declaration Guidelines 223
变量声明指南
A.7 Comments 223
注释
A.7.1 Distributed Code Description 223
分布式代码描述
A.7.2 Comment Block Standard 224
注释标准
A.7.3 In line Comments 224
行内注释
A.7.4 Commenting Control Constructs 224
注释控制结构
A.8 Code Layout 224
代码布局
A.8.1 One Statement per Line 224
每行一个语句
A.8.2 Indentation Guidelines 225
缩进指南
A.8.3 Brackets, Begin...End, and Delimiting Control Blocks 225
括号、Begin...End和边界控制块
A.8.4 Error Handling 225
错误处理
A.9 Naming Convention for Identifiers (Variables, Constants, and Subroutines) 226
标识符(变量、常量和子程序)的命名约定
A.9.1 Select Clear and Meaningful Names 226
选择清晰和有意义的名字
A.9.2 Naming Subroutines (verb and object) 226
命名子程序(动词和对象)
A.9.3 Naming Constants, Variables (noun) 226
命名常量和变量(名词)
A.9.4 Naming Boolean Identifiers 226
命名Boolean标志符(动词、对象或形容词)
A.9.5 Naming Types 226
命名类型
A.9.6 Use of Upper/lower Case and Underscores to Differentiate Subroutines, Variables,
and Constants 227
用大小写来区别子程序、变量和常量
A.9.7 Subroutines and Program Units 227
子程序和程序单元
A.9.8 Variables 227
变量
A.9.9 Macros and Constants 227
宏和常量
A.9.10 Use of Prefix (Hungarian) Notations to Differentiate the Scope and Type of a Data Variable 227
用前缀来区别变量的范围和类型
A.9.11 Abbreviations 230
缩写
A.9.12 Summary Table for Naming Convention: 230
命名约定的总结
A.10 Misc. Rules for Coding 231
编码规范
A.10.1 Conditionals and Comparisons 231
条件和比较
A.10.2 Program Flow 231
程序流
A.10.3 Binding Time of Variables and Values 231
变量和值的绑定时间
A.10.4 Go-tos, Pointers, and Issues of Clarity 232
Go-to语句、指针和二义性问题
A.10.5 Strive to Develop Clear Code 232
开发清晰的代码
A.10.6 Use Libraries When Available 232
使用库
A.10.7 Type Casting Integer and Float Variables Makes Code More Portable 232
整型变量和浮点型变量的转换使编码更容易
A.10.8 Compiler Dependent Code Should Include Tests 232
依赖编译器的代码应该包含测试
A.10.9 Use ASCII Files for Runtime or Machine Dependent Constants and Macros 233
使用执行时ASCII文件或依赖机器的常量和宏
A.10.10 Error Handling 233
错误处理
A.10.11 Debugging 233
调试
A.10.12 Using Structures and Enumerators is Recommended 233
推荐使用结构和枚举
A.11 Modularization and Information Hiding 233
模块化和信息隐藏
A.11.1 Information Hiding, Domain, and Scope of Variables 233
信息隐藏、域、变量的范围
A.11.2 Low Coupling, High Cohesion, and Clean Interfaces 233
低耦合,高内聚,清晰的接口
A.11.3 Cohesion 233
内聚
A.11.4 Coupling 233
耦合
A.11.5 Clean Interface 234
清晰的接口
A.11.6 Minimize Scope of Variables 234
最小化变量范围