<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>软件工程 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/</link><description>Recent content in 软件工程 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jan 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>07-软件工程</title><link>https://liangweidonggood.github.io/p/07-ruan-jian-gong-cheng/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://liangweidonggood.github.io/p/07-ruan-jian-gong-cheng/</guid><description>&lt;h1 id="07-软件工程基于第7小时"&gt;07-软件工程（基于第7小时）
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;软考-系统架构设计师 | 第2篇 架构设计专业知识
出题形式：单项选择题 + 案例分析题 | 分值占比：3-6 分
教材参考：第7章&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="0-考点分析"&gt;0. 考点分析
&lt;/h2&gt;&lt;p&gt;本小时主要学习软件工程、需求工程、系统分析与设计、净室软件工程、基于构件的软件工程、软件项目管理等内容。考察侧重概念知识和管理知识。根据考试大纲，本小时知识点会涉及单项选择题和下午案例分析题，约占8-15分，论文也会有涉及。&lt;/p&gt;
&lt;p&gt;软件工程是以工程的管理方法去管理软件项目，涉及的知识点很多，是上午题和案例题的&amp;quot;重头戏&amp;quot;。像结构化和面向对象在三门考试中都会出题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-核心知识点"&gt;1. 核心知识点
&lt;/h2&gt;&lt;h3 id="11-软件工程基础"&gt;1.1 软件工程基础
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;软件危机6大表现&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;软件开发进度难以预测&lt;/li&gt;
&lt;li&gt;软件开发成本难以控制&lt;/li&gt;
&lt;li&gt;软件功能难以满足用户期望&lt;/li&gt;
&lt;li&gt;软件质量无法保证&lt;/li&gt;
&lt;li&gt;软件难以维护&lt;/li&gt;
&lt;li&gt;软件缺少适当的文档资料&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;软件生命周期&lt;/strong&gt;：需求分析 → 软件设计 → 软件开发 → 运行维护 → 被淘汰&lt;/p&gt;
&lt;h3 id="12-软件过程模型5大模型"&gt;1.2 软件过程模型（5大模型）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. 瀑布模型（Waterfall Model）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构化开发方法使用&lt;/li&gt;
&lt;li&gt;7阶段：需求分析→系统设计→程序设计→编码实现→单元测试→集成测试→系统测试→运行维护&lt;/li&gt;
&lt;li&gt;特点：因果关系紧密相连，前一阶段输出是后一阶段输入，每个阶段伴随里程碑&lt;/li&gt;
&lt;li&gt;缺点：需求难一次确定、变更代价高、结果难预见、阶段不能并行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 原型模型（Prototype Model）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速原型，原型法使用&lt;/li&gt;
&lt;li&gt;2阶段：原型开发 + 目标软件开发&lt;/li&gt;
&lt;li&gt;2种类型：
&lt;ul&gt;
&lt;li&gt;抛弃型原型：需求确认后即丢弃，继续用瀑布模型&lt;/li&gt;
&lt;li&gt;演化性原型：不断补充完善形成最终产品&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 螺旋模型（Spiral Model）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在&lt;strong&gt;快速原型的基础上结合瀑布模型&lt;/strong&gt;扩展而成&lt;/li&gt;
&lt;li&gt;每个阶段4部分：目标设定、风险分析、开发和有效性验证、评审&lt;/li&gt;
&lt;li&gt;适用：大型软件开发，强调其他模型忽视的风险分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. 敏捷（Agile）模型&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;敏捷方法&lt;/th&gt;
					&lt;th&gt;核心特征&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;极限编程（XP）&lt;/td&gt;
					&lt;td&gt;高效、低风险、&lt;strong&gt;测试先行&lt;/strong&gt;（先写测试代码，再写程序）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;水晶系列方法&lt;/td&gt;
					&lt;td&gt;不同的项目，采用不同的策略&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Scrum（并列争球法）&lt;/td&gt;
					&lt;td&gt;侧重项目管理，&lt;strong&gt;Sprint迭代&lt;/strong&gt;，从Product Backlog选最高优先级需求&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;FDD（特征驱动开发）&lt;/td&gt;
					&lt;td&gt;分首席程序员和&amp;quot;类&amp;quot;程序员&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;敏捷核心思想3点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;适应型而非可预测型&lt;/li&gt;
