《软件工程化》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:王安生编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302351115
  • 页数:610 页
图书介绍:本书的目的是突出软件工程化,针对我国的软件学院本科和研究生教学,以及在职工程技术人员学习和理解软件工程化的技术、方法、和过程,并融合讨论了国防、航空、航天、铁路与机动车、信息与网络等领域的软件工程问题,从而引发了未来软件巨复杂系统的工程问题。这样对于不仅可以用于学生教学,也可以给软件生产和使用一线的技术人员作为参考。

第一部分 软件工程化基础 3

第1章 绪论 3

1.1软件无处不在 3

1.2计算机器的发展 3

1.2.1手动计算装置 3

1.2.2自动计算装置 4

1.2.3图灵理论计算机 5

1.2.4 电子计算机的大规模生产和应用 5

1.3软件艺术、工程与产业 6

1.3.1从程序到软件 6

1.3.2程序设计艺术 7

1.3.3软件工程侧面 7

1.3.4软件产业化 9

1.4软件工程历程 10

1.5本书的组织 11

参考文献 12

第2章 基于计算机的系统 13

2.1基于计算机的系统组成和特征 13

2.1.1系统的组成 13

2.1.2系统故障 14

2.1.3硬件的连续性 15

2.1.4软件的离散性 16

2.1.5人的特征与管理 16

2.1.6固件与嵌入式系统 17

2.2硬件特征和系统建造理念 18

2.2.1硬件的故障特征 18

2.2.2硬件系统的全生命周期设计 18

2.2.3硬件生产质量的统计学控制 19

2.3软件故障和建造理念 20

2.3.1软件故障表现和分类 20

2.3.2程序正确性证明 21

2.3.3测试的充分性问题 21

2.3.4代码复用 22

2.3.5部件组装 22

2.4使用者的错误与避免 24

2.4.1操作员的错误 24

2.4.2入的信息处理模型 24

2.4.3操作错误的避免 25

2.5本章小结 26

参考文献 26

第3章 软件开发过程 28

3.1程序开发基本过程 28

3.1.1一个简单的程序开发例子 28

3.1.2程序开发库和复用 29

3.2从程序开发到软件工程化过程 30

3.2.1软件开发的活动 30

3.2.2大型软件开发的管理 31

3.3中间产品驱动的过程 34

3.3.1中间产品驱动的过程 34

3.3.2中间产品的意义 35

3.4瀑布式还是迭代式 35

3.4.1增量式模型 36

3.4.2渐进式模型 37

3.4.3螺旋式模型 38

3.5软件产品的开发过程 41

3.5.1策略和原则的建立 41

3.5.2定义产品和开发过程 42

3.5.3开发产品与装箱 43

3.5.4与黑客方法的差别 44

3.5.5方法的优点 44

3.6计算机辅助与模型驱动的软件工程 45

3.6.1计算机辅助软件工程与工具 45

3.6.2模型驱动的软件工程 46

3.7本章小结 47

参考文献 48

第4章 软件质量 49

4.1软件质量定义 49

4.1.1程序的类型划分 49

4.1.2质量定义 51

4.2质量观点 51

4.2.1 Garvin的质量分类 51

4.2.2 Braa的质量侧面观点 53

4.2.3项目经理们的质量看法 55

4.3软件质量模型的归纳 55

4.4 ISO) 9126的质量定义 56

4.4.1软件产品质量模型 56

4.4.2产品质量属性分解 57

4.4.3部件和服务项的质量评价 61

4.5软件过程质量 61

4.6本章小结 61

参考文献 62

第5章 系统可信赖性 63

5.1可信赖性概念 63

5.1.1可信赖性的起因 63

5.1.2可信赖性的定义 64

5.1.3可信赖性的属性 64

5.2可信赖性方法和技术 65

5.2.1开发可信赖系统的基本方法 65

5.2.2可信赖性的属性讨论 66

5.3可靠性和可用性 67

5.4安全性原则 68

5.4.1 ALARP安全原则 68

5.4.2软件安全证据考虑 70

5.4.3基于开发过程的证据 70

5.5密安性原则 70

5.5.1软件密安性的威胁 70

5.5.2密安性的误区 71

5.5.3密安性的公开原则 72

5.5.4系统密安性的模型 72

5.5.5产品的密安性需求与认证 75

5.6生存性 76

5.7本章小结 77

