系统分析师-软件开发模型总结

前言

软件工程模型也称软件开发模型。它是指软件开发全部过程、活动和任务的结构框架,通过该模型能清晰、直观地表达软件开发全过程,明确地规定要完成的主要活动和任务,它奠定了软件项目工作的基础


一、瀑布模型(Waterfall Model)

瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
适用于需求明确的项目,一般表述为需求明确、或二次开发,或者对于数据处理类型的项目。
在这里插入图片描述

二、V模型

“V”模式开发模型是在瀑布模型的基础上发展而来的,那么什么是“V”模式呢?
V模型也叫快速应用开发,是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以又称软件测试的V模型。V模型阶段步骤包括:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。V模式是一种传统软件开发模型,一般适用于一些传统信息系统应用的开发。
在这里插入图片描述
该模型的特点是:

系统需求确定后,系统测试工程师便开始写系统测试用例;
软件需求确定后,软件测试工程师便开始写软件测试用例;
软件设计确定后,软件工程师便开始写单元测试;
最底层才是软件编码的实现。
“V”模式开发流程将代码实现放在最后一步,即使客户需求发生变更也能很快做出修改,相比瀑布模型减少了回溯的成本和时间,提高了开发效率、降低了开发成本.

三、增量模型(Incremental Model)

融合了瀑布模型的基本成分和原型实现的迭代特征,增量模型把软件产品划分为一系列的增量构件,第一个增量往往是核心的产品,即第一个增量实现了基本的需求。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。
在这里插入图片描述
相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。

它被分成以下三个阶段:
1、在系统开发的前期阶段,为了确保所建系统具有优良的结构,仍需要针对整个系统进行需求分析和概要设计,需要确定系统的基于增量构件的需求框架,并以需求框架中构件的组成及关系为依据,完成对软件系统的体系结构设计。
2、在完成软件体系结构设计之后,可以进行增量构件的开发。这个时候,需要对构件进行需求细化,然后进行设计、编码测试和有效性验证。
3、在完成了对某个增量构件的开发之后,需要将该构件集成到系统中去,并对已经发生了改变的系统重新进行有效性验证,然后再继续下一个增量构件的开发。

四、原型模型(Prototype Model)

典型的原型开发方法模型。适用于需求不明确的场景,构造简易系统,可以帮助用户明确需求。
在这里插入图片描述它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
优缺点
优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。

这种模型适合预先不能确切定义需求的软件系统的开发。

缺点:所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。

五、螺旋模型(Spiral Model)

典型特点是引入了风险分析。结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初从概念项目开始第一个螺旋。属于面向对象开发模型,强调风险引入。该模型特别适用于庞大、复杂并且具有高风险的系统。
在这里插入图片描述
对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。
  螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,如下图所示。每个螺旋周期分为如下4个工作步骤。
  (1)制订计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。
  (2)风险分析。分析所选的方案,识别风险,消除风险。
  (3)实施工程。实施软件开发,验证阶段性产品。
  (4)用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。
  与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加开发成本,延迟提交时间。

五、喷泉模型(Water Fountain Model)

喷泉模型是一种以用户需求为动力,以对象为驱动地模型,主要用于描述面向对象的软件开发过程,该模型认为软件开发过程自下而上的,各阶段是相互迭代和无间隙的。
在这里插入图片描述
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

六、基于构件的开发模型(Component-based Development Model)

指运用预先包装的构件来构造应用系统。
构件可以是组织内部开发的构件,也可以是商品化成品。
构件开发模型本质上是演化模型需要以迭代方式构建软件。
在这里插入图片描述
对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象范型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用。

七、统一过程(UP)模型

