UML与统一开发过程
 

2009-03-16 作者: zyme007 来源: zyme007的blog

 

Rational Unified Process(RUP,统一开发过程)是一套面向对象的软件工程过程。RUP是一套软件工程方法的框架,软件开发者可以根据自身的实际情况以及项目规模对RUP进行裁剪和修改,以制定合乎需要的软件工程过程。

软件开发过程

当前使用比较广泛的软件过程主要包括以下几种:

1、Rational United Process(RUP)

2、Open Process

3、Object-Oriented Software Process(OOSP)

4、Extreme Programming(XP)

5、Catalysis

6、Dynamic System Development Method(DSDM)

RUP简介

1、传统的软件开发模型

(1)、瀑布模型(Waterfall Model)

瀑布模型将软件生存周期划分为6个阶段,是一种线性模型。各个阶段活动为:需求分析、设计、实现、测试、运行和维护。每个开发阶段具有以下特征:将上一阶段的结果作为本阶段工作的输入;对上述输入实施本阶段的活动;给出本阶段的工作成果作为输出传入下一阶段;对本阶段进行工作评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段。瀑布模型的缺点是缺乏灵活性。

(2)、螺旋模型

螺旋模型使用原型作为降低风险的机制,重要的是,它使开发者在产品演化的任意阶段均可使用原型方法。它保持了传统生命周期模型中系统的、阶段的方法,但将其并入了迭代框架,更加真实地反映了现实世界。螺旋模型要求在项目的所有阶段直接考虑技术风险。螺旋模型体现了RUP中的迭代思想,即一步一步接近目标系统,每完成一圈,得到一个更接近目标的原型,同时开发的风险也随之降低。

一个螺旋的周期一般包括4个阶段:确定目标,选择方案,选定完成目标的策略;风险分析;启动开发阶段;评审前一阶段的工作,计划下一阶段工作。

RUP的二维开发模型

传统的瀑布开发模型是一个一维的模型,开发过程被划分为多个连续的阶段。在一段时间内,只能做某一个阶段的工作。而在RUP中,软件开发生命周期根据时间和RUP的核心工作流划分为二维空间:横轴表示项目的时间维,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Period)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织,为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。如下图:

1、RUP的核心工作流

RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflow)和3个核心支持工作流(Core Supporting Workflow)。这些工作流在整个生命周期中一次又一次被访问,在每一次迭代中以不同的重点和强度重复。如下图:

(1)、商业建模(Business Modeling)

该工作流的主要目的是对系统的商业环境和范围进行建模,确保所有参与人员对开发系统有共同的认识。

(2)、需求分析(Requirements)

定义系统功能及用户界面,明确可以需要的系统的功能。该工作流的主要结果是软件需求说明书(SRS)。

(3)、分析与设计(Analysis and Design)

把需求分析的结果转化为实现规格。分析设计工作流的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的包(Package)和子系统(SubSystem),而描述则体现了类的对象如何协同工作实现用例的功能。

(4)、实现(Implementation)

定义代码的组织结构、实现代码、单元测试、系统集成。实现工作流的目的包括以层次化的子系统形式定义代码的组织结构,以组件的形式(源文件、二进制文件、可执行文件)实现类和对象。将开发出的组件作为单元进行测试,以及集成由单个开发者所开发的组件,使其成为可执行的系统。

(5)、测试(Test)

验证各子系统的交互和集成。测试分别从可靠性、功能性和系统性能来进行。

(6)、部署(Deployment)

部署工作流的目的是成功的生成版本并将软件分发给最终用户。

(7)、配置和变更管理(Configuration and Change Management)

该工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录

(8)、项目管理(Project Management)

为计划、执行和监控软件开发项目提供可行性的指导。

(9)、环境(Environment)

为组织提供过程管理和工具的支持。

2、RUP的4个阶段

通过使用RUP,软件产品的生命周期被分成单独的开发周期。这些周期再被细分为多个阶段。RUP包括以下几个阶段:初始阶段、细化阶段、构造阶段、交付阶段

每个阶段都由一个或多个连续的迭代组成。每个迭代都是一个完整的开发过程,每个阶段结束于一个主要的里程碑,每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足,如果评估结果令人满意的话,可以允许项目进入下一个阶段。

(1)、初始阶段

在这个阶段,需要建立商业案例,必须建立基本的用例模型、项目计划、初始风险评估和项目描述。该阶段的焦点是需求和分析工作流。

(2)、细化阶段

这个阶段的目标是分析问题领域,编制项目计划;细化风险评估;定义质量属性;捕获大部分的系统功能需求用例。为了达到该目的,必须在理解整个系统的基础上,对体系结构做出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例、创建模板、准备工具。

细化阶段结束是第二个重要的里程碑:生命周期结构(Lifecycle Architecture)里程碑。该里程碑为系统的结构建立了管理基准,并使项目小组能够在构建阶段进行衡量。该阶段有以下标准:

a、标明用例模型中的用户和参与者,建立用例的描述文档。用例模型需完成80%

b、创建软件系统开发过程中的软件结构的描述文档。

c、创建可执行的系统原型

d、细化商业案例和风险列表

e、创建整个项目的开发计划

该阶段的焦点是需求、分析和设计工作流。

(3)、构造阶段

构造阶段的主要目标是完成所有的需求、分析和设计。在构造阶段,所有剩余的构件和应用程序功能被并发并集成为产品,所有的功能被详细测试。构造阶段主要目标包括以下几点:

a、优化资源,避免不必要的报废和返工。

