软件工程之学习RUPXP笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程之学习RUPXP笔记相关的知识,希望对你有一定的参考价值。

RUPRational Unified Process)即统一软件开发过程。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程,因此特别适合于大型团队开发大型软件项目。

RUP思维导图如下:(图片来自网络)

技术分享

RUP开发过程:

RUP软件开发生命周期是一个二维的软件开发模型。RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:

初始阶段(Inception:定义最终产品视图、商业模型并确定系统范围。

细化阶段(Elaboration:设计及确定系统的体系结构,制定工作计划及资源要求。

构造阶段(Construction:构造产品并继续演进需求、体系结构、计划直至产品提交。

交付阶段(Transition:重点为确保软件对最终用户是可用的,确定目标是否完成,是否进行下一个阶段?

各个阶段与九大核心工作流的关联如下图:(图片来源于百度)

技术分享

RUP学习见解:

在现代大型软件开发项目中,瀑布模型强调捕获需求和设计的,但在这种情况下,现实世界的反复无偿就显得瀑布模型有些不切实际了。而RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统。相比较下来就RUP对于需求能更好的进行管理,但是也不能就否定了瀑布模型的地位。

在整个软件发展史中,瀑布模型属于软件工程阶段的产物,RUP模型属于软件过程阶段的产物,更加适合现在的大型软件。

软件工程阶段:不再认为软件是个人英雄主义的产物;

软件不只是程序,还应当有需求分析,测试,维护等;

强调程序的可读性,易修改性,可测试等工程化原则。

软件过程阶段:强调软件开发的效率,质量,以及软件开发相关的管理工作。

他们之间最大的区别是因为软件越发复杂,不可能一次性就能把软件做的完整,而RUP可以用迭代开发来更好的应对变化,使软件的实践更加完整。

 

极限编程(Extreme Programming--XP)。极限编程是一种轻量级软件开发方法论,其特点就是简单、快速、低缺陷率、适应需求变化,是敏捷开发中最著名的方法。

在开发过程中需要注意极限编程的四个核心价值观:沟通(Communication)、简单(Simplicity)、反馈(Feedback)、勇气(Courage),以及后续拓展的第五个价值观:谦逊(Modesty)。

极限编程的开发流程简单来说分为七个迭代周期:

秒级迭代--结对编程:由两个人为一个小组,一个编码的同时另一个在思考;

分钟级迭代--自动测试:写程序之前先写单元测试,代码完成后就自动测试;

小时级迭代--结对讨论:在开发过程中发现问题可以两个人及时讨论;

每日迭代--每日站会:每天早晨全体人员一起站着开个短会;

数日迭代--验收测试:客户对每个需求都定义了一些验收测试。通过运行验收测试,开发人员和客户可以知道开发出来的软件是否符合要求;

一周迭代--迭代计划:在一个Release过程中,开发人员要求客户选择最有价值的UserStory作为未来一两个星期的开发内容。

季度迭代--发布计划:客户阐述需求,开发人员估算开发成本和风险。客户根据开发成本、风险和每个需求的重要性,制订一个大致的项目计划。

XP不做过多长远规划,只要保证每一天、每分每秒都在做最重要、最有价值的事情即可,至于项目是否继续由客户和管理层决定。

XP要求项目团队遵循13个核心实践,如下图(来自网络):

技术分享

XP学习见解:

XP方法适合于2-10人的小型开发,客户也作为项目组的成员参与其中,便于需求以及功能的确认。

XP的一个成功因素是重视客户的反馈——开发的目的就是为了满足客户的需要。XP方法使开发人员始终都能自信地面对客户需求的变化。XP强调团队合作,经理、客户和开发人员都是开发团队中的一员。团队通过相互之间的充分交流和合作,使用XP这种简单但有效的方式,努力开发出高质量的软件。XP的设计简单而高效;程序员们通过测试获得客户反馈,并根据变化修改代码和设计,他们总是争取尽可能早地将软件交付给客户。XP程序员能够勇于面对需求和技术上的变化。

XP很象一个由很多小块拼起来的智力拼图,单独看每一小块都没有什么意义,但拼装好后,一幅美丽的图画就会呈现在你面前。

以上是关于软件工程之学习RUPXP笔记的主要内容,如果未能解决你的问题,请参考以下文章

关于RUPXP及敏捷过程

ARM 学习笔记之 创建工程(keil)

顶测科技之软件测试个人学习笔记整理(第一讲)--计算机基础

Linux 学习笔记之yum

构建之法阅读笔记05

《构建之法》第三章学习笔记