系统分析师-22年-下午答案
-
更多软考知识请访问 https://ruankao.blog.csdn.net/
-
试题一必答,二、三、四、五题中任选其中两题作答
试题一 (25分)
说明
某软件公司拟开发一套博客系统,要求能够向用户提供一个便捷发布自已心得,及时有效的与他人进行交流的平台。新用户发布个人博客之前,需要创建一个新的博客账户,以下为新用户注册的操作行为:
(a) 向系统请求创建一个新的博客账户;
(b) 输入个人详细信息;
(c) 使用证件数据库验证个人详细信息;
(d) 选择账户类型;
(e) 身份验证成功,创建新的博客账户;
(f) 用户身份信息验证不成功;
(g) 以电子邮件的方式将账户详细信息发送给用户;
(h) 博客账户申请被拒绝。
问题1 (6分)
在结构化和面向对象的软件分析过程中,通常会使用到数据流图、活动图和流程图,请分别描述这三种模型的特点和适用场景。
数据流图:一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。数据流图适用于系统分析中的逻辑建模阶段,数据流图展现系统的数据流。活动图:描述系统的工作流程和并发行为,可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。动图侧重描述行为的动作。其次活动图可描述并发行为。
流程图:图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。流程图适用于系统设计中的物理建模阶段,流程图展现系统的控制流。
问题2 (9分)
采用用例图和用例描述建模系统需求,请使用题干给出的 (a) ~ (h) ,完善“博客账户创建用例描述”中的 (1) ~ (6) ,如 表1-1 所示。将正确答案填在答题纸上。
- 表1-1
用例名称 | 创建一个新的博客账户 | |
相关需求 | 新用户的个人资料通过证件数据库验证成功后,CMS系统将允许用户创建一个新的博客账户 | |
上下文目标 | 新用户请求创建一个新的博客账户 | |
前置条件 | 新用户具有真实有效的身份证明 | |
成功的结束条件 | 为新用户创建博客账户 | |
失初败的结束条件 | 创建博客账户的申请被拒绝 | |
主要参与者 | 新用户 | |
次要参与者 | 作者证件数据库 | |
触发器 | 新用户向CMS请求建立一个新的博客账户 | |
基本流程 | 步骤 | |
1 | (1) | |
2 | (2) | |
3 | (3) | |
4 | (4) | |
5 | 身份验证成功,创建新的博客账户 | |
6 | (5) | |
扩展流程 | 步骤 | 分支动作 |
1 | 用户身份信息验证不成功 | |
2 | (6) |
(2):(d)
(3):(b)
(4):(c)
(5):(g)
(6):(h)
问题3 (10分)
需求评审是通过将需求规格说明书递交给相关人员检查,以发现其中存在缺陷的过程。在需求工程中,需求评审是一个非常重要的过程。结合题干案例,请用300字以内的文字简要说明需求评审的内容及作用。
需求评审的内容:1. 评审需求规格说明和初步的用户手册,确保软件需求的完整、准确、清晰。
2. 需求规格说明书中的软件需求是从系统需求、业务规格等正确推导出来。
3. 确保用户和软件设计人员对需求规格说明和初步的用户手册的理解达成共识,确保需求是符合干系人需求的。
4. 确保需求为系统设计、实现和测试提供了足够的基础。
5. 发现遗漏,以便尽快补充、更正。
需求评审的作用:
1. 发现二义性或是不确定性的需求。
2. 发现未达成共识的需求,让项目干系人在需求问题上达成共识。
3. 发现遗漏需求。
4. 减少需求不一致的风险,提高软件质量与满意度。
试题二 (25分)
说明
某软件公司为某企业开发一套在线办公自动化系统,以提升企业管理服务的质量和效率。公司决定采用面向对象方法开发该系统,张工负责对员工请假审批业务进行了分析,具体描述如下:企业员工通过请假申请页面提出请假申请后,首先由部门经理进行审核,若请假理由不合理,部门经理拒绝请假申请,将申请退回给员工,员工对请假申请表进行修改再次提交,或放弃请假申请。若请假理由合理,且请假天数小于等于3天,则部门经理直接批准请假申请,生成请假批准单,申请结束。若请假天数大于3天,则在部门经理批准请假申请后,需要提交给副总经理审核批准。副总经理若认为该申请合理,则审核通过,生成请假批准单,流程结束;若副总经理认为申请不合理,则拒绝请假申请,将请假申请退回给员工。
问题1 (11分)
识别设计类是面向对象设计过程中的重要环节之一,设计类表达了类的职责,即该类所承担的任务。请用300字以内的文字说明设计类通常包含哪3种类型,以及每种类型的主要职责,并从题干描述案例涉及的具体类为每种类型的设计类举出两个实例。
类可以分为三种类型,分别是实体类、边界类和控制类。1. 实体类:存储和管理系统内部的信息,实体类通常需要放入持久存储体(数据库、文件等)。实体对象(实体类的实例)用于保存和更新事件、人员等信息。本题的实体类有企业员工、部门经理、副总经理、请假批准单等。
2. 控制类:控制用例工作的类,体现应用程序的执行逻辑。本题的控制类有提交请假申请、批准请假申请、拒绝请假申请。
3. 边界类:位于系统与外界的交接处,用于系统外部环境与系统内部的交互。本题的边界类有请假申请页、请假申请表等。
问题2 (6分)
识别类之间的关系是面向对象分析过程中的重要环节之一,常见的类之间关系包括泛化关系、关联关系、聚合关系、组合关系等。请用300字以内的文字对泛化关系和关联关系的内涵进行描述,并根据题干具体类的描述为这两种关系各举出一种实例。
泛化关系:一般事物与该事物中特殊种类之间的关系,也就是类的继承。例如:员工和部门经理属于泛化关系。例如:员工和部门经理属于泛化关系。
关联关系:两个类之间存在可以相互作用的联系,即一个类知道另外一个类的属性和方法,含有“知道”、“了解”的含义。
例如:“员工可以提交请假申请单”语句中,员工和请假记录之间就是关联关系。
问题3 (8分)
在面向对象的设计过程中,状态图描述了一个实体基于事件反应的动态行为。请根据题干描述,填写图2-1中的(a) ~ (d)空白,完成请假审批的状态图。
(a):部门经理拒绝请假申请 (b):请假天数大于3天 (c):副总经理拒绝请假申请 (d):请假天数小于等于3天试题三 (25分)
说明
某公司长期从事宇航系统的研制任务。随着宇航系统能力的不断提升,软件的规模急剧增加,对应的缺陷密度呈现出几何增长,失效问题越来越严重。为了保证产品的质量,公司领导要求在重点项目中实施基于模型的系统工程(MBSE)。由于辅助动力控制系统关系着飞行器的飞行安全,有必要作为试点工程首先实施MBSE方法。王工作为安该系统的主要负责人,承担起了此项工作。
问题1 (10分)
王工以前一直负责用传统开发方法进行系统设计,深知基于文本的系统设计方式存在天然的局限性。王工接到指示后,研究了MBSE的相关理论基础和工程实现方法,提出了用MBSE方法设计辅助动力控制系统的实施方案。请用 300 字以内的文字说明什么是MBSE方法,并列举出三个基于文本设计方式的局限性。
基于模型的系统工程(MBSE)是一种形式化的方法,用于支持与复杂系统的开发相关的需求,设计,分析,验证和确认。与以文档为中心的工程,MBSE将模型放在系统设计的中心。MBSE是向以模型为中心的一系列方法转变这一长期趋势的一部分,这些方法被应用于机械、电子和软件等工程领域,以期望取代原来系统工程师们所擅长的以文档为中心的方法,并通过完全融入系统工程过程来影响未来系统工程的实践。 基于文档的设计方法的局限性主要有:
1. 在基于文档的方法中,许多文档是由不同的作者生成的,以从各种利益相关者的观点(例如系统行为,软件,硬件,安全,安全性或其他学科)中捕获系统的设计。不利于利益相关者之间的沟通,容易产生歧义。
2. 开发复杂系统的能力有限,基于本设计方案法前期仿真验证。
3. 自然语言容易引入形容词等模糊描述,很难保证准确性。
问题2 (9分)
MBSE 的核心技术是模型方法论,王工对目前主流建模方法Harmony-SE (harmony for System Engineering) 方法、RUP-SE (Rational Unified Process for System) 方法和 Vitech MBSE 方法进行了分析、对比,鉴于该系统具备安全攸关系统的特殊性,强调验证的有效性,王工认为Harmony-SE方法比较适合宇航环境开发。
图 3-1 给出了Harmony-SE方法的产品生命周期结构。请根据以下三种有关建模方式的描述,判定哪种描述是Harmony-SE方法
的正确说明?并简要说明王工在本项目中选择Harmony-SE方法的理由。
描述 1:一种面向对象的设计方法,可以将设计工作按照角色、工件和任务类型进行分解,生成新的分解结构,实现并行设计与迭代开发。
描述 2: 系统模型贯穿系统研发的整个生命周期,能够较好处理复杂与整体问题
描述 3:一种并行系统工程活动,由四个基本系统工程活动组而成,这四种活动通过公共系统设计库相关联
【描述1】描述1是对RUP-SE方法的描述。
【描述3】描述3是对vitech MBSE方法的描述。
根据王工对MBSE的研究,RUP-SE是一种面向对象的设计方法,vitech MBSE方法是一种并行系统,并不满足宇航系统所要求的高安全性和强调验证性的要求。
而Harmony-SE建模方法是贯穿系统研发的整个生命周期,用于支持与复杂系统的开发相关的需求、设计、分析、验证和确认。符合宇航系统所描述的安全性和验证性的要求。
问题3 (6分)
MBSE方法可以通过软硬件建模来预先评估系统的可靠性。王工带领项目成员针对其负责的辅助动力控制系统中的进排气门控制器组件开展了基于MBSE系统分析工作。图3-2给出了进排气门控制器的可靠性分布图。
王工指出:系统是由软硬件组成,以往考虑可靠性指标仅仅关注硬件失效问题,而不考虑软件失效对系统可靠性的影响。如果不考虑软件失效对系统可靠性的影响,本系统可靠性的MTTF(Mean Time To Failure,平均失效前时间)应该为125.9h。
(参考公式:
1
T
t
F
s
=
∑
i
=
1
n
1
T
t
F
s
=
1
280
+
1
5.01
∗
1
0
4
+
1
1
0
4
+
1
600
+
1
387
=
0.007942
(
1
/
h
)
\frac 1{T_{tF_s}} = \sum_{i=1}^n \frac 1{T_{tF_s}} = \frac 1{280} + \frac 1{5.01*10^4} + \frac 1{10^4} + \frac 1{600} + \frac 1{387} = 0.007942(1/h)
TtFs1=∑i=1nTtFs1=2801+5.01∗1041+1041+6001+3871=0.007942(1/h) )。
请对照 图3-3 给出的考虑软件失效情况下的系统可靠性分布图(这里,假设SYS1软件非常可靠,系统仅仅将圈中的软件可靠性加入系统可靠性的评估过程),说明此时的系统可靠性(MTTF)应大于还是小于不考虑软件失效的MTTF?并计算出此时的系统可靠性(MTTF)是多少?
1. 小于不考虑软件失效的MTTF。2. 系统可靠性的计算如下:
2/280+1/(5.01*104) + 1/104+1/600 + 1/387 + (1/0.3968 + 1/0.3968)
=0.007942 + (1/0.3968 + 1/0.3968)
=0.007942 + 2/0.3968
=0.007942 + 5.040322
=5.048264(1/h)
所以系统的可靠性为:1/5.048264 = 0.1980879H。
试题四 (25分)
说明
某大型电商平台构建了一个在线B2B商店系统。该系统采用微服务架构,将系统功能分解为多个松散耦合且可独立部署的较小组件或服务。最终设计的系统包括了电商系统中常见的服务:客户服务、订单服务、支付服务等,其中:
- 客户服务负责对客户相关的信息进行管理和维护;
- 订单服务负责对订单信息的管理和维护;
- 支付服务负责对在线支付功能和信息的管理和维护等。
为了确保微服务之间的松耦合,每个服务都有自己的数据,其中,订单服务使用了 NoSQL 数据库,客户服务和支付服务使用了关系数据库。
李工认为由于不同服务使用了各自的不同数据库,使得跨服务操作可能存在数据不一致。比如订单与支付的数据一致性问题,系统通过订单服务在本地 NoSQL 数据库中创建订单记录,同时在支付服务的关系数据库中创建支付记录,且必须保证订单记录和支付记录的一致性,该问题在系统构建时需要考虑。
问题1 (7分)
李工建议采用两阶段提交协议(2PC)来解决服务数据的一致性问题。请用200字以内的文字简要说明2PC;说明2PC是否能解决该问题,并简要解释原因。
1. 两阶段提交协议2PC经常用来管理分布式事务。(1):2PC包含协调者和参与者两类站点,只有协调者才拥有提交或撤销事务的决定权,而其他参与者各自负责在其本地数据库中执行写操作,并向协调者提出撤销或提交事务的意向。
(2):2PC分为两个阶段:表决阶段和执行阶段。
表决阶段:目的是形成一个共同的决定。
协调者给所有参与者发送“准备提交”消息,并进入等待状态,所有参与者给与回复“建议提交”或“建议撤销”。只要有一个结点选择撤销,则整体事务撤销,否则,执行该事务。
执行阶段:目的是实现这个协调者的决定。
根据协调者的指令,参与者或者提交事务,或者撤销事务,并给协调者发送确认消息。
2. 两阶段提交协议2PC不能解决当前问题。
(1):分布式数据库遵循的是CAP原则,会在一定程度上牺牲一致性。
(2):大多数NoSQL数据库并不支持2PC。
(3):分布式两阶段提交协议2PC一般针对的对象在逻辑上是一个整体,对某一个整体事务需要在多个物理节点上执行时,进行表决和执行,对多个数据库的不同服务并不是很合适。
问题2 (8分)
王工建议采用分布式数据管理方案,用事件驱动架构来解决服务数据的一致性问题,在订单服务和支付服务之间通过可靠的消息队列实现事件的传递,其基本操作步骤如下,请填写其中的空白处。
- 订单服务接收订购请求,创建一个订单,该记录状态为(a),发布一个“创建订单”事件;
- (b)接收“创建订单”事件,记录(c),发布一个“支付完成”事件;
- 订单服务接收“支付完成”事件,修改订单记录状态为(d)。
(b):支付服务
(c):支付信息
(d):已支付
问题3 (10分)
李工提出王工的方案会有数据库更新和发布事件的原子性问题,例如订单服务创建订单记录和发布“创建订单”事件需要原子性保障,否则会出现数据不一致状态。
王工认为可以使用本地事务发布事件的方法来解决该问题。请给出使用本地事务发布事件的基本方法,并说明该方法的缺点。
由一个独立进程来发布事件。具体来说,就是在存储业务实体状态的数据库中,使用一个事件表来充当消息队列。应用启动一个(本地)数据库事务,更新业务实体的状态,在事件表中插入一个事件,并提交该事务。一个独立的消息发布线程或进程查询该事件表,将事件发布到消息代理,并标注该事件为已发布。
缺点:
由于开发者必须牢记发布事件,因此有很大可能出错。此外这一方法对于某些使用NoSQL数据库的应用是个挑战,因为NoSQL本身交易和查询能力有限。
试题五 (25分)
说明
某公司拟开发一个食品供应链溯源系统,该系统需要提供从原材料供应商、加工商、物流、分销商、零售商、消费者的食品供应链全流程溯源。该公同组建了项目组,并召开了项目开发讨论会。会上,张工提出适过二维码扫描获取食品信息,采用中心化数数据库作为数据存储媒介;李工提出使用中心化数据库容易产生数据信任、溯源追责困难等问题,建议建立区块链和数据库的映射存储,提供存储和查询操作功能,并提出采用数据接入层、数据核心层、应用表示层三层体系架构实现该食品溯源系统。
问题1 (6分)
去中心化和开放性是区块链的重要特征,请用200字以内的文字简要说明什么是区块链的去中心化和开放性。
1. 去中心化:区块链采用了分布式计算和存储,不存在中心化的硬件或管理机构,因此使得任意节点的权利和义务都是均等的。
2. 开放性:
区块链的系统的一个开放性质的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开的。
问题2 (7分)
分布式交易账本、哈希散列函数、公私钥签名、时间戳就是区块链的核心技术,请从上述技术中选择两种最适合解决数据信任问题的技术,并用300字以内的文字说明原因。
分布式交易账本、公私钥签名。分布式交易账本使交易账本在全网不止一份,而是有多份,当有人想集改账本时。非常难以实现,所以能解决数据可信度问题。
公私钥签名是使用非对称加密机制,做签名,以验证持有人以及防止伪造的效果,这种技术也极难被破解,能验证持有人自然能一定程度解决数据可信度的问题。
问题3 (12分)
根据李工的建议,该系统将采用三层架构。请从下面给出的 (a) ~ (m) 候选项中进行选择,补充完善 图5-1 中 (1) ~ (6) 处空白的内容,完成该系统的架构设计方案。
(a) 数据接入层
(b) 智能合约
(c) Socket
(d) 4G/Wifi
(e) 应用表示层
(f) 数据库
(g) MVC
(h) 数据核心层
(i) 传感器网络
(j) 区块链网络
(h) 数据核心层
(i) 传感器网络
(j) 区块链网络
(k) 4G/Wifi
(l) JDBC
(m) 业务逻辑层
(2):(k)
(3):(b)
(4):(f)
(5):(h)
(6):(e)