分析设计的讨论:包图

happyjun2000 2005-05-23 01:55:11
因为昨天看了一下包,觉得好象是挺有用的,想讨论一下,主要是关于包图对设计的作用。

但是说到设计可能会扯的很远,可能说了半天也不知道说什么,如果大家能看到什么值得说一下的,欢迎大家都来说一下。

对于设计方面不是很内行,但是也想聊一下,

设计要考虑的问题是多方面的,重用逻辑、维护效率、不同环境、部署需要等,只能说针对不同层次的问题进行不同层次的设计。

针对设计思想的设计模式,针对构架层次的构架模式等,提供了我们学习和使用设计的途径。

设计,首先要了解要解决的问题,就是设计的来源。比如:

//==============
在系统分析设计中,uml中有一个包图,martin flowler在《uml 精粹》中说,他比较重视包之间的关系,使用包图来表示包、包之间的关系,

来达到一定设计。

包图,一些类组(也可以是其他的组,比如时序图等)。

比如:在以用例演化而来的逻辑中,在分析的时候,出于某种原因和目的,将一些类放置在包中,形成一些类组。

那么包之间有一定的依赖,怎么最小化依赖,就要用到设计,比如:提到的一个技巧,说使包的类只在包内部可见,如果外部要使用包中的东

西,那么在包中在创建一些虚构的类,提供统一的访问,所谓的外观模式。

有时候分析产生的包图,在设计时期要依据设计做一些调整,合并和产生新包(由此觉得分析和设计是没有界限的,或者说是迭代的)。

包的可见性、相互关系等的研究,决定了一个包,最终是形成了软件包?还是子系统等?。

在这里,包的依赖就是要解决的问题,可以说包图驱动了这个逻辑层次上设计。

从用例分析演化来的包图解决的应该只是是软件逻辑上的一些设计,其他应该还有许多方面。
//===============

套用模式可以实现重用,比如N层(三层)的套用,但是模式适用是有一定的范围的,就是环境。
大家都明白这个道理,但套用的时候就不一定想到这个道理了。

比如:
关于层设计的问题的帖子,好象一直是很多,net版问的关于N层(三层)的问题,分几种:
1.对三层的扩展,具体层怎么划分,在实际环境中是否合理,力图找出一种通用的、合理的结构。
2.层具体怎么实现,怎么提高效率。
3.不清楚层是怎么协作的,想通过别人的代码了解,但是不了解层的真正意图。

3情况,是在对层模式不是很清楚的情况下(我也不是太清楚),就直接来套用模式了,这种做法应该是不推荐的。
虽然现在的结构,有些是经过了实践,或者说是研究出来专门针对哪个环境使用,比如哪个公司推荐的构架,但是也不能说对这个构架不了解

,就直接研究构架内部的具体实现,这样也太快了。

上面乱七八糟说的话,其实要说的好象就是:
1.设计的层次很重要,不然就无的放矢,乱套了。
2.设计不是空想的设计,比如不知道包之间的依赖,也就不知道要设计什么了,不知道要解决什么问题了。推荐一下包。
3.模式的套用要依据环境,就算对于别人认为这个模式适合这个环境,你也是在这个环境下的,那么首先还是要去了解模式,然后在进研究实

现。

由于上面讲的确实乱,我真的不知道在说什么,大家尽管扯开去谈好了,欢迎来谈!


...全文
454 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fphuang 2005-07-09
  • 打赏
  • 举报
回复
学习,友情UP
cht3160 2005-07-07
  • 打赏
  • 举报
回复
大学里的一本什么书学过这个东东,忘了。
开发中也没用到过包图。不过挺有意思的
群交流:8905978
liduke 2005-06-20
  • 打赏
  • 举报
回复
之前一个项目做了类图之后,就没有考虑包的关系,结果在相互引用时,出现了循环引用的问题,最后调了很长时间才解决。其实在实际工作中,我们还只是根据实际的需求来部分参照UML来指导工作,就像我,我只是做用例图、时序图和类图,其它的基本上不做,主要是项目的时间很少,老板根本就不管这个,只是在规定的时间就要东西了,所以很难完全按照UML的标准来工作
tch789 2005-06-13
  • 打赏
  • 举报
回复
學習
seekg 2005-06-10
  • 打赏
  • 举报
回复
up
凨叔 2005-06-05
  • 打赏
  • 举报
回复
看星星们讨论很不错,呵呵!
mba9001 2005-05-29
  • 打赏
  • 举报
回复
up
happyjun2000 2005-05-26
  • 打赏
  • 举报
回复
http://www.uml.org.cn/mxdx/200431658.htm

根据不同观察角度,我们可以针对OOP给出不同级别的抽象层次。通常,面对一个典型的面向对象程序,[Budd 2002]将其分成五个抽象层,分别覆盖了OOP中的分析,设计与编程的各个阶段:

1, 最高级别的抽象层上,程序被看成是由很多相互作用并且遵守契约的对象所组成的对象集合。对象之间相互合作完成程序的计算任务。这个抽象级别上的典型代表就是设计模式思想(Design Pattern)。

