• 目录

    瀑布模型(面向文档的软件开发模型)

    演化模型

    螺旋模型

    增量模型

    构件组装模型

    统一过程(up)(迭代的软件过程,以架构为中心)

    敏捷开发模型


    瀑布模型(面向文档的软件开发模型)

场景:适用于需求稳定、明确的项目。

过程:需求分析、总体设计、详细设计、编码和调试、集成测试和系统测试。

特点:是一种严格遵循软件生命周期各个阶段的固定顺序的模型,每个阶段划分明确,都有固定文档或源程序流入下一个阶段。需求分析是一切活动的基础。

缺点

1. 由于需求不可能精确、完整的描述整个系统,造成后期维护工作繁重,这些维护工作大多都是在修正需求分析阶段引入的缺陷。

2. 难以适应变化,如果软件在后期出现需求变化,整个系统需要从头开始。

3. 交付时间长,需要等到所有阶段都结束才能交付产品,导致客户无法尽快确定需求是否满足。

4. 产生大量对客户无用的文档,确花费了大量人力,是一种重载过程。

  • 演化模型

场景:适用于用户需求不明确,且软件完善周期较长的项目。

特点:从初始的模型中逐渐演化为最终软件产品,是一种“渐变式”原型法。可以看作是若干次瀑布模型的迭代,在迭代的过程中得以演化和完善。

缺点

1. 需要对需求进行明确的拆分,能清晰识别需求边界。

2. 所有的产品需求一开始并不完全弄清楚,会给总体设计带来困难及削弱产品的完整性。

  • 螺旋模型

场景:项目规模庞大,复杂且高风险。

特点:是瀑布模型和演化模型的结合,并增加了风险分析(引入非常严格的风险识别、风险分析、风险控制),支持用户需求动态变化。

过程:需求定义、风险分析、工程实现、评审。

缺点:1. 需要具有相当丰富的风险评估经验和专业知识。

2. 过多的迭代次数会增加开发成本,延迟提交时间。

  • 增量模型

场景:在系统的技术架构成熟、风险较低的时候采用。

特点:提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度

策略

  • 增量发布

特点:将系统划分为若干个不同的版本,每个版本都是一个完整的系统,后一版本以前一版本为基础进行开发,扩充功能,版本间的增量必须是均匀的。

  • 原型法

特点:当用户需求不明确或技术架构中存在很多不可认知因素的时候,采用原型法。主要目的是获得精确的用户需求或验证架构的可用性,一般情况会在后期的开发中抛弃这个原型,重新实现完整的系统。

缺点:如何组织一个开放的结构使得该模型不会退化到建造修补模型。

  • 构件组装模型

特点:独立的、自包容的,构件之前通过接口相互协作。

过程:设计构件组装、建立构件库、构建应用软件、测试与发布。

优点

1. 构件的自包容性让系统更容易扩展

2. 更容易被重用,降低开发成本

3. 粒度更小,因此安排开发任务更加灵活。

缺点

  1. 设计不良的构件难以实现构件的优点,需要经验丰富的系统架构师。
  2. 考虑重用度时往往会对其他方面做出让步,如性能等。
  3. 组装应用程序时,要求程序要熟练掌握构件,增加研发人员学习成本。
  4. 第三方构建质量难以控制,可能会影响最终软件质量。
  • 统一过程(up)(迭代的软件过程,以架构为中心)

场景:一个通用的过程框架,适合于各种应用领域、组织水平、项目规模的项目。

过程:初始、细化、构建、交付。

  1. 初始阶段(目标里程碑):界定系统范围,明确系统目的,实现业务建模和需求分析。
  2. 细化阶段(架构里程碑):描述抽象的软件逻辑模型(分析),设计软件架构。
  3. 构建阶段(能力里程碑):完成系统构建(实施),并进行测试和部署。
  4. 交付阶段(发布里程碑):系统完全成熟或产品化,进入下一个阶段,对产品进行重构、修改、测试和部署。

优点

  1. 采用强大的UML建模语言,能够在团队中形成统一规范和模板。
  2. 有很多成熟的商业软件提供整个开发周期的相关支持,极大的降低开发和管理成本,提高开发效率。

缺点:虽然UP是一个迭代的开发模型,但是本身并不属于敏捷开发,未经裁剪的up是一个重载过程。

  • 敏捷开发模型

场景:适用于小规模软件或者小团队开发。

