【系统集成项目管理工程师教程】第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个成熟度等级,从低到高特征各异,等级越高组织软件开发能力越强。

  1. 成熟度等级 :分为5个等级,从低到高依次为初始级、项目规范级、组织改进级、量化提升级和创新引领级,每个等级有不同结果和行为特征,高级别基于低级别实施并持续改进,成熟度等级的特征和提升过程在软考中常考查。

5.8本章练习

1.软件测试方法可分为静态和动态

静态测试指被测试对象不在机器上运行,只依靠需求规格说明书、设计以及源代码等进行结构分析和流程图分析,从而找出错误。

动态测试是指在计算机上实际运行程序,通过比较分析得到的结果与预期,同时评估效率和健壮性能等。

静态测试的优点是能够有效地发现逻辑设计和编码错误,但缺点是无法发现运行时错误。

动态测试的优点是能够发现运行时错误,但缺点是需要更多的资源和时间。

2.在软件过程能力成熟度模型(CSMM)中,3级的结果特征包括:

组织和项目使用统计分析技术建立了量化的质量与过程目标,支持组织业务的实现管理和实现预期的项目目标。
行为特征则包括:

依据组织的业务目标、管理要求以及外部监管需求,建立并持续改进组织标准过程和资产;

项目根据自身特征依组织标准过程和资产,在组织范围内能够稳定地实现预期的项目目标,并贡献过程资产。

相关推荐
考试宝3 天前
道路运输企业安全生产管理人员安全考核试题
网络·人工智能·笔记·安全·职场和发展·学习方法·业界资讯
猫先生Mr.Mao3 天前
AIGC月刊 | 技术可及,顺势而为(2024.10月第六期)【魔方AI新视界】
人工智能·语言模型·aigc·transformer·业界资讯·agi
考试宝5 天前
大学期末考-军事理论期末考试复习参考题库
经验分享·笔记·职场和发展·学习方法·业界资讯
每日摸鱼大王7 天前
互联网摸鱼日报(2024-12-11)
业界资讯
千瓜11 天前
2024年特别报告,「十大生活方式」研究数据报告
大数据·数据挖掘·数据分析·业界资讯·新媒体
CAD芯智库15 天前
哪款CAD/3D软件列入信创国产化名单,可在国产系统电脑安装?
经验分享·科技·业界资讯·信创cad软件·cad linux版·国产cad软件·中望cad
战场小包24 天前
AI潮汐日报1128期:Sora泄露引发争议、百度早期研究对AI领域Scaling Law的贡献、Meta发布系列AI开源项目
人工智能·aigc·业界资讯·agi·ai资讯
CAD芯智库25 天前
企业版中望3D正版多少钱?Proe、UG、Solidworks国产替代方案!
经验分享·3d·业界资讯·中望3d·国产三维cad软件
CAD芯智库25 天前
汽车轮毂结构分析有哪些?国产3D仿真分析实现静力学+模态分析
经验分享·科技·汽车·业界资讯·中望3d·国产三维cad软件
灵遁者书籍作品1 个月前
看风水的流程步骤主要包括以下几个阶段‌
学习方法·业界资讯·高考