技术开发 频道

架构设计非常好的实践之DRY

【IT168 技术文章】

    大多数的开发人员在讲DRY (Don't Repeat Yourself) 的时候大多认为DRY是功能和代码的重复,也就是OAOO (Once And Only Once),其实不尽然。面向对象设计提倡的OAOO,强调的是利用面向对象的继承、组合等特性尽量让一个功能点只存在一个地方,所以OAOO强调的是面向对象设计,以及功能代码方面。而DYR的范围比OAOO要广泛得多。DYR更多的是一种架构设计思想,在软件开发过程中的万事万物均可能重复,大到标准、框架、开发流程;中到组件、接口;小到功能、代码均纯存在自我重复。而DYR提倡的就是在软件开发过程中应消除所有这些自我重复。

    在软件过程中的自我重复,总的来说有五种类型:

    (1) 一件事物,有多种的不同语言和方式来表达,不同的角色采用不同的语言去描述同一事物。在这些角色之间需要协同工作时造成的重复。

    比如,架构设计师用一种语言和方式描述其架构设计,可为PPT、Word文档、Visio、建模工具等。开发人员的工作语言则是程序代码。两种角色描述的是同一事物,只是描述语言不同而已,这样造成架构设计师的架构输出,不能作为开发人员的开发输入,而不能被开发人员重用,导致一定的自我重复。这就像一个人用英文写书,一个人用中文写书,内容类似,那么中文作者要么重新整理内容并书写书籍,要么就翻译英文书籍,不管哪种,造成重复工作劳动是在所难免。

    对于此类的自我重复,随着模型驱动的成熟和广泛应用将逐渐减少。模型驱动架构中业务建模、架构建模和程序编码等之间,通过Unified Modeling Language(UML)、the Meta-Object Facility (MOF)、XML Metadata Interchange (XMI)和自动化代码生成等语言、标准和技术进行互相转换,达到Don't Repeat Yourself。如下图所示:

    传统的开发过程中,需求、分析、设计、开发等各个阶段,可能采用不同的描述语言和方式,互相之间也较难转换,所以他们之间不能无缝的相互转换,造成了重复沟通、理解和建模。

    模型驱动开发,在开发过程的每个阶段基于标准和转换工具,所以每一个阶段的成果,都可以被下一个阶段复用,消除重复。这也是标准的魅力之一吧。

0
相关文章