统一过程模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布。
在这里插入图片描述
统一过程定义了4个技术阶段及其制品。
  1)起始阶段(Inception Phase)
  起始阶段专注于项目的初创活动,产生的主要工作产品有构想文档(Vision Document)、初始用例模型、初始项目术语表、初始业务用例、初始风险评估、项目计划(阶段及迭代)、业务模型以及一个或多个原型(需要时)。
  2)精化阶段(Elaboration Phase)
  精华阶段在理解了最初的领域范围之后进行需求分析和架构演进,产生的主要工作产品有用例模型、补充需求(包括非功能需求)、分析模型、软件体系结构描述、可执行的软件体系结构原型、初步的设计模型、修订的风险列表、项目计划(包括迭代计划、调整的工作流、里程碑和技术工作产品)以及初始用户手册。
  3)构建阶段(Construction Phase)
  构建阶段关注系统的构建,产生实现模型,产生的主要工作产品有设计模型、软件构件、集成的软件增量、测试计划及步骤、测试用例以及支持文档(用户手册、安装手册和对于并发增量的描述)。
  4)移交阶段(Transition Phase)
  移交阶段关注于软件提交方面的工作,产生软件增量,产生的主要工作产品有提交的软件增量、β 测试报告和综合用户反馈。
  
初始阶段:生命周期目标。
精化阶段:生命周期架构。
构建阶段:初始运作功能。
移交阶段:产品发布。

八、敏捷开发(Agile Development)

敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求。基本原则如下:
- 短平快的会议

  • 小型版本发布
  • 较少的文档
  • 合作为重
  • 客户直接参与
  • 自动化测试
  • 适应性计划调整
  • 结对编程
  • 测试驱动开发
  • 持续集成
  • 重构

1.极限编程(XP)

极限编程的核心原则

  • 快速反馈:极限编程强调通过频繁的交付和持续反馈来迅速调整开发方向。这有助于及早发现问题,并在开发过程中进行修复。
  • 简单性:极限编程鼓励使用最简单的方法解决问题。避免过度设计和不必要的复杂性,专注于交付有效的功能。
  • 逐步开发:开发过程被分解为小的、可管理的任务,通过短期迭代不断交付部分功能,以便更好地应对变化。
  • 持续集成:团队成员频繁地将代码集成到共享代码库中,以确保代码的稳定性和一致性。
  • 测试驱动开发:在编写实际代码之前,先编写测试用例,然后通过开发代码使其通过测试。这有助于确保代码的可靠性和质量。

2.水晶法(Crystal)

水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论,认为人对软件质量有重要的影响,因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。通过更好地交流和经常性的交付,软件生产力得到提高。

3.并列争求法(Scrum)

并列争求法使用迭代的方法,其中,把每30天一次的迭代称为一个"冲刺",并按需求的优先级来实现产品。多个自组织和自洽的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的"并列争球"。

4.自适应软件开发(ASD)

ASD有6个基本的原则
有一个使命作为指导;
特征被视为客户价值的关键点;
过程中的等待是很重要的,因此“重做”与“做”同样关键
变化不被视为改正,而是被视为对软件开发实际情况的调查。
确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求。
风险也包含其中。

5.敏捷统一过程(AUP)

是软件工程的过程,它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。统一过程(Rational Unified Process,RUP/UP)是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2905667.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA时钟资源详解(3)——全局时钟资源

FPGA时钟系列文章总览:FPGA原理与结构(14)——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564 一、概述 全局时钟是 FPGA 中的一种专用互连网络,旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计…

【目标检测】YOLOv5 网络结构,bottleneckCSP 与 C3 模块图解

文章目录 Focus 模块Csp 模块BottleneckCspC3CSP1_X 与 CSP_2XYOLOv4 的 CSP_X SSP 与 SSPF YOLOv5 作为 YOLO 家族的第五个版本,本身也演进了几个子版本,现在网上的资料都没有标注具体是哪个子版本的,导致不同文章之间各种混乱,像…

【FedCoin: A Peer-to-Peer Payment System for Federated Learning】

在这篇论文中,我们提出了FedCoin,一个基于区块链的点对点支付系统,专为联邦学习设计,以实现基于Shapley值的实际利润分配。在FedCoin系统中,区块链共识实体负责计算SV,并且新的区块是基于“Shapley证明”&a…

如何通过vscode连接到wsl

下载wsl扩展 远程连接模式

天锐绿盾 || 公司文件数据加密系统,资料防泄密软件,国内专业数据安全系统——自动智能无感透明加密、防泄密管理系统

