【软件建模与设计】-03-软件生存周期模型和过程

news2024/9/21 2:44:36

目录

1、瀑布模型

2、抛弃型原型

3、演化式-增量模型

4、螺旋模型

5、统一软件开发过程RUP

6、设计验证和确认

6.1、软件质量保证

6.2、软件设计的性能分析

7、软件生存周期的活动

7.1、需求分析和规约

7.2、体系结构设计

7.3、详细设计

7.4、编码

8、软件测试

8.1、单元测试

8.2、集成测试

8.3、系统测试

8.4、验收测试


 

 

1、瀑布模型

瀑布模型是一个理想化的过程模型,它规定每一阶段完成后才能启动下一阶段,另外,一个项目在没有迭代和重复的情况下从一个阶段移动到下一个阶段。

存在的问题:

1)无法进行合适的测试,直至一个工作系统被开发出来并能演示给最终用户。

2)只有在生存周期的后期才能得到一个工作的系统。

f62984fe0b2340a284ed5231ca4ecba0.png

 

2、抛弃型原型

对从用户界面上获得反馈非常有用,并且能够应用于具有复杂用户界面的系统。
一个抛弃型原型能够在一个初步的需求规约被制定之后就被开发出来。

抛弃型原型也能被用于构造设计的实验性原型。这个原型能用于确定特定的算法是否逻辑正确,或者用于确定它们是否满足性能目标。

c431bb478ee246529b61ee083b62a2d4.png

3、演化式-增量模型

在增量开发中,原型从几个中间步骤的可运行系统逐步演化为可交付系统。该方法可用于确定系统是否满足性能目标,并用于测试设计中所涵盖的关键构件。

演化式原型方法的一个目标是得到早期运行的系统子集,随后在该子集上逐步构造。如果系统的第一个增量版本对一条从外部输人到外部输出的路径进行了完整的测试,那么使用增量式原型方式是有优势的。

038a8e9d73304d1298d17c0cf6c9b273.png

4、螺旋模型

螺旋模型是一个风险驱动的过程模型,涵盖其他生存周期模型,例如瀑布模型、增量开发模型以及抛弃型原型模型。

1f9982f4e53e4f59b1a1959de0b7640e.png

1)定义目标、候选方法和约束。此次循环的详细计划:确定目标以及用来实现目标的各种候选方法。

2)分析风险。对当前项目风险进行详细评估;为了减轻风险,计划待执行的活动,

3)开发产品。进行产品开发,例如需求分析、设计或者编码。

4)计划下一次循环。对此次循环的成果进行评估,并开始计划下一次循环。

 

5、统一软件开发过程RUP

包含5个工作流和4个阶段

制品(artifact)被定义为由一个过程生产、修改或使用的信息。

工作流(workfow)被定义为生产可观测结果的一系列活动。

阶段(phase)被定义为两个里程碑之间的一段时间,在此过程中一组事先定义的开发目标得到了满足,完成了一些制品,同时做出了是否进入下一阶段的决定。

RUP中一个阶段迭代与螺旋模型中的一次循环是相对应的。

19ebe2045280426d9ba5b93749cf15c3.png

每一次循环历经所有的四个阶段,并且指明了每一个核心工作流中的开发工作。每一个工作流及其产物如下所述:

1)需求。需求工作流的产物是用例模型。

2)分析。分析工作流的产物是分析模型。

3)设计。设计工作流的产物是设计模型和部署模型。

4)实现。实现工作流的产物是实现模型。

5)测试。测试工作流的产物是测试模型。

与螺旋模型类似,RUP是一个风险驱动的过程。生存周期阶段如下所述:

1)初始。在初始阶段,制定出达到足够水平的初步想法,用以证明有能力进入细化阶段。
2)细化。在细化阶段,定义软件体系结构。
3)构造。在构造阶段,:开发出能够发布给用户的软件产品。
4)交付。在交付阶段,软件被交付给用户。

 

6、设计验证和确认

软件确认(validation)的目标是要确保软件开发团队“构建了正确的系统”,确保系统符合用户的需求。

软件验证(verification)的目标是要确保软件开发团队“正确地构建系统”,确保软件系统在每一个阶段中的构造与前一个阶段所定义的规约相符合。

