读书笔记(一)《恰如其分的软件架构》
《恰如其分的软件架构》这本书和其他英文翻译书一样,并没有太多手把手教你如何设计一个软件架构。
但是!
对于一个工作多年的嵌入式软件工程师,书中很多概念还是给人留下了深刻的印象!有一种——哦!我在做XX项目时,感觉就是这样!! ——哦!这不是就是我当时写的那个代码的样子吗!!
JUST ENOUGH!!!
我看的是翻译版的书,中文把名字翻译成了《恰如其分的软件架构》,看完前面章节后,总感觉这个“恰如其分”有点文绉绉的,没有直达人的心灵,果然一查原有英文 JUST ENOUGH!!,对就是这个词。一般情况下软件架构都是在软件开始代码编写之前开始设计的,这个时候就有个问题,架构设计要进行到什么程序,是不是把每一种可能情况都想到,设计覆盖每个细节的架构,然后编码就严格按照这个架构设计进行,才可以?还是说架构设计做一个大概的方向,然后马上开始进行代码开发??这本书告诉我们,都不是!! 软件架构设计应该是在这两个极端之间。 就是在代码开始编写前我们需要做架构设计,但是没有必要把所以细节完全覆盖,当然这也不现实。那架构设计做到什么程度呢?——够用就好!!书中给出另一个风险驱动的模型,认为要根据风险来确定架构设计需要进行到什么程度,的确这确实是一个办法。 不过我回顾了一下,自己和团队在做项目和产品过程中是如何处理这个问题的(虽然当时我们自己没有意识到,但我们确实是做了本书中所讲的策略),大多数时候我们会根据需求在脑海中形成一个相对模糊解决方案,架构设计负责的就是把这个解决方案具体化,直到图纸上和脑海中形成一个相对清晰的解决方案,然后会发现哪些地方是难点,哪些地方有比较大的风险,在写代码的时候需要多加注意。我们不可能把对应的风险全部在写代码之前确定好如何解决,尤其对于嵌入式软件工程师,因为有些地方我们需要做一些”实验“,看一下我预想的是不是对的。但是这样的架构设计,大多数情况下,足以支撑项目走下去了,而不是喋喋不休的不断的进行架构设计的迭代——软件架构够用就好!!JUST ENOUGH!!
视图
这个概念并不新鲜,但是本书强调的几个注意事项还是值得铭记在心的。
首先完整详细的架构是有的,但是我们不能一下子全部看到,有点类似于工程制图中,投影的原理,把一个三维图形投影到二位平面中。在软件架构设计中,我们可以做出各种视图,但是每个视图只回答一个关切问题,一个视图不能面面俱到。
静态视图和运行视图
对,就是这个,非常关键!!大多数时候,我们写的代码是和静态视图对应的,编程中对于高内聚低耦合的模块是推崇的,这样便于维护,扩展,对架构设计大多数时候也是遵循这个规定的,诚然这模块式的编程对于项目和程序员本身来讲都是有好处的。但是这里有一个问题——代码运行的时候,是动态的,程序代码可能会来回的跳转执行,把静态视图模型下写的代码于运行的视图联系起来就成了程序员面临的挑战。即使使用面向流程的C语言,仍然面临这个问题。准确,快速的在脑海中构建一个代码的运行视图,起码在嵌入式领域是检测一个程序能力水平的试金石。
最后,我认为《恰如其分的软件架构》这本书,是一本提高“内功”的书,看完这本书之后,并没有让自己马上掌握了一个快速高端的工具或者方法,让自己短时间迈入架构师这个高大上的行列,但是对于一个程序开发人员,读过这本书后会让自己在后续的程序开发生涯中有所收获,行稳致远(这个词用得有点高端
)