第二章 软件过程

第二章 软件过程

1.软件工程的金三角

人:完成软件开发的主体

技术:提供了建造软件在技术上需要“如何做”的方法

管理:提供了质量管理、时间管理、成本管理和范围管理等知识和技能

过程(三者之间的关系):将人、技术和管理结合在一起的凝聚力

2.软件过程

软件过程,也称为软件生存周期过程,定义了软件组织和人员在软件产品的定义、开发和维护等阶段所实施的一系列活动。它定义了什么时候做什么、如何做、由谁来做、产生什么制品。

包括:需求、设计、编码、测试、运营和维护

在这里插入图片描述

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

3.软件过程模型(软件生存周期模型)

软件生存周期模型,是对开发人员所采用的软件开发过程组织整体结构的抽象描述,表达了软件过程的结构框架。

软件生存周期模型的分类:

  • 线性顺序模型(瀑布模型)
  • 增量模型
  • 演化模型:又称迭代模型,是目前的主流模型;敏捷过程是演化模型中的主流。
3.1线性顺序模型(瀑布模型)

在这里插入图片描述

阶段:需求(得到需求规约)、设计(得到设计文档)、编码实现(得到系统)、测试、交付、运行和维护(得到被确认的系统)。

优点:重视需求和设计;每个阶段评审,强调质量;简单

在这里插入图片描述

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

3.2增量模型(大部分需求在项目早期就被定义)

需求和架构确定后,增量式进行开发,构造一系列可执行的版本。(逐步开发所需功能)

在这里插入图片描述

优点:多版本并行,加快了进度:每个版本都可运行;需求在开发早期是明确的

缺点:未能缓解需求变更和质量风险;需求变更和架构重构时的返工成本大大增加:需要大量的开发人员

3.3演化模型(需求在开发早期不能被完全了解和确定,只有一部分被定义就开始开发)

只要核心需求能够被很好地理解,就可以进行渐进式开发,其余需求可以在后续的迭代中进一步定义和实现。这种过程模型称为演化模型,它能很好地适应随时间演化的产品的开发

在这里插入图片描述

优点:有效缓解了进度、变更、技术、质量等风险。

缺点:复杂,迭代的规划和控制

特征:

  • 渐进式地开发各个可执行版本,逐步完善软件产品每个版本在开发时,开发过程中的活动和任务顺序地或部分重叠平行地被采用。
  • 与增量模型的区别是:需求在开发早期不能被完全了解和确定,在一部分被定义后开发就开始了,然后在每个相继的版本中逐步完善。

在这里插入图片描述

现代软件过程中,统一软件过程(UP)和许多敏捷过程(Scrum、XP)都采用演化模型。

演化模型的子类:原型模型是迭代次数为2的演化模型;螺旋模型是基于风险的演化。

4.迭代化开发的原则

每个迭代都应该产生一个可执行的软件版本

基于风险,规划迭代–有计划的迭代

5.敏捷过程(应对变化和以人为本)

  • 敏捷过程强调以人为本,快速响应需求和变化,把注意力集中到项目的主要目标——可用软件上。
  • 敏捷过程基于适应而非预测,强调灵活性、协作和客户反馈。

四条敏捷价值观:

  1. 较之于过程和工具,更注重及其相互作用的价值
  2. 较之于各类文档,更注重可运行的软件的价值
  3. 较之于合同谈判,更注重与客户合作的价值
  4. 较之于按计划行事,更注重响应需求变化的价值

6.Scrum

Scrum核心准则是自我管理和迭代开发

通过短周期冲刺(Sprint)、角色分工和固定会议

7.开发运维一体化DevOps

DevOps将敏捷的精神延伸到运维阶段,提出软件开发和运维之间的沟通、协作和集成所采用的一体化流程、方法和体系,以提高软件交付的价值、速度和质量。

DevOps根本理念是持续,其生命周期是个无穷环

在这里插入图片描述

计划->编码->构建-> 测试->发布->部署->运营->监控->计划->…

最核心的技术实践是持续集成、持续交付和持续部署。

8.软件过程的评估 CMMI的成熟度等级

在这里插入图片描述

  1. 初始级:无序的,成功依赖个人(被动)
  2. 可管理级:建立项目级软件过程,可跟踪控制
  3. 已定义级:组织级标准软件过程,统一规范(主动)
  4. 量化管理级:数据驱动,过程可预测(可度量和可控的)
  5. 优化级:持续改进,创新驱动(稳定的灵活的)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等你涅槃重生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值