&lt;li&gt;以人为本而非以过程为本&lt;/li&gt;
&lt;li&gt;迭代增量式开发过程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. RUP（Rational Unified Process）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重量级过程模型，构件化开发使用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二维软件开发模型&lt;/strong&gt;，多个循环（Cycle），每个循环4个连续阶段：
&lt;ul&gt;
&lt;li&gt;初始 → 细化 → 构造 → 移交&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;9个核心工作流：业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境&lt;/li&gt;
&lt;li&gt;3大特点：&lt;strong&gt;用例驱动、以架构为中心、迭代和增量&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;RUP &amp;ldquo;4+1&amp;quot;视图模型&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;视图&lt;/th&gt;
					&lt;th&gt;对应角色&lt;/th&gt;
					&lt;th&gt;关注&lt;/th&gt;
					&lt;th&gt;常用UML图&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;逻辑视图&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;最终用户&lt;/td&gt;
					&lt;td&gt;功能性需求&lt;/td&gt;
					&lt;td&gt;类图、对象图、状态图、协作图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;实现视图&lt;/strong&gt;（开发视图）&lt;/td&gt;
					&lt;td&gt;程序员&lt;/td&gt;
					&lt;td&gt;软件静态组织结构&lt;/td&gt;
					&lt;td&gt;包图、组件图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;进程视图&lt;/strong&gt;（过程视图）&lt;/td&gt;
					&lt;td&gt;系统集成人员&lt;/td&gt;
					&lt;td&gt;非功能性需求（性能、可用性）&lt;/td&gt;
					&lt;td&gt;活动图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;部署视图&lt;/strong&gt;（物理视图）&lt;/td&gt;
					&lt;td&gt;系统工程师&lt;/td&gt;
					&lt;td&gt;软件到硬件的映射&lt;/td&gt;
					&lt;td&gt;部署图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;用例视图&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;所有视图的中心&lt;/td&gt;
					&lt;td&gt;场景驱动&lt;/td&gt;
					&lt;td&gt;用例图&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="13-软件能力成熟度模型"&gt;1.3 软件能力成熟度模型
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;CMM&lt;/strong&gt;：概念模型，框架刚性、解释弹性&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMMI&lt;/strong&gt;（5个成熟度等级）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;初始级&lt;/li&gt;
&lt;li&gt;已管理级&lt;/li&gt;
&lt;li&gt;已定义级&lt;/li&gt;
&lt;li&gt;量化管理级（&lt;strong&gt;核心特征：过程性能可预测&lt;/strong&gt;，与已定义级区别）&lt;/li&gt;
&lt;li&gt;优化级&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="14-需求工程"&gt;1.4 需求工程
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;软件需求3层次&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;业务需求&lt;/strong&gt;：组织机构或客户对系统的高层次目标&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户需求&lt;/strong&gt;：用户使用产品必须完成的任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;功能需求&lt;/strong&gt;：开发人员必须实现的软件功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;需求工程5阶段&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;需求获取&lt;/li&gt;
&lt;li&gt;需求分析&lt;/li&gt;
&lt;li&gt;形成需求规格（文档化）&lt;/li&gt;
&lt;li&gt;需求确认与验证&lt;/li&gt;
&lt;li&gt;需求管理&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;SRS（软件需求规格说明书）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;包含：功能需求 + 非功能需求 + 约束&lt;/li&gt;
&lt;li&gt;约束又分：设计约束 + 过程约束&lt;/li&gt;
&lt;li&gt;批准的SRS是需求开发和需求管理之间的桥梁&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;需求管理活动&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;变更控制&lt;/li&gt;
&lt;li&gt;版本控制&lt;/li&gt;
&lt;li&gt;需求跟踪&lt;/li&gt;
&lt;li&gt;（注意：文档管理不属于需求管理活动）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;需求跟踪&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的：建立与维护&amp;quot;需求—设计—编程—测试&amp;quot;之间的一致性&lt;/li&gt;
&lt;li&gt;两种方式：&lt;strong&gt;正向跟踪 + 逆向跟踪 = 双向跟踪&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;工具：需求跟踪矩阵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CCB（变更控制委员会）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由项目所涉及的多方成员共同组成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;决策机构，不是作业机构&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;通过评审决定项目能否变更，但不提出变更方案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;需求获取6步骤&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;开发高层的业务模型&lt;/li&gt;
&lt;li&gt;定义项目范围和高层需求&lt;/li&gt;
&lt;li&gt;识别用户角色和用户代表&lt;/li&gt;
&lt;li&gt;获取具体的需求&lt;/li&gt;
&lt;li&gt;确定目标系统的业务工作流&lt;/li&gt;
&lt;li&gt;需求整理与总结&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;需求获取方法&lt;/strong&gt;：用户面谈、需求专题讨论会、问卷调查、现场观察、原型化方法、头脑风暴法&lt;/p&gt;
&lt;h3 id="15-系统分析与设计"&gt;1.5 系统分析与设计
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;结构化方法（SASD）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构化分析（SA）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主要手段：数据流图（DFD）、数据字典、结构化语言、判定表、判定树&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DFD 4种基本元素&lt;/strong&gt;：数据流、处理/加工、数据存储、外部项&lt;/li&gt;
&lt;li&gt;建模步骤：明确目标→确定系统范围→建立顶层DFD→构建第一层DFD分解图→开发DFD层次结构图→检查确认&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DFD规则&lt;/strong&gt;：父图数据流必须在子图出现；一个处理至少一个输入流和一个输出流；一个存储必有流入流出；数据流至少一端是处理端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;结构化设计（SD）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自顶向下、逐步求精、模块化&lt;/li&gt;
&lt;li&gt;概要设计：模块划分，确定功能、接口、调用关系&lt;/li&gt;
&lt;li&gt;详细设计：每个模块的实现算法、局部数据结构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;模块3基本属性&lt;/strong&gt;：功能、逻辑、状态&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;耦合类型&lt;/strong&gt;（从低到高）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;耦合类型&lt;/th&gt;
					&lt;th&gt;描述&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;非直接耦合&lt;/td&gt;
					&lt;td&gt;两模块无直接关系&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据耦合&lt;/td&gt;
					&lt;td&gt;借助参数表传递简单数据&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;标记耦合&lt;/td&gt;
					&lt;td&gt;通过参数表传递记录等复杂信息&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;控制耦合&lt;/td&gt;
					&lt;td&gt;传递的信息中包含用于控制模块内部逻辑的信息&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;通信耦合&lt;/td&gt;
					&lt;td&gt;共享输入或输出&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;公共耦合&lt;/td&gt;
					&lt;td&gt;多个模块访问同一公共数据环境&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;内容耦合&lt;/td&gt;
					&lt;td&gt;直接访问另一个模块的内部数据（最高，最差）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;内聚类型&lt;/strong&gt;（从高到低）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;内聚类型&lt;/th&gt;
					&lt;th&gt;描述&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;功能内聚&lt;/td&gt;
					&lt;td&gt;各个部分协同完成单一功能，缺一不可（最高）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;顺序内聚&lt;/td&gt;
					&lt;td&gt;处理元素相关，必须顺序执行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;通信内聚&lt;/td&gt;
					&lt;td&gt;集中在一个数据结构区域上&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;过程内聚&lt;/td&gt;
					&lt;td&gt;处理元素相关，按特定次序执行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;时间内聚&lt;/td&gt;
					&lt;td&gt;所包含任务必须在同一时间间隔内执行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;逻辑内聚&lt;/td&gt;
					&lt;td&gt;完成逻辑上相关的一组任务&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;偶然内聚&lt;/td&gt;
					&lt;td&gt;完成一组无关系或松散关系的任务（最低）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;设计原则&lt;/strong&gt;：高内聚、低耦合&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构化编程（SP）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3种基本控制结构：顺序、分支、循环&lt;/li&gt;
