擴展流:
2a.讀取證券信息(份數、價格)失敗;
2a1.系統報錯,用例結束。
3a.讀取匯率失。持ёC券的幣種到結算幣種的轉換匯率不存在):
3a1.系統告知用戶結算匯率不存在,無法計算資產總額,用例結束。
明確需求后,當我們打開軟件系統這只盒子,進入它的內部,把盒子內的一切東西、機關要害都搞清楚、弄明白,也就完成了軟件開發從需求,到分析,到設計,到編程實現的這么一個過程,而我們最終送給客戶的必須是一個高質量的大禮包。
那么,這只盒子內部有何寶物呢?由外而內,由大而小,一個軟件分別由系統,子系統(subsystem)與構件(component),以及對象組成。一個系統由一個或多個子系統組成,而一個子系統可以由一個或更多的子系統(或構件)組成。構件里面裝的則是對象,對象又由屬性和方法(即通常所說的函數)組成。類(對象)正是現代軟件的最小組成單元,就像組成有機人體的基本單元——細胞。
下圖用UML包圖表現了這樣一種軟件系統的嵌套解剖視圖。
層次分明
“分而治之”是工程界對付復雜技術問題最常用的手段。作為一個復雜的系統,軟件也不例外,清晰而嚴謹分層的結構往往是優秀軟件設計的一個主要特征。
分層有橫切、縱切兩種。軟件設計從系統,到子系統和構件,再到類與對象,再到類的內部屬性和方法,以及某個方法的編程實現,既是由外而內,也是從高到低,從高層的架構設計(系統、子系統),到低層的類與類的關系、類內部的設計,就像山脈與山峰、森林與樹葉的關系。
對應著這樣的高、低層關系,在軟件設計中,目前世界上已有大量的架構模式、設計模式、實現模式和各種分層的框架可供我們借鑒、重用。
動靜結合
經常有初學者問:用UML建模的時候,我們到底要畫幾張圖才算表達完整,哪些圖最重要?其實有一個非常簡單的回答:動靜結合?陀^世界是由物質(如微觀粒子)組成的,而物質是運動的。
巧合的是,軟件這個虛擬世界也不例外。因此在我們設計軟件的時候,既要說明有哪些物質(如構件、對象、屬性等)存在,也不要忘了描述物質之間的運動(如交互、狀態變遷等),兩者是相輔相成的。
以下我們展現了參與“打印帳戶報告!”用例實現的主要對象之間,為了完成這一功能所結成的靜態關系(用UML類圖表示)和動態關系(我們選擇了UML協作圖)。
事實上,只有細致考慮了對象之間的靜態和動態關系(不管利用何種媒介,大腦抑或文檔),我們的軟件設計才算是完整的,編程才有正確的依據。不然,您的程序代碼從何而來?
逐步求精
軟件開發從軟件的需求(問題域)到可執行的高級程序設計語言源代碼(解決域),這中間究竟經歷了多少思考步驟和權衡過程?是一步到位嗎?
實際上宏觀地從軟件需求,到代碼實現;軟件設計中的從分析對象,到設計對象,再到實現對象,或者從設計模式到模式的編程實現,這些都是一個逐步求精的過程。
結束語
UML建模對于軟件設計的重要性,對于一名老練的OO程序員來說,是不言而喻的。
UML作為一種圖形化建模語言規范,凝聚了世界上許多大師級OO建模、設計專家多年來的寶貴經驗,它的表達手段異常靈活和豐富,面對UML 2.x十幾種圖符,希望我與Craig Larman大師合作的《太極建模詩》能給讀者朋友們帶來一些有效的幫助。
協作圖用于顯示組件及其交互關系的空間組織結構,它并不側重于交互的順序。協作圖顯示了交互中各個對象之間的組織交互關系以及對象彼此之間的鏈接。與序列圖不同,協作圖顯示的是對象之間的關系。
另一方面,協作圖沒有將時間作為一個單獨的維度,因此序列號就決定了消息及并發線程的順序。協作圖是一個介于符號圖和序列圖之間的交叉產物,它用帶有編號的箭頭來描述特定的腳本,以顯示在整個腳本過程中消息的移動情況。
用例圖(use case diagram)就是由主角、用例以及它們之間的關系構成的圖。該圖說明了用例模型中的關系?梢詫⒂美龍D組織到用例包中,并歸用例包所有,讓特定包中僅顯示互為關聯關系的內容。
用例圖由參與者(Actor)、用例(Use Case)、系統邊界、箭頭組成,用畫圖的方法來完成。
參與者不是特指人,是指系統以外的,在使用系統或與系統交互中所扮演的角色。因此參與者可以是人,可以是事物,也可以是時間或其他系統等等。還有一點要注意的是,參與者不是指人或事物本身,而是表示人或事物當時所扮演的角色。
文章來源于領測軟件測試網 http://www.kjueaiud.com/