【系统集成项目管理工程师教程】第5章 软件工程

软件工程是一门研究用工程化方法构建和维护有效、实用和高质量软件的学科,涵盖软件需求、设计、实现、测试、部署交付、质量管理和过程能力成熟度等方面,旨在提高软件生产率、质量并降低成本,确保软件项目的成功开发与维护。

5.1软件工程定义

软件工程是应用多学科原理,以工程化方法解决软件问题,提高软件生产率、质量并降低成本。由方法、工具和过程组成,方法是技术扩展,工具辅助开发与管理,过程贯穿各环节,管理人员需对质量、进度和成本进行评估、管理和控制。

5.2软件需求

5.2.1需求层次
- 业务需求:反映组织机构或用户高层次目标,确定项目视图和范围,为设计开发奠定基础,来源广泛。
- 用户需求:描述用户具体目标和任务,体现系统业务价值,通过用户访谈和问卷调查等方式获取。
- 系统需求:从系统角度说明软件需求,包括功能需求(规定系统功能)、非功能需求(描述系统属性和品质)和约束(限制软件设计和构造)。
5.2.2质量功能部署:将用户要求转化为软件需求,分为常规需求、期望需求和意外需求,以提升用户满意度。
5.2.3需求获取:确定和理解项目干系人需求与约束,常用方法有用户访谈、问卷调查等,需与用户有效合作。
5.2.4需求分析
- 结构化分析:以数据字典为核心,建立数据、功能和行为模型,常用工具包括实体关系图、数据流图和状态转换图,通过DFD需求建模方法和数据字典应用进行分析。
- 面向对象分析:强调对事物及关系的认识,找出类和对象,定义其属性、职责和联系,产生符合用户需求的模型,遵循抽象、封装等基本原则,按确定对象和类等步骤进行。
5.2.5需求规格说明书:是需求分析最终结果,确保项目干系人与开发团队对系统有共同理解,包括范围、引用文件、需求等内容,需进行验证以确保需求正确性。
5.2.6需求变更
- 变更控制过程:跟踪变更状态,包括问题分析、变更描述、分析成本、决策和实现等步骤,确保变更有序进行。
在这里插入图片描述
- 变更策略:遵循变更控制过程,由变更控制委员会决定变更,确保相关人员了解变更内容,保留原始文档,实现需求变更跟踪。
- 变更控制委员会:由多方成员组成,负责裁定变更,制定决策时权衡利弊,包括节省资金、增强满意度等利益和增加费用、推迟交付等弊端。
5.2.7需求跟踪:编制需求与系统元素联系文档,包括正向和逆向跟踪,建立需求跟踪矩阵,确保工作成果符合用户需求,可借助配置管理工具实现。

5.3软件设计

5.3.1结构化设计
- 模块结构:遵循信息隐藏与抽象、模块化原则,模块耦合类型包括非直接耦合到内容耦合,内聚类型从功能内聚到偶然内聚,设计应遵循“高内聚、低耦合”原则。
- 系统结构图:是概要设计工具,反映系统功能和模块联系,详细设计确定模块算法和数据结构,遵循概要设计进行,有图形、表格和语言工具表示设计结果。
5.3.2面向对象设计:是OOA延续,主要任务是设计类和对象,包括实体类(保存永久信息)、控制类(控制用例工作)和边界类(封装交互信息),遵循单职、开闭等原则提高软件可维护性和复用性。
5.3.3统一建模语言:是强大建模语言,结构包括构造块(事物、关系和图)、规则和公共机制,视图有逻辑、进程、实现、部署和用例视图,可用于软件开发全过程。
5.3.4设计模式:前人经验总结,可复用成功设计,分为类模式和对象模式,按目的分为创建型、结构型和行为型模式。

5.4软件实现

5.4.1软件配置管理:标识、组织和控制修改,核心是版本控制(追踪文件变更,支持并行开发)和变更控制(管理变更,确保有序进行),包括配置管理计划等活动。
5.4.2软件编码:将软件设计结果转换为程序,需选择合适程序设计语言,遵循良好编程风格,关注程序复杂性度量和编码效率。
5.4.3软件测试
- 测试方法:静态测试(包括文档和代码检查,如桌前检查、代码走查和审查)和动态测试(白盒测试检查内部逻辑,黑盒测试关注功能,常用多种测试技术)。
- 测试类型:单元测试、集成测试、确认测试、系统测试、配置项测试和回归测试等,不同测试有不同对象、目的和依据。
- 面向对象的测试:目标与传统测试一致,但策略因OO系统特征(封装性、继承性和多态性)而不同,带来测试困难。
- 软件调试:与测试相伴,通过调试技术确定错误原因和位置并改正,常用策略有蛮力法、回溯法和原因排除法。

