软件架构的本质:
控制混乱:使用结构和秩序控制混乱
简化复杂:使用分解、分离、分类简化复杂。
监督生长:监督软件的生长方式,防止畸形发展;
参考文献:
任何系统,自然情况下,都是从有序到无序,这是有科学依据的, 按照热力学第二定律,自然界的一切自发过程都有方向性,一个孤立系统会由有序变为无序,即它的熵会不断增加,最终寂灭。但生物可以通过和外界交互,主动进行新陈代谢,制造 “负熵” 来保证自身有序,继续生存。
同样,一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。
架构的本质就是对系统进行有序化重构,不断减少系统的 “熵”,使系统不断进化。
那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。
架构师只做分和合的事情,但综合能力要求很高,要求内外兼修。
https://kb.cnblogs.com/page/540632/
什么是软件架构
如果期望有一个权威统一的标准定义,那答案是没有,目前存在多种软件架构的定义,可以说百花齐放,百家争鸣。其中 IEEE1471-2000 的定义是这样的:系统的架构是系统组件的基本组织形式,它们之间的关系以及和环境之间的关系,以及指导其设计和演化的原则。该定义中的系统组件可以理解为架构元素,根据涉及到的系统范围和层次,架构元素可以是子系统、模块、类等等。从架构设计的动态角度出发,我们可以这样来定义软件架构:通过一系列架构决策,将系统分解为一些架构元素,并定义这些元素之间的接口和交互关系、集成机制。架构决策就是在架构设计过程中做出的一系列全局的决定和权衡取舍,例如将系统拆分成几个子系统、子系统的职责是什么、子系统之间的接口是什么、采用什么通讯方式和集成机制、采用的开发语言和技术框架等。
https://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/index.html