UML之RUP

RUPRational unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。

1、 软件面临的危机

……

2、 Rup介绍

一个过程是指想要达到一个目标而采取的一组有序的步骤。

在软件工程中,目标是搞笑、准时地提交一个满足你的业务想需求的软件产品。

RUPRational公司开发和维护的过程产品,是目前影响较大的,面向对象的软件开发过程。

RUP提供了在开发机构中分派任务和责任的纪律化方法。

RUP的目标是能够在预定的进度和预算中,提供高质量的,满足最终用户需求的软件。

UML很大程度上是过程独立的,你可以将它运用于许多软件过程。

RUP是一种特别适应于UML的生命周期方法。

RUP提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。

RUP所处理的问题:

----有缺陷的,无法遇见结果的,高度依赖于个别“英雄”程序员的、不可重复的开发过程;

----开发的软件难易适应用户的要求;

----在应对续修的变更方面无能为力;

----需要单调乏味和昂贵的测试流程;

----项目中出现的严重缺陷发现得太迟;

----开发的软件难易维护和扩充。

RUP使得开发团队成员将共享:

----同一个知识库;

----同一个开发过程;

----同一个开发视图;

----同一种建模语言。

RUP的思路:Implementing Best Practices(保持最佳实现)

----迭代式开发(Develop Iteratively

迭代式开发也被称作迭代式增量式开发或迭代进化式开发,是一种与传统的瀑布式开发想法的软件开发过程,它弥补了传统 方式中的一些弱点,具有更高的成功率和生产率。

----管理需求(Manage Requirements

需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法。

确保能够:解决正确的问题,建立正确的系统。

需求管理包括:

提取、组织系统的功能和约束,并将它们写成文档;

估计需求的变化并评估它们会产生的影响;

跟踪需求的实现

----使用构件架构(Use Component Architecture

优势:

RUP的开发活动是用例驱动的(use case-driven)。它强调要在透彻理解提交的系统将如何被使用的基础上建造系统。

1、 对体系结构进行自下而上的设计、实现和测试。

2、 用一种系统化的做法来定义好的体系结构。

3、 采用定义明确的接口来使得变更有弹性。

4、 采用现成的和通过逆向工程得到的构件。

5、 由高级别的用例来驱动。

6、 易于直观上的理解。

----可视化建模(Model Visually

1、 描述体系结构特点的结构

2、 描述系统里各个元素如何组合在一起。

3、 保证设计和实现上的一致性。

4、 保证没有歧义的沟通。

----检验质量(Verify Quality

可扩充性(Supportability)、能性(Functionality)、外观(Performance)、可靠性(reliability))可用性(Usability

为每个关键模块常见测试用例并测试,从而保证所有的需求被正确的实现

不可接受的应用性能和不能接受的可靠性对一个软件系统的影响同等重要。

验证软件可靠性,例如:内存泄露、性能瓶颈。

对每一次迭代进行测试。

----控制变更(Control Changes

管理什么?

----控制、追踪和监控项目的所有变更,从而启动每次迭代

----为每个开发者建立安全的工作空间。

----对不同工作空间的改动提供隔离机制

----控制所有的软件制品:模型、代码、文档等。

RUP的基本特征

----迭代式增量开发

----用例(Use case-drive)驱动

----以软件体系结构为中心

RUP软件开发生命周期

初始阶段:inception

精化阶段:Elaboration

构件阶段:Construction

交付阶段:Transition

生产阶段:Production

Production

Retirement

迭代与阶段之间的关系:

----可以分解成多个迭代

----一个迭代是一个完整的开发循环,它将产生一个可执行产品的发布版本,这个版本构成最终产品的一个子集,然后迭代的得到最终系统。

RUP带来的观念变化

----更强的计划性

----坦然面对迭代过程中一部分中间制品的推到重来

----把软件放在首位

----尽早进行困难的工作

----谈单面对中间制品的“不美观”

----加强开发过程监控与量化管理

----确定迭代的数量、持续时间和内容

----既需要好的项目管理者,也需要好的体系结构设计师。