`
yimlin
  • 浏览: 137281 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

基于抽象的分层结构

阅读更多

基于抽象的分层结构

Author:Anders小明

 

(2008-1-8更新)

前言:现有已知的分层结构基本上是基于技术结构的,无论是SpringSide(早的还有AppFuse)还是DDD提出的分层结构,都是基于职责角色划分的。然而对于复杂的企业应用系统来说,仅仅以该纬度来划分,是无法完成逻辑的分解的。我们还需要基于抽象的分层纬度。

基于抽象的分层结构
众所周知:抽象是有排列的。进一步,在企业应用中,抽象的排列也是分层的;与此同时,抽象还是分模块的,定义良好的交互接口,保持抽象间交互的稳定是及其重要的。

抽象层次的划分是以业务概念划分为依据的,以保险系统为例,可以把抽象层次分为三层:保险其自身核心业务概念——核心抽象层,又受国家监管规则——国家抽象层,以及公司自身规则——公司抽象层。

如果说对于抽象的层次划分是纵向分类的话,那么模块划分就是横向分类。模块划分是较为常见的,不再举例。

对于抽象分层的,需要进一步的说明。如下为一个三层抽象的说明。白色为核心抽象层,水绿色为扩展抽象层,天蓝色为特定抽象层。

o_image001.gif 

对于抽象的分层,是符合人的思维逻辑的一种思考问题的方式,由简单到复杂。注意到白色为代表的核心抽象其覆盖面积是最小的,其边界也是最小。然后是扩展抽象,再然后是特定抽象。对抽象分层的第二个好处是:可以迭代地螺旋前进。

先看看核心抽象层:核心抽象层必须足够精巧而且稳定,因为他们是系统的最基本和最简单的结构!同时核心抽象层是可以运行的!他们的抽象和默认实现在全系统的地位——类似于数学系统的中的0和1!而具有复杂变化的扩展层和特定层就类似于数学中的2和3,然而,我们都知道,在数学中,0和1才是最重要的,没有0和1,数学系统是无法构建的。

对于抽象层次而言,面临的问题是如何保护抽象层次的边界,确保上层抽象的变更不会引起下次抽象的具体变更。这就要求下层抽象在扩展实现时委派逻辑到扩展抽象层中新的接口和抽象。这样即保证了核心抽象的基本语义,由保护了核心抽象的边界。

系统必须支持核心抽象层为下层抽象留下扩展的空间,基本的手段是通过暴露Factory,将扩展实现注入到核心抽象层次中;除了扩展,系统还需要支持替换(override),也是要暴露核心层的Factory,将替换实现注入到系统中;现在很多基于类似Spring的系统,可以借助Spring的Bean Override机制完成;

这样的抽象层次由于本身是完备和有边界的,他们可以被独立地维护。

在全系统下的核心抽象层是0和1,然而在考虑扩展抽象层时,该层就成为其特定抽象层的0和1,我们需要像构建核心抽象层一样来构建该层,以保持本身的完备性,边界以及扩展性。

如此反复迭代,随着系统外围的边界不断扩大,全系统所提供功能也越来越多,扩展点也就越来越多,系统支持的动态特性也越来越多!

分享到:
评论
1 楼 partech 2007-01-05  
是啊,能得到核心抽象概念,理解业务和系统就会很简单。

相关推荐

    使用随机过程对网络攻击的抽象层次级别进行建模

    这项研究将预期网络威胁及其抽象层次结构层次的外观集中在人类的心理画面水平上。 该研究涉及在网络攻击下个人心理状态行为的建模。 代理人的心理状态不可观察,我们提出了一种非平稳隐马尔可夫链方法来对代理人的...

    论文研究-基于MVC的软件界面体系结构研究与实现.pdf

    软件体系结构研究是目前软件工程领域研究的新一轮热潮,是对软件的更高层次抽象。在分析MVC(Model/View/Controller)模式机理的基础上,给出了基于MVC的软件界面体系结构及其工作机理。软件界面体系结构带来了软件...

    论文研究-基于分层的过程构件分类描述的研究与应用.pdf

    在以标准过程为基础的过程复用中,为解决传统的基于标准过程裁剪中标准过程只有单一抽象层次,造成裁剪工作量大的问题,提出了创建多抽象层次标准过程以满足不同应用需要;对相同功能不同抽象层次的过程采用继承机制...

    论文研究-基于层次和数据流驱动的软件可靠性分配方法.pdf

    针对软件系统开发初期体系结构中系统模块层次关系及模块间数据流关系进行抽象, 形成体系结构形式化定义, 建立可靠性因子的度量准则及度量模型, 依据度量模型对可靠性进行分配。最后结合实例进行了分析和验证, 结果...

    论文研究-基于分层改进D.pdf

    针对D*算法搜索空间较大的问题,引入抽象分层思想,将室内环境结构化为层次图并设置关键节点,将关键节点作为局部目标节点,分段进行路径搜索;为提高在线路径规划效率,利用Voronoi图理论离线生成关键节点间的先验...

    基于MFC的可视化数据结构

    本书介绍了在VisualC++环境下,利用MFC,对数据结构的相关知识和算法进行可视化实现,使得原本抽象的知识实现可视化,大大方便了读者的理解和掌握,非常适合各个层次的读者的学习。

    研究论文-基于MapX的分层路网拓扑结构的构建方法.pdf

    最优路径规划是车载导航系统最主要的功能之一,而实现这一功能的关键在于构建道路网络的拓扑结构.... 实验结果表明,经过分层抽象处理之后,重建的高层路网数据规模骤减,这为路径规划的实时性提供了良好的基础.

    程序开发原理:抽象、规格与面向对象设计.[美]Barbara Liskov(带详细书签).pdf

    该书的后7章主要讲述了怎样利用抽象构建大型软件,主要侧重于软件工程的内容,基于类型层次结构提出对于数据抽象的调试、测试、需求分析、自顶向下和迭代的开发过程,还简要介绍了设计模式的概念。 这是一本传授思想...

    数据结构与算法设计-王晓东PPT

    第2~4章以抽象数据类型为主线索,围绕常用的基本数据结构,分别介绍基于序列的常用数据结构表、栈、队列;第5章介绍递归以及递归在数据结构和算法设计中的应用;第6章介绍实际应用中常用的排序与选择算法;第7~12...

    基于时域结构的二值图像质量评价 (2005年)

    提出基于时域分层结构的图像质量评价方法,认为分层结构矩阵由细节到抽象的过程反映了人类视觉抓取信息的过程.先提取图像分层结构,计算降质前后图像结构矩阵对等层的互相关,然后对不同结构层赋予相应的层次因子以...

    《软件体系结构》期末复习题 简答题: 1、软件体系结构建模的种类有: 结构模型、框架模型、动态模型、过程模型、功能模型。

    《软件体系结构》期末复习题 简答题: 1、软件体系结构建模的种类有: 结构模型、框架模型、动态模型、过程模型、功能模型。 2、“4+1”视图模型从5个不同的... 1)支持基于抽象程度递增的系统设计,使设计者可以把一

    一种基于分层结构的最优路径算法 (2013年)

    针对该问题,基于原始道路图构建了层次道路图,重点研究了适用于层次道路图的改进A*算法:依据最短路径搜索起始点所在位置的不同,可以直接或间接在层次道路图的抽象层进行最短路径搜索,再把最短路径上的复合节点展开为...

    产品经理的高阶能力:架构图的设计与画法

    作者给大家分享了产品架构图的设计与画法,架构图将可视化的具象产品和服务,抽象成信息化、模块化、层次结构以及关联关系清晰的架构,并通过不同分层的交互关系、功能模块的组合、数据和信息的流转,来传递产品的...

    基于模型驱动开发方法的开放式结构计算机数控系统的研究_

    对于基于模型驱动开发的系统实现,框架技术的应用更为重要,借助于框架可以实现系统模型的设计层次的测试和调试,这一点非常重要,因为软件开发过程中对模型的测试和调试,最佳的选择就是在与模型设计的同一抽象层次...

    面向对象程序设计与实践-Java抽象类和接口[33页].pptx

    抽象类 5-1关联知识 抽象类在类层次结构中代表一般性概念,规定必须实现方法的统一接口,子类将基于此概念来定义方法,定义方法如下: abstract class 类名{ 数据成员; //定义抽象方法,没有方法体实现 abstract ...

    基于图的微博用户分层分类

    微博创建了一个拥有大量社交媒体数据的大型社交网络。 在社交网络和大数据范例中,对微博用户之间... 因此,可以灵活地获得在各种抽象层次结构中具有重叠和层次属性的微博用户的类别。 实验结果表明了该方法的可行性。

    QT 学习笔记 Model/View结构

    Model/View基本原理  将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来...Qt中与数据模型相关的几个主要的类的层次结构如图    抽象类是不能直接使用的,需要由子类继承实现。Qt提供了一些模型类用于

    基于层次因子图的智能车环境感知和态势认知模型

    首先,基于人类驾驶认知的分层记忆机理,按照被处理信息由低到高的抽象层次,将环境认知分为环境目标感知和态势认知两大任务模块,提出层次化框架;然后,确定层次因子图的拓扑结构并实现层次因子图模型,目标感知层具体...

    多层软件体系结构的结构和生成方法

    分层软件体系结构是信息系统开发通常采用的模型,因为它有利于系统的模块化和可扩展性。 另一方面,模型工程的出现旨在提高抽象水平,以使开发人员可以对模型进行推理,而无需编写代码。 研究的问题是将两种方法结合...

Global site tag (gtag.js) - Google Analytics