
本书系统地讲述了贯穿整个软件生命周期的高质量软件产品的构建方法与质量保证体系。全书共7章,以软件研发过程中广泛使用的顺序模型为逻辑主线:第1章为概述;第2~第4章讲述软件需求分析、策划及设计;第5~第7章讲述软件实现、测试及持续集成与持续改进。
前言 工业和信息化部印发的《“十四五”软件和信息技术服务业发展规划》,明确了软件作为信息技术关键载体和产业融合关键纽带在数字化发展进程中发挥的重要作用,分析了加速向网络化、平台化、智能化方向发展,驱动云计算、大数据、人工智能、5G、区块链、工业互联网、量子计算等新一代信息技术迭代创新、群体突破,加快数字产业化步伐,不断提升软件产业创新活力,坚持补短板、锻长板等发展形势,同时对结构性改革、应用牵引整机带动和生态培育等三方面提出了五大任务:推动软件产业链升级、提升产业基础保障水平、强化产业创新发展能力、激发数字化发展新需求、完善协同共享产业生态,并在七大方向上支持软件高质量发展,促进软件领域大发展。 软件是新一代信息技术的灵魂,是数字经济发展的基础,是制造强国、质量强国、网络强国、数字中国建设的关键支撑。发展软件和信息技术服务业,对于加快建设现代产业体系具有重要意义。在当今这个“软件定义一切”的时代,本书的出版顺应大势,希望能为我国软件产业的高质量发展贡献绵薄之力。 本书由董昕、梁艳、王杰撰写。其中,梁艳撰写第2章和第4章,并补充第1章和第3章的部分实践内容;王杰撰写第7章,并补充第6章的部分实践内容;其他章节由董昕撰写。 本书得到了国家留学基金管理委员会和四川省教育厅西部项目地方创新子项目(202008510173)的资助,以及四川省高等学校人文社会科学重点研究基地·四川省教育信息化应用与发展研究中心重点项目(JYXX22-001,JYXX22-019)、四川省教育信息技术研究项目(DSJ2022054)、四川省无人机产业发展研究中心科研项目、四川省教育厅人文社科重点研究基地四川网络文化研究中心资助科研项目(WLWH22-35)、四川省大学生创新创业训练计划项目(S202211116001,S202211116004)的支持,在此表示由衷的感谢! 2023年2月,中共中央、国务院印发的《质量强国建设纲要》特别指出:“支持通用基础软件、工业软件、平台软件、应用软件工程化开发,实现工业质量分析与控制软件关键技术突破。”没有质量,如何强国?让我们携手共建高质量软件,为质量强国保驾护航吧! 董 昕 2023年春
第1章 软件生命周期与软件质量保证 1 1.1 软件生命周期概述 1 1.2 开发模型与方法 2 1.2.1 瀑布模型 2 1.2.2 增量模型 3 1.2.3 原型模型 5 1.2.4 迭代模型 5 1.2.5 敏捷方法 8 1.2.6 开发模型与方法的实际应用 10 1.2.7 工程实践:改进型项目的开发模型 12 1.3 软件质量的成本 19 1.4 软件质量保证与测试 21 1.5 测试模型 23 1.5.1 V模型 23 1.5.2 W模型 24 1.5.3 H模型 25 1.5.4 X模型 26 1.5.5 前置测试模型 27 1.6 本章小结 29 第2章 软件需求 30 2.1 软件需求获取和分析 31 2.1.1 需求获取活动 32 2.1.2 需求获取方法之面谈 35 2.1.3 需求获取方法之原型法 38 2.1.4 工程实践:前景和范围 44 2.1.5 需求分析方法和流程 47 2.1.6 工程实践:用例说明文档 49 2.2 软件需求定义和验证 51 2.2.1 软件需求规格说明 51 2.2.2 工程实践:软件需求规格说明 53 2.2.3 需求验证 58 2.3 需求管理 59 2.3.1 需求基线 60 2.3.2 需求跟踪 60 2.3.3 需求变更控制 61 2.4 需求分析实施 64 2.5 本章小结 65 第3章 软件策划 67 3.1 软件计划 67 3.1.1 软件项目管理计划 67 3.1.2 软件质量保证计划 76 3.1.3 软件配置管理计划 78 3.1.4 软件测试计划 81 3.2 内容可以大于形式的评审 90 3.2.1 正式评审过程 91 3.2.2 评审角色和职责 92 3.2.3 评审类型 93 3.2.4 评审技术 95 3.2.5 支持评审的工具 98 3.2.6 评审成功的因素 99 3.3 软件策划实践 100 3.3.1 工作分解和进度安排 100 3.3.2 改进型工作分解和进度安排 102 3.4 经验教训总结 105 3.5 本章小结 107 第4章 软件设计 108 4.1 体系结构设计 108 4.1.1 系统逻辑架构设计 109 4.1.2 系统物理架构设计 110 4.2 用户界面设计 113 4.3 数据库设计 114 4.3.1 数据库结构设计 115 4.3.2 数据库运用设计 117 4.4 模块设计 118 4.5 设计评审 120 4.6 软件设计实践 120 4.6.1 绿灯会议 121 4.6.2 六西格玛设计 123 4.6.3 数据建模和算法设计实践 130 4.7 本章小结 132 第5章 软件实现 134 5.1 编码的底线及规范 134 5.2 看上去很美的组件测试 140 5.2.1 组件测试的范围及流程 140 5.2.2 创建组件测试的入口准则及出口准则 141 5.2.3 执行组件测试的入口准则及出口准则 142 5.2.4 组件测试的角色和职责 143 5.2.5 组件测试的设置和创建 144 5.2.6 组件测试的执行 145 5.3 软件编码实践 146 5.3.1 测试驱动开发 146 5.3.2 代码静态分析 150 5.4 本章小结 152 第6章 软件测试 154 6.1 集成测试 154 6.2 系统测试与验收测试 157 6.2.1 系统测试 157 6.2.2 验收测试 158 6.3 软件测试实践 160 6.3.1 集成测试之自动化执行 160 6.3.2 系统测试之内存测试 162 6.3.3 验收测试之语音传输质量测试 170 6.3.4 基于虚拟化容器技术的自动编译测试 178 6.4 本章小结 182 第7章 持续集成与持续改进 184 7.1 基于DevOps能力模型的持续集成 184 7.1.1 持续集成系统 185 7.1.2 持续集成模型的3个维度 187 7.1.3 持续集成方法的使用 193 7.2 基于精益数据分析的DevOps能力评估 196 7.2.1 DevOps能力评估方法概述 196 7.2.2 评估方法的应用 199 7.2.3 DevOps能力的评估结果 201 7.3 软件缺陷预防 202 7.3.1 缺陷预防的概念及意义 203 7.3.2 现有的缺陷预防方法 203 7.3.3 新的缺陷预防方法 205 7.4 本章小结 214 参考文献 215