在认识到开发流程在某些情况下可能需要更多的灵活性后,基于简化控制方法和评估此做法中风险的机会,敏捷开发方法提供一个剪裁框架。剪裁程度取决于缩短项目周期的机会是否值得冒险去不按顺序或并行执行开发步骤。
与IID类似,敏捷开发亦因速度和适应性而区别于传统方法。敏捷开发在进行中确认。通过采用下列七种敏捷SE的关键实践,任何组织都可以提高其速度以达成客户满意。
1. 项目团队在定义明确的SE流程内理解、尊重、工作和行为。这一流程在组织内是系统性的,对于参与者是不容置疑的。
2. 项目执行期间,尽量缩短项目所用时间或减少人员分流。把握每次机会推进项目向前发展,特别是关键路径上的活动。
3. 所有关键参与者均通过物理或电子方式密切协作,其他参与者7天 ×24小时在线。
4. 对于自动生成的电子文档有一种很强的偏好。工程师依靠他们的工具和“电子工程笔记本”记录决策的根本原因。运行和复用的制品仅在必要时去做——而不是为了支持现有的制度或方针。笔记本是团队共同拥有且对所有人可用。
5. 通过正式、口头协议实现基线管理和变更控制是基于“作出承诺,保持承诺”的纪律——参与者彼此坚守责任。决策门协议通过有约束力的握手而确认。这种形式涉及的是行动的约束力,而不是文档的量。
6. 通过专家咨询、模型快速验证以及客户的紧密合作,完成机会的探索和风险的降低。软件开发是在快速开发环境中完成的,而硬件开发是在多学科模型工作场所中完成的。对获得专家帮助不应有阻碍或惰性;需要寻求而不是抵制。
7. 建设性的面对面文化贯穿于项目组织之中。任何人都应主动找问题并将其传递给最可能的解决者。任何问题都应得到解决。团队是成功的主体;这绝不是“别人的职责”。
敏捷开发原则(适于SE)如下:
● 最高的优先级是通过尽早地和持续地交付有价值的软件(以及其他系统元素)来满足客户。
● 欢迎变更需求,即使是在项目开发后期。敏捷流程利用需求变更帮助客户获得竞争优势。
● 不断交付可用的软件(以及其他系统元素),周期从几周到几个月不等,且越短越好。
● 在项目中业务人员与开发人员必须每天在一起工作。
● 善于激励项目人员,给他们提供所需环境和支持,并相信他们能够完 成任务。
● 在开发团队内部和在团队之间,最有效的传递信息的方法是面对面的交谈。
● 工作软件(以及其他系统元素)是进展的主要度量。
● 敏捷流程促进可持续的开发。项目方、开发人员和用户应能够维持一个恒久稳定的步调。
● 对技术的精益求精以及对设计的不断完善将提升敏捷性。
● 简单性——尽最大可能减少不必要的工作的艺术——这是精髓。
● 最佳的构架、需求和设计出自于自组织的团队。
● 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。