第11章 软件工程

这里写目录标题

  • 1.软件过程
    • 1.1能力成熟度模型(CMM)
    • 1.2能力成熟度模型集成(CMMI)
    • 1.3瀑布模型(线性顺序)
    • 1.4增量模型
    • 1.5演化模型
      • 1.5.1原型模型
      • 1.5.2螺旋模型
    • 1.6喷泉模型
    • 1.7统一过程(UP)模型
  • 2.敏捷方法
  • 3.系统设计
  • 4.系统测试
    • 4.1单元测试(模块测试)
    • 4.2集成测试
    • 4.3黑盒测试(功能测试)
    • 4.4MaCabe算法
    • 4.5白盒测试(结构测试)
    • 4.6伪代码
  • 5.系统维护
    • 5.2软件文档(只好不坏)
    • 5.3系统维护的内容
    • 5.4系统软件质量属性
  • 6.软件项目估算
  • 7.进度安排
    • 7.1Gantt图(甘特图)
    • 7.2PERT图(有向图)
    • 7.3项目活动图
  • 8.软件配置管理
  • 9.风险管理
  • 10.软件质量模型
  • 10软件
    • 10.1软件评审
    • 10.2软件容错技术
    • 10.3软件工具

1.软件过程

软件工程三要素:方法,工具,工程

1.1能力成熟度模型(CMM)

1.初始级:软件过程杂乱无章,没有明确定义的步骤,英雄式核心人物

2.可重复级:建立了基本的项目管理过程和实践来跟踪项目费用,进度,功能特性

3.已定义级:过程文档化,标准化

4.已管理级:软件过程和产品质量

5.优化级:加强了定量分析,通过过程质量反馈,新观念,新技术的反馈

1.2能力成熟度模型集成(CMMI)

1.阶段式模型
初始的:不可预测或缺乏控制
已管理的:为项目服务
已定义的:为组织服务
定量管理的:已度量和控制
优化的:集中于过程改进

2.连续式模型
过程域能力等级(CL)0-5:
未完成(CL0):未执行,未得到
已执行(CL1):输入转输出
已管理(CL2):已管理的过程的制度化
已定义(CL3):已定义的过程的制度化
定量管理(CL4):已定量管理的过程的制度化
优化(CL5):改进

1.3瀑布模型(线性顺序)

以项目的阶段评审,文档控制为手段
适合于软件需求明确的软件项目

优点:容易理解,管理成本低,强调开发的阶段性早期计划及需求调查和产品测试
在这里插入图片描述
在这里插入图片描述

1.4增量模型

原型实现的迭代特征
客户对每个增量的使用和评估都做为下一个增量的新特征和功能,不断重复直至完善产品

优点:第一个交付版本所需的成本和时间较少
所承担的风险不大,减少用户需求的变更运行增量投资,仅对1个或2个投资在这里插入图片描述

1.5演化模型

需求经常发生变化,严格的交付时间
适合对软件需求缺乏认知

1.5.1原型模型

用户需求不清,经常变化,系统规模不大
在这里插入图片描述

1.5.2螺旋模型

增加了风险分析,适合复杂的大型软件
开发成本高
在这里插入图片描述

1.6喷泉模型

以用户需求为动力,以对象作为驱动
适合面向对象开发
开发过程具有迭代性和无间隙性
允许个开发活动交叉,迭代的进行

优点:提高软件的开发效率,节省开发时间
在这里插入图片描述

1.7统一过程(UP)模型

4个技术阶段:
初始阶段:生命周期目标
精华阶段:生命周期架构
构建阶段:初始运作功能
移交阶段:产品分布
典型代表RUP

2.敏捷方法

尽可能早地,持续地对有价值的软件的交付
每种方法基于一套原则

1.极限编程(XP)
由价值观,原则,实践,行为组成

4大价值观:沟通,简单性,反馈,勇气

12个最佳实践:计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结对编程,集体代码所有制,持续集成,每周工作40个小时,现场客户,编码标准

2.水晶法
每一个不同的项目都需要一套不同的策略,约定和方法论
具体问题具体分析

3.并列征求法
使用迭代方法,把每30天一次的迭代称为冲刺

4.自适应软件开发(ASD):6个基本原则

5.敏捷统一工程(AUP)
大型连续,小型迭代
采用经典的UP阶段性活动
活动:建模,实现,测试,部署,配置及项目管理,环境管理

