UML精粹2 - 开发过程
迭代和瀑布过程
两者的本质区别是,你如何将一个项目分解为更小块。
- 瀑布风格基于活动来分解项目。为了构建软件,你不得不做某些活动:需求分析、设计、编码和测试。为期一年的项目可能有2个月的分析阶段,然后是4个月的设计阶段,接着是3个月的编码阶段,再接着是3个月的测试阶段。
- 迭代风格根据功能子集来分解项目。你可能会把一年分解为3个月的迭代。第一个迭代,处理1/4的需求,并对这1/4做完整的软件生命周期:分析、设计、编码和测试。在第一个迭代结束时,你拥有了一个做1/4所需功能的系统。然后,你再做第二个迭代,这样在6个月结束时,你拥有了一个完成一半功能的系统。
在进行瀑布开发时,每个阶段之间通常有正式的交接,但也经常有回溯。在编码期间,会有一些情况导致你需要回头看看分析和设计。当然,在开始编码时,你不应该假设所有设计完成了,后续阶段回头看看分析和设计决策时不可避免的。然而,这种回溯是一种异常,应该尽可能减少。
进行迭代开发时,在真正的迭代开发之前,通常会有一些探索活动。至少,这会让我们得到需求的高级别视图:足于让我们把需求打碎,放进接下来要进行的迭代中。每个迭代应该产出准备产品化的集成软件,但是通常很难严格达到这个地步,我们经常会听到一个项目有多个发布release,每一个发布分解为若干个迭代iteration。迭代有许多的名字:增量、螺旋、演进等。
你也可以使用杂化的方法。阶段交付staged delivery生命周期,先以瀑布风格完成分析和高级设计,然后把编码和测试放到迭代中。这样一个项目可能有4个月的分析和设计,紧跟着4个两个月的迭代来构建系统。
迭代的常见技能是使用时间盒time boxing。时间盒前调每个迭代有固定长度的时间。如果不能在规定时间内完成预计的功能,可以推迟一些功能到下一个迭代,而不能延迟迭代结束时间。一般我们可以发布一个功能少一点的软件,但不可以推迟发布时间,时间盒可以帮助控制时间。
迭代中用到的技术:自动化回归测试automatic regression test,重构refactoring,持续集成continuous integration。
预测性和自适应计划
预测性方法指望在项目早期做点工作,以便更好地理解后面不得不做的事情,这样,项目可以进行相对准确的估算。然而,事实是需求经常变动,计划赶不上变化。自适应计划认为预测性看起来就是错觉,要面对现实,把处理改变看成软件项目的常态。这样,改变得到控制,项目交付所能交付的最好的软件;虽然项目不是可预测的,但项目是可控的。自适应方法绝对需要迭代方法,预测性方法两种方式都行,不过,采用瀑布和阶段交付更容易看到项目如何进行。
敏捷过程
敏捷过程的例子有:极限编程XP,Scrum,特性驱动开发FDD,Crystal,动态系统开发方法DSDM。敏捷过程本性是非常自适应的,也非常注重以人为本。敏捷方法假设项目成功的最重要因素是项目中人的素质,以及他们一起工作时人际关系有多好,使用什么过程和工具绝对是次要因素。敏捷方法倾向于使用短的、基于时间盒的迭代,和更少的仪式ceremony(注重仪式的过程项目期间有许多文档和控制点)。敏捷过程经常被刻画为轻量的,但是要注意缺少仪式是自适应和以人文本的结果,而不是基本性质。
Rational统一过程(RUP)
RUP实际上是一个过程框架,提供了一个用来谈了过程的词汇表和松散结构。当你使用RUP时,第一件需要做的事情是选择一个开发案例(development case):你打算在项目中使用的过程。RUP本质上是迭代的过程。所有RUP项目遵循4个阶段:
- 初始inception阶段。对项目进行估算,决定是否投入足够的资金来做细化阶段。
- 细化elaboration阶段,识别项目的首要用例,并迭代构建软件,以便使系统的架构成型。细化阶段的最后,你应该对需求有好的体会,并且有大致可以工作的系统来扮演开发的种子。特别是,你应该发现并解决了项目的主要风险。
- 构造construction阶段。继续构建软件,开发足够发布的功能。
- 移交transition阶段。包含后期阶段的活动,这些活动不用迭代去做,可能包括部署到数据中心、用户培训等。
在阶段之间,有相当多的模糊地带,特别是细化阶段和构造阶段之间。对某些人来说,到构造阶段说明可以使用预测性计划模式,对其他人来说,它只说明你对需求有了全面的理解,并且有了一个项目使用的架构。
为项目裁剪过程
随着项目的进行,你可能需要裁剪项目过程,迭代支持频繁的过程改进。在迭代的末尾举行一次迭代回顾(iteration retrospective),团队聚在一起讨论:做得好的要保存,做得不好的要改进。在项目末期的时候或有主要发布时,考虑一次更正式的、持续两三天的项目回顾project retrospective。
为过程裁剪UML
考虑在项目过程的各个阶段使用什么类型的UML图。
- 需求分析。可以使用:用例,类图,活动图,状态图。
- 设计。类图,序列图,包图,状态图,部署图。
UML精粹2 - 开发过程的更多相关文章
- UML 运用于开发过程——总结
UML -- 统一的图形语言 用例图:需求捕获,测试依据类图:静态系统结构对象图:对象之间的关联构件图:构件之间的关联部署图:构建的物理部署 以上几种图的作用:描述系统结构 顺序图:捕获时间顺序协作图 ...
- uml精粹——11.活动图(及整个读书笔记分享)
11.活动图activity diagram 活动图是描写叙述过程化逻辑procedural logic.业务过程business process和工作流work flow的技术. 他和流程图fl ...
- UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图
状态机图state machine diagram 下面是状态图的一个例子(一个城堡中的秘密保险箱的控制面板). 转换transition包括3个部分:trigger-signature [guard ...
- UML精粹4 - 对象图,包图,部署图,用例
对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...
- UML精粹3 - 类图,序列图,CRC
类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...
- UML精粹1 - 简介
Martin的主页 http://martinfowler.com/. Pavel Hruby开发的visio模板,可以用来画UML图: http://phruby.com 简介 统一建模语言UML是 ...
- UML精粹学习 - 订单类结构图
Order Class Diagram of Martin Fowler's UML Distilled
- 《UML精粹》第三章 -类图的基本概念
第三章 类图:基本概念 类图可用来描写叙述系统中各种对象的类型.也可描绘出对象间各种各样的静态关系.此外.类图中也能够秀出类的性质(property)与操作(operation),以及可应用到对象间连 ...
- uml精粹——10.状态机图
10.状态机图state machine diagram 状态机图是常见的描写叙述一个系统行为的技术. 在面向对象的方法中,为单个类绘制一个状态机图来展示单个对象的生命周期行为. 见图10.1 图 ...
随机推荐
- wheel和staff分组
1.只有属于wheel组的用户才可以用su登录为root 2. 具体设置步骤如下: 1)修改 /etc/pam.d/su 文件,找到"#auth required /lib/security ...
- WCF初探-5:WCF消息交换模式之双工通讯(Duplex)
双工通讯Duplex具有以下特点: 1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作 2.消息交换过程中,服务端和客户端角色会发生调换 3.服务端处理完请求后,返回给客户端的不是reply ...
- JavaEE 7技术一览
参见此文: https://my.oschina.net/Barudisshu/blog/334903 perfect
- (BFS)poj2935-Basic Wall Maze
题目地址 题目与最基本的BFS迷宫的区别就是有一些障碍,可以通过建立三维数组,标记某个地方有障碍不能走.另一个点是输出路径,对此建立结构体时要建立一个pre变量,指向前一个的下标.这样回溯(方法十分经 ...
- [安卓]Android窗口、视图、布局
1.窗口全屏的两种方法: 转自:http://blog.sina.com.cn/s/blog_4c451e0e010133ab.html 设置全屏包括两个部分: 窗口全屏和Activity全屏.窗口全 ...
- 学会使用Constant常量或者Enum枚举
好多时候我们在数据库表中存放的类型是一个代号CHAR(1) 0,1,2,3等分别代表些什么. 那么你是怎么知道0,1,2,3代表什么的呢? 有的是建表,连接查询,但很少人用. 有的是在jsp页面c:i ...
- SharePoint\O365 "See also"功能 and site feature 激活\禁用小节
博客地址:http://blog.csdn.net/FoxDave 最近因为问题发现了SharePoint的"See also"功能,该功能是由SharePoint自动的Feat ...
- SharePoint 2013 开发——其他社交功能
博客地址:http://blog.csdn.net/FoxDave 上一篇讲了如何获取用户配置文件的相关属性,它属于SharePoint 2013社交功能的一个小的构成部分.社交功能是SharePoi ...
- OutputCache 如何使用本地缓存 【转】
注意!ASP.NET MVC 3 的一个 OutputCache 问题 在用 ASP.NET MVC 3 重写博客园网站首页时,特地留意了一下这个缓存问题,通过这篇博文分享一下. 在 ASP.NE ...
- 在Mac环境下跑汇编
今天汇编作业做到第七章,就想在Mac下跑自己的asm程序,看到了一个很好的教程: http://www.raywenderlich.com/37181/ios-assembly-tutorial 虽然 ...