阐述软件生命周期的基本概念,包括生命周期阶段的定义、不同类型的生命周期模型(瀑布、增量、螺旋、迭代、进化等),以及如何根据项目特点选择合适的模型。

1 软件生命周期阶段

生命周期根据软件系统的性质、目的、用途和现行情况而变化。同时以不同的顺序使用各个阶段可以产生具有截然不同特征的生命周期形式。

每个阶段对于规划和执行软件系统的整个生命周期都有不同的目的和贡献。根据 ISO/IECTS 24748‑1,典型的系统生命周期阶段 1包括概念、开发、生产、使用、支持和退役。使用这些术语来定义阶段并不是规范性的。软件系统的一组常见阶段是概念探索、 开发、维持和退役,整个系统及其元素的阶段之间有转换。

阶段代表与软件系统相关的主要生命周期时期,它们与软件系统描述的状态或软件系统本身相关。阶段描述了软件系统在其生命周期中的主要进展和成就里程碑。它们给出了生命周期的主要决策门。组织使用这些决策门来了解和管理在创建或使用软件系统时与成本、进度和功能相关的固有不确定性和风险。因此,使用阶段为组织提供了一个框架,组织管理层在该框架内对项目和技术过程具有高级别的可见性和控制。组织以不同的方式定义和使用阶段以满足对比业务和风险缓解策略。

本文档中定义的生命周期过程不与软件生命周期中的任何特定阶段对⻬。所有生命周期过程都涉及规划、性能和评估活动,这些活动在每个阶段都应予以考虑。

在 ISO/IEC/IEEE24748(所有部分)中可以找到有关生命周期管理应用的进一步阐述。

2 软件系统的生命周期模型

每个软件系统都有一个生命周期。生命周期可以用一个抽象的功能模型来描述,该模型表示系统需求的概念化、实现、利用、演变和处置。

软件系统在其生命周期中不断进步,这是组织中的人员执行和管理的行为的结果,使用流程来执行这些行为。生命周期模型中的细节以这些流程、它们的结果、关系和顺序来表达。

本文档未规定任何特定的生命周期模型。而是定义了一组过程,称为生命周期过程,可用于系统生命周期的定义。另外,本文档未规定生命周期模型中任何特定的过程序列。过程序列由项目目标和生命周期模型的选择决定。通常,开发阶段被细分得更细,且方式不同。

经常被提及的软件开发阶段包括引出、需求、设计、构建和测试。预测或“瀑布”模型。如果各阶段被视为连续的,则要求每个阶段都必须产生正确的结果,然后才能进入下一个阶段。实际上,除非充分了解要求并且初始成本估算 2准确,否则这极难实现。在执行瀑布时,人们面临着进行大量返工的风险,而这些返工并不正确地落在任何计划的阶段内,因此可能也不落在任何预算之内。

注:温斯顿·罗伊斯 (Winston Royce) 被公认为生命周期流程模型的早期分析师,他描述了对返工阶段的需求,而不是“瀑布”(他没有使用的术语)。不幸的是,这些工作阶段被从

人们普遍理解的“瀑布”模型。

为了处理完全已知需求和不准确估计的问题,已经提出了许多其他类型的模型:增量式、螺旋式、迭代式和进化式(自适应)。这些生命周期模型可以结合敏捷技术和方法。这些模型通常涉及生命周期过程中生命周期过程和阶段的重复执行,例如,针对软件产品的不同增量,以更精确地处理常见功能的异常, 或针对一开始尚未完全定义的需求。

这些模型可应用于各个阶段,例如开发、利用或部署。这些模型的使用可以影响软件发布策略和软件服务的获取策略。

示例:可以逐步开发软件元素,然后在组织的业务周期中方便的时间进行块操作发布。

“增量开发”模型包括初始规划、初始需求分析、初始架构定义和初始验证,但将设计、实施、验证(有时是交付)活动分配给一系列阶段,每个阶段提供一部分预期功能。该方法通过将功能转移到后续增量来提供一定的灵活性,以应对不准确的成本或进度估算。

增量开发的“螺旋”变化提出根据风险对功能开发进行排序,并在早期增量中考虑风险最高的问题。这为避免开发周期后期出现成本意外提供了一些保护。

“迭代开发”模型首先进行初步规划,然后包含一个循环过程,即原型设计 3、测试、分析和完善需求与解决方案。“迭代”模型反复执行生命周期过程,以更快地提供优先的系统功能,并在后续的迭代中提供更精细或更复杂的系统元素。

“进化模型”旨在处理不完整的需求知识。它提供了初步规划和初步架构定义,但将需求分析、设计、构建、检验、确认和交付分配到一系列阶段。已交付的不符合用户需求 4的功能可以在进化的后续阶段进行重新处理。

实际上,“敏捷”方法可应用于多种模型。虽然敏捷方法在执行进化生命周期模型时很常见,但它们也可以用于其他生命周期模型的各个阶段。这些方法的共同点是都强调在预计会发生变更(包括变更存储需求) 的环境中快速生产工作软件时进行持续检查和协作。附件 H 提供了有关在敏捷环境中应用本文档的信息。

注:选择一种模型类型的名称并不能满足定义一个由多个阶段组成的模型的要求,该模型具有明确的目的和通过本文档的流程完成的结果。

注:ISO/IECTS24748‑1、ISO/IECTR24748‑2、ISO/IECTR24748‑3 和 ISO/IEC/IEEE24748‑4 提供了有关生命周期模型和阶段的更多详细信息。本条款中描述的模型不仅适用于软件系统,也适用于ISO/IEC/IEEE15288:2015 中描述的其他系统。