UML之包图(Package Diagram)

软件的架构设计,思路遵循由大及小。相较于Class Diagram,Package Diagram从更宏观的角度来展示软件的架构设计,主要体现在代码组织方面。Package Diagram对一些大型的项目特别有用。顺便说一句,良好的代码组织,对软件的可维护性至关重要,请认真的规划你的包结构。下文将简单介绍Package Diagram,主要分两块,什么是Package,以及Package之间的关系。

什么是Package

用最简单的方式来说,Package可以理解为文件夹(folder)。代码的组织从大到小,分为三个层次:文件夹层,文件层,以及文件内部的块(Block)层(函数块之类的)。Package体现的就是文件夹层。Java里面可能是一串文件夹,比如java.lang、java.util等,也叫Package;C++里面,Package对应的是namespace,虽然不能完全等同于文件夹,不过也可以往这边靠;其它的如Node.js,Python等大都体现在文件夹层。

Package在UML里面用一个Tab框表示,Tab里面写上Package的名字,框里面可选地填充一些其它子元素,如类,子Package等。Package的名字可以写全称,也可以简写,风格可可参考项目所用语言的惯例。下面是一个简单的Package示例:


上图为某java项目的一个工具Package,里面有四个工具类。类比较多的时候,为简单明晰起见,也可以不填写子元素。

Package之间的关系

如果只有一个Package,那也就失去了Package的作用,没有画Package Diagram的意义。Package之间的关系非常的简单,两个字,依赖,UML中依赖用带箭头的虚线表示。我个人还是非常不建议依赖关系出现Cycle的。依赖关系最常见的一个例子就是分层架构,把代码分布到多个层次中,某层可以依赖于下层以及同层,但是不能依赖于上层。其它的组织方式还包括按照模块划分,按照功能划分等。下图是一个Java项目的简单三层架构Package Diagram:


示例中三个主要的Package:data用于访问数据库,也叫dao,Mybatis项目里面分为entity和mapper两个子Package,service是业务逻辑的组件,web用于接受http请求。util为通用组件。

小结

Package Diagram从宏观角度展示了项目的组织架构,在大型项目中,是重要的一种UML图。可以先Package Diagram,再Class Diagram的方式来展示项目的架构。

摘自:http://blog.csdn.net/kimylrong/article/details/40043389

来源:网络


智能推荐

【UML】Object Diagram

对象图 建模过程: 确定参与交互交互的各对象的类,可以参照相应的类图和交互图; 确定类之间的关系,依赖、泛化、关联、实现; 针对交互在某特定时刻各对象的状态,使用对象图为这些对象建模; 建模时,系统分析师要根据建模的目标,绘制对象的关键状态和关键对象之间的连接关系。 机房收费系统对象图 管理员工作: 结账:...

UML(一):Class Diagram

UML(一):Class Diagram Basic Characteristics Relationships between classes Example UML(Unified Modeling Language,统一建模语言)是用来设计软件蓝图的可视化建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的标准语言,独立于任何一种具体的程序设计语言。 Basic Characte...

[完全免费] 在线UML Package Diagram 包图工具 - 教程第4部分

封装图显示了中型到大型项目中模型元素的布置和组织,可用于显示子系统或模块之间的结构和相关性。 (一键即时打开使用) 什么是UML中的包图? 大系统提供特殊挑战。为大型系统绘制班级模型,而且它太大而难以理解。类之间有太多的联系要理解。处理这个问题的一个有用的技术是UML的包。统一建模语言中的一个软件包可以帮助: 分组元素 为分组元素提供名称空间 一个包可能包含其他包,因此提供了包的分层组织。 UML...

[UML]UML系列——活动图activity diagram

系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include、extend) [UML]UML系列——类图Class [UML]UML系列——类图class的关联关系(聚合、组合) [UML]UML系列——类图class的依...

顺序图——Sequence Diagram

顺序图也叫做时序图,它是显示对象之间交互的图,这些对象是按时间顺序排列的。时序图强调的是参与交互的对象及其对象之间消息交互的顺序。 顺序图纵向是时间轴,角色用一条虚线表示,当对象的过程处于**状态时,生命线是一个双道线。 下面是我在机房收费系统中画的时序图: 一般用户: 操作员: 充值: 管理员:...

猜你喜欢

类图——Class Diagram

UML中类图是最常用的图。类图由许多静态说明性的模型元素组成。类图可以组织在包中,仅显示特定包中的相关内容,它用于描述系统的结构化设计。 下面先介绍类图中的重要概念,最后给出机房收费系统的类图用作参照。 类图中的元素有类、接口、协作、关系、注释、约束、包。关系把类、协作、接口连接在一起构成一个图。在学习类图这块儿的时候,感觉关系这块儿最乱。这里多说两嘴。 类图中的关系包括四种,分别为:依赖关系&m...

泰勒图(Taylor diagram)

泰勒图:泰勒图(Taylor,2001)常用于评价模型的精度,常用的精度指标有相关系数,标准差以及均方根误差(RMSE)。一般而言,泰勒图中的散点代表模型,辐射线代表相关系数,横纵轴代表标准差,而虚线代表均方根误差。泰勒图一改以往用散点图这种只能呈现两个指标来表示模型精度的情况。从更广义地来讲,泰勒图可以延展到需要用二维平面呈现三维数据的应用场景。这一点与三元图有异曲同工之妙。 功能:相关/分布描...

活动图(Activity Diagram)

活动图是某件事情正在进行的状态,既可以是现实生活中正在进行的某一项工作,也可以是软件系统中某个类对象的一个操作。 活动图和流程图的区别:       1.流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系;活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。   &nbs...

