分享

善用PowerDesigner提昇軟體開發效率

 ilovepesx 2013-12-12
首先必須知道,PowerDesigner基本可以讓你設計哪些模組,這樣才知道我們該如何利用它帶來效益。就目前PowerDesigner 15來看,整體的架構如圖1所示。


圖1:PowerDesigner 15架構圖。(來源:http://www./products/modelingdevelopment/powerdesigner/powerdesigner15)


組成架構
整個架構建構於Repository內,Repository提供一個中央儲存設備,可儲存其內所設計的模組文件,並且在多人開發的環境中,做到版本控制和建構管理。

整體的核心是需求管理模組(Requirements Model),顧名思義,就是用來蒐集和管理需求,所有的模組設計都是起源於需求,所以位於中央的需求管理模組,就是為了便於和其他模組作雙向連結,以利追蹤和同步。

位於上方的企業架構模組(Enterprise Architecture Model),則是用來表達高階的企業架構模型,它可做為IT和業務間溝通的工具。筆者喜歡用一個範例來說明此模型的最佳使用案例,就是每當企業資訊長CIO跟企業主申請資訊費用,用以建構新的資訊系統,由於資訊系統包含了軟體,在成效的評估中,不是非常容易呈現,因此,善用企業架構模組來表達整體資訊架構,以圖像化呈現,就易為企業主所理解和評估,費用的申請也將較為順利。


City Planning Diagram
讀者可以參考圖2,這是企業架構模組其中一種架構圖,叫做City Planning Diagram,這個圖把軟體系統圖像化,表達軟體的功能和所扮演的角色。左方的部分,就是資料模組(Data Models),以資料分析的完整步驟來看,包含了概念資料模組(Conceptual DM)、邏輯資料模組(Logical DM)以及實體資料模組(Physical DM)。


圖2:企業架構模組:City Planning Diagram。

概念資料模組主要用來設計初步E-R Model;邏輯資料模組則是更進一步分析,資料正規化則可在此模組設計。至於實體資料模組則是實際DBMS內的映射,可表達和設計實際DBMS運作的資料物件,也就是最後的產出。圖2左下方還有一個模組,叫做Information Liquidity Model,用來表達資料流動的情形,這可用來表達資料移動、複製的情況,通常適用於Replication Server之類的軟體。

圖2右方的部分,主要表達程式架構(Application Architecture Models),與程式架構有關的,主要就是UML模組語言。在PowerDesigner內,用來規畫UML各圖形的模組,叫做物件導向模組(Object-Oriented Model,簡稱OOM),目前可規劃UML 2.0的圖形。至於跟程式間,有關資料交換的格式定義,主要使用XML,所以PowerDesigner也包含了一個XML Model,名稱就是如此。

圖2的右下方顯示了一個模組,叫做企業流程模組(Business Process Model),在分析階段,這可用來繪製流程圖,表達企業內部不同層級的流程示意圖;至於設計階段,則可產生各種流程語言,例如ebXML的BPSS或是WSBPEL等等,可結合SOA系統的設計。

各模組之間,也包含不同的關連,如前述提到的需求連結外,還包括物件和資料的對應關係(O-R Mapping),以及物件的轉換(import/export),這些筆者建議可以多加利用,除了便利外,更可讓你的設計合理化以及具有可追溯的效果。

接下來各主題,筆者將補充描述PowerDesigner其它功能,這些功能橫跨不同模組,並沒有受限特定模組。假如善用這些功能,對於模組的呈現,或是進一步的功能推進,將有顯而易見的效果,並且有機會增加你設計的彈性,以及工作上的效率。


圖庫管理
以往PowerDesigner的符號,表達的圖案都是PowerDesigner既有的圖案,假如要修改符號,你必須自行準備圖檔來置換。在PowerDesigner 15,考量製作或是準備圖檔的繁瑣,已經內含一個圖庫,裡面內含上千種的圖案供你選擇,因此可以大幅增加顯示圖案的多樣性,更能精準表達你想要表達的含意,這對於溝通上有很大的效果。

PowerDesigner的圖庫管理,是在「Select Image」的視窗中管理,如圖3開啟此視窗有以下方式:
●在menu中選擇Edit→Import Image,用來匯入圖檔,除了開啟Select Image視窗,也可以加入你自己的圖案檔。
●在任意符號上按滑鼠右鍵,例如BPM的Process程序,然後選擇Change Image選項,這個功能可以置換你的圖案,也會跳出Select Image視窗。
●在任意符號上按滑鼠右鍵,選擇Format,切換到Fill頁面,在裡面點選Modify按鈕,即可開啟。用來設定符號的底圖。
●在任意符號上按滑鼠右鍵,選擇Format,切換到Custom shape頁面,並勾選Enable Custom Shape,讓Browse按鈕可以點選,接下來點選此按鈕即可開啟。用來改變符號的圖案。


圖3:圖庫管理畫面。

在圖3左方,已經針對不同的圖案屬性,做不同的分類,特別一提的是,它把Office以及作業系統所使用的圖案,在這裡也列入進來,可以和你以往使用的圖案風格一致。右方則是圖案的清單,此畫面目前顯示的是之前使用過的圖案,這是為了方便你重複選取。

假如你要新增自己的圖案,只要點選上方(Add Directory[Ctrl+A]),即可加入你要的圖案。基本上它讓你選擇目錄,所以建議讀者可將你的圖案檔,統一放在某目錄,這樣便於管理。假如你的目錄不用的話,只要點選該目錄,再點選上方的Remove Directory按鈕,即可移除。

以產品叫修流程為例,對於客戶使用產品發生問題並尋求解決,假如客服當下處理完成,即回報客戶,萬一是產品問題,則回報原廠商處理。讀者可以參考圖4和圖5的範例,圖4是原本BPM顯示的流程圖,將各符號修改後,結果顯示在圖5,就可讀性而言,圖5的可讀性將大幅增加了。


圖4:未修改圖案的產品叫修流程圖。


圖5:修改圖案後的產品叫修流程圖。


OLE automation與VBScript
有不少工作,例如產生報表,寄發給相關人員、或是將最新的資料庫schema利用PowerDesigner匯出成DDL檔案等,都是人工行為,並且需要經常執行,非常繁瑣。假如我們能夠將這些動作自動化,將大幅減低繁瑣的工作,人力因而能更有效運用。PowerDesigner有提供使用OLE Automation或是VBScript的方式,就能做到上述自動化的功能,以下分別說明作法。

OLE automation是一種由外部應用程式來控制PowerDesigner的方法,目前只要能夠支援COM的語言,就可以藉由OLE automation來和PowerDesigner溝通,例如PowerBuilder、C++、VB,甚至Word和Excel的巨集;至於VBScript,是微軟的Script語言,基本上像Java或是C#這類的Script語言,也可以和PowerDesigner來溝通,只是目前PowerDesigner整合在工具內,可以讓你直接撰寫和執行測試的,只有VBScript。

究竟可以和PowerDesigner做哪些溝通呢?筆者列出較重要且實用的功能如下:
●建立和維護模組。
●模組檢查。
●對資料庫和程式執行正反向工程。
●新增或維護模組的延伸屬性(Extended Model Definition)。
●對Repository操作。
●對report產生HTML或是RTF檔案。
●對Workspace的操作和維護。

整個PowerDesigner的模組,都是在所謂的MetaModel架構之上,PowerDesigner特別提供一個MetaModel.OOM(位於%POWERDESIGNER%/examples),用來描述這個架構,你所設計的任何物件,在此模組都可找到相關的屬性和函數,供你參考呼叫。前述的OLE automation和VBScript,就是以這個架構,來和PowerDesigner互動。建議讀者可以先了解PowerDesigner提供Ole Automation和VBScript的程式範例,並同時參考MeatModel.OOM模組,這是學習上最快的道路。相關的範例各包含在PowerDesigner安裝目錄下的/Ole Automation以及/VB Scripts子目錄中。

我們就以圖5的BPM為範例,將此BPM轉換成符合UML標準的Activity Diagram。假設一個企業內有非常多的BPM需要轉換,就可利用OLE automation或是VBScript,寫一個程式來自動轉換,大幅降低重複性的工作。若是以VBScript撰寫,需放置在前述/VB Scripts子目錄內,提供檔案名稱例如BPM-Activity.vbs。讀者可在PowerDesigner內,開啟某BPM,然後找到menu→Tools→Execute Commands→Edit/Run Script,在此視窗執行BPM-Activity.vbs程式。(圖6)


圖6:自動將BPM轉換成Activity Diagram。

OLE automation和VBScript的方式雖然需要撰寫程式,可是筆者強調一點,就是它的應用可以非常多樣,重點在於這些程式是你寫的,所以你要如何應用皆可。例如你可以將讀取的模組寄發email給相關人員,或是自動排程產生報表,並寄出;接下來自動產生最新的資料庫DDL檔案,再交付給DBA;執行物件關聯分析,並將分析結果產生到Excel檔案等,相信聰明的讀者可以想出更多的應用模式。


資源檔案
PowerDesigner不少模組的產生,都有參考所謂的資源檔案(Resources File),若修改這些檔案,將會改變這些模組產生的行為。例如,各種不同的正反向工程,包括資料庫和PDM之間、物件導向程式碼和OOM之間、XML和XML模組,以及流程語言和BPM之間等正反向工程。

另外,報表所使用的語言、報表樣板、模組的延伸屬性以及PD所使用的轉換表(Conversion Table)等,這些全部都會用到資源檔案。可以想見,我們對PowerDesigner不少的操作,事實上都跟這些檔案息息相關,也由於PowerDesigner開放讓我們碰觸這些資源檔案,所以讓PowerDesigner變的非常有彈性。假如我們對這些檔案有適當的了解,這在某些情況下非常有幫助。

PowerDesigner提供一個編輯器讓我們以圖示化的方式來維護這些檔案,只要從menu中的Tools→Resources,然後選擇你要的資源檔案類型即可,這些資源檔案預設都是存放在[%PowerDesigner 15%/Resource Files/]目錄。一般而言,筆者不建議修改。以下有2個應用案例,當遇到此類問題時,可以試著用這個方法解決。

首先請參考圖7,這是AS/400資料庫資源檔被開啟的視窗,類型為DBMS,目前看到的畫面,是停留在Table物件的SqlListQuery屬性。圖7右方說明這是用來列出所有Table物件的SQL查詢命令,而右下方就是一段SQL命令。從這個命令來看,它是對資料庫的systables表格查詢資料,systables表格的資料包含此資料庫目前所有的表格,由此推論PowerDesigner對AS/400資料庫做反向工程時,所產生的Table物件,事實上是經由此段SQL命令查詢而來。

假設我們要對反向工程的規則有所改變,則可以修改此SQL。例如目前所讀取的表格是一般關連性資料庫的表格,要將AS/400的Physical File和Logical File的資料也要讀取出來,則SQL的where子句要將原本的「where table_type='T'」,改成「where table_type in ('T','P','L'),如此就可以將所有類型的資料讀取出來了。


圖7:AS/400的資源檔案。

另外一個常見的範例就是PowerDesigner所產出報表的語言類型(Report Languages),目前PowerDesigner預設有所謂Traditional Chinese的報表語言,可是裡面的慣用口語是大陸的用法,我們也可以利用資源檔的編輯器,開啟Traditional Chinese報表語言後,修改成我們習慣的口語。

參考圖8,目前的位置在[ZH-TW::Report Titles/Physical Data Model/Table/Procedures list],裡面針對Procedure List的描述是「表格%PARENT%的過程清單」,由於我們習慣將Procedure說成「預儲程序」,而非「過程」,所以可以將此段話修改成「表格%PARENT%的預儲程序清單」,更能表達產出報表的涵義。


圖8:Traditional Chinese報表語言的資源檔。


Extended Model Definitions
在某些情況下,PowerDesigner預設的模組,仍無法表達你要的屬性,你可能想要針對某個設計物件,加入自己新的屬性頁面,或是加入新的屬性,以表達你系統的特殊設計,或是既有選項不夠,你希望能加入新的選項,以便爾後維護模組時可以使用。諸如此類的機制,用來擴展既有模組的定義,就是所謂Extended Model Definition的功能。

要擴展模組的定義,你必須建立新的模組定義檔,並且在維護模組的時候,將此定義檔匯入到該模組,該模組才有新的屬性定義可以使用。模組定義檔的副檔名為.xem,建立的方法要從menu中,選擇Tools→Resources→Extended Model Definitions,選擇你要擴展的模組類型後,即可新增一個全新的定義檔案。

這裡我們舉一個範例,說明使用的方式。例如針對Sybase IQ的資料庫,既有的Table屬性,並沒有設定所在的dbspace,所以我們針對Table屬性,定義一個新的延伸屬性,用來定義該Table所處的dbspace位置。我們按照前述的步驟,選擇Physical Data Models的類型,並定義此屬性檔案的名稱為IQSpace,並且將該檔案存放於PowerDesigner,預設定義檔存放路徑%POWERDESIGNER%/Resource Files/Extended Model Definitions目錄。接下來我們新增一個MetaClasses,並選擇Table物件,表示我們要針對Table新增一個屬性,如圖9。


圖9:新增一個Table的Metaclass。

接下來在新增的Table Metaclass,按滑鼠右鍵,新增一個延伸屬性(Extended Attribute),並且將資料型態設定成String,以便輸入dbspace名稱。我們可以參考圖10的設定畫面。


圖10:新增DBSpace的Extended Attributes。

這些屬性設定是針對所有實體資料模組,並沒有限制該模組的DBMS類型,最後也會存回IQSpace.xem檔案。

接下來,我們可以新增一個實體資料模組,按照劇本,DBMS選擇Sybase IQ。由於既有實體資料模組的表格屬性,並無法輸入該表格所在dbspace,所以我們必須匯入IQSpace.xem,用來擴展此模組的屬性,以便輸入表格的dbspace名稱。

我們可以在開啟的實體資料模組,從menu中找到Model→Extended Model Definitions,然後選擇「Import An Extended Model Definition」,將IQSpace.xem選擇進來。接下來,我們開啟任一個表格屬性,將會出現一個全新的頁面,叫做「Extende Attributes」,並且裡面已有一個既有屬性設定,叫做「DBSpace」,如圖11所示。


圖11:Extended Attributes設定。


總結
這篇文章內容較為深入,但是要能善加利用PowerDesigner,一定要往這個方向走。尤其前述所提到的MetaModel,是整個PowerDesigner底層設計的核心,諸如前述提到的OLE Automation和VBScript、Resource File以及Extended Model Definitions,另外像是PowerDesigner檔案類型(XML格式),都是圍繞在這個MetaModel上,所以可以多花時間了解。

使用CASE Tool來進行軟體開發,筆者認為有三個複雜度:一是符號的複雜度,也就是符號解讀要有共識,要能正確,尤其是UML;二是方法論的複雜度,就是要有一套合理、嚴謹的流程,讓軟體的產出具備良好的品質;第三個複雜度就是工具的複雜度,要能夠善用工具,將所設計的藍圖能夠正確的顯示出來。以工具而言,不應該影響前兩者,而是輔助的角色。所以多了解工具可帶來的功能,將能降低前述兩者的複雜度,進而增進專案的品質,這就是此篇文章的目的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多