&lt;li&gt;通过这3种结构可构造任何单入口单出口程序&lt;/li&gt;
&lt;li&gt;强调：自顶向下、逐步细化、清晰第一、效率第二&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;面向对象方法&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OOA（面向对象分析）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型5层次：主题层、对象类层、结构层、属性层、服务层&lt;/li&gt;
&lt;li&gt;模型5活动：标识对象类、标识结构、定义主题、定义属性、定义服务&lt;/li&gt;
&lt;li&gt;基本原则：抽象、封装、继承、分类、聚合、关联、消息通信、粒度控制、行为分析&lt;/li&gt;
&lt;li&gt;5个基本步骤：确定对象和类、确定结构、确定主题、确定属性、确定方法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;OOD（面向对象设计）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;类3种类型：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实体类&lt;/strong&gt;：名词，永久性需要存储（如教师、学生）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制类&lt;/strong&gt;：控制用例工作（如登录验证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边界类&lt;/strong&gt;：封装用例内外流动的信息（如窗口、通信协议、接口）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;OOP（面向对象程序设计）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本特点：封装、继承、多态&lt;/li&gt;
&lt;li&gt;继承4类：取代继承、包含继承、受限继承、特化继承&lt;/li&gt;
&lt;li&gt;多态：同一操作作用于不同对象产生不同结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;数据持久化与ORM&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持久层（Persistence Layer）专注于实现数据持久化&lt;/li&gt;
&lt;li&gt;对象/关系映射（ORM）&lt;/li&gt;
&lt;li&gt;主流框架：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hibernate&lt;/strong&gt;：全自动ORM，跨数据库平台&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MyBatis/iBatis&lt;/strong&gt;：半自动，手写SQL，可结合特定数据库优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JDO&lt;/strong&gt;（Java Data Object）：Java标准，支持关系数据库+普通文件+XML+对象数据库&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;软件重用2类型&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;水平式重用：不同应用领域中的软件元素（如标准函数库）&lt;/li&gt;
&lt;li&gt;垂直式重用：共性应用领域间的软部件（如区块链）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;逆向工程&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过分析已有程序，寻求比源代码更高级的抽象表现形式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设计恢复&lt;/strong&gt;：逆向工程得出的设计，不一定抽象还原到原设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重构&lt;/strong&gt;：在同一抽象层级中转换系统描述&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重构工程&lt;/strong&gt;：对逆向工程形成的系统进行修改或重构生成的新版本&lt;/li&gt;
&lt;li&gt;信息恢复4级：实现级 &amp;lt; 结构级 &amp;lt; 功能级 &amp;lt; 领域级（难度递增，工具支持递减）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="16-软件测试"&gt;1.6 软件测试
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;测试目的&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确认软件以正确方式做了用户期望的事情&lt;/li&gt;
&lt;li&gt;尽量多地发现漏洞，但不能保证发现所有&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;测试分类&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;分类维度&lt;/th&gt;
					&lt;th&gt;类型&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;程序执行状态&lt;/td&gt;
					&lt;td&gt;静态测试ST、动态测试DT&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;关注实现和内部结构&lt;/td&gt;
					&lt;td&gt;黑盒测试、白盒测试、灰盒测试&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;程序执行方式&lt;/td&gt;
					&lt;td&gt;人工测试MT、自动化测试AT&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;阶段划分&lt;/td&gt;
					&lt;td&gt;单元测试、集成测试、系统测试、验收测试&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;4阶段测试对比&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;阶段&lt;/th&gt;
					&lt;th&gt;测试对象&lt;/th&gt;
					&lt;th&gt;实施者&lt;/th&gt;
					&lt;th&gt;方法&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;单元测试&lt;/td&gt;
					&lt;td&gt;模块&lt;/td&gt;
					&lt;td&gt;程序员自己&lt;/td&gt;
					&lt;td&gt;白盒静态（静态分析、代码审查）或自动化动态&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;集成测试&lt;/td&gt;
					&lt;td&gt;组装模块&lt;/td&gt;
					&lt;td&gt;测试人员&lt;/td&gt;
					&lt;td&gt;白盒+黑盒结合&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;系统测试&lt;/td&gt;
					&lt;td&gt;完整系统&lt;/td&gt;
					&lt;td&gt;测试人员&lt;/td&gt;
					&lt;td&gt;检查是否符合SRS&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;验收测试&lt;/td&gt;
					&lt;td&gt;完整系统&lt;/td&gt;
					&lt;td&gt;用户&lt;/td&gt;
					&lt;td&gt;确认系统满足用户需求&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;系统测试内容&lt;/strong&gt;：功能测试、性能测试、健壮性测试、安全性测试&lt;/p&gt;
