Windows平台软件开发模型总结:V型模型、瀑布模型、迭代模型、增量模型、螺旋模型、原型模型

news2024/11/19 20:22:04

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows平台软件开发模型总结:V型模型、瀑布模型、迭代模型、增量模型、螺旋模型、原型模型。

很多人可能知道了,那就是在我们浙江省,从2021年年初到现在,开展了一场数字化改革。那么在这场数字化改革浪潮中,被提到最多的一个概念就是V字模型,V字模型是软件开发模型的一种,那我们这就来看看什么是V字模型,其他的软件开发模型又是怎么样的。

1.V型模型

 V模型其实是瀑布模型的变种,反映了软件测试活动与软件开发过程(从分析到设计)的关系。

需求分析:
即首先要明确客户需要的是什么,需要软件作成什么样子,需要有那几项功能,这一点上比较关键的是分析师和客户沟通时的理解能力与交互性。要求分析师能准确的把客户所需要达到的功能,实现方式,等表述出来,给出分析结果,写出需求规格说明书。

概要设计:
主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。

详细设计:
对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等,这一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述出来。其中需要包含数据库设计说明。

软件编码:
按照详细设计好的模块功能表,编程人员编写出实际的代码。

单元测试:
按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同,比如有具体到模块的测试,也有具体到类,函数的测试等。

集成测试:
经过了单元测试后,将各单元组合成完整的体系,主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否,数据传递的正确性等,其主要目的是检查软件单位之间的接口是否正确。根据集成测试计划,一边将模块或其他软件单位组合成系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。

系统测试:
经过了单元测试和集成测试以后,我们要把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞,等。

验收测试:
主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到预期的效果。

优点:清楚的标识了开发和测试的各个阶段;自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应。

缺点:由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。

在传统的开发模型中,比如瀑布模型,通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成之后的一个阶段,尽管有时测试工作会占用整个项目周期一半的时间,但仍有人认为测试只是一个收尾工作,而不是主要的工程。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系。

实际中,由于需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。
 

2.瀑布模型(文档驱动)

在这里插入图片描述

在瀑布模型中,开发过程是线性的。任务和阶段按严格顺序一个接一个地完成。进度平稳地向下流动,就像瀑布上的水一样。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。

瀑布模型是由文档驱动,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。不适合需求模糊的系统。

用户的需求非常清楚全面,且在开发过程中没有或很少变化,对软件的应用领域很熟悉;用户的使用环境非常稳定;开发工作对用户参与的要求很低。不适合需求模糊或需求经常变动的系统

优点:每个阶段的开发质量都有保证,减少了返工。是文档细致,降低了沟通成本,有利于及早发现问题。开发质量高,层次化明确,需求明确。

缺点:周期长,不易变更。不灵活(开发过程一般不能逆转,否则代价太大,如果项目是长期的,且正在进行的,此模型不行)。放回上一级开发阶段需要极大代价,不支持迭代开发,会产生大量文档,系统开发周期长。

3.迭代模型(风险驱动)

使用条件适合于事先不能完整定义产品的所有需求,计划多期开发的项目。高风险项目,且需求不确定,用户能在整个开发过程中不同程度地参与。

1、在项目开发早期需求可能有所变化。

2、分析设计人员对应用领域很熟悉。

3、高风险项目。

4、用户可不同程度地参与整个项目的开发过程。

优点:降低了产品无法按照既定进度进入市场的风险。加快了整个开发工作的进度。

缺点:风险管理成本较高,在风险分析,进度管理方面,对项目组成员的要求也非常高。
 

4. 增量模型(任务驱动)

增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

适应于需求经常改变的软件开发过程,比如用户核心需求非常清楚、项目人员不足、产品可以分割成不同的阶段分别完成

优点:开始时不用投入大量人力资源,可以事先推出核心产品以稳定用户,可以有计划的管理技术风险。能在较短的时间内向用户提交可完成部分工作的产品。将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。开发顺序灵活,开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。在达到初始需求之前可降低成本。可快速生产出可使用的系统。能够有计划地管理技术风险。

缺点:需要开放式体系结构,可能会产生设计效果差、开发效率低的情况。

5.螺旋模型

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。

