软件过程模型

软件过程模型

软件过程模型习惯上称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型等。

1. 瀑布模型

瀑布模型将软件生命周期中的各个活动规定为依据线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护
在这里插入图片描述

1.1 瀑布模型的优点(顺序进行、阶段明确、易于管理)🌟

  • 阶段明确、顺序执行、易于管理,并且每个阶段都有明确的输出成果。

1.2 瀑布模型的缺点(不灵活,无法提前发现并解决问题)🌟

  • 无法灵活应对需求变更、无法在早期阶段发现和解决问题等。在瀑布模型中,需求或设计的错误往往只有到了项目后期才能被发现,对项目风险的控制能力较弱,导致项目通常会延期,开发费用超出预算。

2. 增量模型

增量模型是一种分阶段的软件开发过程,它将在软件开发的不同阶段中,按照一定的时间间隔,逐步增加新的功能和特性。增量模型的特点是逐步增加软件的功能、减少开发风险以及灵活的变更管理。

在这里插入图片描述

2.1 增量模型的优点(减少风险、快速发布、灵活投资)

可交付的第一个版本所需要的成本和时间很少,开发由增量表示的小系统所承担的风险不大,由于很快发布了第一个版本,因此可减少用户需求的变更。同时,它也具有瀑布模型所有的优点。

2.2 增量模型的缺点(需求变更、重新开发和配置管理复杂)

若没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;若需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发或重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

3. 演化模型

典型的演化模型有原型模型和螺旋模型。

3.1 原型模型

原型模型开始于沟通,目的是定义软件的总体目标、标识需求,然后快速制定原型开发计划,确定原型的目标和范围,快速构建原型并交付用户使用,收集客户反馈意见,并在下一轮中对原型进行改进。在前一个原型需要改进(或扩展其范围)的时候,进入下一轮原型的迭代开发。

在这里插入图片描述

原型模型又根据使用目的的不同,分为探索型原型、实验型原型和演化型原型。

3.2 螺旋模型🌟🌟🌟🌟🌟

螺旋模型是一种风险驱动的软件开发过程,它将软件开发分为多个螺旋周期,每个螺旋周期都包含需求分析、设计、实现和测试等阶段,同时不断评估风险和调整开发计划。螺旋模型的特点是不断迭代和完善的软件开发过程、高风险的分析和风险管理以及灵活的变更管理。

在这里插入图片描述

3.2.1 螺旋模型的优点(灵活、适用于大项目)
  • 设计上的灵活性,可以在项目的各个阶段进行变更。
  • 以小的分段来构建大型系统,使成本计算变得简单容易。
  • 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
  • 随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。
3.2.2 螺旋模型的缺点(成本大、风险高)
  • 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
  • 过多的迭代次数会增加开发成本,延迟提交时间。

4. 敏捷开发模型🌟🌟🌟🌟🌟

敏捷开发模型是一种以人为中心、迭代、灵活的软件开发过程,它强调快速响应变化、持续交付价值和高质量的软件产品。敏捷开发模型的特点是高度迭代、自我组织、开放式反馈以及持续改进。

4.1 极限编程(XP)

XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。

4.1.1 4大价值观

沟通、简单性、反馈和勇气。

4.1.2 5个原则

快速反馈、简单性假设、逐步修改、提倡更改和优质工作。

4.1.3 12个最佳实践

测试驱动开发(TDD);短迭代周期;简单设计;结对编程;集体所有制;持续集成;每周工作40小时😍;现场客户;代码规范;可持续的开发速度;计划游戏;系统隐喻。

4.2 水晶法(Crystal)

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

4.3 并列争求法(Scrum)

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

4.4 自适应软件开发(ASD)

4.5 敏捷统一过程(AUP) 🌟🌟🌟🌟🌟

