Robustness Diagram - 从需求分析到架构设计

转载自: http://www.dotblogs.com.tw/jed/archive/2010/11/21/robustness_diagram.aspx   
什么是Robustness Diagram

Robustness Diagram是一种很特殊的图形,介于Class Diagram与Activity Diagram之间,最早由 Ivar Jacobson 于1992年所提出,台湾这边翻成强韧图、稳健图,对岸则采译音翻成鲁棒图。在需求分析领域,UML的Use Case Diagram已经被视为需求捕获的重要工具,藉由Use Case及Use Case叙述文件,可以很清楚的将需求分解展开,但接下来该如何将Use Case的需求描述转化成设计架构呢?以中小型的软体系统来说,通常使用Use Case Diagram+ Class Diagram+ Sequence Diagram就能进行分析设计,而Use Case Diagram是站在使用者的角度来看系统全貌,Class Diagram及Sequence Diagram则分别代表了系统静态结构及动态的交互关系,过去我使用这3个图型进行开发就大致满足所需 了,也许会再依实际情况使用其他UML图形,但随着经验累积及学习,渐渐感觉从分析跨越到设计之间存在着一道槛,领域模型的提炼,我们可以采用四色原型分析法或交易样式,但系统架构的设计,要考虑到更多方方面面,Robustness Analysis Diagram正好可以帮助我们设计出一个基于需求且能继续进行细部设计的初始架构。

Robustness Diagram的基本元素及关系介绍

如上图,主要的图形就只有3种,Boundary(边界)、Control(控制)及Entity(实体),这3个图形分别代表了不同的职责。

Boundary : 边界物件,Use Case的主要元素之一就是Actor(参与者),Boundary的职责就是与Actor互动,它代表着一种外部元素与系统互动的关系。

Control : 控制物件,代表系统的动态行为,描述Use Case中系统应具有的规则与处理逻辑。

Entity : 实体物件,泛指系统会存取的资料,基本上是可以对应到领域物件。

这3个元素之间有着基本的 限制关系 :

Boundary及Entity必须透过Control交谈,Entity与Entity或Boundary与Boundary之间也必须透过Control。而Actor则只能与Bounday进行互动。

实作范例

接下来用一个简单的例子来说明如何绘制Robustness Diagram,假设今天开发一套汽车检验记录系统,经过需求访谈及分析后,获得如下图的Use Case Diagram。

接下来以验车的Use Case为例,藉由三个元素的特性找出对应的职责,初步绘制出如下的Robustness Diagram

我们进一步思考,验车会去读写客户车籍资料,并且要 写入验车历史记录,因此验车还包含了查询及验证输入的职责,基于OOD的SRP(单一职责原则),可以再拆分出2个Control物件(如下图)。

继续思考每一个元素所代表的职责之间的关系,初步的将系统拆分为几个部份后,最终获得如下的设计图

初步的架构设计便完成了,顺利的衔接Use Case之后的设计,我们已藉由Robustness Diagram识别出系统在验车这个Use Case的各种职责,这对后续的细部设计非常重要,不论是要绘制Class Diagram、Activity Diagram,或是Sequence Diagram,都比较容易进行,但这不是设计的终点,只是起点而已。

时间: 2024-12-08 10:49:50

Robustness Diagram - 从需求分析到架构设计的相关文章

山寨Besiege(三)需求分析与架构设计

在昆明工作的日子,我虽对经理忽悠的作风极为不屑,但对他整天挂在嘴边的那些软件工程思想还是很尊崇的.无论是传统的瀑布流,还是敏捷开发,无论是大的系统,还是小的功能,先分析需求.再构思设计.再实现的流程是永恒真理. 事情还没弄清楚就开始动手做,是初学者的幼稚行径,越成熟的设计师,越是重视前期的需求分析,思路清晰后,编码也只是"唰"一下的事情了. 习惯总得从无到有养成.所以这次我刻意走一个完整的流程,即便不是那么适应,也要慢慢学会.主要就是在编码之前,先用Visio画UML图. 由于游戏工程

团队项目需求分析和架构设计