主要分为四个工作步骤:(1)制定计划:确定软件目标/选定实施方案/弄清限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。

特别适用于庞大、复杂并具有高风险的系统。对新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。

优点:强调各个开发阶段的质量。减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险。

缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。软件建设周期长,但软件技术发展比较快,所以可能会和当前的技术水平有较大的的差距,无法满足当前用户需求。由于引入了非常严格的风险识别、风险分析和风险控制,将会大大消耗人力、资源,如果严重的影响了项目的利润,风险分析将毫无意义。
 

6.原型模型(需求驱动)

原型模型要求在进行实际软件开发之前,应建立系统的工作原型。原型通常是实际系统的一个非常粗糙的版本,与实际软件相比,可能表现出有限的功能能力、低可靠性和低效的性能。在许多情况下,客户只能对软件产品的期望有一个大致的了解。在没有关于系统输入、处理需求和输出需求的详细信息的这种情况下,可以使用原型模型。

原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。在实际的项目过程中,借助于组织过程资产以及快速模型软件,一般在需求分析的时候,就可以建立一些简单的原型。

适用场景为处理简单过程明确、涉及面窄的小型系统,也可以是大型系统的需求阶段,用原型去跟用户交流,需求分析会更加明确和细化

优点:支持早期产品营销,降低维护成本,由于系统是并排的,因此可以更早地检测到错误。

缺点:一个不稳定/执行不善的原型通常会成为最终产品,花费大,很难知道该项目将持续多久,耗时长。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。
 

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

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

相关文章

内网 monorepo 配置指南(PNPM、YARN)

此处的内网是指没办法连接互联网进行依赖下载的环境,本文以windows平台为例 背景说明 绝大部分政府机关、国有企业都是在内网开发,无法从互联网同步依赖,就需要另辟蹊径解决项目依赖的问题。 传统的单包项目还好,从互联网机器将…

兼顾降本与增效,我们对存算分离的设计与思考

“降本增效”是最近企业常被提及的关键字,作为新时代企业发展的数据大脑,企业大数据团队需要持续探索如何在有限资源下创造更多价值。本文将以场景为"引",技术为"核",介绍如何基于 StarRocks 全新的存算分离架…

软考软件设计师真题与答案解析

1、2020下半年基础知识(上午题) 1、某计算机系统的CPU主频为2.8GHz。某应用程序包括3类指令,各类指令的CPI(执行每条指令所需要的时钟周期数)及指令比例如’下表所示。执行该应用程序时的平均CPI为( );运算…

2023 操作系统 R 复习大纲( 适用于软件 21 级)

目录 01.操作系统的定义 02.操作系统的基本类型及特征 1.批处理操作系统(单、多道) 2.分时操作系统 3.实时操作系统 03.操作系统的功能及特征 04.进程的定义、特征 05.进程基本状态及其转换原因 06.进程互斥、同步 07.进程控制块的内容、作用 …

Android Studio开发之路 (一)开发环境搭建以及问题记录

一、安装 Android Studio 安装配置教程 这个文章讲的很全面(包括了jdk的配置),我安装了1.8.0版本的JDK 以及 2022.2.1版本的Android Studio ,安装目录都是自定义的,安装完成之后的目录如下(项目目录也放到这里了&…

医院上线“报告中心”,实现报告查询“四个更好”

为进一步提升患者的就诊体验,不少医院部署云影像后,再次上线博为软件报告中心信息系统,患者和家属动动手指就能在自己手机上随时随地看到检查检验报告,彻底告别传统的纸质报告单方式,实现检查检验数据永久保存。 博为…

【Java多线程编程】wait与notify方法详解

前言 我们知道,线程的调度是无序的,但有些情况要求线程的执行是有序的。因此,我们可以使用 wait() 方法来使线程执行有序。 本期讲解 Java 多线程中 synchronized 锁配套使用的 wait 方法、notify方法和notifyAll方法,以及 wait 方…

jQuery 操作 DOM 及 CSS

jQuery 操作 DOM 及 CSS 1. jQuery 修改|获取页面元素文本及属性值 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标签) val() - 设置或返回表单字段的值 attr() - 方法用于获取属性值。 1.1 举例&#xff…

