软考笔记--软件开发模型

软件开发模型给出了软件开发活动各个阶段之间的关系,它是软件开发过程的概括,是软件工程的重要内容。软件开发模型为软件工程管理提供了里程碑和进度表,为软件开发过程提供了原则和方法。

一.软件开发模型概述

软件开发模型可分为三种类型:1.以软件需求完全确定为前提的瀑布模型;2.在软件开发初期只能提供基本需求是采用的迭代式开发模型(如喷泉模型,螺旋模型,统一开发过程和敏捷方法等);3是以 形式化开发方法为基础的变换模型。

1.瀑布模型

瀑布模型是一种严格定义方法,它将软件开发的过程分为软件计划、需求分析、软件设计、编码实现、软件测试,运行维护六个阶段,最终得到软件产品。

在瀑布模型中,依赖于早期进行的需求调查,不能适应需求的变化,由于是单一流程,开发中的经验教训不能反馈于本产品的过程,风险往往到后期的开发阶段才显露出来。

2.演化模型

演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。演化模型的主要优点是:任何功能一经开发就能进入测试,以便验证是否符合产品需求,其缺点是,如果不加以控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响。

3.螺旋模型

螺旋模型是瀑布模型与演化模型的结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。螺旋模型是一种演化软件过程模型,它将原型实现的迭代特征与线性顺序模型中的控制的和系统化的方面结合起来,软件开发是一系列的增量发布。螺旋模型沿着螺线进行若干次迭代,每次迭代包括制定计划、风险分析、施工工程和客户评价4个方面的工作。

4.喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上的各阶段是相互重叠呵呵多次反复的,就像水喷上去又可以落下来,类似喷泉。在喷泉模型中,各活动之间无明显边界,例如,分析和设计之间就没有明显的边界。这种特性称为无间隙性。

5.变换模型

变换模型是基于形式化规格说明语言和程序变换的软件开发模型,它对形式化的软件规格说明进行一系列自动或半自动的程序变换,最后映射为计算机能够接受的软件系统。

6.智能模型

智能模型也称为基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起,该模型应用基于规则的系统,采用规约和推理机制,帮助开发人员完成开发工作,并使维护在系统规格说明一级进行。

7.V模型

V模型是在快速应用开发的基础上演变而来,由于将整个开发过程中构成一个V字而得名。V模型应用在软件测试方面,和瀑布模型有一些共同的特征。V模型中的过程从左到右,描述了基本的开发过程和测试行为,其价值在于它非常明确地标明了测试过程中存在的不同级别,并清楚描述了这些测试阶段和开发过程各阶段的对应关系。

V模型强调软件开发的协作和速度,将软件实现和验证有机结合起来,在保证较高的软件质量情况下缩短开发周期。V模型适合企业级的软件开发,它更清楚地揭示了软件开发过程的特性及本质。

二.快速应用开发

快速应用开发RAD是一种比传统生命周期法快得多的开发方法,它强调极短的开发周期。RAD模型是瀑布模型的一个高速变种,通过使用基于构件的开发方法获得快速开发。

1.RAD的基本思想

RAD的基本思想主要体现在以下4个方面:

(1)让用户更主动的参与到系统分析、设计和构造活动中来。

(2)将项目开发组织成一系列重点突出的研讨会,让项目投资方、用户、系统分析师、设计人员和开发人员一起参加。

(3)通过一种迭代的构造方法,加速需求分析和设计阶段。

(4)让用户提前看到一个可以工作的系统。

2.RAD的开发阶段

RAD的业务流程主要有业务建模,数据建模,过程建模,应用生成,测试与交付。

3.RAD的特点

RAD采用基于构件的开发方法,复用已有的程序结构或使用构件,或者创建可以复用的构件。RAD通过大量使用可复用构件,加快了开发速度,但是也有一些局限性:首先,并非所有应用都适合RAD,RAD对模块化要求比较高,如果有些功能不能被模块化,那么RAD所需要的构件就会有问题。其次,开发者和客户必须在很短的时间内完成一些列需求分析;最后RAD只能适用于管理信息系统的开发,不适合技术风险很高的情况。

三.统一过程

