UML基础与Rose建模实用教程(第三版)
上QQ阅读APP看书,第一时间看更新

4.2.2 统一过程的动态结构:迭代开发

Rational统一过程的动态结构,是通过对迭代式软件开发过程的周期、阶段、迭代过程以及里程碑等的描述来表示的。在统一过程二维结构的横坐标轴上,显示了统一过程的生命周期,将软件开发的各个阶段和迭代周期在这个水平时间轴表达出来,反映了软件开发过程沿时间方向的动态组织结构。

在最初的软件开发方式—顺序开发过程,即瀑布模型中,将系统需求分析、设计、实现(包括编码和测试)和集成顺序地执行,并在每一个阶段产生相关的产物。项目组织顺序执行每个工作流,并且每个工作流只能被执行一次,这就是大家熟悉的瀑布模型的生命周期,这样做的结果是只有到末期编码完成并开始测试时,在需求分析、设计和实现阶段所遗留的隐藏问题才会大量出现,项目可能要进入一个漫长的错误修正周期中。即使在后期的集成中,也会不可避免地会发生一些很重大的错误。

一种更灵活,风险更小的方法就是通过多次不同的开发工作流,逐步确定一部分需求分析和风险,在设计、实现并确认这一部分后,再去做下一部分的需求分析、设计、实现和确认工作,以此方式反复进行下去,直至整个项目的完成。这样能够在逐步集成中更好地理解需求,构造一个健壮的体系结构,并最终交付一系列逐步完成的版本。这叫作一个迭代生命周期。在工作流中的每一次顺序的通过被称为一次迭代过程。软件生命周期是迭代的连续,通过它,软件是增量的开发。一次迭代包括了生成一个可执行版本的开发活动,还有使用这个版本所必需的其他辅助成分,如版本描述、用户文档等。因此一个开发迭代在某种意义上是在所有工作流中一次完整的过程,这些工作流包括:需求分析工作流、设计工作流、实现和测试工作流、集成工作流。可以看出,迭代过程的一个开发周期本身就像一个小型的瀑布模型。

当从一个迭代过程进入到另外一个迭代过程时,需要一种方法对整个项目的进展情况进行评估,以确保大家是在朝着最终产品的方向努力。我们使用里程碑(Milestone)的方式及时地根据明确的准则决定是继续、取消还是改变迭代过程。为了对迭代的特定短期目标进行分割并组织迭代开发秩序,我们将迭代过程划分为4个连续的阶段。分别为:

  • 初始(Inception)阶段
  • 细化(Elaboration)阶段
  • 构造(Construction)阶段
  • 提交(Transition)阶段

在每一个阶段完成之后,都会形成一个良好定义的里程碑,即必须做出某些关键决策的时间点,因此在每一个阶段结束后,必须要达到关键的目标。每个阶段均有明确的目标。下面详细介绍各个阶段的目标以及重要里程碑的评价准则。

1.初始(Inception)阶段

初始阶段的目标是为系统建立商业案例和确定项目的边界。

为了达到该目标必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。它包括识别所有用例和描述一些重要的用例。商业案例包括验收规范、风险评估、所需资源估计、体现主要里程碑日期的阶段计划。

本阶段具有非常重要的意义,在这个阶段中,关注的是整个项目开发过程中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来说,初始阶段的时间可能很短。

2.细化(Elaboration)阶段

细化阶段的目标是分析问题域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。

细化阶段是四个阶段中最关键的阶段。该阶段结束时,决定了是否能将项目提交给构造和提交阶段。对于大多数项目而言,这也相当于从变动的、轻松的、灵巧的、低风险的运作过渡到高成本、高风险并带有较大惯性的运作过程。而过程必须能容纳变化,细化阶段的活动确保了结构、需求和计划是足够稳定的,风险被充分减轻,所以可以为开发结果预先决定成本和日程安排。

在细化阶段,可执行的结构原型在一个或多个迭代过程中建立,依赖于项目的范围、规模、风险和先进程度。工作量必须至少处理初始阶段中识别的关键用例,典型的关键用例揭示了项目主要技术的风险。

3.构造(Construction)阶段

在构造阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被仔细地测试。

在构造阶段,从某种意义上说,是重点在管理资源和控制运作来优化成本、日程、质量的生产过程。许多规模大的项目足够产生许多平行的增量构造过程,这些平行的活动可以极大地加速版本发布的有效性;同时也增加了资源管理和工作流同步的复杂性。健壮的体系结构和易于理解的计划是高度关联的。换而言之,体系结构上关键的质量决定了构造的容易程度,这也是在细化阶段均衡的体系结构和计划被一再强调的原因。

4.提交(Transition)阶段

提交阶段(也称为交付阶段)的目的是将软件产品交付给用户群体。

只要产品发布给最终用户,问题常常就会出现:要求开发新版本,纠正问题或完成被延迟的问题。

当软件产品的最基本底线成熟到足够发布给最终用户时,就进入了提交阶段。一些典型需求的系统子集被开发到可用、可接收的质量级别,并且用户文档也可供使用,从而交付给用户的所有部分均可以有正面的效果。这包括:

  • 对照用户的期望值,验证新系统的“beta测试”。
  • 与被替代的已有系统并轨。
  • 功能性数据库的转换。
  • 向市场、部署、销售团队交付产品。

构造阶段关注于向用户提交产品的活动。一般情况下,该阶段包括若干重复的过程,有Beta版本、通用版本、bug修补版和增强版。相当大的工作量消耗在开发面向用户的文档,培训用户等方面。在初始产品使用时,支持用户并处理用户的反馈。用户反馈主要限定在产品性能调整、配置、安装和使用问题。本阶段的目标是确保软件产品可以提交给最终用户。

在Rational统一过程的每个阶段可以进一步分解为迭代过程。迭代过程决定了可执行产品版本(内部和外部)的完整开发循环,是最终产品的一个子集,从一个迭代过程到另一个迭代过程递增式增长形成最终的系统。

与传统的瀑布式方法相比,迭代过程具有以下优点:

  • 减小了风险。
  • 更容易对变更进行控制。
  • 高度的重用性。
  • 项目小组可以在开发中学习。
  • 较佳的总体质量。