第七章软件工程基础知识
软考高级系统架构设计师备考写着方便自己看如果有发现不对或少得的地方可以多多指正谢谢各位兄弟。一、软件工程基础概念1. 软件工程定义应用计算机、数学、管理科学原理用工程化方法解决软件问题目标是提效、提质、降本。例子电商系统开发不是随意堆代码而是按「需求调研→设计→编码→测试→上线」的工程流程推进避免后期大规模返工。2. 软件生命周期分3个阶段软件定义期可行性研究需求分析确定项目总目标软件开发期概要设计→详细设计→编码→测试实现系统功能运行维护期系统上线后交付用户使用持续迭代优化例子做校园二手交易小程序前期调研「能不能做、要做哪些功能」是定义期画原型、写代码、测bug是开发期上线后修复闪退、加「校园配送」功能是运行维护期。3. 软件文档分类用户文档描述系统功能和使用方法不关心实现逻辑比如APP操作指南、用户手册系统文档描述系统设计、实现、测试细节比如数据库设计文档、接口说明文档4. 软件工程PDCA过程PPlan规格说明编写《需求规格说明书》明确系统功能、运行限制DDo软件开发按规格说明落地代码实现CCheck软件确认验证开发成果是否满足用户需求比如用户试用、功能测试AAction软件演进运行中根据用户新需求迭代优化比如给二手交易小程序加「担保交易」功能5. 软件设计四活动数据设计设计用户表、商品表的字段结构软件结构设计拆分系统为前端页面、后端接口、数据库等独立模块人机界面设计设计小程序发布页的按钮位置、配色、交互逻辑过程设计设计「下单后库存自动扣减」的业务流转逻辑6. 软件工具分类类别工具举例开发工具Axure需求分析、IDEA编码、JUnit单元测试维护工具Git版本控制、JD-GUI逆向工程管理工具Jira项目管理、SonarQube代码质量检测二、经典软件过程模型高频考点1. 瀑布模型特点文档驱动、线性流程需求必须完全明确才能启动。优缺点阶段清晰、易管控但需求变更成本极高错误要到后期才会暴露。适用场景银行核心交易系统等需求极度稳定的项目。反例做到一半客户突然要求加「数字人民币转账」功能需要从头修改所有设计文档成本极高。2. 原型模型特点快速构建简易原型收集用户反馈逐步明确需求适合需求不明确的场景。例子客户要做全新的元宇宙社交APP自己也说不清功能细节先做个「捏脸聊天」的简易原型给用户试用再根据反馈调整需求。3. 螺旋模型特点瀑布模型原型模型的结合加入风险分析环节每个周期分「目标设定→风险分析→开发验证→评审」4步。适用场景航天控制系统等庞大、复杂、高风险的系统每一步都要排查算法可靠性避免上线后才发现致命问题。4. 增量模型特点分批次交付可独立运行的版本比瀑布模型更早让用户获得价值。例子做企业ERP系统第一个增量先做财务模块上线给财务部门使用第二个增量做供应链模块对接财务模块第三个增量做人力资源模块逐步拼成完整ERP。真题考点增量模型每次交付的都是可独立运行的产品原型仅用于演示不具备生产能力。5. 喷泉模型特点面向对象开发迭代无间隙各阶段无明显边界开发团队可同步工作。例子游戏开发时美术画角色原画的同时程序写角色移动的基础代码不用等原画全部完成再开工大幅提升效率但对文档管理要求极高。6. 基于构件的开发模型特点复用预制的成熟构件增强可靠性、降低成本。例子做电商系统不用自己开发支付功能直接复用支付宝SDK不用自己开发登录模块复用微信开放平台登录组件减少重复开发工作量。三、敏捷开发与统一过程RUP1. 敏捷开发核心四大宣言个体交互胜过过程和工具、可工作软件胜过详尽文档、客户合作胜过合同谈判、响应变化胜过遵循计划。核心思想适应型拥抱变化、以人为本、迭代增量开发。例子抖音每周发布一个小版本根据用户反馈动态调整推荐算法不用提前定死半年的功能计划。2. 主流敏捷方法极限编程XP强调结对编程、持续集成适合小团队做核心业务系统Scrum30天为一个「冲刺Sprint」每天站会同步进度比如做外卖APP第一个冲刺做商家入驻功能第二个冲刺做用户下单功能特征驱动开发FDD先构建整体对象模型再按「客户信息管理」「销售线索跟进」等特征逐个开发3. 统一过程RUP二维模型横向是9个核心工作流业务建模、需求、分析设计、实现、测试、部署、配置变更管理、项目管理、环境纵向是4个阶段初始阶段定项目愿景和范围比如「做一款面向中小微企业的报销系统」细化阶段确定系统架构比如前后端分离架构、制定开发计划和资源需求构造阶段编码、测试逐步完成报销申请、审批、对账等功能移交阶段上线部署给用户做操作培训核心特点用例驱动、以架构为中心、迭代增量。真题考点RUP的9个核心工作流不包含「成本管理」。41视图示例用例视图测试人员看功能覆盖、逻辑视图程序员看代码结构实现视图运维看部署包结构、进程视图性能测试人员看并发能力部署视图系统工程师看服务器拓扑四、能力成熟度模型CMM/CMMI1. CMM五级成熟度从低到高依次为初始级过程混乱靠个人能力经常延期比如小作坊写代码想到哪写到哪已管理级单个项目有规范的管控流程已定义级组织层面有统一开发标准所有项目按标准执行定量管理级用历史数据量化管控比如每个模块的开发时长误差不超过10%优化级持续优化流程定期复盘项目问题并更新规范2. CMMI两种表示方法阶段式和CMM一致分5个成熟度等级连续式按过程域单独评级比如配置管理达到4级需求管理达到3级五、逆向工程与软件复用1. 软件复用不止复用代码还包括复用需求、设计、文档、体系结构等。例子阿里的「中台战略」把用户、支付、物流等通用能力沉淀为中台新业务直接复用不用从零开发。2. 逆向工程四级抽象从低到高级别描述例子实现级抽象语法树、符号表等拿到编译后的class文件反编译得到代码结构结构级模块间的依赖关系分析代码得到调用图知道哪个函数调用了哪个函数功能级程序段的功能和关系分析得到「下单→扣库存→支付」的数据流模型领域级代码与业务领域的对应关系得到用户、订单、商品的E-R领域模型抽象级别最高真题考点结构级反映模块间的依赖关系功能级反映程序段的功能和关系。3. 相关概念辨析重构同一抽象级别转换系统描述比如把for循环改成Stream流写法功能不变仅优化实现形式再工程逆向工程新需求开发正向工程比如把老的Struts2系统重构为Spring Boot系统同时加微服务新功能正向工程基于逆向得到的设计文档修改系统比如根据逆向得到的数据库设计优化查询性能六、需求工程1. 需求三层结构层级描述例子业务需求组织/客户的高层目标老板要求「做一款提升销售效率的系统」用户需求用户的使用诉求销售提出「要能一键导出客户跟进记录」系统需求开发需落地的具体功能开发定义「系统需实现客户记录导出接口支持Excel格式单次最多导出1万条」系统需求又分为功能需求导出功能、非功能需求导出响应时间≤3秒、设计约束必须使用公司统一的MySQL数据库。2. 需求获取方法方法适用场景例子用户面谈需求复杂、用户少找10个销售一对一聊挖掘真实使用痛点需求研讨会快速对齐多方共识把销售、产品、开发拉到一起2天内对齐所有需求问卷调查用户量大、无法一一访谈给1000个用户发问卷统计最需要的TOP3功能原型法需求不明确做低保真原型让用户点击确认需求是否符合预期JRP联合需求计划关键用户参与组织关键用户、分析师、开发团队共同开会定需求3. 需求变更管理流程问题分析→变更描述→变更分析和成本计算→变更实现真题考点变更由CCB变更控制委员会审批CCB是决策机构不直接参与开发需求变更不是有利无弊会带来额外的成本和风险。例子项目中期客户要求加报表功能先评估需要多花5个人天、会影响现有进度提交CCB审批通过后再安排开发不能直接修改代码。4. 需求跟踪正向跟踪检查SRS里的每个需求是否都有对应的设计、代码、测试用例避免漏做功能反向跟踪检查代码、测试用例是否能追溯到SRS里的需求避免做无用功例子看到「导出客户记录」的代码要确认SRS里有对应的需求看到SRS里的「导出」需求要确认有对应的测试用例覆盖。七、结构化分析与设计1. 核心思想自顶向下、逐层分解面向数据流。2. 结构化分析工具1数据流图DFD4个基本元素外部实体系统外的人员/组织比如「考生」给考务系统提交报名单加工输入到输出的转换比如「成绩统计」模块把答题卡数据转为成绩单数据流数据的流向比如报名单从考生流向考务系统数据存储存储数据的介质比如存储成绩的数据库避坑「黑洞」加工只有输入没有输出比如成绩统计只有答题卡输入没有成绩单输出「奇迹」加工只有输出没有输入比如凭空生成成绩单「灰洞」输入不足以产生输出比如只有考生ID就想生成完整成绩单缺少考试数据分层示例顶层图只有一个「考务系统」的加工0层图拆分为「报名管理」「成绩管理」「证书管理」三个加工再往下每层拆分得更细。2数据字典给DFD中的元素做说明比如机票姓名日期航班号起点终点费用起点[北京|上海|广州]。3加工逻辑描述结构化语言比如「如果订单金额100元则免运费」判定表/判定树比如不同会员等级的折扣规则普通会员不打折银卡95折金卡9折用表格或树形结构清晰展示。3. 结构化设计1核心原则高内聚、低耦合耦合模块间依赖度从低到高为「非直接耦合→数据耦合→标记耦合→控制耦合→通信耦合→公共耦合→内容耦合」内容耦合最差严禁使用。例子数据耦合是模块A只给模块B传需要的用户ID是最优的耦合方式内容耦合是模块A直接修改模块B的局部变量是最差的耦合方式。内聚模块内部关联度从高到低为「功能内聚→顺序内聚→通信内聚→过程内聚→时间内聚→逻辑内聚→偶然内聚」功能内聚最优。例子功能内聚是模块只做「计算订单总价」一件事内聚最高偶然内聚是模块里既有计算价格的函数又有发邮件的函数完全无关内聚最低。真题考点耦合设计原则是「尽量用数据耦合少用控制耦合限制公共耦合禁用内容耦合」高内聚的典型是功能内聚。2设计工具工具特点适用场景程序流程图直观易懂但难描述数据结构简单程序逻辑设计N-S图盒图结构化强适合简单程序教学、简单模块设计PAD图体现自顶向下的设计过程结构化程序设计IPO图描述模块的输入、处理、输出单个模块的详细设计HIPO图层次图IPO图既看整体结构又看模块细节系统整体设计模块详细设计4. 结构化编程只用「顺序、选择、循环」三种控制结构一个入口一个出口禁止使用goto语句跳转。八、软件测试1. 测试基本原则尽早测试、持续测试避免开发人员自己测试自己的代码既要测试合理输入也要测试不合理输入比如登录功能要测试空密码、超长账号等场景严格按测试计划执行妥善保存测试用例、测试报告2. 测试方法类型特点常用技术静态测试不运行程序人工/工具检测桌前检查、代码审查、代码走查能发现30%-70%的错误动态测试运行程序检测黑盒测试功能测试不看代码比如测下单功能是否正常、白盒测试结构测试看代码逻辑比如覆盖所有if-else分支真题考点静态测试是不运行程序的检测黑盒测试是功能测试不考虑内部实现。3. 测试阶段阶段测试对象测试依据特点单元测试单个模块详细设计说明书测模块内部逻辑和数据结构集成测试模块组合概要设计文档测模块间接口是否正确比如下单后库存是否扣减确认测试完整系统需求规格说明书Alpha测试开发环境下用户测试开发在场、Beta测试真实环境下用户测试开发不在场、验收测试用户主导是是否接收软件的核心依据系统测试完整集成系统用户需求/开发合同测功能、性能、压力、安全等比如电商大促时能否扛住10万并发回归测试变更后的系统变更需求验证变更部分是否正确同时确保原有功能没有被改坏真题考点系统测试依据是需求规格说明书回归测试的目的是验证变更不影响原有功能。九、调试、度量与维护1. 调试测试发现bug后定位问题并修复常用方法回溯法从报错位置往回追溯代码查找参数错误来源原因排除法列出所有可能的原因逐一排查演绎法、归纳法、二分法注意谁开发的代码谁负责调试。2. 软件度量McCabe环路复杂度基于程序控制流计算逻辑复杂度公式V(G)E-N2E是边数N是节点数复杂度越高越难维护一般超过10就需要重构。例子一个程序有10个节点、12条边复杂度12-1024需要至少4个测试用例覆盖所有路径。真题考点环路复杂度封闭区域数1比如有3个封闭区域复杂度为4。3. 软件维护1遗留系统演化策略策略适用场景例子淘汰技术过时、业务价值低老旧的单机版员工考勤系统直接弃用继承技术过时、业务价值高银行核心交易系统暂时不动周边对接新系统集成技术先进、业务价值低某部门单独使用的报表系统把数据接入新的大数据平台改造技术先进、业务价值高老电商平台重构为微服务架构提升性能真题考点技术含量高、业务价值低、仅能服务单个部门的遗留系统采用集成策略。2系统转换方法方法特点适用场景直接转换直接停用旧系统启用新系统成本低、风险高小系统比如部门内部通知系统并行转换新旧系统并行运行1-3个月风险极低、成本高大系统比如银行核心交易系统分段转换分批次替换子系统平衡成本和风险超大系统比如政务一体化平台先上社保模块再上医保模块3维护类型占比从高到低完善性维护50%-60%扩充功能、改善性能比如给电商系统加直播带货功能适应性维护适应环境变化比如安卓14更新后APP适配新的权限规则正确性维护修复测试阶段未发现的问题比如修复支付失败的bug预防性维护为未来变化做准备比如提前把系统从Java 8升级到Java 17避免官方停止维护后出现问题十、净室软件工程与基于构件的软件工程1. 净室软件工程核心思想是「第一次就把事情做对」用数学和统计方法在设计阶段消除错误理论上提倡不做单元测试追求零缺陷。适用场景军工、航天等对可靠性要求极高的系统。真题考点净室软件工程不是真的不做模块测试只是理论上提倡实际落地仍需测试理论基础是函数理论和抽样理论。2. 基于构件的软件工程CBSE核心是「购买而非重构」用预制构件组装系统构件需满足5个特征可组装、可部署二进制形式无需编译、文档化、独立、标准化。1构件组装方式顺序组装上一个构件的输出是下一个的输入比如先调用支付构件再把支付结果传给订单构件层次组装一个构件调用另一个构件的服务比如订单构件调用库存构件的扣减库存服务叠加组装多个构件合并成新构件对外提供新接口比如把用户、支付、订单构件合并成电商核心构件真题考点构件组装方式不包括循环组装。2接口不兼容问题解决通过适配器解决参数不兼容接口操作名相同但参数类型/个数不同比如A构件要String类型的用户IDB构件传的是Long类型写适配器做类型转换操作不兼容接口操作名不同比如A构件叫getUserB构件叫queryUser适配器做名称映射操作不完备一个构件的提供接口是另一个的子集比如B构件有查询、新增、删除用户功能A构件只有查询功能适配器补全缺失的操作真题考点一个构件的提供接口是另一个构件请求接口的子集属于操作不完备问题。十一、软件项目管理1. 4P管理人员Person、产品Product、过程Procedure、项目Project是项目管理的核心要素。2. 进度管理工具工具优点缺点甘特图清晰展示任务的起止时间、并行情况无法体现任务间的依赖关系难以识别关键路径PERT图能识别关键路径、计算松弛时间绘制复杂不如甘特图直观真题考点关键路径从开始到结束的最长路径总长度是项目最短工期关键路径上的活动松弛时间为0延期会直接影响项目总工期。松弛时间最迟开始时间-最早开始时间关键路径总时间-包含该活动的最长路径总时间。例子某项目关键路径为ACFIJ总长度58天F→H在关键路径上一旦延期就会影响整个项目进度。3. 软件配置管理核心是版本控制和变更控制基线开发阶段的里程碑节点比如需求基线评审通过后后续修改需走正式变更流程软件配置项SCI配置管理的基本单位包括代码、文档、配置文件等4. 软件质量特性可维护性修改缺陷、增加功能、提升质量的难易程度可测试性验证软件正确性的难易程度可扩展性增加新功能的难易程度可伸缩性用户/数据量增长时系统维持高服务质量的能力比如电商大促时扩容服务器即可扛住流量真题考点定位修改点的难易程度是可维护性用户量增加维持服务能力是可伸缩性。5. 风险管理风险识别识别已知风险比如开发人员离职、可预测风险比如第三方接口不稳定风险预测评估风险发生概率和影响程度风险评估对比成本、进度、性能三个基准线判断风险影响风险控制提前规避风险比如招备份人员、和第三方签SLA协议