5.5部署交付

5.5.1软件部署:是软件生命周期重要环节,面临风险,过程有特征,需关注诸多问题,目的是支持软件运行,有多种部署模式。
5.5.2软件交付:传统交付过程存在问题,导致困境,包括进度、流程、环境和协作问题以及底层技术问题。
5.5.3持续交付:自动化过程,解决传统交付问题,具备多方面优势,可缩短部署时间、降低风险等。
5.5.4持续部署:基于容器技术(如Kubernetes + Docker和Matrix系统),遵循部署原则,包括部署包来源、环境和脚本统一等,有蓝绿部署和金丝雀部署等方式。
5.5.5部署和交付的新趋势:包括工作职责和人员分工转变、大数据和云计算带来新飞跃以及研发运维融合。

5.6软件质量管理

软件质量与需求一致性程度相关,受产品运行、修改和转移等因素影响。软件质量保证通过建立方法确保标准被采用,主要任务包括审计与评审、报告和处理不合格问题,目标是预防缺陷、监控过程并提供信息。
在这里插入图片描述

5.7软件过程能力成熟度

软件过程能力成熟度模型(CSMM)包括治理、开发与交付、管理与支持和组织管理等能力域,定义了5个成熟度等级,从低到高特征各异,等级越高组织软件开发能力越强。
在这里插入图片描述
2. 成熟度等级:分为5个等级,从低到高依次为初始级、项目规范级、组织改进级、量化提升级和创新引领级,每个等级有不同结果和行为特征,高级别基于低级别实施并持续改进,成熟度等级的特征和提升过程在软考中常考查。
在这里插入图片描述
在这里插入图片描述

5.8本章练习

在这里插入图片描述
1.软件测试方法可分为静态和动态
静态测试指被测试对象不在机器上运行,只依靠需求规格说明书、设计以及源代码等进行结构分析和流程图分析,从而找出错误。
动态测试是指在计算机上实际运行程序,通过比较分析得到的结果与预期,同时评估效率和健壮性能等。
静态测试的优点是能够有效地发现逻辑设计和编码错误,但缺点是无法发现运行时错误。
动态测试的优点是能够发现运行时错误,但缺点是需要更多的资源和时间。
2.在软件过程能力成熟度模型(CSMM)中,3级的结果特征包括:
组织和项目使用统计分析技术建立了量化的质量与过程目标,支持组织业务的实现管理和实现预期的项目目标。
行为特征则包括:
依据组织的业务目标、管理要求以及外部监管需求,建立并持续改进组织标准过程和资产;
项目根据自身特征依组织标准过程和资产,在组织范围内能够稳定地实现预期的项目目标,并贡献过程资产。

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

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

相关文章

PowerDesigner使用教程:设置注释、默认值属性

使用场景: 进行表设计时,我们需要对字段增加注释、设置默认值 解决方案: 如下图设置即可实现

如果 MySQL 主库出现了问题,从库该何去何从呢?

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。 💡 无论你是刚刚踏…

C# 日志框架 NLog、log4net 和 Serilog对比

文章目录 前言NLog、log4net 和 Serilog 三个框架的详细对比:一、NLog优点:缺点:二、 log4net优点缺点三、Serilog优点缺点四、Serilog使用举例总结前言 NLog、log4net 和 Serilog 三个框架的详细对比: NLog、log4net 和 Serilog 是三个非常流行的 .NET 日志框架,它们各自…

本地缓存库分析(四):fastcache

文章目录 本系列前言设计索引和数组怎么判断是否被覆盖其他问题 源码走读数据结构setget 总结 本系列 本地缓存库分析(一):golang-lru本地缓存库分析(二):bigcache本地缓存库分析(三&#xff0…

安科瑞5G基站直流叠光监控系统-安科瑞黄安南

基站现状和趋势 5G基站是专门提供5G网络服务的公用移动通信基站。5G基站主要用于提供5G空口协议功能,支持与用户设备、核心网之间的通信。按照逻辑功能划分,5G基站可分为5G基带单元与5G射频单元,二者之间可通过CPRI或eCPRI接口连接。 2019年…

Pr 视频效果:过渡

效果面板/视频效果/过渡 Video Effects/Transition Adobe Premiere Pro 的视频效果中,过渡 Transition效果组用于创建单个剪辑内过渡效果的一组视频效果。这些效果可以增强视频的视觉连贯性,添加创意性的视觉转换,为观众提供流畅的观看体验。…

DataX 的安装配置和使用 (详细版)

1,上传解压 1,开始上传安装包到你虚拟机上放置安装包的文件夹 2,开始解压 ,配置环境变量 1、上传 /opt/modules 2、解压 tar -zxvf datax.tar.gz -C /opt/installs 3、修改 vi /etc/profile 配置环境变量: export DAT…

zookeeper安装

安装之前:先关闭三台服务器的防火墙!!!!! systemctl stop firewalld systemctl disable firewalld 1)上传 /opt/modules下面 2)解压 /opt/installs下面 tar -zxvf zookeeper-3.4.10.tar.gz …

