第二章 软件过程
文章目录
1.软件工程的金三角
人:完成软件开发的主体
技术:提供了建造软件在技术上需要“如何做”的方法
管理:提供了质量管理、时间管理、成本管理和范围管理等知识和技能
过程(三者之间的关系):将人、技术和管理结合在一起的凝聚力
2.软件过程
软件过程,也称为软件生存周期过程,定义了软件组织和人员在软件产品的定义、开发和维护等阶段所实施的一系列活动。它定义了什么时候做什么、如何做、由谁来做、产生什么制品。
包括:需求、设计、编码、测试、运营和维护

- 需求(Request)重点在What
- 任务:调研和定义软件的需求
- 成果:《需求规约》(经用户和软件人员双方共同认可) FURPS+
- 设计(Design)重点在How
- 任务:软件人员依据软件需求,建立软件的设计蓝图, 是需求到代码的桥梁。
- 成果:《软件架构》文档,设计模型
- 编程(Coding):依据设计文档为每个模块编写程序
- 测试(Testing):发现并排除软件中的缺陷
- 部署(Deployment):交付、支持和反馈
- 软件运营(Operation):在目标环境中部署和配置软件,以及在软件运行时(直到停用)对其进行监控和管理的过程
- 软件维护(Maintenance):软件系统交付运营后,为了改正错误或满足新的需要而修改软件的过程。
- 举例:一个中等规模的软件,如果开发过程要一年时间,它投入使用后,其运行时间可能持续五年,这段时间是维护阶段。
- 与开发相比,维护阶段的工作量和成本要大得多。
- 人们对软件维护的认识远不如软件开发,因为开发具有主动性和创造性,易被人们所重视。
3.软件过程模型(软件生存周期模型)
软件生存周期模型,是对开发人员所采用的软件开发过程组织整体结构的抽象描述,表达了软件过程的结构框架。
软件生存周期模型的分类:
- 线性顺序模型(瀑布模型)
- 增量模型
- 演化模型:又称迭代模型,是目前的主流模型;敏捷过程是演化模型中的主流。
3.1线性顺序模型(瀑布模型)

阶段:需求(得到需求规约)、设计(得到设计文档)、编码实现(得到系统)、测试、交付、运行和维护(得到被确认的系统)。
优点:重视需求和设计;每个阶段评审,强调质量;简单

缺点:无法应对需求变更:测试太迟,无法及时获得用户反馈和质量反馈;串行,进度慢

3.2增量模型(大部分需求在项目早期就被定义)
需求和架构确定后,增量式进行开发,构造一系列可执行的版本。(逐步开发所需功能)

优点:多版本并行,加快了进度:每个版本都可运行;需求在开发早期是明确的
缺点:未能缓解需求变更和质量风险;需求变更和架构重构时的返工成本大大增加:需要大量的开发人员
3.3演化模型(需求在开发早期不能被完全了解和确定,只有一部分被定义就开始开发)
只要核心需求能够被很好地理解,就可以进行渐进式开发,其余需求可以在后续的迭代中进一步定义和实现。这种过程模型称为演化模型,它能很好地适应随时间演化的产品的开发。

优点:有效缓解了进度、变更、技术、质量等风险。
缺点:复杂,迭代的规划和控制
特征:
- 渐进式地开发各个可执行版本,逐步完善软件产品每个版本在开发时,开发过程中的活动和任务顺序地或部分重叠平行地被采用。
- 与增量模型的区别是:需求在开发早期不能被完全了解和确定,在一部分被定义后开发就开始了,然后在每个相继的版本中逐步完善。

现代软件过程中,统一软件过程(UP)和许多敏捷过程(Scrum、XP)都采用演化模型。
演化模型的子类:原型模型是迭代次数为2的演化模型;螺旋模型是基于风险的演化。
4.迭代化开发的原则
每个迭代都应该产生一个可执行的软件版本
基于风险,规划迭代–有计划的迭代
5.敏捷过程(应对变化和以人为本)
- 敏捷过程强调以人为本,快速响应需求和变化,把注意力集中到项目的主要目标——可用软件上。
- 敏捷过程基于适应而非预测,强调灵活性、协作和客户反馈。
四条敏捷价值观:
- 较之于过程和工具,更注重人及其相互作用的价值
- 较之于各类文档,更注重可运行的软件的价值
- 较之于合同谈判,更注重与客户合作的价值
- 较之于按计划行事,更注重响应需求变化的价值
6.Scrum
Scrum核心准则是自我管理和迭代开发
通过短周期冲刺(Sprint)、角色分工和固定会议
7.开发运维一体化DevOps
DevOps将敏捷的精神延伸到运维阶段,提出软件开发和运维之间的沟通、协作和集成所采用的一体化流程、方法和体系,以提高软件交付的价值、速度和质量。
DevOps根本理念是持续,其生命周期是个无穷环

计划->编码->构建-> 测试->发布->部署->运营->监控->计划->…
最核心的技术实践是持续集成、持续交付和持续部署。
8.软件过程的评估 CMMI的成熟度等级

- 初始级:无序的,成功依赖个人(被动)
- 可管理级:建立项目级软件过程,可跟踪控制
- 已定义级:组织级标准软件过程,统一规范(主动)
- 量化管理级:数据驱动,过程可预测(可度量和可控的)
- 优化级:持续改进,创新驱动(稳定的灵活的)
1545

被折叠的 条评论
为什么被折叠?