3.系统设计

1.概要设计(划分模块)
①设计软件系统总体结构(关键):
确定每个模块的功能,模块之间的调用关系,
模块之间的接口(模块之间传递的信息)
②数据结构及数据库设计
③编写概要设计文档
④评审

2.详细设计(算法设计)

4.系统测试

系统测试是保证系统质量和可靠性的关键步骤

意义:是为了发现错误而执行程序的过程
成功的测试是发现了尚未发现的错误

目的:希望以最少的人力和时间发现错误

基本原则:
1.应尽早并不断的进行测试
2.测试工作应避免由软件开发人员承担
3.不仅要确认输入数据,还要与逾期结果比较
4.要输入合理和不合理的条件
5.要检验程序做了该做的和不该做的事
6.严格按照测试计划进行,避免测试的随意性
7.妥善保存测试计划,测试用例
8.测试例子都是精心设计的,复用性高
9.测试目标来自于需求分析阶段

4.1单元测试(模块测试)

在模块编写完成且无编译错误后进行
一般为白盒测试

特征:
1.模块接口
2.局部设计结构
3.重要的执行路径
4.出错处理
5.边界条件

单元测试过程:
驱动模块:接受测试例子的数据,将数据送到测试模块,输出测试结果
桩模块
在这里插入图片描述

4.2集成测试

1.自顶向下集成测试
抽象→具体
不用编写驱动模块,要编写桩模块

2.自底向上集成测试
具体→抽象
不用编写桩模块,要编写驱动模块

3.回归测试:一旦发生变更就重新测试

4.冒烟测试

4.3黑盒测试(功能测试)

测试方法分为静态测试和动态测试
动态测试:黑盒测试,百盒测试

不关心程序内部结构,测试软件外部特性

技术:
等价类划分:有效等价类(符合条件),无效等价类(不符合条件),同时考虑
边界值分析:输入边界值判断
错误推测
因果图

4.4MaCabe算法

环路复杂度=有向弧数-结点数+2
环路复杂度=闭合区域+1

4.5白盒测试(结构测试)

根据程序的内部结构和逻辑来设计测试用例
对程序的路径和过程进行测试

技术:
逻辑覆盖:6种
①语句覆盖:每个语句至少执行一次
②判定覆盖:真值和假值都要执行一次(结果)
③条件覆盖:每个判断的真假都执行一次(中)
④判定/条件覆盖
⑤条件组合覆盖:判断中条件的各种组合
⑥路径覆盖:所有可能的路径
循环覆盖
基本路径测试

4.6伪代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.系统维护

系统可维护性评价指标:
可理解性,可测试性,可修改性

5.2软件文档(只好不坏)

文档是软件可维护性的重要因素
根据系统文档维护,用户文档测试

开发阶段保证软件具有可维护性

编写高质量的文档可以提高软件开发的质量

文档也是软件产品的一部分,没有文档的软件就不能称为软件

文档编制有重大意义和相当大的工作量

5.3系统维护的内容

1.硬件维护
2.软件维护
①正确性维护:改正开发阶段已存在但测试阶段未发现的错误
②适应性维护:为适应某种情况而做的修改
③完善性维护:扩充功能,完善性能的修改
④预防性维护:为了适应未来变化
3.数据维护

5.4系统软件质量属性

可靠性:一个系统对于给定的时间间隔内,在给定条件下无效运作的概率
MTTF/(1+MTTF)
MTTF:平均无故障时间

可用性:在给定时间点上,一个系统能够按照规格说明正确运作的概率
MTBF/(1+MTBF)
MTBF:平均失效间隔时间

可维护性:给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率1/(1+MTTR)
MTTR:平均修复时间

主程序员路径:n-1条
沟通路径:(n(n-1))/2条

6.软件项目估算

1.COCOMO估算模型
基本:静态单变量模型
中级:静态多遍历模型
详细

2.COCOMOII模型

3个阶段性模型:
①应用组装模型
②早期设计阶段模型
③体系结构阶段模型

规模估算选择:对象点,功能点,代码行

7.进度安排

7.1Gantt图(甘特图)

能清晰描述每个任务的开始,结束时间,进展情况,任务之间的并行性
不能反映任务间的依赖关系,难以确定关键所在,不能反映计划中有潜力的部分
在这里插入图片描述