参考文献 77

第6章 软件销售与采购 79

6.1软件类型 79

6.1.1现货软件 79

6.1.2可复用软件 80

6.1.3按合同开发的软件 80

6.1.4开源软件 80

6.1.5软件类型与质量 80

6.2软件产品销售模式 81

6.2.1软件产品销售行为 81

6.2.2最终用户协议 82

6.2.3点击同意协议 82

6.2.4二次开发的皇税协议 83

6.2.5开源协议 84

6.2.6 GNU、BSD、MIT协议 84

6.2.7免许可证软件 85

6.2.8国际间的软件版权 85

6.3软件项目采购模式 86

6.3.1软件采购和外包形式 86

6.3.2软件采购过程 87

6.3.3软件采购的主要问题 90

6.4 OTS的采购和使用 91

6.4.1一般问题 91

6.4.2安全性考虑 92

6.4.3密安性考虑 93

6.5本章小结 94

参考文献 94

第7章 软件运维与服务过程 96

7.1引言 96

7.2软件移交与验收过程 97

7.3软件支持过程 98

7.3.1软件维护与传统产品维护 98

7.3.2 Lehman定律 99

7.3.3维护成本 100

7.4软件支持过程与活动 100

7.4.1软件修改过程 100

7.4.2软件支持活动 102

7.5软件支持方式与能力 103

7.5.1软件支持方式与基本要求 103

7.5.2针对软件可使用性的支持 104

7.5.3针对运行能力的支持 105

7.6独立的软件支持 105

7.6.1软件支持的原则 106

7.6.2系统部署前后的支持工作 106

7.6.3采购对支持工作的要求 106

7.7本章小结 108

参考文献 108

第二部分 各阶段的工程化 113

第8章 需求工程 113

8.1引言 113

8.2需求类型 114

8.2.1需求分类 114

8.2.2需求分析目标和维度 115

8.2.3需求内涵 117

8.3需求分析过程 117

8.4需求文档的编写 119

8.4.1需求文档的结构化 119

8.4.2需求描述的语言 123

8.4.3需求进一步量化 124

8.5需求文档的质量度量 125

8.6需求管理 131

8.6.1需求管理的起因 131

8.6.2需求的跟踪 132

8.6.3需求变更管理 133

8.7本章小结 134

参考文献 135

第9章 建模与图示化表达 136

9.1图示化与自然语言 136

9.1.1图的作用 136

9.1.2自然语言和文字的构造原则 136

9.2传统的图示化建模 137

9.2.1系统周境图示化表达 137

9.2.2数据流图表达 138

9.2.3功能结构图表达 139

9.2.4实体-关系图表达 139

9.2.5事务定义与性能分析 142

9.3用户角色表达 144

9.3.1用例图 144

9.3.2泳道图 145

9.4静态图模型 145

9.4.1部署图 145

9.4.2对象和类图 146

9.4.3类之间的关联 147

9.5活动的建模 149

9.5.1活动的表达 149

9.5.2泳道与活动的结合 150

9.6交互的图示化模型 151

9.6.1消息序列图 151

9.6.2通信图 153

9.6.3交互概要图 153

9.6.4时序图 153

9.7状态机模型 155

9.7.1 Mealy机 155

9.7.2 Moore机 155

9.7.3 UML中的状态机图示化表达 156

9.8可信赖性分析与建模 157

9.8.1可信赖性分析框架和过程 157

9.8.2可信赖性需求分析的例子 159

9.9本章小结 162

参考文献 162

第10章 体系结构设计 164

10.1从系统分解到体系结构设计 164

10.2体系结构的必要性和定义 165

10.2.1为何要讨论体系结构 165

10.2.2体系结构定义 166

10.2.3体系结构的重要性 166

10.3体系结构设计过程 167

10.3.1体系结构视角 167

10.3.2设计过程 167

10.4分析体系结构需求 169

10.4.1识别体系结构需求 169

10.4.2体系结构需求的例子 170

10.4.3体系结构需求的排序 171

10.5体系结构设计方法 171

10.5.1分割法 171

10.5.2抽象法 172

10.5.3压缩法 172

10.5.4规范组合法 173

10.5.5复制法 173

10.5.6资源共享法 173

10.5.7设计方法对质量的影响 174

10.6体系结构设计文档 174

10.7体系结构的评价 175

10.7.1场景描述方法 175