相关新闻

幻兽帕鲁存档编辑完全指南:3种方法轻松管理游戏进度

幻兽帕鲁存档编辑完全指南:3种方法轻松管理游戏进度

幻兽帕鲁存档编辑完全指南:3种方法轻松管理游戏进度 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 幻兽帕鲁存档编辑、游戏数据修改、…

2026/7/30 2:09:34 阅读更多 →
3分钟极速上手:用这款开源工具轻松找回加密压缩包密码

3分钟极速上手:用这款开源工具轻松找回加密压缩包密码

3分钟极速上手:用这款开源工具轻松找回加密压缩包密码 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因为忘记加密压…

2026/7/30 2:09:34 阅读更多 →
C++ 中 explicit 详解:阻止隐式类型转换的利器

C++ 中 explicit 详解:阻止隐式类型转换的利器

C 中 explicit 详解:阻止隐式类型转换的利器一、引言:隐式转换的隐患在 C 中,单参数构造函数(以及 C11 起的多参数构造函数,通过大括号初始化)默认可以作为隐式类型转换运算符使用。这种自动转换在某些场景下很方便,但…

2026/7/30 2:09:34 阅读更多 →

最新新闻

深入解析C++ new与delete:从内存管理原理到现代智能指针实践

深入解析C++ new与delete:从内存管理原理到现代智能指针实践