组件图(Component Diagram)

组件图又称为构件图:描述软件组件以及组件之间的关系,组件本身是代码的物理模块,组件图则显示了代码的结构。   用户: 1.能帮助客户理解最终的系统结构。 2.组件图使开发工作有一个明确的目标。 3.组件图有利于帮助工作组的其他人员理解系统。 4.使用组件图有利于软件系统的组件重用。   组件图(Component Diagram)描述了软件的各种组件和它们之间的依赖关系。 组件...

应物联网要求而生 美国团队研发出零功耗红外探测器

目前,先进的传感器技术都依赖于有源电子器件来进行信号采集和处理。为了能够及时捕捉到周围环境中有意义的信号,如特定的震动、声音或光谱等,这些传感器必须时刻处于工作状态。这种无论被测信号是否出现都持续耗电的工作特性,极大地限制了单个传感器的寿命,进而显著增加了整个传感器网络(或物联网)因周期性更换电池而带来的维护成本,甚至限制了在偏远地域或者有潜在危险的地区布置传感器的可能性。 据麦姆斯咨询报道,美国...

问答精选

Optimize a double loop with mesh grids involved

I am doing a double loop to sum a function that has mesh grids as an input. The problem is that it runs very slow... I want to optimize the code with an alternative procedure, maybe using vectorize fu...

Why I need to set the database to single_user before renaming it?

According the Microsoft documentation, I should set the database to single_user then I rename it. Why is that? If it just a matter of making sure that all connections gets closed, wouldn't this work a...

cypress: variable scope outside the then block. I am facing issue

I have issue with scope outside the then block. Need help of exerts In cases such as these I like to use aliases. Simply wrap() your value, whatever it is, and save it with an alias, then get() and us...

NHibernate Validator: Using Attributes vs. Using ValidationDefs

I've been using NH Validator for some time, mostly through ValidationDefs, but I'm still not sure about two things: Is there any special benefit of using ValidationDef for simple/standard validations ...

regarding thrift function return list

i have thrift service with a function returning list of Object ABC: server side written by c++ I print out result returned by server side, data in ABC instance is NOT null in the response of getABCByU...

相关问题

  • 如何制作Sphinx的继承_diagram可读?
  • Rails Workflow :: create_workflow_diagram选项
  • Exporting a large Entity Framework Diagram
  • primefaces org.primefaces.component.diagram替代
  • 将er-Diagram转换为SQL
  • Importance / use / advantages of creating database diagram in sql server
  • er-Diagram不在数据报中显示关系
  • R Chord-Diagram Circlize->旋转名称
  • Entity Framework 4: Does it make sense to create a single diagram for all entities?
  • Using Excel to generate a Visio diagram - using 'select' method in IF statement

相关文章

  • Package Diagram
  • Package Diagram
  • UML建模之部署图(Deployment Diagram)
  • UML 之 顺序图(Sequence Diagram)
  • UML建模之部署图(Deployment Diagram)
  • UML时序图(Sequence Diagram)
  • UML--Activity Diagram and Statechart Diagram
  • UML--Sequence Diagram and Collaboration Diagram
  • UML--Componet Diagram and Deployment Diagram
  • UML-Class Diagram and Object Diagram

热门文章

  • VGGNet学习记录
  • ANT-DESIGN_PRO的使用
  • 十大Raspberry Pi神话与真相
  • windows10如何删除恢复分区(让拆下的win10机械硬盘焕发新生,充分利用磁盘空间)
  • 微信小程序实现横屏展示
  • Android Studio 使用 wifi 调试程序
  • Gradle配置最佳实践
  • FLEX实践—动态切换应用皮肤
  • python-OpenCV之阈值处理
  • vue 列表过滤

推荐文章

  • mysql5.1卸载后重装,登录报错Access denied for user 'root'@'localhost' (using password:YES)
  • 为什么要用Selenium?终于搞明白了很重要的一点
  • ros gazebo基础教程
  • pycharm下载安装
  • Node API 节点
  • 数据中台应用实战-数据中台建设四步方法论:采、存、通、用
  • Abp报 Castle.Proxies.XXXAppServiceProxy的错误问题
  • Err "Kernel panic - not syncing: Fatal exception"
  • 2020-11-18
  • 教你如何修复硬盘坏道

相关标签

  • 需求工程作业
  • UML
  • 时序图
  • 顺序图
  • 活动图
  • 状态图
  • UMl
  • 协作图
  • 构件图
  • 部署图

推荐问答

  • css filter invert() not working on mozilla firefox?
  • Deserialize Json encountered URL change
  • Update values inside javascript object
  • I want to change display property of this span class
  • In Android Studio there is a problem in my Toast message
  • Which control to use to display more than one row and column returned from a query?
  • Custom ListView - Custom Argument
  • SQL query where ALL records in a join match a condition?
  • python one-line if statement calling function if true
  • Python dictionary keys. "In" complexity

两个鬼故事巴萨71勒沃库森全能空间吴字坊臭豆腐适合猪宝宝取名起名大全用的字冯姓男孩起名 霸气超能战甲免费的起名子软件mywife.cc属马起名喜用字太荒吞天诀柳无邪免费阅读院校起名字window.open蓝猫龙骑团第二季现在qq最高等级u盘提示格式化名典起名网name321如何给张姓宝宝起名免费起名大全改名贵阳电视台蓝狐影视用余沐起名男孩欧冠附加赛盗墓笔记百度云姓陈宝宝起名女李清照词《如梦令》okooo.com产品起名免费取名网家居用品起名专家免费起名网华为mate9图片少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化