Author:Anders小明 目前采用是面向对象设计方法,设计的粒度分为两级:类和方法(属性),类似于数据库设计的表和字段; 在现有实现体系下,一个方法内部将包容多个Use Case;同时因为Use Case本身的横向扩展,也会导致一个Use Case将关联到多个方法;这是一个多对多的关系,为我们的开发管理带来巨大的成本。 为了有效管理Use Case及其实现映射,AOP技术成为一个好的选择;AOP允许我们为每个Use Case建立起独立的可管理的设计粒度:从方法中的一个代码段升级为一个独立方法和类;并允许这些Use Case被合理的有序的组织。 现有的技术体系已经为我们建立了可行方 ...
2008-01-08

业务流程的层次和内容

关键字: 企业应用
Author:Anders小明 (2008-1-12更新) 业务流程依据不同层次分为3个 0. 领域流程 领域流程即领域对象生命周期,是流程中的核心; 1. 工作流程 工作流是处理多人协同工作,三权分立的过程;该过程是建立在领域对象生命周期上;生命周期的不同状态在工作流中都有映射;工作流处理的是领域中Request对象的生命周期; 2. 页面流程 页面流是处理工作中一个工作请求的分步申请;该过程建立在工作流上,是其人工节点的UI代理; 这3个不同层次的流程,关注各自处理不同类型的领域对象;页面流在最外层关注于Request对象的数据收集,而工作流则负责Request对象的生命周期,在不同 ...
2008-01-08

Domain Model的三种类型及其级别

关键字: domain model
Author: Anders小明 (2008-1-12更新) 从以上的分析中,我们可以了解到Domain Model分为三种类型: 0. 全局常量对象 1. 长生命周期业务对象(类似保单对象); 2. 交易过程的Transaction对象,几乎没有生命周期的; 3. Request/Response对象。这类对象以前没有识别的,通常和VO混在一起;但是在IAA中以及电信业的模型是这类对象是独立存在,并被持久化的;Request对象建立在增量更新上很有用。当然他们也是几乎没有生命周期的。 并非所有的业务系统都拥有这三类对象!相当一部分的业务系统,并没有显著的长生命周期对象,因而没有明确 ...
Author:Anders小明以前写过一篇《基于抽象的分层结构》,这里补充一篇《基于业务模块组件的系统架构》一些内容在《项目笔记:dao,web,模块边界以及Model分类》以及《模块的接口设计》随笔中已经提到,这里补充总结一下。任何一个有一定规模系统,通常会把系统做一定分解降低分析设计开发的难度,模块划分是一个比较常见的方式。而在模块的划分及其分析设计的实践中,包括了两种层次的边界。第一是交互行为层次,第二是对象层次。首先说交互行为。模块和模块的交互接口最为重要,通常我们认为这些接口应该通用稳定,然而如何设计每个模块对外提供的接口却是一个不易的问题。集成的两种基本实现方式:1. A ...
Author: Anders小明 为何要Domain Model 传统的开发方式:基于数据库的设计开发。数据库提供的设计模型是表和字段两种粒度,这两种粒度有时并不合适于系统设计: 1. 模型的结构化能力 1.1. 同一模块组件下的设计优势;一个model可以来自多张表的数据聚合而成,一张表可以聚合多个Model;一个逻辑是由几个固定字段或者非固定字段聚合;Model间的关联关系也是使用表无法展示的(外键的约束对于系统开发来说实在太有限了)。而这些不论表还是字段粒度都无法支持的! 1.2. 采用Model方式容易解决项目的集成问题(两个不同模块组件访问同一张表的情况) 2. 架构的结构化能力 ...
作者:Anders小明(2007.12.14日补充更新了部分内容,其中有关Web网站性能特点部分内容来自网络) 一、什么是架构1. 和架构相关的几个问题域架构需要解决的非业务问题域包括如下:A 系统目标:系统性能,稳定性.B.项目目标:开发成本,质量C.项目过程:需求的不确定性和开发过程的团队协作性不同的问题域,解决之道也不相同!而同一问题域的不同层次的要求,解决之道也不尽相同。2. 什么是架构   架构到底是啥,愚以为下面的这段英文描述的很清楚。That's like asking, what is culture? Culture is the way you ...
2007-08-18

从EAI到SOA

关键字: soa
(2008-1-12更新)  写在前面SOA现在越发闹腾的厉害了,各种宣传越来越多,都把SOA吹上天;到底SOA是什么,有啥神奇之处,真的想宣传说的那么好吗?看了种种文章,只是越发混沌。罢了,俺做技术的,商业上的宣传,俺不在意。既然SOA只是理念,那么俺就从它的支持技术来看看,从过去到现在的区别,看看SOA到底是啥!从EAI到SOA从集成的角度看,集成面临的问题如下A. 数据集成,包括信息交换和交换管理B. 业务集成,包括服务管理和流程管理1.史前时代现象: 1.1. 采用原始交换手段—— 点对点的传输通道依赖,机制是Socket或者后来的RMI。存 ...
Author:Anders小明先从后端的dao说起吧:已有项目的开发以及appfuse的开发,都属于传统的开放方式,内部有dao,外部还有service。这样的开发方式太学院了,每次改动其实影响面很大,要改二个类,两个接口。平时不忙的时候也就算了,项目一紧的话,大家就乱来的了。相当部分都是最外层接口实现类就直接访问了数据库,而不走规范路线。现在对外提供一个repository的service接口(加载该领域模块的root对象,以便程序利用root对象来游走,ddd推荐的做法),然后内部有一个dao接口,继承该repository接口,提供一些内部使用的额外服务,比如一些数据库查询。接着有一个类 ...
Author:Anders小明软件工程中的经济行为1. 在传统财务概念下,软件公司或者商业公司IT部门的员工,是公司的成本中心。对于一个定额合同项目,员工工资成为项目中唯一的可变成本。2. 因此,尽可能的缩短工期,减少人员投入就成为缩减成本的基本方式。3. 软件的分工模式,以及传统的waterfall——流水线的工作方式,决定了问题发现的越早,修正的成本越低。4. 有两种手段来减少工期,工程上采用迭代,并让迭代周期尽可能短,以及从技术上对于问题域进行分解,建立有效的边界。5. 迭代周期减少的目的是减少分工环节中尤其是第一个环节的不确定性带来的问题,而对问题域的技术分解是 ...
Author:Anders小明.0. 业务分包.在package命名上,摈斥了Appfuse以及SpringSide中出现的model, service以及manager等技术名词,取而代之的是业务名词和动词,使得行为和模型物理上内聚。我们以为对于开发人员来说,通过包名以及类名获取其业务功能远比了解其技术分类更有助于设计和开发。这里借用springside的package前缀:org.springside.insurance.productorg.springside.insurance.quotationorg.springside.insurance.quoteorg.springside ...
yimlin
搜索本博客
最近加入圈子
存档
最新评论
  • 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