rup软件开发模型特点(rup软件开发过程)
本篇文章给大家谈谈rup软件开发模型特点,以及rup软件开发过程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
请哪位大虾给告诉我RUP流程具体的特点
UML能够用来为系统进行面向对象建模,但是并没有指定应用UML的过程,它仅仅是一种语言,它是独立于任何过程的。如果想要成功的应用UML一个好的过程是必要的。合理的过程能够有效的测度工作进度,控制和改善工作效率。目前有很多的过程,其中能够和UML最佳结合的是RUP,该过程是提出UML的人开发的,能够与UML很好的结合,下面进行简要的介绍。
RUP是Rational Unified Process的简称。RUP是最佳软件开发经验的总结,它包括了软件开发中的六大经验。迭代式开发;管理需求;使用基于组件的软件体系结构;可视化建模;验证软件质量;控制软件变更。它是判断是否真正实施RUP的一个重要标准。
迭代式开发。在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项目的风险,而且每个迭代过程以可以执行版本结束,可以鼓舞开发人员。
管理需求。确定系统的需求是一个连续的过程,开发人员在开发系统之前不可能完全详细的说明一个系统的真正需求。RUP描述了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用以被证明是捕获功能性需求的有效方法。
基于组件的体系结构。组件使重用成为可能,系统可以由组件组成。基于独立的、可替换的、模块化组件的体系结构有助于管理复杂性,提高重用率。RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系结构。
可视化建模。RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。
验证软件质量。在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。
控制软件变更。迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以确保成功的迭代开发。RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。
RUP软件开发生命周期是一个二维的软件开发模型,如下图所示。纵轴代表核心工作流是静态的一面,横轴代表时间显示过程动态的一面,用周期、阶段、迭代、里程碑等名词描述。
RUP的9个核心工作流是:业务建模,理解待开发系统所在的机构及其商业运作,确保所有人员对它有共同的认识,评估待开发系统对结构的影响;需求,定义系统功能
及用户界面,为项目预算及计划提供基础;分析与设计,把需求分析结果转换为分析与设计模型;实现,把设计模型转换为实现结果,并做单元测试,集成为可执行系统;测试,验证所有需求是否已经被正确实现,对软件质量提出改进意见;部署,打包、分发、安装软件,培训用户及销售人员;配置与变更管理,跟踪并维护系统开发过程中产生的所有制品的完整性和一致性;项目管理,为软件开发项目提供计划、人员分配、执行、监控等方面指导,为风险管理提供框架;环境,为软件开发机构提供软件开发环境。
什么是软件过程
软件过程是由一系列的项目的阶段,方法,技术和实践组成,人们利用它们来开发、维护软件和相关的产物(artifacts)
在面向对象的软件过程领域,主要有三种方法,RUP, OOSP和OPEN Process。本文我们只研究RUP和OOSP, 但是高度建议利用OPEN Process的材料来补充RUP和OOSP。一个更详细的比较这三个过程的文章将在不久登载。
你是否需要软件过程
一个有效的软件过程将能够增加一个组织的软件生产力,因为:
通过理解软件是怎样被开发的,你能够做出关于开发工具选择和雇用员工等方面的更聪明的决定
它使你的成就(包括文档,代码等)标准化,从而提升项目组间的软件的可重用性和一致性
它向你的组织提供了一个引进目前最好的软件惯例的一个绝佳机会,如代码审查,配置管理,change control, 结构化建模等
提高软件维护和技术支持能力。首先,它定义了怎样管理软件变更,并且适当的考虑了你将来发行的软件可能带来的维护任务,从而使你的变更管理流线化(streamining)。第二,它定义了怎样平滑的将软件转换成operations and support, the operations and support efforts 怎样实际操作。没有有效的operations and support processes, 你的软件将在很短的时间内变得无法使用。
管理软件复杂性。软件正变得越来越复杂,没有一个有效的方法来开发和维护软件,则你所有的努力都会付之东流。
管理软件项目。大部分组织都有几个项目在同时开发,维护的项目则更多,所有的这些项目都需要被有效的管理。
Manage ecommerce projects. 我们正在构建的软件的本质也在发生变化,从70年代的简单的批处理系统到结构化技术,到现在朝着的可交互,国际化,用户友好,7*24,高密度交易,高可用性发展,最重要的是,这些项目中的绝大部分都是面向对象的,基于组件技术的。
RUP
RUP是rational公司努力的成果之一,完成RUP的人们也开发了工业界标准的建模方法UML,RUP的核心是Objectory Process, 这是rational公司几年前合并Ivar Jacobson的Objectory organization时获得的几个产品中的一个。Rational公司用他们自己的过程增强了Objectory,也包括了一些其他的 rational公司购满的产品,最终形成了初期的版本RUP 5。0, rational公司在1998年12月发布。
图1说明了RUP的生命期,由四个顺序的阶段和9个核心的工作流组成。沿着图1的底部可以看出,任何一个RUP的开发周期都被组织成可以迭代的(新的工作可以在原有工作的基础上继续进行)。这样通过增强与客户间的交流,减少了项目的风险(与客户交流,在已经有的设计的基础上修改设计,依此类推,直到满意为止)。初始阶段的目标是为系统建立商业案例和确定项目的边界。细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。在构建阶段所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详尽的测试。交付阶段的目的是将软件产品交付给用户群体。
Figure 1: The lifecycle of the Rational Unified Process (RUP).
RUP的优点
1. RUP是建立在非常优秀的软件工程原则基础上的,例如迭代,需求驱动,基于结构化的过程开发。
2. RUP提供了几个方法,例如每一次迭代产生一个工作原型,在每一个阶段的结束决定项目是否继续,这些方法提供了对开发过程的非常直观的管理。
3. rational公司已经并将继续对RUP进行开发,使这个基于html的软件工程能够被裁减以适合你的组织的实际需要。
RUP的缺点
1. RUP仅仅包含了开发过程。它没有完全覆盖软件过程,从图1能够明显看出,它丢失了维护和技术支持这两个重要的阶段。
2. RUP不支持组织内的多项目开发,导致组织内的大范围的重用无法实现。
3. RUP缺少开发商的支持。你能自动完成软件过程的每一个方面?rational提供了所有的工具供你选择,例如是否有rational help desk或者rational persistence modeling
4. RUP在度量管理,重用管理,人员管理和测试上有缺陷。
OOSP
(注:因为这一部分是基于作者所写的书,所以只作概要介绍)
Figure 2. The lifecycle of the Object-Oriented Software Process (OOSP).
图2描述了OOSP的生命期(在Process Patterns and More Process Patterns中有详细描写),由过程模式的集合组成。一个过程模式是一些通用技术、动作和(或者)任务的集合组成,它能够解决某一方面的软件过程问题。就象设计模式提供了一些通用的软件设计问题的解决方案,过程模式解决一些通用的软件过程问题。一个重要的特征是过程模式描述了你应该做什么,而不是怎样做?因为没有规定怎样做,所以能够很容易的将它进行裁剪,以适合你自己的需要。
从图2可以看出,OOSP包括4个项目阶段-Initiate, Construct, Deliver, Maintain and Support。每一个阶段都有相应的模式描述。这些模式可以帮助你完成RUP。
总结
RUP是一个很好的开始点,但是还远远没有完成。然而,你能够裁剪RUP以适合你的组织的需要。已经有一些裁剪RUP的成功的案例,包括internet公司和保险公司。
什么是RUP它有什么特点
RUP(Rational Unified Process)是Rational公司(早在2002年就被IBM收购了)的过程产品。上面这段话显然不能作为RUP的定义,因为没有涉及RUP的内涵。
RUP是一种软件工程过程。那么软件工程过程又是什么呢?通俗的讲,我们有一群人,接了一个软件开发的活,这一群之间的职责如何分配?工作顺序如何安排?每一个具体的任务具体怎么个做法?不同人员如何协作?除了最终交付给用户的软件和文档是否需要一些中间制品?这些制品是否有一个统一的模板?这些问题如果不在我们正式干活之前就找到答案,那么项目开发就会出现很大的随意性——不同项目都有自己的一套做法,互不相同,也互无借鉴。有的人做项目做得多些,自己可能总结出了一些套路(个人或小团队的“最佳实践”),成了自学成才的专家,但是这些套路没有成文,不同“专家”之间不能互相学习、互补。软件过程其实就是一套成文的,做软件项目的“套路”。一般稍微大一些的软件企业,都有自己的软件过程。
软件工程过程不止RUP一种,那么RUP的特色是什么?RUP的特色体现在他对下面6个最佳实践的支持:
1. 迭代式开发——较之瀑布式开发,迭代开发更能规避风险,更好的获取用户需求。
2. 管理需求——需求是动态变化的,对需求的管理应贯穿软件生命周期的所有环节。需求管理包括三个活动:获取、组织并记录需求;评估需求变化及其影响;跟踪、记录需求的变更相关的决策与权衡的理由。
3. 应用基于构件的构架——软件系统很复杂,不同干系人(stakeholder,例如:用户、分析师、开发人员、集成人员、测试人员、项目经理等)对软件有不同的视角。建立并维护软件构件有利于管理不同的视角,从而在整个迭代周期内控制迭代的过程。 而基于构件的构架则由于其柔性的结构、对复用的支持被Rational认为是最佳的实践。
4. 可视化的建模——复杂的软件通过UML这样的建模语言进行抽象和可视化不但能够简化沟通,而且也能简化开发人员对系统的理解。
5. 持续不断的验证软件质量——缺陷越早被发现被解决就越节约成本,因此应该在整个软件生命周期内不断验证质量。
6. 控制软件变更——多人、分布式的开发,如果不能控制版本和变更,开发必然陷入混乱,变更的控制是项目有序进行的必要条件。
RUP是可以剪裁的,他包含针对不同项目特征进行剪裁的指南。同时RUP也是不断演化的,Rational不断在发布RUP的新版本。
软件开发模型有哪几种?各有什么特点?
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。软件工程的主要环节包括人员管理、项目管理、需求分析、系统设计、程序设计、测试、维护等,如图所示。软件开发模型是对软件过程的建模,即用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,好比工厂的生产线。
最早出现的软件开发模型最早出现的软件开发模型是1970年W•Royce提出的瀑布模型。 该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用。但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的 需求等缺点。常见的软件开发模型还有演化模型、螺旋模型、喷泉模型、智能模型等。编辑本段典型的开发模型典型的开发模型有:
1.边做边改模型(Build-and-Fix Model);
2.瀑布模型(Waterfall Model);
3.快速原型模型(Rapid Prototype Model);
4.增量模型(演化模型)(Incremental Model);
5.螺旋模型(Spiral Model);
6.喷泉模型(fountain model);
7.智能模型(四代技术(4GL));
8.混合模型(hybrid model);
9.RUP模型;
10.IPD模型
1.边做边改模型(Build-and-Fix Model)遗憾的是,许多产品都是使用"边做边改"模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。
在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。
这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:(1) 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;(2)忽略需求环节,给软件开发带来很大的风险;(3)没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。
2.瀑布模型(Waterfall Model)
1970年Winston Royce提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型。
瀑布模型中,如图所示,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的"非 线性"问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模 型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。
3.快速原型模型(Rapid Prototype Model)快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
4.增量模型(Incremental Model)又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:(1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。(2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。
5.螺旋模型(Spiral Model)
1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
如图所示,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:(1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;(3) 实施工程:实施软件开发和验证;(4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:(1) 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。(2) 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。(3) 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
6.喷泉模型(fountain model)(也称面向对象的生存期模型, OO模型)
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
7.智能模型(四代技术(4GL))
智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的 数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的 开发。
8.混合模型(hybrid model)过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。各种模型的比较每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。各种模型的优点和缺点:模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型风险驱动风险分析人员需要有经验且经过充分训练
9.RUP模型(迭代模型)
RUP(Rational Unified Process)模型是Rational公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程。它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。RUP具有两个轴,一个轴是时间轴,这是动态的。另一个轴是工作流轴,这是静态的。在时间轴上,RUP划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。每个阶段都使用了迭代的概念。在工作流轴上,RUP设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。作为一个商业模型,它具有非常详细的过程指导和模板。但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。尤其对项目管理者提出了比较高的要求。它具有如下特点:(1)增量迭代,每次迭代都遵循瀑布模型能够在前期控制好和解决风险;(2)模型的复杂化,需要项目管理者具有较强的管理能力。
10.IPD模型
IPD(Integrated Product Development)流程是由IBM提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目,尤其涉及到软硬件结合的项目。
IPD从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。是一个端到端的流程。在IPD流程中总共划分了六个阶段(概念阶段、计划阶段、开发阶段、验证阶段、发布阶段和生命周期阶段),四个个决策评审点(概念阶段决策评审点、计划阶段决策评审点、可获得性决策评审点和生命周期终止决策评审点)以及六个技术评审点。
IPD流程是一个阶段性模型,具有瀑布模型的影子。该模型通过使用全面而又复杂的流程来把一个庞大而又复杂的系统进行分解并降低风险。一定程度上,该模型是通过流程成本来提高整个产品的质量并获得市场的占有。由于该流程没有定义如何进行流程回退的机制,因此对于需求经常变动的项目该流程就显得不大适合了。并且对于一些小的项目,也不是非常适合使用该流程。
rup软件开发模型特点的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于rup软件开发过程、rup软件开发模型特点的信息别忘了在本站进行查找喔。