软件工程——软件过程模型

软件生命周期描述了软件从生到死的全过程。包括需求分析、软件设计、软件开发、运行维护和淘汰。
软件生命周期模型,也叫做软件过程模型,是为了对各项任务给予规程约束,从而能够有序地按照规程进行。

  • 瀑布模型 (Waterfall Model)
    image
    • 特点是因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。每一个阶段都是建筑在前一个阶段正确实施的结果之上。每一个阶段工作完成后都伴随着一个里程碑(一组检查条件),对该阶段的工作进行审查和确认。
    • 主要缺点有:
      • 软件需求的完整性、正确性等很难确定,甚至是不可能和不现实的。因为用户不理解计算机和软件系统,无法回答目标系统“做什么”,对系统将来的改变也难以确定,往往用“我不能准确地告诉你”回答开发人员。
      • 瀑布模型是一个严格串行化的过程模型,使得用户和软件项目负责人要相当长的时间才能得到一个可以看得见的软件系统。如果出现与用户的期望不一致,或者出现需求变更,将会带来巨大的损失(例如人力、财力、时间等)。
      • 瀑布模型的基本原则是在每个阶段一次性地完全解决该阶段的工作,不会出现遗漏、错误等情况,而实际上这是不现实或不可能的。
  • 原型模型 (Prototype Model)
    image
    • 包括原型开发阶段和目标软件开发阶段
      • 原型开发阶段。软件开发人员根据用户提出的软件系统的定义,快速地开发一个原型。该原型应该包含目标系统的关键问题和反映目标系统的大致面貌,展示目标系统的全部或部分功能、性能等。
      • 目标软件开发阶段。在征求用户对原型的意见后对原型进行修改完善,确认软件系统的需求并达到一致的理解,进一步开发实际系统。
    • 按照原型的作用不同,出现了抛弃型原型和演化性原型
      • 抛弃型原型是将原型作为需求确认的手段,在需求确认结束后,原型就被抛弃不用,重新采用一个完整的瀑布模型进行开发。
      • 演化性原型是在需求确认结束后,不断补充和完善原型,直至形成一个完整的产品。
  • 螺旋模型 (Spiral Model)
    image
    • 把整个软件开发流程分成多个阶段,每一个阶段都由目标设定、风险分析、开发和有效性验证、评审4部分组成。软件开发过程实际是上述4个部分的迭代过程,每迭代一次,螺旋线就增加一圈,软件系统就生成一个新版本,这个新版本实际上是对目标系统的一个逼近。经过若干次的迭代后,系统应该尽快地收敛到用户允许或可以接受的目标范围内,否则也有可能中途夭折
  • 敏捷模型
    • 敏捷型方法主要有两个特点
      • 敏捷型方法是“适应性” (adaptive) 而非“预设性” (predictive) 的
        • 软件开发无法将设计和实施分离开来,一些设计错误只能在编码和测试时才能发现,根本无法做出一个交给程序员就能直接编码的软件设计。
      • 敏捷型方法是“面向人的” (People-oriented) 而非“面向过程的” (Process-oriented)
        • 在开发过程中,项目的需求是在不断变化的,管理人员之间、开发人员之间以及管理人员和开发人员之间,都必须不断地了解这些变化,对这些变化做出反应,并实施在随后的开发过程中。
  • 统一过程模型(Rational Unified Process,RUP)
    • 描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。
    • RUP中有9个核心工作流
      • 业务建模 (Business Modeling): 理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
      • 需求 (Requirements): 定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
      • 分析与设计 (Analysis & Dcsign): 把需求分析的结果转化为分析与设计模型。
      • 实现 (Implementation): 把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
      • 测试 ( Test ) : 检查各子系统之间的交互、集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
      • 部署 (Deployment): 打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。配置与变更管理 (Configuration & Change Management): 跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
      • 项目管理 (Project Management): 为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
      • 环境 (Environment): 为软件开发机构提供软件开发环境,即提供过程管理和工具的支持。
    • RUP 把软件开发生命周期划分为多个循环 (Cycle), 每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段 (Phase) 组成,每个阶段完成确定的任务。
      • 初始 (inception) 阶段:定义最终产品视图和业务模型,并确定系统范围。
      • 细化 (elaboration) 阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
      • 构造 (construction) 阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
      • 移交 (transition) 阶段:把产品提交给用户使用。
    • RUP中定义了如下一些核心概念
      • 角色 ( Role ) : Who的问题。角色描述某个人或一个小组的行为与职责。 RUP预先定义了很多角色,如体系结构师 (Architect)、 设计人员 (Designer)、 实现人员 (Implementer)、 测试员 (tester) 和配置管理人员 (Configuration Manager) 等,并对每一个角色的工作和职责都做了详尽的说明。
      • 活动 (Activity):How 的问题。活动是一个有明确目的的独立工作单元。
      • 制品(Artifact):What的问题。制品是活动生成、创建或修改的一段信息。也有些书把Artifact翻译为产品、工件等,和制品的意思差不多。
      • 工作流 (Workflow):When 的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
    • RUP采用“4+1”视图模型来描述软件系统的体系结构。
      image
      • 分析人员和测试人员关心的是系统的行为,会侧重于用例视图;
      • 最终用户关心的是系统的功能,会侧重于逻辑视图;
      • 程序员关心的是系统的配置、装配等问题,会侧重于实现视图;
      • 系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于进程视图;
      • 系统工程师关心的是系统的发布、安装、拓扑结构等问题,会侧重于部署视图。
  • 软件能力成熟度模型(Capability Maturity Model for Software,CMM)
    • CMMI(Capability Maturity Model Integration for Software, 软件能力成熟度模型集成) 是在全世界推广实施的一种软件能力成熟度评估标准,主要用于指导软件开发过程的改进和进行软件开发能力的评估,它将软件过程改进的步骤组织成5个成熟度等级,为软件过程不断改进奠定了一个循序渐进的基础。
      • Level 1 初始级。过程通常是随意且混乱的。这些组织的成功依赖于组织内人员的能力与英雄主义。成熟度1级的组织也常常能产出能用的产品与服务,但它们经常超出在计划中记录的预算与成本
      • Level 2已管理级。组织要确保策划、文档化、执行、监督和控制项目级的过程,并且需要为过程建立明确的目标,并能实现成本、进度和质量目标等。
      • Level 3 已定义级。企业能够根据自身的特殊情况定义适合自己企业和项目的标准流程,将这套管理体系与流程予以制度化,同时企业开始进行项目积累,企业资产的收集。
      • Level 4 量化管理级。组织建立了产品质量、服务质量以及过程性能的定量目标。成熟度级别3级与4级的关键区别在于对过程性能的可预测。
      • Level 5 优化级。企业的项目管理达到了最高的境界。成熟度级别5级关注于通过增量式的与创新式的过程与技术改进,不断地改进过程性能。处于成熟度5级时,组织使用从多个项目收集来的数据对整体的组织级绩效进行关注
posted @ 2026-09-09 16:02  江一乐  阅读(3)  评论(0)    收藏  举报