系统架构师备考:软件工程 | 概述
一、为什么需要软件工程软件危机1.1 软件危机定义早期软件开发以“个人作坊式”开发为主无规范、无流程、无标准。随着软件规模变大、复杂度提升、需求迭代加快出现了一系列无法规避的严重问题统称为软件危机。1.2 软件危机核心表现选择题高频进度失控项目普遍延期无法按期交付成本超支研发成本远超预算投入不可控质量低下BUG多、稳定性差、性能不达标维护困难代码混乱、无文档、耦合严重后期迭代改不动需求混乱需求频繁变更、需求理解不一致复用性差重复造轮子无标准化组件1.3 软件危机解决办法彻底解决软件危机的核心方案用工程化的思想开发软件。借鉴传统工程建筑、机械的标准化、流程化、规范化理念将软件开发从“个人艺术创作”转变为“规模化工程生产”由此诞生了软件工程学科。二、软件工程核心定义与三要素2.1 软件工程定义软件工程是一门指导计算机软件开发和维护的工程学科。核心目标以最低的成本、最短的周期、最高的质量开发并维护满足用户需求的软件产品。2.2 软件工程三要素方法、工具、过程三要素是软件工程的基石也是软考固定考点缺一不可方法怎么做提供软件开发的标准化技术与方法论包含需求分析、设计、编码、测试、维护的全套技术手段解决“如何科学开发”的问题。工具提效率辅助开发的自动化、可视化工具例如建模工具、IDE、测试工具、项目管理工具用于提升效率、减少人工错误。过程管流程规范开发的阶段、活动、产出物、管控机制定义每个阶段“做什么、谁来做、按什么标准做”保障项目可控、可追溯、可落地。速记口诀方法解决技术问题工具解决效率问题过程解决规范问题。三、软件生命周期软件生命周期是指软件从立项诞生到退役消亡的完整全过程所有开发模型、过程管理、质量管控均围绕生命周期展开。标准六大阶段软考官方划分3.1 可行性研究与立项项目启动第一阶段核心判断值不值得做、能不能做。包含技术可行性、经济可行性、社会可行性、操作可行性、法律可行性最终输出《可行性研究报告》决定项目是否立项。3.2 需求分析核心目标明确用户要什么是软件质量的源头。细分业务需求、用户需求、功能需求、非功能需求性能、安全、可用性、兼容性。输出《需求规格说明书SRS》。3.3 软件设计核心目标确定系统怎么做分为两个层级概要设计架构设计整体架构、模块划分、接口定义、拓扑结构架构师核心工作详细设计模块内部逻辑、算法、数据结构、代码实现细节3.4 编码实现依据设计文档完成代码编写、单元开发将设计方案转化为可运行的软件程序。3.5 软件测试验证软件功能、性能、安全性是否符合需求尽早发现缺陷、降低修复成本。包含单元测试、集成测试、系统测试、验收测试。3.6 运行与维护周期最长、成本最高软件交付后持续运行、迭代优化、缺陷修复、环境适配。重点考点软件维护占据软件全生命周期60%~80%总成本。维护四类改正性维护、适应性维护、完善性维护、预防性维护。四、软件工程四大核心目标所有软件工程方法、流程、工具最终只为达成四个目标可维护性代码规范、结构清晰、易于迭代修改可复用性模块、组件可复用减少重复开发可移植性软件可适配不同环境、不同平台高质量、高效率低成本、短周期、低缺陷五、软件过程与软件过程模型基础铺垫5.1 软件过程定义软件过程是指软件开发中一系列活动、步骤、规范、产出物的集合用来约束团队开发行为让项目标准化、可控化。5.2 常见过程模型软件过程模型是软件开发的标准化流程框架贯穿软件全生命周期。主要有7种主流开发模型瀑布、增量、迭代、螺旋、原型、敏捷、统一过程RUP。7种模型按「传统线性模型 → 迭代演化模型 → 敏捷模型」三大类划分整体定位速览如下传统线性模型阶段串行、流程固定瀑布模型最经典基础模型严格线性串行开发阶段固化、文档齐全适配需求固定、变更极少、强合规项目。V模型瀑布模型优化版开发与测试阶段一一对应测试前置主打高可靠、高质量、低缺陷的严苛场景。迭代演化模型动态适配、持续优化原型模型核心解决需求模糊、用户认知不足问题通过快速原型试错明确需求边界后正式开发。增量模型模块化拆分系统分批迭代、逐块交付优先落地核心功能适合大型项目、阶段性交付场景。迭代模型整体架构一次性搭建多轮全局迭代打磨优化适配需求小幅波动、持续版本升级的产品项目。螺旋模型风险驱动型模型融合迭代与风险评估全程管控风险专属超大、复杂、高风险科研军工类项目。敏捷模型现代主流、拥抱变化敏捷模型轻流程、重交付、强协作短周期快速迭代灵活适配需求频繁变更、互联网快速试错场景是当下主流开发模式。六、软件工程核心原则模块化原则高内聚、低耦合拆分复杂系统抽象与封装原则屏蔽底层细节简化上层调用可追溯原则需求、设计、测试全程可追溯迭代优化原则持续改进、持续修复、持续优化用户导向原则所有开发围绕用户真实需求展开七、高频易错考点避雷八、考场极速秒杀口诀❌ 误区软件工程只管代码开发 ✅ 正解软件工程覆盖全生命周期包含立项、需求、设计、测试、运维、维护❌ 误区软件危机是技术不够先进 ✅ 正解软件危机本质是无工程化规范、无流程管控❌ 误区开发阶段成本最高 ✅ 正解维护阶段成本最高软件危机 → 进度超期、成本超支、质量差、难维护软件工程三要素 → 方法、工具、过程生命周期最贵阶段 → 运行维护质量源头阶段 → 需求分析架构师核心工作阶段 → 软件概要设计❌ 误区三要素包含人员、技术、流程 ✅ 正解标准三要素方法、工具、过程❌ 误区需求阶段不重要 ✅ 正解需求缺陷修复成本最高需求是质量源头下期预告系统架构师备考软件工程 | 过程模型系统架构师备考操作系统基础