<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>软件工程 on esparkl.top</title><link>https://eSparkL.top/categories/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/</link><description>Recent content in 软件工程 on esparkl.top</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 21 May 2025 14:39:35 +0800</lastBuildDate><atom:link href="https://eSparkL.top/categories/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>软件工程5.21</title><link>https://eSparkL.top/study/12-%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B5.21/</link><pubDate>Wed, 21 May 2025 14:39:35 +0800</pubDate><guid>https://eSparkL.top/study/12-%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B5.21/</guid><description>
&lt;h2 id="进程视图"&gt;进程视图&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;面向系统架构师和开发人员&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;适用于多进程多视图，关注系统的并发性、分布性、性能和资源分配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;形式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UML类图&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进程间的交互&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;进程间的交互可以用时序图表示&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;单线程的Web服务器&lt;/p&gt;</description></item><item><title>软件工程思路笔记</title><link>https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/</link><pubDate>Sun, 11 May 2025 19:24:08 +0800</pubDate><guid>https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/</guid><description>
&lt;p&gt;tags:
[TOC]&lt;/p&gt;
&lt;h2 id="需求工程"&gt;需求工程&lt;/h2&gt;
&lt;h3 id="用例规约"&gt;用例规约&lt;/h3&gt;
&lt;h4 id="1-画出use-case"&gt;1. 画出Use Case&lt;/h4&gt;
&lt;h4 id="2-编写用例规约"&gt;2. 编写用例规约&lt;/h4&gt;
&lt;h5 id="1-可选需求"&gt;1. 可选需求&lt;/h5&gt;
&lt;h5 id="2-非功能需求"&gt;2. 非功能需求&lt;/h5&gt;
&lt;h5 id="3-黑盒用例规约-和-白盒用例规约"&gt;3. 黑盒用例规约 和 白盒用例规约&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;随着开发的过程要不断添加细节
&lt;ul&gt;
&lt;li&gt;1.识别用例：有哪些时间、actor&lt;/li&gt;
&lt;li&gt;2.用例分布提纲：+前置条件 +后置条件&lt;/li&gt;
&lt;li&gt;3.（非技术甲方）黑盒规约：+完整的事件流&lt;/li&gt;
&lt;li&gt;4.（技术人员）白盒规约：+系统内部行为的细节描述&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;可以采用双列（用户视图 | 系统视图）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-用例图优化"&gt;3. 用例图优化&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;符号：
&lt;ul&gt;
&lt;li&gt;Include包含
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="206"
height="85"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image-2.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;从基本用例→包含用例，包含用例为基本用例提供功能&lt;/li&gt;
&lt;li&gt;&amp;lt;&amp;gt;衍型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extend扩展
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="212"
height="106"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image-1.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;Generalization泛化（类似类中的继承关系）
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="237"
height="101"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Include关系
&lt;ul&gt;
&lt;li&gt;基数&lt;/li&gt;
&lt;li&gt;Include中，不需要处理条件，&lt;/li&gt;
&lt;li&gt;分离非主要行为，突出用例的核心价值&lt;/li&gt;
&lt;li&gt;提出多个用例存在一段共有的行为，可以提取出来反复使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extend关系（见图）
&lt;ul&gt;
&lt;li&gt;Extension扩展用例——Base基本用例&lt;/li&gt;
&lt;li&gt;基数&lt;/li&gt;
&lt;li&gt;扩展关系符号是&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Generalization泛化，&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="建立概念模型conceptual-class"&gt;建立概念模型Conceptual Class&lt;/h4&gt;
&lt;h5 id="识别conceptual-class"&gt;识别Conceptual Class&lt;/h5&gt;
&lt;ul&gt;
&lt;li&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;/li&gt;
&lt;li&gt;名词提取法
&lt;ul&gt;
&lt;li&gt;1.从规约中提取所有名词，可重复&lt;/li&gt;
&lt;li&gt;2.去掉：冗余、执行者和系统本身、边界类（菜单、链接）、类的属性&lt;/li&gt;
&lt;li&gt;3.得到基本概念类&lt;/li&gt;
&lt;li&gt;易错：类的实体当做属性被删掉（e.g.型号）
&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;/li&gt;
&lt;/ul&gt;
&lt;h5 id="建立conceptual-class之间的关系"&gt;建立Conceptual Class之间的关系&lt;/h5&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;UML
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="2011"
height="935"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image-5.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;类名 | 属性 | 操作&lt;/li&gt;
&lt;li&gt;可见性Visibility
&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;/li&gt;
&lt;li&gt;多重性Multiplicity
&lt;ul&gt;
&lt;li&gt;描述关联
&lt;ul&gt;
&lt;li&gt;*无限多个&lt;/li&gt;
&lt;li&gt;1， 2， 0， 正好1，2，0个&lt;/li&gt;
&lt;li&gt;{1 or 2...4}离散值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;vs
&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;/li&gt;
&lt;li&gt;关联关系Relationship：Association
&lt;ul&gt;
&lt;li&gt;“一个类知道另一个类”
&lt;ul&gt;
&lt;li&gt;无箭头实线：彼此都知道
&lt;ul&gt;
&lt;li&gt;↑耦合性&lt;/li&gt;
&lt;li&gt;但更灵活&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;单向实线：A知道B，A→B，订单→支付方式
&lt;ul&gt;
&lt;li&gt;符合封装原则，↓耦合&lt;/li&gt;
&lt;li&gt;但导航性可能会比较麻烦，比如反向查询不方便
&lt;ul&gt;
&lt;li&gt;导航性：一个类能否通过关联访问另一个类
&lt;ul&gt;
&lt;li&gt;决定哪个类负责持有或访问数据&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;需求分析阶段&lt;/li&gt;
&lt;li&gt;设计阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;聚合关系Relationship：Aggregation
&lt;ul&gt;
&lt;li&gt;整体-部分&lt;/li&gt;
&lt;li&gt;空菱形实线箭头，菱形在整体&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;组合关系Relationship：Composition
&lt;ul&gt;
&lt;li&gt;生命周期，部分和组合一起消亡，强关联&lt;/li&gt;
&lt;li&gt;实菱形实线箭头&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;泛化关系Relationship：Generalization
&lt;ul&gt;
&lt;li&gt;空心实线箭头，空心箭头在父类&lt;/li&gt;
&lt;li&gt;尽量避免用多重继承
&lt;ul&gt;
&lt;li&gt;重复继承问题，&lt;code&gt;“钻石问题”&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;优化：
&lt;ul&gt;
&lt;li&gt;Liskov替换准则LSP&lt;/li&gt;
&lt;li&gt;继承是is a kind of关系，即子类应该能替换基类型
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="121"
height="81"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image-3.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;区分：泛化 vs 聚合
&lt;ul&gt;
&lt;li&gt;带滚动条的窗口
&lt;ul&gt;
&lt;li&gt;带滚动条的窗口 是 窗口；带滚动条的窗口 包含了 滚动条&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;依赖关系Relationship：Dependency
&lt;ul&gt;
&lt;li&gt;虚线带箭头，依赖类型&amp;lt;&amp;lt;自定义&amp;gt;&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;接口
&lt;ul&gt;
&lt;li&gt;一组操作的集合（不包含属性）&lt;/li&gt;
&lt;li&gt;表示方法
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="alt text"
class="image_figure image_internal image_processed"
width="629"
height="375"
src="https://eSparkL.top/study/4-%E8%BD%AF%E5%B7%A5%E8%AF%BE%E5%A0%82%E6%80%9D%E8%B7%AF%E7%AC%94%E8%AE%B0/image-6.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;&amp;gt;&lt;/li&gt;
&lt;li&gt;圆圈表示&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;分类
&lt;ul&gt;
&lt;li&gt;供给接口
&lt;ul&gt;
&lt;li&gt;提供的服务&lt;/li&gt;
&lt;li&gt;圆圈&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;需求接口
&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;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;增加属性，类的属性（先）比操作（后）更重要&lt;/li&gt;
&lt;li&gt;状态机图
&lt;ul&gt;
&lt;li&gt;类的行为性特征&lt;/li&gt;
&lt;li&gt;分类
&lt;ul&gt;
&lt;li&gt;行为状态机
&lt;ul&gt;
&lt;li&gt;内部&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;协议状态机
&lt;ul&gt;
&lt;li&gt;外部&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;ul&gt;
&lt;li&gt;箭头&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;事件：状态机中事件触发迁移
&lt;ul&gt;
&lt;li&gt;转移上的标号表示&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;entry-do-exit-event？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;为什么要用状态机图
&lt;ul&gt;
&lt;li&gt;1.对象的职责或行为变化显著&lt;/li&gt;
&lt;li&gt;2.系统或对象的用例涉及复杂的逻辑，且这些逻辑由状态驱动时&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="用例实现ucr"&gt;用例实现UCR&lt;/h4&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;需求和设计之间的桥梁&lt;/li&gt;
&lt;li&gt;用例中的每一个用力，在分析模型和设计模型中至少有一个用例实现与对应&lt;/li&gt;
&lt;li&gt;分类
&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;h5 id="识别分析类"&gt;识别分析类&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;分析类：描述每个角色的职责&lt;/li&gt;
&lt;li&gt;设计阶段：角色赋与台词和动作，变成实际的系统组件&lt;/li&gt;
&lt;li&gt;分析类：
&lt;ul&gt;
&lt;li&gt;平台无关模型，与实现无关（可能做不出来）&lt;/li&gt;
&lt;li&gt;MVC模型-视图-控制器
&lt;ul&gt;
&lt;li&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;/li&gt;
&lt;li&gt;边界类
&lt;ul&gt;
&lt;li&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;/li&gt;
&lt;li&gt;识别规则actor和用例之间的一条通信关联对应一个边界类，actor是什么类型对应对应的边界类&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;控制类
&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;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="构建分析模型"&gt;构建分析模型&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;交互图
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;顺序图/时序图&lt;/p&gt;</description></item></channel></rss>