常见的软件开发模型有:1、瀑布模型;2、快速原型模型;3、渐增模型;4、喷泉模型;5、迭代模型;6、敏捷开发模型。其中,使用瀑布模型开发时是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。
1、瀑布模型
瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么较好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
优点:
- 原理简单,容易掌握
- 各阶段间都有验证和确认环节,以便进行质量管理
- 主要用于支持结构化方法
缺点:
- 缺乏灵活性,不能适应用户的需求变化
- 缺乏演化性,返回上一级的开发需要付出十分高昂的代价
- 是线性的软件开发模型,回溯性差
使用场合:
- 适合于软件需求比较明确或很少变化,且开发人员可以一次性获取到全部需求的场合
- 适合开发技术比较成熟,工程管理比较严格的场合
- 一般用于低风险的项目,适合开发人员具有丰富的经验
2、快速原型模型
快速原型是快速建立起来的可以在计算上运行的程序,是软件的一个早期可运行的版本,它的功能是最终产品的子集。用途主要是获取用户的真正的需求。
优点:
- 增强了开发者于用户间的交流,有助于满足用户的真实需求
- 用户可及早得到有用的产品,可及早发现问题,随时纠正错误
- 减小技术、应用风险,可降低开发费用,缩短开发时间
缺点:
- 缺乏丰富而强有力的软件工具和开发环境
- 对设计人员及开发环境要求较高
- 难于做到彻底测试,更新文档较为困难
适用场合:
- 预先不能确切定义需求的软件系统,或需求多变的系统
- 开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握性不大
- 原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型中。
3、渐增模型
渐增模型也叫增量模型,其实质上是分段的线性模型,是一种非整体开发模型,渐增模型把软件产品作为一系列增量构件来设计、编码、集成和测试,在项目开发过程中以一系列的增量方式来逐步开发系统。
优点:
- 可分批次提交软件产品,方便用户及时了解软件开发进展情况,及早发现问题。
- 以组件为单位进行开发,降低了软件开发的风险。
- 开发顺序灵活,优先级较高的服务首先交付。
缺点:
- 由于对整个软件系统的需求没有一个完整的定义,会给总体设计带来麻烦。
- 在把每个新的增量构件集成到现有软件结构中时,必须不破坏原来已开发出的产品。
- 软件的体系结构必须是开放的,即向产品中加入新构件的过程必须简单、方便。每次增量开发的产品都应当是可测试的,可扩充的。
适用场合:
- 软件产品可以分批次地进行交互
- 待开发的软件系统能够被模块化
- 软件开发人员对应用领域不熟悉、难以一次性地进行软件开发时。
- 项目管理人员把握全局的水平较高时
- 对软件需求把握不准确、设计方案有一定风险的项目
4、喷泉模型
喷泉一词体现了迭代和无间隙特性,迭代是指开发软件系统时,某些部分经常要重复多次,相关功能在每次迭代中随之加入演进的系统。
特点:
- 各阶段相互重叠,反映了软件过程的并行性
- 以分析为基础,资源消耗呈塔形,在分析阶段消耗的资源非常多。
- 反映了软件过程迭代的自然特性,从高层返回低层无资源消耗
- 强调增量开发,依据分析一点、设计一点为原则,不要求一个阶段完成,整个过程是一个迭代的逐步提炼过程。
5、迭代模型
迭代模型是在原型和瀑布模型的基础上发展而来的模型,具有两者的优点,同时增加了风险分析。每一次迭代都包括了需求分析、设计、实现与测试等过程,采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。是目前采用比较多的模型。
与传统的瀑布模型相比较,迭代过程具有以下优点:
- 降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
- 降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
- 加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
- 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
6、敏捷开发模型
敏捷开发模型特点是“快速”,主要强调面对面沟通,偏向于人与人之间的交流,将精力集中在可执行的程序上,强调了原型、模型、demo等的重要性,此外也比较看重团队合作和团队激励,同时关注变化,要有超强的适应能力。敏捷软件开发要注意项目规模,如果软件开发规模庞大,成员之间沟通交流成本上升,所以敏捷开发并不适用于大型的软件开发项目,而比较适合一个组的团队使用。
敏捷原则:
- 我们的较高目标是,通过尽早和持续地交付有价值的软件来满足客户。
- 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
- 要持续交付可用的软件,周期从几周到几个月不等,且越短越好。
- 项目过程中,业务人员与开发人员必须在一起工作。
- 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
- 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
- 可用的软件是衡量进度的主要指标。
- 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
- 对技术的精益求精以及对设计的不断完善将提升敏捷性。
- 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
- 优异的架构、需求和设计出自于自组织的团队。
- 团队要定期反思如何能够做到更有效,并相应地调整团队的行为。
延伸阅读
软件开发模型
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。
文章标题:常见的软件开发模型有哪些,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34400