软件生存期模型是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。典型的软件生存期模型有瀑布模型、增量模型、快速原型模型、喷泉模型、螺旋模型、统一过程、敏捷开发模型等。
瀑布模型
1970年由Royce首先提出瀑布模型,20世纪80年代初,唯一被广泛接 受的生命周期模型,主要用于传统软件工程方法学的软件过程。
瀑布模型适用于功能、性能明确、完整无变化软件系统开发, 如操作系统、财务系统等。
瀑布模型 | 优点 | 缺点 |
• 迫使开发人员采用规范的方法 • 每个阶段必须提交的文档 • 每个阶段的产品都必须质量验证 | • 需求难开始完全确定 • 文档驱动,风险大 • 灵活性差,一旦修改损失惨重 |
快速原型模型
快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的子集。
该原型向用户展示待开发软件的部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
快速原型模型 | 优点 | 缺点 |
• 快速构建、容易修改 • 取代规格说明阶段,容易适应需求的变化 • 用户参与 • 能够处理模糊需求 | • 快速构建(弱功能) • 资源规划和管理较为困难 • 对开发环境要求高 |
增量模型
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
增量模型 | 优点 | 缺点 |
• 将待开发的软件系统模块化,可以分批次地提交软件产品 • 以构件为单位进行开发降低了软件开发的风险 • 开发顺序灵活 | • 要求待开发系统能够被模块化 |
螺旋模型
1988年,巴利·玻姆正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析。
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
螺旋模型 | 优点 | 缺点 |
. 风险分析 . 质量保证 | . 风险分析 . 对开发人员要求高 |
喷泉模型
喷泉模型是一种以用户需求为 动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
喷泉模型 | 优点 | 缺点 |
. 提高软件项目开发效率 . 节省开发时间 | . 难以管理项目 |
敏捷开发模型
2001年2月11日至13日,在美国犹他州瓦萨奇山雪鸟滑雪胜地,17个人聚到一起,交谈、滑雪、休闲,当然还有聚餐。他们试图找到共识,最终的成果就是《敏捷软件开发宣言》。
敏捷的核心思想
以人为本、适应变化。
敏捷12原则
1. 最高优先级的是:通过尽早和持续交付有高价值的软件,满足客户。
2. 欣然面对需求变化,即使是在开发阶段的后期,敏捷流程就是用变化来为客户获得竞争优势。
3. 频繁交付可工作的软件,从数周到数月,交付周期越短越好。
4. 在项目过程中,业务人员、开发人员必须每天在一起工作。
5. 以受到激励的个体为核心构造项目,为他们提供所需的环境和支持,信任他们可以把工作做好。
6. 最有效的、最高效的沟通方法是面对面的交谈。
7. 可工作的软件是衡量进度的首要标准。
8. 敏捷流程倡导可持续开发。客户、开发人员、用户要能够共同、长期维持步调(节奏)、稳定向前。
9. 持续地追求技术卓越和良好的设计,以此增强敏捷的能力。
10. 简单 -- 尽最大可能减少不必要的工作,简单是敏捷流程的根本。
11. 最佳架构、需求和设计,来自自组织型的团队。
12. 团队定期反思如何提升效率,并调节和调整自己的工作方式。