图书目录

目    录

第1章  软件工程基础  1

1.1  软件  1

1.1.1  软件的概念  1

1.1.2  软件的特性  2

1.1.3  软件的演化  4

1.2  软件危机  6

1.2.1  软件危机介绍  6

1.2.2  产生软件危机的原因  8

1.2.3  消除软件危机的途径  8

1.3  软件工程  9

1.3.1  软件工程的定义  9

1.3.2  软件工程的基本原理  10

1.3.3  软件工程通用原则  13

1.3.4  软件工程的基本原则  15

1.3.5  软件工程开发活动  15

1.3.6  软件过程管理活动  17

1.3.7  软件过程改进活动  17

1.4  软件过程  20

1.4.1  软件过程概述  20

1.4.2  普适性活动  21

1.4.3  软件生命周期  22

1.5  传统过程模型  27

1.5.1  迭代和增量  28

1.5.2  瀑布模型  30

1.5.3  快速原型模型  32

1.5.4  螺旋模型  34

1.6  RUP  36

1.6.1  核心工作流  37

1.6.2  阶段  38

1.6.3  最佳实践  40

1.6.4  RUP的十大要素  41

1.6.5  RUP的裁剪  43

1.7  敏捷开发  43

1.7.1  敏捷开发知识体系  44

1.7.2  敏捷宣言  46

1.7.3  Scrum  47

1.7.4  极限编程  53

1.8  软件工程工具  56

1.8.1  CASE  56

1.8.2  软件版本  57

1.9  软件工程师的职业道德  58

1.10  习题  58

第2章  UML  63

2.1  UML简介  63

2.2  UML的历史  66

2.3  UML的结构  66

2.4  UML的事物  67

2.5  UML的关系  69

2.5.1  一般-特殊  69

2.5.2  关联  71

2.5.3  整体-部分  73

2.5.4  依赖  74

2.5.5  实现  75

2.5.6  案例  76

2.6  UML的图  77

2.6.1  用例图  77

2.6.2  类图  81

2.6.3  组件图  82

2.6.4  部署图  83

2.6.5  包图  83

2.6.6  序列图  85

2.6.7  通信图  88

2.6.8  状态机图  88

2.6.9  活动图  89

2.7  UML建模工具  92

2.8  案例  94

2.8.1  业务建模  95

2.8.2  需求  100

2.8.3  分析  109

2.8.4  设计  110

2.8.5  小结  113

2.9  习题  114

第3章  软件项目管理  117

3.1  项目管理知识体系  117

3.1.1  项目生命周期  118

3.1.2  项目管理过程组  119

3.1.3  知识领域  120

3.2  风险管理  121

3.3  团队管理  127

3.3.1  团队组织方式  127

3.3.2  建设团队  131

3.3.3  管理团队  132

3.4  估算成本  132

3.5  范围管理  138

3.6  质量管理  140

3.7  习题  141

第4章  需求调研  145

4.1  理解需求  145

4.1.1  软件需求  145

4.1.2  需求开发过程  149

4.2  需求调研方法  150

4.2.1  文档研究  150

4.2.2  问卷调查  151

4.2.3  面谈  152

4.2.4  观察  153

4.2.5  需求专题研讨会  155

4.2.6  观察业务流程和操作  156

4.3  案例分析  156

4.4  习题  167

第5章  需求建模  169

5.1  系统用例图  169

5.1.1  系统边界  169

5.1.2  系统参与者  170

5.1.3  系统用例  172

5.2  系统用例规约  179

5.2.1  系统用例规约形式  180

5.2.2  用例编号  181

5.2.3  前置条件和后置条件  181

5.2.4  书写路径步骤的注意事项  182

5.2.5  字段列表  183

5.2.6  非功能需求及设计约束  183

5.3  跟踪与变更需求  184

5.3.1  需求跟踪  184

5.3.2  需求变更  184

5.4  案例分析  185

5.4.1  从需求调研中提取系统用例  185

5.4.2  书写系统用例规约  186

5.4.3  “58同城”注册系统用例规约  187

5.5  习题  189

第6章  分析  191

6.1  发现对象  191

6.1.1  从系统用例规约中发现对象  191

6.1.2  对象的筛选  192

6.1.3  案例分析一:BusyBee手游的“开始游戏”系统用例  193

6.1.4  案例分析二:“58同城”注册系统用例  195

6.2  对象分类  198

6.2.1  案例分析  199

6.2.2  领域类图  199

6.3  定义类的属性  200

6.3.1  识别属性  200

6.3.2  案例分析  201

6.4  确定类之间的关系  201

6.5  定义类的方法  203

6.5.1  BCE模式  203

6.5.2  设计方法  204

6.5.3  案例分析一:“玩家→开始游戏”用例  204

6.5.4  案例分析二:“58同城”网站“顾客→注册”用例  206

6.6  习题  208

第7章  设计  211

7.1  软件架构设计  212

7.1.1  软件架构视图  212

7.1.2  软件架构风格  213

7.1.3  常用的架构模式  214

7.2  系统架构设计  216

7.2.1  BCE模式转换为MVC模式  216

7.2.2  BCE模式转换为分层架构模式  219

7.2.3  案例分析一:BusyBee手游游戏模块  221

7.2.4  案例分析二:“58同城”顾客模块  222

7.3  类设计  224

7.3.1  内聚和耦合  224

7.3.2  设计属性  226

7.3.3  设计方法  228

7.3.4  案例分析一:BusyBee手游游戏模块  228

7.3.5  案例分析二:“58同城”顾客模块  230

7.4  设计模式  236

7.4.1  面向对象设计原则  236

7.4.2  设计模式概述  237

7.4.3  简单工厂模式  238

7.4.4  工厂方法模式  240

7.4.5  中介者模式  241

7.4.6  观察者模式  243

7.5  数据库设计  245

7.5.1  逻辑模型设计  245

7.5.2  物理模型设计  246

7.5.3  SQL脚本生成  247

7.6  界面设计  248

7.7  习题  251

第8章  实现和测试  253

8.1  软件实现  253

8.1.1  编程语言  253

8.1.2  实现类图到代码的转换  254

8.1.3  序列图与代码的对应  258

8.1.4  程序设计风格  259

8.1.5  案例分析一:BusyBee手游游戏模块  265

8.1.6  案例分析二:“58同城”顾客模块  268

8.2  软件测试  270

8.2.1  软件测试的基本概念  270

8.2.2  测试方法概述  274

8.2.3  白盒测试用例设计  274

8.2.4  黑盒测试用例设计  282

8.2.5  程序的静态测试  293

8.2.6  面向对象测试  295

8.3  习题  300

第9章  软件维护  303

9.1  软件维护的概念  303

9.1.1  软件维护的定义  303

9.1.2  影响软件维护工作量的因素  304

9.1.3  软件维护的策略  305

9.2  软件维护活动  305

9.2.1  软件维护申请报告  306

9.2.2  软件维护的过程  306

9.3  程序修改的步骤及副作用  307

9.3.1  分析和理解程序  307

9.3.2  修改程序  308

9.3.3  修改程序的副作用及控制  309

9.3.4  重新验证程序  310

9.4  提高软件的可维护性  311

9.4.1  结构化维护与非结构化维护  311

9.4.2  提高软件可维护性的技术途径  312

9.5  习题  313

参考文献  314