10.7.2原型评价法 177

10.7.3效用树法 178

10.7.4评价过程 179

10.8本章小结 182

参考文献 182

第11章 体系结构模式与应用 184

11.1体系结构的分级 184

11.1.1概念级体系结构 184

11.1.2模块级体系结构 185

11.1.3运行级体系结构 186

11.1.4代码级体系结构 187

11.1.5体系结构之间的关系 188

11.2体系结构描述语言 189

11.2.1 ADL的基本要求 189

11.2.2 AADL 190

11.2.3用UML描述各级体系结构 190

11.3常见的体系结构模式 193

11.3.1分层视角 193

11.3.2数据流动视角 194

11.3.3数据集中视角 196

11.3.4调用视角 197

11.3.5消息传递视角 199

11.3.6分布式与交互视角 201

11.4应用软件框架及使用 206

11.4.1软件框架的类型 207

11.4.2 Web应用框架——一个广泛应用的例子 207

11.4.3采用框架的应用系统开发过程 208

11.5生产线的软件体系结构 208

11.5.1软件生产线的概念 208

11.5.2软件生产线如何工作 209

11.5.3为软件生产线建立体系结构 210

11.6本章小结 210

参考文献 211

第12章 代码工程 212

12.1代码的运行错误 212

12.1.1运行错误分类 212

12.1.2高级语言的错误与运行错误 212

12.2可执行代码的质量分析 213

12.2.1可执行代码的产生过程 213

12.2.2代码编辑器与质量 214

12.2.3代码版本控制 215

12.2.4 Build工具的使用 215

12.3代码工程质量 216

12.3.1代码质量模型 216

12.3.2结构化编程 217

12.3.3代码的复杂度度量 217

12.3.4面向对象语言的度量 221

12.3.5度量元的使用 222

12.4可靠安全编程 222

12.4.1可靠安全的编程原则 222

12.4.2安全编程语言 225

12.5密安性编程 226

12.5.1密安软件开发规则 226

12.5.2 25个顶级危险 227

12.6代码移植与复用 228

12.6.1系统软件的移植 229

12.6.2应用软件的移植 229

12.6.3数据的移植 229

12.6.4代码的复用 230

12.7代码审查 231

12.7.1代码审查方式 231

12.7.2代码质量检查单 231

12.7.3面向对象代码检查单 233

12.8本章小结 234

参考文献 234

第13章 软件测试理论与技术 236

13.1测试目的 236

13.1.1测试的任务与目标 236

13.1.2软件错误类型 237

13.2基于控制流的测试 237

13.2.1完全路径测试的现实性 237

13.2.2语句覆盖准则 238

13.2.3分支覆盖准则 239

13.2.4简化的路径覆盖准则 239

13.2.5圈复杂数覆盖准则 240

13.2.6多条件覆盖准则 240

13.2.7修改后的条件判断覆盖 241

13.2.8 LC SAJ覆盖准则 243

13.3基于数据流的测试 244

13.4变异测试技术 246

13.5测试准则的强弱比较 247

13.6基于需求规范的测试 248

13.6.1黑箱测试模型 248

13.6.2黑箱测试的优缺点 250

13.6.3对需求条款的测试覆盖准则 250

13.7测试充分性的评判 251

13.7.1基于代码的测试评判 251

13.7.2非基于代码的测试评判 252

13.8本章小结 253

参考文献 253

第14章 软件测试工程 255

14.1测试工程化 255

14.1.1测试的生命周期 255

14.1.2测试方式与方法 256

14.1.3测试工程的原则 257

14.1.4测试过程 258

14.2各测试阶段的工作 259

14.2.1单元测试 259

14.2.2集成测试 259

14.2.3系统测试 261

14.2.4验收测试 261

14.2.5试运行 262

14.2.6产品发布前的测试 262

14.3测试用例设计方法 262

14.3.1随机方法 263

14.3.2判定表方法 263

14.3.3等价类划分 264

14.3.4边界值方法 265

14.3.5因果图方法 266

14.4面向对象程序的测试 268

14.4.1面向对象程序测试面临的问题 268

14.4.2传统测试方法对面向对象测试的适用性 269

14.4.3面向对象程序测试方法 269

14.4.4类内的MtSS的方法 270

14.4.5对象类之间的MtSS的方法 271

14.4.6对象之间的MgSS方法 271

