軟體架構設計學習筆記(1)—基本概念
按照系統工程的思想,人們面對複雜系統時,總是應先考慮巨集觀再考慮微觀。系統越複雜,巨集觀考慮就越重要,因為越是巨集觀上的失誤,糾正的代價越大。軟體系統的研發亦是如此。隨著軟體複雜程度的日益增大,當代軟體設計領域的重點開始由演算法、資料結構轉向系統的總體結構,軟體架構這門學科就應運而生了。
在科學研究領域,軟體架構常被稱為軟體體系結構。英文中倒是沒有其他詞彙,就是software architecture乙個詞。從目前流行的程度來看,軟體架構應是乙個主流詞彙,所以我還是遵守大多數人的使用習慣來。至少,最直接的好處是,我做筆記時,少打好多字哦
學習軟體架構設計,個人最想弄明白是這麼幾個問題:
我希望通過幾篇連續的短文,逐一總結我對這幾個問題的看法,希望高手們批評指正。
1.1 軟體架構的定義
軟體架構的定義非常之多,一定程度上也反映了這是一門百花齊放的新學科。sei的**上收集了大量的定義,並進行了分類,感興趣的話可以看看**:溫昱在他的《軟體架構設計》一書中還把定義分為了決策派和組成派。
組成派代表mary shaw的定義
軟體系統的架構將系統描述為計算元件以及它們之間的互動。
這個定義中,較難理解的是元件(component)這個詞,因為元件這個詞實際含義很泛。通常開發人員看到的諸如ejb元件、com/dcom元件等都是指的一種可執行體。但是,這裡的元件應該不僅僅是指可以執行的東西,而是指的某種結構元素。例如在軟體架構的部署檢視中,「元件和互動」是指節點及其通訊機制;在軟體架構的模組檢視中,「元件和互動」是指模組及其依賴關係。
決策派代表rup(rational unified process)的定義
軟體架構包含以下問題的重要決策:
在第一次軟體架構國際研討會,
mary shaw曾將軟體架構的定義分為四大型別:
框架模型:重點關注整個系統的內在結構,而不是組成。這中結構通常只有乙個。
動態模型:強調系統的行為質量。
過程模型:聚焦於軟體架構的構造過程。
最現代的定義應是書《
documenting software architectures: views and beyond 》(第二版)中的定義:
the set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both.
中文意思應是:軟體架構是系統推導所需要的乙個結構集,這些結構由軟體元素、它們之間的關係及其屬性組成。
這裡的系統推導主要是指架構分析,也就是說,系統質量屬性應可以從軟體架構推導出來。
目前的現實情況是,軟體架構的定義繁多,各種定義之間既不能相互包含,也不存在矛盾。事實上,各種定義反映了各軟體架構研究社群的興趣點和重點。如果將各類定義綜合,則可以形成對軟體架構的乙個整體觀念。
1.2 軟體架構是什麼?
綜合來看,我對軟體架構的整體觀念是:軟體架構是關於軟體設計的一組巨集觀決策,其顯式表達形式通常是結構及其相關說明的集合。
具體來說,軟體架構是:
軟體架構屬於傳統軟體工程的設計領域,是分析與設計的一座橋梁。
軟體架構是一種頂層設計。
軟體架構是乙個結構的集合。
《軟體架構設計》學習筆記 1 閱讀感悟
接上篇。這幾日將全書通讀了一遍,最大的感受有兩個 思維方式的變革,具體點說,就是考慮問題的視角的不同。視角不同,你看到的東西或許就是不一樣的。這有點像 盲人摸象 的意思。盲人摸象作為乙個反面教材,被用來告誡人們看待問題要全面。可是,反過來想一下,如果沒有區域性的體驗和觀察 沒有對於各個區域性的認識和...
軟體架構設計 架構師筆記,軟體架構設計
架構設計是分與合的藝術 通讀並總結了溫昱老師的 軟體架構設計 並有幸聽過李哲珠博士對架構設計的講解。對其讀後的自我領悟並提煉出核心內容分享出來,希望從思想高度上能提公升你對軟體架構設計的認知。架構設計 架構設計不等於框架設計,框架也可能有架構,所有的原子元件 被拆分的模組 都需要架構設計,所有元件可...
軟體架構的基本概念
軟體構架 是什麼,你是怎麼理解軟體架構的?二派觀點 組成派 軟體系統的構架將系統描述為計算元件與元件的互動。計算元件是泛指,可以進一步細分為,處理元件 資料元件 連線元件等 總之。元件可以是子系統 框架 模組 類等不同粒度的軟體單元。它們可以擔負不同的職責。決策派 rup中對軟體架構的定義 軟體架構...