【内容】
1.RUP介绍
RUP(Rational Unified Process),统一软件开发过程,是一个面向对象且基于 络的程序开发方法论。
一个过程是指想要达到一个目标而采取的一组有序的步骤。
在软件工程中,目标是高效、准时地提交一个满足你的业务需求的软件产品。
RUP是Rational公司开发和维护的过程产品,是目前影响较大的、面向对象的软件开发过程。
RUP提供了在开发机构中分派任务和责任的纪律化方法。
RUP的目标是能够在预定的进度和预算中,提供高质量的、满足最终用户需求的软件。
RUP与UML的关系
UML在很大程度上是过程独立的,你可以将它运用于许多软件过程。
RUP是一种特别适应于UML的生命周期方法。
RUP提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。
RUP所处理的问题
有缺陷的、无法预见结果的、高度依赖于个别“英雄”程序员的、不可重复的开发过程;
开发的软件难以适应用户的要求;
在应对需求的变更方面无能为力;
需要单调乏味和昂贵的测试流程;
项目中出现的严重缺陷发现得太迟;
开发的软件难以维护和扩充。
RUP带来的好处
RUP使得开发团队成员将共享:
同一个知识库;
同一个开发过程;
同一个开发视图;
同一种建模语言。
2.软件危机的主要特征
软件开发周期大大超过规定日期;
软件开发成本严重超标;
软件质量难于保证。
3.软件开发面临的问题
(1)不能满足用户或商业的要求
(2)不能很好的定位需求
(3)模块难于集成
(4)到最后才发现错误
(5)对于终端用户来说质量较差
(6)负载时性较差
(7)没有协调团队的努力
(8)不断地修改-发布问题
4.RUP的思路:Implementing Best Practices
RUP达到最佳实践的几种措施:
1)迭代式开发
a.迭代式开发是什么
迭代是一种技术,用来把系统功能传递到一系列连续的增量的完整版本。
每个版本都在一个特定固定的时间段被开发,该时间段称之为迭代。
迭代的成果是一个可执行产品的一个版本,是最终系统产品的一个子集。
通过多次迭代连续增加和精化系统,在每个迭代过程中逐步增加信息、进行细化。
每次迭代都选择目前对风险影响最大的使用实例进行,以分解和降低风险。
b.迭代式开发示意图
c.优点
降低风险、得到早期用户反馈、持续的测试和集成、适应变更、提供复用性
d.迭代式开发特征
在进行大规模的投资之前就解决了关键的风险问题。
使得早期的用户反馈在初始迭代中就能出现。
连续进行测试和集成。
各个目标里程碑提供了短期的焦点(阶段性的中心)。
对过程的测量是通过对实现的评定(而不仅仅是文档)来进行的。
可以对局部的实现进行部署。
2)需求管理
需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法。
确保能够:解决正确的问题,建立正确的系统。
需求管理包括:
提取、组织系统的功能和约束,并将它们写成文档;
估计需求的变化并评估它们会产生的影响;
跟踪需求的实现。
3)使用构件架构
a.采用构件架构的优势:
对体系结构进行自上而下的设计、实现和测试。
用一种系统化的做法来定义好的体系结构。
采用定义明确的接口来使得变更有弹性。
采用线程的和通过逆向工程得到的构件。
由高级别的用例来驱动。
易于直观上的理解。
4)可视化建模
描述体系结构特点和结构。
描述系统里的各个元素如何组合在一起。
保证设计和实现上的一致性。
保证没有歧异的沟通。
5)质量检验
为每个关键模块创建测试用例并测试,从而保证所有的需求被正确的实现。
不可接受的应用性能和不能接受的可靠性对一个软件系统的影响同等重要。
验证软件可靠性,例如:内存泄漏、性能瓶颈。
对每一次迭代进行测试。
6)控制变更
控制、追踪和监控项目的所有变更,从而启动每次迭代。
为每个开发者建立安全的工作空间。
对不同工作控件的改动提供隔离机制。
控制所有的软件产品:模型、代码、文档等。
5.RUP的基本特征
(1)迭代式增量开发
受控的迭代式增量开发:
将软件开发分为一系列小的迭代过程,在每个迭代过程中逐步增加信息、进行细化;
根据具体情况决定迭代的次数、每次迭代延续的时间以及迭代工作流;
每次迭代都选择目前对风险影响最大的用例进行,以分解和降低风险。
(2)用例(Use case-driven)驱动
采用用例来捕获对目标系统的功能需求;
采用用例来驱动软件的整个开发过程,保证需求的可跟踪性,确保系统所有功能均被实现;
将用户关心的软件系统的业务功能模型和开发人员关心的目标软件系统的功能实体模型结合起来,提供一种贯穿在整个软件生存周期的开发方式,使得软件开发的各个阶段的工作自然、一致地协调起来。
(3)以软件体系结构为中心
强调在开发过程的早期,识别出与软件体系结构紧密相关的用例,并通过对这些用例的分析、设计、实现和测试,形成体系结构框架;
在后续阶段中对已形成的体系结构框架进行不断细化,最终实现整个系统;
在开发过程的早期形成良好的软件体系结构,有利于对系统的理解、支持重用和有效的组织软件开发。
6.RUP软件开发生命周期
RUP将一个周期的开发过程分为四个阶段:
(1)Inception(起始阶段):为项目建立一个业务案例
(2)Elaboration(细化阶段):建立工程计划和合理的体系结构。
(3)Construction(构建阶段):建造系统。
(4)Transition(提交阶段):把系统提供给最终用户。
在每个阶段中都有很多迭代。迭代代表一个完整的开发周期,从在分析中捕获的需求到实现和测试,产生一个可执行的项目发布版本。
每个阶段和迭代都有一些风险缓解焦点,并以一个定义良好的里程碑结束。里程碑复审及时地提供一个评价点,评价关键目标是否得到满足,项目是否需要以任何方式被重新构造。
(1)起始阶段
意图:
建立业务模型用例。
明确项目的范围。
结果:
项目的实际需求:初始用例模型和领域模型(10-20%完成)
初始的业务案例,包括:成功准则、风险评估、所需资源评估、显示主要里程碑进度表的阶段计划。
在初始阶段的最后,检查项目的生命周期目标,决定是否继续进行全范围的开发。
(2)细化阶段
意图:
分析问题域。
建立一个健全的、合理的体系结构基础。
明确高项目中风险的元素。
制定一个合理的项目开发计划。
结果:
用例图和领域模型(80%完成)。
一个可执行的体系结构和文档。
一个修订的用例图和风险评估。
一个针对整个项目的开发计划。
在这个阶段的最后,检查已经细化的系统目标和范围,体系结构的选择以及主要风险的解决办法,并决定是否需要进行构造。
(3)构建阶段
意图:
迭代增量的开发一个完整的软件系统,该产品是准备提交给用户使用的。
产品:
完整的用例图和设计模型。
用户手册。
可执行代码。
开发文档。
每次迭代的评测标准。
改进的开发计划。
(4)提交阶段
意图:
为用户安装部署软件。
产品:
可执行的程序。
改进的系统模型。
每次迭代的评测标准。
发出程序的描述和评测指标描述。
改进的用户文档。
改进的开发文档。
迭代和阶段之间的关系:
每个阶段可以分解成多个迭代。
一个迭代式一个完整的开发循环,它将产生一个可执行产品的发布版本,这个版本构成最终产品的一个子集,然后迭代的得到最终系统。
7.RUP带来的观念变化
(1)更强的计划性
迭代开发意味着要有更强的预见性和计划性,阶段的划分、阶段内的迭代都需要仔细规划。这要求项目管理者承担更大的责任,而所换来的则是开发任务的具体化和可预见性。
(2)坦然面对迭代过程中一部分中间制品的推倒重来
不要恐惧这样的现实,由于迭代过程的细化和相应工具的支持,其影响是可以控制的。
(3)把软件放在首位
过分强调规格说明(问题控件的描述)的作用是不恰当的,因为用户所购买的是软件(解空间)而不是规格说明。在开发过程中,需求和规格说明都是允许变化的。
(4)尽早进行困难的工作
强调与实现的关系密切,而将困难工作放在开发后期突然遇到“集成地狱”而使开发过程失去控制。
(5)坦然面对中间制品的“不美观”
在一些迭代中产生的中间制品,虽然外观上不能令用户和投资者满意,但其作用和价值是完美的。这时,项目管理者要充当一个“意见缓冲区”,对外树立可信赖和讲信用的形象。
(6)加强开发过程监控与量化管理
项目管理者要注重对各种变化与扰动的测量与监控,应先示范,后发布文档,以使得开发人员信服。
(7)确定迭代的数量、持续时间和内容
RUP给出了一定的指南,但主要靠项目管理者根据实际情况确定,因而责任更加重大。
(8)既需要好的项目管理者,也需求好的体系结构设计师
一个成功的软件项目同时需求这两种人,而且项目管理者本人就应当懂得体系结构设计。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!