聂同学

一个程序员和架构师的实践与思考

“驱动”与“面向”

领域驱动、测试驱动、风险驱动;面向对象、面向组件、面向服务。这些说法我们都已经很熟悉了,大家研究的重点往往是其中的那个名词。名词是关键没错,但那已经说得够多了。今天来聊聊其中的动词,“驱动”与“面向”。

“驱动”,作用于问题空间,讲的是拆分问题的单位。领域驱动,是以领域结构为依据拆分问题;测试驱动,就是将问题拆分为一个个测试案例,等等。拆分后的小问题,就是应对问题的单位、解决问题、验证解答的单位,这些后续的活动都挂载在这个小问题上,同时这个小问题也是将任务、资源、进度、协同等等这些过程要点牵引起来的那个由头,就像火车头“驱动”着一串车厢一样。1

“面向”,作用于解空间,讲的是构建答案的单位。面向对象,就是以对象作为答案的搭建单元;面向服务,就是以服务作为构建答案的搭建单元。这种单位,往往把整个构建工作分成两部分,先要建造这些单位,然后组合这些单位。就像面向砖瓦的建筑,就分成了制造砖瓦和砌砖。当然过程中可能不只有一种单位,在不同的阶段、不同的层次上有不同的单位,比如服务也是由对象、组件这些单位构成的。

在“问题空间与解空间”2这个一般思维框架中,“驱动”与“面向”两个动词,基本上涉及了从问题分析解决的整个过程。

那什么样的东西适于驱动,什么样的东西适于面向呢?正在做一些思考总结,此处先挖坑待填。


  1. 类似的观点在之前的博文中已有谈及,但没有明确谈为什么用“驱动”这个词。——《架构设计过程的驱动技术》《问题空间与解空间》

  2. 《问题空间与解空间》

思维, 方法论, 架构, 过程

分享 -