淺論陰陽太極與UML建模

發表于:2009-11-02來源:作者:點擊數: 標簽:umlUML太極陰陽建模
淺論陰陽太極與UML建模 UML模型 關鍵字:UML建模 UML抽象、簡潔、高于 Java 、C++諸等高級程序設計語言之上的形象表達,可以讓我們真切領略到蘊藏于軟件那紛繁蕪雜的細節表面之后的一份簡單、和諧之美。 軟件究竟是什么?有很多比喻可以形容。靜態的軟件就像
淺論陰陽太極與UML建模UML模型

關鍵字:UML建模

      UML抽象、簡潔、高于Java、C++諸等高級程序設計語言之上的形象表達,可以讓我們真切領略到蘊藏于軟件那紛繁蕪雜的細節表面之后的一份簡單、和諧之美。

 

軟件究竟是什么?有很多比喻可以形容。靜態的軟件就像一座虛擬的建筑(Architecture),而運動時的軟件有時就像一部開動的虛擬機器,或多條柔性的工廠流水線(進程與線程),有時又像一種虛擬的生物,可以肆意的復制和生長(比如軟件病毒)。

過去有一種說法認為:程序 = 算法 + 數據結構,如今看來這種舊結構化時代的觀點是不準確、不全面的,在新結構化時代我們至少可以得出這樣大致的公式:程序 = 算法 + 軟件結構 + 數據結構,在這里我們強調軟件結構不同于數據結構,軟件是操縱數據的程序,而軟件結構(包括架構和設計模式)的質量對軟件的質量同樣具有決定性的影響。

過去這15年無疑是面向對象(OO)軟件的天下,世界軟件開發早已進入了OO時代。

人們知道,高質量的好軟件是設計出來的,而軟件的設計目前依然主要依賴于人們大腦的思考和判斷,人類大腦的思考過程恰是一個對現實世界以及虛擬世界建模的過程。

而作為OO建模技術的事實上工業標準,統一建模語言(UML)正好為我們提供了一個運用OO思維進行軟件建模和設計的工具。

UML 1.4.2成為正式國際標準ISO/IEC 19501是軟件設計史上的一個重要事件,UML標準成熟之后的研發進展也比較順利,當前最新版本為2.1。

UML有什么用?作為一種建?!罢Z言”,促進溝通是一項基本功能,然而很多人忽視了UML獨立于傳統具象編程語言、擅長表達抽象OO概念的一大特點。

事實上,熟練掌握UML能夠幫助我們的大腦學會快速、敏捷地運用OO方式進行思考。UML標準及其相關技術不但是近10年來各工程領域OO軟件設計與建模的利器,還是當前表達軟件設計模式最形象和最有效的工具。

在我看來,學會運用UML思考,抽象地用UML表達軟件架構和設計方案,從而能透過現象看本質,是當今任何一名軟件架構師乃至普通OO程序員都應該盡快掌握的基本功。所以,這幾年世界各地的大專院校紛紛把OOAD/UML列為一門軟件工程專業的必修課也在情理之中了。

建模(modeling)并不是軟件行業所特有的做法,建模幾乎是幾千年來人類所有工程行業所共有的一項最佳實踐。為什么我們要對軟件建模?因為軟件太復雜,難以理解和掌握,我們需要一種能夠簡單而深刻地反映軟件設計本質的方法和工具。如何建模?就像對待建筑模型、機械模型一樣,軟件也是一個多面體(虛擬的),我們也需要選擇視點、視角和視圖,對模型做投影、做切片。Kruchten 博士提出的著名的 4+1 視圖(邏輯視圖、實現視圖、構件視圖和進程視圖,再加上用例視圖)為我們利用UML對復雜軟件的結構和行為建模提供了很好的指導。

軟件設計和UML建模既然那么重要,有什么簡單易學、提綱攜領的好方法、好原則嗎?我曾經編寫了一首建??谠E,多次在講課咨詢時與客戶、學員們分享交流,取得了很好的效果。

這首太極建模詩(或叫十六字OO建??谠E)受到了Larman(《UML和模式應用》)、Cockburn(《編寫有效用例》)、3 Amigos(《UML用戶指南》)等世界級專家們睿智大作的啟發,也凝結了我10多年來從事OO設計和編程的一點小小感悟。

我發現“外與內,高與低,靜與動,粗與細”等基本二元辯證關系,不但適用于軟件用例需求的建模,也適用于軟件架構的OOAD/UML 建模。

當然,軟件設計中的二元關系還遠不止這些。充滿了二元辯證、平衡之道的現代軟件工程,竟然與兩千年前中國古典哲學《陰陽太極》中的黑、白對立統一相暗合,這真的是歷史的巧合,還是科學的必然?

由外而內

外與內,即軟件系統本身與其外部環境的關系,大概是軟件開發中最根本的一對關系。在軟件開發之初需求調研時,我們通常視整個軟件系統為一個黑盒子,我們劃地為界,從系統外部來觀察軟件提供給其各個用戶的功能,以及它與外部環境的各種動態關系(包括彼此之間的行為交互和信息數據的交換)。這種方法可以用UML用例圖表示如下:

以銀行證券帳戶管理系統(類似于“銀證通”)為例,圖中用例“打印帳戶報告!”的需求簡述是:

主用角:用戶

輔用角:外匯交易中心、證券交易所

范圍:證券賬戶管理系統

層次:用戶目標層

后置條件:系統打印客戶帳號下已購買的所有幣種的證券清單,包括每支證券的單價、份數、余額以及該客戶賬戶下的資產總額(轉換成用戶指定的幣種,缺省情況下為美元)。

前置條件:用戶已登錄,客戶的賬戶、帳號已知。

觸發事件:用戶選擇打印賬戶報告(證券余額清單)。

基本流:

1.用戶根據系統提示選擇結算幣種(用于計算資產總額),缺省值為美元。

2.系統讀取該客戶帳號下的所有證券信息,打印每支證券的名稱、份數、單價和總價(即證券余額,等于單價 * 份數),總價用原幣種表示。

3.系統根據該賬戶下的證券幣種讀取相應的結算匯率,把所有證券余額都統一轉換成結算幣種,并通過累加該賬戶下所有證券的余額,計算出以結算幣種表示的客戶資產總額并打印輸出。

 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97