系统架构-UML 包图

经过了一个上午的讨论,对于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)