一、极限编程(Extreme Programming,XP)
XP是一个轻量级、灵巧、严谨周密的开发方法,它的价值观是交流,朴素,反馈和勇气,可理解为加强交流,从简单做起,寻求反馈,勇于实事求是。XP是一种类似螺旋式的开发方法,将复杂的开发过程分解为一个个相对简单的小周期,通过积极的交流,反馈等手段,使得开发人员和用户可以及时地调整开发过程。XP在一些对费用控制严格的公司中的使用是非常有效的。
二、水晶系列方法
水晶系列方法的目的是发展一种提倡“机动性”的方法,在于用最少的纪律约束而仍能成功的方法。水晶系列方法认为,每个项目都是独一无二的,因此需要根据项目的特定情况来定制方法和实践。水晶系列方法根据项目的大小、关键性和优先级分为不同的颜色,包括:
Crystal Clear:适用于小型团队(6人以下),重点在于频繁交付、反馈、个人安全感和技能提升。
Crystal Yellow:适用于稍大的团队(10-20人),在Crystal Clear的基础上增加了更多的结构和文档要求。
Crystal Orange:适用于中型团队(20-50人),需要更多的协调和跟踪机制。
Crystal Red:适用于大型团队(50-100人),通常涉及多个部门,需要更加正式的沟通和文档。
水晶系列方法强调的是项目管理和执行应该根据项目的具体情况来调整,而不是一成不变地遵循某一套固定的规则。
三、Scrum
Scrum侧重于项目管理,是一个迭代式增量软件开发过程,在Scrum中,会将所有需求按价值进行排序产生一个需求列表,根据此需求列表将开发过程分割为多个小周期,每个小周期完成N个优先级最高的需求,当所有需求结束时,即完成了最终的软件产品。Scrum的核心在于明确定义了可重复的方法过程,通过不断地冲刺(sprint),最终迭代式地完成所有需求。
四、特征驱动开发方法(Feature Driven Development, FDD)
FDD是一个迭代的开发模型,致力于短时的迭代阶段和可见可用的功能,在FDD中,一个迭代周期一般是两周。FDD认为有效的软件开发需要3个要素:人,过程和技术。其中有6种关键的项目角色以及5个核心过程:
角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家;
核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建。
五、动态系统开发方法(DSDM)
动态系统开发方法(Dynamic Systems Development Method,简称DSDM)旨在为项目提供稳定的交付节奏,并强调适应性、可持续性和风险管理。DSDM适用于需要快速迭代和频繁交付软件以响应市场变化的项目。DSDM的核心是快速、连续地交付可用的软件功能。这种方法通过将项目分解成一系列短周期的迭代来工作,每个迭代结束时都应交付一个可运行的软件产品。这些迭代通常被称为“冲刺”或“周期”。DSDM的五个基本原则包括:
业务价值驱动:确保项目团队关注那些能为客户带来最大业务价值的特性。
可持续速度:保持一个稳定的工作节奏,避免过度劳累,确保项目可以长期维持。
风险管理:识别潜在的风险,并采取措施来减轻它们。
增量发展:通过逐步构建和迭代来发展系统,确保每个迭代都有价值。
持续反馈:通过持续的反馈,确保项目团队对变化做出快速响应,并保持产品的方向正确。
DSDM包含以下主要阶段:
项目启动:确定项目范围、目标、关键干系人和期望。
需求迭代:与干系人合作,确定并优先排序需求,形成初步的架构和设计。
设计迭代:详细设计,准备第一个可运行的软件版本。
构建迭代:实际的编码和测试工作,每个迭代结束时都有可交付的产品。
交付:最终产品的交付和部署。
DSDM特别适用于那些需求不明确或不断变化的项目,因为它允许项目团队在开发过程中不断调整和适应。此外,DSDM的迭代和增量方法也有助于风险的早期识别和缓解。