UML和模式应用学习笔记-2(迭代和进化式开发)
一:什么是迭代和进化式开发
1:迭代和进化式开发:通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明;
2:迭代方法与较高的成功率、生产率和低缺陷率具有关系;
3:软件开发过程描述了构造、部署以及维护软件的方式;
4:迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以遁环反馈和调整为核心驱动力,使之最终成为适当的系统;
5:因为反馈和调整使规格说明和设计不断进化,所以这种方法也称为迭代和进化式开发。
6:在项目开始为期三周的迭代中,可以用周一上午一个小时的时间与团队成员召开启动会议,明确本次迭代的任务和目标;
7:每次迭代都产生可执行的但不完整的系统,它不是已经准备好可以交付的产品。直到多次迭代(如10次或15次迭代)之后,系统才可能合格地用于产品部署;
8:在复杂、变更系统中,反馈和调整是成功的关键要素;
9:迭代提倡风险驱动与客户驱动相结合,早期的迭代目标要能够识别和降低最高风险,并且能构造客户最关心的可视化特性;
10:来自迭代N的反馈引起在迭代N+1中对需求和设计进行精化和调整;
每次迭代后系统是增量式增长的,最后是一个完整的产品
二:如何在迭代项目处理变更
1:瀑布式过程是在实现之前,企图全面和正确地规格化、冻结,以及“签署”需求集和设计,以此与软件开发中不可避免的变更进行抗争。
2:迭代和进化式开发抱以接受变更和改写的态度,并以此为真正本质的驱动力。
3:迭代开发并不是提倡不受控制的,明确了其构想或市场变化时如何平衡需求,一方面认同和稳定一组需求,另一方面接受需求不断变更的事实。
4:迭代快速反馈来自用户、开发人员和测试(诸如负载测试和可用性测试)的反馈。
5:迭代是通过一系列有序的构造->反馈->调整遁环向前进展。早期迭代中系统偏离“正解轨迹”的程度会大于后继迭代;
6:在后期迭代中,很少会在需求上产生显著变化,但是存在这种可能性。这种后期的变化可能会给组织带来业务竟争优势;
三:迭代开发的优点
1:减少项目失败可能性,较高的成功率、生产率和低缺陷率具有关系
2:在早期(而不是晚期)缓解高风险(技术、需求、目标、可用性等)
3:早期可见的进展
4:早期反馈、用户参与和调整,会关生更接近涉从真实需求的精化系统
5:可控复杂性,团队不会被“分析瘫痪”或长期且复杂的步骤所淹没;
6:一次涉代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去;
四:一次迭代的持续时间和时间定量
1:大部分迭方法建议迭代时间在2到6周之间,小步骤、快速反馈和调整是迭代开发的主要思想,迭代时间过长会破坏迭代开发的核心动机并增加项目风险。
2:仅一周的迭代时间不足以获得有意义的产出和反馈,若迭代时间大于6周,则复杂性会变得不可控制,反馈将延期;
3:迭代的一个关键思想是时间定量,如果看起来难以满足期限要求,那么建议从本次迭代中除去一些任务或需求,并将其分配在将来的迭代中而不是推迟完成日期;
五:什么是瀑布生命周期
1:瀑布(或顺序)生命周期过程中,试图在编程之前(详细)定义所有或大部分需求;研究表明瀑布模型和软件项目高失败率具有极大关系;
2:瀑布方法需求中45%的特性从未被使用,期早期时间表和估计与最终实际情况可相差400%;
3:不要让瀑布思维侵蚀迭代项目,初始化阶段进行大量的分析和建模是导致其失败的一个关键原因;
4:瀑布模型有如此的错误倾向是因为典型的软件项目在需求上会经历25%变更,对于大型项目,其变更率甚至高达35%到50%;
5:任何基于事物长期稳定这一假设所作出的分析、建模、开发或管理实践都是具有根本缺陷的,变更对于软件项目来说是永恒。
感谢您的阅读,坚持每天进步一点点,离成功就更进一步;希望本文对您有所帮助;
UML和模式应用学习笔记-2(迭代和进化式开发)的更多相关文章
- UML和模式应用学习笔记-1(面向对象分析和设计)
UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...
- C#学习笔记-----基于AppDomain的"插件式"开发
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...
- UML和模式应用3:迭代和进化式分析和设计案例研究
1.前言 如何进行迭代和进化式分析和设计?将采用案例研究的方式贯穿始终.案例研究所包含的内容: UI元素 核心应用逻辑层 数据库访问 与外部软硬构件的协作 本章关于OOA/D主要介绍核心应用逻辑层 2 ...
- UML-对象设计要迭代和进化式
1.在<如何面向对象设计>和<如何进行对象设计?>中,对如何迭代和进化式的设计对象做些总结: 1).轻量+简短 2).快速进入编码+测试 3).不要试图在UML中细化所有事物 ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- 《SQL 反模式》 学习笔记
第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
- JavaScript设计模式之策略模式(学习笔记)
在网上搜索“为什么MVC不是一种设计模式呢?”其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composite).所以我今天选 ...
随机推荐
- Codeforces 196 E. Tricky and Cleve Password
\(>Codeforces \space 196\ E. Tricky\ and\ Cleve\ Password<\) 题目大意 : 给出一个有 \(n\) 个结点,\(m\) 条边的连 ...
- Android消息机制——Handler
/**android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个MessageQueue(消息队列), * 但是MessageQueue被封装到Looper里 ...
- 37.递推:Pell数列
总时间限制: 3000ms 内存限制: 65536kB 描述 Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + ...
- bzoj1123 Blockade
Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...
- 实用在线小工具 -- Google URL Shortener
实用在线小工具 -- Google URL Shortener 当你想分享一些你觉得有趣的东西,但是那个链接太长,以至于贴上去一大片.比如在微博上分享一张图片,然后贴上去图片的链接,url ...
- python开发_tkinter
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用, 同样可以应用在Windows和Macint ...
- mmm-master漂移问题的分析
date:20140527auth:Jin 一.问题描述线上store应用,偶尔出现慢的现象.检查发现是writer角色在master-backup之前漂移检查mysql-log没有发现异常,也没前端 ...
- java类中属性的加载顺序,以及内存分配情况介绍
看下面例子及说明: /** 假如有外部类调用了该类,代码为:new StaticTest(); 那么下面是类属性的加载顺序 */ public class StaticTest{ public int ...
- 对jQuery的事件绑定的一些思考
jQuery的事件绑定 问题 首先我们看下面的一个非经常见的事件绑定代码: //example $('#dom').click(function(e){ //do something }); $('# ...
- Choosing an ORM strategy
One of the mistakes I see people make (and have made myself) is assuming that you must choose exactl ...