软件工程章节知识梳理-软件过程模型

一、软件工程章节 -大纲

二、核心概念

软件开发生命周期:

****软件定义时期:****包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。

****软件开发时期:****就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。

****软件运行和维护:****就是把软件产品移交给用户使用。

软件系统的文档 可以分为用户文档系统文档两类,用户文档主要描述系统功能和使用方法,并不关系这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。

软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下4个方面。

(1)P(Plan)一一软件规格说明。规定软件的功能及其运行时的限制。

(2)D(Do)一软件开发。开发出满足规格说明的软件。

(3)C(Check)一一软件确认。确认开发的软件能够满足用户的需求。

(4)A(Action)-一软件演进。软件在运行过程中不断改进以满足客户新的需求。

软件系统工具 通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。

软件开发工具:需求分析工具、设计工具、编码与排错王具、测试工具等。

****软件维护工具:****版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

软件设计包括四个既独立又相互联系的活动,即数据设计、架构(体系结构)设计、人机界面(接口)设计和过程设计,这四个活动完成以后就得到了全面的软件设计模型

三、软件过程模型

1. 瀑布模型

瀑布模型: 结构化方法中的模型,是结构化的开发,开发流程如同瀑布一般,一步一步的走下去,直到最后完成项目开发,只适用于 需求明确或者二次发(需求稳定),当需求不明确时,最终开发的项目会错误,有很大的缺陷。

瀑布模型的特点是因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。每一个阶段都是建筑在前一个阶段正确实施的结果之上。每一个阶段工作完成后都伴随着一个里程碑(一组检查条件),对该阶段的工作进行审查和确认。

瀑布模型的主要缺点:

(1)软件需求的完整性、正确性等很难确定,甚至是不可能和不现实的。

(2)瀑布模型是一个严格串行化的过程模型,使得用户和软件项目负责人要相当长的时间才能得到一个可以看得见的软件系统。

(3)瀑布模型的基本原则是在每个阶段一次性地完全解决该阶段的工作,不会出现遗漏、错误等情况,而实际上这是不现实或不可能的。

2. 原型模型(需求模糊首选)

与瀑布模型相反,原型针对的就是需求不明确的情况,首先快速构造一个功能模型,演示给用户看,并按用户要求及时修改,中间再通过不断的演示与用户沟通,最终设计出项目,就不会出现与用户要求不符合的情况,采用的是迭代的思想。不适合超大项目开发。

原型模型主要有以下两个阶段:

****(1)原型开发阶段。****即快速开发一个原型;开发原型可以考虑 3 种途径:利用模拟软件系统的人机界面和人机交互方式;真正开发一个原型;找来一个或几个正在运行的类似软件进行比较。

****(2)目标软件开发阶段。****在征求用户对原型的意见后对原型进行修改完善,确认软件系统的需求并达到一致的理解,进一步开发实际系统。。

3. 螺旋模型(风险驱动,复杂项目首选)

是生命周期模型与原型模型的结合,针对需求不明确的项目,与原型类似,但是增加了风险分析,这也是其最大的特点 。适合大型项目开发。四阶段迭代:目标设定、风险分析、开发和有效性验证、评审。该模型支持大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法,也适用于几种开发方法的组合。

4. 增量模型(分批交付,灵活适配)

核心特点:将软件功能划分为多个"增量构件",分批次开发、测试并交付,第一个增量通常是核心功能,后续增量逐步完善,模块化开发,接口标准化。

适用场景:可模块化的系统(比如电商、银行核心系统)、需求有优先级、需要早期交付部分功能的项目。

5. 敏捷模型(快速响应变化)

敏捷宣言:

  1. 个体和交互、胜过 过程和工具
  2. 可以工作的软件 胜过 面面俱到的文档
  3. 客户合作 胜过 合同谈判
  4. 响应变化 胜过 遵循计划

敏捷方法区别于其他方法的两个特点:

(1)是"适应性"而非"预设性"。

(2)是"面向人的"而非"面向过程的"。

敏捷方法的核心思想:

(1)敏捷方法是适应型,而非可预测型。拥抱变化,适应变化。

(2)敏捷方法是以人为本,而非以过程为本。发挥人的特性。

(3)迭代增量式的开发过程。以原型开发思想为基础,采用法代增量式开发。

主要敏捷方法:

◆极限编程(XP) :价值观【交流、朴素、反馈、勇气】、近螺旋式的开发方法。

◆水晶方法:提倡"机动性"的方法,拥有对不同类型项目非常有效的敏捷过程。

SCRUM:侧重于项目管理。

◆特征驱动开发方法(FDD) :认为有效的软件开发需要3要素【人、过程、技术】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。

****◆开放式源码:****程序开发人员在地域上分布很广【其他方法强调集中办公】。

****◆ASD方法:****其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。

◆动态系统开发方法(DSDM):倡导以业务为核心。

四。 软考高频模型对比表格

|----------|----------------------|-------------------|---------------------------|
| 模型名称 | 核心特点 | 适用场景 | 优缺点 |
| 瀑布模型 | 线性顺序、文档驱动、阶段不可回溯 | 需求明确、技术成熟、合规严格领域 | 优点:流程清晰;缺点:不适应需求变化,风险后期暴露 |
| 原型模型 | 快速构建原型、反复迭代、澄清需求 | 需求模糊、用户无法清晰表达需求 | 优点:明确需求;缺点:忽略性能,迭代过多易延期 |
| 螺旋模型 | 风险驱动、多循环迭代、综合瀑布与原型优势 | 大型、复杂、高风险项目 | 优点:风险可控;缺点:流程复杂、管理成本高 |
| 增量模型 | 模块化、分批交付、核心功能优先 | 可模块化、需求有优先级、需早期交付 | 优点:降低失败风险;缺点:接口设计要求高 |
| 敏捷模型 | 小步迭代、快速交付、响应变化、团队协作 | 需求多变、互联网项目、小团队 | 优点:灵活高效;缺点:规范不足、文档不完善 |

相关推荐
学习使我健康4 小时前
MVP模式
android·github·软件工程
王莎莎-MinerU5 小时前
MinerU 生态全景:Skills、RAG、MCP、Cursor Rules
人工智能·深度学习·计算机视觉·chatgpt·pdf·软件工程
TheRouter6 小时前
AI 不会消灭软件工程,它只会消灭低维的软件工程
人工智能·软件工程
lulu121654407810 小时前
Claude Opus 4.7有哪些重大升级?软件工程和视觉能力全面解析
java·人工智能·python·软件工程·ai编程
一路往蓝-Anbo1 天前
第二章:STM32 bxCAN 控制器详解:从内存到总线的“中转站”
stm32·单片机·嵌入式硬件·软件工程
JAVA+C语言1 天前
R+Python 双语言开发首选:RStudio 2025 下载安装详细教程
性能优化·软件工程
无籽西瓜a1 天前
【西瓜带你学设计模式 | 第十八期 - 命令模式】命令模式 —— 请求封装与撤销实现、优缺点与适用场景
java·后端·设计模式·软件工程·命令模式
CS创新实验室2 天前
CS实验室行业报告:软件工程与开发岗位就业分析报告
软件工程
张子都2 天前
【新版系统架构设计师】备考
职场和发展·系统架构·软件工程