初稿 之后还会有修改. 工大助手: 前提: 用户根据学号密码登录 功能: 1.  用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2.  用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3.  用户可以获得特定学期的课程表(教务已经提供的). 4.  用户可以获得考试安排信息. 5.  用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 6.  用户可获得特定课程在所有用户中的成绩排名. 7.  用户可

初学架构设计的第一步:需求、愿景与架构

了解<需求>.<愿景>与<架构>三者的关系.也就是<需求分析>.<观想愿景>与<架构设计>三者的关系. 一.需求(Requirements)分析: 这通常是由目前面临的问题(Problem)所引发出来的.着重于现实问题和条件的分析,然后寻求解决问题的方法.技术和资源.就系统开发人员来说,需求主要有两种:用户需求和系统需求.一般而言,人们通常会把它看成是系统开发时必须满足的<限制>(Constraint),也是要达成的<

敏捷开发下, 如何将需求分析,架构(软件)设计,开发与测试,一气呵成式的结合且高效的完成 ?

产品开发中,时常会发生类似如图中 "削马铃薯"的悲剧. 悲剧的发生,往往是由于我们只传递了 "要作什么功能"给开发人员.却缺乏了一个有效的且轻量级的实践,能在正式进入迭代开发前,确认开发人员是否真有能力,能将 "使用者的需求"转化为 "可执行的代码"? "场景树" 便是一结合Use Case, Domain Driven Design, UML 的轻量级可视化的敏捷实践. 经由场景树,可确认开发人员,是否已

架构设计实践二:需求分析

1.1 三个问题 掌握好需求分析,需要掌握三个问题的解决方式. 需求如何获得?需求开发=愿景分析+需求分析 如何判断需求全不全?功能.质量.约束三类需求 如何从需求转换为设计?功能.质量.约束对架构产生不同的影响. 1.2 软件研发与交付过程总图 其中概念化阶段一般都要完成愿景分析.风险评估.可行性分析及项目进度和成本的粗略估算,输出<愿景与范围文档>:需求分析阶段则完成需求捕获.需求分析,得到<软件需求规格说明书>,一个关键的思路是需求捕获与需求分析是迭代着进行的,完成需求捕获之

架构设计-架构需求分析

一.架构设计的需求分析从哪来 需求分析的前期工作是愿景描述及愿景分析, 即愿景分析就是需求的前期调研. 从软件过程来看,需求分析是一个承上启下的阶段–“上承”愿景,“下接”设计.需求分析的工作内容包含如下三方面: 需求捕获: 理解沟通需求分析:做什么,有哪些问题 系统分析:原因是什么, 怎么做 三者不是独立无关的阶段,而是相互伴随.交叉进行的. 需求捕获: 从各个方面收集需求, 并理解需求.典型的需求捕获是使用“需求采集卡”:需求描述.需求提出者.需求记录者.需求类型等.需求分析:需求捕获得到的

鲁棒图(Robustness Diagram)

鲁棒图与系统需求分析 鲁棒图(Robustness Diagram)是由Ivar Jacobson于1991年发明的,用以回答“每个用例需要哪些对象”的问题.后来的UML并没有将鲁棒图列入UML标准,而是作为UML版型(Stereotype)进行支持.对于RUP.ICONIX等过程,鲁棒图都是重要的支撑技术.当然,这些过程反过来也促进了鲁棒图技术的传播. 而“鲁棒图(Robustness Diagram)”的作用,除了初步设计之外,就是检查用例规约是否正确和完善了.“鲁棒图”正是因为后者检查的作

web架构设计经验分享(转)

本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查看视频 架构设计的几个心得: 一,不要过设计:never over design 这是一个常常被提及的话题,但是只要想想你的架构里有多少功能是根本没有用到,或者最后废弃的,就能明白其重要性了,初涉架构设计,往往倾向于设计大而化一的架构,希望设计出具有无比扩展性,能适应一切需求的增加架构,web开发领

浅谈12306 核心模型设计思路和架构设计

春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂.后来自己想想,也确实如此.所以,很想挑战一下12306这个系统的核心领域模型的设计.一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的.当用户发起购买行为时,系统只需要生成订单并对用户要购买的商品减库存即可.但是,12306就不是那么简单了,具体复杂在哪里,我下面会进一步分析. 另外一个让我写这篇文章的原因,是我发现也许是否是因为目前12306的核心领域模型设计