7.2PERT图(有向图)

可以表示依赖,不能表示并行
箭头表示任务,数字表示完成该任务所需时间

只有当指向当前结点的所有任务完成后,结点所表示的事件才能出现,才能执行任务

开始结点的最早时刻:0
最早时刻:前→后max,
最迟时刻:后→前min
松弛时间=最迟时间-最早时间
关键路径:松弛时间为0的路径
在这里插入图片描述

7.3项目活动图

在这里插入图片描述

8.软件配置管理

目标:变更标识,变更控制,版本控制,确保变更正确的实现,变更报告

内容:1.版本管理,配置支持,变更支持,过程支持,团队支持,变化报告,审计支持
2.软件配置标识,变更管理版本控制,系统建立,配置审核,配置状态报告

配置数据库:开发库,受控库,产品库

9.风险管理

软件风险的特性:不确定性,损失

类型:
项目风险
技术风险
商业风险

1.风险识别
2.风险预测(风险估计)
两个方面:概率,后果
风险显露度=概率后果,ER=PC
3.风险评估:风险参照水准

10.软件质量模型

ISO/IEC 9126软件质量模型
Mc Call软件质量模型

1.功能性
适应性:适合
准确性:正确或相符的结果
互用性:交互
依从性:服从规定
安全性
2.可靠性
成熟性
容错性
易恢复性
3.易使用性
易理解性
易学性
易操作性
4.效率
时间特性:响应和处理时间,吞吐量
资源特性
5.可维护性
易分析性
易改变性
稳定性
易测试性:确认经修改软件
6.可移植性
适应性
易安装性
一致性
易替换性
在这里插入图片描述

10软件

10.1软件评审

质量:用户满意度
设计质量:设计的规格说明书符合用户的要求
程序质量:程序按照设计规格说明所规定的情况正确执行

1.设计质量的评审内容
①评价软件的规格说明是否合乎用户的需求
②评审可靠性,能否避免一些异常
③评审保密措施实现情况,是否对系统使用资格进行检查
④评审操作特性实施情况,恰当性
⑤评审性能实现情况,是否达到所规定性能的目标值
⑥是否具有可修改性,可扩充性,可互换性,可移植性,可测试性,复用性

2.程序质量的评审内容
模块结构:处理模块,数据模块
控制流结构
数据流结构
模块结构与功能结构之间的对应关系

正式技术评审的目标:发现软件中的错误

10.2软件容错技术

实现容错的主要手段:冗余
1.结构冗余:静态,动态,结构
2.信息冗余
3.时间冗余
4.冗余附加技术
屏蔽软件错误的容错系统
冗余备份程序的存储及调用
实现错误检测和错误恢复的程序
实现容错软件所需的固化程序

10.3软件工具

软件开发工具:需求分析工具,设计工具,编码与排错工具,测试工具

软件维护工具:版本控制工具,文档分析工具,开放信息库工具,逆向工程工具(静态,动态),再工程工具

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

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

相关文章

HNU-人工智能-实验1-A*算法

人工智能-实验1 计科210x 甘晴void 一、实验目的 掌握有信息搜索策略的算法思想; 能够编程实现搜索算法; 应用A*搜索算法求解罗马尼亚问题。 二、实验平台 课程实训平台https://www.educoder.net/shixuns/vgmzcukh/challenges 三、实验内容 3.…

如何将数据导入python

Python导入数据的三种方式: 1、通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件。这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型。 from csv import…

详细介绍如何使用YOLOv9 在医疗数据集上进行实例分割-含源码+数据集下载

深度学习彻底改变了医学图像分析。通过识别医学图像中的复杂模式,它可以帮助我们解释有关生物系统的重要见解。因此,如果您希望利用深度学习进行医疗诊断,本文可以成为在医疗数据集上微调YOLOv9 实例分割的良好起点。 实例分割模型不是简单地将区域分类为属于特定细胞类型,…

基于Springboot的校园竞赛管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园竞赛管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

stl容器 string类的基本操作

目录 一.string类的构造 二.string类的输出 1.传统字符串输出 2.通过迭代器进行输出 ​编辑 3.C11标准的范围for输出加auto推导类型 三.string类的各种迭代器 begin()和end() 利用迭代器遍历输出 利用迭代器修改字符串的字符 rbgin()和rend() 利用迭代器遍…