14.4.7从交互图获得MtSS和MgSS 272

14.4.8面向对象测试的充分性 273

14.5不可测试软件的测试 274

14.5.1数值求解问题 275

14.5.2“四舍五入”问题 275

14.5.3规划类问题 277

14.6何时停止测试 277

14.6.1错误种子法 277

14.6.2错误种子测试的信任度 278

14.6.3覆盖率与测试信任度 279

14.6.4能力基线与测试信任度 279

14.7可信赖性测试和评价 280

14.7.1可恢复性测试 280

14.7.2密安性测试 280

14.7.3压力测试 281

14.7.4性能测试 281

14.7.5可信赖性评价 281

14.8本章小结 282

参考文献 282

第三部分 过程管理与改进 287

第15章 软件缺陷预测与预防 287

15.1基于代码的缺陷预测 287

15.1.1基于代码行和复杂性的预测 287

15.1.2模块规模对缺陷的影响 288

15.1.3基于复杂度和修改情况的预测 288

15.1.4基于功能点的缺陷预测 288

15.1.5多变量的预测 290

15.2 BBN预测方法 290

15.2.1无回路有向图的条件概率计算 290

15.2.2建立软件开发活动的有向图 291

15.2.3细化子网图 292

15.2.4建立各结点的概率表 293

15.2.5实际效果 294

15.3基于过程能力的缺陷预测 294

15.3.1缺陷的产生与消除过程预测 294

15.3.2基于CMMI等级的能力的预测 296

15.4代码修改历史与缺陷 297

15.4.1代码搅动与缺陷预测 297

15.4.2突发修改的缺陷预测 298

15.5缺陷预防 299

15.6本章小结 301

参考文献 301

第16章质量管理与控制 303

16.1软件质量的来源 303

16.2软件质量的过程分解 304

16.2.1过程质量分解 304

16.2.2基于V模型的过程质量分解 307

16.2.3过程的标准化 308

16.3质量保证体系 309

16.3.1质量审查的计划性 309

16.3.2建立和运用SQA制度 310

16.3.3软件工厂中的SQA 311

16.4独立的质量管理 312

16.4.1 IV&V机制 312

16.4.2再问软件质量和可信法律证据 314

16.5质量统计技术 314

16.5.1质量成本 314

16.5.2缺陷来源和传播 316

16.5.3质量统计方法 317

16.6质量控制 318

16.6.1质量漂移与宽泛现象 318

16.6.2质量漂移的控制 319

16.6.3质量宽泛的控制 320

16.6.4质量控制能力基线及其应用 321

16.7本章小结 321

参考文献 321

第17章 项目组织与管理 323

17.1软件生产力 323

17.2软件生产率 324

17.2.1基本生产率定义 324

17.2.2生产率能力基线 325

17.2.3软件工程环境与生产率 325

17.2.4软件产品特征与生产率 326

17.3项目组织方式 327

17.3.1程序员与生产率 328

17.3.2首席程序员的组织方式 329

17.3.3矩阵式的组织方式 330

17.3.4基于开源软件的生产 330

17.4项目计划的制定 331

17.4.1项目策划过程 331

17.4.2 WBS分解 332

17.5产品规模估算 332

17.5.1基于LOC的估算 332

17.5.2基于FP的估算 332

17.5.3基于用例的估算 333

17.5.4经验估计模型 336

17.5.5 COCOMO估算方法 336

17.5.6简单的进度估算 338

17.5.7 Putnam方程 338

17.6进度和资源规划 339

17.6.1规模、工期、工作量与生产率的关系 339

17.6.2资源考虑 340

17.6.3任务和资源规划 340

17.6.4建立开发计划 341

17.7项目执行与跟踪 343

17.7.1进度跟踪 343

17.7.2进度跟踪的准确性 343

17.7.3挣值分析计算 344

17.8本章小结 345

参考文献 345

第18章 敏捷开发方法 347

18.1敏捷方法起因 347

18.2敏捷方法 348

18.2.1 XP方法 348

18.2.2 Scrum方法 349

18.2.3特征驱动的开发 351

18.2.4动力系统开发方法 352

18.2.5自适应软件开发 353

18.3开发过程的选取——水晶格家族 354

18.4 RUP过程 356

18.4.1 RUP过程的交替与迭代 356

18.4.2 RUP的项目生命周期 356

