出版社:中国宇航出版社
年代:2015
定价:98.0
本书分析了国内外航天软件工程实施情况,介绍了航天型号软件研制过程和管理内容,并深入阐述了软件研制各阶段、软件项目管理与计划、软件配置管理和软件质量保证等涉及的理论、方法和相关技术,详细分析了模型驱动软件开发方法和形式化开发方法在我国航天软件工程中的应用前景,能够系统地指导航天型号软件工程实施。本书可供航天型号软件的设计人员、开发人员、测试人员、管理人员,以及相关专业人员阅读参考
第1章 概 述 1
1.1 软件工程的概念 1
1.1.1 软件工程定义 1
1.1.2 软件工程的基本约束 2
1.1.3 软件工程的研究内容 5
1.2 航天实施软件工程的必要性 9
1.2.1 软件质量问题影响型号任务成败 9
1.2.2 航天型号软件研制面临挑战 14
第2章 航天型号软件工程化的要素和方法 16
2.1 航天型号软件的分类 16
2.2 航天型号软件工程的核心要素 17
2.2.1 软件开发过程 18
2.2.2 软件开发方法 26
2.2.3 软件工程工具 29
2.3 航天型号软件工程的管理内容 33
2.3.1 策划管理 33
2.3.2 需求管理 33
2.3.3 过程追踪与监控 33
2.3.4 配置管理 33
2.3.5 过程与产品质量保证 33
2.3.6 外协管理 34
2.3.7 评审管理 34
2.3.8 文档管理 34
2.3.9 开发工具的使用管理 34
第3章 国外航天型号的软件工程化情况 35
3.1 软件过程改进标准和方法 35
3.1.1 ISO 9000 35
3.1.2 CMM和CMMI 35
3.2 NASA软件工程化实践 39
3.2.1 NASA软件研制的管理体系 40
3.2.2 NASA标准规范与流程 40
3.3 ESA软件工程化实践 48
3.3.1 ESA软件研制的管理体系 49
3.3.2 ESA标准规范与流程 51
第4章 国内航天型号软件工程化情况 57
4.1 航天型号软件工程化概述 57
4.2 载人航天工程软件工程化发展历程 58
4.2.1 启动探索期 58
4.2.2 全面实施期 59
4.2.3 巩固发展期 59
4.2.4 软件工程化成绩 60
4.3 载人航天工程软件工程化标准体系 61
4.3.1 管理规定 62
4.3.2 技术标准 63
第5章 航天型号软件研制过程 66
5.1 技术流程分类 66
5.1.1 新研软件技术流程 67
5.1.2 沿用软件技术流程 67
5.1.3 参数修改软件技术流程 68
5.1.4 适应性修改软件技术流程 69
5.2 系统级分析与设计 70
5.2.1 系统分析与设计 71
5.2.2 分系统分析与设计 74
5.3 软件需求分析 77
5.3.1 输入与输出 77
5.3.2 工作内容 78
5.3.3 出口准则 79
5.4 软件设计 80
5.4.1 概要设计 80
5.4.2 详细设计 82
5.5 软件实现 84
5.5.1 输入与输出 84
5.5.2 工作内容 85
5.5.3 出口准则 86
5.6 软件测试 86
5.6.1 软件集成测试 86
5.6.2 软件配置项测试 88
5.7 系统测试 89
5.7.1 软件系统测试 89
5.7.2 系统试验验证 91
5.8 验收交付 93
5.9 运行维护 93
5.9.1 输入与输出 93
5.9.2 工作内容 93
5.9.3 出口准则 94
第6章 系统级分析与设计 95
6.1 概述 95
6.2 系统分解方法 96
6.2.1 产品分解结构 96
6.2.2 功能流框图 97
6.2.3 软件结构HIPO图 98
6.3 软硬件协同设计 99
6.3.1 软硬件协同设计定义 100
6.3.2 软硬件协同设计与仿真验证 101
6.3.3 软硬件协同设计平台 102
6.4 软件复用与外购 104
6.4.1 已有软件复用过程 104
6.4.2 软件复用技术 105
第7章 软件需求分析 110
7.1 概述 110
7.1.1 需求的定义 110
7.1.2 需求的类型 112
7.1.3 需求分析原则 113
7.2 结构化需求分析方法 114
7.2.1 数据流图 115
7.2.2 数据字典 117
7.2.3 加工规格说明 118
7.2.4 实体-关系图 118
7.2.5 数据对象描述 119
7.2.6 状态迁移图 119
7.3 面向对象的需求分析方法 119
7.3.1 面向对象分析方法概述 120
7.3.2 识别分析类和对象 122
7.3.3 定义类之间的关系 123
7.3.4 标识类的属性和服务 124
7.4 软件需求管理 126
7.4.1 内容与要求 126
7.4.2 需求追踪方法 127
7.4.3 需求管理工具 128
第8章 软件设计 131
8.1 概述 131
8.2 软件设计的原则 132
8.2.1 模块化 132
8.2.2 抽象 135
8.2.3 逐步求精 135
8.2.4 信息隐藏 135
8.3 结构化软件设计方法 135
8.3.1 面向数据流的设计方法 135
8.3.2 面向数据结构的设计方法 140
8.3.3 结构化程序设计图形工具 143
8.4 面向对象软件设计方法 147
8.4.1 系统设计与对象设计 148
8.4.2 面向对象程序设计 148
8.4.3 面向对象设计工具 150
8.5 数据库结构设计 151
第9章 软件实现 153
9.1 概述 153
9.1.1 编程语言分类 153
9.1.2 编程语言的选择 155
9.2 编程风格与编码规范 156
9.2.1 程序设计风格 156
9.2.2 C语言编码规范 161
9.3 高安全可靠的软件编码环境 167
9.3.1 编译器对软件安全可靠性的影响 167
9.3.2 安全可信编译器 167
第10章 软件测试 170
10.1 概述 170
10.1.1 测试策划 170
10.1.2 测试设计与实现 170
10.1.3 测试执行 171
10.1.4 测试总结 171
10.2 测试方法 172
10.2.1 静态测试 172
10.2.2 动态测试 172
10.3 软件单元测试 179
10.3.1 单元测试的内容 180
10.3.2 单元测试的方法 182
10.4 软件集成测试 187
10.4.1 集成测试的内容 188
10.4.2 集成测试的方法 188
10.5 软件配置项测试 190
10.5.1 功能测试 190
10.5.2 性能测试 190
10.5.3 接口测试 191
10.5.4 人机交互界面测试 191
10.5.5 强度测试 191
10.5.6 余量测试 192
10.5.7 恢复性测试 192
10.5.8 安装性测试 193
10.5.9 边界测试 193
10.5.10 安全性测试 193
10.5.11 互操作性测试 194
10.5.12 敏感性测试 194
10.5.13 数据处理测试 194
10.5.14 容量测试 195
10.6 系统测试 195
10.6.1 软件系统测试 195
10.6.2 系统试验验证 195
10.7 回归测试 196
10.8 第三方测评 196
10.9 软件测试工具 197
10.9.1 静态分析工具 197
10.9.2 单元测试工具 199
10.9.3 嵌入式软件白盒测试工具 200
10.9.4 测试管理工具 201
第11章 软件运行维护 202
11.1 概述 202
11.1.1 软件维护的定义 202
11.1.2 影响维护工作量的因素 203
11.1.3 软件可维护性 204
11.2 软件维护的实施 207
11.2.1 维护机构 207
11.2.2 维护的流程 207
11.3 遗留系统的再工程 209
11.3.1 遗留系统的演化 209
11.3.2 软件再工程和逆向工程 210
第12章 软件安全可靠性 214
12.1 概述 214
12.1.1 安全关键软件定义 215
12.1.2 安全关键软件开发难点和挑战 216
12.2 安全关键软件开发过程 217
12.2.1 软件安全计划 219
12.2.2 系统/分系统设计与分析 220
12.2.3 软件安全性需求开发 232
12.2.4 软件安全性设计 246
12.2.5 软件安全性实现 250
12.2.6 软件安全性测试 250
12.2.7 软件运行维护 250
12.2.8 软件安全性追踪分析及软件变更安全性分析 251
12.3 软件可靠性设计和测试验证 252
12.3.1 软件可靠性分配与预计 252
12.3.2 软件可靠性设计 255
12.3.3 软件可靠性分析 256
12.3.4 软件可靠性测试 258
12.3.5 软件可靠性评估 259
第13章 软件项目管理与计划 262
13.1 概述 262
13.2 软件项目管理过程 262
13.2.1 启动软件项目 263
13.2.2 成本估算 263
13.2.3 风险分析 263
13.2.4 进度安排 264
13.2.5 追踪和控制 264
13.3 软件开发计划的实现过程 264
13.3.1 计划初始阶段 264
13.3.2 制订软件开发计划 265
13.3.3 对软件开发计划进行审查和批准 265
13.3.4 实施软件开发计划 265
13.3.5 软件开发过程的度量和评价 265
13.3.6 修改软件开发计划 265
13.4 软件开发成本估算 266
13.4.1 基于参数化模型的软件成本估算 266
13.4.2 非参数化的软件成本估算 271
(13-6) 272
13.5 进度安排 272
13.5.1 制订开发进度计划 273
13.5.2 进度安排的图形方法 273
13.5.3 追踪与控制 274
13.6 风险管理 274
13.6.1 风险识别 274
13.6.2 风险估算 275
13.6.3 风险评价 275
13.6.4 风险监控与应对 275
第14章 配置管理 277
14.1 概述 277
14.1.1 术语和定义 278
14.1.2 配置管理库 280
14.1.3 配置管理的组织和职责 281
14.2 配置管理流程 282
14.2.1 制订配置管理计划 283
14.2.2 建立配置管理系统 286
14.2.3 创建和发布基线 287
14.2.4 跟踪与控制变更 288
14.2.5 配置记录和报告 291
14.2.6 配置审核 292
14.3 技术状态控制 293
14.3.1 系统级分析与设计 293
14.3.2 软件需求分析 293
14.3.3 软件设计 294
14.3.4 软件实现 294
14.3.5 软件测试 294
14.3.6 验收交付 295
14.3.7 运行维护 295
14.4 配置管理工具 296
14.4.1 常用配置管理工具 296
14.4.2 选型与使用注意事项 297
第15章 软件质量保证 299
15.1 概述 299
15.2 质量保障组织机构 299
15.3 质量保证流程 300
15.3.1 制订软件质量保证计划 302
15.3.2 实施软件质量保证活动 303
15.3.3 不符合项处理 306
15.3.4 质量保证维护 307
15.4 软件评审 307
15.4.1 评审的分类 307
15.4.2 评审原则 309
15.4.3 评审计划 309
15.4.4 评审流程 309
第16章 模型驱动软件开发方法 311
16.1 概述 311
16.2 模型驱动架构 315
16.3 体系结构描述语言 318
16.3.1 UML 318
16.3.2 SysML 319
16.3.3 AADL 320
16.3.4 MARTE 323
16.3.5 比较分析 324
16.4 模型驱动开发方法的关键技术 325
16.4.1 需求分析 325
16.4.2 面向领域的建模语言语义扩展 326
16.4.3 模型转换 329
16.4.4 代码生成 329
16.4.5 基于模型的验证技术 330
16.4.6 部署与重构 330
16.5 工具支持 331
16.5.1 商业工具 331
16.5.2 开源工具 332
16.5.3 领域模型驱动开发环境研制 336
16.6 小结 337
第17章 形式化软件开发方法 339
17.1 概述 339
17.2 形式化方法的选用原则 341
17.2.1 形式化程度 341
17.2.2 形式化方法的使用范围 342
17.2.3 合理的预期 343
17.3 形式化软件开发过程 343
17.3.1 软件系统刻画阶段 343
17.3.2 建模阶段 344
17.3.3 规约阶段 344
17.3.4 分析阶段 345
17.3.5 归档阶段 345
17.3.6 维护阶段 345
17.4 需求描述及形式化 346
17.4.1 需求捕捉的层次 346
17.4.2 需求陈述的明确性 346
17.4.3 需求追踪性 347
17.4.4 底层原理和直观描述的可用性 347
17.5 形式化建模 347
17.5.1 数学模型 348
17.5.2 离散和连续域的数学模型 349
17.6 形式化规格说明 353
17.6.1 形式化规范语言 353
17.6.2 形式化规范语言风格 355
17.6.3 形式化规范和生命周期的关系 355
17.6.4 检测形式化规格说明中的错误 356
17.6.5 形式化规格说明的效用 358
17.7 形式化分析 360
17.7.1 自动演绎 360
17.7.2 有限状态方法 363
17.8 工具支持 364
17.8.1 模型验证工具 364
17.8.2 定理证明工具 365
17.9 小结 365
17.9.1 应用类型 366
17.9.2 规模和结构 366
17.9.3 类型选择 366
17.9.4 形式化级别 366
17.9.5 使用范围 366
17.9.6 工具支持 366
参考文献
《航天型号软件工程方法与技术》在分析国内外航天软件工程实施情况的基础上,全面介绍了航天型号软件研制过程和管理内容,并深入阐述了软件研制各阶段、软件项目管理与计划、软件配置管理和软件质量保证等涉及的理论、方法和相关技术,详细分析了模型驱动软件开发方法和形式化开发方法在我国航天软件工程中的应用前景,不仅能够系统、全面地指导航天型号软件工程的实施,还对航天型号软件工程的发展进行了探讨。
航天型号软件研制引入软件工程思想是任务顺利实施的重要保障。航天软件工程标准体系建设、技术和方法研究、软件研制和管理队伍培养等方面取得了显著成果。但是,软件工程化标准实施过程缺乏系统化的指南。本书结合作者多年从事载人航天工程软件工程工作的实践,在分析国内外航天软件工程实施情况的基础上,系统地总结和介绍了航天型号软件工程研制的过程、技术与管理方法;具有较高的学术水平与实践指导意义。
《航天型号软件工程方法与技术》主要面向的读者是航天型号软件的设计人员、开发人员、测试人员以及管理人员,也可以作为相关专业人员了解和掌握航天型号软件工程的参考书。