天天看點

《軟體模組化與設計: UML、用例、模式和軟體體系結構》一一1.9 面向對象分析和設計方法的發展

本節書摘來自華章計算機《軟體模組化與設計: uml、用例、模式和軟體體系結構》一書中的第1章,第1.9節,作者:(美)hassan gomaa,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

20世紀80年代中晚期,面向對象程式設計的流行和成功使得幾種面向對象設計方法相繼出現,包括booch,wirfs-brock,wilkerson,and wiener(1990)、rumbaugh et al.(1991)、shlaer and

mellor(1988,1992)以及coad and yourdon(1991,1992)。這些方法所強調的重點在于問題域模組化、資訊隐藏和繼承。

parnas倡導将資訊隐藏作為一種設計更加獨立的子產品的方法,這種獨立的子產品可以在對其他子產品影響很小甚至不造成任何影響的情況下進行修改。booch将面向對象思想引入到設計中,最初與資訊隐藏一起應用到基于ada的系統的面向對象設計中,然後擴充為在面向對象設計中使用資訊隐藏、類和繼承。shlaer and mellor(1988)、coad and yourdon(1991)及其他人将面向對象思想引入到分析中。與結構化方法相比,面向對象方法被普遍認為提供了一種更加平滑的從分析到設計的過渡。

面向對象分析方法将面向對象思想應用到軟體生存周期的分析階段,強調識别問題域中的現實世界對象并将其映射為軟體對象。在對象模組化上最初的設想是源自于邏輯資料庫設計中使用的資訊模組化(特别是實體關系(e-r)模組化,更一般地說是語義資料模組化)的靜态模組化方法。實體關系模組化中的實體是問題域中的資訊密集型對象。實體、實體的屬性以及實體間的關系在實體關系圖中進行确定和描述;重點完全在資料模組化上。在設計過程中,實體關系模型被映射到資料庫(通常是關系資料庫)中。在面向對象分析中,問題域中的對象被識别和模組化為軟體類,然後确定每個類的屬性以及類之間的關系(coad 1991;rumbaugh et al. 1991;shlaer and mellor 1988)。

面向對象的靜态模組化中的類與實體關系模組化中的實體類型的主要差別在于類有操作而實體類型沒有操作。此外,資訊模組化隻對存儲在資料庫中的持久化實體進行模組化,而靜态的對象模組化中也會對其他問題域中的類進行模組化。資訊模組化中也包含了聚合和泛化/特化這樣更加進階的概念。在uml之前使用最廣泛的靜态對象模組化表示法是對象模組化技術(object modeling technique,omt)(rumbaugh et al. 1991)。

靜态對象模組化也稱為類模組化和對象模組化,因為其中包含确定對象所屬的類并且在類圖中描述類與類之間的關系。領域模組化這一術語也用來指對問題域的靜态模組化(rosenberg and scott 1999;shlaer and mellor 1992)。

早期的面向對象分析和設計方法通過資訊隐藏和繼承強調軟體開發的結構性方面而忽視了動态方面。omt(rumbaugh et al. 1991)的一個重要貢獻在于清晰地表明了動态模組化也是同等重要的。除了為對象圖引入靜态模組化表示法外,omt還展示了如何使用狀态圖進行動态模組化以顯示主動對象與狀态相關的行為及如何使用順序圖來顯示對象間的互動序列。rumbaugh et al.(1991)使用狀态圖,這是一種最初由harel(1988,1998)所設想的階層化的狀态轉換圖,用來模組化主動對象。shlaer and mellor(1992)也是用狀态轉換圖來模組化主動對象。booch最初使用對象圖來顯示執行個體級的對象間互動,後來對互動進行順序編号進而更加清楚地描述對象間的通信。

jacobson(1992)為系統的功能性需求的模組化引入了用例的概念,還使用順序圖來描述參與一個用例的對象之間的互動序列。用例的概念是jacobson的面向對象軟體工程生存周期中所有階段的基礎。用例的概念已經對現代面向對象軟體開發産生了深遠的影響。

在uml之前,還有其他一些試圖統一不同的面向對象方法和表示法的嘗試,包括fusion(coleman et al. 1993)和texel and williams(1997)的著作。uml表示法最初由booch、jacobson和rumbaugh提出,其目的是內建用例模組化、靜态模組化和動态模組化(使用狀态圖和對象互動模組化)表示法,這些将在第2章中描述。其他方法學家也對uml的發展做出了貢獻。cobryn[1999]和selic(1999)有一個關于uml是如何演化的以及在未來會怎樣演化的有趣的讨論。