常见的开发模式和不常见的开发模式

article/2025/9/25 2:24:04

1. 瀑布式开发

瀑布模型的优点:

1、为项目提供了按阶段划分的检查点。

2、当前一阶段完成后,您只需要去关注后续阶段。

3、可在迭代模型中应用瀑布模型。增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。

4、它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

瀑布模型的缺点:

1、在项目各个阶段之间极少有反馈。

2、只有在项目生命周期的后期才能看到结果。

3、通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

4、它的严格分级导致自由度降低,项目早期即作出承诺会导致对后期需求的变化难以调整且代价很大,这在需求不明晰并且在项目进行过程中可能有变化的情况下基本上是不可行的

瀑布式开发如下图所示。

2. 迭代式开发

迭代式开发也被称作迭代增量式开发迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

原理

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了定义、需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

优点

1.降低风险

2.得到早期用户反馈

3.持续的测试和集成

4.使用变更

5.提高复用性

开发特征

1.每次只设计和实现产品的一部分;一步一步地完成;每次设计和实现一个阶段,这叫作一个迭代。

2.在进行大规模的投资之前就解决了关键的风险分析。

3.使得早期的用户反馈在初始迭代中就能出现。

4.对各个目标里程碑提供了短期的焦点(阶段性的中心)。

5.对过程的测量是通过对实现的评定(而不仅仅是文档)来进行的。

6.可以对局部的实现进行部署。

3. 螺旋式开发

尤其注重风险分析阶段,适用于庞大且复杂,高风险的项目,“螺旋模型”的核心就在于不需要在刚开始的时候就把所有事情都定义的清清楚楚。轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。 

通常由四个阶段组成

1.制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。

2.风险分析:分析评估所选方案,考虑如何识别和消除风险

3.实施工程:实施软件开发和验证;

4.客户评估:评价开发工作,提出修正建议,制定下一步计划;

4. 敏捷软件开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用

 

 

方式:

1.首要任务是尽早地、持续地交付可评价的软件,以使客户满意。

2.乐于接受需求变更,即使在开发后期也是如此。敏捷软件开发能够驾驭需求的变化,从而赢得竞争优势。

3.频繁交付可使用的软件,交付的间隔越短越好,可以从几个月缩减到几个星期。

4.在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起。

5.围绕那些有推动力的人们来构建项目,给予他们所需的环境和支持,并且相信他们能够把工作做好。

6.开发团队及在开发团队内部进行最快速、有效的传递信息的方法是面对面交谈。

7.可使用的软件是进度的主要衡量指标。

8.提倡可持续发现。出资人、开发人员及使用者应该共同维持稳定的开发速度。

9.为了增强敏捷能力,应持续关注技术上的杰出成果和良好的设计。

10简洁,最小化那些没有必要投入的工作量是至关重要的。

11.最好的架构、需求和设计都源于自我组织的团队。

12.团队定期反思如何变得更有战斗力,然后相应地转变并调整其行为。

5.快速原型模型(Rapid-Prototype-Model)

概念

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

快速原型模型有点整合“边做边改”与“瀑布模型”优点的意味。

优点:

1、生命周期短

2、整合“边做边改”与“瀑布模型”优点

3、减少软件需求不明确带来的开发风险

4、适用于小型、交互型的系统,大型系统的某些部分

缺点:可能导致系统设计差、效率低、难以维护