#天锐绿盾# 天锐绿盾是一款专为中国企业设计的数据防泄密系统,旨在为企业提供全方位的数据安全解决方案,特别关注对敏感信息和核心技术资料的保护。 www.drhchina.com PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-9…

Oracle存数字精度问题number、binary_double、binary_float类型

--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一:分别往三张表插入 小数…

苹果应用商店上架工具的最新趋势与未来发展展望

摘要 移动应用app上架是开发者关注的重要环节,但常常会面临审核不通过等问题。为帮助开发者顺利完成上架工作,各种辅助工具应运而生。本文探讨移动应用app上架原理、常见辅助工具功能及其作用,最终指出合理使用工具的重要性。 引言 移动应…

衢州常山县行政服务中心 | 55寸1x5弧形显示屏

项目产品:55寸OLED柔性屏 项目时间:2023年3月 项目地点:衢州常山县行政服务中心办公室 近日,衢州常山县行政服务中心成功完成了其办公室内的55寸1x5弧形显示屏的安装与调试工作。此次项目采用了先进的55寸OLED柔性屏,…

C++王牌结构hash:哈希表闭散列的实现与应用

一、哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素 时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log n),搜索的效率…

selenium实战之爬取虎牙直播列表页

文章目录 声明实现流程给你主播列表页面分析登录遮罩层处理解析直播列表的数据分页处理 完整的代码 声明 前面有了 selenium的基础,这里就拿虎牙直播页面来做一个实战测试,这是作为学习,测试使用,并不用作为商业用途,不…

【话题】AI大模型学习:理论、技术与应用探索

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景1. AI大模型学习的基础理论1.1 机器学习1.2 深度学习 2. AI大模型学习的技术要点2.1 模型结构设计2.2 算法优化2.3 大规模数据处理 3. AI大模型学习的应用场景3.1 自…

为啥学霸反而很少被霸凌?

编辑搜图 请点击输入图片描述(最多18字) ​为什么学霸很少被霸凌? 在我们的学生时代,总有一些同学因为成绩优秀而被大家称为“学霸”。然而,你是否注意到,这些学霸同学往往很少成为霸凌的受害者&#xff…

广场舞团系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 系…

数据可视化-ECharts Html项目实战(7)

在之前的文章中,我们学习了如何设置漏斗图、仪表盘。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢 数据可视化-ECharts Html项目实战(6…

Ubuntu通过分用户进行多版本jdk配置

前言:本文内容为实操记录,仅供参考! linux安装jdk参考:http://t.csdnimg.cn/TeECj 出发点:最新的项目需要用jdk17来编译,就把服务器的jdk版本升级到了17,但是有一些软件例如nexus还需要jdk1.8进…

Vue挂载全局方法

简介:有时候,频繁调用的函数,我们需要把它挂载在全局的vue原型上,方便调用,具体怎么操作,这里来记录一下。 一、这里以本地存储的方法为例 var localStorage window.localStorage; const db {/** * 更新…

Rancher介绍

1.什么是Rancher Rancher是一套容器管理平台,专门用于部署和管理容器化应用。以下是关于Rancher的详细介绍: 容器编排与管理:Rancher是一个开源的企业级容器管理平台,它支持Kubernetes作为其容器编排引擎。Rancher可以帮助用户在…

【ARM】DS-5的使用单独编译器的激活方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 用于解决客户在使用DS5的license去激活单独的编译器的步骤。 2、 问题场景 客户在购买了DS-5的license之后,不采用IDE的开发方式,采用使用单独编译器的方式对于工程进行构建。激活出现问题&a…

swagger/knife4j 接口文档增加图标 springboot

1.在资源目录下增加图标文件 2.配置/favicon.ico 资源 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/favicon.ico").addResour…

工业智能物联网关如何助力工业防震减灾

地震灾害难以预料,一旦发生往往就损失重大。对于工业领域而言,地震灾害的影响不仅仅是对人员安全的威胁,还包括对生产设施的破坏、生产进程的中断以及伴生的持续性经济损失。 随着5G、大数据、物联网技术的发展,面向工业领域构建一…