Author:Anders小明
目前采用是面向对象设计方法,设计的粒度分为两级:类和方法(属性),类似于数据库设计的表和字段;
在现有实现体系下,一个方法内部将包容多个Use Case;同时因为Use Case本身的横向扩展,也会导致一个Use Case将关联到多个方法;这是一个多对多的关系,为我们的开发管理带来巨大的成本。
为了有效管理Use Case及其实现映射,AOP技术成为一个好的选择;AOP允许我们为每个Use Case建立起独立的可管理的设计粒度:从方法中的一个代码段升级为一个独立方法和类;并允许这些Use Case被合理的有序的组织。
现有的技术体系已经为我们建立了可行方 ...
Author:Anders小明
(2008-1-12更新)
业务流程依据不同层次分为3个
0. 领域流程
领域流程即领域对象生命周期,是流程中的核心;
1. 工作流程
工作流是处理多人协同工作,三权分立的过程;该过程是建立在领域对象生命周期上;生命周期的不同状态在工作流中都有映射;工作流处理的是领域中Request对象的生命周期;
2. 页面流程
页面流是处理工作中一个工作请求的分步申请;该过程建立在工作流上,是其人工节点的UI代理;
这3个不同层次的流程,关注各自处理不同类型的领域对象;页面流在最外层关注于Request对象的数据收集,而工作流则负责Request对象的生命周期,在不同 ...
Author:Anders小明以前写过一篇《基于抽象的分层结构》,这里补充一篇《基于业务模块组件的系统架构》一些内容在《项目笔记:dao,web,模块边界以及Model分类》以及《模块的接口设计》随笔中已经提到,这里补充总结一下。任何一个有一定规模系统,通常会把系统做一定分解降低分析设计开发的难度,模块划分是一个比较常见的方式。而在模块的划分及其分析设计的实践中,包括了两种层次的边界。第一是交互行为层次,第二是对象层次。首先说交互行为。模块和模块的交互接口最为重要,通常我们认为这些接口应该通用稳定,然而如何设计每个模块对外提供的接口却是一个不易的问题。集成的两种基本实现方式:1. A ...
作者:Anders小明(2007.12.14日补充更新了部分内容,其中有关Web网站性能特点部分内容来自网络) 一、什么是架构1. 和架构相关的几个问题域架构需要解决的非业务问题域包括如下:A 系统目标:系统性能,稳定性.B.项目目标:开发成本,质量C.项目过程:需求的不确定性和开发过程的团队协作性不同的问题域,解决之道也不相同!而同一问题域的不同层次的要求,解决之道也不尽相同。2. 什么是架构 架构到底是啥,愚以为下面的这段英文描述的很清楚。That's like asking, what is culture? Culture is the way you ...
Author:Anders小明软件工程中的经济行为1. 在传统财务概念下,软件公司或者商业公司IT部门的员工,是公司的成本中心。对于一个定额合同项目,员工工资成为项目中唯一的可变成本。2. 因此,尽可能的缩短工期,减少人员投入就成为缩减成本的基本方式。3. 软件的分工模式,以及传统的waterfall——流水线的工作方式,决定了问题发现的越早,修正的成本越低。4. 有两种手段来减少工期,工程上采用迭代,并让迭代周期尽可能短,以及从技术上对于问题域进行分解,建立有效的边界。5. 迭代周期减少的目的是减少分工环节中尤其是第一个环节的不确定性带来的问题,而对问题域的技术分解是 ...
Author: Anders小明产品化和客户化两个词语是一个对孪生兄弟,一个没有强大客户化能力的软件是不能称为产品化的软件.产品化也就意味着软件公司的开发至少分为两个不同性质的角色:一个负责产品化,一个负责客户化.除去传统的参数化, 继承以及plugin技术外,aspectJ为我们提供另一种能力.如前所述, 公司有两个不同角色的团队在开发和维护—研发组和项目组,更进一步,本文所说适应如下的开发团队结构:一个研发组---多个项目组, 每个项目组需要定制化的东西各自不尽相同. 为了保证几个团队的工作的相对独立性,公司希望项目组在做客户化过程中不改研发团队所开发的代码,应用了已知的方法: ...
基于抽象的分层结构Author:Anders小明 (2008-1-8更新)前言:现有已知的分层结构基本上是基于技术结构的,无论是SpringSide(早的还有AppFuse)还是DDD提出的分层结构,都是基于职责角色划分的。然而对于复杂的企业应用系统来说,仅仅以该纬度来划分,是无法完成逻辑的分解的。我们还需要基于抽象的分层纬度。基于抽象的分层结构众所周知:抽象是有排列的。进一步,在企业应用中,抽象的排列也是分层的;与此同时,抽象还是分模块的,定义良好的交互接口,保持抽象间交互的稳定是及其重要的。抽象层次的划分是以业务概念划分为依据的,以保险系统为例,可以把抽象层次分为三层:保险其自身 ...
业务行为的分析和设计 Author:Anders小明 复杂业务行为通常看作是复杂规则与流程的集合。解决的基本方法依赖基本的思考方式:分解结构。分解的第一要素是:面向对象——内聚。通常面向对象理论会告诉我们设计的设计原则是:这个对象是什么。这样的做法对于Domain Model或者比较适合,但对应于Service或者Application层的对象并 ...
Programmatic programming, Declarative programming and Generative programming开发式编程,声明式编程和产生式编程Author:Anders小明开发式编程是编码的,如:Java, C#声明式编程是解析的,如:ANT(spring等的xml不一样,它们是静态描述型的,不那么verb)产生式编程是生成的,如:AOP(AspectJ),DSL(Drools)开发式编程是聚合的,声明式编程是声明的,产生式编程是组合的,声明式编程和产生式编程看起来很像:1.声明式编程需要一个解析器,产生式编程需要一个生成器;2.产生式编程(正统的) ...
在DSL:基于规则系统组织业务规则我提出DSL,不过在该文没有太多关于DSL的东东,显得有些牵强。先要说明一下什么是DSL(Domain Specific language),援引《产生式编程》一文: “DSL(领域特定语言)是一种特化的,面向问题的语言。” 《产生式编程》对DSL的做如下分类: 1. 固定和独立的DSL(fixed, sparate DSL),如SQL,用独立转换器实现的,导致技术孤岛 2. 嵌入式的DSL(Embedded DSL),如类和过程,还有嵌入式的DSL 3. 模块可组合的DSL(Modularly Composable DSL),包含两种 ...
在AOSD:应用AOP实现业务逻辑中, 我提出关注的接口; 其原文在javaeye上的讨论狼平方也提出可以用event,或者intercepter。 当然不同的方式可以解决不同的问题。这里要讨论一下AspectJ和Event以及intercepter的不同。1. 先来看看event的方式:需要两个对象Event和EventHandler(EventListener),event和eventHandler,属于数据契约。换句话说,牺牲了编译检查的好处,当然可以应对变化时有一定的好处。一旦需求变化,代码上的变动需要的工作量不少,更为严重的是,如狼平方所说的侵入性太强。2 接着看inte ...
(下面是发在javaeye上的帖子,因为觉的还有点意思,转到blog来,关于Domain和AOSD已经有了一些新的想法)应用Domain开发的系统,通常把逻辑放在Domain Service层中,而Domain Service做两个工作:1. 和表现层通信,表现为把表现层的平面数据(VO)转换为相关联的Domain对象,把Domain对象计算的结果转换成平面数据(VO)返回给表现层;2.根据Use Case完成商业逻辑的调度。以下主要讨论Use Case的内容。 通常Use Case所描述的Business Flow分为四种:Basic Flow,Alternate Flow,Exceptio ...
- 浏览: 64211 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
NEWS: Microsoft DSL Tool ...
这不就是Ruby,或者更确切的说,Groovy嘛
-- by halfmile -
从EAI到SOA
wwwtom 写道呵呵,前几天还看有人说 esb上架构SOA是有害的,今天就看见 ...
-- by richmond -
从EAI到SOA
呵呵,前几天还看有人说 esb上架构SOA是有害的,今天就看见有人跑出来说 “E ...
-- by wwwtom -
从EAI到SOA
现在的soa门槛太高 入门比较困难 要了解 soap wsdl 等乱七八糟的东东 ...
-- by xly_971223 -
从EAI到SOA
很多人还以为SOA只是概念炒作,其实,国内外大多数主流厂商都已经推出SOA概念的 ...
-- by JavaInActoin






评论排行榜