2, 第二个抽象层就是一个对象集单元,也就是一群定义之间有相互联系的对象,在程序设计语言级别来看Java中是packages,C++中是name space。这个抽象级别上的典型代表就是模块化思想(Modularity)。

3, 第三个抽象层所代表的是典型的OOP模式:客户/服务器模型,这主要是用来抽象两个对象之间的互交过程。在这个抽象级别上的典型代表就是对象之间的消息机制(Message Passing)。

4, 第四个抽象层就是针对一组相似对象定义一个类作为生成对象的模板,类定义了对象的对外使用接口以及继承对象所需的内部继承接口,而这个抽象层次的典型代表就是接口编程(Interface Programming)。

5, 第五个抽象层就是实现一个类所需要的方法和成员变量的实现(Implementation)。在这里OOP最终和POP(Procedure-Oriented Programming)相融合。

当然,我们可以根据各自的观察角度划分成更细的抽象层次比如说针对第五层抽象用到的POP理论,我们还可以进一步的划分出控制抽象(三种完全描叙图灵机计算模型所需要的控制结构)以及数据抽象(ADTs)等等,并由此继续下去(如果你的想象力足够丰富的话:)。
yesry 2005-05-26
  • 打赏
  • 举报
回复
up
hedonister 2005-05-25
  • 打赏
  • 举报
回复
我觉得要用活用好UML里的相关首先要理解为什么要用这些概念,不要为了用而用,那样只能带来麻烦

在这里就说包和包图:
首先包是什么,用来干什么的?
《UML宝典》是这么解释的:
包是UML中的主要结构,用来对模型元素进行分组。其功能与文件夹完全相同;通过组织包
并把包放入一个包容器中,可以对元素进行组织;包为类元提供命名空间,包还可以包含任何UML类型的多个图等等一些
有兴趣找书看看--------------

这有几个比较好的应用实例和介绍,可能可以体会一点

http://www.uml.org.cn/UMLSearch/PatternIntegrateUMLView/PatternIntegrateUMLView.htm

http://www.borland.com.cn/forum/files/%BB%F9%D3%DAECO%B5%C4UML%C4%A3%D0%CD%C7%FD%B6%AF%B5%C4%CA%FD%BE%DD%BF%E2%D3%A6%D3%C3%BF%AA%B7%A21.pdf



happyjun2000 2005-05-24
  • 打赏
  • 举报
回复
包图用于描述系统的分层结构。

是的,通过了包和包的关系,看到了系统结构间要解决的问题,比如你说的层结构

包起到了衔接结构设计的作用,但是好象我接触人都没有很重视包这个东西,或者说有些人只是做一些用例视图,反应一些用户功能就ok了,结束了。

上面说的基本是认为包是重要的,仅此而已,
另外,因为没有确切的使用包的经验,所以也希望知道在使用包的时候,有哪些需要注意的,大家有什么经验。比如:包在分析的时候进行划分需要考虑的哪几个方面,业务划分?功能划分?逻辑划分?等

一句话,发现了一个东西,觉得不错,挺高兴,要学习它,还想用用它,学以致用
hedonister 2005-05-24
  • 打赏
  • 举报
回复
接上--------
包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
sfanpu 2005-05-24
  • 打赏
  • 举报
回复
學習中……
hedonister 2005-05-24
  • 打赏
  • 举报
回复
to happyjun2000(蓝色游侠

一头雾水啊,你是要表达个什么意思?

我 觉得
包图主要显示类的包以及这些包之间的依赖关系。有时还显示包和包之间的继承关系和组成关系。
包的内容可以是类的列表,也可以是另一个包图,还可以是一个类图。
happyjun2000 2005-05-24
  • 打赏
  • 举报
回复
我看现在真正懂得如何利用
UML ,OOA , OOD 的原则来设计的人太少。

不一定懂得才去使用,觉得不使用永远不会懂得,没有开始就没有结束^_^
happyjun2000 2005-05-24
  • 打赏
  • 举报
回复
DLL 文件,应该算是构件,是一个物理东西,在构件图中进行表述

包:我理解为同类型事物按某种目的聚集在一起的集合
zhongwanli 2005-05-24
  • 打赏
  • 举报
回复
我因为是初学者,所以看了一下。
楼主能总结,就应该可以了,我看现在真正懂得如何利用
UML ,OOA , OOD 的原则来设计的人太少。
所以楼主建议交流一下, QQ: 24565056 (注明: UML )

有一些疑问:

包,是不是指我们常用 DLL 文件, 还是 "命名空间", 还是两者都可?
happyjun2000 2005-05-24
  • 打赏
  • 举报
回复
是不是问的说的太傻了

都没有人来,自己顶
happyjun2000 2005-05-24
  • 打赏
  • 举报
回复
to hedonister(冰戈)
谢谢,比较概要,但是不能看到什么新的东西,大哥能指点一下?
hedonister 2005-05-24
  • 打赏
  • 举报
回复
一个应用方案
http://www.cws.net.cn/Journal/slxb/200208/15.htm
加载更多回复(2)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