6.1、软件质量保证

软件质量保证是指一系列确保软件产品质量的活动。

软件验证和确认是软件质量保证的重要目标。

根据用户需求,抛弃型原型能够用于对系统的确认(在开发系统之前),有助于确保开发团队“构建了正确的系统”,即系统确实符合用户的需求。抛弃型原型也能够用于构造设计的实验原型。

软件技术评审(sofware technicalreview)能够为软件验证和确认带来很大的帮助。在软件验证中,确保设计符合软件需求规约是非常重要的。需求追踪和软件设计的技术评审能够有助于该活动的开展。

6.2、软件设计的性能分析

在系统实现之前分析软件设计的性能来评估设计是否满足性能目标是十分有必要的。

使用排队模型、模拟模型

在并行系统中使用Petri网,进行建模和分析并行设计

7、软件生存周期的活动

7.1、需求分析和规约

识别和分析用户的需求。软件需求规约(SRS)详细叙述了需要开发出的系统的需求。

SRS是软件的一类外部规约,它的目的是提供完整的关于系统外部行为是什么的描述,而不描述系统内部是如何进行工作的。

7.2、体系结构设计

一个软件体系结构通过描述构件及其连接的方式,将系统的整体结构与单个构件的内部实现细节进行分离。

7.3、详细设计

在详细设计阶段,定义每一个系统构件的算法细节。这项工作经常使用程序设计语言(PDL)来完成,并且包含内部数据结构设计

7.4、编码

在编码阶段,使用为这个项目所选择的编程语言对每一个构件进行编码。

 

8、软件测试

8.1、单元测试

单元测试表示在单个构件与其他构件进行组合之前对其进行单独的测试。

单元测试的方法使用测试覆盖准则,经常使用的测试覆盖准则包括

1)语句覆盖需要达到每一个语句应至少被执行一次。

2)分支覆盖则需要达到每一个分支的可能结果应至少被测试一次。

8.2、集成测试

集成测试表示将已测试的单个构件逐步地组合为更复杂的构件组,然后对这些构件组进行测试,直到组合成完整的软件系统,同时构件间的接口都已经被测试过。

8.3、系统测试

系统测试是测试一个经过集成的硬件和软件系统来验证系统是否满足特定需求的一个过程。

测试人员测试整个系统或主要的子系统来判定它们是否与需求规约保持一致。

为了使测试更加客观,推荐让一个独立的测试团队来执行系统测试。

在系统测试过程中,需要测试软件系统的几个特征。

1)功能测试。判定系统执行了需求规约中所描述的功能。

2)负载(压力)测试。判定当系统运行时是否能够处理计划中的大量的和变化的负载。

3)性能测试。测试系统满足响应时间的需求。

8.4、验收测试

在验收系统之前,通常在用户安装阶段,用户组织或其代表都会进行验收测试。与系统测试相关的大多数问题也应用于验收测试。

 

 

 

 

 

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

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

相关文章

element-ui 插槽自定义样式怎么居中

场景:使用element-ui组件,scope内部自定义样式导致的错位 效果图: 解决思路: template标签可理解为一个内嵌组件,宽高重新定义,可在自定义内容外层套一层盒子,让盒子占满所有空间,再…

DBA 数据库管理 表管理 数据批量处理。表头约束

表管理 建库 库名命名规则:仅可以使用数字、字母、下划线、不能纯数字 不可使用MySQL命令或特殊字符 库名区分字母大小写 加if not exists 命令避免重名报错 create database if not exists gamedb; 建表 drop database if exists gamedb ; 删表…

从JDK源码探究Java线程与操作系统的交互

文章目录 从JDK源码探究Java线程与操作系统的交互一、序言二、线程基础概念1、操作系统线程实现方式(1)内核级线程(Kernel-Level Thread)(2)用户级线程(User-Level Thread)&#xff…

【DevOps系列】DevOps简介及基础环境安装

作者:后端小肥肠 目录 1. 前言 2. DevOps(详细介绍) 3. Code阶段工具 3.1 Git安装 3.2 GitLab安装 4. Build阶段工具 5. Operate阶段工具 5.1 Docker安装 5.2 Docker-Compose安装 6. Integrate工具 6.1 Jenkins介绍 6.2 Jenkins安…

