基于 UML 的需求分析和系统设计实施用例
实现用例的目的在于保证系统的设计可以满足用户的功能性需求,在实现用例的过程中,应该利用Jacobson所分类的三种分析类:
- 控制对象(Control Object) :控制对象包装了一个或多个用例的功能性需求,属于功能性对象,而且这个功能与用例有相当密切的关系。
- 实体对象(Entity Object) :实体对象管理了信息及其衍生资源的存取,是属于系统本质面的概念性对象,这类对象并不会随着用例的增多而有所变动。
- 边界对象(Boundary Object) :边界对象是属于与外部桥接的对象,这类对象将与外部直接接轨,直接受到外部的限制。(注意:这里的“对象”并非指类的实例那种对象)
1)勾勒用例的控制对象
① 针对每个用例提供一个“控制对象”
② 明确这个控制对象的责任(Responsibility)是什么
从“主执行者”在正常流的叙述中出现的次数来决定系统要提供几个服务;
再从每一个“对话块”中,“系统”当主语的最后一句话,找出这个责任的名称。
③ 明确这个服务的输入输出
判断这个服务中,是否需要“主执行者”提供什么信息,而“系统”又需要回复主执行者什么信息
④ 进入到服务内部,审视服务的实现方式
在控制对象的内部,每一个以“系统”当主语的叙述都可以独立成一个新的功能函数;
只是该功能函数并非是提供给主执行者的,因此是一个“私有”的函数,只提供给控制对象使用。
勾勒用例的控制对象示例过程
针对前面用例图中的第一个用例“产生请购需求(RFP)”,我们可以提供一个“产生请购需求(RFP)控制对象”。
“产生请购需求(RFP)”的“正常流”叙述:
(1) ERP系统提供[年度物料采购计划]给系统。
(2) 系统根据[BR1]产生[厂商询价推荐名单]。
(3) 系统依照[厂商询价推荐名单]请通知系统将[物料请购需求]传给名单上的厂商。
分析过程如下:
从(1)得知“主执行者”是:ERP系统;
“主执行者”总共出现了1次,也就是所只有一个“对话块”,所以系统要提供1个服务;
“对话块”中“系统”当主语的最后一句(3),可得知系统所需提供的服务是:产生厂商询价推荐名单;
从(1)可知服务的输入是:年度物料采购计划;
从(3)可知服务的输出是:厂商询价推荐名单;
从(2)可知服务内部必须完成的第一件事:根据[BR1]产生[厂商询价推荐名单];
从(3)可知服务内部必须完成的第二件事:依照[厂商询价推荐名单]请通知系统将[物料请购需求]传给名单上的厂商;
所以从上面两步可知控制对象内部需要两个“私有函数”。
★ 控制对象的类图示例http://yunzhu.iteye.com
2)针对控制对象绘制序列图
前面探讨了如何找出信息系统中所需的控制对象,但这样仍然不够,因为前面并没有完整描述出究竟对象与对象之间是如何通力协作,来满足用例所描述的用户需求。因此,必须要使用序列图来说明这个交互过程。
在绘制序列图时,可以采用两阶段序列图绘制法:
① 把信息系统当黑箱,利用用例叙述找出系统所应负责的服务。
这个步骤可以先绘制一个序列图,然后把用例叙述放在该序列图的右方(这样便于对比),然后参照用例图,把相对应的用例转换为一个叫做“系统”的对象。
② 把黑箱打开,加入找出的分析对象,并把系统所需实现的责任分配给适当的对象。
把上个步骤得到的“黑箱”序列图中的“系统”换成实际的控制对象,并且依据找出的控制对象的责任,看看是否一致,这样就完成了序列图的设计了。
★ 控制对象的“黑箱”序列图示例
针对上面的产生请购需求的控制对象,根据步骤①,把信息系统当作一个“黑箱”,便可得到以下序列图:http://yunzhu.iteye.com
3)找出用例的实体对象
可 以通过Peter Coad的“交易模式”找出用例的实体对象,这个模式的假设是:当发现企业所关心的问题领域存在必须要记录的某些事件时,这代表着这个事件是一个交易。而 系统设计人员可以从交易出发,依次去找出与这些交易相关的企业概念(人、地、物),如此就可以迅速地得出这个企业的概念模型。
总之,实体对象主要是根据对于问题领域的理解来找出问题领域中的重要概念,对于实体对象的分析,无论是对于进行“实体关系图的”的数据库设计,或是利用“对象模型”做的“结构分析”来说,都是相当重要的设计准则。
实体对象属于领域模型的重要概念,将在下一节“建立领域模型”中重点讲解。
4)系统设计阶段的开发流程
① 通过对用例的理解以及对用例叙述的分析,找出系统的控制对象及其操作。
② 通过与领域专家的访谈过程,找出系统的实体对象以及重要熟悉。
③ 设计人员利用两阶段绘制的序列图,验证前述的控制对象及操作的正确性。
前面通过三种分析类实现用例的方式,会从用例出发分别找出控制对象、实体对象和边界对象,在找出这些“对象”(这里的对象并非指类的实现,而是指一种分析类)之后,便可以建立完整的“领域模型”了。
推荐阅读
-
基于 UML 的需求分析和系统设计实施用例
-
基于 UML 的需求分析和系统设计
-
小红书大产品部架构 小红书产品概览--经过性能、稳定性、成本等多个维度的详细评估,小红书最终决定选择基于腾讯云星海自研硬件的SA2云服务器作为主力机型使用。结合其秒级的快速扩缩、超强兼容和平滑迁移能力,小红书在抵御上亿次用户访问、保证系统稳定运行的同时,也实现了成本的大幅降低。 星海SA2云服务器是基于腾讯云星海的首款自研服务器。腾讯云星海作为自研硬件品牌,通过创新的高兼容性架构、简洁可靠的自主设计,结合腾讯自身业务以及百万客户上云需求的特点,致力于为云计算时代提供安全、稳定、性能领先的基础架构产品和服务。如今,星海SA2云服务器也正在为越来越多的企业提供低成本、高效率、更安全的弹性计算服务。 以下是与小红书SRE总监陈敖翔的对话实录。 问:请您介绍一下小红书及其主要商业模式? 小红书是一个面向年轻人的生活方式平台,在这里,他们发现了向上、多元的真实世界。小红书日活超过 3500 万,月活跃用户超过 1 亿,日均笔记曝光量达 80 亿。小红书由社交平台和在线购物两大部分组成。与其他线上平台相比,小红书的内容基于真实的口碑分享,播种不止于线上,还为线下实体店赋能。 问:围绕业务发展,小红书的系统架构经历了怎样的变革和演进? 系统架构变化不大,影响最深的是资源开销。过去三年,资源开销大幅增加,同比增长约 10 倍。在此背景下,我们努力进行优化,包括很早就开始使用 K8S 进行资源调度。到 18 年年中,绝大多数服务已经完全实现了容器化。 问:目前小红书系统架构中的计算基础设施建设和布局是怎样的? 我们目前的建设方式可以简单描述为星型结构。腾讯云在上海的一个区是我们的计算中心,承载着我们的核心数据和在线业务。在外围,我们还有两个数据中心进行计算分流,同时承担灾备和线上业务双活的角色。 与其他新兴电子商务互联网公司类似,小红书的大部分计算能力主要用于线下数据分析、模型训练和在线推荐等平台。随着业务的发展,对算力的需求也在加速增长。