最近老師把師兄們以前做的Android項目發給我和其他同學,讓我們把這個項目寫成實訓教材,說要讓一個不會Android的人看了我們的教材就可以做出這個項目。我當時就無語了……(心想不會的人首先想看的是基礎教材絕對不會是什么實訓教材,而且誰會看我們寫的教材啊,除了我們學校的學生,是個人都會選擇一些出名的教材)其實,最讓我愣一下的是,老師居然讓我來寫實訓教材的項目架構部分,當時都無語了,這個學期學習的Android,才半個學期!自己都還是個菜鳥。無奈吧,做就做吧。我只能說我盡力做,至於做成什么樣子就不敢保證了。於是乎,我把上個學期學習的《軟件工程》拿來看。當時,因為在做網站(真實項目,我大一上冊學的C,我大一下冊學的.net,大二上冊做的網站,現在都大二下冊了),而且客戶的要求也一直在變,還熬了幾次通宵,各種傷不起啊。上課都在想怎么做,根本都沒聽老師講。哎,出來混遲早是要還的,於是我便果斷的復習了《軟件工程》的系統架構部分。因為,老師要得比較急,前天看書看到凌晨2點。
現在,總結一下自己學到的相關知識:
對於軟件系統來說,描述系統架構一般涉及兩個方面的內容:業務架構和軟件架構。這兩個方面的內容分別針對於人們對業務領域的理解和對系統領域的理解。前者是從業務需求的角度出發,理清物理結構圖和邏輯結構圖,划分出每個子模塊,確定為什么這么划分,各個子模塊之間如何交互,每個子模塊具有哪些接口;后者從技術上着重討論采用什么樣的技術,如何分層,采用哪些好的技術特征,會帶來什么好處,為什么要這么做等。
業務架構:
業務架構描述了業務領域主要的業務模塊及其組織結構。
業務架構的目的是為業務領域建立一個維護和擴展的結構,描述業務的結構。業務架構對我們理解客戶業務,尤其是對軟件開發行業確定解決方案有着非常重要的作用。
用例模型和領域模型是業務架構的基礎。用例模型、領域模型所描述的業務過程,通過抽象可得到業務架構。反過來,業務架構對用例模型和領域模型有着重要的指導作用。
軟件架構:
軟件架構是一種思想,一個系統的藍圖,是對軟件結構組成的規划和職責進行設定。
軟件架構的意義就在於將這些可邏輯划分的部分獨立出來,用約定的接口和協議將他們有機地結合到一起,形成職責清晰、結構明朗的軟件結構。
軟件架構是一個邏輯性的框架結構描述,他可能並無真正的可執行的部分。事實上,大部分的軟件架構都是有一個設計思想,加上若干設計模式再規定一些列的規范、傳輸協議、實現標准等文檔構成的。
軟件架構需要在業務架構的基礎上引入計算機環境,計算機環境包括硬件環境和軟件環境。硬件環境包括網絡拓撲結構、服務器及其他設備等,而軟件環境指的是操作系統、應用服務器、中間件、數據庫等。
一個典型的軟件架構包括兩個視角:廣度視角和深度視角。廣度視角即我們常說的軟件層次結構,它關注軟件的分層,規定每一層的職責以及曾與層之間的通信標准,一般使用包元素來描述;深度視角,是指廣度視角中每一層的詳細說明,它關注每一層以及每個部分的具體實現架構。
軟件架構與框架:
現實中,很多人把框架和架構搞混,有的人認為架構就是框架,兩者是一個東西。其實這是一種不正確的認識。
從語言的角度來說,架構的英文原文為:architecture,框架是framework,顯示是兩個完全不同的詞。另外,架構是一種思想,一個系統藍圖,是對系統高層次的定義和描述。框架是針對某個問題領域的通用解決方案,它通常集成了最佳實踐和可復用的基礎結構,對開發工作起到減少工作量、指導和規范的作用。