Technorati 标签: uml

这段时间在学 UML 建模,UML 10 中常见的域建模错误摘录如下:

1.立即关联指定多重度,确保每个关联都有明确的多重度

类图上有些关联度表示的是一对一的关系,而其他关联表示的是一对多的关系。这两种关系都被称为多重度。然而,不应在域建模期间就确定多重度 —— 这将占用大量的时间,是导致分析瘫痪的主要原因之一。

2.对名词和动词做过度的分析,而背离初衷

对名词尤其是动词作过度的分析,将很可能处于过低的抽象层次上,严重者还会有神经崩毁的危险(当然这是玩笑话)。

3.不对用例和时序图进行研究,就将操作分配给类

我们提倡在域建模过程中使用要求最低的的方式。事实上,我们是想告诉你,不应该在域建模期间将任何操作分配给类。因为,在项目的该阶段还没有足够的信息,无法做出正确的决策。进入交互模式后,你将拥有足够的信息(至少希望如此),

4.在确保已满足用户需求之前,对代码进行优化以提高重用性

对象和类的通用程度越高,在其他项目中重用他们的可能性就越大。一个完整地类在理论上是可以在任意数目的环境(context)中重用的,然而要实现完整性和重用性,必须考虑属性和操作,而前面已经指出了不应在域建模期间将操作分配给类的原因,因此在完成高级类图期间,将过多的精力用于提供类的可重用性是不明智的,应快速完成域建模的工作,以便有时间确保你构建的系统正是用户所需要的。

5.对于每个部分(part-of)关联,就使用聚集还是组合而争论不休

在 UML 中,有这么一种说法,“按引用拥有”关系是聚集,而“按值拥有”关系是一种被称为组合的“强”形式的聚集,在这种关系中,“部分”类归父类“所有”:父类被删除后,其所有的子对象示例将自动删除。在域建模期间视图区分聚集和组合无疑是费力不讨好的。在域建模期间,更倾向于使用简单的聚集。使用聚集还是组合是一个详细设计方面的问题。

6.未对问题空间进行建模之前,就假定一种具体的实现策略

改进域模型时,应删除所有明显陈述动作而不是依存性的内容以及同实现相关的内容。在高级类图中,不应引入涉及到具体技术的内容,如关系数据库或特定的服务器。将实现问题留待实现阶段解决,首先对问题域建模。

7.将类命名为难以理解的名称(如 cPortMgrIntf),二不是直观的名称(如 UserManager)

首先建立模型的一个重要原因,就是促使每个小组成员就关键抽象的名称达到一致。类名越简明,这项任务就越容易。应等到实现时再使用首字母缩写和各种缩略语(如果你一定要这样做的话)。

8.直接进入实现结构,如友元关系和参数化类

UML 提供了大量将我们称作“Booch 素材”的东西添加到类图中的机会。这包括直接来自C++的结构,如参数化类和友元关系。这些东西与解决方案空间相关,而与问题空间不相关,因此域建模绝对是属于问题空间的。

9.在域类和关系数据库表之间建立 1 对 1 的映射

对使用关系数据库的遗留系统进行重构时,数据库中的表可能是很多的域类名称的来源。然而,决不要将它们完全搬照搬到静态模型中。关系数据库中的很多属性不能找搬到对象模型环境中,应尽可能通过聚集,将属性组转换为“助手(helper)“类。这种类包含的属性和操作可被组合成更小的“部分”类。

10.过早地执行“模式化”,这将导致根据同用户问题毫无关系的模式创建解决方案。

模式通常在健壮性分析时才能发现。有两种策略可用于发现同用例相关的模式:“屏幕控制”和“用例控制器”。设计模式对时序图和设计级类图很有用,但域建模期间不应考虑模式的问题。

 

本文转自peiquan 51CTO博客,原文链接:http://blog.51cto.com/peiquan/1328090

