RUP(Rational 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很象一个由很多小块拼起来的智力拼图,单独看每一小块都没有什么意义,但拼装好后,一幅美丽的图画就会呈现在你面前。