前言
总结下来,软考的案例分析大致可以分为以下几类
软件工程篇:包括需求分析与设计,结构化以及面向对象以及设计模式部分等
软件架构篇:包括软件架构评估、质量属性(必考)、不同软件架构风格对比以及考一些架构图等
数据库相关篇:包括数据库以及缓存、redis或者大数据等
嵌入式:一般不考虑
对于案例分析,有时间的一定要动手去写去做,做完之后对答案对比,并且可以借助AI进行分析,一是可以加强记忆,二是可以熟悉出题的思路和风格,做完之后进行总结并记忆,这样才能转化为自己的,不容易忘记
题目来源
51CTO题库 第2章 计算机系统基础知识(第二版)(系统架构设计师)
链接:https://rk.51cto.com/t/n/exam/answer/em-10/9345/5126?answerMode=2\&type=1#qid-310924
一、类图相关

1.图中采用UML中的类图来描述商品交易平台中的需求,类图中可描述分析类和设计类两种。请问分析类和设计类有什么差异?图中绘制的是分析类还是设计类?分析类和设计类分别会在软件生命周期模型中的哪个或哪些阶段产生?

2.图中出现了UML类图中的哪几种关系?简要描述这些关系所代表的含义

二、活动图、状态图相关
1.在面向对象的设计过程中,活动图(activity diagram)阐明了业务用例实现的工作流程。请用300字以内的文字给出活动图和流程图(flow chart)的三个主要区别

2.在面向对象的设计过程中,状态图(state diagram)描述了一个实体基于事件反应的动态行为。请根据提干描述,填写图中的空白,完成订单处理的状态图


三、用例图相关
1.用例图包含哪几个基本元素,并用300字以内的文字进行简要说明

解析
类图
类图描述一组类、接口、协作和它们之间的关系。
分析类是在需求分析阶段对业务领域中具有清晰职责的概念进行抽象,用于表达业务实体、边界和控制逻辑,不涉及任何实现技术,目的是稳定需求、构建领域模型。
设计类是在软件设计阶段基于分析类进一步细化得到的类,包含具体的属性、方法、类型定义,与编程语言和实现技术相关,能够直接指导程序开发。
类可以细分为三类:
- 实体类:代表系统中的核心数据对象,常用于数据持久化
- 控制类:处理业务逻辑和协调不同类之间的交互
- 边界类:负责处理系统与外部环境(如用户或其他系统)之间的交互
类图中类的关系有:
- 依赖关系:一个事物发生变化影响另一个事物。一个类(类A)在使用另一个类(类B)时,依赖是临时的、偶然的。类B的变化可能会影响类A,但类A不长期持有类B的引用。比如在编写代码时类B作为方法参数、局部变量或返回值
- 泛化关系:特殊/一般关系。一个类集成另一个类的功能,并可以扩展新的功能
- 关联关系 :两个类之间存在长期的、稳定的联系。可细分为聚合和组合关系
- 聚合关系:整体与部分生命周期不同。关联关系的一种特例,表示"整体-部分"的关系(Has-A),但整体和部分可以独立存在。比如班级和学生的关系(班级解散后学生仍然存在)
- 组合关系:整体与部分生命周期相同。也是关联关系的一种特例,表示"整体-部分"的关系(Contains-A),但整体和部分的生命周期一致,部分不能独立整体存在。比如学校和部门关系
- 实现关系:接口与类之间的关系
不同关系的图示如下(注意不同关系使用的符号)

活动图
活动图是一种特殊的状态图。描述一个操作中要进行的各项活动的执行流程,同时也常用来描述一个用例的处理流程或某种交互流程,它强调对象间的控制流程

用例图
用例图描述一组用例、参与者以及它们之间的关系,包含的元素有
- 参与者:是指存在于系统外部并与系统进行交互的任何事物,既可以是使用系统的用户,也可以是其他外部系统和设备等外部实体
- 用例:表示系统所提供的服务,定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统发生的一段对话
- 关系:表示的是参与者与用例之间的关系,或者用例与用例之间的关系
用例的关系:
- 参与者与用例之间只有关联关系
- 参与者与参与者之间只有泛化关系
- 用例与用例之间有:包含、扩展、泛化关系
关系:
- 包含关系 :可以从两个或两个以上的用例提取公共行为时,使用包含关系。其中提取出来的公共用例称为抽象用例,原始用例称为基本用例或基础用例。包含关系使用虚线箭头和include单词表示

- 扩展关系 :如果一个用例明显混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以分为扩展关系。扩展关系使用虚线箭头和extend单词表示

- 泛化关系 :当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽取成父用例,其他的用例则作为子用例,类似继承。泛化关系使用空心箭头表示