Nature文章《deep learning》文章翻译

这篇文章是对Nature上《deep learning》文章的翻译。原作者 Yann LeCun, Yoshua Bengio& Geoffrey Hinton。 这篇文章的中心思想是深入探讨深度学习在机器学习中的革命性贡献,重点介绍其在特征学习、监督学习、无监督学习等方面的突破,并阐述其在图…

动态规划—整数拆分

class Solution {public int integerBreak(int n) {int[] dp new int[n1];dp[2] 1;for(int i 3; i< n; i){for(int j 1; j< i/2; j){//j拆i&#xff0c;只需要遍历到 i/2 就可以&#xff0c;后面没有必要遍历dp[i] Math.max(dp[i], Math.max(j*(i-j) , j*dp[i-j]));…

OceanBase V4.3.3,首个面向实时分析场景的GA版本发布

在10月23日举办的 OceanBase年度发布会 上&#xff0c;我们怀着激动之情&#xff0c;正式向大家宣布了 OceanBase 4.3.3 GA 版的正式发布&#xff0c;这也是OceanBase 为实时分析&#xff08;AP&#xff09;场景打造的首个GA版本。 2024 年初&#xff0c;我们推出了 4.3.0 版本…

儿童安全座椅行业全面深入分析

儿童安全座椅就是一种专为不同体重&#xff08;或年龄段&#xff09;的儿童设计&#xff0c;将孩子束缚在安全座椅内&#xff0c;能有效提高儿童乘车安全的座椅。欧洲强制性执行标准ECE R44/03的定义是&#xff1a;能够固定到机动车辆上&#xff0c;带有ISOFIX接口、LATCH接口的…

算法笔记:Day-09(初始动态规划)

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …

HTTP和HTTPS 的作用和应用场景 (python 爬虫简单入门)

HTTP和HTTPS HTTP HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff1a;是一种发布和接收 HTML页面的方法。 HTTP的端口号为80 HTTPS HTTPS&#xff08;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;…

Java多线程编程(三)一>详解synchronized, 死锁,wait和notify

目录&#xff1a; 一.synchronized 的使用&#xff1a; 二. 常见死锁情况&#xff1a; 三 .如何避免死锁&#xff1a; 四.wait和notify 一.synchronized 的使用&#xff1a; 我们知道synchronized锁具有互斥的特点&#xff1a; synchronized 会起到互斥效果, 某个线程…

linux入门——“初识make”

make是linux中的自动化构建工具&#xff0c;一般来说系统会自带make&#xff0c;如果没有&#xff0c;那么可以使用命令“sudo apt install -y make”来安装。 1.初识make make使用的前提是维护makefile/Makefile文件&#xff0c;需要在自己的目录下自己创建。 我在此目录下创…

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中&#xff0c;Service 提供了一种稳定的方式&#xff0c;通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务&#xff0c;并且出现 DNS 解析失败时&#xff0c;通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。 一、问…

关于分布式事务,你知道多少?如何落地?

很多人估计会说&#xff0c;我在项目中完全没有涉及到过分布式事务&#xff0c;而面试官老喜欢问&#xff0c;真TM烦&#xff01; 本文就来聊聊分布式事务&#xff0c;有哪些方案和实现。文章有点长&#xff0c;可以先收藏&#xff0c;有时间了慢慢看。 什么是事务&#xff1f;…

SIwave:释放 Resonant Mode Solver 的强大功能

SIwave 是一种电源完整性和信号完整性工具。本文的重点是 Resonant 模式求解器。 进行谐振计算的主要原因是确定 Powerplane 中 Cap 去耦的最佳位置。Powerplane 的大小由最大预期电流和允许的最大电压降决定。然而&#xff0c;即使是最好的设计也没有足够的电容来将宽带频谱的…

【VS+QT】联合开发踩坑记录

0. 写在前面 因为目前在做自动化产线集成软件开发相关的工作&#xff0c;需要用到QT&#xff0c;所以选择了VS联合开发&#xff0c;方便调试。学习QT的过程中也踩了很多坑&#xff0c;在此记录一下&#xff0c;提供给各位参考。 1. 环境配置 Win11Visual Studio 2019Qt 5.12…