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

news2024/11/23 10:31:18

前言

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


一、瀑布模型(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://www.coloradmin.cn/o/1553859.html

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

相关文章

气象预测新篇章:Python人工智能的变革力量

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

【娱乐】战双帕弥什游戏笔记攻略

文章目录 Part.I IntroductionChap.I Information Part.II 新手攻略Chap.I 角色和武器挑选Chap.II 新手意识推荐 Part.II 阵容搭配Chap.I 一拖二Chap.II 毕业队 Reference Part.I Introduction 2019年12月5日全平台公测。 偶然间入坑战双,玩了几天,觉得…

pbrt-v4 windows编译失败指南

cpu下编译成功很容易,但是gpu有点麻烦,主要有下面几个坑 安装optix 7,cmake build 要加上PBRT_OPTIX_PATH cmake cuda 版本要对应,不然会出现 cuda not found,或者generate的时候报错,导致最后pbrt.exe --…

如何使用固定公网地址远程连接Python编译器并将运行结果返回到Pycharm

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

【JAVAEE学习】探究Java中多线程的使用和重点及考点

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

备考ICA----Istio实验13---使用 Istio Ingress 暴露应用

备考ICA----Istio实验13—使用Istio Ingress TLS暴露应用 1. 环境部署 清理之前实验遗留,并重新部署httpbin服务进行测试 # 清理之前的环境 kubectl delete vs httpbin kubectl delete gw mygateway # 部署httpbin kubectl apply -f istio/samples/httpbin/httpbin.yaml 确认…

Ubuntu 系统下安装 Nginx

目录 一、Nginx是什么 ​二、Ubuntu 系统下安装 Nginx 1、安装包下载 2、上传服务器并解压缩 3、依赖配置安装 4、生成编译脚本 ​5、编译 6、开始安装 7、设置为随机自启动 7.1、创建 nginx.service 文件,将以下内容粘贴到文件中 7.2、将 nginx.service…

【小白入门篇4】兄弟,你还在网上盗图吗

01 绘画AI工具 之前《【小白入门篇2】总有一款AI工具适合你》、《【小白入门篇3】还是GPT4更香》文章的介绍软件中大部分是文字生成文字的,随着人对艺术形态追求越来越高,现在AIGC领域也逐渐出现文生图、文生视频的大模型。今天我们先介绍一下文生图的A…

提升用户体验:6款热门软件助力APP界面设计

APP界面设计是APP开发过程中的关键阶段,APP界面设计的细节决定了APP的成败。APP界面设计是否美观大方,决定了用户对APP最直接的视觉判断。大多数用户给予肯定的APP界面设计,必须包含设计师对每一个细节的精心设计。要创建一个惊人的APP界面设…

AI赋能微服务:Spring Boot与机器学习驱动的未来应用开发

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

R语言赋值符号<-、=、->、<<-、->>的使用与区别

R语言的赋值符号有&#xff1c;-、、-&#xff1e;、&#xff1c;&#xff1c;-、-&#xff1e;&#xff1e;六种&#xff0c;它们的使用与区别如下: <-’&#xff1a;最常用的赋值符号。它将右侧表达式的值赋给左侧的变量&#xff0c;像一个向左的箭头。例如&#xff0c;x …

C#手麻系统源码,医院手术麻醉信息系统源码,前端框架:Vue,Ant-Design,后端框架:百小僧开源框架

手术麻醉管理系统覆盖了从患者入院&#xff0c;经过术前、术中、术后&#xff0c;直至出院的全过程。医院手术麻醉系统能够规范麻醉科和手术室的工作流程、实现麻醉手术过程中的信息数字化和网络化、自动生成麻醉手术中的各种医疗文书、完整共享HIS、LIS和PACS等手术患者信息&a…

【javaWeb 第三篇】Vue快速入门

VUE vue是一套前端框架&#xff0c;免除原生的js的DOM操作&#xff0c;简化书写 基于MVVM&#xff08;model-view-viewmodel&#xff09;思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注放在数据上。 什么是框架&#xff1a; 框架相当于一个半成品&#xff0c;是一…

keil调试仿真退出卡死现象解决办法

更新到keil5版本V5.20之后&#xff0c;目前一直到V5.29版本&#xff0c;都存在一个问题&#xff1a; 退出调试模式时&#xff0c;有可能会卡死&#xff01; 此时需要在任务管理器中结束掉进程才能强制关闭keil工程。 网上查找了很多资料&#xff0c;一种是退出仿真时不能有断…

【明道云】如何让用户可以新增但不能修改记录

【背景】 遇到一个需求场景&#xff0c;用户希望新增数据后锁住数据不让更改。 【分析】 在设计表单时直接将字段设置只读是不行的。字段设置只读将会直接让界面上此字段的前端组件不可编辑。包括新增时也无法填入。显然是不符合需求的。 需要既能新增&#xff0c;新增后又不…

【Java多线程】6——集合线程安全

6 集合线程安全 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&…

Python环境下基于深度学习的旋转机械故障诊断及其权重可视化

随着神经网络所要完成的任务越来越智能化&#xff0c;其内部的结构也变得越来越复杂&#xff0c;神经网络学到的解题方法也越来越难以被人类所理解。神经网络的内部单元就好比一个“黑箱”&#xff0c;虽然这种处理方法能够在某种程度上达到非常不错的效果&#xff0c;但其原因…

Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有&#xff1a; 1、文本编辑及处理&#xff1a;在编写或编辑文本文件时&#xff0c;如使用文本编辑器或文本处理器&#xff0c;经常需要处理字符串并确定其在文件中的行数。这…

notepad++里安装32位和64位的16进制编辑器Hex-Editor

这个16进制编辑器确实是个好东西&#xff0c;平时工作种会经常用到&#xff0c; 这是hex-editor的官网。这个里边只能下载32位的(64位的看最下边)&#xff0c;选一个合适的版本&#xff0c;我当时选的是最新的版本 https://sourceforge.net/projects/npp-plugins/files/Hex%20E…

网站业务对接DDoS高防

准备需要接入的网站域名清单&#xff0c;包含网站的源站服务器IP&#xff08;仅支持公网IP的防护&#xff09;、端口信息等。所接入的网站域名必须已完成ICP备案。如果您的网站支持HTTPS协议访问&#xff0c;您需要准备相应的证书和私钥信息&#xff0c;一般包含格式为.crt的公…