统一软件开发过程(RUP)的概念和方法

统⼀软件开发过程(RUP)的概念和⽅法
统⼀软件开发过程(Rational Unified Process,RUP)是⼀种⾯向对象且基于⽹络的程序开发⽅法论。
根据Rational(Rational Rose和统⼀建模语⾔的开发者)的说法,好像⼀个在线的指导者,它可以为所有⽅⾯和层次的程序开发提供指导⽅针,模版以及事例⽀持。RUP和类似的产品--例如⾯向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件⼯程⼯具--把开发中⾯向过程的⽅⾯(例如定义的阶段,技术和实践)和其他开发的组件(例如⽂档,模型,⼿册以及代码等等)整合在⼀个统⼀的框架内。
⼀.六⼤经验
迭代式开发。在软件开发的早期阶段就想完全、准确的捕获⽤户的需求⼏乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发⼯程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项⽬的风险,⽽且每个迭代过程以可以执⾏版本结束,可以⿎舞开发⼈员。
管理需求。确定系统的需求是⼀个连续的过程,开发⼈员在开发系统之前不可能完全详细的说明⼀个系统的真正需求。RUP描述了如何提取、组织系统的功能和约束条件并将其⽂档化,⽤例和脚本的使⽤以被证明是捕获功能性需求的有效⽅法。
基于组件的体系结构。组件使重⽤成为可能,系统可以由组件组成。基于独⽴的、可替换的、模块化组件的体系结构有助于管理复杂性,提⾼重⽤率。RUP描述了如何设计⼀个有弹性的、能适应变化的、易于理解的、有助于重⽤的软件体系结构。
可视化建模。RUP往往和UML联系在⼀起,对软件系统建⽴可视化模型帮助⼈们提供管理软件复杂性的能⼒。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和⾏为信息。
验证软件质量。在RUP中软件质量评估不再是事后进⾏或单独⼩组进⾏的分离活动,⽽是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。
控制软件变更。迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷⼊混乱之中,RUP描述了如何控制、跟踪、监控、修改以??品,隔离来⾃其他⼯作空间的变更,以此为每个开发⼈员建⽴安全的⼯作空间。
⼆.统⼀软件开发过程RUP的⼆维开发模型离心制丸机
RUP软件开发⽣命周期是⼀个⼆维的软件开发模型。横轴通过时间组织,是过程展开的⽣命周期特征,体现开发过程的动态结构,⽤来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和⾥程碑(Milestone);纵轴以内容来组织为⾃然的逻辑活动,体现开发过程的静态结构,⽤
来描述它的术语主要包括活动(Activity)、产物(Artifact)、⼯作者(Worker)和⼯作流(Workflow)。如图1:
三.统⼀软件开发过程RUP核⼼概念
RUP中定义了⼀些核⼼概念,如下图:
⾓⾊:描述某个⼈或者⼀个⼩组的⾏为与职责。RUP预先定义了很多⾓⾊。
活动:是⼀个有明确⽬的的独⽴⼯作单元。
⼯件:是活动⽣成、创建或修改的⼀段信息。
四.统⼀软件开发过程RUP裁剪
RUP是⼀个通⽤的过程模板,包含了很多开发指南、制品、开发过程所涉及到的⾓⾊说明,由于它⾮常庞⼤所以对具体的开发机构和项⽬,⽤RUP时还要做裁剪,也就是要对RUP进⾏配置。RUP就像⼀个元过程,通过对RUP进⾏裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为以下⼏步:
1) 确定本项⽬需要哪些⼯作流。RUP的9个核⼼⼯作流并不总是需要的,可以取舍。
2) 确定每个⼯作流需要哪些制品。
3) 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要那些⼯作流,每个⼯作流执⾏到什么程度,制品有那些,每个制品完成到什么程度。
4) 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。
5) 规划⼯作流内部结构。⼯作流涉及⾓⾊、活动及制品,他的复杂程度与项⽬规模即⾓⾊多少有关。最后规划⼯作流的内部结构,通常⽤活动图的形式给出。
五.开发过程中的各个阶段和⾥程碑
RUP中的软件⽣命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于⼀个主要的⾥程碑(Major Milestones);每个阶段本质上是两个⾥程碑之间的时间跨度。在每个阶段的结尾执⾏⼀次评估以确定这个阶段的⽬标是否已经满⾜。如果评估结果令⼈满意的话,可以允许项⽬进⼊下⼀个阶段。
1.初始阶段
初始阶段的⽬标是为系统建⽴商业案例并确定项⽬的边界。为了达到该⽬的必须识别所有与系统交互的外部实体,在较⾼层次上定义交互的特性。本阶段具有⾮常重要的意义,在这个阶段中所关注的是整个项⽬进⾏中的业务和需求⽅⾯的主要风险。对于建⽴在原有系统基础上的开发项⽬来讲,初始阶段可能很短。初始阶段结束时是第⼀个重要的⾥程碑:⽣命周期⽬标(Lifecycle Objective)⾥程碑。⽣命周期⽬标⾥程碑评价项⽬基本的⽣存能⼒。
2.细化阶段
细化阶段的⽬标是分析问题领域,建⽴健全的体系结构基础,编制项⽬计划,淘汰项⽬中最⾼风险的元素。为了达到该⽬的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等⾮功能需求。同时为项⽬建⽴⽀持环境,包括创建开发案例,创建模板、准则并准备⼯具。细化阶段结束时第⼆个重要的⾥程碑:⽣命周期结构(Lifecycle Architecture)⾥程碑。⽣命周期结构⾥程碑为系统的结构建⽴了管理基准并使项⽬⼩组能够在构建阶段中进⾏衡量。此刻,要检验详细的系统⽬标和范围、结构的选择以及主要风险的解决⽅案。
3.构造阶段
在构建阶段,所有剩余的构件和应⽤程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶
在构建阶段,所有剩余的构件和应⽤程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是⼀个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。构建阶段结束时是第三个重要的⾥程碑:初始功能(Initial Operational)⾥程碑。初始功能⾥程碑决定了产品是否可以在测试环境中进⾏部署。此刻,要确定软件、环境、⽤户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。
4.交付阶段
交付阶段的重点是确保软件对最终⽤户是可⽤的。交付阶段可以跨越⼏次迭代,包括为发布做准备的产品测试,基于⽤户反馈的少量的调整。在⽣命周期的这⼀点上,⽤户反馈应主要集中在产品调整,设置、安装和可⽤性问题,所有主要的结构问题应该已经在项⽬⽣命周期的早期阶段解决了。在交付阶段的终点是第四个⾥程碑:产品发布(Product Release)⾥程碑。此时,要确定⽬标是否实现,是否应该开始另⼀个开发周期。在⼀些情况下这个⾥程碑可能与下⼀个周期的初始阶段的结束重合。
六.统⼀软件开发过程RUP的核⼼⼯作流(Core Workflows)
RUP中有9个核⼼⼯作流,分为6个核⼼过程⼯作流(Core Process Workflows)和3个核⼼⽀持⼯作流(Core Supporting Workflows)。尽管6个核⼼过程⼯作流可能使⼈想起传统瀑布模型中的⼏个阶段,但应注意迭代过程中的阶段是完全不同的,这些⼯作流在整个⽣命周期中⼀次⼜⼀次被访问。9个核⼼⼯作流在项⽬中轮流被使⽤,在每⼀次迭代中以不同的重点和强度重复。
1.商业建模(Business Modeling)坛子鸡配方
商业建模⼯作流描述了如何为新的⽬标组织开发⼀个构想,并基于这个构想在商业⽤例模型和商业对象模型中定义组织的过程,⾓⾊和责任。
2.需求(Requirements)
连供系统需求⼯作流的⽬标是描述系统应该做什么,并使开发⼈员和⽤户就这⼀描述达成共识。为了达到该⽬标,要对需要的功能和约束进⾏提取、组织、⽂档化;最重要的是理解系统所解决问题的定义和范围。
3.分析和设计(Analysis & Design)
分析和设计⼯作流将需求转化成未来系统的设计,为系统开发⼀个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是⼀个设计模型和⼀个可选的分析模型。设计模型是源代码的抽象,由设计类和⼀些描述组成。设计类被组织成具有良好接⼝的设计包(Package)和设计⼦系统(Subsystem),⽽描述则体现了类的对象如何协同⼯作实现⽤例的功能。设计活动以体系结构设计为中⼼,体系结构由若⼲结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了⼀些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,⽽且在系统的开发中能提⾼被创建模型的质量。
4.实现(Implementation)
实现⼯作流的⽬的包括以层次化的⼦系统形式定义代码的组织结构;以组件的形式(源⽂件、⼆进制⽂件、可执⾏⽂件)实现类和对象;将开发出的组件作为单元进⾏测试以及集成由单个开发者(或⼩组)所产⽣的结果,使其成为可执⾏的系统。
5.测试(Test)
测试⼯作流要验证对象间的交互作⽤,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现, 识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的⽅法,意味着在整个项⽬中进⾏测试,从⽽尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进⾏。
6.部署(Deployment)
部署⼯作流的⽬的是成功的⽣成版本并将软件分发给最终⽤户。部署⼯作流描述了那些与确保软件产品对最终⽤户具有可⽤性相关的活动,包括:软件打包、⽣成软件本⾝以外的产品、安装软件、为⽤户提供帮助。在有些情况下,还可能包括计划和进⾏beta测试版、移植现有的软件和数据以及正式验收。
7.配置和变更管理(Configuration & Change Management)
7.配置和变更管理(Configuration & Change Management)
配置和变更管理⼯作流描绘了如何在多个成员组成的项⽬中控制⼤量的产物。配置和变更管理⼯作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。⼯作流描述了如何管理并⾏
开发、分布式开发、如何⾃动化创建⼯程。同时也阐述了对产品修改原因、时间、⼈员保持审计记录。
8.项⽬管理(Project Management)
软件项⽬管理平衡各种可能产⽣冲突的⽬标,管理风险,克服各种约束并成功交付使⽤户满意的产品。其⽬标包括:为项⽬的管理提供框架,为计划、⼈员配备、执⾏和监控项⽬提供实⽤的准则,为管理风险提供框架等。
9.环境(Environment)
环境⼯作流的⽬的是向软件开发组织提供软件开发环境,包括过程和⼯具。环境⼯作流集中于配置项⽬过程中所需要的活动,同样也⽀持开发项⽬规范的活动,提供了逐步的指导⼿册并介绍了如何在组织中实现过程。
七、RUP的迭代开发模式
RUP中的每个阶段可以进⼀步分解为迭代。⼀个迭代是⼀个完整的开发循环,产⽣⼀个可执⾏的产品版本,是最终产品的⼀个⼦集,它增量式地发展,从⼀个迭代过程到另⼀个迭代过程到成为最终的系统。传统上的项⽬组织是顺序通过每个⼯作流,每个⼯作流只有⼀次,也就是我们熟悉的瀑布⽣命周
期(见图2)。这样做的结果是到实现末期产品完成并开始测试,在分析、设计和实现阶段所遗留的隐藏问题会⼤量出现,项⽬可能要停⽌并开始⼀个漫长的错误修正周期。
电子交易系统⼀种更灵活,风险更⼩的⽅法是多次通过不同的开发⼯作流,这样可以更好的理解需求,构造⼀个健壮的体系结构,并最终交付⼀系列逐步完成的版本。这叫做⼀个迭代⽣命周期。在⼯作流中的每⼀次顺序的通过称为⼀次迭代。软件⽣命周期是迭代的连续,通过它,软件是增量的开发。⼀次迭代包括了⽣成⼀个可执⾏版本的开发活动,还有使⽤这个版本所必需的其他辅助成分,如版本描述、⽤户⽂档等。因此⼀个开发迭代在某种意义上是在所有⼯作流中的⼀次完整的经过,这些⼯作流⾄少包括:需求⼯作流、分析和设计⼯作流、实现⼯作流、测试⼯作流。其本⾝就像⼀个⼩型的瀑布项⽬(见图3)。
图3 RUP的迭代模型
与传统的瀑布模型相⽐较,迭代过程具有以下优点:
降低了在⼀个增量上的开⽀风险。如果开发⼈员重复某个迭代,那么损失只是这⼀个开发有误的迭代的花费。
降低了产品⽆法按照既定进度进⼊市场的风险。通过在开发早期就确定风险,可以尽早来解决⽽不⾄于在开发后期匆匆忙忙。
加快了整个开发⼯作的进度。因为开发⼈员清楚问题的焦点所在,他们的⼯作会更有效率。
由于⽤户的需求并不能在⼀开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
⼋.统⼀软件开发过程RUP的⼗⼤要素
1. 开发前景
2. 达成计划
2. 达成计划
3. 标识和减⼩风险
4. 分配和跟踪任务
5. 检查商业理由
6. 设计组件构架
7. 对产品进⾏增量式的构建和测试
8. 验证和评价结果
9. 管理和控制变化
10. 提供⽤户⽀持
让我们逐⼀的审视这些要素,看⼀看它们什么地⽅适合RUP,出它们能够成为⼗⼤要素的理由。
1. 开发⼀个前景
有⼀个清晰的前景是开发⼀个满⾜涉众真正需求的产品的关键。前景抓住了RUP需求流程的要点:分析问题,理解涉众需求,定义系统,当需求变化时管理需求。前景给更详细的技术需求提供了⼀个⾼层的、有时候是合同式的基础。正像这个术语隐含的那样,它是软件项⽬的⼀个清晰的、通常是⾼
层的视图,能被??⾼层的需求和设计约束,让前景的读者能理解将要开发的系统。它还提供了项⽬审批流程的输⼊,因此就与商业理由密切相关。最后,由于前景构成了“项⽬是什么?”和“为什么要进⾏这个项⽬?”,所以可以把前景作为验证将来决策的⽅式之⼀。对前景的陈述应该能回答以下问题,需要的话这些问题还可以分成更⼩、更详细的问题: ? 关键术语是什么?(词汇表) ? 我们尝试解决的问题是什么?(问题陈述)? 涉众是谁?⽤户是谁?他们各⾃的需求是什么?? 产品的特性是什么?? 功能性需求是什么?(UseCases) ? ⾮功能性需求是什么? ? 设计约束是什么?
2. 达成计划
“产品的质量只会和产品的计划⼀样好。” (2) 在RUP中,软件开发计划(SDP)综合了管理项⽬所需的各种信息,也许会包括⼀些在先启阶段开发的单独的内容。SDP必须在整个项⽬中被维护和更新。SDP定义了项⽬时间表(包括项⽬计划和迭代计划)和资源需求(资源和⼯具),可以根据项⽬进度表来跟踪项⽬进展。同时也指导了其他过程内容(原⽂:process components)的计划:项⽬组织、需求管理计划、配置管理计划、问题解决计划、QA计划、测试计划、评估计划以及产品验收计划。
卫生香在较简单的项⽬中,对这些计划的陈述可能只有⼀两句话。⽐如,配置管理计划可以简单的这样陈述:每天结束时,项⽬⽬录的内容将会被压缩成ZIP包,拷贝到⼀个ZIP磁盘中,加上⽇期和版本标签,
放到中央档案柜中。软件开发计划的格式远远没有计划活动本⾝以及驱动这些活动的思想重要。正如Dwight    D.Eisenhower所说:“plan什么也不是,planning才是⼀切。” “达成计划”—和列表中第3、4、5、8条⼀起—抓住了RUP中项⽬管理流程的要点。项⽬管理流程包括以下活动:构思项⽬、评估项⽬规模和风险、监测与控制项⽬、计划和评估每个迭代和阶段。
3. 标识和减⼩风险
RUP的要点之⼀是在项⽬早期就标识并处理最⼤的风险。项⽬组标识的每⼀个风险都应该有⼀个相应的缓解或解决计划。风险列表应该既作为项⽬活动的计划⼯具,⼜作为确定迭代的基础。
4. 分配和跟踪任务
注塑鞋
有⼀点在任何项⽬中都是重要的,即连续的分析来源于正在进⾏的活动和进化的产品的客观数据。在RUP中,定期的项⽬状态评估提供了讲述、交流和解决管理问题、技术问题以及项⽬风险的机制。团队⼀旦发现了这些障碍物(篱笆),他们就把所有这些问题都指定⼀个负责⼈,并指定解决⽇期。进度应该定期跟踪,如有必要,更新应该被发布。(原⽂:updates should be issued as necessary。)这些项⽬“快照”突出了需要引起管理注意的问题。随着时间的变化/虽然周期可能会变化(原⽂:While the period may vary。),定期的评估使经理能捕获项⽬的历史,并且消除任何限制进度的障碍或瓶颈。

本文发布于:2024-09-21 13:27:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/324691.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:开发   阶段   过程   管理   计划   作流
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议