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

前言

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


一、瀑布模型(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.mfbz.cn/a/498342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web Components使用(一)

在使用Web Components之前,我们先看看上一篇文章Web Components简介,其中提到了相关的接口、属性和方法。 正是这些接口、属性和方法才实现了Web Components的主要技术:Custom elements(自定义元素)、Shadow DOM&#…

网络编程--高并发服务器(二)

这里写目录标题 线程池高并发服务器UDP服务器TCP与UDP机制的对比TCP与UDP优缺点比较UDP的C/S模型实现思路模型分析实现思路(对照TCP的C/S模型) 二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二…

STM32 PWM通过RC低通滤波转双极性SPWM测试

STM32 PWM通过RC低通滤波转双极性SPWM测试 📍参考内容《利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6》📺相关视频链接:https://www.bilibili.com/video/BV16S4y147hB/?spm_id_from333.788 双极性SPWM调制讲解以及基于stm32的代码…

Machine Learning机器学习之贝叶斯网络(BayesianNetwork)

目录 前言 算法提出背景: 贝叶斯算法特点: 一、贝叶斯定理 二、朴素贝叶斯分类模型 1、朴素贝叶斯分类模型(Naive Bayes Classifier) 2、原理 2.1 朴素贝叶斯假设 2.2条件独立性假设 2.3后验概率计算 2.4类别预测 2.5小结 3、建模…

【LeetCode热题100】236. 二叉树的最近公共祖先(二叉树)

一.题目要求 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可…

【计算机网络】http协议的原理与应用,https是如何保证安全传输的

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

BOM系统:贯穿制造全程的管理利器

在制造行业中,BOM系统的应用已经成为提高生产效率、降低成本和确保产品质量的关键因素。BOM系统作为产品结构和物料清单的管理工具,为制造企业提供了全面的控制和协同能力。 1.产品设计与开发:在产品设计阶段,BOM系统为工程师提供…

uniapp 真机调试(mumu模拟器)

配置mumu模拟器 一、下载Mumu模拟器 https://mumu.163.com/ 二、点击安装,按步骤下一步安卓mumu模拟器 三、打开mumu多开器 右上角adb查看 端口号 四、打开mumu模拟器 五、打开HbuilderX 选择运行,运行到手机模拟器,Android模拟器端口设置…

基于ssm网上服装销售系统论文

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网上服装销售系统系统当然也不能排除在外,随着网络技术的不断成熟,带动了网上服装销售系统系统,它彻底…

安卓调试桥ADB

Logcat 命令行工具 | Android Studio | Android Developers 什么是ADB ADB 全称为 Android Debug Bridge ,是 Android SDK (安卓的开发工具)中的一个工具,起到调试桥的作用,是一个 客户端 - 服务器端程序 。其中 …

泛型,数据结构,集合

文章目录 泛型介绍解决问题好处使用通配符泛型的下限泛型的上限 数据结构定义常见的数据结构栈(先进后出)队列(先进先出)数组结构链表结构哈希表结构 集合List集合特点特有方法子类及其底层数据结构LinkedList集合 Set集合特点没有特有方法子类及其底层数据结构LinkedHashSet集…

HarmonyOS 应用开发之Want的定义与用途

Want 是一种对象,用于在应用组件之间传递信息。 其中,一种常见的使用场景是作为 startAbility() 方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递…

I.MX6ULL_Linux_系统篇(25) buildroot文件系统构建

前面我们学习了如何使用 busybox 来构建根文件系统,但是 busybox 构建的根文件系统不齐全,很多东西需要我们自行添加,比如 lib 库文件。在我们后面的驱动开发中很多第三方软件也需要我们自己去移植,这些第三方软件有很多又依赖其他…

Linux命令及中间件安装

一.Linux简介 1.Linux操作系统概述 Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。Linux是由Linus Torvalds(林纳斯托瓦兹)起初开发的,由于源代码的开放性,现在…

系统分析师-数学与经济管理

系统架构设计师 系统架构设计师-软件开发模型总结 文章目录 系统架构设计师前言一、最小生成树二、最短路径三、网络与最大流量四、不确定型决策 前言 数学是一种严谨、缜密的科学,学习应用数学知识,可以培养系统架构设计师的抽象思维能力和逻辑推理能…

sheng的学习笔记-AI-人脸识别

目录:sheng的学习笔记-AI目录-CSDN博客 需要学习卷机神经网络等知识,见ai目录 目录 基础知识: 人脸验证(face verification) 人脸识别(face recognition) One-Shot学习(One-shot learning&…

探索数据库--------------mysql主从复制和读写分离

目录 前言 为什么要主从复制? 主从复制谁复制谁? 数据放在什么地方? 一、mysql支持的复制类型 1.1STATEMENT:基于语句的复制 1.2ROW:基于行的复制 1.3MIXED:混合类型的复制 二、主从复制的工作过程 三个重…

踏入网页抓取的旅程:使用 grequests 构建 Go 视频下载器

引言 在当今数字化的世界中,网页抓取技术变得越来越重要。无论是获取数据、分析信息,还是构建自定义应用程序,我们都需要从互联网上抓取数据。本文将介绍如何使用 Go 编程语言和 grequests 库来构建一个简单的 Bilibili 视频下载器&#xff…

《亮数据:爬虫数据采集行业痛点的利器》

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

IDEA2023使用手册 【持续更新...】

IDEA介绍 IDEA官网:https://www.jetbrains.com.cn/idea/IDEA 2023.2.2下载地址:https://download.jetbrains.com/idea/ideaIU-2023.2.2.exe对第三方软件的支持:https://www.jetbrains.com/legal/third-party-software/?productiiu&versi…