特点:是一种以人为核心、迭代、循序渐进的开发方法。

七种常见软件开发模型相关推荐

  1. 一定要理解的两种常见软件开发体系结构(CS/BS结构)的区别!!!

    CS/BS架构 ==黄色标注部分重点注意== CS结构 BS结构 CS结构与BS结构比较 ==有问题可以在评论指正,欢迎讨论,谢谢大家!!== 黄色标注部分重点注意 CS结构 •CS(Client/S ...

  2. 几种常见的软件开发模型:瀑布模型,快速原型模型、增量模型、螺旋模型、喷泉模型

    瀑布模型 瀑布模型是20世纪80年代之前最受推崇的软件开发模型,它是一种线性的开发模型,具有不可回溯性.开发人员必须等前一阶段的任务完成后,才能开始后一阶段的工作,并且前一阶段的输出往往就是后一阶段的 ...

  3. 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动

    瀑布模型( waterfall model ): 又被称为经典生命周期(classic life cycle ),它提出了一个系统的.顺序的 软件开发方法. 瀑布模型是出现得比较早的软件开发模型. 在 ...

  4. 软件测试之软件开发模型

    一. 软件开发模型 1 为什么学习软件开发模型 了解开发能够更好的有针对性的做好测试. 2 什么是软件开发模型 软件开发生命周期模型是软件产品从最初构思到退役的过程. 3 常见的开发模型  大爆炸模 ...

  5. 基本软件开发模型:瀑布模型、V型模型、迭代模型、增量模型、螺旋模型、大爆炸模型、敏捷模型、原型模型、W模型 特点分析与总结

    瀑布模型 在瀑布模型中,开发过程是线性的.任务和阶段按严格顺序一个接一个地完成.进度平稳地向下流动,就像瀑布上的水一样. 将软件生命周期划分为制定计划.需求分析.软件设计.程序编写.软件测试和运行维护 ...

  6. 七种常见的数据分析法之:可行域分析

    导读 福格模型的触发有效区,我们就将其称之为可行域.那么,可行域分析该怎么用呢? 大数据产业创新服务媒体 官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC ...

  7. 【软考点点】软件开发模型

    软件开发模型是软考上午题中必考的一个知识点.给出一定的条件,让我们判断属于哪一种开发模型.     典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型 ...

  8. 七种常见的数据分析方法拆解

    数据分析一直是互联网人辨别方向的不二法门,我们通过对数据的观测来判断事物的发展趋势,也常常利用数据的思维来辩证的为决策做参考. 下面就给大家详细拆解七种常见的数据分析法,让我们的数据分析少走弯路. 0 ...

  9. 算法中七种常见的时间复杂度

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

最新文章

  1. 窗体和控件使用中的注意事项有哪些?
  2. android ndk r8d,(Android) NDK
  3. Python语言编程之正则表达式模式
  4. delphi调用c#写的webservice中文出现乱码的问题
  5. leetcode175. 组合两个表(SQL)
  6. java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition failed)
  7. 学python可以做什么职业-python学完之后比较适合哪些职业工作呢?
  8. JVM中也有并发GC,CMS机制
  9. xp计算机关闭139端口,关闭139端口,小编告诉你如何关闭139端口
  10. 微星主板rgb_微星10款B550主板集体发布:标配PCIe 4.0、支持Zen3
  11. php中hexdec,PHP hexdec()函数
  12. rust发射台主楼_各专业分类词库(完全).doc
  13. 人从哪里来又到哪里去
  14. 2022年毕业生求职找工作青睐哪个行业?
  15. 【DKN】(七)dataset.py【未完】
  16. java中换行字符怎么用?
  17. Google优化排名方法
  18. 认识 MongoDB 一篇文章就够了
  19. 从大三开始奋发的程序员面临新的困惑……
  20. 5G前夜,TCL瞄准8K

热门文章

  1. 【人脸识别】基于KL变换人脸识别含Matlab源码
  2. Allegro软件元器件对齐功能
  3. Dell电脑安装系统时看不到固态硬盘的解决方案
  4. LogicalDOC含有中文字符的各种报错
  5. Cisco之show ip arp 与 show mac-address-table
  6. 脱壳--02.exe
  7. 注会是计算机考试吗,注会考试可以自带计算器么 这几点千万要注意
  8. windows VC2010编译libwebsockets
  9. 项目实训(校园互助平台)
  10. ExpRe[29] Windows下的“bootstrap”深度神秘过程