一、引言
软件工程是软考软件设计师考试的核心章节,根据历年考试统计,该章节平均分值约 11 分,全部以选择题形式考查,是考生必须系统掌握的重点内容。软件工程的核心定义是应用工程化的原则、方法和技术来开发和维护软件,核心目标是提高软件生产率、保证软件质量、降低软件开发和维护成本。本文将从软件工程基本原理、软件生存周期、软件过程成熟度模型、经典软件过程模型、敏捷方法五个维度构建完整知识体系,覆盖所有高频考点,为考生高分通过考试提供支撑。
二、软件工程基本原理与软件生存周期
2.1 软件工程七大基本原理
软件工程七大基本原理由 B.W.Boehm 于 1983 年提出,是软件工程学科的核心理论基础,所有软件开发过程的设计都围绕这些原理展开:
用分阶段的生命周期计划严格管理:将软件生命周期划分为多个独立阶段,每个阶段制定明确的可执行计划,所有项目活动都按照计划推进,项目进度偏差超过 10% 时必须启动调整机制
坚持阶段评审:每个阶段结束后都必须开展正式技术评审和管理评审,30%~40% 的软件缺陷可以在需求和设计阶段的评审中被发现,避免缺陷流入下游阶段导致修复成本指数级上升
实行严格的产品控制:采用配置管理机制实现版本控制和变更控制,所有需求变更必须遵循正式的变更申请、评估、审批、执行、验证流程,防止软件产品出现版本混乱
采用现代程序设计技术:使用结构化程序设计、面向对象程序设计、低代码开发等现代技术,能够提升代码可读性、可维护性,平均降低 30% 的开发和维护成本
结果应能清楚地审查:制定明确的阶段产出物规范,每个阶段的工作成果都必须是可验证、可量化的文档或可运行产品,避免模糊的产出标准导致项目进度失控
开发小组的人员应该少而精:核心开发团队规模控制在 7±2 人以内,减少团队沟通成本,人员过多会导致沟通路径呈平方级增长,降低开发效率
承认不断改进软件工程实践的必要性:定期对开发过程进行度量和复盘,持续优化开发流程,实现过程的迭代改进
2.2 软件生存周期七阶段
软件生存周期是软件从概念提出到最终退役的完整过程,共分为七个核心阶段,每个阶段的核心任务和产出物是考试必考点:
可行性分析与项目开发计划阶段:核心任务是从技术、经济、操作、法律四个维度评估项目的可行性,核心产出物为可行性研究报告和项目开发计划,明确项目的边界、进度、成本、资源要求
需求分析阶段:核心任务是明确软件系统 "做什么",通过用户访谈、需求建模、需求评审等活动获取并确认用户需求,核心产出物为软件需求规格说明书 (SRS),是后续所有开发活动的基准
概要设计阶段:核心任务是明确软件系统 "怎么做" 的顶层设计,完成软件体系结构设计、模块划分、接口定义、数据架构设计,核心产出物为概要设计说明书,明确模块之间的调用关系和交互规则
详细设计阶段:核心任务是细化每个模块的内部实现逻辑,完成算法设计、数据结构设计、用户界面细节设计,核心产出物为详细设计说明书,是编码阶段的直接依据
编码阶段:核心任务是根据详细设计文档,使用指定的程序设计语言实现每个模块的功能,产出物为可运行的代码模块和代码注释文档
测试阶段:核心任务是验证软件是否满足需求规格说明的要求,分为单元测试、集成测试、系统测试、验收测试四个层级,核心产出物为测试计划、测试用例、测试报告,通常测试阶段的工作量占整个项目工作量的 40% 以上
维护阶段:是软件生存周期中时间最长的阶段,占整个生命周期总工作量的 60%~70%,核心任务是在软件交付使用后,根据用户需求的变化或运行环境的变化对软件进行修改,分为正确性维护、适应性维护、完善性维护、预防性维护四类