敏捷统一过程(Agile Unified Process,AUP) 采用”在大型上连续”以及在“在小型上迭代”的原理来构建软件系统。采用经典的UP阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。每个AUP迭代执行以下活动:

  • 建模。建立对商业和问题域的模型表述,这些模型“足够好”即可,以便团队继续前进。
  • 实现。将模型翻译成源代码。
  • 测试。像XP一样,团队设计和执行一系列的测试来发现错误以保证源代码满足需求。
  • 部署。对软件增量的交付以及获取最终用户的反馈。
  • 配置及项目管理。着眼于变更管理、风险管理以及对团队的任一-制品的控制。项目管理追踪和控制开发团队的工作进展并协调团队活动。
  • 环境管理。协调标准、工具以及适用于开发团队的支持技术等过程基础设施。

5. 基于构件的开发模型

基于构件的开发模型是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品(COTS)软件构件。一种基于构件的开发模型包括领域工程和应用系统工程。

  1. 领域工程的目的是构建领域模型、领域基准体系结构和可复用构件库。
  2. 应用系统工程的目的是使用可复用构件组装应用系统。

在这里插入图片描述

6. 统一过程模型

统一过程(UP)模型是一种“用例和风险驱动,以架构为中心,迭代并增量”的开发过程,由 UML 方法和工具支持。统一过程定义了四个技术阶段及其主要工作产品:

  1. 起始阶段:专注项目的初创活动,主要工作产品有构想文档、初始用例模型、初始项目术语表、初始业务用例、初始风险评估、项目计划、业务模型及多个原型(需要时)。
  2. 精化阶段:在理解了最初的领域范围之后进行需求分析和架构演进,主要工作产品有用例模型、补充需求、分析模型、整体体系结构描述、可执行的软件体系结构原型、初步设计模型、修订的风险列表、项目计划及初始用户手册。
  3. 构建阶段:关注系统的构建,产生实现模型,主要工作产品有设计模型、软件构件、集成软件增量、测试计划及步骤、测试用例及支持文档(用户手册、安装手册等)。
  4. 移交阶段:关注软件提交方面的工作,产生软件增量,主要工作产品有提交的软件增量、β 测试报告和综合用户反馈。

统一过程的典型代表是 RUP,RUP 是 UP 的商业扩展,完全兼容 UP,比 UP 更完整、更详细。

敏捷方法的总体目标是通过尽可能早地、持续地对有价值的软件进行交付使客户满意。敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念,即敏捷宣言。


软考学习笔记,欢迎纠错与探讨,不喜勿喷!😘


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DRM全解析 —— ADD_FB(2)

接前一篇文章:DRM全解析 —— ADD_FB(1) 本文参考以下博文: DRM驱动(四)之ADD_FB 特此致谢! 上一回围绕libdrm与DRM在Linux内核中的接口: DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, d…

抽象轻松c语言

