【下文包含的图片来源于网络 ,版权属于原作者,恕难不一一注明出处 】
1.1 分解 decomposition
将系统换分成更小的更合理的程序块。
在UML中,分解由包、模块、子系统进行建模。
在JavaEE中,可以由Web组件和EJB组件来完成。
1.2 组件 element
可以独立开发和发布,并能提供特定功能和服务。
要有明确的接口,以便与其他组件交互。
组件通常具有复杂行为,可以通过UML活动图(Activity Diagram)或者状态图(Staechart Diagram)来建模其行为。
1.3 框架 Framework
一个概括了的体系结构模板。我们可以用这个模板来构建特定领域中的应用程序。
通常两种方法来使用框架:
1.库方法。即,用框架来建立一组可用组件。
2.利用框架为新工程创建模板,或定义特定类型系统的体系结构。
(显然,在我们缺乏足够能力构建可靠体系时,采用模板来解决问题,是一种省时且安全的做法)。
一个好框架的三条基本要素:
1.易于理解,结构清晰,便于用户快速使用。
2.足够的文档说明。
3.具体明确的扩展机制。便于自我成长和对新技术的支持。
(我们可以去用这三条标准去重新考察和审视那些我们熟悉的框架)
1.4 模型 model
设计方法。从经验中提取,可重用,能成功解决一些特殊问题。
通常分为业务分析模型,体系结构模型,设计模型(或,设计模式)和编码模型。
各个模型之间的主要区别在于抽象的级别不同。
业务分析模型着重于对实际的业务组织中的业务过程和必要的信息流进行可视化的描述。
(这方面,可以阅读下Eriksson-Penker的相关业务建模的著作。在建模软件EA的文档中也有
关于Eriksson-Penker Extension的一些描述)。
系统结构模型处理软件系统、子系统或组件的结构,以及他们是如何相互关联的。
设计模式(Pattern)是在类和对象层面上进行操作。
1.5 分层layering和层tier
层(layer):
Layer 是对大规模系统进行分解的一种模型。将系统按逻辑划分为子系统和模块,
利用Layer来对这些子系统进行分组和隔离。将特定的功能放到特定的功能Layer中,
从而形成服务之间的边界概念。
Layer之间的通信应该是直接(explicit)和松耦合(loose coupled)的。
从严格的分层(Layering)来说,某个layer内的组件(component)只能访问其同层组件或者直接下层的组件。
RUP的两种分层方式:
・职责驱动分层,即每个Layer充当一个特定的角色,这种分层模式可以作为tier(层)来使用。
特别是在J2EE中体系结构里。
上图典型的3层(Layer)封层模板。下图为典型的N-tier模板。
可见,两者是存在比较明显的Layer和Tier的直接映射关系的。
基于职责驱动Layering的另外一个例子:
・重用驱动分层。
由上面的这些图可见,在处理不同领域和性质的问题时,我们既要去借鉴一些成熟的方法,但也不需要完全
被教条束缚了手脚,那样反而会影响我们更好的解决一些特定问题。
【其他参考资料】
・《分层策略》Peter Eeles
http://www.ibm.com/developerworks/cn/rational/rationaledge/content/jun05/peter/index.html
・Difference in layer and tier architecture
http://www.codeproject.com/Tips/277818/Difference-in-layer-and-tier-architecture
・Layers and Tiers
http://blogs.msdn.com/b/jmeier/archive/2008/09/06/layers-and-tiers.aspx