真實(shí)狀況(例如“開發(fā)人員分散在不同地點(diǎn)”)。這些約束性需求當(dāng)然對架構(gòu)設(shè)計(jì)影響很大,比如受到“項(xiàng)目預(yù)算有限”的限制,架構(gòu)師就不應(yīng)選擇昂貴的技術(shù)或中間件等,而考慮到開發(fā)人員分散在不同地點(diǎn)”,就更應(yīng)注重軟件模塊職責(zé)劃分的合理性、松耦合性等等。
運(yùn)行期質(zhì)量屬性。這類需求主要指軟件系統(tǒng)在運(yùn)行期間表現(xiàn)出的質(zhì)量水平。運(yùn)行期質(zhì)量屬性非常關(guān)鍵,因?yàn)樗鼈冎苯佑绊懼蛻魧浖到y(tǒng)的滿意度,大多數(shù)客戶也不會(huì)接受運(yùn)行期質(zhì)量屬性拙劣的軟件系統(tǒng)。常見的運(yùn)行期質(zhì)量屬性包括軟件系統(tǒng)的易用性、性能、可伸縮性、持續(xù)可用性、魯棒性、安全性等。在我們的超市系統(tǒng)的案例中,用戶對高性能提出了具體要求(真正的性能需求應(yīng)該量化,我們的表1沒體現(xiàn)),他們不能容忍金額合計(jì)超過2秒的延時(shí)。
開發(fā)期質(zhì)量屬性。這類非功能需求中的某些項(xiàng)人們倒是念念不忘,可惜很多人并沒有意識(shí)到“開發(fā)期質(zhì)量屬性”和“運(yùn)行期質(zhì)量屬性”對架構(gòu)設(shè)計(jì)的影響到底有何不同。開發(fā)期質(zhì)量屬性是開發(fā)人員最為關(guān)心的,要達(dá)到怎樣的目標(biāo)應(yīng)根據(jù)項(xiàng)目的具體情況而定,而過度設(shè)計(jì)(overengineering)會(huì)花費(fèi)額外的代價(jià)。
什么是軟件架構(gòu)視圖
那么,什么是軟件架構(gòu)視圖呢?Philippe Kruchten在其著作《Rational統(tǒng)一過程引論》中寫道:
一個(gè)架構(gòu)視圖是對于從某一視角或某一點(diǎn)上看到的系統(tǒng)所做的簡化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了于此方面無關(guān)的實(shí)體。
也就是說,架構(gòu)要涵蓋的內(nèi)容和決策太多了,超過了人腦“一蹴而就”的能力范圍,因此采用“分而治之”的辦法從不同視角分別設(shè)計(jì);同時(shí),也為軟件架構(gòu)的理解、交流和歸檔提供了方便。
值得特別說明的,大多數(shù)書籍中都強(qiáng)調(diào)多視圖方法是軟件架構(gòu)歸檔的方法,其實(shí)不然。多視圖方法不僅僅是架構(gòu)歸檔技術(shù),更是指導(dǎo)我們進(jìn)行架構(gòu)設(shè)計(jì)的思維方法。
Philippe Kruchten提出的4+1視圖方法
1995年,Philippe Kruchten在《IEEE Software》上發(fā)表了題為《The 4+1 View Model of Architecture》的論文,引起了業(yè)界的極大關(guān)注,并最終被RUP采納。如圖2所示。
該方法的不同架構(gòu)視圖承載不同的架構(gòu)設(shè)計(jì)決策,支持不同的目標(biāo)和用途:
l 邏輯視圖:當(dāng)采用面向?qū)ο蟮脑O(shè)計(jì)方法時(shí),邏輯視圖即對象模型。
l 開發(fā)視圖:描述軟件在開發(fā)環(huán)境下的靜態(tài)組織。
l 處理視圖:描述系統(tǒng)的并發(fā)和同步方面的設(shè)計(jì)。
l 物理視圖:描述軟件如何映射到硬件,反映系統(tǒng)在分布方面的設(shè)計(jì)。
運(yùn)用4+1視圖方法:針對不同需求進(jìn)行架構(gòu)設(shè)計(jì)
如前文所述,要開發(fā)出用戶滿意的軟件并不是件容易的事,軟件架構(gòu)師必須全面把握各種各樣的需求、權(quán)衡需求之間有可能的矛盾之處,分門別類地將不同需求一一滿足。
Philippe Kruchten提出的4+1視圖方法為軟件架構(gòu)師“一一征服需求”提供了良好基礎(chǔ)。
邏輯視圖。邏輯視圖關(guān)注功能,不僅包括用戶可見的功能,還包括為實(shí)現(xiàn)用戶功能而必須提供的“輔助功能模塊”;它們可能是邏輯層、功能模塊等。
開發(fā)視圖。開發(fā)視圖關(guān)注程序包,不僅包括要編寫的源程序,還包括可以直接使用的第三方SDK和現(xiàn)成框架、類庫,以及開發(fā)的系統(tǒng)將運(yùn)行于其上的系統(tǒng)軟件或中間件。開發(fā)視圖和邏輯視圖之間可能存在一定的映射關(guān)系:比如邏輯層一般會(huì)映射到多個(gè)程序包等。
處理視圖。處理視圖關(guān)注進(jìn)程、線程、對象等運(yùn)行時(shí)概念,以及相關(guān)的并發(fā)、同步、通信等問題。處理視圖和開發(fā)視圖的關(guān)系:開發(fā)視圖一般偏重程序包在編譯時(shí)期的靜態(tài)依賴關(guān)系,而這些程序運(yùn)行起來之后會(huì)表現(xiàn)為對象、線程、進(jìn)程,處理視圖比較關(guān)注的正是這些運(yùn)行時(shí)單元的交互問題。
物理視圖。物理視圖關(guān)
項(xiàng)目經(jīng)理勝任力免費(fèi)測評(píng)PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html