win11亮度条消失解决方法之一

一、前言 1、本人电脑情况:联想小新Pro16,win11家庭版 2、联想技术工程师三种方式联系方式(需提供电脑背后的编号): 1) 通过预装的联想电脑管家,获取在线人工专家支持(管家链接 h…

【ETH】以太网----PHY芯片LAN8720A----电路原理图

一、LAN8720A----简介 LAN8720A 是低功耗的 10/100M 以太网 PHY 层芯片,I/0 引脚电压符合EEE802.3-2005 标准,支持通过 RMI 接口与以太网 MAC 层通信,内置 10-BASE-T/100BASE-TX 全双工传输模块,支持 10Mbps 和 100Mbps。 LAN87…

SpringMVC的请求与响应(请求映射路径、请求参数、日期类型参数传递 、响应json数据)

文章目录 1,PostMan工具的使用1.1 PostMan简介1.2 PostMan安装1.3 PostMan使用1.3.1 创建WorkSpace工作空间1.3.2 发送请求1.3.3 保存当前请求 2,请求与响应2.1 设置请求映射路径2.1.1 环境准备2.1.2 问题分析2.1.3 设置映射路径步骤1:修改Controller步骤…

Java基础面试题突击系列2

👩🏻 作者:一只IT攻城狮 ,关注我不迷路 ❤️《java面试核心知识》突击系列,持续更新… 💐 面试必知必会学习路线:Java技术栈面试系列SpringCloud项目实战学习路线 📝再小的收获*365天…

以ChatGPT写诗为例,教你如何用AI软件创新性提问?

想用AI软件创作出动人的诗篇吗? ChatGPT 是一款人工智能软件,可以帮助你创作鼓舞人心的诗歌。它为您提供了一个强大的平台来探索您的创意方面。通过一组简单的问题,您只需点击几下就可以生成令人惊叹的诗歌。 要想让机器写诗,你…

低代码开发——进最热的赛道,啃最硬的骨头

你开足马力提了一串需求,需要招聘IOS和Android工程师、前端测试,PM等人员共同完成;这意味着开发者坐下来一行一行的敲击,并不断测试修改直到上线。 这个过程短则半年,长则数年,才会给到你一个满意的产品。…

基于 Web 的作物生长监控系统的

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本毕业设计在对 A 基地进行调研的基础上。设计并开发了一套基于 Web 的作物生长监控系统,该系统由软件和硬件两部分组成。硬件部分采用了已开发好的多点温湿度采集系统,软件部分采用 Java 开发语言、HT…

回应小伙伴们的咨询,5款好用的小软件

最近陆陆续续收到好多小伙伴的咨询,这边也是抓紧时间整理出几个好用的软件,希望可以帮到大家。 1.RSS阅读器——Tabby Tabby是一款简洁美观的RSS阅读器。它可以自动抓取并订阅你喜欢的博客和网站更新。这个工具拥有简洁的界面和强大的功能,可以过滤和分…

零信任---ZTN

零信任是一种以身份为中心的新一代网络安全防护理念,通过持续的身份认证、环境状态采集、持续信任评估、动态访问控制,并遵循最小权限原则,实现在不可信网络中构筑可信的访问通道。 传统场景中,企业的安全都是在以防火墙为边界的。…

WhatsApp Business 多人使用终极指南

今时今日,几乎每个人的手机上都安装了 WhatsApp,不少电商更会依赖 WhatsApp作为和客户沟通的主要渠道。但对有一定规模的店铺来说,WhatsApp绑定一个号码和设备的设定实在很不方便。如何才能用WhatsApp Business批量处理客户查询呢&#xff1f…

Linux下安装MySQL8

一、安装MySQL8 1、下载 官网:https://dev.mysql.com/downloads/mysql/ 服务器wget下载 cd /data wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle 2、解压 tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar 3、…

十进制转二进制/八进制/十六进制

首先,我们有一个十进制的数字**(21)D**,其他博主都是用除法来算,如果数字小还能适用,如果数字大,就不适用了 以下是我的方法: 十进制转二进制: 通过上图我们可以得到(21)D的二进制为(10101)B&…