[ 第22章 ] 软件工程
软件需求分析与定义
概念
- 《软件需求规划说明书》,SRS
含义:需求开发活动的产物,使项目干系人与开发团队对系统的初始规定有一个共同的理解
内容:①范围②引用文件③需求④合格性规定⑤需求可追踪性⑥尚未解决的问题⑦注解⑧附录
需求特性
可验证性、优先级
需求分析的目的
- 检测和解决寻求之间的冲突
- 发现软件的边界,以及软件与其环境的交互
- 详细描述系统需求,以导出软件需求
需求分析的任务
- 建立分析模型
- 编写需求规格说明书
需求验证
内容
- SRS正确地描述了预期的、满足项目干系人需求的系统行为和特征
- SRS中的软件需求是从系统需求、业务规格和其他来源中正确推导而来的
- 需求是完整的和高质量的
- 需求的表示在所有地方都是一致的
- 需求为继续进行系统设计、实现和测试提供了足够的基础
方法
- 需求评审:技术评审
- 需求测试
软件设计、测试与维护
软件设计
定义一个系统或者组建的构架、组件、接口和其他特征的过程,并得到这个过程的结果
由两个处于软件需求和软件构造之间的活动组成:软件架构设计(概要设计)、软件详细设计
软件测试
- 测试是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动
- 软件测试是针对一个程序的行为,在有限测试用例集合上动态验证是否达到预期的行为。
- 过程:拟定测试计划、编制测试大纲、设计和生成测试用例、实施测试、生成测试报告
- 方法
人工测试:人工复查、抽查、会审
机器测试:黑盒测试(功能测试)和白盒测试(结构测试) - 三个阶段
单元测试:模块测试(编译无误后)
集成测试:组装测试(模块按照系统设计说明书的要求组合后)
系统测试:与系统需求相比较、发现他与用户需求不符的地方
软件维护
- 交付前+交付后
- 交付前完成的活动:交付后的运行计划和维护计划
- 交付后完成的活动:软件修改、培训、帮助资料
- 类型:纠错性维护、适应性维护、完善性维护和预防性维护
软件复用
定义
已用的软件的各种构造新的软件
缩短软件开发和维护的费用
主要思想
组件所组成
复用级别
抽象程度排序高低
- 代码复用
- 设计复用
- 分析复用
- 测试信息复用
软件质量保证及质量评价
软件质量定义
- 软件” 产品质量“ 国际标准ISO 9126定义包括
内部质量、外部质量、使用质量。 - 质量模型中,内部质量和外部质量分为6个质量特性
功能型、可靠性、易用性、效率、可维护性和可移植性 - 将质量分为4个质量属性:
有效性、生产性、安全性、满意度。 - McCall质量模型
产品修正:可维护性、可测试性、灵活性
产品转移:可移植性、可复用性、互联性
产品运行:正确性、可靠性、效率、可使用性、完整性 - 质量管理过程:
质量保证过程、验证过程、确认过程、评审过程、审计过程…
软件质量保证
充分满足用户要求的质量
验证与确认
- 验证:开发过程时,给定阶段的产品是否达到前面阶段确立的需求
- 确认:开发过程结束时,确认和需求是否相一致
软件配置管理
- 目的:实现软件产品的完整性、一致性、可控性
- 内容:对变更加以控制,降低变更对成本、工期、质量的影响
- 包括:
配置管理过程的管理和计划
配置项标识
配置控制:配置项的变更控制
配置状态报告
配置审计
发布管理和交付
软件过程管理
产品质量取决于软件开发过程
CMM和CMMI模型
软件过程能力模型SEI(美国软件工程研究所)发布的CMMI软件能力成熟度集成模型
CMM(已被CMMI取代):软件能力成熟度模型
5个级别:
- 初始级:临时的、混乱的
- 可重复级
- 已定义级:文档化、标准化
- 已管理级:建立量化目标
- 持续优化级
CMMI:软件能力成熟度集成模型
新增了连续式表示方法
覆盖领域更多:软件工程(阶段式的模型SW-CMM)、系统工程(连续式的模型SE-CMM)、集成的产品和过程开发(IPPD-CMM)、集成的产品开发(阶段式+连续式的模型 IPD-CMM)、采购(SS-CMM)
阶段式方法将模型表示为一系列“成熟度等级”阶段:描述过程的能力成熟度模型
每个阶段都有一组KPA
满足其目标的方法
过程改进满足所有KPA 的目标而实现
连续式方法:描述组织的能力成熟度模型
模型中的KPA方法是KPA的外部形式
可应用于所有的KPA
实现公用方法来改进过程
不专门指出目标,强调方法
5个级别:
- 完成级:目标清晰
- 可管理级:遵循计划和流程
- 已定义级:特殊情况时管理体系与流程制度化,科学管理
- 量化管理级:建立量化目标
- 持续优化级 :主动改善流程、运用新技术、实现流程优化。
软件过程评估意义
过程改进的需要
降低风险的需要:软件采购者的需要和软件承制人的需要