Sybase 公司PowerDesigner上海研發(fā)中心 張曉光,王曉昀
1. 簡(jiǎn)介
提高軟件質(zhì)量,縮短開(kāi)發(fā)周期, 并且使軟件更能夠適應業(yè)務(wù)需求的變化,以提高投資回報率,是每個(gè)企業(yè)所面臨的、需要解決的關(guān)鍵問(wèn)題。軟件建模一直被認為是提高與有效控制軟件質(zhì)量的解決之道。近些年來(lái)為大家關(guān)注的主要是數據設計模型、對象模型、和業(yè)務(wù)流程模型。由于歷史原因,面向數據架構,開(kāi)發(fā)以及業(yè)務(wù)分析的建模工作總是被單獨購買(mǎi),彼此之間沒(méi)有集成或共享信息。但是,企業(yè)不斷需要更集成的建模套件,即集成化企業(yè)級建模工具,來(lái)支持在共享環(huán)境下,企業(yè)整個(gè)架構的不同方面的全面建模。
目前各主要的建模工具廠(chǎng)商如Sybse PowerDesigner, IBM Rational Rose, Computer Associates的ERWin等都在加強各自建模工具的融合與集成。PowerDesigner經(jīng)過(guò)近20年的發(fā)展,已經(jīng)在原有的數據建模的基礎上,形成一套完整的集成化企業(yè)級建模解決方案(如圖1所示),
融合了幾種標準建模技術(shù):傳統數據庫建模、使用 UML 的應用程序建模和業(yè)務(wù)流程建模。而且支持主流應用程序開(kāi)發(fā)平臺(如 Java J2EE、Microsoft .NET、Web Services 和 PowerBuilder,Eclipse等)以及流程執行語(yǔ)言(如 ebXML 和 BPEL4WS)。業(yè)務(wù)或系統分析人員,設計人員,數據庫管理員DBA和開(kāi)發(fā)人員都可以對其裁剪,以滿(mǎn)足他們的特定的需要。
本文首先介紹PowerDesigner12對企業(yè)級建模支持所提供的各個(gè)模型及其之間的關(guān)系。并通過(guò)典型實(shí)例-客戶(hù)訂單處理子系統展示PowerDesigner12在以數據為中心的企業(yè)應用分析開(kāi)發(fā)這個(gè)生命周期的全面建模的支持。
2. 企業(yè)級建模 = PowerDesigner
Sybase PowerDesigner是Gartner評出的2004年全球排名第一的數據庫建模工具。PowerDesigner靈活的分析和設計特性允許使用一種結構化的方法有效地創(chuàng )建數據庫或數據倉庫,并支持最新的RDBMS引擎以及數據庫中的Web services和XML等功能,而且不要求嚴格遵循一個(gè)特定的方法學(xué)。PowerDesigner提供了直觀(guān)的符號表示使數據庫的創(chuàng )建更加容易,同時(shí)能更加簡(jiǎn)單地向非技術(shù)人員展示數據庫和應用的設計。目前PowerDesigner支持60多種數據庫及其不同版本,主要的數據倉庫以及數據分析工具 (OLAP)等
PowerDesigner是一個(gè)功能強大而使用方便的工具集,為新一代數據庫應用的建模提供了全面的支持。具體地,PowerDesigner提供:
1. 需求分析模型(Requirements Model—RQM)
2. 企業(yè)業(yè)務(wù)流程模型(Business Process Model—BPM)
3. 概念數據模型(Conceptual Data Model—CDM)
4. 物理數據模型(Physical Data Model—PDM)
5. 對象模型(Object Oriented Model-OOM)
6. 信息流動(dòng)模型(Information Liquidity Model—ILM)
7. XML 模型(XML Model)
8. O/R 映射支持(如Hibernate,JDO等)
并提供了強大的模型間生成、鏈接和同步技術(shù)(具體地轉換關(guān)系見(jiàn)圖2),比如由CDM可以生成PDM,PDM可以生成OOM,OOM可以生成
應用程序的代碼,并可以從應用程序代碼(如C#, Java等)生成類(lèi)圖(雙向工程)等。并提供了沖突分析(impact analysis),有效地評價(jià)各個(gè)模型修改帶來(lái)的沖擊,從而得到更好的敏捷性和可預測性。這樣,用戶(hù)可以根據需求分析模型(RQM),從面向對象分析設計(OOM)開(kāi)始,依次建立用例圖,時(shí)序圖及類(lèi)圖,由類(lèi)圖轉化為CDM以及PDM;或者從結構化分析開(kāi)始,依次產(chǎn)生流程分析模型(BPM), CDM,PDM并轉化為類(lèi)圖等。為了支持企業(yè)團隊的開(kāi)發(fā)管理,PowerDesigner更進(jìn)一步,建立了所有模型的統一共享環(huán)境,一套元數據庫 (metadata repository),為企業(yè)級應用的分析、設計與開(kāi)發(fā)提供了一個(gè)企業(yè)建模、UML和數據建模等三種建模的集成化的工作環(huán)境。
3.PowerDesigner 應用實(shí)例
3.1客戶(hù)訂單處理子系統需求定義
建立需求模型的目的是定義系統邊界,使系統開(kāi)發(fā)人員能夠更清楚地了解系統需求,同時(shí)為計劃迭代的技術(shù)內容提供基礎,為估算開(kāi)發(fā)系統所需成本和時(shí)間提供基礎。 PowerDesigner提供了有效的需求建模,保證更準確的項目結果,并通過(guò)建立設計和需求的關(guān)聯(lián)保證更好的可追蹤性。圖3給出的是客戶(hù)訂單處理子系統中的部分需求模型,PowerDesigner通過(guò)層次結構顯示了該系統的主要功能。用戶(hù)可以通過(guò)屬性對話(huà)框(如圖3所示),進(jìn)行詳細的需求描述。同時(shí),為了進(jìn)一步分析該子系統的業(yè)務(wù)需求,結構及機制,發(fā)現企業(yè)中當前存在的問(wèn)題并確定改進(jìn)的可能性,可以進(jìn)行業(yè)務(wù)流程分析。圖4給出了該子系統的最上層的企業(yè)業(yè)務(wù)模型表示。在PowerDesigner中,不僅支持業(yè)務(wù)過(guò)程建模,而且也提供了業(yè)務(wù)流程仿真,業(yè)務(wù)流程經(jīng)過(guò)配置,可以導入Simul8中進(jìn)行仿真,幫助用戶(hù)對業(yè)務(wù)過(guò)程進(jìn)行量化的評價(jià)。
由于該企業(yè)原來(lái)已經(jīng)有若干Legacy子系統,包括CRM,ERP以及訂單管理系統,因此,該企業(yè)提出基于XML的Web Service的集成,同時(shí)為了有效響應市場(chǎng)的變化,必須建立決策支持子系統,如庫存趨勢分析或客戶(hù)響應分析等,提高企業(yè)資源的合理分配及其敏捷性。
3.2 概念數據模型 (CDM) 建模
概念數據數據模型(CDM)設計是建模過(guò)程的關(guān)鍵階段,此階段把現實(shí)世界中需要保存的信息抽象成信息世界中的實(shí)體(Entity)和關(guān)系 (Relationship),產(chǎn)生實(shí)體關(guān)系圖(E/R Diagram)。這一階段可以為高質(zhì)量的應用提供堅實(shí)的基礎。建立概念數據模型(CDM)是一項綜合性的工作。通常在一個(gè)清晰的、包括全部業(yè)務(wù)過(guò)程描述的應用需求的基礎上,由具有業(yè)務(wù)領(lǐng)域知識的專(zhuān)家和數據模型專(zhuān)家共同合作,把這些原始數據轉化成數據流程圖和概念數據模型。
PowerDesigner并不限制CDM的建模過(guò)程,用戶(hù)可以(1)從數據項開(kāi)始,“自底向上”地從最小的數據單位開(kāi)始向上構造,當收集到足夠的信息時(shí)進(jìn)行歸納,把數據項分組放入不同的實(shí)體中,然后歸納產(chǎn)生域;(2)從感興趣的對象開(kāi)始,即實(shí)體開(kāi)始,然后指定它們的屬性。當收集到足夠信息時(shí),進(jìn)行歸納產(chǎn)生域;圖4的CDM就是根據上面的系統需求分析中的從實(shí)體選擇出發(fā),如在圖3的需求模型以及圖4業(yè)務(wù)過(guò)程模型中,可以抽取Customer, Order, Product等實(shí)體,逐漸完善各實(shí)體的屬性,并建立它們之間的關(guān)系。(3)也可以“自頂向下”,從域開(kāi)始,使用這種方法,在收集開(kāi)發(fā)數據模型前,必須有某些業(yè)務(wù)問(wèn)題所需要的預備知識,以此對數據進(jìn)行標準化。
PowerDesigner支持非常復雜的概念模型建模,包括中間實(shí)體(Association Entity),標識符(Identifier),檢驗約束(包括數據項或實(shí)體屬性的取值范圍及有效性規則),實(shí)體繼承,復雜關(guān)系定義,如:一對多,多對一及多對多以及反身(Reflexive)與依賴(lài)關(guān)系等(見(jiàn)圖5)。
這里需要特別指出,PowerDesigner引入了業(yè)務(wù)規則。定義了6種業(yè)務(wù)規則的類(lèi)型:定義型(Definition),事實(shí)型(Fact),有效型 (Validation),公式型(Formula),需求型(Requirement)和限制型(Constraint)。這些規則能夠定義實(shí)體、聯(lián)系的狀態(tài)、數據一致性及業(yè)務(wù)表達式。在CDM轉換成PDM的過(guò)程中,概念級定義的業(yè)務(wù)規則直接轉換成物理級的業(yè)務(wù)規則。在PDM 中,實(shí)現業(yè)務(wù)規則需要使用特定的RDBMS 的代碼(例如,觸發(fā)器或存儲過(guò)程)。上述功能大大增強了數據庫系統的分析建模能力。
3.3 物理數據模型(PDM)建模
CDM反映了業(yè)務(wù)領(lǐng)域中信息之間的關(guān)系,它不依賴(lài)于物理實(shí)現。只有重要的業(yè)務(wù)信息才出現在CDM 中。PDM定義了模型的物理實(shí)現細節。例如,所選RDBMS的數據類(lèi)型特征、索引定義、視圖定義、存儲過(guò)程定義、觸發(fā)器定義等。 PowerDesigner支持CDM和PDM之間的雙向工程。圖6是由圖5所示的CDM模型自動(dòng)生成的PDM模型,CDM中的實(shí)體,實(shí)體屬性,標識符,聯(lián)系,甚至繼承關(guān)系等都將自動(dòng)轉換為PDM中的表,列,主鍵或外鍵,參照完整性等。用戶(hù)可以通過(guò)屬性對話(huà)框,修改PDM模型并反向生成并合并(Merge)原來(lái)的CDM模型。
PDM建模除了最基本的數據庫建模(如表,列,主鍵/外鍵以及關(guān)系定義)的支持,還支持觸發(fā)器(Trigger)和存儲過(guò)程或函數的建立與優(yōu)化,并建立它們與業(yè)務(wù)規則的關(guān)系。用戶(hù)可以針對選擇的RDBMS,進(jìn)行數據庫的優(yōu)化設計。并且經(jīng)過(guò)PDM的模型校驗后,設置生成屬性(自12.0后,為了提高用戶(hù)設置的復用性,這些設置可以保存在模型內/外),可以生成SQL腳本,直至通過(guò)ODBC直接生成到最終的DBMS中。當然PowerDesigner還支持由 DBMS的逆向生成PDM模型,即用戶(hù)可以選擇DBMS中現有的表,生成它們的PDM模型。整個(gè)過(guò)程都是可以迭代進(jìn)行,不斷完善用戶(hù)的物理數據庫模型。
在完成PDM建模以后,用戶(hù)可以根據需求,如本書(shū)中的實(shí)例中要求基于XML的Web Service的集成,因此需要生成相應的XML模型。PowerDesigner可以根據用戶(hù)的選擇(如選擇所需的表等)生成相應的XML模型,并提供了進(jìn)一步編輯與修改環(huán)境。圖7是本書(shū)實(shí)例對應的XML模型及其屬性對話(huà)框。
3.4 數據倉庫(Data warehouse)建模
數據倉庫的作用在于從企業(yè)的應用系統中獲取信息并轉換到一個(gè)新的數據庫,通過(guò)對新庫中的歷史信息和面向主題的信息進(jìn)行分析,為決策提供支持。以本書(shū)的客戶(hù)訂單處理子系統為例,企業(yè)需要作出如下典型決策,如哪些產(chǎn)品最有利可圖?哪些客戶(hù)會(huì )為我們帶來(lái)最大利益?哪些環(huán)節需要花費很高的費用?哪些市場(chǎng)活動(dòng)運行得最好,為什么?我們有可能會(huì )失去哪些客戶(hù)等等。圖8是PowerDesigner建立的本書(shū)實(shí)例
相關(guān)的一個(gè)典型數據倉庫,表示訂單立方體(Cube)包含客戶(hù),產(chǎn)品,區域以及門(mén)店等維度(Dimension),在ORDER刻面(Fact)定義了不同的評價(jià)(measures)來(lái)進(jìn)行訂單分析。通過(guò)這樣的數據倉庫,用戶(hù)可以查看某個(gè)區域的某個(gè)產(chǎn)品的訂單情況,也可查看每天的訂單變化趨勢等等。
PowerDesigner不但是業(yè)界知名的數據庫設計工具,也是數據倉庫模型設計工具。支持多種數據倉庫模型,包括星型模式(Star)和雪花模式(Snowflake)。這是同行業(yè)中最優(yōu)秀、最靈活的開(kāi)發(fā)工具,可用來(lái)設計一個(gè)關(guān)系的或OLAP(聯(lián)機分析處理)的軟件倉庫。
PowerDesigner在數據倉庫設計工具市場(chǎng)中占有最大份額。它能從已有的數據庫進(jìn)行反向工程,從運行系統中將現存的數據結構抽取出來(lái)形成數據模型,使設計變得簡(jiǎn)單。
3.5 面向對象模型(OOM)建模
除了數據庫建模,采用標準建模語(yǔ)言UML,對企業(yè)應用系統從需求,分析與設計,實(shí)施等不同階段的全面建模,也是目前的主流方式。 PowerDesigner支持UML1.3的所有模型從PowerDesigner11.0開(kāi)始就全面支持UML2.0。
在PowerDesigner中用戶(hù)可以采用典型的面向對象分析方法,如用例驅動(dòng)的軟件分析與開(kāi)發(fā),即由需求模型出發(fā),建立用例圖,類(lèi)圖及其順序圖,進(jìn)而組件與部件圖。同時(shí),PowerDesigner是一個(gè)集成環(huán)境,各個(gè)模型之間可以快捷的模型同步與管理。特別地,本書(shū)實(shí)例是數據驅動(dòng)的企業(yè)應用,因此, OOM可以有PDM來(lái)自動(dòng)生成(如圖9)。
(特別需要指出,OOM和PDM地關(guān)系等價(jià)于模型級的O/R映射關(guān)系,可以很直接地支持現有比較流行地O/R 映射地框架,如Hibernate, JDO等,在1.8節中提到Hibernate代碼生成的支持。)用戶(hù)在此基礎上,對OOM修改,進(jìn)一步定義系統的動(dòng)態(tài)行為特性,如通過(guò)順序圖,活動(dòng)圖等。圖10是訂單處理子系統中的典型順序圖。當然用戶(hù)在進(jìn)行OOM建模的過(guò)程中,會(huì )加深對應用系統的理解,通常會(huì )對先前的PDM甚至CDM進(jìn)行優(yōu)化,可以利用PowerDesigner的雙向工程,在重新生成并合并已有模型。
3.6 信息流模型(ILM)建模
在企業(yè)應用的分析與開(kāi)發(fā)整個(gè)過(guò)程中,會(huì )有大量的模型產(chǎn)生,這些模型之間都存在相應的關(guān)系。PowerDesigner創(chuàng )新地提出信息流模型(ILM),并通過(guò)非常直觀(guān)的映射編輯器來(lái)表達模型之間的信息流動(dòng)關(guān)系,大大方便了企業(yè)級建模的管理能力。圖11是訂單處理子系統的典型信息流模型以及信息流動(dòng)關(guān)系的定義,這里表示的是PDM和OOM之間的一個(gè)信息映射關(guān)系。
3.7 程序生成的支持
在建模的基礎上,PowerDesigner可以生成應用程序代碼(如C#, Java等),當然也可以反向由應用程序更新相應的模型如類(lèi)圖(雙向工程)。因此用戶(hù)可以選擇建?;虼a優(yōu)先的不同的軟件開(kāi)發(fā)過(guò)程。
特別地,PowerDesigner由于其內置的模型映射關(guān)系(包括O/R mapping即PDM和OOM之間的映射關(guān)系),可以很直接支持目前比較流行的ORM mapping框架,如Hibernate,JDO的支持。圖12是典型的Hibernate的映射文件的代碼預覽。不僅如此,PowerDesigner提供了UI界面生成的支持,如現在比較流行的JSF(Java Server Faces)支持,真正實(shí)現了以數據為中心應用程序的完整的建模與開(kāi)發(fā)環(huán)境。
3.8 團隊開(kāi)發(fā)的支持
企業(yè)級應用的開(kāi)發(fā)通常都是有一個(gè)龐大的團隊來(lái)完成,而且在整個(gè)軟件開(kāi)發(fā)過(guò)程中的不同階段,會(huì )產(chǎn)生龐大的分析與設計模型,必須提供一個(gè)理想的團隊開(kāi)發(fā)解決方案,允許多個(gè)建模成員在一個(gè)相同的模型上同時(shí)工作,這個(gè)和傳統的軟件代碼版本管理如CVS,ClearCase有相似之處,不同的是模型的管理粒度,如支持類(lèi)圖甚至類(lèi)及其屬性的版本管理等。PowerDesigner基于RDBMS提供了所有模型的統一共享環(huán)境,一套元數據庫(metadata repository),成為企業(yè)知識庫,
圖13給出了一個(gè)典型實(shí)例,具體包括:
• 元模型管理—能在一個(gè)位置上存儲、管理和版本化PowerDesigner模型,以及其他類(lèi)型的文檔,同時(shí)全面的權限管理模型,能控制用戶(hù)對模型的訪(fǎng)問(wèn)和可視化。
• 跨模型的沖突分析—知識庫能為跨企業(yè)的沖突分析提供和維護完整的存儲和跨模型的依賴(lài)關(guān)系。
• 軟件資產(chǎn)管理—查找和重用跨越所有模型和項目的對象。
• 安全—基于角色的安全機制,同時(shí)伴有記錄日志的功能。
4 .總結
PowerDesigner提供了一整套可以靈活組合了數據建模、UML和業(yè)務(wù)處理建模技術(shù)的集成環(huán)境,支持產(chǎn)品生命周期的所有階段。
PowerDesigner利用基于可靠方法、真正的兩級(概念上和物理上)關(guān)系數據庫建模,設計并生成數據庫,還支持數據倉庫建模技術(shù)。同時(shí), PowerDesigner使用標準的UML技術(shù)完成面向對象的設計和分析。PowerDesigner不僅加速了分析、設計與開(kāi)發(fā)的全過(guò)程,也向最終用戶(hù)提供了管理和訪(fǎng)問(wèn)項目的信息的一個(gè)有效的結構,真正地提供了一個(gè)“一站式”建模與設計解決方案,最大限度地增強IT企業(yè)的生產(chǎn)效率和迅速適應變化的能力。