這里以學習日記的learndiaryV0.9.0.4為例,結(jié)合最新版的ArgoUML0.22簡述一下怎么樣從學習日記源代碼反向生成類圖。其它環(huán)境為:操作系統(tǒng):redhat linux9.0,jdk1.4.2_12-b03(最新的jdk6在ArgoUML0.22下工作起來據(jù)我使用好像有點問題)。
1、選擇檔案->匯入原始碼:


2、在出現(xiàn)的“匯入原始碼...”瀏覽對話框中選定源代碼頂層目錄:./learndiary/src/com:


3、在出現(xiàn)的“setup the import classpath”對話框中手工逐個把學習日記涉及到的類庫加進去:


我加了的類庫有:
1)Tomcat5.0中common目錄下的:common/lib/servlet-api.jar
2)學習日記源碼涉及到的類庫,都在 ./learndiary/web/WEB-INF/lib下面,包括(保險起見,都加吧:)):
activation.jar commons-logging.jar jstl.jar standard.jar
antlr.jar commons-validator.jar log4j-1.2.12.jar struts-el.jar
commons-beanutils.jar CVS mail.jar struts.jar
commons-digester.jar jakarta-oro.jar mysql-connector-java-3.1.12-bin.jar
commons-fileupload.jar jdom.jar rome-0.8.jar
(注:這是現(xiàn)在cvs庫中的最新版,里面有些類庫是learndiaryV0.9.0.4沒有的,你如果用learndiaryV0.9.0.4的話就可以不加。)
這個過程有點麻煩,也是argouml需要改進的地方,還有,加了第一個路徑后,你會發(fā)現(xiàn)對話框跑到主界面后面去了,你加下一個的時候需要在任務(wù)欄上的相應(yīng)圖標上點一下才能使它成為當前對話框繼續(xù)添加classpath。
4、把classpath添加完后,點擊OK,你就可以把源代碼反向成類圖了,這個過程可能要花幾分鐘,可要耐心點喲:)


這樣,完成反向工程了。但是,因為argouml現(xiàn)在還在開發(fā)中,還沒有達到一個成熟的V1.0版,據(jù)我的經(jīng)驗,反向的類圖如果再正向生成代碼是通不過編譯的,比如,在類com.learndiary.website.util.Util.java中
反向后的類文件頭部為:
而真正的原始文件頭部為:
這顯然是不對的。但是,其它的絕大多數(shù)類是正確的。所以我認為,ArgoUML現(xiàn)在作為一個uml基礎(chǔ)知識的學習工具和一些不需要雙向生成類圖和類的簡單應(yīng)用中可用。也就是說,我認為ArgoUML還不是一個可用的生產(chǎn)版本!
下面征對一個朋友的提問“servlet和struts的包是如何導(dǎo)入到ArgoUML中”來說一下怎樣單獨把這些類庫反向工程成類圖。
1、同上面的第1步同;
2、在同樣的“匯入原始碼...”瀏覽對話框中的“select language for import”中選擇“java from classes” :


3、在出現(xiàn)的“匯入原始碼...”瀏覽對話框中選定你要反向工程的類庫,比如下面的struts.jar:


4、在出現(xiàn)的“setup the import classpath”對話框中手工逐個把編譯這個類庫涉及到的其它類庫加進去,因為我不清楚struts.jar都需要依賴什么其它類庫,所以把Struts的lib目錄下的所有jar文件都加進去了,外加Tomcat5.0下面的那個:common/lib/servlet-api.jar(我也不知道是不是該用J2EE中的servlet相關(guān)的那個類庫?或者用這個就行了?)
因為,我對UML的應(yīng)用僅限于非?;A(chǔ)的類分析和活動分析,用于在后來加入的部分模塊的設(shè)計中理清思路。我覺得對我來說ArgoUML已經(jīng)夠用了。而且,我的使用過程中也有一些肯定不正規(guī)的甚至錯誤的UML應(yīng)用,還希望看到的朋友能夠指點一二。我的電子郵件為:mdx-xx@tom.com,你最好是在網(wǎng)上給我留言。謝謝。
1、選擇檔案->匯入原始碼:


2、在出現(xiàn)的“匯入原始碼...”瀏覽對話框中選定源代碼頂層目錄:./learndiary/src/com:


3、在出現(xiàn)的“setup the import classpath”對話框中手工逐個把學習日記涉及到的類庫加進去:


我加了的類庫有:
1)Tomcat5.0中common目錄下的:common/lib/servlet-api.jar
2)學習日記源碼涉及到的類庫,都在 ./learndiary/web/WEB-INF/lib下面,包括(保險起見,都加吧:)):
activation.jar commons-logging.jar jstl.jar standard.jar
antlr.jar commons-validator.jar log4j-1.2.12.jar struts-el.jar
commons-beanutils.jar CVS mail.jar struts.jar
commons-digester.jar jakarta-oro.jar mysql-connector-java-3.1.12-bin.jar
commons-fileupload.jar jdom.jar rome-0.8.jar
(注:這是現(xiàn)在cvs庫中的最新版,里面有些類庫是learndiaryV0.9.0.4沒有的,你如果用learndiaryV0.9.0.4的話就可以不加。)
這個過程有點麻煩,也是argouml需要改進的地方,還有,加了第一個路徑后,你會發(fā)現(xiàn)對話框跑到主界面后面去了,你加下一個的時候需要在任務(wù)欄上的相應(yīng)圖標上點一下才能使它成為當前對話框繼續(xù)添加classpath。
4、把classpath添加完后,點擊OK,你就可以把源代碼反向成類圖了,這個過程可能要花幾分鐘,可要耐心點喲:)


這樣,完成反向工程了。但是,因為argouml現(xiàn)在還在開發(fā)中,還沒有達到一個成熟的V1.0版,據(jù)我的經(jīng)驗,反向的類圖如果再正向生成代碼是通不過編譯的,比如,在類com.learndiary.website.util.Util.java中
反向后的類文件頭部為:
|
而真正的原始文件頭部為:
|
這顯然是不對的。但是,其它的絕大多數(shù)類是正確的。所以我認為,ArgoUML現(xiàn)在作為一個uml基礎(chǔ)知識的學習工具和一些不需要雙向生成類圖和類的簡單應(yīng)用中可用。也就是說,我認為ArgoUML還不是一個可用的生產(chǎn)版本!
下面征對一個朋友的提問“servlet和struts的包是如何導(dǎo)入到ArgoUML中”來說一下怎樣單獨把這些類庫反向工程成類圖。
1、同上面的第1步同;
2、在同樣的“匯入原始碼...”瀏覽對話框中的“select language for import”中選擇“java from classes” :


3、在出現(xiàn)的“匯入原始碼...”瀏覽對話框中選定你要反向工程的類庫,比如下面的struts.jar:


4、在出現(xiàn)的“setup the import classpath”對話框中手工逐個把編譯這個類庫涉及到的其它類庫加進去,因為我不清楚struts.jar都需要依賴什么其它類庫,所以把Struts的lib目錄下的所有jar文件都加進去了,外加Tomcat5.0下面的那個:common/lib/servlet-api.jar(我也不知道是不是該用J2EE中的servlet相關(guān)的那個類庫?或者用這個就行了?)
因為,我對UML的應(yīng)用僅限于非?;A(chǔ)的類分析和活動分析,用于在后來加入的部分模塊的設(shè)計中理清思路。我覺得對我來說ArgoUML已經(jīng)夠用了。而且,我的使用過程中也有一些肯定不正規(guī)的甚至錯誤的UML應(yīng)用,還希望看到的朋友能夠指點一二。我的電子郵件為:mdx-xx@tom.com,你最好是在網(wǎng)上給我留言。謝謝。
發(fā)表評論 評論 (3 個評論)
實際上這個說法不當,真有人用ArgoUML作真正的商業(yè)應(yīng)用。下面是我大概1年多兩年前在argouml的用戶郵件列表中得到的一個argouml模型局部(也只有局部,別人不會把整個商業(yè)建模的成果拿出來分享吧,這個模型局部好像是他在回復(fù)某位用戶對argouml用于實際生產(chǎn)中的可能性表示懷疑的回答吧),明顯可以看出來是用于商業(yè)正式應(yīng)用的。后面是它的建模圖片和它的argouml模型。
而且,ArgoUML用的是非常寬松的開源協(xié)議BSD協(xié)議,聽說商業(yè)應(yīng)用都是完全免費的喲(應(yīng)該是吧,具體還沒有詳細研究:))
我會繼續(xù)使用ArgoUML的,別的不說,就是沖在他們堅持了10年不間斷的前進的那種精神上也要使用和支持他們。況且,我用的完全是UML中最基本的一些概念,主要是用來理清自己的設(shè)計思路的,argouml的表達能力對我來說應(yīng)該綽綽有余了吧。
附圖:
1、類圖:
2、頁面導(dǎo)航設(shè)計圖:
3、argouml建模文件:
附件:filmLibrary.zargo.zip,11897 bytes
剛看你的挺激動,仔細一看,反的
在ArgoUML0.22中的方法是在“檔案”菜單(左起第一個菜單)中選擇“Export as XMI...”即可。
另外,分享兩篇關(guān)于UML和XMI的文章:
XMI 與 UML 合力推動產(chǎn)品開發(fā): http://www-128.ibm.com/developerworks/cn/xml/x-xmi/index.html
使用 XML: UML、XMI 和代碼生成,第 1 部分: http://www-128.ibm.com/developerworks/cn/xml/x-wxxm23/index.html