8-1 搭建solidity开发环境,自己定制一个truffle

8-1 搭建solidity开发环境,自己定制一个truffle(react区块链实战) 从零开始搭建一个项目 自己实现一套类似truffle的自动编译系统,加深理解 此处可以跳过无需自己实现编译合约的模块,使用已有的truffle模块即可 项目…

SSM框架学习笔记(仅供参考)

(当前笔记简陋,仅供参考) 第一节课: (1)讲述了Spring框架,常用jar包,以及框架中各个文件的作用 (2)演示了一个入门程序 (3)解释了…

TS 入门(二):Typescript类型与类型注解

目录 前言回顾1. 基本类型数字类型 (number)字符串类型 (string)布尔类型 (boolean)空值和未定义 (null 和 undefined)任意类型 (any)unknown 类型any 与 unkown 区别 2. 数组和元组类型数组类型元组类型 3. 枚举类型4. 类型注解示例指定变量类型函数参数和返回值类型注解类型推…

在浏览器控制台中输出js对象,为什么颜色不同,有深有浅

打开console,输入自定义的javascript对象的时候,打开看发现对象的属性是深紫色,后面有一些对象是浅紫色的,比如Array对象和一堆SVG,HTML,CSS开头的对象,常用的prototype和__proto__也是浅紫色的。 请问这里深紫和浅紫…

9. Python3 Numpy科学计算库

Numpy是Python科学计算库的基础,主要包括: 强大的N维数组对象和向量运算。一些复杂的功能。与C和FORTRAN代码的集成。实用的线性代数运算、傅里叶变换、随机数生成等。 9.1 Numpy基础 Numpy的主要对象是一个均匀的多维数组。Numpy提供了各种函数。可以…

pxe高效网络批量装机

文章目录 一, PXE远程安装服务(一)三种系统装机的方式(二)linux装机1. 加载 Boot Loader2. 加载启动安装菜单3. 加载内核和 initrd4. 加载根文件系统5. 运行 Anaconda 安装向导 (三)实现过程&am…

STM32使用CubeMX创建HAL库工程文件

文章目录 1. STM32CubeMX 2. 界面介绍 3. 使用教程 新建工程 选择芯片界面 ​编辑 配置页面 引脚配置页面 引脚配置界面的颜色指示 配置RCC时钟参数 配置SYS参数 配置时钟树 Project Manager项目管理配置 生成工程文件 KEIL代码编写 1. STM32CubeMX STM32CubeM…

得物六宫格验证码分析

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi a…

【自学网络安全】二、防火墙NAT智能选路综合实验

任务要求: (衔接上一个实验所以从第七点开始,但与上一个实验关系不大) 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总…

LeetCode 算法:电话号码的字母组合 c++

原题链接🔗:电话号码的字母组合 难度:中等⭐️⭐️ 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 …

线程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

线程 线程概念 简介 线程定义:线程是操作系统进行调度的最小单位,包含在进程内,是进程中的实际执行单元 线程特性:一个线程代表进程中的一个单一顺序控制流,即执行路径 多线程应用:一个进程可以包含多个…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件,实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能,系统能够实时采集、处理和显示红外热波图像,有效提高了检测的精度和效率…

时域分析----移动平均滤波器介绍及其在金融应用示例

介绍 移动平均滤波器(Moving Average Filter)是一种基本但功能强大的信号处理技术,广泛应用于各种数据平滑和去噪任务中。其主要目的是通过对数据进行平均处理,减少随机波动和噪声,从而突出数据中的趋势和规律。移动平…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候,Win11 自动将其进行了堆叠,这时候就无法进行预览与打开。 问题分析:大部分ST的工具都是基于 JDK 来进行开发的,Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个,通过配置…

数据治理项目中,数据运营团队如何搭建能提升数据应用效果?

引言:在数据治理项目中,数据运营团队的搭建对于提升数据应用效果具有关键作用。以下是一些具体的步骤和策略,用于构建高效的数据运营团队以优化数据应用效果: 一、明确团队目标和职责 确定数据应用目标:首先&#xf…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置,并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…