
架构乱弹
文章平均质量分 79
林仪明
这个人很低调什么也没有写
展开
-
MetaData Programme
(本文发于java emag第二期)什么是元数据编程什么是元数据,元数据就是描述数据的数据(data about data)。最明显的例子是XML Schema,xml schema就是描述xml的数据,所以它是元数据。另一个例子是数据库,比如我们可以查询数据库中有几个表,每个表都有什么字段,这些数据就是元数据。在开发的世界里,元数据就是能够绑定到一个类的附加信息,在静态或者运行时间。JC原创 2005-02-28 11:35:00 · 1686 阅读 · 0 评论 -
基于抽象的分层结构
基于抽象的分层结构Author:Anders小明 (2008-1-8更新)前言:现有已知的分层结构基本上是基于技术结构的,无论是SpringSide(早的还有AppFuse)还是DDD提出的分层结构,都是基于职责角色划分的。然而对于复杂的企业应用系统来说,仅仅以该纬度来划分,是无法完成逻辑的分解的。我们还需要基于抽象的分层纬度。基于抽象的分层结构众所周知:抽象是有排列的。进一步,在企业应用中,抽象...2007-01-05 01:09:04 · 227 阅读 · 0 评论 -
AspectJ应用--软件产品化的新方法
Author: Anders小明产品化和客户化两个词语是一个对孪生兄弟,一个没有强大客户化能力的软件是不能称为产品化的软件.产品化也就意味着软件公司的开发至少分为两个不同性质的角色:一个负责产品化,一个负责客户化.除去传统的参数化, 继承以及plugin技术外,aspectJ为我们提供另一种能力.如前所述, 公司有两个不同角色的团队在开发和维护—研发组和项目组,更进一步,本文所说适应如下的开发团队...2007-02-12 23:40:48 · 175 阅读 · 0 评论 -
软件工程中的经济行为与软件架构师的工作
Author:Anders小明软件工程中的经济行为1. 在传统财务概念下,软件公司或者商业公司IT部门的员工,是公司的成本中心。对于一个定额合同项目,员工工资成为项目中唯一的可变成本。2. 因此,尽可能的缩短工期,减少人员投入就成为缩减成本的基本方式。3. 软件的分工模式,以及传统的waterfall——流水线的工作方式,决定了问题发现的越早,修正的成本越低。4. 有两种手段来减少工期,工程上采用...2007-06-19 22:22:19 · 162 阅读 · 0 评论 -
AOSD:应用AOP实现业务逻辑
(下面是发在javaeye上的帖子,因为觉的还有点意思,转到blog来,关于Domain和AOSD已经有了一些新的想法)应用Domain开发的系统,通常把逻辑放在Domain Service层中,而Domain Service做两个工作:1. 和表现层通信,表现为把表现层的平面数据(VO)转换为相关联的Domain对象,把Domain对象计算的结果转换成平面数据(VO)返回给表现层;2.根据Use...2006-06-15 19:59:00 · 299 阅读 · 0 评论 -
DSL(Domain Specific language): How to get it
在DSL:基于规则系统组织业务规则我提出DSL,不过在该文没有太多关于DSL的东东,显得有些牵强。先要说明一下什么是DSL(Domain Specific language),援引《产生式编程》一文: “DSL(领域特定语言)是一种特化的,面向问题的语言。” 《产生式编程》对DSL的做如下分类: 1. 固定和独立的DSL(fixed, sparate DSL),如SQL,用独立转换器实现的,导致技...2006-07-08 02:31:00 · 204 阅读 · 0 评论 -
软件架构乱弹——问题域及其解决方法(2007.12.14更新)
作者:Anders小明(2007.12.14日补充更新了部分内容,其中有关Web网站性能特点部分内容来自网络) 一、什么是架构1. 和架构相关的几个问题域架构需要解决的非业务问题域包括如下:A 系统目标:系统性能,稳定性.B.项目目标:开发成本,质量C.项目过程:需求的不确定性和开发过程的团队协作性不同的问题域,解决之道也不相同!而同一问题域的不同层次的要求,解决之道也不尽相同。2. 什么是架构 ...2007-09-20 23:09:23 · 269 阅读 · 0 评论 -
开发式编程,声明式编程和产生式编程
Programmatic programming, Declarative programming and Generative programming开发式编程,声明式编程和产生式编程Author:Anders小明开发式编程是编码的,如:Java, C#声明式编程是解析的,如:ANT(spring等的xml不一样,它们是静态描述型的,不那么verb)产生式编程是生成的,如:AOP(AspectJ...2006-08-31 23:51:00 · 232 阅读 · 0 评论 -
基于业务模块组件的系统架构
Author:Anders小明以前写过一篇《基于抽象的分层结构》,这里补充一篇《基于业务模块组件的系统架构》一些内容在《项目笔记:dao,web,模块边界以及Model分类》以及《模块的接口设计》随笔中已经提到,这里补充总结一下。任何一个有一定规模系统,通常会把系统做一定分解降低分析设计开发的难度,模块划分是一个比较常见的方式。而在模块的划分及其分析设计的实践中,包括了两种层次的边界。第一是交互行...2007-12-15 01:14:08 · 346 阅读 · 0 评论 -
业务流程的层次和内容
Author:Anders小明(2008-1-12更新)业务流程依据不同层次分为3个0. 领域流程领域流程即领域对象生命周期,是流程中的核心;1. 工作流程工作流是处理多人协同工作,三权分立的过程;该过程是建立在领域对象生命周期上;生命周期的不同状态在工作流中都有映射;工作流处理的是领域中Request对象的生命周期;2. 页面流程页面流是处理工作中一个工作...2008-01-08 22:42:48 · 257 阅读 · 0 评论 -
AOSD的实践冲动——Use Case的实现
Author:Anders小明目前采用是面向对象设计方法,设计的粒度分为两级:类和方法(属性),类似于数据库设计的表和字段;在现有实现体系下,一个方法内部将包容多个Use Case;同时因为Use Case本身的横向扩展,也会导致一个Use Case将关联到多个方法;这是一个多对多的关系,为我们的开发管理带来巨大的成本。为了有效管理Use Case及其实现映射,AOP技术成...2008-01-12 21:42:08 · 167 阅读 · 0 评论 -
浅谈企业应用架构(一)
作者:Anders小明2009年5月5日 一、什么是架构在牛津高阶词典(第7版)中,架构(architecture)一词的解释是:the design an structure of a computer system,而架构师(architect)一词的解释是:a person who is responsible for planning or creating an idea, a...2009-05-05 23:23:37 · 209 阅读 · 0 评论 -
浅谈企业应用架构(二)
作者:Anders小明2009年5月5日五、架构的技术层面(一)基础手段提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点,好处不用说了,可以并发的工作,每个人面对的问题都简单而容易操作。而与分解对应的集成,只有提供了好的集成能力,分解才成为现实,而只有分解了,才能清晰的提供业务更多适应性。分解和集成的手段分为编程语言和技术框架两个层面。所谓语言就是强框架,而框架就是...2009-05-06 00:59:46 · 141 阅读 · 0 评论 -
浅谈基础平台
作者:anders2009年5月5日 一、什么是基础平台基础平台对应于业务应用,主要处理技术问题,是为业务应用提供技术支撑以及技术方案的模块或者组件。其目的是使得应用组件可只关注于业务逻辑,而不考虑或者少考虑技术问题。基础平台通常包括如下:基础功能,开发类库,开发模式以及开发部署工具。 二、为何要基础平台应用系统的设计可以说是将一个业务语言翻译成程序语言的过程,这个...2009-05-06 01:20:01 · 275 阅读 · 0 评论 -
企业应用下的业务组件开发实践
作者: Anders小明 什么是企业应用下的业务组件首先,这是一个组件,这意味着它需要在容器里运行,因此不包括任何中间件服务,同时以一定结构(文件结构或者压缩格式)组成,被容器识别;其次,这是一个业务组件,即提供的是应用服务,而非技术服务;第三,这是企业应用,在业务上包括功能和服务(Service,当前最时髦的说法,你可以理解为API),技术上(以J2EE来讲)包括:UI资源(JSF、J...原创 2010-02-21 14:14:23 · 145 阅读 · 0 评论 -
如何定义和建立架构
作者: Anders小明 在牛津高阶词典(第7版)中,架构(architecture)一词的解释是:the design an structure of a computer system。这个解释实际上已经描述了架构的本质:架构是关于怎么做(构成系统)的,而非做什么的。更进一步,架构是由人来设计实施,因此架构实际上是一个文化(culture)——我们怎么认识或理解系统/产品的,并且我们准...2010-10-31 11:41:36 · 296 阅读 · 0 评论 -
业务行为的分析和设计
业务行为的分析和设计 Author:Anders小明 复杂业务行为通常看作是复杂规则与流程的集合。解决的基本方法依赖基本的思考方式:分解结构。分解的第一要素是:面向对象——内聚。通常面向对象理论会告诉我们设计的设计原则是:这个对象是什么。这样的做法对于Domain Model或者比较适合,但对应于Service或者Application层的对象并不合适。这一类...2006-12-23 12:35:00 · 234 阅读 · 0 评论 -
如何定义和建立架构
任何系统都有架构,无论多小的系统都有,区别在于其架构是否是经过明确设计并表达。一个合理的架构无疑是经过精心设计和维护的,如何定义和建立架构,本文分享一些实践和思考,希望能抛砖引玉。原创 2010-10-31 11:47:00 · 7201 阅读 · 9 评论 -
企业应用下的业务组件开发实践
作者: Anders小明 什么是企业应用下的业务组件首先,这是一个组件,这意味着它需要在容器里运行,因此不包括任何中间件服务,同时以一定结构(文件结构或者压缩格式)组成,被容器识别;其次,这是一个业务组件,即提供的是应用服务,而非技术服务;第三,这是企业应用,在业务上包括功能和服务(Service,当前最时髦的说法,你可以理解为API),技术上(以J2EE来讲)包括:UI资源(JSF、J原创 2010-02-21 14:09:00 · 1869 阅读 · 1 评论 -
开发式编程,声明式编程和产生式编程
Programmatic programming, Declarative programming and Generative programming开发式编程,声明式编程和产生式编程Author:Anders小明同步自:http://www.blogjava.net/AndersLin/archive/2006/08/31/66968.html开发式编程是编码的,如:Java, C#声明式原创 2006-08-31 23:58:00 · 4626 阅读 · 6 评论 -
AOSD:应用AOP实现业务逻辑
(同步自http://www.blogjava.net/AndersLin/archive/2006/06/15/53079.html)(下面是发在javaeye上的帖子,因为觉的还有点意思,转到blog来,关于Domain和AOSD已经有了一些新的想法)应用Domain开发的系统,通常把逻辑放在Domain Service层中,而Domain Service做两个工作:1. 和表现层通信原创 2006-06-15 20:57:00 · 1616 阅读 · 0 评论 -
AspectJ: 通往AOSD之路的最佳军火
同步自:http://www.blogjava.net/AndersLin/archive/2006/06/24/54806.html在AOSD:应用AOP实现业务逻辑中, 我提出关注的接口; 其原文在javaeye上的讨论狼平方也提出可以用event,或者intercepter。 当然不同的方式可以解决不同的问题。这里要讨论一下AspectJ和Event以及intercepter的不同。原创 2006-06-24 01:06:00 · 3151 阅读 · 1 评论 -
DSL(Domain Specific language): How to get it
同步自:http://www.blogjava.net/AndersLin/archive/2006/07/08/57222.html在DSL:基于规则系统组织业务规则我提出DSL,不过在该文没有太多关于DSL的东东,显得有些牵强。先要说明一下什么是DSL(Domain Specific language),援引《产生式编程》一文: “DSL(领域特定语言)是一种特化的,面向问题的语言。” 《产生原创 2006-07-08 02:41:00 · 2385 阅读 · 0 评论 -
业务行为的分析和设计
业务行为的分析和设计 Author:Anders小明 同步自:http://www.blogjava.net/AndersLin/archive/2006/12/23/89648.html 复杂业务行为通常看作是复杂规则与流程的集合。解决的基本方法依赖基本的思考方式:分解结构。分解的第一要素是:面向对象——内聚。通常面向对象理论会告诉我们设计的设计原原创 2006-12-23 12:41:00 · 1996 阅读 · 0 评论 -
基于抽象的分层结构
基于抽象的分层结构Author:Anders小明(2008-1-8更新)前言:现有已知的分层结构基本上是基于技术结构的,无论是SpringSide(早的还有AppFuse)还是DDD提出的分层结构,都是基于职责角色划分的。然而对于复杂的企业应用系统来说,仅仅以该纬度来划分,是无法完成逻辑的分解的。我们还需要基于抽象的分层纬度。基于抽象的分层结构众所周知:抽象是有排列的。进一步,在企业应用中,抽象的原创 2007-01-05 01:00:00 · 3155 阅读 · 0 评论 -
软件工程中的经济行为与软件架构师的工作
Author:Anders小明软件工程中的经济行为1. 在传统财务概念下,软件公司或者商业公司IT部门的员工,是公司的成本中心。对于一个定额合同项目,员工工资成为项目中唯一的可变成本。2. 因此,尽可能的缩短工期,减少人员投入就成为缩减成本的基本方式。3. 软件的分工模式,以及传统的waterfall——流水线的工作方式,决定了问题发现的越早,修正的成本越低。4. 有两种手段来减少工期,工程上原创 2007-06-19 22:20:00 · 2630 阅读 · 0 评论 -
软件架构乱弹——问题域及其解决方法
作者:Anders小明(2007.12.14日补充更新了部分内容,其中有关Web网站性能特点部分内容来自网络) 一、什么是架构1. 和架构相关的几个问题域架构需要解决的非业务问题域包括如下:A 系统目标:系统性能,稳定性.B.项目目标:开发成本,质量C.项目过程:需求的不确定性和开发过程的团队协作性不同的问题域,解决之道也不相同!而同一问题域的不同层次的要求,解决之原创 2007-09-20 23:01:00 · 4031 阅读 · 0 评论 -
基于业务模块组件的系统架构
Author:Anders小明以前写过一篇《基于抽象的分层结构》,这里补充一篇《基于业务模块组件的系统架构》一些内容在《项目笔记:dao,web,模块边界以及Model分类》以及《模块的接口设计》随笔中已经提到,这里补充总结一下。任何一个有一定规模系统,通常会把系统做一定分解降低分析设计开发的难度,模块划分是一个比较常见的方式。而在模块的划分及其分析设计的实践中,包括了两种层次的边界。第一是原创 2007-12-15 01:20:00 · 2548 阅读 · 0 评论 -
业务流程的层次和内容
Author:Anders小明(2008-1-12更新)业务流程依据不同层次分为3个0. 领域流程领域流程即领域对象生命周期,是流程中的核心;1. 工作流程工作流是处理多人协同工作,三权分立的过程;该过程是建立在领域对象生命周期上;生命周期的不同状态在工作流中都有映射;工作流处理的是领域中Request对象的生命周期;2. 页面流程页面流是处理工作中一个工作请求的分步申请;该过程建立在原创 2008-01-08 22:36:00 · 4082 阅读 · 0 评论 -
AOSD的实践冲动:Use Case的实现
Author:Anders小明目前采用是面向对象设计方法,设计的粒度分为两级:类和方法(属性),类似于数据库设计的表和字段;在现有实现体系下,一个方法内部将包容多个Use Case;同时因为Use Case本身的横向扩展,也会导致一个Use Case将关联到多个方法;这是一个多对多的关系,为我们的开发管理带来巨大的成本。为了有效管理Use Case及其实现映射,AOP技术成为一个好的原创 2008-01-12 21:35:00 · 2768 阅读 · 1 评论 -
浅谈企业应用架构(一)
作者:Anders小明2009年5月5日 一、什么是架构在牛津高阶词典(第7版)中,架构(architecture)一词的解释是:the design an structure of a computer system,而架构师(architect)一词的解释是:a person who is responsible for planning or creating an idea, a原创 2009-05-05 22:24:00 · 1647 阅读 · 0 评论 -
浅谈企业应用架构(二)
五、架构的技术层面(一)基础手段提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点,好处不用说了,可以并发的工作,每个人面对的问题都简单而容易操作。而与分解对应的集成,只有提供了好的集成能力,分解才成为现实,而只有分解了,才能清晰的提供业务更多适应性。分解和集成的手段分为编程语言和技术框架两个层面。所谓语言就是强框架,而框架就是弱语言。A. 开发语言现代面原创 2009-05-05 23:24:00 · 1781 阅读 · 0 评论 -
浅谈基础平台
作者:Anders小明2009年5月5日 一、什么是基础平台基础平台对应于业务应用,主要处理技术问题,是为业务应用提供技术支撑以及技术方案的模块或者组件。其目的是使得应用组件可只关注于业务逻辑,而不考虑或者少考虑技术问题。基础平台通常包括如下:基础功能,开发类库,开发模式以及开发部署工具。 二、为何要基础平台应用系统的设计可以说是将一个业务语言翻译成程序语言的过程,这原创 2009-05-06 01:14:00 · 1733 阅读 · 0 评论 -
浅谈领域驱动设计
作者:anders小明2009年5月7日 需求背景现在的样子如PoEAA中提到的:事务脚本(Transaction Script)和表模型(Table Moduel)模式。存在问题事务脚本看到的是零散的数据,而表模型混合了下文要说领域模型和领域服务界限。1. 两者都导致了分析和设计的割裂,领域模型只存在于分析中;数据间的内在关系无法通过代码体现;2.原创 2009-05-07 22:28:00 · 1619 阅读 · 1 评论 -
关于架构的思考
作者: Anders小明 一、 架构是什么通常关于架构的第一个问题是架构是什么,很自然也很正常,本文也不能免俗。然而关于这个问题却没有一致性答案,同时也要注意到不同应用的架构实质上存在不同差异性。 (一) 架构的定义架构,虽然人们一直在讨论它,甚至于每天都在同其工作,然而这个词并没有一个被业界广泛认可的定义。大致而言,架构的定义分为三类:...2011-07-01 16:07:09 · 259 阅读 · 0 评论