1. 项目概述:为什么我们需要重新审视 new 和 delete?在C的世界里,new和delete这对操作符就像空气和水一样基础,几乎每个写过C程序的人都会用到。但正因为太基础,很多人反而对它们一知半解,停留在“new就是申…

2026/7/30 2:19:37 阅读更多 →
ToDesk被控端双屏切换教程,远程办公效率翻倍

ToDesk被控端双屏切换教程,远程办公效率翻倍

Hello大家,在现代办公环境中,小编发掘双屏显示已渐渐成为提高工作效率的标配。无论是设计师对比图稿、程序员调试代码,还是金融从业者实时追踪数据,双屏都能让工作流更加顺畅。然而,当我们需要远程操作办公室电脑时&am…

2026/7/30 2:19:37 阅读更多 →
Unity UI性能优化:实现自定义圆角RawImage精准点击检测

Unity UI性能优化:实现自定义圆角RawImage精准点击检测

1. 项目概述:为什么UI点击性能会成为Unity项目的“隐形杀手”?在Unity项目开发中,尤其是移动端或包含大量UI元素的复杂应用里,我们常常会遇到一个看似不起眼却影响巨大的问题:UI点击响应迟钝、卡顿,或者在某…

2026/7/30 2:19:37 阅读更多 →
豆包还能这么用?教你用豆包生成bat代码,一键释放电脑性能

