汽车软件架构学习笔记:理解系统架构中的系统思维
Posted frank909
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汽车软件架构学习笔记:理解系统架构中的系统思维相关的知识,希望对你有一定的参考价值。
本文的目的是阐述应对系统架构相关工作当中的系统思维。
1. 什么是系统?什么不是系统?
先上定义。
系统是由一组实体和这些实体之间的关系所构成的集合,其功能要大于这些实体各自的功能之和。 《系统架构》
系统中包含很多实体,实体之间有相互的关系,因为有相互关系,所以会产生一些功能。
一块板砖不是系统,但一堵墙可以看成是系统。板砖是墙中的实体,混凝土提供实体中的粘合关系,墙的功能是抗风、防贼等。
宏观层面,一个人不是系统,但一个公司却算一个系统,人是公司员工是实体,员工之间的工作协同机制就是相互关系,一个公司的功能是为社会创造价值。
一张骨牌不是系统,但多张骨牌形成多米诺骨牌后却成为了一个系统,提供的功能是给人解压。
2. 系统架构和系统的关系。
系统架构是什么?
对系统中的实体及实体之间的关系所进行的抽象描述。
很多人认为系统架构就是用 visio 画一些框图。
对,也不对。
只要能描述好一个系统,架构用文字描述也行,不一定非要画图。
很多人说别人的系统没有架构,其实按照这种定义,任何一种系统都有架构,只是不是你想描述的那样而已。
举个例子。
《红楼梦》中的社会是一个系统,《红楼梦》小说本身就是系统架构,那红学就是系统架构的系统架构。
3. 涌现原则(Principle of Emergence)
整体大于其各部分之和。 —— 亚里士多德
讨论一个系统,其实更多讨论是它的涌现表现。
如何理解涌现呢?
通俗来讲就是 1 + 1 > 2。
一只蚂蚁没有智慧,但成千上万的蚂蚁形成的蚁群则涌现出叹为观止的智慧。
不同的实体组成一个系统时,实体之间有相互的交互,这使得功能、行为、性能或其他内存属性涌现出来。
我们分析系统时就需求特别注意思考这个系统涌现出来的预期功能和非预期功能及故障。
所以,我们需要预测涌现,一般有 3 种方式:
- 利用过去经验预测未来;
- 做试验;
- 通过建模。
其实,我们做软件开发,这 3 种方式都有接触到。
开发新产品时,第 1 条就很必要。
但为了验证第 1 条,我们会主动做很多软件测试和系统验证。
另外,基于模型开发在汽车软件开发中也是主流。
4. 整体性思维和聚焦
谈论系统时需要时常切换视角,这就是整体思维。
需要思考实体与其它实体的关系,系统与父系统、兄弟系统、子系统的关系。
整体思维的目的是为了识别与本系统有非常重要关系的其他实体或者系统,并正确区分各自的系统边界(System Boundary)。
通过整体思维可能识别到许多相关的实体,但资源经常有限,我们需要进行筛选,然后聚焦到最能影响到系统表现的实体上。
5. 系统思维有什么用?
系统思维有助于我们创造并分析某个或者多个系统。
系统具备形式和功能,形式是功能的载体。
比如一座体育馆是一个系统。
系统思维帮助我们
5.1 理解系统
在形式上体育馆是普通的水泥、砖头、钢筋等物理元素组合。
在功能上体育馆可以举行运动赛事,也可以举行演唱会。
5.2 预测系统未来的行为
系统思维可以假设,发生火灾时,体育馆及里面的人们会表现如何?
发生地震时,建筑物本身会如何?
5.3 提供架构决策的知识
我们预测了一些场景下的系统表现,这使得我们要结合预期功能做一个架构的调整。比如,为了抗地震,我们就必须使用某些建筑材料,按照某些施工规范建造。要防止火灾,我们就必须合理设置紧急出口,及报警机制。
5.4 用各类实体来合成整个系统
对于系统架构师而言,系统思维最终的目的就是为了支撑后续的架构设计。
以上是关于汽车软件架构学习笔记:理解系统架构中的系统思维的主要内容,如果未能解决你的问题,请参考以下文章