软件工程之学习RUP、XP笔记

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

时间: 2024-10-07 05:30:35

软件工程之学习RUP、XP笔记的相关文章

《学习bash》笔记--进程处理

1.进程ID和作业编号 当通过附加&号后运行命令时,shell会响应如下: $ ls & [1] 3318 其中[1]是作业号,3318是进程号. 一个后台进程完成时,shell会给出作业编号信息,如下: [1]+  Done                    ls --color=auto 如果作业以非0状态退出时,shell指出其退出状态. 2.作业控制 作业编号可以使它们在shell命令中进行作业控制.一旦作业在后台运行,你可以让它一直运行,或把它放到前台,或向其发送信号. 2.

hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看start-dfs.sh可以看出,namenode是通过bin/hdfs命令来启动 $ vi start-dfs.sh # namenodes NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes) echo "Starting namenodes o

《学习opencv》笔记——矩阵和图像操作——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

矩阵和图像的操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 double alpha,//1号矩阵系数 const CvArr* src3,//加权矩阵 double beta,//2号矩阵系数 CvArr* dst,//结果矩阵 int tABC = 0//变换标记 ); tABC变换标记及其对应的含义 CV_GEMM_A_T 转置 src1 CV_GE

Python学习的个人笔记(基础语法)

Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅,一开始保存在word上,代码不是很好看,于是决定复制到博客里面,可能有复制过程中出错的,或者我本身在理解方面有出错的地方,希望能得到指正,谢谢  后续的内容我会继续学习…… python下载地址  www.python.org Python 分为2.7和3.3两个版本,3.3有些库不兼容,因此用2.

深度学习论文阅读笔记--Deep Learning Face Representation from Predicting 10,000 Classes

来自:CVPR 2014   作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predicting 10,000 Classes 主要内容:通过深度学习来进行图像高级特征表示(DeepID),进而进行人脸的分类. 优点:在人脸验证上面做,可以很好的扩展到其他的应用,并且夸数据库有效性:在数据库中的类别越多时,其泛化能力越强,特征比较少,不像其他特征好几K甚至上M,好的泛化能力+不过拟合于

python学习Pilow图形笔记1

英文教程 学习笔记 代码来自这问仁兄,向你学习写的笔记网页 1.准备工作 先从我说的这个代码里点击进入,会转到github中,点击clone or download收入自己的文件夹来研究,我先看看里面有什么 还有一个lena.ppm 我把它已经移到我写练习代码的文件夹里了 这个lena.ppm {PPM图像格式(PortablePixelmap)一种linux图片格式}这是接下来代码要用到的素材 前一个教程,我已近分享了如何使用pip下载第三方库 现在我们再次使用它 进入命令行输入 pip in

《学习bash》笔记--调试shell程序

在shell中,最简单的调试助手时输出语句echo,可以通过把许多echo语句放到代码中进行调试,但必须花费足够的时间以定位 要查看的信息.可能必须通过许多的输出才能发现要查找的信息. 1.set选项 最基本的时set -o命令选项,当运行脚本时,这些选项可以用在命令行上,如下表所示: set -o选项      命令行选项      行为 noexec            -n                     不运行命令,值检查语法错误 verbose           -v  

《学习bash》笔记--命令行处理

shell从标准输入或脚本中读取的每行称为一个管道行,它包含一或多个由0个或多个管道符分割的命令,对其读取的每个管道 行,执行下面的操作. 1.将命令分成由固定元字符集分隔的记号:SPACE.TAB.NEWLINE.;.(.).<.>.|和&.记号类型 包括单词.关键字.I/O重定向符和分号. 2.检测每个命令的第一个记号,查看为不带引号或反斜线的关键字.如果是一个开放的关键字,如if和 其他控制结构起始字符串.function.{或(,则命令实际上为一复合命令.shell在内部对复合

《学习bash》笔记--基础shell编程

1.shell脚本和函数 脚本是包含shell命令的文件,它是一个shell程序,有三种方式运行它们: 一是键入source scriptname,使得脚本的命令被读取并运行,就好像键入它们一样. 二是运行bash scriptname,打开一个子shell来读取并执行脚本文件中命令.该脚本文件可以无"执行权限". 三是使用./scriptname,打开一个子shell读取并执行脚本文件中的命令,该脚本需要"执行权限". 1.1.函数 函数是一种脚本内脚本,你使用它