&lt;h3 id="17-净室软件工程cse"&gt;1.7 净室软件工程（CSE）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Cleanroom Software Engineering&lt;/li&gt;
&lt;li&gt;在软件开发过程中强调在软件中建立正确性的需要&lt;/li&gt;
&lt;li&gt;理论基础：函数理论 + 抽样理论&lt;/li&gt;
&lt;li&gt;使用&lt;strong&gt;盒子结构规约&lt;/strong&gt;进行分析和设计建模&lt;/li&gt;
&lt;li&gt;强调&lt;strong&gt;将正确性验证（而不是测试）作为发现和消除错误的主要机制&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;缺点：太理论化、忽视测试、带有传统软件工程的弊端&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="18-基于构件的软件工程cbse"&gt;1.8 基于构件的软件工程（CBSE）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;构件5特征&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;可组装型：所有外部交互通过公开定义的接口&lt;/li&gt;
&lt;li&gt;可部署性：可作为独立实体在构件平台上运行&lt;/li&gt;
&lt;li&gt;文档化：必须完全文档化&lt;/li&gt;
&lt;li&gt;独立性：应独立，如需其他构件服务需显示声明&lt;/li&gt;
&lt;li&gt;标准化：必须符合某种标准化的构件模型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;主流构件模型&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web Services模型&lt;/li&gt;
&lt;li&gt;Sun EJB模型&lt;/li&gt;
&lt;li&gt;微软.NET模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CBSE过程6步骤&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;系统需求概览&lt;/li&gt;
&lt;li&gt;识别候选构件&lt;/li&gt;
&lt;li&gt;根据发现的构件修改需求&lt;/li&gt;
&lt;li&gt;体系结构设计&lt;/li&gt;
&lt;li&gt;构件定制与适配&lt;/li&gt;
&lt;li&gt;组装构件创建系统&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;CBSE vs 传统软件开发&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;早期需要完整需求（识别可复用构件）&lt;/li&gt;
&lt;li&gt;早期阶段根据可利用的构件细化和修改需求&lt;/li&gt;
&lt;li&gt;架构设计完成后可能需要修改构件&lt;/li&gt;
&lt;li&gt;开发过程就是组装构件的过程（有时需要开发适配器）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构设计阶段特别重要&lt;/strong&gt;，决定和限制了可选构件的范围&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;构件组装3方式&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顺序组装&lt;/li&gt;
&lt;li&gt;层次组装&lt;/li&gt;
&lt;li&gt;叠加组装&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;接口不兼容3类&lt;/strong&gt;：参数不兼容、操作不兼容、操作不完备&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解决：编写适配器构件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="19-软件项目管理"&gt;1.9 软件项目管理
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;软件进度管理6过程&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;活动定义&lt;/li&gt;
&lt;li&gt;活动排序&lt;/li&gt;
&lt;li&gt;活动资源估计&lt;/li&gt;
&lt;li&gt;活动历时估计&lt;/li&gt;
&lt;li&gt;制定进度计划&lt;/li&gt;
&lt;li&gt;进度控制&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;WBS（工作分解结构）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把项目按原则分解为任务，任务再分解为工作&lt;/li&gt;
&lt;li&gt;以可交付成果为导向&lt;/li&gt;
&lt;li&gt;处于计划过程的中心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SCM（软件配置管理）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标识、组织和控制修改的技术&lt;/li&gt;
&lt;li&gt;目的：使错误降为最小并最有效提高生产效率&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心内容：版本控制 + 变更控制&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SQA（软件质量保证）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的：使软件过程对管理人员可见&lt;/li&gt;
&lt;li&gt;主要任务：SQA审计与评审、SQA报告、处理不符合问题&lt;/li&gt;
&lt;li&gt;软件质量认证：ISO 9001 + CMM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;风险管理&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boehm：风险估计（辨识+分析+排序）+ 风险控制（计划+处理+监督）&lt;/li&gt;
&lt;li&gt;Charette：分析（辨识+估计+评价）+ 管理（计划+控制+监督）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-关键概念速查"&gt;2. 关键概念速查
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;概念&lt;/th&gt;
					&lt;th&gt;定义/说明&lt;/th&gt;
					&lt;th&gt;常见考点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;瀑布模型&lt;/td&gt;
					&lt;td&gt;结构化开发方法使用&lt;/td&gt;
					&lt;td&gt;阶段不可并行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;原型模型&lt;/td&gt;
					&lt;td&gt;解决需求难一次确定&lt;/td&gt;
					&lt;td&gt;抛弃型/演化型&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;螺旋模型&lt;/td&gt;
					&lt;td&gt;快速原型+瀑布模型&lt;/td&gt;
					&lt;td&gt;强调风险分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;极限编程XP&lt;/td&gt;
					&lt;td&gt;测试先行&lt;/td&gt;
					&lt;td&gt;敏捷方法&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Scrum&lt;/td&gt;
					&lt;td&gt;Sprint迭代+Product Backlog&lt;/td&gt;
					&lt;td&gt;侧重项目管理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;FDD&lt;/td&gt;
					&lt;td&gt;首席程序员+类程序员&lt;/td&gt;
					&lt;td&gt;特征驱动开发&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RUP&lt;/td&gt;
					&lt;td&gt;用例驱动+架构中心+迭代增量&lt;/td&gt;
					&lt;td&gt;4+1视图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4+1视图&lt;/td&gt;
					&lt;td&gt;逻辑+实现+进程+部署+用例&lt;/td&gt;
					&lt;td&gt;5种视图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CMMI 5级&lt;/td&gt;
					&lt;td&gt;初始/已管理/已定义/量化/优化&lt;/td&gt;
					&lt;td&gt;量化管理=可预测&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SRS&lt;/td&gt;
					&lt;td&gt;软件需求规格说明书&lt;/td&gt;
					&lt;td&gt;功能+非功能+约束&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CCB&lt;/td&gt;
					&lt;td&gt;变更控制委员会&lt;/td&gt;
					&lt;td&gt;决策机构非作业机构&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据流图DFD&lt;/td&gt;
					&lt;td&gt;4元素：数据流/处理/存储/外部项&lt;/td&gt;
					&lt;td&gt;父图子图平衡&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;耦合7类&lt;/td&gt;
					&lt;td&gt;非直接→数据→标记→控制→通信→公共→内容&lt;/td&gt;
					&lt;td&gt;低到高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;内聚7类&lt;/td&gt;
					&lt;td&gt;功能→顺序→通信→过程→时间→逻辑→偶然&lt;/td&gt;
					&lt;td&gt;高到低&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;OOD 3类&lt;/td&gt;
					&lt;td&gt;实体类/控制类/边界类&lt;/td&gt;
					&lt;td&gt;学生/登录验证/窗口&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ORM&lt;/td&gt;
					&lt;td&gt;对象关系映射&lt;/td&gt;
					&lt;td&gt;Hibernate+MyBatis+JDO&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;单元测试&lt;/td&gt;
					&lt;td&gt;程序员自己，白盒静态&lt;/td&gt;
					&lt;td&gt;模块级&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CSE净室&lt;/td&gt;
					&lt;td&gt;正确性验证而非测试&lt;/td&gt;
					&lt;td&gt;盒子结构规约&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CBSE&lt;/td&gt;
					&lt;td&gt;构件化软件工程&lt;/td&gt;
					&lt;td&gt;Web Services/EJB/.NET&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;WBS&lt;/td&gt;
					&lt;td&gt;工作分解结构&lt;/td&gt;
					&lt;td&gt;以可交付成果为导向&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SCM&lt;/td&gt;
					&lt;td&gt;软件配置管理&lt;/td&gt;
					&lt;td&gt;版本控制+变更控制&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="3-典型例题"&gt;3. 典型例题
