案例题2~5都是选做题,选2道题进行回答,历年第二题主要考查了结构化设计(流程图,数据流图),面向对象(概念,UML等),数据库技术,WEB技术,分布式技术其中结构化设计,面向对象和数据库技术出现频率最高。
本篇博文目录:
1.数据流图
- 数据流图
数据流图作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的
数据流
。
(1) 相关概念的理解
- 数据流图组成元素:数据流,加工(P1…),数据存储(D1…)和外部实体E(E1…):
- 黑洞,奇迹,灰洞
数据的加工至少需要输入和输出至少一条:
灰洞:表示加工的数据不足于输出数据,例如:下图P5.4没有输入P5.4产生存在奇迹,因为P5.4加工后的数据输入到数据存储中但数据存储没有输出,D2存在灰洞。
- 数据的读,写,输入和输出(
必须包含一个加工操作
):
P --> D :写
P <-- D :读
P <-- E :输入
P --> E :输出
- 流程图
流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的
控制流
。
- 数据流图和流程图的区别
①:数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
②:数据流图展现系统的数据流;流程图展现系统的控制流。
③:数据流图展现全局的处理过程,过程之间遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。
④:数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段。
- 数据流图的分层
题目中0层数据流图和顶层数据流图如下:
- 高质量数据流图设计考虑的原则
①
复杂性最小化原则
:DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考查每一个 DFD。如果要了解某个过程更加详的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD进行考查。
②接口最小化原则
:接口最小化是复杂性最小化的一种具体规则。在设计模式时,应使得模型中各个元素之间的接口数或连接数最小化。
③数据流一致性原则
:一个过程和它的过程分解在数据流内容中是否有差别?是否存在有数据流出但没有相应的数据流入的加工?是否存在有数据流入但没有相应的数据流出的加工?
(2) 2009年题2
问题1:
题干:
回答:
数据流图作为一种图形化工具,用来说明业务处理过程,系统边界内所包含的功能和系统中的数据流。流程图以图形化的方式展示应用程序的数据输入开始到输出为止的逻辑过程,描述处理过程的控制流。根据题干中提到在系统分析阶段,为了更好地对情报数据处理及其与外部角色的关联进行建模,数据流图不涉及外部角色,并且数据流图可以很好的满足该需求。数据流图和流程图的区别是数据流图用于逻辑建模阶段,采用数据流,全程的处理过程的计时标准不唯一,而流程图用于物理建模阶段,采用控制流,全程的处理过程的计时标准唯一。
问题2:
数据流图存在的问题:
- 配置信息:外部实体用户和外部实体数据汇集系统之间的数据流没有经过加工处理,存在直接数据流
- 规则文件:外部实体数据汇集系统和数据存储之间数据流没有经过加工处理进行传递,存在直接数据流
- 分类训练加工:只有输入没有输出,产生黑洞
- 分类处理加工:只有输出没有输入,产生奇迹
0层模型如下:
问题3:
(3) 2014年题2
前面二道题很常规,只需要了解上面的概念即可:
0层数据流图如下:
问题3:
分析:
答案:
(4) 2018年题2
题1:
这道题其实是软考中级软件设计师考试下午题1的考点,区别就是中级只需要要写出外部实体和数据存储,这里对加工描述也需要给出。但是这道题很简单因为说了需要使用题干中给出的词语,所以只需要去题干中找对应功能的描述即可。
0层数据流图如下:
题干描述:
答案:
题2:
问题2分析:
答案:
题3:
这道题需要理解实体和类的概念,实体描述的是数据以及该数据的相关属性(实体由各种属性组成)。而类是数据和行为的封装题(类有各种属性和各种行为方法组成)。然后需要理解Essential Use Cases和Real Use Cases的概念,一个用于面搜用例本质属性,另一个用户描述用例的实现方式。
答案:
(5) 2019年题2
题1:送分
0层数据图:
题干:
答案:
题2送分:
答案:
题3送分:
答案:
2.数据库
(1) 相关概念的理解
关于数据库部分的知识你可以通过我的这篇博文进行了解:软考高级-系统架构师-案例分析-数据库真题考点汇总
(2) 2010年题2
题1:
这道题考的就是集中式数据库概念和分布式数据库概念。
题干:
答案:
题2:
刘工采用的是分布式数据库,所以这里主要是分布式数据库系统中解决单点故障的办法,对数据库的读取,添加,更改和删除操作根据刘工的想法是采用读写分离加缓存的策略。
答案:
题3:
这道题考的集中式数据库和分布式数据库扩容的办法,集中式数据库通过向上扩展,通过硬件扩容(增加CPU数量,内存容量,磁盘数量)和硬件升级(使用更好的数据库存储设备)。而分布式系统采用向外扩容,具体的实现方式包括数据复制,数据垂直/水平切分,缓存和全文搜索。
答案:
(3) 2011年题2
题1:
考擦的概念为反规范化技术的概念和缺点和优点。在规范化设计中,数据库设计人员通过牺牲部分规范化设计来提高性能,这种规范化的回退称为反规范化技术。优点:在反规范化中允许保留一些冗余数据来减少表连接操作/简化计算从而提高数据查询效率。缺点:增加冗余数据,会提高数据的存储量,多张表中存储相同数据,需要进行数据同步提高了维护成本,去掉部分规范化设计会出现一些增,删,改异常情况的发生。
答案:
题2:
反规范化的方法有增加冗余列,派生列,垂直分表,水平分表。增加冗余列就是在多张表中存储相同的数据,避免使用表连接进行查询。增加派生列就是在表中增加一些需要计算的字段,比如出生年月可以增加一个年龄字段,避免进行函数计算,简化计算可以通过查询的效率。表的水平分割就是一张表的数据量过大,将改表中的数据放在其他的表中,存放不在不同的介质。表的垂直分割就是将主键和一些字段放在一张表中,将主键和其他字段放在另一张表中,经常进行查询的放在一张表,不经常查询的放在另一张表中。
答案:
题3:
答案:
(4) 2020年题2
题1:
邮政包裹单信息如下:
答案:
题2:
超类实体,在面向对象中我们称超类为父类,顶级类,存放多个对象共有的属性和行为,在这里实体主要是属性,所以超类实体可以理解为由多个实体共有属性组成的实体。包裹单上的收件人和寄件人存在共有的属性,可以组成一个超类实体。共有属性:姓名,电话,用户代码,单位名称,详细地址,邮政编码。
答案:
题3:
派生属性就是有其他字段计算而来的属性。派生属性:总计,资费(不同的地方收费标准不一样,还有重量和体积不一样资费也不一样,所以资费也是一种派生属性)
答案:
3.面向对象
(1) 相关概念的理解
- 状态图
主要用于描述一个对象在其生命周期的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。
侧重描述行为的结果。
- 活动图
用于描述系统的工作流程和并发行为。活动图可以看作是状态图的特殊形式。
侧重于描述行为的动作。
- 状态图和活动图的区别
两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。
- 活动图和流程图的区别
活动图是面向对象的,流程图是面向过程的;流程图一般都限于顺序进程,而活动图则可以支持并发进程;活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现系统的行为,而非处理过程;而流程图着重描述处理过程。其次活动图可以描述并发行为,而状态图不可以。
- 用例图
用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成。
组成元素:
参与者(Actor):与应用程序或系统进行交互的用户、组织或外部系统
用例(Use Case):用例就是外部可见的系统功能、对系统提供的服务进行描述用例之间的关系
子系统(Subsystem):用来展示系统的一部分功能,这部分功能联系紧密。
如下:
- 用例图的关系(主要只有三种关系,泛化,包含和扩展)
关系的简单理解:
- 包含
包含就是发送一件事情之前需要先执行某一件事情。
如从系统中删除图书前需要先查询该图书信息。这里删除图书为基本用例(包含用例),查询图书为被包含用例。前驱为先执行的事件:删除图书-----include------>查询图书
- 扩展
扩展就是做某件事情的特殊情况。
如:去图书馆还书,如果没有按时还书就会被罚款。这里基本用例为还书,扩展用例为罚款。前驱为先执行的还书,后驱为可能发生的事件罚款。还书<------extend------罚款
- 泛化(面向对象中的继承关系)
特殊与一般关系也称为泛化关系,意思就是父类为一般事件/参与者,而这个一般的特殊事件/参与者为子类。这里有二种一个是参与者之间的泛化关系,比如用户包括商家与会员。用户是一般的参与者而商家和会员是用户的特殊参与者,也可以理解为用户为父类,商家和会员为子类。另一种泛化关系就是事件的泛化,比如登入事件包括微信登入和手机号登入事件,这里的登入事件为一般事件,而微信登入和手机登入事件为特殊事件,也可以理解为登入为父类,微信和手机号登入为子类。
- 类图的关系
①
关联关系:
提供了类之间的结构关系,将多个类的实例连接在一起。
②
依赖关系:
表示一个类的变化可能会影响另一个类。
③ 泛化关系:
描述了一般事物与该事物中的特殊种类之间的关系。
④ 聚集关系:
表示类之间整体与部分的关系,其含义是部分可能同时属于多个整体,两者生命周期可以不相同。
⑤ 组合关系:
表示类之间的整体与部分关系,部分只能属于一个整体,两者具有相同的生存周期。
⑥ 实现关系:
接口与实现类之间的关系。
- 序列图/顺序图
交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
- 协作图
交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。时序图按照时间顺序布图,而协作图按照空间结构布图
- 序列图和协作图的关系
序列图强调交互的消息时间顺序。协作图强调接受和发送消息的对象的结构组织,强调通信的方式。
- 对象模型,动态模型,功能模型
① 对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现。
② 动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现。
③ 功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用用例图来实现。
部分内容来源于:
备战软考–UML用例图
软考高级(一)用例图
类间关系(软考)
软考考点之UML各种图识别
(2) 2015年题2
题1:
状态图主要描述一个对象在其生命周期的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。活动图主要描述系统的工作流程和并发行为。二者的区别状态图侧重于描述行为的结果,而活动图侧重于描述行为的动作。
答案:
题2:
题干:
勾选题干中XXX状态,然后结合状态图填写即可。
答案:
题3:
活动图填入的时候需要去掉状态。问题(1)表示和飞控计算机并行执行的任务。
根据飞控计算机进行定位,(1)应该为地面综合控制计算机
从b这一条也可以看出(1)为地面综合控制计算机:
(2)根据题干填入准备起飞,但是注意这里的→,这里很容易出错,观察一下图,会发现中间的部分都带有→并且格式都是下传XXXX信息,所以这里应该填入下传起飞就绪信息。
发起起飞指令—>(3) 所以(3)应该填入垂直起飞( 去掉状态
)
(9) 无线电遥控飞行
(4) 高度保持
(5) 发送目标高度 (6) 垂直升降
(7) 发送任务执行结束指令 (8) 飞机降落
答案:
(3) 2016年题2
题1:
用例就是外部可见的系统功能、对系统提供的服务进行描述用例之间的关系,参与者表示与应用程序或系统进行交互的用户、组织或外部系统。
实体为管理员,学生,教师,打印机,时间(根据题干中有一句每个月到了月底xxxx,这里容易遗漏时间这个外部实体)
答案:
题2:
用例之间的关系主要有三种,包含,扩展,泛化,登入系统和注册课程用例之间是包含关系,只有进行登入系统,登入后才能够进入系统中进行注册课程,前驱为登入系统,注册课程-----include----->登入系统。参加考试与参加补考用例是扩展关系,只有开始没有通过才会发生特殊事件参加补考,前驱为参加考试,参加补考-----extend------>参加考试。
答案:
题3:
类图主要关系有依赖,关联,聚合,组合,泛化;University与Student是部分与整体,学校的生命周期不受学生的生命周期的影响,所以为聚合。University和Department的关系为部分与整体哦,学校和部分的生命周期是一致,所以为组合。Student和Course是连接关系即关联关系。
答案:
(3) 2021年题2
题1:
(1)和(2)为参与者,(3)~(12)为用例。
题干:
参与者患者,医生(从顺序图中可以发现实体医生),在题干中并没有描述参与者和用例之间的交互,这里能够通过用例来分析,注册登入患者和医生都需要所以(3)为注册登入,结合顺序图并且医生在预约挂号管理系统中更多的是XXXX的管理c,f,h,i,j;患者就是b,d,e,g。通过上面的分析说明(1)为医生,(2)患者,分别填入用例中即可。
答案:(参考答案给的系统管理员,但是这里填医生也没有什么影响)
题2:
根据题干可以分析出(1)预约人员,(2)发起预约挂号请求,(3)显示医生出诊时段(4)显示是否预约成功。协作图和顺序图的区别就是顺序图强调交互消息的时间顺序,而协作图强调接受和发送消息的对象的结构组织,强调通信方式。
答案:
题3:
答案: