一、Enterprise Architect簡介
Enterprise Architect是一個對於軟件系統開發有着極好支持的CASE軟件(Computer Aided Software Engineering)。EA不同於普通的UML畫圖工具(如VISIO),它將支撐系統開發的全過程。在需求分析階段,系統分析與設計階段,系統開發及部署等方面有着強大的支持,同時加上對10種編程語言的正反向工程,項目管理,文檔生成,數據建模等方面。可以讓系統開發中各個角色都獲得最好的開發效率。
二、創建新項目
安裝好了EA漢化版后,啟動軟件。點擊“創建新的項目”,打開創建新項目對話框。
【圖1】
這里可以選擇各種的初始的模板包。
【圖2】
我們選擇了其中幾個,然后確定打開了項目瀏覽器。我們的項目將從這里開始了。
【圖3】
三、EA軟件配置
在使用軟件之前,我們先來對它進行配置。打開“工具”–>“選項”。
【圖4】
常規配置中,比較重要的是作者這項。因為在EA項目的團隊協作中,作者是每個人的身份標識。
在代碼工程中,最好把文件編碼設置成UTF8或者是GB中文。
其他方面的配置,因為都是中文的,也比較容易理解。有些不明的地方,可以多琢磨。
另外對於最下面的十種編程語言,可以根據自己的需要,進行一些配置。比如PHP,可以配置PHP4或者是PHP5,那么生成的代碼也是有些不同的。還可以隱藏其他沒有用到的語言。
四、用例圖,類圖的使用
用例圖(use case)
用例圖是我們做系統分析的通常第一步,是非常重要的。畢竟大部分的開發流程,都將需求分析作為首要步驟,也是必要步驟。將系統需求化作圖型表達出來。首先是在項目瀏覽器中,右鍵“添加”–>“新建圖表”。
【圖5】
然后可以加入一些角色和用例,在每次在工具箱里面拉出一個元件,都將打開這個元件的設置對話框,在對話框內填入元件的名稱等信息。現在我們是表達一個用戶注冊和登錄的場景:
【圖6】
加入關聯,用例圖中最常用的關聯是“使用use”,當然也經常會用到“包含include”“擴展extend”。這兩者的區別是“包含”是主用例沒有包含其他的輔助用例就不能獨立執行,但是主用例可以在沒有“擴展”其他輔助用例的情況也可以執行。比如說,注冊是“包含”了檢查驗證碼,但是不一定會“擴展”發送通知郵件這個用例。
角色是用例圖的行為基礎。雖然角色可以是某種職位的人,或是數據庫,或是外部系統交互接口,但是每個用例圖,都是以角色為開始的。角色可以有類屬關系。比如說注冊用戶同時也是網站訪問者,注冊用戶可以做一切訪問者可以做的事情,但是注冊用戶還擁有一些網站訪問者沒有涉及的功能,比如登錄發文章之類。
【圖7】
類圖(Class)
類圖是代碼工程的基礎,同時也是系統設計部分的主體工作。類圖主要體現了系統詳細的實現架構。首先我們來制作一個實現用戶注冊功能的注冊業務類。
【圖7】
在生成類后,我們可以加入一些變量(在類元件上右鍵“變量”),變量主要將保存類本身的一些數據,如同人的性別,年齡等數據特征一樣。比如我們注冊類,也有數據鏈接的變量(它需要知道自己是和哪個數據庫打交道的),還可能有着每IP單日注冊數量限制的數據變量等等。
【圖8】
類還需要加入方法(在類元件上右鍵“方法”),比如說注冊類中,需要檢查輸入的驗證碼,需要進行數據操作,需要檢查單日注冊數量等等。在類的方法里面,我們還可以設置每個方法的參數,參數類型,還有參數的備注,這將在代碼工程內,直接作為參數和方法的注釋生成到代碼文件內。
【圖9】
各個類之間,可能存在着一些關系,那么我們使用關聯來表達這些關系。常用的有繼承關系(Generalize,或者叫派生類)。例如注冊的時候,我們可能有些特殊的注冊方式,比如接收了VIP卡號的人員注冊。VIP注冊比普通注冊多了一些步驟,比如驗證VIP卡號有效性等。這個VIP注冊類,就繼承於注冊類,擁有了全部普通注冊的功能,但是又有一些自己特有的功能,這樣就能體現了代碼的可重用性。同時在代碼生成的時候,會加上“extends”這個關鍵字來標識他們的關系。
【圖10】
五、其他圖形的使用
【圖11】
對象圖(Object),這是類圖的一種補充,主要是演示了系統中各個類,在不同的場景中,實例化之后所做的不同事情。
交互圖(interaction),協作圖(communication)和時序圖(Timing),他們都是體現了系統中一些實體之間的互相交互的行為。協作圖是側重與表達實體之間的協作交互,在新版的UML中,協作圖也叫通訊圖,更能體現了實體之間是以通訊的方式來進行協作的原理。而時序圖是強調了各個實體件進行交互的前后順序。例如發送注冊成功的提示郵件,那么是發生在注冊類檢驗輸入數據之后,而不能是之前。
另外,還有一些其他的圖形,比如狀態圖(State),部署圖(Deployment),組件圖(component),活動圖(Activity),這些請參考相關文檔。同時EA支持的圖形有非常的多,其中思維圖(表達和輔助了思維的思考過程),WEB模型圖(表現了網站上部署的模型結構)是最近幾個版本中才出現的。
六、數據建模
在數據模型圖(Data Modeling)中,EA支持13種不同型號的數據庫建模,可直接生成建表SQL語句,同時也可以通過ODBC,導入已存在的數據表結構。
【圖12】
下例我們建立一個學生宿舍人員組成的數據表,表類型使用的是MySQL。首先是建立了一個數據表元件,然后設置它的屬性。
【圖13】
加入字段(表元件上右鍵“變量”),設置字段的數據類型,長度,設成主鍵等。這里可以使用中文作為字段名,在“別名”處才寫上英文字段名,在生成SQL的時候,選擇“使用可用的別名”就可以生成英文名稱的字段名。
【圖14】
生成建表SQL,點擊數據模型的上級包,然后選擇“項目”–》“數據建模”–》“生成SQL代碼”,打開生成SQL的對話框。
【圖15】
設置好了后,點擊生成,就可以生成了一個完整的SQL建表語句了。
【圖16】
七、代碼工程
代碼工程就是將已經畫好的類圖,使用EA來生成相應的代碼結構,之所以說是代碼結構,是因為生成的代碼中,僅有初始的類結構和一些預設的值,類方法內部的代碼還是需要手動去寫的。另外,如果你在類的設置里,或者是變量,方法還有方法的參數里,加上了備注,那么,代碼工具將會幫助你把這些備注全部生成工整的代碼注釋。
使用之前的一個PHP類,選中右鍵“生成代碼”。然后彈出生成代碼的對話框。
【圖17】
設置后,點擊生成就可以生成了代碼結構了。
【圖18】
其他語言的代碼生成過程,也是大同小異的。代碼工程(正向工程)產生的代碼格式,可以在“設置”–>“代碼工程模板”里面進行自定義的模板修改。
八、反向工程
反向工程是將原有的類庫代碼,使用EA進入導入類結構,直接生成類圖。這在系統重構,或者是基於舊項目類庫制作新項目的時候,比較有用。
在項目瀏覽器,你要導入反向工程類圖的位置,右鍵“代碼工程”–> “導入源文件目錄”,打開反向工程對話框:
【圖19】
設置好后,點擊導入。一小段時間,就能將一個類庫導入了。以下演示的是導入SpeedPHP框架1.5版本的類圖。
【圖20】
九、項目管理
在EA中,不僅能對整個軟件開發生命周期的支持,還提供了項目管理,例如人員的管理,進度管理,風險管理等。
菜單“查看”–>“項目管理”
【圖21】
這里你可以分別管理“(人力)資源”,“工作”,“風險”,“度量”等幾個方面。
十、文檔生成
EA可以生成非常多種類型的文檔,以方便針對不同情況和不同閱讀對象,生成不同側重的文檔。還可以有RTF格式和HTML格式的選擇。
在項目瀏覽器中,選擇一個模型節點。然后右鍵“文檔”–>“RTF文檔”,打開生成文檔對話框。
【圖22】
這里可以生成多種類型的文檔。點擊“生成”。然后就會生成了一個RTF文件。
【圖23】
默認生成的文檔,里面有大部分的英文。當然,你可以將他們在RTF文件中改寫成中文。另外還可以使用生成文檔對話框中的“詞語翻譯”,來進行對應的翻譯,再生成新的翻譯后的文檔。同時你也可以直接修改EA中的文檔模板,這樣也可以產生自定義的文檔。