18.4.3 RUP的项目开发过程 357

18.4.4 RUP的支持过程 358

18.5开发方法的比较 358

18.5.1敏捷方法与传统方法对比 358

18.5.2对软件生命周期的支持 359

18.5.3敏捷方法的过程改进 360

18.5.4让敏捷方法融入CMMI 361

18.6本章小结 363

参考文献 363

第19章 软件配置管理 365

19.1软件配置管理的目的 365

19.2配置管理的内容 366

19.2.1项目开发过程中的配置项 366

19.2.2配置管理的基本内容 367

19.2.3 SCM的流程 368

19.2.4配置管理中的角色 369

19.3配置管理系统 370

19.3.1配置管理系统功能 370

19.3.2配置管理工具的发展 371

19.4对修改的管理 372

19.4.1版本修改的状态 372

19.4.2修改请求单 372

19.4.3修改的类型 373

19.4.4修改的跟踪 373

19.5版本管理 374

19.5.1版本的概念 374

19.5.2版本编号 375

19.5.3产品的建造过程 375

19.5.4具有外购部件的建造 376

19.6配置管理工作的度量 377

19.7本章小结 378

参考文献 378

第20章 过程改进与能力成熟度 380

20.1过程及其特征 380

20.1.1自然过程与社会过程 380

20.1.2过程的特征 380

20.2过程控制与改进简史 382

20.2.1统计质量控制的起源 382

20.2.2 Deming、Juran与日本工业的质量革命 383

20.2.3 Juran质量改进三步曲 384

20.2.4 Crosby的质量成熟度网格 385

20.3软件成熟度模型 386

20.3.1软件能力的分级模型 386

20.3.2 SW-CMM各等级的关键域 388

20.3.3 SW-CMM对过程特征的解释 389

20.3.4关键过程域的目标与模型应用 390

20.4集成的能力成熟度模型 391

20.4.1集成的成熟度模型原因 391

20.4.2 CMMI模型的发展历程 391

20.4.3 CMMI for Development的关键过程域 392

20.4.4过程改进的效果 393

20.5采购能力成熟度 394

20.5.1采购能力要求 394

20.5.2 采购能力成熟度模型 395

20.6服务能力成熟度 396

20.6.1服务质量 396

20.6.2 IT服务质量差距模型 397

20.6.3 CMMI-SVC模型 398

20.7 成熟度模型的对比 400

20.8本章小结 402

参考文献 402

第四部分 任务与安全关键行业软件工程化 407

第21章 国防系统软件开发过程 407

21.1总体与质量要求 407

21.1.1“爱国者”导弹拦截失败 407

21.1.2国防(装备)系统的特征 408

21.2 生命周期 408

21.3软件开发过程 410

21.3.1文档驱动的软件开发 410

21.3.2 过程各阶段的要求 412

21.4软件缺陷分类与处理 413

21.4.1缺陷的严重程度分类 413

21.4.2错误类型 414

21.5中间产品的质量评价 415

21.5.1文档模板及其作用 415

21.5.2中间产品质量评价的一般准则 415

21.5.3质量评价的附加准则 416

21.5.4系统分析和设计阶段的产品质量评价 417

21.5.5软件需求分析阶段的产品质量评价 418

21.5.6概要设计阶段的质量评价 418

21.5.7详细设计阶段的质量评价 419

21.5.8编码和单元测试阶段的质量评价 420

21.5.9 CSC集成和测试阶段的质量评价 420

21.5.10 CSCI集成和测试阶段的质量评价 421

21.6独立的工程质量活动 421

21.6.1 SQA的一般要求 422

21.6.2验收审查、安装和检验 422

21.6.3对子承包商的评价和管理 422

21.6.4对已有软件项的评价 423

21.6.5纠错体系 423

21.6.6开发过程的质量证据 423

21.6.7缺陷预防体系 424

21.7向支持阶段的转移 425

21.7.1转移过程 426

21.7.2部署使用和维护 426

21.8国防软件开发标准的演变 427

21.8.1美国国防工业界的标准演变 427

21.8.2中国国防工业界的标准情况 429

21.8.3德国的V模型及其演变 430

21.9本章小结 433

参考文献 433

第22章 航天空间领域软件过程 434

22.1阿丽安娜的教训 434

22.1.1阿丽安娜501的软件故障 434

22.1.2故障原因 435

22.1.3软件过程增强 436

