摘要
如今,UML用於對軟體系統進行建模已有多年時間。然而,我極少看到有關對現代軟體系統建模和技術的詳細討論或執行個體。例如,對應用程式及其部署建模需要開發各類原型系統,並需要使用有組織的方法來設計圖的作用範圍和布局,使其真正發揮作用。在複雜的環境中,建模顯得尤為重要,它不僅能為編寫代碼的軟體工程師帶來好處,而且負責正確配置和部署軟體系統的軟體組態管理團隊和生產服務團隊也能從中獲益良多。本文示範了對現代軟體建模的幾種方法,這些方法可用於精確而簡明地交流架構方面的細節。
簡介
不久以前,有用的公司專屬應用程式程式還是由少數實體bean、較多的會話bean和一些JSP構建而成。EJB被打包在JAR檔案中,而JSP則被簡單地儲存在Web伺服器的類路徑中。如果軟體業還能有什麼讓您所稱道的,那就是軟體在大小、功能和複雜性方面呈幾何指數增長。軟體大小已經增長到每個公司專屬應用程式程式的各個部分都被儲存在壓縮格式的WAR和EAR檔案中的程度。軟體系統的複雜性需要高效的建模,以便協助管理設計和相互關係。軟體功能現在已經處於這樣一個層級:需要定義一個完整的新範型——即服務,才能對其進行管理。
必須對軟體複雜性進行管理,因為它對企業的影響很大。這種管理可以同時採取規劃和通訊的形式。現在,可以使用UML來協助規劃軟體的架構、設計和部署。還可以使用它把這些規劃發送到企業中必須建立、安裝和維護企業軟體的各個部門中。
如果是對代碼進行建模,UML 1 X就已經很不錯了。而當對軟體系統的打包和部署進行建模時,它就顯得不夠了。隨著UML 2.0的出現,UML對核心軟體系統建模的能力大為增強。然而,UML 2.0真正耀眼的地方是在對軟體打包和部署建模時。
本文的目的是示範對現代軟體系統進行建模的幾種有效方法,這些方法可用於把架構、設計和部署方面的細節精確而簡明地傳達給企業中的相關負責部門。我並沒有聲明這是建模現代軟體的惟一方法。UML的建模語言相當豐富。然而,如果您不確定如何使用UML.2.0進行快速建模,尤其是對特定於BEA WebLogic Platform建模的資訊,本文將會為您提供協助。
建模難題——少就是多
我喜歡更加敏捷的建模方法。對軟體系統進行建模不會使公司直接獲益,但可執行軟體卻可從中受益。然而,建模是一種有效通訊工具,有助於讓整個公司就如何構建、部署和操作軟體達成一致的認識。
在對軟體建模時,其實少就是多。代碼隨著時間而增多,而模型則是靜止的,它是某個時刻設計思想的快照。因此,對軟體系統的每一個細節都建模並沒有太大用處。軟體系統的細節是在有機變化的。最佳方法是對軟體的核心部分進行建模。這些模型往往能夠在相當長的時間內發揮作用。
對代碼進行建模
我將從一個特定於代碼的模型開始,然後再逐漸轉到軟體打包和部署圖上。在此過程中,我認為您可以很好地理解什麼樣的細節層級適合於您的企業。有一點很重要,即,您要不斷地詢問自己,“這個圖可以協助大家理解設計嗎?”。
首先,讓我們看一看我稱之為“over-modeling”的建模方式。圖1給出了一個使用了bean託管持久性的實體bean的UML圖。在這個圖中,您可以看到3個主介面和它們的根介面,以及實作類別。
圖1. 對一個EJB進行Over-modeling
乍一看,圖中的內容似乎很多。其實,這個模型不過是較為詳細而已,實際上內容很少。該圖實際上顯示了一個實體bean的基本結構。稍微瞭解一點EJB知識的工程師就會發現這個圖其實很簡單。如果您提供一個充滿了這種“沒有價值的東西”的完整設計文檔,工程師們很快就會感到厭煩,並拒絕接受這種“無用的”設計文檔。