一、敏捷软件开发
1. 出现原因
(1)软件开发新挑战(快速进入市场、需求快速变化、技术快速发展)
(2)传统软件开发方法(强调文档、过程,开发人员负担过重)
(3)重载
2. 敏捷软件开发联盟(Agile联盟)
价值观:
个人和交互高于过程和工具。
可运行软件高于详尽的文档。
与客户协作高于合同(契约)谈判。
对变更及时做出反应高于遵循计划。
指导原则:
尽早不断地向客户提交有价值的软件
欢迎变化的需求
尽快、不断地发布可运行软件
业务人员和开发人员必须在一起工作
以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,并充分信任他们
面对面交流
测量项目进展的首要依据是可运行的软件
敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度
应时刻关注技术上的精益求精和好的设计, 以增强敏捷性
简单化是必不可少的,这是尽可能减少不必要工作的艺术
最好的构架、需求和设计出自于自我组织的团队
团队要定期反思怎样才能更有效,并据此调整自己的行为
适用范围:
需求不确定、易挥发
有责任感和积极向上的开发人员
用户容易沟通并能参与
典型方法:
Extreme Programming (简称XP)
SCRUM
Crystal Methodologies (简称Crystal)
Feature Driven Development(简称FDD)
Dynamic Systems Development Methodology(简称DSDM)
Adaptive Software Development(简称ASD)
Pragmatic Programming等
Crystal(水晶法):
它认为每一个不同的项目都需要一套不同的策略、约定和方法论。通过更好地交流和经常性地交付, 软件生产力得以提高,因为它较少需要中间工作产品。
SCRUM(并列争球法):
它使用迭代的方法,其中把每30天一次的迭代称为一个“冲刺(sprint)”,并按需求的优先级别来实现产品。多个自组织和自治小组并行地递增实现产品。协调是通过简短的日常情况会议来进行的,就像橄榄球中的 “并列争球(scrum)” 。
ASD(自适应软件开发):
它有6个基本原则。在该方法中,有一个使命作为指导,它设立项目的目标,但并不描述如何达到这个目标。特征被视作客户价值的关键点,因此项目是围绕着构造的构件来组织并实现特征的。过程中的迭代是很重要的,因此 “重做”与“做”同样关键,变化也包含其中。同时风险也包含其中,它使开发人员首先跟踪最艰难的问题。
XP方法:
适用于10人以下项目组、开发地点集中的场合,广泛用于需求模糊和挥发性强的场合。
四个价值观:
交流 简单 反馈 勇气 (谦逊)
12个核心实践:
⒈完整的团队 ⒉计划对策(发布计划和迭代计划) ⒊系统比喻
⒋小发布 ⒌测试 ⒍简单设计 ⒎结对设计(两个人,一个写一个检查)
⒏设计改进 ⒐持续集成 ⒑代码全体共有 ⒒编码标准 ⒓可持续步调
XP方法开发过程:
探索阶段:
主要工作是开发初始的用户故事 和体系结构骨架。
计划阶段:
是根据用户故事描述的需求、系统体系结构骨架和系统比喻来制订迭代计划和发布计划。
迭代到发布阶段:
根据迭代和发布计划,开发满足指定用户故事需求的软件,并与前面已完成的软件版本集成,得到软件的一个新版本。
产品化阶段:
确认迭代开发的软件已经做好进入产品化的准备。
维护阶段:
维护阶段涵盖了计划阶段、迭代到发布阶段和产品化阶段
通常这个阶段主要包括面向产品的活动,如系统的运行和支持。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!