6.增量模型(Incremental-Model

概念

在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。

增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

1、由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

2、在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

 

优点:

1、人员分配灵活,一开始不需要投入大量人力

2、先推出核心的产品,在后续增加相应的功能

3、增量能够有计划的管理技术风险

4、适用于需求经常变更的软件开发过程

缺点:

1.如果增量包之间存在相交的情况未很好的处理,则必须做全盘的系统分析

8、演化模型(Evolutionary-Model)

主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。

在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

“演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。这种分组并不是绝对随意性的,而是要根据功能的重要性及对总体设计的基础结构的影响而作出判断。有经验指出,每个开发循环以六周到八周为适当的长度。

9、喷泉模型(Fountain-Model)

以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

优点:

1、可以提高软件项目开发效率,节省开发时间,适用于面向对象的软件开发过程

缺点:

1、由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理

2、这个模型要求严格管理文档,使得审核难度加大,尤其是面对随时加入各种需求

10、智能模型(四代技术4GL)

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

11、混合模型(Hybrid-Model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。
 

 

5. devOps开发模式

DevOps旨在提高软件开发效率,协调开发、测试、运维之间的矛盾,让系统和开发体系更适应快速变化的需求。DevOps将重新定位开发、测试、运维的关系,通过建立一条流水线,代码从提交之后,交由流水线自动完成构建、测试、代码质量、安全检查、部署等工作。通过自动化的持续集成(CI)、持续部署(CD),安全、可靠、高效地实现应用程序快速上线,让新功能尽快拥抱市场。

devops链接:

https://www.freecodecamp.org/news/web-developer-roadmap/

总结:

对比了部分的模型方法

模型名称技术特点适用范围
瀑布式

简单,分阶段,阶段间存在因果关系,

各个阶段完成后都有评审,允许反馈,不支持;用户参与,要求预先确定需求

需求易于完善定义且不易变更的软件系统
迭代式

不要求一次性地开发出完整的软件系统,将软件

开发视为一个逐步获取用广需求、完善软件产品的过程

需求难以确定、不断变更的软件系统
螺旋式

结合瀑布模型、快速原型模型和迭代模

型的思想,并引进了风险分析活动

需求难以获取和确定、软件开发风险较大的软件系统
敏捷式

 更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用

 范围较广

快速原型模型

不要求需求预先完备定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化

需求复杂、难以确定、动态变化的软件系统
增量模型

软件产品是被增量式地一块块开发的,

允许开发活动并行和重叠

技术风险较大、用户需求较为稳定的软件系统
devops模式软件开发效率、协调开发、测试、运维之间的矛盾,让系统和开发体系更适应快速变化的需求相对于敏捷式更广;风险小

 eg:本文章只例举了常见的开发模式,还有极少数的开发模式。

该文章持续更新中。

望大佬相互指教,学习。


http://chatgpt.dhexx.cn/article/MEIybRNn.shtml

相关文章

软件开发的11种模式

软件开发的11种模式 1,边做边改模型(Build-and-Fix-Model) 在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。在这个模型中,开发人员拿到项目立即根据…

常见的开发模式模式

前言 主要是了解常见的开发模式,从而理解测试贯穿在整个软件研发过程中的定位。 一、常见的开发模式 引用林子老师梳理的开发模式,主要包括以下几种: 测试流程通常跟软件开发流程紧密相关,需要基于开发流程来定义。基于企业不同…

云手机虚拟服务器地址和端口,手机服务器地址端口号

手机服务器地址端口号 内容精选 换一换 当后台重新配置邮箱服务器等信息后,手机端WeLink一定要退出重新登录一次。我们常用的邮箱,比如:QQ邮箱、163邮箱、腾讯企业邮箱、网易企业邮箱、263企业邮箱等常见邮箱,可以参考常见问题 > 客户端-邮件里的“常见的IMAP邮箱配置方…

使用正则表达式验证手机号码

使用正则表达式验证手机号码 开发工具与关键技术:VS2015、正则表达式 作者:易金亮 撰写时间:2019.07.07在项目中,总会涉及到数据的新增,比如新增用户信息等,而说到新增用户信息,就离不开用户的…

安卓搭建虚拟服务器,安卓手机搭建云服务器

安卓手机搭建云服务器 内容精选 换一换 本文介绍使用云手机服务时需要了解的基本概念。云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机=云服务器+Android OS。您可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机的基础算力…

JS判断输入手机号码是否正确

JS判断输入手机号码是否正确 现在中国地区的号码 中国电信号段133、149、153、173、177、180、181、189、190、191、193、199 中国联通号段130、131、132、145、155、156、166、167、171、175、176、185、186、196 中国移动号段134(0-8)、135、136、137、138、139、1440、147、…

android qq账号登陆验证手机号码,注册QQ号如何跳过手机验证

QQ的安全性在逐步提高,而我们申请QQ的过程也越来越复杂了。许多用户不希望申请QQ时透露手机号码这类隐私信息。所以很少人使用需要手机验证的手机申请方式,所以电脑申请QQ成为主流,但电脑申请方式在申请过一次QQ号码之后(不论成功与否)就不能…

虚拟号码怎么开通?

虚拟码号的开通方式基本一样 一、首先是企业实名,上传企业的证明文件,法人证件。 二、然后是提出开号需求,号码数量,号码区域 三、然后缴纳费用 四、等待3-8个工作日开号 通过API或者SDK接口接入自己的系统,要不就…

自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听横向滚动功能

今日空闲花了点时间对以前自主实现的项目功能进行改进和优化, 其实一些界面的小功能有时候没实现过,也没经验类似项目功能经验,反而耗费的时间会更多。下面我所描述的界面功能就是我在对用RecyclerView控件不熟悉的情况下使用了HorizontalScr…

ScrollView/HorizontalScrollView常用技巧,附源码

ScrollView是ViewGroup的派生类,ViewGroup是View的派生类。 屏幕大小总是有限制的,对移动设备来说更是如此。当有很多内容需要显示的时候,一屏显示不完时,就需要使用滚动的方式。 ScrollView只能包含一个直接子vi…

Android 自定义 HorizontalScrollView 横向滑动效果

自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果。的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来展示少量的图片,应…

Android ScrollView、NestedScrollView、Horizo​​ntalScrollView 等

在这篇文章中,我们想看看几个滚动视图的变体或子类以及它们是如何使用的。以下是我们迄今为止涵盖的变体: ScrollView - 超类 NestedScrollView - 子类 Horizo​​ntalScrollView - 子类 StickyScrollView - 子类和第三方库。 ParallaxScrollView - 子类…

Android横向滑动加载更多的控件的实现---HorizontalScrollSlideView

Android横向滑动加载更多的控件的实现—HorizontalScrollSlideView 需求 之前公司业务要求做一个横向滑动的,可以加载更多的控件,第一时间想到的就是 RecyclerView 来实现 ,后面仔细想想滑动拦截不好控制等等 所以就换了个思路来实现了。思…

Android HorizontalScrollView 水平滑动 在listview上面动态添加图片

Android HorizontalScrollView 水平滑动 listview 上动态添加图片 最近遇到了个 在listview展示广告的需要动态添加图片 如图: 使用了 horizontalScrollView 在listview上进行添加 java代码: package com.baozi.bzhorizontalscrollview;impor…

HorizontalScrollView实现Gallery

从简便的方式,继承LinearLayout再布局了添加视图,使其左右滚动。 主界面Activity: package com.xmz.activity;import java.util.HashMap;import java.util.Map;import android.app.Activity;import android.os.Bundle;public class MainActivity extend…

Android中HorizontalScrollView的使用总结

HorizontalScrollView是Google推出的用来滚动查看视图的控件,已经替代了Gallery。 由于HorizontalScrollView继承自FrameLayout,这意味着你只能在它下面放置一个子控件,即在控件内部只能放一个字控件(一般使用LinearLayout&#…

Android控件——HorizontalScrollView使用(一)

1. HorizontalScrollView简单使用 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息;Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图…

android HorizontalScrollView讲解

前言 本章内容是android.widget.HorizontalScrollView,译为"横向滚动条",版本为Android 2.3 r1,翻译来自"Tina",感谢"Tina"为大家带来精彩的翻译稿 !期待你加入Android API 中文的翻译&…

Android中HorizontalScrollView的使用

由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。Android平台框架中为我们提供了诸如ListView、GirdView、ScrollView等滚动视图控件,这几个视图控件也是我…

Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38140505 自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果。的确HorizontalScrollView可以实现Gallery的效果,但是Horizo…