b、尽快达到质量要求。

c、快速完成有用的版本,如Alpha版、Beta版和其他测试发布版。

d、完成所有功能的分析、开发和测试。

e、迭代式、递增地开发随时可以发布的产品,也就是要继续描述剩余的用例和其他需求、充实设计、完成实施并测试软件。

f、确定准备好软件系统的外部环境。

构造阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。该里程碑决定了产品是否可以在测试环境中进行部署。此刻要确定软件、环境、用户是否可以开始系统地运作。

(4)、交付阶段

交付阶段的重点是确保软件对最终用户是可用的。在交付阶段的终点是第4个里程碑:产品发布(Product Release)里程碑。此时要确定目标是否实现,是否应该开始另一个开发周期。

RUP的迭代开发模型

RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它是增量式的发展,从一个迭代过程到另一个迭代过程到成为最终的系统。

下面将从制品、工作人员、工作流3个方面,针对几个关键流程中所应用到的UML过程进行说明。

1、需求捕获工作流

需求的焦点主要在初始阶段和细化阶段,在细化阶段后期,需求捕获的工作量大幅下降:

(1)、制品

需求捕获工作流中,主要的UML制品包括用例模型、参与者、用例、架构描述、术语表和用户界面原型。

a、用例模型(Use Case Model)主要包括系统参与者、用例以及它们之间的关系。用例模型可以帮助开发人员和客户在需求方面达到共识。

b、参与者(Actor)作为相关工作单元部分直接与系统进行交互,它们可以是人类用户或其他系统。

c、用例(Use Case)定义了系统所提供的功能和行为单元。可以认为,参与者使用系统的每一种方式都可以表示为一个用例。在UML术语中,一个用例往往可以认为是一个类元,也就是说,它具有操作和属性,因此用例可以由顺序图和协作图来详细描述。

d、架构描述。架构描述了关键性功能的用例,它包括用例模型的构架视图。

e、术语表(Glossary)提供了主要业务术语和定义字典。

f、用户界面原型可以在需求捕获期间由用户理解和确定参与者和系统之间的交互。

(2)、工作人员

需求捕获阶段的工作人员有系统分析人员、用例描述人员、用户界面设计人员和构架设计师。

a、系统分析人员(System Analyst)在需求捕获阶段确定参与者和用例,并确保用例模型是完整的和一致的,主要负责用例模型、参与者和术语表3个制品,但他不对每个单独的用例负责。

b、用例描述人员(Use Case Specifier)对一个或多个用例进行详细描述。

c、用户界面设计人员(Use Interface Designer)负责对用户界面进行可视化定型。

d、构架设计师(Architect)也参与需求工作流,这有助于他描述用例模型的架构视图。

(3)、工作流

需求捕获阶段的工作流主要有5个活动:确定参与者和用例、区分用例的优先级、详细描述一个用例、构造用户界面原型以及构造用例模型。

a、确定参与者和用例。从环境中界定系统,概述哪些参与者将与系统进行交互,以及他们将从系统中得到哪些功能(用例)

b、区分用例的优先级。为了决定用例的开发阶段

c、详细描述一个用例。

d、构造用户界面原型。

e、构造用例模型。

2、分析工作流

分析的主要工作开始于初始阶段的结尾,和需求一样是细化阶段的主要焦点。

(1)、制品

在分析工作流期间,主要的UML制品包括分析模型、分析类、用例实现、分析包和构架描述。

a、分析模型由代表该模型顶层包的分析系统来表示。

b、分析类代表问题域中的简单抽象,它映射到现实世界业务的概念。

c、用例实现由一组类所组成,这些类实现了用例中所说明的行为。

d、分析包。提供了一种对模型中的制品进行组织的方法。

e、构架模型。构架描述了对构架重要的制品。

(2)、工作人员

在分析工作流期间,参与的工作人员有构架设计师、用例工程师、构件工程师。

(3)、工作流

分析工作流主要包括4个活动:构架分析、分析用例、分析类、分析包。

3、设计工作流

设计工作流主要位于细化阶段的最后部分和构造阶段的开始部分。和需求一样是细化阶段的主要焦点。

(1)、制品

在设计工作流期间,主要的UML制品包括设计模型、设计类、用例实现、设计子系统、接口、构架描述、实施模型。

(2)、工作人员

在设计工作流期间,参与的工作人员有构架设计师、用例工程师、构件工程师。

(3)、工作流

分析工作流主要包括4个活动:构架分析、设计一个用例、设计一个类和设计子系统。

4、实现工作流

实现工作流是把设计模型转换成可执行代码的过程。

(1)、制品

在实现工作流期间,主要有6种制品:实现模型、构件、实现子系统、接口、构架描述、集成构造计划。

(2)、工作人员

在设计工作流期间,参与的工作人员有构架设计师、构件工程师、系统集成人员。

(3)、工作流

分析工作流主要包括5个活动:构架实现、系统集成、实现一个子系统、实现一个类和执行单元测试。

5、测试工作流

测试工作流贯穿于软件开发的整个过程。

(1)、制品

在测试工作流期间,主要有7种制品:测试模型、测试用例、测试规程、测试构件、测试计划、缺陷和评估测试。

(2)、工作人员

在测试工作流期间,参与的工作人员有测试设计人员、构件工程师、集成测试人员、系统测试人员。

(3)、工作流

测试工作流主要包括6个活动:制定测试计划、设计测试、实现测试、执行集成测试、执行系统测试和评估测试。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织