经过了一个上午的讨论,对于UML的包图(系统架构图)又有了更深一层的理解。

第一个图:

简单解释:UI:界面层,BLL:业务逻辑层:DAL:数据处理层。FUN:封装了常用业务逻辑。

此图不合理原因:

1、分层的原则:根据职责分层。FUN是对常用的业务逻辑的封装,实际上也就还是BLL的部分,因此不需要将其分离出去。

2、解耦的原则:分层是为了解耦,FUN若是需要将BLL和DAL解耦,那么BLL与DAL之间的引用关系就不该存在,否则,FUN将BLL与DAL解耦了,但是BLL与DAL的耦合性依然存在,实际上没有起到作用。

从原则上讲,此图可以改为(第二个图):

简单解释:

FUN和BLL同是处理业务逻辑,只是处理的业务逻辑类型不一样,那么他们之间并没有关联,将二者分为两个包可行。此时,包图从原则上讲得过。还可以:

第三个图:

若从第一个图中的出发点看,FUN和BLL之间是存在调用关系的。那么,第一个图还有一个问题:

3、对于分层与分类概念混淆:包图(或程序集)是为了分层,也就是为了解耦,在代码中的体现是程序集之间的引用关系,而分类则是将某一些功能相似或相同的方法封装成类,如图一中,FUN是为了封装一些常用的业务逻辑,而FUN中的类又是为BLL调用,若是分开为两个程序集,则BLL其他的各类对于FUN中的各类的调用反而更复杂。若是改为符合原则也符合实际开发应用,则应该将FUN并到BLL中,不列为单独一个包,也就是说BLL其他类调用FUN中的类是BLL层中的类调用关系,即FUN只是BLL中的一个分类,而不应该是系统的一个分层。

第四个图(左为包图,右为BLL层中的文件夹)

或者:

第五个图:

系统架构-UML 包图相关推荐

  1. 第13章 逻辑架构和UML包图

    逻辑架构和层 逻辑架构是软件类的宏观组织结构,它将软件类组织为包(或命名空间).子系统和层等. 层是对类.包或子系统的分组,具有对系统主要方面加以内聚的职责.通常包括:1.用户界面.2.应用逻辑和领域 ...

  2. [跟我学UML] UML包图中的包引入和包合并

    缩略语     UIS     UML Infrastructure Specification   UML基础结构规范     UML    Unifed Modeling Language     ...

  3. java 包图_九步实现UML包图创建

    本文和大家一起讨论一下UML包图的概念,包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组.包被描述成文件夹,可以应用在任何一种UML图上. UML包图简介 一个"包图&qu ...

  4. 火车购票系统服务器端uml活动图,火车购票完整系统UML类图时序图状态图协作图活动图对象图用例图.doc...

    火车购票完整系统UML类图时序图状态图协作图活动图对象图用例图 <UML面向对象分析>课程 实践项目报告 项目名称: 网上订购火车票系统 项目组成员: 学 号: 班 级: 指导 教师: 2 ...

  5. 火车购票系统服务器端uml活动图,火车购票标准软件系统UML类图时序图状态图协作图活动图对象图用例图.doc...

    文档介绍: <UML面向对象分析>课程实践项目报告项目名称:网上订购火车票系统项目组成员:学号:班级:指导教师:2008年11月10日目录1 需求分析 1个人收集整理勿做商业用途1.1 需 ...

  6. 火车购票系统服务器端uml活动图,火车购票系统uml类图-时序图-状态图-协作图-活动图-对象图--用例图.doc...

    文档介绍: <UML面向对象分析>课程实践项目报告项目名称:网上订购火车票系统项目组成员:学号:班级:指导教师:2008年11月10日目录1 需求分析 11.1 需求概述 11.2 需求分 ...

  7. [跟我学UML] UML包图中的包和命名空间

    本文基于UML规范,介绍了包图中的包和命名空间.此外,通过举例来帮助读者加深理解. ...请打开附件阅读全文. 转载于:https://blog.51cto.com/yunli/186628

  8. 【软件工程】订货系统的UML类图

    [软件工程]绘制状态转换图 1. 绘制内容 2. 数据流图 1. 绘制内容 研究教材第2章给出的订货系统的例子,考察在这个系统中有哪些类,建立订货系统的对象模型.用UML类图表示.对例子中描述不清楚的 ...

  9. 软件工程 选课系统的uml类图_UML建模学生选课系统(类图+对象图+用例图+部署图)...

    UML建模学生选课系统(类图+对象图+用例图+部署图) UML建模学生选课系统(类图+对象图+组件图+部署图) 录 1.项目简介 3 1.1. 学生选课系统 3 1.2. 项目主题 3 1.3. 设计 ...

最新文章

  1. 安装anaconda 报错 failed to create menus
  2. gin context和官方context_gin 源码阅读(二) 路由和路由组
  3. 我们来谈谈那些智能家居里的语音对话设备
  4. sqoop同步hdfs与mysql端口_使用Sqoop将数据在HDFS与MySQL互导
  5. 天龙八部凤鸣镇目标服务器无法响应,Jmeter给NoHttpResponseException:目标服务器无法响应错误...
  6. window oracle 只有bak文件怎么恢复_Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现...
  7. 通过非docker的方式进行RocketMQ的安装
  8. 从原理上理解MySQL的优化建议
  9. java状态模式和策略模式_Java状态和策略设计模式之间的差异
  10. 计算机网络之网络层:3、IPv4地址
  11. wepy公共样式_wepy组件化开发之html转换组件
  12. 清除浮动(采用BFC)
  13. shell read
  14. Reactor | Epoll 模型理解
  15. 【自动控制原理】渐进稳定与临界稳定的区别与联系
  16. Qt截取长图(带滚动条被遮挡部分需要展开截取全图)QScrollArea、QPixmap
  17. a modern epidemic
  18. edp和edt哪个好_不懂香水EDP和EDT?Dior真我系列完美诠释
  19. 科学道德与学风-2021雨课堂答案-第9章
  20. RemoteViews的用法

热门文章

  1. http://ttaa.210997.com之后跳转https://hao.360.cn/?src=lmls=n5334812d99解决办法
  2. 苹果电脑显示内存不足有什么办法解决
  3. 铁威马NAS如何开启二次验证提高系统安全性
  4. 计算机应用基础教案文库,计算机应用基础教案82246
  5. 怎么让猫吃辣椒 转载自 xiaotie
  6. Elasticsearch RestHighLevelClient操作
  7. 使用jquery ajax调用后台方法 有时候不调用回调函数
  8. web 一键拨号和一键发送短信
  9. 用python制作饼状图
  10. 洛谷 JAVA 题解 P1618 三连击(升级版)