自适应软件开发 - 生命周期
自适应软件开发源于快速应用开发 (RAD) 实践。团队方面也添加到这些实践中。从新西兰到加拿大的公司,针对各种项目和产品类型,都使用了自适应软件开发。
Jim Highsmith 于 2000 年出版了《自适应软件开发》一书。
自适应软件开发实践能够适应变化,并能够在动荡的环境中适应产品演变,而无需过多的规划和学习。
ASD 生命周期阶段
自适应软件开发与进化模型一样是循环的,阶段名称反映了复杂系统中的不可预测性。自适应开发生命周期中的阶段包括:
- 推测 (Speculate)
- 协作 (Collaborate)
- 学习 (Learn)
这三个阶段反映了自适应软件开发的动态特性。自适应开发明确地用涌现 (Emergence) 取代了确定性 (Determinism)。它不仅仅是生命周期的改变,更是管理风格的更深层次的改变。自适应软件开发具有动态的“推测-协作-学习”生命周期。
自适应软件开发生命周期关注结果,而不是任务,结果被识别为应用程序功能。
推测 (Speculate)
术语“计划”过于确定性,表明对预期结果具有相当高的确定性。对计划一致性的隐含和显式目标限制了管理者将项目引向创新方向的能力。
在自适应软件开发中,术语“计划”被“推测”取代。在推测过程中,团队并没有放弃计划,而是承认复杂问题中存在不确定性的现实。推测鼓励探索和实验。鼓励进行短周期的迭代。
协作 (Collaborate)
复杂的应用程序不是构建的,而是演变的。复杂的应用程序需要收集、分析和应用大量信息来解决问题。动荡的环境具有高信息流速率。因此,复杂的应用程序需要收集、分析和应用大量信息来解决问题。这导致了多样化的知识需求,只有通过团队协作才能处理。
协作需要能够共同努力以产生结果、共享知识或做出决策的能力。
在项目管理的背景下,协作描绘了在使用传统管理技术与创建和维护涌现所需的协作环境之间的平衡。
学习 (Learn)
生命周期中的“学习”部分对于项目的成功至关重要。团队必须不断增强他们的知识,使用以下实践:
- 技术评审
- 项目回顾
- 客户焦点小组
每次迭代后都应进行评审。开发人员和客户都检查他们的假设,并使用每个开发周期的结果来了解下一个方向。团队学习:
关于产品变更
关于产品开发方式的基本假设的更根本的改变
迭代需要简短,以便团队可以从小错误而不是大错误中学习。
推测-协作-学习周期作为一个整体
从上面给出的“推测-协作-学习”周期可以看出,这三个阶段是非线性的并且是重叠的。
我们从自适应框架中观察到以下几点:
如果没有学习就很难协作,如果没有协作就很难学习。
如果没有学习就很难推测,如果没有推测就很难学习。
如果没有协作就很难推测,如果没有推测就很难协作。