22.2航天任务软件质量特征 437

22.2.1航天任务的要求 437

22.2.2软件质量和可信赖性 438

22.3软件与系统安全性 439

22.3.1安全关键软件定义 439

22.3.2软件用于控制灾难 439

22.3.3灾害的风险等级与控制方法 439

22.3.4将系统风险转换为软件风险 441

22.3.5安全活动的工作量 442

22.4欧洲空间局的软件开发过程 443

22.4.1软件开发文件族谱 443

22.4.2基本阶段、活动和里程碑 444

22.4.3软件生命周期 445

22.4.4原型的使用和抛弃 446

22.4.5需求变更处理 447

22.5中国载人航天的软件工程化 447

22.5.1载人航天软件特点与工程化要求 447

22.5.2软件工程化运动及思想转变 448

22.5.3软件开发过程模型 449

22.5.4文档编制要求与剪裁 450

22.5.5配置管理与质量保证体系建立 451

22.5.6独立验证与确认 452

22.5.7整体工程能力的提高 453

22.6本章小结 453

参考文献 453

第23章 民用航空领域软件过程 455

23.1引言 455

23.2总体要求 455

23.2.1民用航空的“故障-安全”设计理念 455

23.2.2航空系统灾难等级 456

23.2.3民用航空中的安全关键软件 457

23.2.4认证机制 458

23.3机载系统与设备软件的开发 459

23.3.1从系统到软件安全评估要求 459

23.3.2软件生命周期 460

23.3.3软件开发过程 461

23.3.4其他过程及各过程的关系 464

23.3.5认证的联络过程 466

23.3.6商业软件的认证 467

23.3.7基于RTOS的应用软件开发 468

23.4地面支持系统软件的开发 471

23.4.1地面支持系统的风险分析 471

23.4.2地面支持系统的安全等级 472

23.4.3 DO-278的基本要求 472

23.4.4 COTS的使用 473

23.5韩航801航班灾难 474

23.5.1 MSAW问题分析 474

23.5.2应吸取的教训——软件配置管理 475

23.5.3事后预防措施 476

23.6民航软件的新挑战 476

23.7本章小结 477

参考文献 477

第24章 铁路与机动车软件 480

24.1铁路系统的安全要求 480

24.1.1总体要求 480

24.1.2系统安全完整性等级 480

24.2铁路领域软件开发 481

24.2.1铁路安全软件原则与措施 481

24.2.2高安全应对措施——开发过程的标准化 481

24.2.3安全完整性等级划分 482

24.2.4软件生命周期与开发过程 483

24.2.5人员的职责和要求 484

24.3软件开发过程要求 485

24.3.1安全等级对文档的要求 485

24.3.2开发过程中的技术方法要求 486

24.3.3全面评估要求 487

24.4对应用数据配置的系统的增强 488

24.4.1工作过程与生命周期 488

24.4.2工作要求 489

24.4.3数据准备的增强 489

24.4.4软件开发过程的增强 489

24.5 “7.23”铁路重大事故 490

24.5.1事故调查 490

24.5.2事故性质与原因 490

24.5.3软件和硬件设计问题 490

24.5.4工程过程管理问题 491

24.5.5事故防范和整改措施建议 492

24.6机动车领域的软件安全 492

24.6.1总体要求 492

24.6.2汽车软件的特定需求 493

24.6.3软件给研发生产模式带来的改变 493

24.7机动车领域的软件开发 494

24.7.1软件生命周期与开发过程 494

24.7.2驾驶员行为因素分析 496

24.7.3安全完整性等级的分析 497

24.7.4各安全完整性等级对开发方法的要求 498

24.7.5软件质量策划 500

24.8机动车对软件工程的挑战 500

24.8.1能力与过程改进挑战 500

24.8.2软件体系结构创新 501

24.8.3开发和维护过程挑战 501

24.8.4成本控制挑战 502

24.9本章小结 502

参考文献 503

第五部分 网络、信息、开放、开源与复杂巨系统工程化 507

第25章 网络工程与软件工程 507

25.1电信网络的软件工程化 507

25.1.1电信网络的软件工程特征 507

25.1.2软件工程环境 508

25.1.3 SDL工程应用 509

25.1.4 CHILL语言 510

25.2包交换的网络工程 511

25.2.1电路交换、消息交换和包交换技术对比 511

