`
ihuashao
  • 浏览: 4664242 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

UML建模风格之包图

阅读更多

document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}

一个"包图"可以是任何一种的UML图组成,通常是UML用例图或UML类图。 包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组。 包被描述成文件夹,可以应用在任何一种UML图上。 虽然包图并非是正式的UML图,但实际上他们是很有用处的, 创建一个包图是为了∶

  1. 描述你的需求高阶概述。
  2. 描述你的设计的高阶概述。
  3. 在逻辑上把一个复杂的图模块化。
  4. 组织Java源代码。

指南∶

类包图

创建类包图,以在逻辑上组织你的设计

创建UML组件图,以在物理上组织你的设计

把子包放置在母包的下面

垂直地分层类包图

用例包图

创建用例包图,以组织你的需求

在用例包图上包含角色

水平地排列用例包图

包的命名要简单、具有描述性

应用包是为了简化图

包应该连贯

在包上用版型注明架构层

避免包间的循环依赖

包依赖应该反映内部关系

一、类包图

1.创建类包图,以在逻辑上组织你的设计

图1描述了一个组织成包的UML类图。 除了以下介绍的包原则之外,应用下列的规则来把UML类图组织到包图里:

    把一个框架的所有类放置在相同的包中。一般把相同继承层次的类放在相同的包中。彼此间有聚合或组合关系的类通常放在相同的包中。彼此合作频繁的类,信息能够通过UML顺序图和UML合作图反映出来的类,通常放在相同的包中。

图1.一个类包图。

一个类包图

2.创建UML组件图,以在物理上组织你的设计。

如果你的组件比较接近技术,例如那些通过Enterprise java Beans ( EJB)或Visual Basic的组件,你应该优先选择UML组件图来描述物理设计,而不是包图。 图1的版本源自于组件图章节中。就像你看到的,这个图最适用于物理设计。 永远记住遵循敏捷建模(AM) ( Ambler 2002)的实践--应用合适的Artifact,为工作挑选最好的模型。

3.把子包放置在母包的下面。

图1描述了包间的继承,你可以看到,继承的包显示在母包支下。 这和UML类图中的在超类下面放置子类的指南是一致的。

4.垂直地分层类包图。

包间的依赖表明,从属的包的内容依赖于另一个包的内容,或结构上依赖于其它包的内容。 在图1中你可以看到图中的包反映了架构的合理的层次布局,用户界面和领域类交互,领域类又使用基础结构类,基础结构类访问数据库。传统的,这种分层的顺序是以从上到下的方式描述的。

二、用例包图

用例通常是面向对象开发方法学中的最主要的需求artifact,当你的方法是统一过程(Kruchten 2000; Ambler 2000)实例是尤其如此。而且对于大的项目包图来说,通常是创建用来组织使用需求的。

1.创建用例包图,以组织你的需求

除了以下介绍的包原则之外,应用下列的规则来把UML用例图组织到包图里:

把关联的用例放在一起∶included、extending、和inheriting的用例放在相同的包中,就像base/parent用例一样。

组织用例应该以主要主角的需要为基础。 例如,在图2中,Enrollment包包含与登记班级的学生有关的用例,一个大学提供的重要服务集合。

图2.一个包含主要的包的UML用例包图。

一个包含主要的包的UML用例包图

2.在用例包图上包含角色

图2包含包图上的角色,这有助于把包放在上下文中理解,这样包图就会更容易为读者所理解。

3.水平地排列用例包图

用例包图的主要受众是项目干系人。因此图的组织应该能够反映他们的需求。 图2中的包是水平放置的,从左到右画出的依赖关系反映了西方文化的阅读习惯。

三、包

本节中出现的建议可应用到任何一种UML图的包应用上,并非只是包图上。

1.包的命名要简单、具有描述性

在图1和图2中,包都有简单的、描述性的名称,例如Shipping、Customer、Enrollment和Manage Student Loans和Grants,这样包包含了些什么就非常的清楚了。

2.应用包是为了简化图

通常在一个图变得笨重,单一页中打印不下的时候引入包。换句话说,遵循通用指南--把大的图重新组织为较小的图,你需要对模型使用分而治之的方法。

3.包应该连贯

你插入包中的任何东西都应该有意义,都需要考虑包中的其余内容。 为了确定一个包是否连贯,一个好的经验法则是你是否能够用一个短的,描述性的名称为包命名。 如果你做不到这一点,你或许就已经把几个不相关的事务放到包中了。

4.在包上用版型注明架构层

我们通常会把设计组织到架构层次中,例如user interface、business/domain、persistence/data、和infrastructure/system。 在图1中你可以看到例如user interface、domain、infrastructure和database的版型应用包中,以反映通用的层。

5.避免包间的循环依赖

包A依赖于包B,包B依赖于包C,而包C依赖于包A,这就形成了一个循环:A-B-C- A, Knoernschild ( 2002)建议尽量避免出现这种情况。 因为包之间彼此紧密耦合,将来的维护和改进将变得困难。 循环依赖是一个很好的信号,意味着你需要重构一个或多个的包,把导致循环依赖的因素从包中除掉。

6.包依赖应该反映内部关系

当一个包依赖于另一个是,这意味着两个包的内容间存在着一个或多个的关系。 例如:如果是一个用例包图,那么就有可能两个用例之间存在includes、 extends、或继承关系,而两个用例分别处于不同的包中。

分享到:
评论

相关推荐

    UML建模个人总结笔记

    - 包图(Package Diagram): 组织系统的模块化,表示包(包含类、接口)及其关系。 - 构件图(Component Diagram): 描述系统组件的结构和依赖关系。 - 部署图(Deployment Diagram): 显示运行时的硬件和软件...

    UML-Distilled.rar_uml distilled chm_建模规范

    在本压缩包中,包含的《UML Distilled》电子书(UML-Distilled.chm)将深入讲解UML在建模过程中的规范应用,特别是针对类图和流程图的绘制。 首先,UML是一种图形化表示软件设计的标准化语言,它允许开发者、分析师...

    美食食谱网uml设计及web前端设计原型.zip下载

    常见的UML图包括用例图、类图、序列图、状态图和活动图等。用例图展示了用户与系统之间的交互,帮助我们理解用户的需求;类图则描绘了系统中的对象及其关系,如继承、关联和聚合;序列图和协作图用于表示对象间的...

    基于UML的软件体系结构包ATM

    【基于UML的软件体系结构包ATM】的讨论主要围绕软件体系结构的重要性和相关理论展开,特别是通过统一建模语言UML进行系统设计的方法。软件体系结构是复杂软件系统成功的关键,它涉及到架构描述、风格、质量属性、...

    工资管理系统UML报告

    - 包图用来组织和展示系统的逻辑结构,如不同的模块或子系统。 **3.5 部署图** - 描述系统的硬件架构,包括服务器、数据库和其他组件的位置和连接方式。 **3.6 安全策略** - 实现用户认证和授权机制,保护敏感数据...

    基于UML的大学图书馆图书信息管理系统设计实验.docx

    《基于UML的大学图书馆图书信息管理系统设计实验》是一份详细阐述如何运用统一建模语言(UML)来设计和构建大学图书馆图书信息管理系统的实验报告。这份文档旨在通过实践,帮助学生理解和掌握软件工程中的需求分析、...

    软件建模与设计

    UML包括了用例图、类图、序列图、状态图、活动图等多种图表,它们各自服务于不同的建模目的。例如,用例图描述了系统外部用户与系统的交互;类图则展示了对象之间的静态结构和关系;序列图和协作图用来表示对象间的...

    美国计算机宝典丛书-UML宝典

    通过阅读这本书,无论是初学者还是经验丰富的开发者,都能提升在UML建模方面的技能。 UML作为一门通用的建模语言,旨在提供一套标准化的方式来描述软件系统的结构和行为。它包括多种图形表示法,如用例图、类图、...

    StartUML 3.2.2.

    **StartUML 3.2.2:一款强大的UML建模工具** StartUML是一款免费、开源的统一建模语言(UML)工具,它为软件开发人员、系统架构师以及任何对软件建模有兴趣的用户提供了一种简单而直观的方式来创建和管理各种UML...

    UML 参考手册UML参考资料

    - UML的基本图的定义和用法,如用例图、类图、对象图、包图、组件图、部署图、行为图(序列图、通信图、状态机图、活动图) - 关联、聚合、组合、依赖、泛化、实现等关系的详细解释 - 风格指南和最佳实践,以优化...

    OmniGraffle UML模板型版下载

    时序图,又称序列图,是UML的动态行为图之一,着重描绘对象间的交互,尤其是消息传递的时间顺序。在软件开发中,时序图用于描述系统中对象如何协作完成特定用例。使用OmniGraffle的时序图模板,设计师可以轻松地构建...

    UML系统分析与架构设计实战

    二、借鉴RUP的UML建模与分析 RUP(Rational Unified Process)是一种面向对象的软件开发过程,UML与RUP相结合能够使建模过程更加有序和标准化。在借鉴RUP的建模过程中,课程可能会教授如何利用UML进行迭代开发、...

    数据建模安装包

    Enterprise Architect提供了多种数据建模工具,如ER图(实体关系图)用于描绘数据库结构,类图和对象图用于表示面向对象的设计,以及数据流图和状态图等,帮助用户全面理解系统的数据处理过程。它支持多种标准,如...

    UML Distilled(UML精华)-3rd-(英文版&繁体中文版)

    **UML Distilled**,由Martin Fowler撰写,是UML(统一建模语言)领域的一本经典著作。这本书的第三版详细介绍了UML的核心概念、语法和用途,旨在为软件开发人员提供一个清晰且简洁的指南。UML是面向对象设计和系统...

    UML和模式应用(架构师必备).part07.rar

    15.2 UML建模初学者没有重视交互图 15.3 常用的UML交互图表示法 15.4 顺序图的基本表示法 15.5 通信图的基本表示法 第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4...

    青润全程建模培训资料

    在这里,学员会学习如何通过需求分析来明确项目目标,理解用户需求,制定需求规格书,并使用建模语言(如UML)来图形化地表示这些需求。这有助于确保所有团队成员对项目有共同的理解,降低沟通成本,防止后期可能...

    用例建模实验中的若干问题

    1. **遵循一致的建模风格:** 如文中所提到的,应将主要参与者放置在图的左上角,其他参与者放置在用例图的外边缘。 2. **正确使用依赖关系:** 明确标注依赖关系的种类(如include或extend),并注意箭头指向的准确...

    UML和模式应用(架构师必备).part02.rar

    15.2 UML建模初学者没有重视交互图 15.3 常用的UML交互图表示法 15.4 顺序图的基本表示法 15.5 通信图的基本表示法 第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4...

Global site tag (gtag.js) - Google Analytics