目 c语言 c程序 c语言的核心在于语言,语言的作用是进行沟通,人与人之间的信息交换 人与人之间的信息交换是会有信息空白(A表达信息,B接受信息,B对信息的处理会与A所以表达的信息具有差距,这段差距称为信…

同步与互斥

硬件指令 实现互斥:硬件指令,硬件实现的原子操作,不会被打断 tsl指令和xchg指令 当前指令执行完,才会检测中断 If the signal comes while an instruction is being executed, it is held until the execution of the instructi…

使用SpaceDesk连接平板作为电脑副屏详细步骤教程

文章目录 下载安装PC端安装安卓端安装 配置步骤PC端安卓端 连接 SpaceDesk官网链接https://www.spacedesk.net/ (应该是需要科学上网才能进入) SpaceDesk它可以连接安卓,苹果的平板,手机等,也可以连接其他可以打开网页(HTML5)的设备。 这里我…

JDK8安装及系统变量配置(包含错误处理)

jdk安装 一.下载JDK二.安装三.配置系统变量四.可能遇到的问题1.显示已经安装的问题 或者 读取注册表项值失败2.原因3.解决 五.验证安装成功 一.下载JDK JDK下载官网 二.安装 双击之后,一直下一步就ok 三.配置系统变量 1.找到配置系统变量的地方 2.配置系统变…

千纸鹤APP云验证系统源码 APK注入引流弹窗

千纸鹤APP云验证系统是一款全面的验证系统,包括网络验证、APK注入、注册机、引流弹窗、更新弹窗等功能。该系统提供完整的源代码,方便开发者二次开发和定制化需求。 可以对用户进行多种验证,包括账号密码验证、短信验证码验证等。该系统还提供…

设计模式-原则篇-01.开闭原则

简介 ​ 可以把设计模式理解为一套比较成熟并且成体系的建筑图纸,经过多次编码检验目前看来使用效果还不错的软件设计方案。适用的场景也比较广泛,在使用具体的设计模式之前先要学习软件设计的基础 “软件设计原则”,后面的23个设计模式都是…

干翻Dubbo系列第十四篇:Dubbo协议基于SpringBoot规范化开发

文章目录 文章说明 一:版本控制 二:共有依赖声明于父项目 三:创建共有API 1:定义公共接口 2:定义Bean 四:创建Provider 1:引入公共API 2:创建实现类 3:定义启动…

行业追踪,2023-08-30

自动复盘 2023-08-30 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

【工作笔记-0038】mongodb mongorestore 命令行导入 bson.gz数据

1. 导出的集合文件格式如下(也就是导出的表文件): 例如: D:\Files\xxxx集合名称.bson.gz 怎样导出,这里不做介绍,用 mongodb compass 或者 studio 3t 都可以 2. 下载命令行导入工具: 官方…

websocket基础

下面就以代码来进行说明 1&#xff0c;先导入websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.编写websocket相关bean管理配置 Config…

ISO/IEC/ITU标准如何快速查找(三十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

系统虚拟机(VM)

系统虚拟机&#xff1a;将一台物理机器虚拟化为多台虚拟机&#xff0c;每个虚拟机上都可以运行一个独立的操作系统&#xff0c;由虚拟机管理程序(VMM)来管理。 第一种直接运行在硬件上&#xff0c;可以直接分配物理资源&#xff0c;性能更好&#xff0c;可支持更多的虚拟机&am…

攻防世界-Broadcast

原题 解题思路 原以为要运行py文件&#xff0c;结果打开就有

Elasticsearch安装,Springboot整合Elasticsearch详细教程

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;能够实现近乎实时的搜索。 Elasticsearch官网https://www.elastic.co/cn/ 目录 第一步&#xff1a;下载Elasticsearch 下载7.6.2版本 下载其他版本 第二步&#xff1a;安装Elasticsearch 第三…

linux操作系统中的动静态库(未完)

1. 静态库与动态库 静态库&#xff08;.a&#xff09;&#xff1a;程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库&#xff08;.so&#xff09;&#xff1a;程序在运行的时候才去链接动态库的代码&#xff0c;多个程序共享使用库的…

深入探索C语言自定义类型:打造你的编程世界

一、什么是自定义类型 C语言提供了丰富的内置类型&#xff0c;常见的有int, char, float, double, 以及各种指针。 除此之外&#xff0c;我们还能自己创建一些类型&#xff0c;这些类型称为自定义类型&#xff0c;如数组&#xff0c;结构体&#xff0c;枚举类型和联合体类型。 …

世微AP9234 升压型DC/DC LED恒流驱动

描述 AP9234是一款由基准电压源、振荡电路、误差放大电路、相位补偿电路、电流限制电路等构成的CMOS升压型DC/DC LED驱动。由于内置了低导通电阻的增强型N沟道功率MOSFET&#xff0c;因此适用于需要高效率、高输出电流的应用电路。另外&#xff0c;可通过在VSENSE端子连接电流…

kubesphere devops使用

一、创建项目 1 创建项目 企业管理员切换到相应企业空间(租户),创建项目&#xff0c;k8s集群会创建一个相同名字的namespace。如下图所示管理员创建一个ipaas-devops项目。 2.创建镜像拉取密钥信息 进入项目如ipaas-devops&#xff0c;选择配置->保密字典->创建&#xf…