25.2.2包交换通信的基本方法 513

25.2.3包交换网的要素和工程问题 514

25.3包结构设计例子——IPv4 515

25.3.1包结构的设计 515

25.3.2包的“存储-转发”过程 517

25.4互联网的工程化 518

25.4.1网络互联的需求 519

25.4.2网络互联的设计模型 519

25.4.3 DoD网络互联协议族设计 520

25.4.4工程验证与推广过程 521

25.4.5互联网工程中的软件工程 522

25.5互联网体系结构及其进化 523

25.5.1互联网的问题 523

25.5.2体系结构进化 525

25.5.3覆盖层模式的定义 525

25.5.4覆盖层模式应用 526

25.6网络进化等对软件工作者的挑战 528

25.6.1网络融合的挑战 528

25.6.2互联网的发展与管理权 529

25.7本章小结 530

参考文献 530

第26章 信息系统软件工程化 532

26.1信息系统危机 532

26.2信息系统质量 533

26.2.1信息系统质量分解 533

26.2.2信息系统质量模型 534

26.3信息系统生命周期与建设过程 535

26.3.1信息系统生命周期 535

26.3.2信息系统的建设过程 536

26.3.3过程中的角色和任务 537

26.4信息系统性能模型的建立 539

26.4.1影响信息系统性能的因素 539

26.4.2测试环境与真实环境差异分析 539

26.4.3真实使用场景分析 540

26.4.4性能模型的建立 542

26.4.5性能模型确认过程 542

26.5性能评估的例子 543

26.5.1基本功能和性能模型 543

26.5.2单个业务追踪——T1 544

26.5.3单个业务追踪压力测试——T2 545

26.5.4多用户压力测试——T3 546

26.5.5确认和问题分析 546

26.6性能能力库的建立和使用 548

26.6.1性能分析报告 549

26.6.2建立和使用性能库 551

26.7信息系统失败案例——伦敦救护车服务系统 553

26.7.1系统简述 553

26.7.2系统失败原因分析 553

26.8信息系统安全 555

26.8.1不安全的来源 555

26.8.2“瑞士奶酪”原理用于信息安全 556

26.9本章小结 559

参考文献 559

第27章 开放与开源工程 561

27.1软件价值链 561

27.1.1软件产品与服务 561

27.1.2价值链条 561

27.1.3竞争与合作 562

27.2产业联盟 563

27.2.1软件联盟的优势 563

27.2.2联盟的组织形式 563

27.2.3产业联盟的例子 564

27.3虚拟组织 565

27.4开源工程 566

27.4.1闭源、自由与开源 566

27.4.2 F/OSS项目组织 568

27.4.3 F/OSS过程 569

27.4.4 F/OSS的文化 570

27.4.5 F/OSS的进化 571

27.5 F/OSS的质量保证 572

27.5.1与闭源项目的质量管理对比 572

27.5.2质量管理 573

27.5.3可信性观点 574

27.5.4质量控制 575

27.6政府与开源 576

27.6.1开源与开放的优势 576

27.6.2开源与开放的维护策略 576

27.6.3政府和产业联盟的作用 577

27.7全球化软件工程 578

27.7.1 GSE的基本形式——离岸与外包 578

27.7.2全球化软件开发过程 579

27.7.3 CMMI与全球软件化开发 581

27.8本章小结 581

参考文献 581

第28章 软件复杂巨系统的工程化 584

28.1复杂巨系统 584

28.1.1系统分类 584

28.1.2复杂巨系统定义 585

28.1.3简单集成与创新集成 585

28.2多系统的系统(SoS) 586

28.2.1 SoS定义 586

28.2.2 SoS的例子:电信运营系统 586

28.2.3 SoS的特征 587

28.2.4 SoS的工程模型 587

28.2.5增量承诺模型(ICM) 590

28.3 SIS与超大规模SIS 592

28.3.1 SIS的定义 592

28.3.2 SIS的应用场景 593

28.3.3 SIS的工程化挑战 593

28.3.4超大规模SIS 594

28.4软件复杂巨系统的工程化 595

28.4.1软件复杂巨系统 595

28.4.2一些国家的工程化举措 596

28.4.3工程方法的不足 597

28.5重新定义软件工程 598

28.5.1 IT生态系统 598

28.5.2软件工程的内涵随时间而变 599

参考文献 600

附录A缩略语表 603