淺論陰陽太極與UML建模[2]

字號:

層次分明
    “分而治之”是工程界對付復雜技術(shù)問題最常用的手段。作為一個復雜的系統(tǒng),軟件也不例外,清晰而嚴謹分層的結(jié)構(gòu)往往是優(yōu)秀軟件設計的一個主要特征。
    分層有橫切、縱切兩種。軟件設計從系統(tǒng),到子系統(tǒng)和構(gòu)件,再到類與對象,再到類的內(nèi)部屬性和方法,以及某個方法的編程實現(xiàn),既是由外而內(nèi),也是從高到低,從高層的架構(gòu)設計(系統(tǒng)、子系統(tǒng)),到低層的類與類的關(guān)系、類內(nèi)部的設計,就像山脈與山峰、森林與樹葉的關(guān)系。
    對應著這樣的高、低層關(guān)系,在軟件設計中,目前世界上已有大量的架構(gòu)模式、設計模式、實現(xiàn)模式和各種分層的框架可供我們借鑒、重用。
    動靜結(jié)合
    經(jīng)常有初學者問:用UML建模的時候,我們到底要畫幾張圖才算表達完整,哪些圖最重要?其實有一個非常簡單的回答:動靜結(jié)合??陀^世界是由物質(zhì)(如微觀粒子)組成的,而物質(zhì)是運動的。
    巧合的是,軟件這個虛擬世界也不例外。因此在我們設計軟件的時候,既要說明有哪些物質(zhì)(如構(gòu)件、對象、屬性等)存在,也不要忘了描述物質(zhì)之間的運動(如交互、狀態(tài)變遷等),兩者是相輔相成的。
    以下我們展現(xiàn)了參與“打印帳戶報告!”用例實現(xiàn)的主要對象之間,為了完成這一功能所結(jié)成的靜態(tài)關(guān)系(用UML類圖表示)和動態(tài)關(guān)系(我們選擇了UML協(xié)作圖)。
    事實上,只有細致考慮了對象之間的靜態(tài)和動態(tài)關(guān)系(不管利用何種媒介,大腦抑或文檔),我們的軟件設計才算是完整的,編程才有正確的依據(jù)。不然,您的程序代碼從何而來?
    逐步求精
    軟件開發(fā)從軟件的需求(問題域)到可執(zhí)行的高級程序設計語言源代碼(解決域),這中間究竟經(jīng)歷了多少思考步驟和權(quán)衡過程?是一步到位嗎?
    實際上宏觀地從軟件需求,到代碼實現(xiàn);軟件設計中的從分析對象,到設計對象,再到實現(xiàn)對象,或者從設計模式到模式的編程實現(xiàn),這些都是一個逐步求精的過程。
    結(jié)束語
    UML建模對于軟件設計的重要性,對于一名老練的OO程序員來說,是不言而喻的。
    UML作為一種圖形化建模語言規(guī)范,凝聚了世界上許多大師級OO建模、設計專家多年來的寶貴經(jīng)驗,它的表達手段異常靈活和豐富,面對UML 2.x十幾種圖符,希望我與Craig Larman大師合作的《太極建模詩》能給讀者朋友們帶來一些有效的幫助。