zoukankan      html  css  js  c++  java
  • 软件架构阅读笔记02

    系统和系统思维

    首先,系统是什么?按本书的定义,系统是由一组实体和这些实体之间的关系所构成的集合,而其功能要大于这些实体各自的功能之和。后半句很重要,如果一个系统的功能,等于其部件的功能之和,那么这个系统就没有存在的意义。因为我们单独使用那些部件,也可以得到需要的功能。只有当这些部件组合时,能够涌现出新的功能,那才算是组成了一个系统。

    要理解系统架构,首先要有系统思维。所谓系统思维,就是把某个疑问、某种状况或某个难题明确地视为一个系统,也即是视为一组相互关联的实体,而不是孤立的一个对象。

    系统思维要有四个步骤是:

    1. 确定系统整体的形式与功能。

    2. 确定系统中包含的组件,组件的形式与功能。

    3. 确定系统中各个组件之间的关系,并且定这些关系的形式及其功能。

    4. 根据组件的功能及功能性的互动来确定系统的涌现属性。

    系统思维的初级目标是理解系统是什么,更进一层的目标是为了预测系统在发生某些变化之后的情况。而最高级的目标,则是用部件来合成一个系统,这个过程也就是所谓的系统架构。

    系统架构的分析

    形式与功能

    形式是系统的物理体现或信息体现,它有助于功能的执行。形式可以分为形式对象,以及这些形式对象之间具有的形式关系(也就是结构)。例如,汽车作为一个系统,它的形式对象就是汽车部件,而软件系统的形式对象则是模块、过程、代码和指令,而这些形式对象则通过不同的结构组装成一个系统。

    系统的另一个属性就是功能。功能由过程和操作对象组成,过程在操作对象上执行之后,会改变操作对象的状态。当系统对外展现的功能对系统的外部的对象进行操作时,系统的价值就体现出来了。例如,离心泵中的电动机可以带动叶轮旋转,这是它内部的一个功能。而离心泵作为一个系统,它可以给外部对象(例如某种液体)加压,从而移动液体。这也就是它的功能和价值所在。

    形式和功能的区别就是,形式决定了系统是什么,而功能决定了系统能做什么。架构其实就是形式与功能之间的映射。形式结构对功能起着承载作用,或者能够促进相关的性能。在复杂系统里,形式与功能的映射会非常复杂,包含很多不确定的问题,或者非理想的因素。因此架构师需要使用抽象等方法来简化架构,以便能够更好的理解和交流架构。

    另外,还有一种特殊的功能,叫做解决方案无关的功能。例如,我要从上海出差去北京,那么“将旅客从上海快速、安全的运送到北京”就是解决方案无关的功能,而“使用高铁/飞机将旅客从上海运送到北京”则不是。好的系统规范书,应该是使用与特定解决方案无关的功能来描述的。如果系统规范书将人引导向某种具体的解决方案,可能会令架构师的视野变窄,从而不去探索更多的潜在选项。

  • 相关阅读:
    将博客搬至CSDN
    mplayer的执行过程分析(本地、网络)
    ES6新特性概览
    ES6 块级作用域
    echarts各种字体颜色的修改
    js时间格式转换为几天前几小时几分钟等
    正则验证非法字符
    JS阻止事件冒泡函数
    cookie设置,读取,删除
    C/C++基础(三)
  • 原文地址:https://www.cnblogs.com/y862621115/p/11059109.html
Copyright © 2011-2022 走看看