- 性能之道:分布式系統全棧性能優化
- 于君澤 曹洪偉 李偉山 秦金衛 陳龍泉
- 937字
- 2025-02-21 17:02:48
1.1 軟件架構的時空定義
計算機學科以及軟件工程中的很多概念都是從其他學科借鑒而來的,架構的概念也不例外,借鑒自建筑學中的architecture一詞。IEEE從空間的視角對軟件架構做出了定義:架構是系統的基本結構,這種結構體現在組件內系統之間的關系、系統與環境之間的關系,以及指導系統設計與演化的原則上。
IEEE的這個定義側重于空間的視角,軟件架構表征的是軟件的空間組成結構。軟件存在的空間既包括物理空間,如軟件運行所需的計算機硬件空間、網絡物理空間等,也包括虛擬空間,如軟件執行所需的指令空間和地址空間等。空間是客觀存在的,所以架構也是客觀存在的。不論人們是否關注或有意識地考慮架構,它都存在于系統的具體環境中,而且并不孤立,有著自己明確的目標。IEEE的定義中提及了系統的設計和演化,因此不可避免地融入了時間的因素。在考慮演化時,需要結合軟件的生命周期,否則演化將失去意義。
計算機專家Grady Booch對軟件架構給出了不同的定義:軟件架構代表形成系統的重要設計決策,這些決策涉及軟件的組織、組成系統的結構化元素及其接口的選擇、元素之間協作時特定的行為、結構化元素和行為元素形成更大子系統時所用的組合方式、引導這一組織(也就是這些元素及其接口)的協作風格等。其中,不同對象的重要程度用其變化帶來的成本變化來衡量。這個定義側重于時間的視角,更注重一系列動作。這個定義通過“重要設計決策”形成流程,并指出架構與成本之間的相關性。
關于軟件架構,還有很多類似的定義和理解,但基本上可以分為兩類:從空間角度看,是面向體系結構建設的“組成論”;從時間角度看,是面向設計流程實現的“決策論”。然而,空間和時間是密不可分的。維基百科上對軟件架構的定義就是從時空統一的視角給出的:軟件架構是規劃、設計和構建軟件及其組成結構的過程和最終成果。
任何概念都有其時空邊界,軟件架構也有自己的環境約束。引入約束條件后,軟件架構就可為軟件提供一個高級抽象,其中包括結構、行為和屬性。軟件架構由組件的描述、組件間的相互作用、指導組件集成的模式和這些模式的約束組成。軟件架構不僅顯示了軟件需求和軟件結構之間的對應關系,還規定了整個軟件的組織和拓撲結構,并提供了一些設計決策的基本原理。
綜上所述,筆者認為:軟件架構是軟件的空間體系結構和系統構建的時間決策流程的統一。
- CockroachDB權威指南
- Learning Spring 5.0
- 深入淺出WPF
- OpenCV 3和Qt5計算機視覺應用開發
- Building a Recommendation Engine with Scala
- 軟件架構:Python語言實現
- Mastering Apache Maven 3
- MySQL入門很輕松(微課超值版)
- Unity 3D腳本編程:使用C#語言開發跨平臺游戲
- 區塊鏈項目開發指南
- Learning iOS Security
- Practical Predictive Analytics
- Learning Image Processing with OpenCV
- 微前端設計與實現
- Solr權威指南(下卷)