第二部分 迭代、敏捷与进化简介
一、 什么是迭代开发:
1. 是UP和大多数其他现代方法中的关键实践。
2. 在这种生命周期方法中,开发被组织成一系列固定的短期(如三星期)小项目,称为迭代。每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。
3. 迭代的输出不是实验性的或将丢弃的原型,迭代开发也不是构造原型。与之相反,其输出是最终系统的产品子集。
4. 迭代开发的策略:第一次迭代用于一些核心功能,后续迭代扩展这些功能。
二、 迭代过程与项目开发过程中的变更
1. 在应付项目开发过程中的变更,迭代开发与传统式的瀑布方式有根本的区别。瀑布式过程是在实现之前,企图全面和正确的规格化、冻结,以及“签署”需求集和设计,以此与软件开发中不可避免的变更进行抗争。与其相反,迭代和进化式开发抱以接受变更和改写的态度,并以此为真正本质的驱动力。
2. 提倡瀑布方式一般源于推测和风闻,而非实践证实。与之相反,迭代和进化式开发为实际证据所支持,研究表明其失败的几率更小,与更理想的生产率和缺陷率相关。
3. 整个迭代进化式开发是一个震荡收敛的过程。早期迭代远离系统的“真实路径”。通过反馈和调整,系统向最适宜的需求和设计收敛。在后期的迭代中,很少会在需求上产生显著变化,但是存在这种可能性。这种后期的变化可能会给组织带来业务竞争优势。
三、 什么是敏捷方法及建模?
1. 敏捷开发方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性的价值和实践。
2. 敏捷建模的关键:建模(画UML图……)的目的是为了理解,而非文档化。
3. 多使用UML草图的快照。
第三部分 项目的初始阶段
初始阶段是建立项目共同设想和基本范围的比较简短的起始步骤。
一、什么是初始阶段
1. 初始阶段的目标并不是完成所有需求或产生可信的预算或项目计划。
2. 初始阶段是预见项目的范围、设想和业务案例。解决涉众是否就项目设想基本达成一致,项目是否值得继续进行认真研究。
二、初始阶段的持续时间
1. 一般不超过一周。如果预先就决定项目必须进行,那么时间会更短暂。这时候,初始阶段可能只包含第一次需求研讨会,并为第一次迭代制定计划,然后快速进入细化阶段。
2. 初始阶段更关注对基本范围的理解以及10%的需求,这主要是以文字表达。
第四部分 项目的需求部分---进化式需求
一、什么是需求
1. 需求就是项目必须提供的能力和必须遵从的条件。
2. 需求分析的最大挑战就是寻找、沟通和记录什么是真正的需要的,并能够清楚地讲解给客户和开发团体的成员。
二、进化式需求与瀑布式需求的区别
1. 瀑布式需求
l 信任全面的,早期的需求对项目的功效。
l 实际上,单一的瀑布式实践是导致项目失败的最大因素
l 实际上,65%的瀑布式定义的特性的作用是很小或无用的。
2. 进化式需求
l 统计表明,在整个项目过程中,平均有25%的需求是变化的。
l 欢迎需求的变更,作为项目的基本驱动力。
l 在大部分的需求被分析和定义前就开始进行编程和测试。
三、需求的类型: FURPS+ (此处的+是指一些辅助性的和次要的因素).
1. 功能性(Functional):特性、功能、安全性。
2. 可用性(Usability):人性化因素、帮助、文档。
3. 可靠性(Reliability):故障频率、可恢复性、可预测性。
4. 性能(Performance):响应时间、吞吐量、准确性、有效性、资源利用率。
5. 可支持性(Supportability):适应性、可维护性、国际化、可配置性。
四、需求的组织方式
1. 用例模型:一组使用项目的典型场景。主要用于功能(行为的)需求。(重点)
2. 补充性规格说明
3. 词汇表
4. 设想
5. 业务规则