最近在看《軟體架構師教程》,今天就第五章《軟體架構設計》總結一下,其中還有自己所聯想到的。主要從以下幾個方面來描述:
軟體架構
absd
架構模式
dssa
架構評估
架構的定義,在業界,目前主要分為兩類:結構派 和 政策派。結構派認為架構是指軟體中各構件的組織結構以及各構件之前的互相關系。政策派認為軟體的架構設計是要為軟體的每個重要的決擇進行權衡,并作出最終決定。
架構,作為系統中最重要的組成部分,對整個系統有着重要的作用:
對于軟體開發而言,首先,架構設計能使系統各方面品質達到預期的目标;其次,它能全過程指導開發、測試,并有效地管理軟體的複雜性,降低維護成本。
在軟體工程方面,架構設計能有效地支援計劃的編制,支援沖突分析,使受益人目标一緻。
目前對于軟體架構的研究,還處于不成熟的階段。在軟體生命周期的各個階段中,架構設計以及與軟體工程的結合,也正處于摸索階段,正在嘗試如何讓架構設計更好的指導工程的生命周期各階段的活動。
全稱:architecutre based software development,即基于架構的開發方法。就是在架構設計後,以文檔化的架構為系統的主線,指導并保證其它活動的順利開展。
主要經曆以下階段:
從圖中可以看出,absd是一個疊代的開發模型:在需求擷取完成之後,需要提取出體系結構的需求,包括功能需求、品質屬性及系統的限制,後再者将會成為影響架構設計的重點。架構設計到架構的複審,是一個較小的重複周期,目的是為了架構設計能通過稽核達到預期的品質目标。當稽核通過後,架構指導開發過程完成系統實作。過程中,可能會對架構進行演化,在一定程度上,也可以說是在做架構的重構,這時,需要再次重複整個過程,這是一個大的疊代。
具體的過程,請看以下幾個圖:
設計過程完成後,需要對架構進行文檔化,主要輸入兩個文檔:《架構規格說明書》、用于測試體系結構需求的《品質設計說明書》。
《品質設計說明書》中應該對品質目标進行定義,它也是後面進行架構評估的依據。定義時,可以依據atam中的5,具體内容參見本章的“架構評估”小節。
《架構規格說明書》中,應使用較成熟的架構描述方法對架構進行描述。如可采用業界目前比較認可的4+1視圖。
文檔的完整性是軟體架構成功的關鍵。文檔應該從使用者的角度進行編寫,必須分發給所有與系統有關的開發人員、且必須保證開發者手上的文檔是最新的。同時,這些輸出的文檔也應該面向架構評估。
複審之前,最好做一個較小的系統原型,以友善評估。
複審的目前是為了保證架構能滿足軟體的品質要求,架構設計的構件和層次要比較合理,架構的描述要清晰。
架構風絡
其實,架構風格就是架構模式。
架構重用,是軟體架構研究的核心目标之一。對架構模式的研究,可以極大的促進業界對軟體架構的重用。
由于一個領域中的核心領域對象往往不會發生改變,是以對它們進行研究,可以實作核心業務的積累和重用。由于整個領域中核心對象往往不會發生改變,而圍繞它們的應用,按照應用程式的類别劃分後,同一類别下的應用程式往往架構也是類似的。是以對一類系統進行架構分析,就是為了找出在此類系統中通用的架構模式。
gix4項目也是使用了基于領域的架構。準确地說,gix4的架構是使用了領域驅動、模型驅動的産品線架構。具體架構内容,會在後面的文章《架構設計師-gix4-架構介紹》中介紹,其中會對dssa如何在gix4上應用做一個較全面的講述。
在架構設計的目的中,我已經說過,架構設計最重要的目的是為了讓系統能滿足預期的品質需求。是以,在架構評估階段,最重要的也就是評估這個架構是否能滿足品質需求。也就是說,架構評估,重點關注的是品質屬性。
在《教程》中提到,本階段需要使用場景的方式來定義産品的品質目标。其實不然,品質目标是架構設計的重要依據,往往是在架構設計的初始階段就已經被定義好了,也就是前面提到的架構設計階段的輸出《品質設計說明書》。雖然那時的定義不一定完整,但是一樣可以在架構評估過程中,先對它進行評估,然後就可以作為架構評估過程中品質評估的基準了。
其實,就大方向上看,架構評估也是架構設計的一個部分。評估的過程,就是各專家在一起對架構初稿進行稽核、提問、反思、建議。架構師以一人之力,很難把一個大型系統的架構設計得天衣無縫;這時集多人的力量在一起對初稿進行評估,可以起到查漏補缺的作用。
小結
架構設計是軟體設計過程中最重要的活動之一,架構設計的優劣直接影響到目标系統的各個品質屬性。
我認為,基于架構的開發方法,是一個很重要的方法論,我們可以用它來保證軟體達到品質标準,并指導整個開發過程。同時,可以結合目前業界流行的靈活方法來實施,這樣可以在不同高度對軟體開發進行控制。