BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Bob大叔曰:架构在于目的而非框架

| 作者 Jan Stenberg 关注 33 他的粉丝 ,译者 马国耀 关注 1 他的粉丝 发布于 2013年7月8日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

“架构的核心是目的,而我们却把它变成了框架和细节”,Robert C. Martin(又名“Bob大叔”)在今年伦敦举办的DDD Exchange Day大会

Robert引用了Growing Object-Oriented Software Guided by Tests一书中描述的架构模型(类似于Hexagonal架构),该模型通过三大块描述架构,这三块之间形成单方向的依赖关系——更易变的部分依赖于更稳定的部分:

  • 域模型,其中包含业务规则,它是最稳定且最重要的业务部分,不依赖于任何其他部分。
  • 应用服务,它实现了系统的用例,它使用并依赖于域模型。
  • 外部细节、数据库、用户接口、网络等,它们与业务模型的关系更少,是最易变的部分,依赖于其他两块。

Robert指出,这一模型无法描述他所谓的关键内容:架构在于目的,即应用程序到底做什么。他认为,我们太过关注细节和框架,以致于使它们变成了系统的中心。

为解决这一短板,Robert带我们回顾了Ivar Jacobson于1992年编著的一本书,"Object-Oriented Software Engineering, A Use Case Driven Approach"。Ivar在此书中定义了一个应用架构,它基于许多小型用例,而用例不含细节。 Ivar引入了三类对象,它们能自然地适应架构模型。Rovert对它们的描述如下:

  • 交互者(Interactor)理解用例并包含针对特定应用的业务规则。
  • 交互者使用带有业务规则的实体(Entity)。
  • 边界(Boundary)对象在外部世界与交互者之间转移数据。

Robert认为该模型的一个重要的优势是,它是一个可测试的模型,无需依赖于任何基础设施就可以对它进行测试,只需通过边界对象发送和接收对应的数据结构即可。

接着,Robert转而介绍他的Clean架构模型,它是前述架构的一个变体。以上三个模型有一个共同核心,即它们都遵循稳定依赖原则,不对变化或易于变化的事物形成依赖。为实现了这一原则,上述模型让外部易变的部分依赖于更加稳定的部分,如域模型,而非形成相反的依赖关系。这样还可使实现变得更易于变化;多变的部分依赖于稳定的部分,Robert说:

好架构就要能轻松地改变那些易变的决定。

Robert还引用了Jim Coplien及其DCI架构,他认为这也相似的架构。

针对Robert近些年提出的架构思想,人们提出了一些批评意见,Robert也作出了回应


查看英文原文:Uncle Bob: Architecture is About Intent, not Frameworks

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

我刚发的评论怎么没了? by wang wei

我刚发的评论怎么没了?

立意正确,论述太少 by wang wei

Bob和我的MSDT方法论很类似啊,不过我强调motivation,他强调intent,在法律上,intent是必须的,但是软件开发领域,我自信还是motivation更准确。

Re: 立意正确,论述太少 by wang wei

我论述msdt方法论的地址:edge.iteye.com/blog/685859

是不是因为这个,被编辑删了?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT