代码改变世界

《恰如其分的软件架构:风险驱动的设计方法》——读书笔记

2014-09-26 16:48  Loull  阅读(1925)  评论(1编辑  收藏  举报

个人觉得本书概念太多,软件的架构和开发不是概念拼成的,一些经验性的东西用合适的词描述就行。

所谓风险驱动,其实就根据项目情况选择合适的设计力度,避免过度设计。而对于复杂的软件系统,精心设计还是非常重要的,在开发前和开发中都会有设计的问题。

另外,对于一个软件工程师,对一些架构模式需要有些了解,在脑海中构建所谓的“概念模型”,而每个模型都是一定的抽象和受到一些约束。

还介绍了领域模型,设计模型,代码模型,封装和分割,模型元素(组件),模型关系。

架构风格,就是所谓的概念模型。

第二部分值得一看。

 


 

最核心的问题应该是:“对一个特定的系统,应该做多少相应的架构设计工作?

一个答案:“恰如其分的架构”。

Fairbanks认为,决定架构工作是否充分的核心标准是,看它是否能够降低风险。如果设计中的风险很小,就不需要做多少架构工作。如果系统设计有很大的问题,架构就是一个很好的工具。本书真正站在工程的角度,从成本和收益方面来选择技术。尤为可贵的是,它通过关注风险的降低,平衡工程上的收益和进行架构设计的成本,从而获得最好的结果。

很自然,还有很多派生出来的问题需要回答。

  哪些风险是最好通过软件架构来解决的? 

  如何采用架构设计原理来解决一个设计问题?

  哪些架构承诺要写下来以便其他人参考?

  如何确保架构承诺被实现者所遵循?


 0、概述

为了解决软件的复杂度及规模增长带来的问题,解决思路牵强地归纳为三类:分治、知识、抽象

  开发者把问题分割为规模更小且易于处理的若干子问题,

  这样他们就可以运用相似问题的知识来解决某些子问题,

  而且使用抽象有助于他们进行推理和判断。

 

我们在构建系统时,应该选择最符合当前需求的架构,并在该架构的框架下实现功能。

 

概念模型——抽象与约束  

 

本书建议使用风险(risk)来权衡实施架构的度。 


 

一、风险驱动的软件架构

 


 

二、架构建模

 

经典的模型结构:领域模型(domain model)、设计模型(design model)与代码模型(code model)

  领域模型对应于真实世界中的事物,

  设计模型是针对正在构建的软件所做的设计,

  代码模型则对应于源代码。

我们还可以构建一些额外的模型,用于展现特定的细节,并称之为视图(view)。这些视图可以归为不同的视图类型(viewtype)

 

构建封装边界是软件架构的关键技能。组件或模块的用户通常会忽略内部的工作机制,而将精力放在解决其他难题上。对于封装好的组件或模块,可以自由地改变其内部实现,而不会影响到它们的用户。