第5章软件工程是软考高项技术部分的核心章节,是上午选择题分值占比最高的章节之一。本章覆盖软件全生命周期的核心技术与管理方法,知识点多但逻辑清晰,本文严格贴合考试考点,用通俗语言拆解难点、标注易混点和默写重点,零基础也能快速掌握核心内容。
一、软件工程基础【核心定位】
软件工程是应用计算机科学、数学及管理科学原理,以工程化原则和方法解决软件问题的工程,核心目标是提高软件生产率、提升软件质量、降低软件成本。
1.1软件工程三大组成
1.方法:完成软件工程项目的技术手段,支持整个软件生命周期。
2.工具:智力和体力的延伸,自动/半自动支持开发、管理和文档生成。
3.过程:贯穿开发全环节,管理人员对质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪、配置管理等。
二、软件架构【高频选择题考点】
软件架构研究的根本目的是解决软件的复用、质量和维护问题,核心内容包括架构描述、风格、评估和形式化方法。
2.1五大通用软件架构风格(Garlan&Shaw分类)
架构风格 | 核心子类型 | 核心特点 |
数据流风格 | 批处理序列、管道/过滤器 | 按顺序处理数据流,输入输出连续 |
调用/返回风格 | 主程序/子程序、数据抽象和面向对象、层次结构 | 自上而下调用,模块化强 |
独立构件风格 | 进程通信、事件驱动 | 构件独立,通过消息或事件交互 |
虚拟机风格 | 解释器、基于规则的系统 | 模拟特定环境执行代码 |
仓库风格 | 数据库系统、黑板系统、超文本系统 | 以中央共享数据源为核心 |
2.2架构评估核心概念
•敏感点:一个或多个构件(或关系)的特性,影响单个质量属性。
•权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
•三类评估方式:基于调查问卷/检查表、基于场景(最常用)、基于度量。
•基于场景的评估:用刺激、环境、响应三方面描述场景,代表方法有架构权衡分析法、软件架构分析法。
三、软件需求【选择题核心】
软件需求是用户对系统在功能、行为、性能、设计约束等方面的期望,是软件开发的基础。
3.1需求的三个层次【必考】
1.业务需求:组织或用户高层次的目标要求,描述“为什么要做”。
2.用户需求:用户的具体目标和要完成的任务,是用户原始需求的核心。
3.系统需求:从系统角度的需求,包括:
○功能需求:软件必须具备的功能;
○非功能需求:可靠性、性能、响应时间、容错性、扩展性等属性;
○设计约束:对解决方案的限制条件。
3.2质量功能部署(QFD)三类需求
1.常规需求:用户认为系统应该做到的,实现越多越满意。
2.期望需求:用户想当然认为应具备的,没实现会严重不满意。
3.意外需求(兴奋需求):用户要求范围外的,实现了会惊喜,不实现也不影响购买决策。
3.3需求过程与获取方法
•需求过程:需求获取→需求分析→需求规格说明书编制→需求验证与确认。
•常用需求获取方法:用户访谈、问卷调查、采样、情节串联板、联合需求计划。
3.4好需求的特性
无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性。
四、需求分析方法【高频考点】
4.1结构化分析(SA)方法
•核心:数据字典,围绕核心有三个层次的模型:
a.数据模型:用E-R图表示,描述实体、属性和关系;
b.功能模型:用数据流图(DFD)表示,描述数据传递和加工;
c.行为模型:用状态转换图(STD)表示,描述系统状态和转换事件。
•数据字典:对数据流图中所有元素的详细说明,是分析阶段最重要的工具。
4.2面向对象分析(OOA)方法
•基本任务:找出问题域的类和对象,定义其属性、职责和关系。
•OOA模型包括:
a.用例模型:描述系统外部需求,核心是用例;
b.分析模型:展示系统静态结构和动态行为,包括领域模型(概念类)。
五、统一建模语言(UML)【选择题必考核心】
UML是通用的建模语言,结构包括构造块、规则、公共机制三部分。
5.1UML构造块
1.事物(建模元素):
○结构事物(静态):类、接口、用例、构件、节点等7种;
○行为事物(动态):交互、状态机;
○分组事物:包(仅存在于开发阶段);
○注释事物:解释部分。
2.四大关系:
○依赖:一个事物变化影响另一个;
○关联:对象之间的连接关系;
○泛化:一般与特殊的继承关系;
○实现:类实现接口的契约。
5.2UML14种图(核心分类)
图类型 | 核心用途 |
静态图 | 类图、对象图、构件图、组合结构图、部署图、制品图、包图 |
动态图 | 用例图、顺序图、通信图、定时图、状态图、活动图、交互概览图 |
•高频考点:顺序图强调消息时间次序;通信图强调对象结构组织;状态图描述对象基于事件的动态行为;活动图本质是流程图,描述控制流和数据流。
5.3UML五大视图
1.用例视图:最基本的需求分析模型,外部视角;
2.逻辑视图(设计视图):展示系统内部功能实现;
3.进程视图:描述并发与同步结构;
4.实现视图:建模物理代码文件和构件;
5.部署视图:描述软件到硬件的映射和分布。
5.4用例模型核心关系
1.包含关系:提取公共行为,缺少包含用例,基用例不完整;
2.扩展关系:分离可选分支,缺少扩展用例,不影响基用例完整性;
3.泛化关系:多个用例的共性抽象为父用例,子用例继承父用例特性。
六、软件设计
6.1结构化设计(SD)
•核心思想:自顶向下、逐层分解、模块化,目标是确定软件结构。
•阶段划分:
a.概要设计(总体结构设计):分配功能到模块,形成模块结构图;
b.详细设计:输入输出、处理流程、数据存储、界面设计等。
•核心原则:高内聚,低耦合。
6.2面向对象设计(OOD)七大原则【选择高频】
1.单职原则:一个类只有一个变化原因(对应高内聚);
2.开闭原则:对扩展开放,对修改封闭;
3.里氏替换原则:子类可以替换父类,不改变父类原有功能;
4.依赖倒置原则:依赖抽象,不依赖具体实现;针对接口编程;
5.接口隔离原则:多个专门接口优于单一总接口;
6.组合重用原则:优先使用组合,而非继承实现重用;
7.迪米特原则(最少知识法则):一个对象对其他对象了解越少越好(对应低耦合)。
6.3设计模式分类
按目的和用途分为三类,记住分类即可:
1.创建型模式:用于创建对象,如工厂方法、抽象工厂、单例、原型、建造者;
2.结构型模式:处理类或对象的组合,如适配器、桥接、装饰、外观、代理;
3.行为型模式:描述对象交互和职责分配,如职责链、命令、观察者、策略、模板方法。
七、软件配置管理【选择题考点】
软件配置管理的核心是版本控制和变更控制,核心活动包括:
1.软件配置管理计划;
2.软件配置标识:识别配置项,建立基线;
3.软件配置控制:管理生命周期中的变更;
4.软件配置状态记录;
5.软件配置审计;
6.软件发布管理与交付。
八、软件编码【基础考点】
•程序质量主要取决于软件设计质量。
•程序设计风格:源程序文档化、数据说明、语句结构、输入输出方法。
•程序复杂性度量:功能点估算法(FP=35ILF+15EIF)。
•编码效率:程序效率、算法效率、存储效率、I/O效率。
九、软件测试【选择+案例】
软件测试的核心目的是发现软件错误,成功的测试是发现了至今未发现的错误的测试。
9.1测试方法分类
1.静态测试:不运行程序,包括文档检查、桌前检查、代码走查、代码审查;
2.动态测试:运行程序,对比实际结果与预期结果。
9.2动态测试两大方法
方法 | 别名 | 核心 | 适用阶段 | 常用技术 |
白盒测试 | 结构测试 | 检查程序内部逻辑和路径 | 单元测试 | 逻辑覆盖、循环覆盖、基本路径测试 |
黑盒测试 | 功能测试 | 不看内部,只检查功能是否符合需求 | 集成、确认、系统测试 | 等价类划分、边界值分析、判定表、因果图 |
9.3软件测试六大阶段
测试阶段 | 测试对象 | 技术依据 | 核心目标 |
单元测试 | 单个模块/类 | 详细设计说明书 | 检查模块内部功能和逻辑 |
集成测试 | 组装后的模块 | 概要设计文档 | 发现接口相关问题 |
确认测试 | 软件功能和性能 | 需求规格说明书 | 验证是否符合用户需求 |
系统测试 | 完整的集成系统 | 软件开发合同、系统设计文档 | 真实环境下验证系统整体功能和性能 |
配置项测试 | 软件配置项 | SRS(含接口需求) | 检验配置项与需求的一致性 |
回归测试 | 变更后的软件 | 原需求和设计 | 验证变更正确性,不影响原有功能 |
十、软件部署交付【选择题高频考点】
10.1三大部署模式
1.单机软件部署:适用于单机类型软件;
2.集中式服务器部署:适用于用户量小(500人以下)的中小组织;
3.基于微服务的分布式部署:适用于高并发云原生应用,借助容器和DevOps技术。
10.2核心部署策略
1.蓝绿部署:准备新旧两个版本,通过域名切换用户环境,出问题快速回滚;
2.金丝雀部署:先让少量用户使用新版本,验证无误后逐步全量推广。
10.3持续交付优势
•缩短提交到上线时间,降低部署风险;
•快速反馈,及时修复缺陷;
•软件全生命周期处于可部署状态;
•简化部署步骤,版本清晰可控。
十一、软件过程能力成熟度模型(CSMM)【易混考点】
CSMM是我国自主的软件过程能力成熟度模型,核心包括4个能力域和5个成熟度等级。
11.1四大能力域
1.治理:战略与治理、目标管理;
2.开发与交付:需求、设计、开发、测试、部署、服务、开源应用;
3.管理与支持:项目策划、监控、结项、质量保证、风险管理、配置管理、供应商管理;
4.组织管理:过程管理、人员能力、组织资源、过程能力管理。
11.2五大成熟度等级(口诀:一不二计三稳四量五创)
等级 | 名称 | 核心特征 |
1级 | 初始级 | 过程不确定,依赖个人能力 |
2级 | 项目规范级 | 项目基本按计划实现,有基础管理规范 |
3级 | 组织改进级 | 组织级标准化过程,稳定实现项目目标 |
4级 | 量化提升级 | 量化管理过程,建立绩效基线和模型 |
5级 | 创新引领级 | 持续优化革新,引领行业发展 |
十二、本章最简记忆总结(考前必背)
1.软件工程三要素:方法、工具、过程;架构五大风格:数据流、调用返回、独立构件、虚拟机、仓库。
2.需求三层:业务、用户、系统;QFD三类:常规、期望、意外。
3.结构化分析核心:数据字典+E-R图+DFD+STD;OOA核心:用例模型+分析模型。
4.UML四大关系:依赖、关联、泛化、实现;用例三关系:包含、扩展、泛化。
5.OOD七大原则:单职、开闭、里氏替换、依赖倒置、接口隔离、组合重用、迪米特。
6.设计模式三类:创建型、结构型、行为型;测试方法:静态+动态,白盒看逻辑,黑盒看功能。
7.测试六阶段:单元→集成→确认→系统→配置项→回归;部署策略:蓝绿全量切换,金丝雀灰度发布。
8.CSMM四域:治理、开发交付、管理支持、组织管理;五级:初始、规范、改进、量化、创新。
往期文章推荐:
——未完待续,期望你的关注——
版权声明:本公众号注明原创的内容版权,属于本公众号作者所有。未经本公众号作者许可,禁止转载!
本公众号标注为转载的内容,版权归原作者所有,仅供学习参考和交流之用。如有侵犯原作者权益,请及时联系我们删除。
夜雨聆风