UML和模式应用2: 迭代、进化和敏捷
1.前言
本章主要介绍迭代、敏捷开发及UP(统一过程)的基本概念
2.基本术语
Items | Note |
软件开发过程 | 描述了构造、部署及维护软件的方式 |
迭代开发 | 是一种软件开发过程的生命周期模型,依赖短快的开发步骤、反馈、改写不断明确需求和设计 |
统一过程(UP) | 一种迭代开发实践,是流行的构造面向对象系统的迭代开发方法,鼓励引进其它迭代方法中的有用实践 |
敏捷开发 | 多种软件开发项目管理方法的集合,敏捷开发要比迭代开发包含的内容宽泛 |
表 基本术语说明
软件开发过程、迭代开发、统一过程的关系:
. 迭代开发描述一种软件开发过程
. 统一过程是迭代开发的的代表性的实践
3. 迭代开发
- 迭代开发的特点
. 开发被组织成一些短期固定的小项目,称为迭代
. 每次迭代都产生经过测试、集成及可执行的局部系统
. 每次迭代都有各自的需求分析、设计、实现和测试活动
. 迭代生命周期基于对多次迭代的系统持续扩展和精化,以循环反馈和调整为核心驱动力
. 反馈和调整使得规格说明和设计不断进化
. 迭代开发是构造-反馈-调整的有序过程
. 迭代开发要求一开始只用较少的时间进行建模设计,用剩余的大部分时间完成需求分析、设计、实现和测试的迭代式开发
. 迭代开发的每次迭代是最终系统的产品子集
- 如何在迭代中处理变更
. 每次迭代选择一小组需求,并快速设计、实现和测试,这样可以快速的得到反馈,及时对系统做出调整
- 一次迭代持续时间
. 一次迭代时间建议控制在2~6周,时间太短不利于收集反馈,时间太长破坏了循环反馈和调整的核心驱动力,短时迭代为上
- 迭代时间定量
. 迭代时间定量选定好后,将依据时间定量进行集成、测试和稳定局部系统,推延时间则违约
. 如果有些需求难以达成,则将此需求推迟到将来的迭代中,而不是项目的延期
- 警惕瀑布模型
. 瀑布模型特点:编程之前详细定义所有或大部分需求,并创建出完整的设计,同时试图在开始前定义可靠的时间或计划表。瀑布模型错误的假设规格说明是稳定的和可预知的
. 杜绝瀑布模型:在迭代中出现在开发前确认大部分需求,编程前试图创建完整、详细的规格说明或UML模型和设计,说明迭代中出现了瀑布模型行为
- 反馈和改写的重要性
. 早期开发中的反馈,有助于开发人员理解规格说明,客户演示也有助于精化需求
. 测试中的反馈,有助于开发人员精化设计或模型
. 来自团队处理早期的反馈,有助于简化时间表
. 来自市场和客户的反馈,有助于重新定义下一次迭代实现的优先级
4. UP迭代开发
. UP提倡风险驱动和客户驱动相结合的迭代计划,早期的迭代目标是识别和降低最高风险,并构造客户最关心得可视化特性
. 风险驱动迭代开发早期的迭代致力于核心架构的构造、测试和稳定
5. 敏捷方法
- 敏捷方法的定义
. 敏捷方法都具备进化式精化的计划、需求和设计的短时间定量迭代,除此还倡导反映简易、轻量、沟通、自组织团队等更多敏捷性的实践和原则
. scrum敏捷方法和极限编程(XP)都是敏捷方法的一种实践,前者实践包括公共项目工作室和自组织团队,后者实践包括结对编程和测试驱动开发
- 敏捷宣言
个体和迭代,超越过程和工具;
代码,超越完整的文档
客户协助,超越合同谈判
响应变更,超越履行计划
- 敏捷原则(以持续性交付有价值的软件为最高纲领)
1. 优先级最高的是,通过早期和持续性的交付有价值的软件来满足客户;
2. 欢迎需求变更;
3. 以两周或两月为周期,频繁的交付可运行的软件,首推较短的时间定量;
4. 在整个项目开发过程中,每天开发人员与业务人员都要合作;
5. 由个体推动项目的建设,为个体提供帮助;
6. 面对面交谈来传递信息;
7. 衡量进展的最重要尺度是可运行的软件;
8. 敏捷过程提倡可持续性的开发,(因此以框架设计为优先?);
9. 发起人、开发者和用户要步调一致;
10. 不断关注技术上优越的设计会提高敏捷性;
11. 简洁最重要,尽量减少工作量;
12. 最佳的架构、需求和设计来自于自组织的团队;
13. 团队要定期反省如何使工作更有效率,然后响应的调整行为
- 敏捷建模
. 建模的主要目的是为了理解问题,为良好的OO设计快速探索可选方法和途径
. 敏捷方法采用如上思想的建模,称为敏捷建模
. 敏捷建模的有用实践:
(1)敏捷方法都包含重要的建模期;
(2)建模和模型的目的是为了理解和沟通
(3)只对不常见、困难的一小部分问题建模和应用UML
(4)尽量使用简单的工具,如使用UML草图来建模,可以快速理解内部协作,为参与者提出问题和达成一致提供环境;
(5)结对建模,发现、理解和共享大家的理解
(6)并行的创建模型
(7)使用简单常用的UML元素
(8)模型图只是设计的一次探索,而非最终的设计
(9)开发者为自己进行OO设计建模
6. 敏捷UP
- 敏捷UP的定义和主要应用原则
. UP采纳和应用可适应性和轻量级的精神称为敏捷UP
. 敏捷UP的应用原则:
(1)推荐使用UP活动和制品的简集,选择关键的UP活动和制品;
(2)UP是迭代和不断进化的
(3)敏捷建模使用UML
(4)制定整个周期包括哪些阶段,并估计结束日期,并对其中一个迭代制定详细计划
- 敏捷UP应用的其它关键原则
早期迭代中解决高风险和高价值的问题
不断让用户参与评估和反馈需求
早期迭代中建立内聚的核心架构?
经常测试
适当的地方使用用例
进行一些可视化建模
认真管理需求
实行变更请求和配置管理
7. UP的阶段与科目
7.1 UP的阶段
UP阶段 | 主要工作 |
初始 |
大体上的构想,业务案例,范围,和模糊评估。定义系统的业务模型,确定系统的范围; 此阶段不是需求阶段,而是研究可行性问题 |
细化 |
已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评估; 此阶段迭代的实现核心架构并解决高风险问题 |
构造 | 对遗留下的风险较低和比较简单的元素进行迭代实现,准备部署 |
移交 | 进行系统部署,系统测试,最终移交给用户 |
表 UP阶段及主要工作
图 UP中面向进度表的术语
从上图可以看出:
(1)迭代主要发生在细化阶段、构造阶段和移交阶段;
(2)细化阶段主要完成核心架构和高风险任务的迭代,同时也进行少量的实现,相对构造阶段需求和设计的工作占多,实现占少;
(3)构造阶段主要完成细化阶段迭代的决策实现、测试与发布,同时完成遗留的低风险任务的迭代,相对细化阶段实现的工作占多,需求和设计的工作占少;
(4)移交阶段在每次构造迭代完成后移交给客户使用
7.2 UP的科目
UP科目 | 制品 | 说明 |
业务建模 | 领域模型 | 应用领域中重要概念的可视化 |
需求 | 用例模型和规格说明 | 用例模型捕获功能需求和非功能需求 |
设计 | 设计模型 | 对软件对象进行设计 |
表 UP科目的制品及说明
图 多次迭代中UP科目的工作量分布
全部的UP科目如上图竖列显示,其中业务建模、需求和设计是本书重点关注的内容。
UP科目和UP阶段有如下的关系:
(1)一次迭代的工作会遍历大部分或全部的科目;
(2)这些科目的工作量会随着迭代而发生变化,早期迭代倾向于需求和设计,后期迭代倾向于实现、测试和部署
(3)细化阶段的迭代倾向于相对高级的需求和设计工作;构造阶段的迭代倾向于实现
7.3 UP科目与制品的关联
图 UP科目与制品及制品间的关系
8. 总结
通过如上的学习,总结如下的表:
UP阶段 | 主要工作 | 是否参与迭代 |
初始阶段 | 完成可行性论证 | 否 |
细化阶段 | 注重架构和高风险问题的需求和设计,以及少量实现 | 是 |
构造阶段 | 细化阶段的大部分实现,以及剩余低风险问题的需求分析和实现 | 是 |
移交阶段 | 将最终软件产品的子集交付给客户试用 | 是 |
表 UP阶段的主要工作
9. 参考文档
[1] 统一过程模型(UP)
UML和模式应用2: 迭代、进化和敏捷的更多相关文章
- UML和模式
UML和模式应用学习笔记-2(迭代和进化式开发) 一:什么是迭代和进化式开发 1:迭代和进化式开发:通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明: ...
- 《UML和模式应用(原书第3版)》目录
学习 <UML和模式应用(原书第3版)>目标: 理解OOA/D思想 如何使用UML建模 如何使用设计模式 如何设计分层架构 目录: 第1部分 绪论 第1章 面向对象分析和设计 第2章 迭代 ...
- 《UML和模式应用》读书笔记(一)
一.绪论 1. 面向对象分析和设计 1.1 什么是分析和设计 分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案. 设计(design)强调的是满足需求的概念上的解决方案,而不是其 ...
- UML和模式应用1: 面向对象的分析与设计
1.基本术语说明 items note OOA/D 面向对象的分析与设计 UML 描述.构造和文档化系统制品的可视化语言 模式 问题解决方案的公式 2. 本书的主要内容 本书的主旨是对应用了UML和 ...
- uml和模式01
// */ // ]]> uml和模式01 1. UML 2. 用例图 3. 用例和类的关系 4. 类图 1 UML 模型语言(Modeling Language 检查ML)是一种设计语言,人们 ...
- UML和模式应用学习笔记-1(面向对象分析和设计)
UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...
- 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别
瀑布式开发.迭代开发,区别[都属于,生命周期模型] 两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到 ...
- UML和模式应用3:迭代和进化式分析和设计案例研究
1.前言 如何进行迭代和进化式分析和设计?将采用案例研究的方式贯穿始终.案例研究所包含的内容: UI元素 核心应用逻辑层 数据库访问 与外部软硬构件的协作 本章关于OOA/D主要介绍核心应用逻辑层 2 ...
- UML和模式应用5:细化阶段(7)---从需求到设计迭代进化
1.前言 迭代开发中,每次迭代都会发生从以需求或分析为主要焦点到以设计和实现为主要焦点的转变 分析和面向对象的分析重点关注学习做正确的事,理解案例重要目标,规则和约束 设计工作强调正确的做事,熟练设计 ...
随机推荐
- 51Nod - 1107 斜率小于0的连线数量
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...
- emwin之在WM_INIT_DIALOG分支下使用带触发功能的函数的程序框架
@2018-08-29 [小记] 为避免在窗口创建时由于使用了带触发功能的函数导致执行一些在初始化过程中不允许的操作,特整理一个流程架构 --① 定义一个初始化完成的标志 unsigned ; --② ...
- Word Ladder - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Word Ladder - LeetCode 注意点 每一个变化的字母都要在wordList中 解法 解法一:bfs.类似走迷宫,有26个方向(即26个字 ...
- 洛谷 P3299 [SDOI2013]保护出题人 解题报告
P3299 [SDOI2013]保护出题人 题目描述 出题人铭铭认为给SDOI2012出题太可怕了,因为总要被骂,于是他又给SDOI2013出题了. 参加SDOI2012的小朋友们释放出大量的僵尸,企 ...
- ubuntu 14.04下使用fcitx时将caps lock映射为ctrl
在~/.xprofile中加入 setxkbmap -option caps:ctrl_modifier 要弄成全局的就在 /etc/X11/Xsession.d/ 里面找个文件塞进去. archli ...
- cf1063B Labyrinth (bfs)
可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时 然后判一判,bfs就好了 dfs会T惨... #include<bits/stdc++.h> ...
- 【bzoj1568】 JSOI2008—Blue Mary开公司
http://www.lydsy.com/JudgeOnline/problem.php?id=1568 (题目链接) 题意 在线维护若干条直线,询问一些横坐标上的最高直线的纵坐标. Solution ...
- spring aop 获取request、response对象
在网上看到有不少人说如下方式获取: 1.在web.xml中添加监听 <listener> <listener-class> org. ...
- Object,equals,toString
一.Object类 说明:Object类是Java中所有的类的直接或者间接的父类(基类). 该类中定义的是所有的类中的都有的的功能. 位置:可以从API中查找. 二.Object类之 equals 方 ...
- 关于阿里云Centos服务器搭建Java网站不能访问的问题
首先阿里云提供的手册是没问题的 手工搭建 然后我在地址栏输入服务器地址之后总是提示无法访问! 输入命令 netstat -tunlp,80端口确实是在监听(这里不是8080,因为我在tomcat的配置 ...