當前位置:吉日网官网 - 傳統節日 - 軟件架構的復雜性和湧現

軟件架構的復雜性和湧現

計算機科學參與了復雜性學科的建立,將復雜性擴展到了計算機科學的內涵。個人認為,復雜性在軟件架構領域引起關註有兩個原因。壹個是單壹架構的承諾無效;其次,軟件的使用者,也就是用戶,開始深度參與軟件架構設計。

隨著單壹架構的衰落和分布式架構的繁榮,微服務運動如火如荼,所以關註復雜性:目前幾乎所有的微服務文章都會指出微服務架構是為了迎接軟件架構復雜性的挑戰。

隨著互聯網的發展,特別是互聯網+和移動互聯網的發展,行業和用戶開始深刻影響軟件架構和設計:軟件架構設計不再是架構師獨立思考的產物,而是在與用戶的交互中完成。

復雜系統壹般具有以下屬性:具有大量組件的系統,組件交互的重要性大於組件本身;組件構成自相似的多層次結構,高層向下因果關系,低層向上因果關系,組件間多重因果關系;系統是動態的、不間斷的、突現的、不可預測的、不可約的和非線性的;系統具有適應性,無中心控制,自組織,正反饋或報酬遞增。

《思考復雜性》中給出的定義是,復雜性科學是物理學、數學和計算機科學的交叉領域,關註的是許多組件相互作用的系統。如果想更廣義地理解復雜性與進化、人工智能、計算、遺傳學、信息處理等領域的關系,可以參考梅勒妮·米切爾的《復雜性》壹書。

在軟件體系結構領域研究復雜性,並不是要推翻還原論(如模塊化),而是討論還原論在軟件行業廣泛應用後,無法解決軟件工程的組織效率問題,如人月神話帶來的挑戰。復雜性強調組件或服務之間以及軟件與用戶之間的關系,用整體思維觀察軟件開發的全過程。在企業中,架構的復雜性往往指的是標準的系統架構師——壹群在組織中缺席的人(國內很多架構師剛到這個層次,轉向管理層)。系統架構師需要找到能夠實現1+1 >: 2方案的人,實現整體優化。以航空運輸為例,乘客想要的是盡快到達目的地。直接的解決方法是提高飛機的速度,但不能超過音速,這樣可以避免超過音速帶來的各種問題。從系統架構師的角度來看,這裏要解決的問題不是如何飛得更快,而是如何縮短乘客從家到機場、辦理登機手續、過安檢、登機、飛行、落地後取行李、到達最終目的地的總時間。

復雜性思維的本質是從已知的未知延伸到未知的未知。這裏的復雜不是復雜,是已知的未知,復雜是未知的未知。傳統軟件開發以實體為交付目標,層層分解,整體等於部分之和。要做到這壹點,軟件的所有實體從架構到實現都需要提前學習,只需要摸索實現細節。所以傳統的軟件開發強調需求的明確化,因為需求是可以明確的,不會改變的。客戶和開發者關心的是結果本身,而不是結果的出現。對於互聯網軟件來說,從整體思維來看,需求變化是常態。

湧現是系統在運行過程中所顯示、呈現和湧現的東西。湧現是我們制度建設的目標,是制度的價值,是制度思維的意義。功能是系統第壹層的出現,這裏的功能包括基本功能和新功能。性能是系統第二層的出現,是系統對應的功能。系統的第三層是質量屬性,包括可靠性、可維護性、可操作性、安全性、健壯性等。第三層的出現並不會馬上創造價值,而是通過系統在整個生命周期的運行來體現。我覺得系統還有第四層,就是軟件設計者和開發者不能單獨決定軟件的功能和形式,而是和用戶共同進化。

復雜性在軟件架構領域的應用第壹本書《系統架構:復雜系統的產品設計與開發》。該書給出了壹套具體的系統化思維框架供參考,如下:

系統是實體及其關系的集合,其功能大於各自功能的總和。在軟件開發中,系統不能簡單地與產品直接對應。以微信為例。用戶安裝的產品是微信APP,但微信搭建的系統包括用戶、數據、電商、微信官方賬號、小程序等實體。這些實體的功能遠大於各自功能的總和,其架構不能簡單用APP+Cloud來描述。系統的架構原則是抽象地描述系統中的實體以及實體之間的關系。

  • 上一篇:論秦兵馬俑的雕塑藝術風格
  • 下一篇:鄭州傳統中式建築
  • copyright 2024吉日网官网