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

news2024/11/27 18:41:27

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

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.coloradmin.cn/o/2235808.html

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

相关文章

Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的…

vscode Comment Translate 反应慢 加载中...

Comment Translate 版本:v2.3.3 你是不是疑惑切换了 Bing 源也无法使用还是加载中… 那么可能你切换Bing后没重启vscode 下面是切换成功后的插件日志,一定要重启vscode,只是禁用和启用插件不行的,另外google是没用的,用…

网站架构知识之Ansible(day020)

1.Ansible架构 Inventory 主机清单:被管理主机的ip列表,分类 ad-hoc模式: 命令行批量管理(使用ans模块),临时任务 playbook 剧本模式: 类似于把操作写出脚本,可以重复运行这个脚本 2.修改配置 配置文件:/etc/ansible/ansible.cfg 修改配置文件关闭主机Host_key…

智启未来,趣享生活 德国卡赫举办系列新品首发活动

全球最大的清洁设备和清洁解决方案提供商德国卡赫,于11月6日在第七届进博会新品发布平台举办主题为“智启未来,趣享生活”的新品发布会,揭开全球首发新品可折叠式手持清洗机KHB Air以及亚洲首发新品商用清洁机器人KIRA CV 50的神秘面纱。作为…

xlsx.js 读取excel文件

需求:读取一个excel文件。 一、 使用antd的Upload组件的 【customRequest】方法。 互斥。此方法跟【onChange】方法互斥,即:不可同时出现。调用次数不一样。onChange方法会根据文件当前的上传状态从而被调用多次(读取中&#xff…

WPF中的依赖属性

1.创建项目后下载两个NuGet程序包 2.创建一个MyButton类继承Button MyButton类如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Contro…

Java执行顺序大揭秘:静态块、非静态块和构造方法谁先谁后?

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello大家好,我是小米!今天咱们来聊聊Java中的一个小而重要的知识点——初始化块。可能有的小伙伴一听这名字就觉得有点头大,这东西到底是干嘛的?为…

【Linux系列】字符串操作的艺术:删除前缀的 Shell 脚本技巧

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

nginx 部署2个相同的vue

起因: 最近遇到一个问题,在前端用nginx 部署 vue, 发现如果前端有改动,如果不适用热更新,而是直接复制项目过去,会404 因此想到用nginx 负载两套相同vue项目,然后一个个复制vue项目就可以了。…

Maven(六)mvn 命令将 jar 包推送到 远程/本地仓库

目录 一、deploy - 推送到远程仓库1.1 命令语法:1.2 执行结果:1.3 可能遇到的问题问题1:with status code 401问题2:with status code 405问题3:Cannot deploy artifact from the local repository 二、install - 推送…

WEB 应用防护系统的部署方式

在当今数字化飞速发展的时代,WEB 应用面临着来自各方的安全威胁,而 WEB 应用防护系统(WAF)的部署成为了保障网络安全至关重要的环节。以下将详细介绍几种常见的 WEB 应用防护系统部署方式。根据 WAF 接入网络后的工作方式&#xf…

Java——静态成员

一、静态变量(Static Variables) 1、静态变量是什么 静态变量,又被称为类变量,它使用 static 关键字修饰。静态变量是类级别的变量,在类加载时初始化。 2、静态变量的特点 类级别共享:静态变量在所有实…

Java | Leetcode Java题解之第542题01矩阵

题目: 题解: class Solution {static int[][] dirs {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};public int[][] updateMatrix(int[][] matrix) {int m matrix.length, n matrix[0].length;// 初始化动态规划的数组,所有的距离值都设置为一个很大…

996引擎 - 活捉NPC

996引擎 - 活捉NPC 引擎触发 - 引擎事件(QF)事件处理模块 GameEvent测试文件参考资料 引擎触发 - 引擎事件(QF) cfg_game_data 配置 ShareNpc1 可以将QM和机器人的触发事件全部转到 QF 引擎触发是通用的,TXT的所有触发转换成小写后在LUA中就可使用,如说明书中缺省可反馈至对接群…

【Linux系统编程】第四十三弹---多线程编程指南:线程终止方式与C++11中的thread

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、线程终止 1.1、pthread_exit() 1.2、pthread_cancel() 1.3、pthread_detach() 2、C11中thread 1、线程终止 问题7 …

【Mac】PD报错:无法为“Windows” 完成操作,虚拟机ID无效的解决办法

Parallels Desktop是Mac上一款非常常用的虚拟机软件,但是在使用过程中,可能会遇到一些问题不知道如何处理。比如有时会遇到PD报错:无法为“Windows 11”完成操作,虚拟机ID无效。 错误原因 电脑上安装过虚拟机,虚拟机被…

25-RVIZ CARLA插件

RVIZ插件(RVIZ plugin)提供了一个基于RVIZ(RVIZ) ROS包的可视化工具。 用RVIZ运行ROS桥接 RVIZ插件需要一个名为ego_vehicle的自车。要查看ROS-bridge使用RVIZ的示例,请在运行CARLA服务器的情况下执行以下命令: 1. 启用RVIZ启动ROS桥接: # …

spark-本地模式的配置和简单使用

python环境的安装 在虚拟机中,只能安装一个python的版本,若想要安装别的版本,则需要卸载之前的版本——解决方式,安装Anaconda 通过百度网盘分享的文件:Anaconda3-2021.05-Linux-x86_64.sh 链接:https://…

【算法】递归+回溯+剪枝:78.子集

目录 1、题目链接 2、题目 3、解法(回溯剪枝) 4、代码 1、题目链接 78.子集(LeetCode) 2、题目 3、解法(回溯剪枝) 思路: 枚举子集(答案)的第一个数选谁,第二个数选谁,第三个数选谁&#x…

Aop+自定义注解实现数据字典映射

数据字典 Web项目开发中,字典表的一般都会存在,主要用来给整个系统提供基础服务。 比如男女性别的类型可以使用0和1来进行表示,在存储数据和查询数据的时候,就可以使用字典表中的数据进行翻译处理。 再比如之前做的一个项目中宠物…