软件工程 |敏捷开发模型
在早期,迭代瀑布模型非常流行来完成一个项目。但是现在开发人员在使用它开发软件时面临着各种问题。主要困难包括在项目开发期间处理来自客户的变更请求以及纳入这些变更所需的高成本和时间。为了克服瀑布模型的这些缺点,在 1990 年代中期提出了敏捷软件开发模型。
敏捷模型的主要目的是帮助项目快速适应变更请求。因此,敏捷模型的主要目的是促进项目的快速完成。完成这项任务需要敏捷性。敏捷性是通过使流程适合项目来实现的,消除对特定项目可能不是必需的活动。此外,避免任何浪费时间和精力的事情。
实际上敏捷模型是指一组开发过程。这些过程共享一些基本特征,但它们之间确实存在某些细微差别。下面给出了一些敏捷 SDLC 模型:
- 水晶
- 亚特恩
- 功能驱动开发
- Scrum
- 极限编程 (XP)
- 精益发展
- 统一流程
在敏捷模型中,需求被分解成许多可以增量开发的小部分。敏捷模型采用迭代开发。每个增量部分都是在一次迭代中开发的。每次迭代都旨在小型且易于管理,并且可以在几周内完成。一次为客户计划、开发和部署一个迭代。没有制定长期计划。
敏捷模型是迭代和增量过程模型的组合。敏捷 SDLC 模型涉及的步骤是:
- 需求收集
- 需求分析
- 设计
- 编码
- 单元测试
- 验收测试
完成一次迭代的时间称为时间盒。时间框是指向客户交付迭代所需的最长时间。因此,迭代的结束日期不会改变。尽管必要时开发团队可以决定在时间盒内减少交付的功能以按时交付。敏捷模型的核心原则是在每个时间盒之后向客户交付增量。
敏捷模型的原则:
- 为了在开发过程中与客户建立密切联系并清楚地了解各种需求,每个敏捷项目通常都会在团队中包含一名客户代表。在每次迭代结束时,利益相关者和客户代表审查所取得的进展并重新评估需求。
- 敏捷模型依赖于有效的软件部署,而不是全面的文档。
- 每隔几周向客户代表频繁交付软件的增量版本。
- 鼓励并有效地整合来自客户的需求变更请求。
- 它强调拥有高效的团队成员,并更加重视加强他们之间的沟通。人们意识到,可以通过面对面的交流而不是通过正式文件的交换来增强开发团队成员之间的交流。
- 建议开发团队的规模应保持较小(5 至 9 人),以帮助团队成员有意义地进行面对面的交流并拥有协作的工作环境。
- 敏捷开发过程通常部署结对编程。在结对编程中,两个程序员在一个工作站上一起工作。一个负责编码,另一个在输入代码时检查代码。两个程序员每隔一小时左右切换一次角色。
优点:
- 通过结对编程产生编写良好的紧凑程序,与单独工作的程序员相比,错误更少。
- 它减少了整个项目的总开发时间。
- 客户代表在每次迭代后了解更新的软件产品。因此,如果需要,他可以轻松更改任何要求。
缺点:
- 由于缺乏正式文件,这会造成混乱,并且在不同阶段做出的重要决定可能随时被不同的团队成员误解。
- 由于缺乏适当的文档,当项目完成并将开发人员分配到另一个项目时,已开发项目的维护可能会成为问题。