UML 10 种常见的域建模错误相关推荐

  1. 10种常见的HTML标签错误写法

    随着CSS的持续发展,XHTML和HTML5的流行,HTML也越来越受重视,尤其是标签的语义化.HMTL标签看似简单,但仍然有很多错误的用法,下面列举了一些常见的HTML标签错误用法: 错误1: 将块 ...

  2. Java 10种常见设计模式UML图

    Java 10种常见设计模式UML图 简单工厂模式(不属于23种设计模式) 工厂方法模式 单例 模式(静态内部类方式 IODH) 适配器模式 装饰者模式 门面模式 代理模式(静态代理) 观察者模式 策 ...

  3. 10种常见网站安全攻击手段及防御方法

    在某种程度上,互联网上的每个网站都容易遭受安全攻击.从人为失误到网络罪犯团伙发起的复杂攻击均在威胁范围之内. 网络攻击者最主要的动机是求财.无论你运营的是电子商务项目还是简单的小型商业网站,潜在攻击的 ...

  4. 【机器学习】交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图

    [机器学习]交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图 一.使用背景 由于在训练集上,通过调整参数设置使估计器的性能达到了最佳状态:但在测试集上可能会出现过拟合的情况. 此时,测试集 ...

  5. 【报告分享】女性自我保护手册,教你应对10种常见危险处境.pdf(附189页pdf下载链接)...

    前两周PUA沸沸扬扬,今天给广大女粉丝分享一篇手册<女性自我保护手册,教你应对10种常见危险处境 .pdf>,该手册由北京大学心理资讯中心和壹心理联合出品,我简单看了一下,手册内容非常丰富 ...

  6. 《社交网站界面设计(原书第2版)》——3.15 你是否在犯4种常见的用户onboarding错误...

    3.15 你是否在犯4种常见的用户onboarding错误 让用户注册很难.它需要大量的时间.精力和金钱,然而很多公司在用户首次体验后就失去了他们.不要让你的公司成为其中的一员. 让我们看看可能会有损 ...

  7. 10种常见的软件架构模式-快速记忆

    10种常见的软件架构模式-快速记忆 这里通过数字宫殿的方法快速记忆10种常见的设计模式,通过记忆名字+理解的情况下熟悉常见的软件架构模式 文章目录 10种常见的软件架构模式-快速记忆 前言 一.快速记 ...

  8. 10种常见的软件架构模式

    有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性.因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构. 什么 ...

  9. 软件工程 UML 10种图

    1 UML简介 统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的 ...

最新文章

  1. leveldb源码分析:数据查询
  2. 冯怡:我想给大家展示一种可能性(图灵访谈)
  3. excel行转列_excel统计函数:应用广泛的动态统计之王OFFSET(上)
  4. NND年年回家这么难买火车票
  5. rejection foruc berkeley ece
  6. 用Python递归做个多层次的文件执行
  7. VC获取父进程PID
  8. 一站式金融云托管服务 都匀融通村镇银行系统成功上线运行
  9. java 程序执行后 强制gc_GC 设计与停顿
  10. 复制Oracle表的结构
  11. python递归和循环的区别_递归与伪递归区别,Python 实现递归与尾递归
  12. 蓝桥杯 ALGO-22算法训练 数的划分
  13. JAVA自学作业02
  14. Mysql按时间段分组查询来统计会员的个数
  15. html返回顶部函数,网页中返回顶部代码(多种方法)另附注释说明
  16. win2008使用windows loader激活提示Unsupported partition table
  17. 配置Appium会话---capability配置信息
  18. win10更新后IE不见了
  19. 极客日报:腾讯下一步或减持美团和拼多多的股份;iPhone 13连续6周成中国最畅销智能手机;Linux 5.16 开发者统计
  20. Linux系统使用ss命令查看端口状态

热门文章

  1. Apache 403 错误。。
  2. i=i+1,i+=1与i++的区别
  3. 在SqlServer 2008中将数据导成脚本
  4. 诗与远方:无题(四十三)- 幼稚肤浅
  5. Linux下之使用简单3种创建文件的命令,并实现一个Html和JavaScript小程序
  6. Duplicate entry ‘‘ for key ‘***‘
  7. Solr单机安装Version5.5.2
  8. 看板系统的表格动态数据显示
  9. 接计算机专业怎样备考,专接本考试计算机专业复习指南.pdf
  10. 怎么批量在数字里加入网页_手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