统一过程UP是一个通用过程框架,可以用于种类广泛的软件系统,不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模,UP是基于构件的,在为软件系统建模时,使用的是UML。UP具有三个显著的特点:用例驱动,以构建为中心,迭代和增量。

1.RUP概述

RUP将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程,采用Internet技术,可以增强团队的开发效率,并为所有成员提供最佳的软件实现方案。RUP中的软件过程在时间上被分解为4个顺序的阶段:初始阶段,细化阶段,构件阶段和交付阶段。

2.初始阶段

初始阶段的任务是为系统建立业务模型并确定项目的边界。在初始阶段必须识别所有与系统交互的外部实体,定义系统与外部实体的特性。初始阶段的实现过程包括:明确项目规模,评估项目风险,制定项目计划,阶段技术评审。

3.细化阶段

细化阶段的任务就是分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。细化阶段的实施过程包括:确定架构,制定构件阶段计划,建立支持环境,选择构件,阶段技术评审。

4.构件阶段

在构件阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。

5.移交阶段

当基线已经足够完善,可以安装到最终与用户实际环境中时,则进入交付阶段。交付阶段的重点是确保软件对最终用户是可以使用的。

四.敏捷方法

敏捷方法强调开发团队与用户之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队,更注重人的作用。

1.敏捷宣言

敏捷宣言认为个体和交互胜过过程和工具,可工作的软件胜过大量的文档,客户合作胜过合同谈判;响应变化胜过遵循计划。敏捷方法强调让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。

目前主要的敏捷方法:极限编程XP,自适应软件开发,水晶方法,特性驱动开发FDD。

2.敏捷方法的特点

敏捷方法是一种以人为本、迭代、循序渐进的开发方法。在敏捷方法中,软件项目的构件被切分为多个子项目,各个子项目成果经过测试,具备集成和可运行的特征。虽然敏捷方法发展很快,但是也暴露出了一些问题:客户参与往往依赖于客户参与的意愿和客户自身的代表性;团队成员的性格可能不适合激烈的投入;对系统的变更做出优先级排序可能是很困难的;维护系统的简洁性往往需要额外的工作,可能没时间执行系统简化过程。

3.XP方法

敏捷方法中最有名的就是XP,XP是一种轻量级,高效,低风险,柔性,可预测的软件开发方式,适用于中小型项目软件开发团队,并且客户的需求模糊或者需求多变,与其他方法相比,具有一下不同点:

在更短的周期内,更早提出具体持续的反馈信息;迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断发展;依赖于自动测试程序来监控开发进度,及早捕获缺陷;依赖口头交流,测试和源程序进行沟通;倡导持续的演化式的设计;依赖开发团队内部的紧密合作。

XP的核心是其总结的四大价值观,沟通,简单,反馈,勇气。

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

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

相关文章

第十一届蓝桥杯省赛第一场C++ A组 / B组《整数拼接》(c++)

1.题目说明 给定一个长度为 n 的数组 A1,A2,⋅⋅⋅,An。 你可以从中选出两个数 Ai 和 Aj(i 不等于 j),然后将 Ai 和 Aj 一前一后拼成一个新的整数。 例如 12 和 345 可以拼成 12345 或 34512。 注意交换 Ai 和 Aj 的顺序总是被视为 2 种拼法,即便是 …

考研倒计时半年:如何高效安排学习计划?

距离考研还有半年的时间,这是一个既紧张又充满希望的阶段。如何利用好这段时间,制定一个高效的学习计划,成为了每位考生关注的焦点。下面,我将为大家提供一些关于政治、英语和专业课的学习建议,希望能对大家有所帮助。…

曲线的凹凸性与拐点【高数笔记】

1.什么是曲线的凹凸性 2.什么是曲线的拐点 3.拐点的特征 4.拐点与驻点有什么不同 5.拐点的表示方法与驻点有什么不一样 6.拐点与凹凸区间怎么求

力扣121题: 买卖股票的最佳时机

【题目描述】 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最…

Mathtype安装时word启动显示“文件未找到:MathPage.WLL”