&lt;/h2&gt;&lt;h3 id="题目1螺旋模型基础"&gt;题目1：螺旋模型基础
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;题目&lt;/strong&gt;：螺旋模型在（ ）的基础上扩展而成。
A．瀑布模型
B．原型模型
C．快速模型
D．面向对象模型&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答案&lt;/strong&gt;：B&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解析&lt;/strong&gt;：螺旋模型是在&lt;strong&gt;原型模型&lt;/strong&gt;（快速原型）的基础上结合瀑布模型扩展而成，强调其他模型忽视的风险分析。&lt;/p&gt;
&lt;h3 id="题目2敏捷方法识别"&gt;题目2：敏捷方法识别
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;题目&lt;/strong&gt;：（1）适用于程序开发人员在地域上分布很广的开发团队。（2）中，编程开发人员分成首席程序员和&amp;quot;类&amp;quot;程序员。
（1）A．水晶系列（Crystal）开发方法
B．开放式源码（Open Source）开发方法
C．Scrum开发方法
D．功用驱动开发方法（FDD）
（2）A．自适应软件开发（ASD）
B．极限编程（XP）开发方法
C．开放系统—过程开发方法（OpenUP）
D．功用驱动开发方法（FDD）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答案&lt;/strong&gt;：B D&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解析&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开放式源码项目特点是程序开发人员在地域上分布很广，一般敏捷方法都强调项目组成员在同一地点工作。&lt;/li&gt;
&lt;li&gt;FDD（功用驱动开发方法）将编程开发人员分成首席程序员和&amp;quot;类&amp;quot;程序员两类，首席程序员是最有经验的开发人员。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="题目3需求管理活动"&gt;题目3：需求管理活动
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;题目&lt;/strong&gt;：需求管理是一个对系统需求变更、了解和控制的过程。以下活动中，（ ）不属于需求管理的主要活动。
A．文档管理
B．需求跟踪
C．版本控制
D．变更控制&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答案&lt;/strong&gt;：A&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解析&lt;/strong&gt;：需求管理的主要活动包括变更控制、版本控制、需求跟踪等。&lt;strong&gt;文档管理不属于需求管理的主要活动&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="题目4结构化编程基本结构"&gt;题目4：结构化编程基本结构
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;题目&lt;/strong&gt;：结构化程序设计采用自顶向下、逐步求精及模块化的程序设计方法，通过（ ）三种基本的控制结构可以构造出任何单入口单出口的程序。
A．顺序、选择和嵌套
B．顺序、分支和循环
C．分支、并发和循环
D．跳转、选择和并发&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答案&lt;/strong&gt;：B&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解析&lt;/strong&gt;：结构化程序设计通过&lt;strong&gt;顺序、分支（选择）和循环&lt;/strong&gt;三种基本的控制结构可以构造出任何单入口单出口的程序。这三种结构是Dijkstra提出的结构化定理的核心。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4-高频考点"&gt;4. 高频考点
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;5大软件过程模型对比&lt;/strong&gt;（5年12考）：瀑布/原型/螺旋/敏捷/RUP的特征与适用场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4+1视图对应角色&lt;/strong&gt;：逻辑-用户、实现-程序员、进程-集成人员、部署-工程师&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMMI 5级&lt;/strong&gt;：初始→已管理→已定义→量化管理→优化（量化管理=可预测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;耦合7类型排序&lt;/strong&gt;（从低到高）：非直接&amp;lt;数据&amp;lt;标记&amp;lt;控制&amp;lt;通信&amp;lt;公共&amp;lt;内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内聚7类型排序&lt;/strong&gt;（从高到低）：功能&amp;gt;顺序&amp;gt;通信&amp;gt;过程&amp;gt;时间&amp;gt;逻辑&amp;gt;偶然&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设计原则&lt;/strong&gt;：高内聚、低耦合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构化编程3种基本结构&lt;/strong&gt;：顺序+分支+循环&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DFD 4基本元素&lt;/strong&gt;：数据流+处理+数据存储+外部项&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OOD 3类对象&lt;/strong&gt;：实体类/控制类/边界类&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ORM 3框架&lt;/strong&gt;：Hibernate（全自动）+ MyBatis（半自动）+ JDO（Java标准）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;软件测试4阶段&lt;/strong&gt;：单元（程序员自己）→集成→系统→验收&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;净室软件工程CSE&lt;/strong&gt;：正确性验证而非测试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CBSE 3种组装方式&lt;/strong&gt;：顺序+层次+叠加&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需求管理活动&lt;/strong&gt;：变更控制+版本控制+需求跟踪（不含文档管理）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CCB定位&lt;/strong&gt;：决策机构不是作业机构&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>