軟件架構的本質:html
控制混亂:使用結構和秩序控制混亂架構
簡化複雜:使用分解、分離、分類簡化複雜。框架
監督生長:監督軟件的生長方式,防止畸形發展;spa
參考文獻: 架構設計
任何系統,天然狀況下,都是從有序到無序,這是有科學依據的, 按照熱力學第二定律,天然界的一切自發過程都有方向性,一個孤立系統會由有序變爲無序,即它的熵會不斷增長,最終寂滅。但生物能夠經過和外界交互,主動進行新陳代謝,製造 「負熵」 來保證自身有序,繼續生存。設計
一樣,一個軟件系統隨着功能愈來愈多,調用量急劇增加,整個系統逐漸碎片化,愈來愈無序,最終沒法維護和擴展,因此係統在一段時間的野蠻生長後,也須要及時干預,避免愈來愈無序。htm
架構的本質就是對系統進行有序化重構,不斷減小系統的 「熵」,使系統不斷進化。blog
那架構是如何實現無序到有序的呢? 基本的手段就是分和合,先把系統打散,而後從新組合。接口
架構師只作分和合的事情,但綜合能力要求很高,要求內外兼修。開發
https://kb.cnblogs.com/page/540632/
什麼是軟件架構
若是指望有一個權威統一的標準定義,那答案是沒有,目前存在多種軟件架構的定義,能夠說百花齊放,百家爭鳴。其中 IEEE1471-2000 的定義是這樣的:系統的架構是系統組件的基本組織形式,它們之間的關係以及和環境之間的關係,以及指導其設計和演化的原則。該定義中的系統組件能夠理解爲架構元素,根據涉及到的系統範圍和層次,架構元素能夠是子系統、模塊、類等等。從架構設計的動態角度出發,咱們能夠這樣來定義軟件架構:經過一系列架構決策,將系統分解爲一些架構元素,並定義這些元素之間的接口和交互關係、集成機制。架構決策就是在架構設計過程當中作出的一系列全局的決定和權衡取捨,例如將系統拆分紅幾個子系統、子系統的職責是什麼、子系統之間的接口是什麼、採用什麼通信方式和集成機制、採用的開發語言和技術框架等。
https://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/index.html