创造价值与回报:创业者的思维格局与商业智慧

在纷繁复杂的商业世界中,有一种信念始终贯穿于无数创业者的心中——那就是创造价值。张磊的这句“只要不断地创造价值,迟早会有回报”道出了创业者的核心思维格局和商业智慧。本文将从创业者的角度,探讨创造价值的重要性,以及如何…

5.Spring Security-web权限方案

设置登录的用户名和密码 1.通过配置文件设置用户名密码 spring:security:user:name: xiankejinpassword: 123456 如果没有以上配置,那么就会在后台生成一个随机密码,用户名固定位user。 2.通过配置类设置用户名密码 Configuration public class Sec…

为什么说虚拟化技术是现代网络安全的重要组成部分?

虚拟化技术是一种对计算机资源的抽象和资源管理技术,将电脑的各种实体资源(CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。今天德迅云安全带您了解为什么虚拟化技术能成…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

基于AT89C51单片机的温度上下限自动控制检报警设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89247694?spm=1001.2014.3001.5501 C 源码+仿真图+毕业设计+实物制作步骤+06 题 目 基于单片机的温度检测调节系统设计 姓 名 学 号 专业班级 指导教师 年 月 日 任务书 …

在Mac OS系统下查看CPU型号以及核心数量

1. 基础信息 一般点开mac的关于本机,显示的是下面的信息: 2. 当前电脑的处理器型号 找到并打开终端输入下面命令: sysctl machdep.cpu.brand_string结果如下图: 3. 当前处理器物理核心数量 找到并打开终端输入下面命令&am…

有没有适合制造企业用的研发项目管理软件?制造业选型案例必看!“追觅”上线奥博思项目管理软件,加速项目交付

智能清洁家电赛道的领军者:追觅科技(苏州)有限公司(以下简称“追觅”)成功上线奥博思 PowerProject 数字化项目管理系统。通过 PowerProject 系统,追觅公司能够实现项目全流程的覆盖,从预研阶段…

【电源专题】拿人体的循环系统与板级电源做个比较

一般人可能会觉得电源大概是电子设备里面比较容易搞定的门类。因为,只要线路没有接错,指示灯(如果有)能亮,电源都能工作。从这个方面说,好像是很容易。但是通过多年的经验和经历的坑,发现电源其实是一个很麻烦的东西,稍微有一点不完美就会有大问题出现。 如果将人体也当…

ue引擎游戏开发笔记(30)——对角色移动进行优化:实现人物转向

1.需求分析: 当前我们只实现了通过控制器可使角色进行前后左右的移动,但角色移动时与动画不匹配,并不会进行转向,实现角色随移动转向。 2.操作实现: 1思路:利用反转换函数inverse transform direction获取…

【busybox记录】【shell指令】md5sum

目录 内容来源: 【GUN】【md5sum】指令介绍 【busybox】【md5sum】指令介绍 【linux】【md5sum】指令介绍 使用示例: 128位MD5 - 默认输出 128位MD5 - 将每个文件当做二进制处理 128位MD5 - 从文件中读取MD5值并做检查 128位MD5 - 创建一个BSD风…

李廉洋:5.5-5.6现货黄金,WTI原油必看分析及策略。

美联储2024年5月议息会议将联邦基金利率的目标区间维持在5.25%-5.5%。本次会议声明发生较大变化,宣布6月开始放缓缩表。鲍威尔讲话总体中性偏鸽,指出美联储的下一步行动不太可能是加息。中信证券认为在美国失业率升至4%以上之前,美联储政策重…

【iOS】KVC

文章目录 前言一、KVC常用方法二、key与keypath区别key用法keypath用法 三、批量存值操作四、字典与模型相互转化五、KVC底层原理KVC设值底层原理KVC取值底层原理 前言 KVC的全称是Key-Value Coding,翻译成中文叫做键值编码 KVC提供了一种间接访问属性方法或成员变…

JavaScript中的DOM和BOM

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯Web API🍀1 API的概念🍀2 Web API的概念…

【C++ | 关键字】C++ 关键字介绍

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-05-04 0…

手摸手,带你用vue撸后台

前言 说好的教程终于来了,第一篇文章主要来说一说在开始写实际业务代码之前的一些准备工作吧,但这里不会教你 webpack 的基础配置,热更新原理是什么,webpack速度优化等等,有需求的请自行 google,相关文章已…