`
neora
  • 浏览: 183936 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
文章分类
社区版块
存档分类
最新评论

Jdon文章《实战DDD(Domain-Driven Design领域驱动设计)》的跟帖

阅读更多
回复这个帖子前,先扯一点儿其它,谈谈“软件的算法和方法”。

“软件的算法和方法”这个标题很大,有不懂装懂、故意卖弄之嫌。但我要表述的内容很浅显,只是借用了“XX法”这样高深的名词来表达在软件开发过程中,我们所关注的两个明显区分的领域。

算法
记得我在93年学习软件开发的时候主要关注的应该是算法。比如为了实现长方体的旋转,如何用最快的方式实现矩阵变换。这就是算法。教科书里通常都会精解例 举若干种排序的代码。这也是算法。同样,采用不同的方式去遍历一个二叉树或“图”也是算法的范畴。那个时候的软件书籍,除了语言类的,绝大多数是这类的。
但 是,跟我同龄段的软件从业者z们大都逐渐发现了一个事实:中国软件产业的发展的主流走向了管理软件和业务软件的方向。为早年写下WPS、CCDOS、 CCED的精英们立下汗马功劳的精妙绝伦算法研究已经很难派上大的用场。只要你会用VB/PB/Delphi,通过Drag控件和凌乱的逻辑代码就可以实 现一套完整的OA、管理信息系统、图书馆管理软件或者财务软件。这其实是中国软件产业的一个悲哀。
我们的专家们说,“中国软件业的前途是管理软件而不是系统软件”。于是我们从流,于是今天我们热衷于讨论的是软件设计的“方法”,“算法”的问题可以通过调用别人的lib去解决。
没错,牛顿也是站在别人的肩膀上的。可是我们同样站在上面望去,看不到我们民族的肩膀。跑题了。转回来。
在算法研究舞台上的缺位,让我们把所有的精力都倾注在了“方法”的研究和讨论上。特别最近3年,由Java开发本身所引出的各种方法层出不穷,引得我们无限追捧。

方法
软件开发/设计方法是一个这个行业最不可缺少的基础。软件工程组织、软件设计模式、软件框架、编程规范、测试驱动开发包括MDD/DDD都应该算是广义上的软件设计方法的范畴。而各个概念专注的领域不同,解决问题的重点也同:
软件工程的各种方法的目标是:组织和管理人员、时间、目标、过程、质量甚至预算。
软件设计模式的目标是:组织和管理程序的跳转逻辑。btw,“跳转逻辑”这个名词不够OO,是过程编程的概念。但任何OO语言走到下面到了编译原理和运算原理一层,就转化成“过程”了。
编程规范的目标是:组织和管理代码、注释、文档和数据资源。
测试驱动开发(TDD)的目标是:组织和管理编码和测试的过程,并最终对软件质量进行控制和管理。
MDD/DDD的目标则是:组织和管理复杂软件实现结构上的分析和设计,以求得一套清晰的指导思想来指引软件设计者在面对大型软件需求的时候,能够进入“万变不离其中”的“自由王国”。

DDD
做为《实战DDD(Domain-Driven Design领域驱动设计)》的跟帖,终于罗嗦到DDD。
我感觉到,无论采用何种方法翻译DDD中的Domain都难以找到一个最合理的汉语词汇来表达DDD的思想。即便现在普遍采用的“领域”一词,也令人感到 晦涩。其实我们应该摒弃“望文生意”的方式。也许直接称其为DDD,把“DDD”当成跟Java一样的代号,然后再去理解其中所表达的思想,这样会对学习 更有帮助一些。
另外一个重要的认识是:尽管DDD现在很流行,但从前没有DDD(词)的时候,一样可以开发出优秀的软件。在DDD这个词出现之前,许多类似的概念都在软 件设计中大量采用了。也许你也用过,但从来没有提炼成一种“方法学”上的理论。Eric E.提炼了这个概念。这个概念必然来自于他的实践。

所谓“领域驱动设计”看样子是目前最难直接理解的概念之一(而且直译过来后跟汉语的语法出入很大)。但如果你能把DDD看成若干中“理论”中的一种,那这个概念就很好接受了。

首先,只要是“理论”,就会有很多流派。每个流派的理论都必然有其可取之处。DDD看似要成为主要流派之一的,那么初学者就可以暂时无条件的去接受它。这也是“站在别人肩膀”上的做法。——不要反驳“无条件”这个词,你不是也无条件接受了牛顿三定律么?
第二,只要是“理论”,初学者就大可不必去深究“为什么是这样”。没有4年5年6年的开发经验,就不要去质疑。否则你的质疑只能拿去印证“无知者无畏”这句话的真理性,或者直接陷入类似《一个“Spring轮子”引发的血案》的血案的血案的血案中去。“理解”本身需要一个过程。经历丰满的程序员在实践过DDD后会感慨:“从前我为什么不这样做!”。软件开发初学者没有从前,必然也无法体会出先苦后甜的感受。
第三,只要是“理论”,总是但方面的。总有站得住脚和站不住脚的地方。“算法”是有其唯一性的,是可以被证明其正确性和极限性(“顶点”)的。而“方法” 则不具备唯一性的特质。歪用DDD中的一个词来阐释:某种方法在某些领域(Domain)中是优秀的,而在其它的(Domain)则可能并不合适。因此, DDD也不是放之四海而皆准的真理。


分享到:
评论

相关推荐

    领域驱动2017大会

    Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法,本站Jdon.com是国内公开最早讨论DDD网站之一,可订阅DDD专题。初学者学习DDD可从研究本站...

    DDD jDon源码

    DDD(领域驱动设计)是一种先进的软件开发方法,强调以业务领域为中心进行设计,通过将复杂的业务逻辑转化为清晰的模型来驱动系统的构建。jDon框架是基于DDD理念实现的一个Java框架,由jivejdon-master项目提供源码...

    JiveJdon v4.6.1.zip

    JiveJdon核心领域模型图如下,建模过程来自 实战DDD(Evans DDD:Domain-Driven Design领域驱动设计) : 新架构 JiveJdon 业务层采取了组件动态设计的面向构件架构,能够简单方便拓展新功能,不再发生牵一动百的错误...

    jivejdon源码

    JiveJdon 3是按照2004年国外最新设计思想"领域驱动设计"(Domain-Driven Design 简称DDD)、基于JdonFramework自主开发的论坛系统,基于原有 Jive 论坛的思路

    基于java+dom的项目源码

    JF诞生于2004年底,作为中国第一个开源框架,创新地综合了当时两项新技术思想:领域建模(简称DDD: Domain-Driven Design)和Ioc(DI:Dependency Injection)及AOP构件管理;不仅如此,而且克服了同时期这两类框架的...

    jdon-mvn-repo:jdon-mvn-repo

    【jdon-mvn-repo:jdon-mvn-repo】是一个与Java开发相关的资源库,主要服务于Maven构建系统。Maven是一个强大的项目管理和依赖管理工具,它通过使用XML格式的配置文件来管理项目的构建、报告和文档。在这个资源库中...

    JdonFramework5.3

    该框架的核心设计理念是面向组件编程,它融合了领域驱动设计(Domain-Driven Design,DDD)与事件驱动架构(Event-Driven Architecture,EDA),为开发者带来了一种全新的编程范式。 1. 面向组件编程:...

    jdon框架的使用-中文pdf清晰版

    ### Jdon框架使用详解 #### 一、Jdon框架概述 **Jdon框架**是一款针对J2EE(Java 2 Platform, Enterprise Edition)环境下的快速开发框架,旨在提高开发效率和降低开发难度。该框架由板桥里人(banq)创建并维护,自...

    jdonframework.ppt

    DDD(Domain-Driven Design)的核心是面向领域模型编程,强调以Model为线索来组织代码,使系统更有序。每个Model都应该有主键或唯一标识,并由此衍生出界面模型和持久实体。在Jdon Framework中,通过配置文件可以...

    JdonFramework应用案例之一: JdonFrameworkTest CQRS+ES

    JdonFramework,由知名软件架构师钟道宏先生创立,是一款基于Domain-Driven Design(领域驱动设计,简称DDD)理念的轻量级Java框架。它以其简单易用、高性能和灵活性著称,尤其适用于构建复杂的企业级应用程序。在本...

    J2EE设计模式-PPT(JDON)

    【MDA(Model-Driven Architecture)】是模型驱动架构,它提倡将业务逻辑和表示分离,Model在其中扮演核心角色。 【MVC(Model-View-Controller)模式】是J2EE Web层的主要实现方式,它分离了数据、用户界面和业务...

    开源力量公开课第19期-Java事件编程-彭晨阳

    #### 五、领域驱动设计(DDD) ##### 5.1 DDD概述 - **Eric Evans**:2004年,Eric Evans出版了《领域驱动设计》一书,提出了领域驱动设计的思想,这是一种针对复杂软件系统的建模方法。 - **领域模型**:强调关注...

    Jdon论坛

    本Jive(Jdon版)可在Jbuilder 7/8直接打开,请失效Jbuilder的Jsp编译功能。 建议你用Jbuilder7打开后,编辑相应设置(注意,必须是JDK1.4以上版本) 本软件在linux+jdk1.4+tomcat 4以上环境运行正常,由于采取ISO...

    JdonFramework开源框架 v5.1 Build20071025_jdonframework(毕设 + 课设).zip

    1. **事件驱动模型**:Jdon采用了基于发布/订阅的事件驱动模型,使得组件间的通信更加灵活,降低了组件间的耦合度。这种模式允许应用程序的各个部分独立工作,仅在需要时通过事件进行交互。 2. **依赖注入**:为了...

    jdon完整源码及设计文档

    《Jdon完整源码及设计文档解析》 Jdon是一个基于Java语言的开源项目,它以其独特的设计思想和丰富的功能特性,在开源社区中备受关注。本文将深入探讨Jdon项目的源码结构、设计理念以及相关的设计文档,帮助读者理解...

    jdon_struts_hibernate_samples,jdon例子

    1. **Jdon框架**:Jdon是一个面向对象和事件驱动的框架,它的设计哲学是“简单、自然、面向对象”。它提供了一种用于构建复杂分布式系统的方法,通过发布和订阅模式实现组件间的通信。 2. **Struts框架**:Struts是...

    Java 中的设计模式 - jdon

    《Java中的设计模式 - jdon》是一本深入探讨Java编程中设计模式的电子书,它主要聚焦于如何在实际开发中应用和理解这些经典的设计原则和模式。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决常见...

    四色原型图进行业务建模的思考

    这种方法在软件开发过程中起到了重要的作用,特别是在领域驱动设计(Domain-Driven Design, DDD)和现代Java技术如Jive Jdon 3.0的背景下尤为突出。 四色原型图提供了一种结构化的方式来理解和分析业务领域,通过将...

    jive-jdon-2.5

    Jive是一个开放源码的Java论坛软件,它允许在网站上进行线程化的讨论。它提供了性能优秀的用户定义的JSP文件(用Jive的外壳)来完全改变论坛的外观、形象和功能。并提供了一个可植入的API,这些API提供诸如及时翻译、...

Global site tag (gtag.js) - Google Analytics