`
yimlin
  • 浏览: 137102 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论
文章列表
Programmatic programming, Declarative programming and Generative programming开发式编程,声明式编程和产生式编程Author:Anders小明开发式编程是编码的,如:Java, C#声明式编程是解析的,如:ANT(spring等的xml不一样,它们是静态描述型的,不那么verb)产生式编程是生成的,如:AOP(AspectJ),DSL(Drools)开发式编程是聚合的,声明式编程是声明的,产生式编程是组合的,声明式编程和产生式编程看起来很像:1.声明式编程需要一个解析器,产生式编程需要一个生成器;2.产生式编程(正统的)需 ...
Domain Object :基于业务行为的分析 ——Domain Object 的动静之分,及其与 Business Process 的关系 Author:Anders小明     一、Domain Object的动静之分 1.1 动静的标准是什么? 在系统运行期间,被频繁建立和更新的称为“ 动态” ,而在较长的一段时间内保持稳定的称为 “ 静态” 。   1.2 考查Domain Object的动静将意义何在?      通常而言,“ 动态” 的Domain Object群通常代表了系统的核心业务对象。而 “ 静态” 的Domain Object则在业务上代表了系统的依存关系。     更进 ...
FP不是一个什么全新的概念,在lisp等语言中被广泛应用,其设计方法向我们描绘了一个美好的世界,不过在OO的世界里应用却还是要费一些力气的。为了更好的应用FP,需要学习一下现有的实践。   一、回顾一下函数式编程的几个特性:1. 闭包计算和高阶函数。    函数本身是first class对象,闭包是起函数作用并可以像对象一样操作的。    高阶函数是可以接受一个函数为参数,并可以返回一个函数。      2. 延迟计算(lazy evaluation)    不是在函数绑定时计算,而是在求值时计算。 3. 递归的计算机制     4. 引用透明     同样的输入返回同样的结果,与上下文无关。 ...
   我在《小议领域模型Domain Model》讨论了service和object,以及关联逻辑(咳咳,该文中的一些观点我已修正,合适的时候放上来)。关联逻辑就是本文讨论的重点--specification   一、从DDD(Domain Driven Design)说起    这个Specification来自DDD,DDD有对specification分为三个类型    1. Validation    2. Selection    3. Building    不过在初看这个Specification的概念的时候,相信很多人都有一种似曾相识的感觉。我们日常开发中, 基于SRC原则写的那 ...
项目用的持久化层是hibernate 2.1.6.前不久出现一个错误,简单描述一下:现有3个对象:Party,TParty和Individual,其中Individual是Party的子类,Party和TParty各自独立,两个对象都映射到表T_Party。当独立执行Individual person = (Individual)session.load(Individual.class, id)时,系统正确,.而在同一thread下(OpenSessionInView),先session.find("from TParty"),再Individual person = (I ...
在DSL:基于规则系统组织业务规则我提出DSL,不过在该文没有太多关于DSL的东东,显得有些牵强。先要说明一下什么是DSL(Domain Specific language),援引《产生式编程》一文: “DSL(领域特定语言)是一种特化的,面向问题的语言。” ...
是的,我内心很喜欢Tapestry。我喜欢他的开发风格,这和我的工作范围是有关的。 在我参加工作之前,我一直用ASP.NET(工作后转J2EE开发),工作的第一家公司用的是私有的MVC框架,有类似的实现,同时提供了类似Spring Web Flow的东东。 因为一直做企业应用,一个很大的感受是: 企业应用是有一个严格的流程的。 一个工作任务的Transaction是有一个严格的流程:一步一步按流程往前走,每一步都有严格的校验,对于客户或者User的误操作都会给出明确的提示,只有客户的操作是正确的,才可以进行下一步流程。 这和面向公众的应用是不同: 这里没有一个自由跳转的概念的,出了错给个简单提 ...
分析阶段的Use Case(User Story)除了Business Flow描述外,另一个重要的部分就是业务规则。组织和实现这些业务规则有不同的手段(将带来不同效益)。除传统的开发人员的代码实现外,越来越多系统开始使用规则系统来组织。  对于应用规则引擎网络上著名的有两篇文章:《Java规则引擎与其API应用详解》和《企业平台中的业务规则引擎》 此外,JBoss也基于Drools推出了JBPM。Oracle也推出了自己的规则产品。   不过在应用规则引擎前,需要了解四个问题: 第一个问题是:什么算是业务规则?我以为《Business Rules Applied》一书对Business Rul ...
        上次发了一文《软件企业的绩效管理和内部消耗》讨论很多,"置身珠海,学习与奋斗"@cnBlogs让我认识其实我说了那么多都只是绩效的保健性,对于如何提高绩效本身没有更大的帮助。        随后在翻阅前几期的《IT经理世界》(2006年9期)看到Google公司的一个管理办法--小团队的工作方式:聪明的人大多比较爱面子,不想被人看不起,所以一个聪明的人或许会再庞大的组织中很快的找到“混”下去的方法,但是在一个3-5人的小团队中,却必需全力以赴才能被大家认可,并且团队的成员彼此很了解,相互打分也不会太离谱。        Google的办法在老美不错,简单有效, ...
引子:今天上csdn看一则新闻是关于微软Vista的,地址:http://news.csdn.net/n/20060616/91704.html。原文载如下:微软经理曝Vista延迟内幕 原定日期不实际   6月16日消息,据外电报道,微软程序经理Philip Su本周四一篇博客中称,新一代操作系统Windows Vista之所以一再延迟,主要是因为两方面原因:一是系统代码过于复杂,二是微软的企业文化所致。   据Techweb报道,Philip Su已经在Windows部门任职五年,他在博客中写道,Vista系统代码本来就很复杂,而因为企业文化的原因,公司所制定的Vista上市日期根本不切合实 ...
<<Domain Driven Design>> 和<< Patterns of Enterprise Application Architecture >>,令Domain 这个词很火,也引起了广泛争论。我这里也乱谈一把。什么是领域模型(Domain Model )   我以为Domain分两个含义:Domain Object和Domain Service。那么什么样的系统是面向Domain的系统,一个Domain Object和普通的符合OO原则的对象有什么区别;一个Domain Service和普通的Facade或者Manager对象有什么区 ...
(下面是发在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,Exception ...
在公司工作久了,总会发现工作上有些困境。1. 软件开发讲的是持续集成和改进,我的理解是:对于某个功能一开始按最方便最适应需求的方式做,不一定最好。在项目发展和开发过程中,但有更好的方式和方法时,就开始重构。2. 公司目前的流程是RUP的,本来RUP也是强调迭代的,不过当项目一直在面临新功能(需求)开发的压力,以及人手不够时(开发5个,测试3个),对于旧系统的重构和测试就直接面临“巨大”的成本问题,往往就搁置,即无限期推迟了。而这样的结果是RUP名存实亡,实际上是一个瀑布式的开发。对于公司来说,项目面临的巨大风险,一旦需求变更,工作所需的人天将大大增加,项目变的不可控。对于个人,代码没有及时重构, ...
在系统开发过程种使用单元测试,会带来很多的的好处,最明显为: When you become convinced of the value of comprehensive unit testing, you’ll find that it begins to influence how you write code, and the frameworks you choose to use。 应用单元测试,首先要解决的是单元测试的关注点。 测试的关注点在于测试逻辑,只要有逻辑就要写测试代码。测试的手段就是验证所有被测试方法的所有产出物,包括: 1. 测试方法的返回值 2. 测试方法的执 ...
<o:p>(从csdn的blog转来) </o:p> Java 程序的工作机制: Java 对象都以单独的 class 文件存在, java 虚拟机将其载入并执行其虚拟机指令。 <o:p> </o:p> Java 虚拟机查找这些 java 对象: java 虚拟机根据 class path 来查找 ...
Global site tag (gtag.js) - Google Analytics