豆包还能这么用?教你用豆包生成bat代码,一键释放电脑性能

引言你是不是也遇到过这样的情况:电脑配置明明很高,但打游戏的时候总是掉帧、卡顿,感觉性能根本没有完全发挥出来?别急着怀疑硬件,问题可能出在系统设置上。今天分享一个豆包的小妙招,不用安装任何第三方软…

2026/7/30 2:19:37 阅读更多 →
智能眼镜实时翻译开发:Android音频流处理与镜片显示技术

智能眼镜实时翻译开发:Android音频流处理与镜片显示技术

在实际智能眼镜开发中,把实时翻译功能集成到镜片显示层,既要保证翻译准确性和低延迟,又要处理多语言文本渲染、音频流处理和硬件资源分配,是一个典型的软硬件结合挑战。Rokid Glasses 这类设备通常运行定制化 Android 系统&#x…

2026/7/30 2:19:37 阅读更多 →
PhotoRec数据恢复工具:480+文件格式的专业级免费恢复实战指南

PhotoRec数据恢复工具:480+文件格式的专业级免费恢复实战指南

PhotoRec数据恢复工具:480文件格式的专业级免费恢复实战指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk PhotoRec作为TestDisk套件的核心组件,是一款完全免费的开源数据恢复软件&…

2026/7/30 2:18:36 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