我选择阅读的第二本软件架构著作是电子版《系统架构》,通过对本书的一个概要阅读,我总结了以下若干条阅读笔记和心得体会:
1、首先是系统与系统思维
按本书的定义,系统是由一组实体和这些实体之间的关系所构成的集合,而其功能要大于这些实体各自的功能之和。后半句很重要,如果一个系统的功能,等于其部件的功能之和,那么这个系统就没有存在的意义。因为我们单独使用那些部件,也可以得到需要的功能。只有当这些部件组合时,能够涌现出新的功能,那才算是组成了一个系统
要理解系统架构,首先要有系统思维。所谓系统思维,就是把某个疑问、某种状况或某个难题明确地视为一个系统,也即是视为一组相互关联的实体,而不是孤立的一个对象。
系统思维要有四个步骤是:1.确定系统整体的形式与功能;2.确定系统中包含的组件,组件的形式与功能;3.确定系统中各个组件之间的关系,并且定这些关系的形式及其功能;4.根据组件的功能及功能性的互动来确定系统的涌现属性。
系统思维的初级目标是理解系统是什么,更进一层的目标是为了预测系统在发生某些变化之后的情况。而最高级的目标,则是用部件来合成一个系统,这个过程也就是所谓的系统架构。
2、系统架构的分析
1.形式与功能:
形式是系统的物理体现或信息体现,它有助于功能的执行。形式可以分为形式对象,以及这些形式对象之间具有的形式关系(也就是结构)。例如,汽车作为一个系统,它的形式对象就是汽车部件,而软件系统的形式对象则是模块、过程、代码和指令,而这些形式对象则通过不同的结构组装成一个系统。
系统的另一个属性就是功能。功能由过程和操作对象组成,过程在操作对象上执行之后,会改变操作对象的状态。当系统对外展现的功能对系统的外部的对象进行操作时,系统的价值就体现出来了。例如,离心泵中的电动机可以带动叶轮旋转,这是它内部的一个功能。而离心泵作为一个系统,它可以给外部对象(例如某种液体)加压,从而移动液体。这也就是它的功能和价值所在。
形式和功能的区别就是,形式决定了系统是什么,而功能决定了系统能做什么。架构其实就是形式与功能之间的映射。形式结构对功能起着承载作用,或者能够促进相关的性能。在复杂系统里,形式与功能的映射会非常复杂,包含很多不确定的问题,或者非理想的因素。因此架构师需要使用抽象等方法来简化架构,以便能够更好的理解和交流架构。
2.从概念到架构
架构就是功能与形式之间的映射,但对于复杂系统,这种映射往往非常复杂。架构师常常需要创造一些概念,来简单明了的解释功能是如何映射到形式的。对于一个解决方案无关的功能,往往能提出多个不同的概念。架构师需要创造性地提出这些概念,对它们进行整理,并选定其中一个概念,将其转化为一套架构。
复杂系统的架构往往是分层的,同时我们还需要对架构进行模块化。需要注意的是,如果要对某一层的架构进行模块化,我们必须将其分解到下一层。因为只有检查各个实体在更下一层的关系,才能更好的对当前层级进行模块化。