软件生存周期七阶段流程图
(标注每个阶段的核心任务、产出物和阶段间的输入输出关系)
三、软件过程成熟度模型
软件过程成熟度模型是衡量软件组织开发能力水平的标准化标尺,是软考的高频考点,分为 CMM 和 CMMI 两个核心版本:
3.1 CMM (能力成熟度模型)
CMM 是由美国卡内基梅隆大学软件工程研究所提出的单领域过程成熟度模型,共分为 5 个等级,每个等级对应不同的过程能力水平:
初始级 (1 级):软件过程是无序的,项目成功依赖于核心人员的个人能力,没有统一的过程规范,项目进度、成本、质量不可预测
可重复级 (2 级):建立了基本的项目管理过程,能够跟踪项目的成本、进度和功能特性,类似项目的成功经验可以重复应用
已定义级 (3 级):软件过程和管理过程都已经文档化、标准化,形成了组织级的标准过程集,所有项目都采用裁剪后的标准过程开展开发活动
已管理级 (4 级):对软件过程和产品质量有详细的度量数据,能够定量地理解和控制软件过程,产品质量是可预测的
优化级 (5 级):能够利用过程度量数据和新技术反馈,持续不断地改进组织过程,实现过程能力的螺旋式提升
3.2 CMMI (能力成熟度模型集成)
CMMI 是 CMM 的升级版本,整合了多个领域的过程改进要求,有两种表示方法:
阶段式模型:与 CMM 的分级结构类似,共分为 5 个等级,关注组织整体的过程成熟度,从组织层面统一衡量过程改进的效果
连续式模型:不采用统一的成熟度等级划分,而是针对每个独立的过程域单独评估能力等级,共分为 CL0 (未完成级)、CL1 (已执行级)、CL2 (已管理级)、CL3 (已定义级)、CL4 (已量化管理级)、CL5 (优化级) 6 个能力等级,允许组织根据自身需求选择特定过程域进行优先改进

CMM 与 CMMI 等级对应关系图
(标注两种模型的核心特征和适用场景)
四、七大经典软件过程模型
软件过程模型是软件开发活动的组织框架,明确了开发阶段的划分、阶段间的关系和执行顺序,是本章的重中之重,必须掌握每种模型的核心原理、优缺点和适用场景:
4.1 瀑布模型
瀑布模型是最早提出的线性顺序开发模型,核心特征是阶段间具有严格的因果关系,前一阶段的输出是后一阶段的唯一输入,整个开发过程如瀑布流水般逐级下落,以文档作为各阶段的核心驱动要素。优点是过程清晰、管理简单,每个阶段的产出明确,适合需求非常稳定、在项目初期就可以完整明确所有需求的项目;缺点是灵活性差,无法很好地应对需求变更,用户直到开发后期才能看到可运行的产品,需求偏差发现晚,修复成本高。
4.2 增量模型
增量模型将软件系统按照功能优先级划分为多个独立的增量模块,逐块开发、逐块构建、逐块交付,第一个交付的增量通常是核心功能模块。优点是能够在较短时间内交付部分可用功能,用户可以尽早熟悉系统,优先级高的功能首先交付,会接受更多的测试,整体质量更有保障;缺点是需要良好的架构设计支持,确保后续增量可以顺利集成到现有系统中,否则容易出现架构腐化问题。
4.3 原型模型
原型模型的核心是在需求分析阶段快速构建一个可运行的简化版原型系统,通过与用户交互澄清模糊需求,再基于确认后的需求开展正式开发。优点是能够有效降低需求理解偏差,适合需求模糊、需求不明确的中小型项目;缺点是快速构建的原型通常在架构和代码质量上存在缺陷,容易导致后续开发遗留技术债务。
4.4 螺旋模型
螺旋模型是瀑布模型、原型模型与风险分析相结合的过程模型,将开发过程划分为多个循环周期,每个循环周期都包含四个核心步骤:制定计划、风险分析、实施工程、用户评估。每个周期都会产出一个更完善的软件版本,经过多次循环迭代最终完成整个系统的开发。优点是高度重视风险分析,能够在早期识别并规避重大风险,适合大型、复杂、高风险的系统开发;缺点是风险分析需要专业的人员和较高的成本,小型项目应用的收益低于成本。
4.5 喷泉模型
喷泉模型是专门针对面向对象开发方法提出的过程模型,以用户需求为动力,以对象为驱动,核心特征是开发阶段之间存在重叠,具有迭代性和无间隙性,分析、设计、编码等活动可以并行开展。优点是能够充分利用面向对象方法的封装、继承、多态特性,提升开发效率,适合面向对象的软件项目;缺点是阶段重叠对项目管理的要求较高,容易出现进度混乱。
4.6 基于构件的开发模型
基于构件的开发模型本质是演化模型的分支,核心是将软件系统拆解为独立的可复用构件,通过预制构件的组装快速构建系统,构件可以是组织内部积累的成熟模块,也可以是第三方商用构件。优点是能够大幅提升软件复用率,缩短开发周期,降低开发成本;缺点是构件的兼容性、可靠性需要严格验证,可能存在供应商依赖风险。
4.7 统一过程 (UP/RUP) 模型
统一过程模型是一种重量级的迭代增量过程框架,核心特征是用例驱动、以架构为中心、迭代且增量,整个开发过程分为四个阶段:初始阶段 (明确项目边界和可行性)、精化阶段 (完成需求分析和架构设计)、构建阶段 (完成所有功能的开发和测试)、移交阶段 (交付给用户使用)。每个阶段都包含多次迭代,每次迭代都会产出一个可运行的增量版本。优点是架构稳定性高,需求变更应对能力强,适合大型企业级应用开发;缺点是过程较重,管理成本较高,不适合小型快速迭代项目。

