版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人人都是领域专家1、人人都是领域专家-用例图 2、人人都是领域专家-活动图 3、人人都是领域专家-类图 4、人人都是领域专家-顺序图 5、人人都是领域专家-类图关系化 6、人人都是领域专家-类图关系说明 一个好的设计能使开发事半功倍,好的设计来源于好的需求。这就需要需求分析师帮我们开发人员提供精炼,清晰,准确的需求报告。需分将采集来的需求用UML(Unified Modeling Language )描述出来,我称之为需求建模。需求阶段建模的过程中涉及到的有用例图(usecase diagram)和活动图(activity diagram)。下面就对网上购物的应用进行用例建模,以此举例用例建模
2、的过程。当然任何事情都不能一蹴而就,用例建模也是一样。用例建模的过程可能分好几次迭代进行,一开始粒度可能较粗,随着迭代进行而逐渐精化。所以不需要一开始就妄想考虑的面面俱到。1、网上购物的需求描述非常简单:无非就是用户在一个购物网站上购买商品。用用例图描述如下,有一个参与者和一个用例。非常简单,目标明确。2、然后自评一下,觉得购买商品这个用例粒度太粗了,还有细化分解的可能。于是就将该用例分解。这个过程需要和客户更好的沟通。3、用例分解以后,新的用例粒度更细,权责也更明确了。但是客户反映有些用例是购买商品的必选步骤,有些则不是。这时如何在用例图上体现这个关系呢?我们可以利用include和exte
3、nd概念来描述,include描述的是主用例和次用例之间的包含关系即必选关系,extend描述的是可选关系。include关系箭头是主用例指向次用例,extend关系箭头是次用例指向主用例。4、随着迭代的推进,发现有些用例可以有多种实现方式,不同的实现方式可能有不同的活动图和顺序图。故在用例图上使用泛化关系描述之。泛化关系使用一个空心的箭头,可以把它想象成继承关系。5、用例精化的差不多了,还有别的参与者吗?用户提醒我们说,除了普通会员可以购买商品以外,还有一类Vip会员可以以折扣价购买一些特价商品。so,用例需要添加新的参与者和新的用例。6、从上图可以看出,Vip会员就是特殊化的普通会员。然后
4、,我们也可以对参与者泛化。但是参与者泛化会带来一些理解上的复杂性。可以的话,一般不推荐使用。7、在重新审视需求,和客户充分沟通以后,本着简单,清晰有效,且不引起歧义的宗旨,我们重新修订整个用例,得到结果如下。当然这可能还没完,可能还有进一步挖掘需求和用例精化的空间。可以在保证进度前提下继续迭代建模。在建模的世界里,没有最好,只有更好。需求阶段用例图完成以后,需要进一步描述用例。由于每一个用例可能对应几个事件流,单从用例不能获取有效的信息。这时候就要用到活动图了。活动图专门用来描述用例的事件流。我们借用上一节其中一次迭代的用例图做例子,寻找商品用例,泛化成两个子用例,这两个用例不能合并的主要原因
5、就是事件流不同。我们以“通过搜索引擎寻找商品”用例为例,使用活动图描述其事件流。活动图的描述可以参考以前完成的用例文档,一般的用例文档的格式如下:用例名称:通过搜索引擎寻找商品描述:(.)前置条件: (.) 部署约束: (.) 正常事件流: (.) 可选事件流: (.) 异常事件流: (.) 非功能性需求: (.) 说明(可选): (.) 未解决的问题(可选): (.) 每一个用例文档都有描述三种事件流:正常事件流、可选事件流、异常事件流。除了正常事件流以外,可选和异常都是可选的。根据用例文档对事件流的描述,我们可以作出活动图。“通过搜索引擎寻找商品”用例的活动图如下(用例文档省略):其他用例
6、也可以使用类似方式作出活动图。这里就不再赘述。经过了领域专家的辛勤劳作,我们终于得到了精准的需求文档、形象的用例图和每个用例的活动图。接下来轮到架构师出场,开始轰轰烈烈的分析阶段。分析阶段最主要的产出是类图和顺序图。为了简化问题,我们使用最后一次迭代的产出用例图(没有将用例进一步精化)。如果使用敏捷迭代开发,一开始分析阶段倾向于选择风险最大的用例优先开发,这个风险的评估在架构人员拿到用例文档以后就可以开始了。在这个例子里,我们倾向于选择“购买商品”为风险最大用例,“登录”用例次之。so,接下来的分析阶段,我们只关注“登录”和“购买商品”这两个用例。接下来分析这个用例图所有的参与者和用例,将实体
7、识别出来添加到类图中。这往往是画类图的第一步,也是较简单的部分。既然UML主要用于面向对象语言建模,领域中的实体就是对应着语言里的对象。我们分析过程如下: 参与者是很明显的实体,因此会员,vip会员都是实体; 购买商品用例明显涉及到商品实体; 要购买商品肯定会生成一个订单实体; 支付时还要涉及到账户实体; 先想到这么多,深入分析的话会发现用例中其实还有其他实体,但是,按照敏捷的思想,我们在第一个迭代中不用求全责备。况且,这个教程是用来说明方法过程,力求简单,并没有强求模型的完整性。UML类图的最佳实践里包含三种久经考验的类类型: 实体类(entity) 控制类(control) 边界类(bou
8、ndary) 当然这只是模型意义上的类型,和语言的类没有关系。实体类我们已经了解了,边界类是用户和控制类的媒介也就是用户接口,控制类是边界类和实体类的媒介。OK,其实就是分层的概念了好吧。你可以理解成MVC差不多。一个用例就可以抽取成为一个控制类,命名的方式可以是用例名+后缀。比如登录用例名是Login,我们可以用LoginWorkflow来描述登录控制类。后缀名可以任意取,比如Workflow,Controller,Service等等都可以,但至少在一个模型中要一致。边界类也是如此,比如商品购买用例,我们采用用例名PurchaseStuffs+后缀的方式,后缀可以选择采用UI、View等等。
9、我们暂时只对登录和商品购买这两个用例进行建模。得到的类图如下。类中的方法和属性可以在以后迭代中逐步补完。在这里先列出一些比较有可能用到的方法,属性可以慢慢来。类图的改进和细化 到现在我们在类图上罗列了一堆游离的类,我们可以在已知的条件下改进这个类图比如说Member类和VIPMember类可以抽离出一个共有的接口或有默认实现的父类等等。这个类图的改进还包括描述清楚类之间的关系。先别急着加,我们可以等画顺序图的时候再来考虑类间的关系。/* * 转载请注明作者longdick * */ 相关帖子:1、人人都是领域专家-用例图 2、人人都是领域专家
10、-活动图 3、人人都是领域专家-类图 4、人人都是领域专家-顺序图 5、人人都是领域专家-类图关系化 6、人人都是领域专家-类图关系说明 在分析阶段顺序图(Sequence Diagram)用来描述活动图里的单一事件流。也就是说每个用例对应一个活动图,一个活动图对应一个以上的顺序图。顺序图是交互图(interaction diagram)的一种。另一种交互图是协作图(Collaboration Diagram)。第一次迭代我们只关注风险最大的两个用例“购买商品”和“登录”。有了类图做铺垫,对照着用例的活动图,我们可以轻松的画出顺序图。下图是登录用例的正常事件流顺序图。你可以看到顺序图的类顺序排
11、列符合一般架构的分层原则:参与者-边界类-控制类-实体类。但是这里有个问题,就是控制类LoginWorkflow怎么定位实体类Customer呢,当然不能凭空变出来,从顺序图推导出可能需要引入辅助类协助LoginWorkflow定位Customer。这时候我们就需要增加一个实体类定位器,这种构造型称为LifeCycle的类可以以 实体类名+后缀 的形式命名,后缀名可以是Factory,Locator,Handler等等,在一个模型里保持一致即可。我们将其命名为CustomerLocator,提供findByName方法来定位Customer,so,LoginWorkflow只需要持有一个对Cu
12、stomerLocator的引用就可以了。修改后的顺序图如下:刚才已经说过了,顺序图对应活动图的每个事件流,除了正常事件流,可能还需要描述可选和异常事件流。下图就是登录用例的可选事件流示例,除了个别细节不同,大体上是很类似的。 然后就到了购买商品的用例了,购买商品用例流程比较复杂,为了说明方便,对其做了精简,精简后的购买商品活动图如下:这个购买商品的活动图有两个事件流,从活动图我们可以清晰的推出涉及到的实体:商品、账户、订单和顾客。顺序图可以说是水到渠成。在作顺序图的时侯很适合做类的关联,可以在这个时候好好想想各个实体之间的关系、控制类对实体的直接引用还是使用辅助类间接引用等等。当然有些人喜欢
13、在画类图时就考虑类之间的关系也没有问题,我只是建议,不是要求。基于同样的原因,我们增加了一个StuffLocator的LifeCycle类。购买商品的正常事件流如下:OK,如果项目时间还宽裕的话,把每个可选和异常事件流都加上。/* * 转载请注明作者longdick * */ 相关帖子:1、人人都是领域专家-用例图 2、人人都是领域专家-活动图 3、人人都是领域专家-类图 4、人人都是领域专家-顺序图 5、人人都是领域专家-类图关系化 6、人人都是领域专家-类图关系说明 经过上一轮的顺序图的pk,我们发现需要在模型中添加两个辅助类:Custo
14、merLocator和StuffLocator,现在回来在类图里添加上这两个类。这时候可以重新审视这张类图,也许有些类回过头来看觉得没有必要,就可以删掉。比如VIPMember类,你想在Member类加个属性来区别是否是VIP也可以啊,这个可以经过讨论得出结论。现在,接下来的工作就很Happy了,我们将顺序图中类的关系添加到类图里。可以一个用例一个用例的来,别急着一股脑全上。下图就是Login用例的类关系图。下图是购买商品用例的类关系图分析阶段建模的第一次迭代差不多到尾声,项目时间允许范围内还需要做几次迭代,最后的模型会和现在的大相径庭也不是没有可能。只要掌握方法,细心加上耐心,一定可以作出优秀的领域模型来。* * 转载请注明作者longdick * */ 相关帖子:1、人人都是领域专家-用例图 2、人人都是领域专家-活动图 3、人人都是领域专家-类图 4、人人都是领域专家-顺序图 5、人人都是领域专家-类图关系化 6、人人都是领域专家-类图关系说明 class diagram里的四种关系DAAC,如图所示:Dependency(依赖)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年日照职业技术学院高职单招职业技能考试题库及参考答案详解【培优A卷】
- 2027年邓州湍河高职技师学院高职单招职业技能考试模拟试卷含答案详解【新】
- 2025 年太原市六年级美术秋季开学摸底考 - 综合卷(人美版)
- 施工护栏楼顶施工方案
- 2024年邯郸钢铁职业学院高职单招职业技能考试题库及完整答案详解(考点梳理)
- 2025年高邮湖职业学院单招职业技能考试题库附答案详解(预热题)
- 2024年陕西省咸阳市高职单招职业适应性测试考试题库1套附答案详解
- 2025年青海玉树三江源职业学院高职单招职业适应性测试考试题库含答案详解(培优B卷)
- 2027年山东肥城职业学院单招职业技能考试模拟试卷附参考答案详解(完整版)
- 2027年湖南娄底新化职业学院高职单招职业适应性测试考试模拟试卷含答案详解(综合卷)
- 矿井供电设计毕业论文
- 瓦斯抽采系统培训课件
- 降低无肝素透析凝血发生率品管圈汇报书模板
- 中西医临床路径协同实施方案
- 2025年辽宁医药职业学院单招考试真题
- 《芦竹青贮饲料加工技术规程》
- GB/T 46119-2025光的人眼非视觉生物效应作用剂量
- 2025年中国晶圆用UV膜和非UV膜(蓝膜)行业市场分析及投资价值评估前景预测报告
- GB/T 44851.14-2025道路车辆液化天然气(LNG)燃气系统部件第14部分:压差式液位计
- 北京市公路建设工程爆破施工专项预算定额2024
- 2025消毒技能竞赛个人竞赛试题(含完整答案)
评论
0/150
提交评论