【系统集成项目管理工程师教程】第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级的结果特征包括:

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

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

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

相关推荐
AI狂热粉实证1 小时前
部署策略的决策逻辑:在速度与安全之间找到动态平衡
业界资讯
大任视点5 小时前
WHiTENOOK发布2027春夏系列《融》 让服装与生活持续相遇
业界资讯
倍利福猎头公司官方账号1 天前
2026机器人猎头公司怎么选?收费标准与合作注意事项【HR版】
大数据·数据库·机器人·求职招聘·业界资讯
足球魅力3 天前
哪款足球软件能分析凯利指数大数据?
大数据·业界资讯
职场的momo3 天前
字节生活服务海量内推,挑战亿级订单与AI交易中台
人工智能·程序人生·面试·职场和发展·跳槽·生活·业界资讯
大任视点4 天前
成都公交智慧值守 暖心寻回耄耋患病老人
业界资讯
张继雁6 天前
不同类型磨削液使用安全注意事项
人工智能·深度学习·安全·业界资讯·远程工作·空间计算
WoooChi6 天前
DailyTech-20260902
人工智能·科技·业界资讯
敢敢是只喵i7 天前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
中科同志科技7 天前
真空回流炉高温合金元器件焊接炉实操教程:从参数设定到良率提升
大数据·人工智能·机器人·业界资讯