七大软件过程模型对比示意图
(标注每种模型的核心结构、适用场景、优缺点)
五、敏捷方法与典型应用
敏捷方法是为了应对快速变化的市场需求而提出的轻量级软件开发方法,核心是敏捷宣言的四大价值观:个体互动高于流程和工具、可用的软件高于详尽的文档、客户协作高于合同谈判、响应变化高于遵循计划。软考中高频考查的敏捷方法有两类:
5.1 极限编程 (XP)
极限编程是针对小型团队、需求快速变化的项目设计的敏捷方法,四大核心价值观为沟通、简单、反馈、勇气。核心实践包括短周期迭代、测试驱动开发、结对编程、持续集成、现场客户、代码集体所有权等,适合需求变化频繁、团队规模在 10 人以内的小型项目。
5.2 并列争球法 (Scrum)
Scrum 是增量迭代的敏捷管理框架,将每 30 天一次的迭代称为一个 "冲刺 (Sprint)",开发过程由产品负责人、Scrum 主管、开发团队三个角色共同推进。产品负责人负责维护产品待办列表并确定优先级,Scrum 主管负责移除开发过程中的障碍,开发团队负责在每个冲刺周期内完成约定的功能开发,每个冲刺结束后交付一个可运行的增量版本。

Scrum 开发流程示意图
(标注角色、迭代周期、核心活动和产出物)
六、总结与软考备考建议
6.1 核心知识点总结
软件工程七大基本原理是软件工程的理论基础,核心是规范化、过程化、持续改进
软件生存周期分为七个阶段,需求分析解决 "做什么" 的问题,设计解决 "怎么做" 的问题,维护是生命周期中时间最长的阶段
CMM 分为 5 个等级,CMMI 有阶段式和连续式两种表示方法,等级越高的组织过程能力越强
七大软件过程模型中,瀑布模型适合需求稳定的项目,螺旋模型适合高风险大型项目,增量模型适合可以分模块交付的项目,原型模型适合需求模糊的项目
敏捷方法的核心是快速响应变化,Scrum 方法将 30 天迭代称为冲刺,XP 方法的核心是四大价值观和测试驱动开发等实践
6.2 软考考试重点提示
本章考试的高频考点包括:软件生存周期各阶段的产出物、CMM/CMMI 各等级的核心特征、七种过程模型的适用场景和优缺点对比、敏捷方法的典型特征和两种核心方法的区别。易错点包括:增量模型需要更高的架构设计能力,并非设计难度更低;螺旋模型的核心特征是包含风险分析环节;喷泉模型是面向对象开发专用的模型;Scrum 的冲刺周期固定为 30 天。答题时首先排除明显错误的选项,对于过程模型的适用场景类题目,优先提取题干中的需求特征、项目规模、风险等级等核心要素,再匹配对应的模型。
6.3 备考与实践建议
备考阶段首先梳理完整的知识框架,重点对比记忆不同过程模型的差异,结合历年真题强化考点理解,建议完成近 5 年的所有软件工程相关真题,确保考点覆盖率达到 100%。实践层面,中小项目可以优先选择敏捷方法,大型高风险项目优先选择螺旋模型或统一过程模型,需求稳定的项目可以选择瀑布模型,根据项目特征匹配最合适的过程模型是提升开发效率的核心。
6.4 技术发展趋势
当前软件工程技术正朝着低代码开发、DevOps 一体化、智能化软件工程的方向发展,低代码平台进一步提升了构件复用的程度,DevOps 打通了开发、测试、运维的全流程壁垒,AI 辅助开发技术能够大幅提升编码和测试的效率,但软件工程的七大基本原理和过程模型的核心逻辑仍然是所有新技术的基础。
网硕互联帮助中心






评论前必须登录!
注册