背景 由于老板布置的临时工作,需要安装Mathtype,但尝试了3个不同的版本后(每次都卸载干净了),均未能成功安装,出现的报错3个版本各不相同: ①解压安装过程中失败(这个版本不再尝试…

GoFrame:如何简单地搭建一个简单地微服务

一切资料来源于GoFrame官网, 感兴趣的, 可以直接去官网查阅相关资料。 首先下载框架工具, 下载地址:https://github.com/gogf/gf/releases 然后进入你想要放置的项目文件夹, 执行命令行 gf init {project_name} #project_name为你的项目名 执行完后项目结构如图所示 然…

同等学力申硕专业介绍——教育学硕士

同等学力申硕的专业很多。 目前有十三大门类,分别是医学、法学、管理学、工学、教育学、经济学、艺术学、文学、历史学、理学、哲学、农学、军事学等,每个大门类中都有很多的细分专业。 今天为大家介绍同等学力申硕专业——教育学。 专业介绍 教育学该…

基于java+springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(三)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(三) 大家好 我是寸铁👊 金三银四,树、dfs、bfs、回溯、递归是必考的知识点✨ 快跟着寸铁刷起来!面试顺利上岸👋 喜欢的小伙伴可以点点关注 💝 530. 二叉搜索树的最小绝对差…

考研政治这样复习更高效

政治复习是考研备考中的重要一环,需要考生制定科学的复习计划,注重知识点的掌握和解题技巧的提升。以下是一些政治复习的建议: 梳理知识框架:首先,需要梳理政治学科的知识框架,了解各个章节之间的内在联系…

【Vue3】自定义 Vue3 插件(全局实现页面加载动画)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //编写ts loading 声明文件放置报错 和 智能提示 decl…

python实现常见一元随机变量的概率分布

一. 随机变量 随机变量是一个从样本空间 Ω \Omega Ω到实数空间 R R R的函数,比如随机变量 X X X可以表示投骰子的点数。随机变量一般可以分为两类: 离散型随机变量:随机变量的取值为有限个。连续型随机变量:随机变量的取值是连…

Redis 群集部署

1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型基础上,-般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中…

python及编程范式

编程范式 编程范式是一种基于特定的理论和原则来指导程序设计和开发风格的模型。它定义了编程语言的结构、风格、元素以及编写程序时应遵循的规则。不同的编程范式提供了不同视角来解决问题,影响着代码组织方式、执行流程以及如何表达程序逻辑。 OOP和FP 函数式编…

vue3监听input保留两位小数点

监听input输入框校验 再次记录下&#xff0c;这里没封装&#xff0c;仅演示~ 保留2位小数 只能输入数字和两位小数 <el-inputv-model"form.amount"oninput"valuevalue.replace(/[^0-9.]/g,).replace(/\.{2,}/g,.).replace(/^(\-)*(\d)\.(\d\d).*$/,$1$2.$3…

(2024,MixLoRA,任务干扰,独立因子选择,条件因子选择)使用 LoRA 的条件混合进行多模态指令调优

Multimodal Instruction Tuning with Conditional Mixture of LoRA 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 任务干扰在多模态指令调优中的 LoRA 应用 3.1 背景&am…

小甲鱼Python07 函数初级

一、创建和调用函数 pass语句表示一个空的代码块&#xff0c;我们经常先写好函数&#xff0c;pass占一个坑&#xff0c;等规划好之后再来填坑。 函数也是可以指定参数的&#xff0c;我们会把参数传进去用来替代形参。 在Python里如果想要返回值&#xff0c;不需要指定函数的返…

仿牛客网项目---显示评论和添加评论功能的实现

这篇文章&#xff0c;我来介绍一下我的项目中的另外一个功能&#xff1a;显示评论和添加评论。 其实这两个功能都不怎么重要&#xff0c;我感觉最重要的应该是用户注册登录功能&#xff0c;这个也了解一下&#xff0c;知道这么一回事儿就好。 首先设计DAO层。 Mapper public …

python实现AES加密解密

1. 前言 AES是一种对称加密&#xff0c;所谓对称加密就是加密与解密使用的秘钥是一个。 之前写过一片关于python AES加密解密的文章&#xff0c;但是这里面细节实在很多&#xff0c;这次我从 参数类型、加密模式、编码模式、补全模式、等等方面 系统的说明如何使用AES加密解密…

直观理解卷积

卷积直观理解 原文来自最容易理解的对卷积(convolution)的解释 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致…