簡短的問題。你如何將UML圖轉換成代碼?類圖是一個很明顯的例子,但其他類如活動,用例,序列,狀態,包等等呢?將UML轉換爲代碼
3
A
回答
3
哇,如果你在開始編碼之前就已經擁有了所有這些,這真的很酷;)這意味着某人在爲期望的軟件建模時做了一份體面的工作!
也就是說,UML的各種圖可以或多或少貼近代碼。這裏是我對它一般來說的感覺:
- 類圖。在大多數情況下,與代碼一對一映射。仍然可以在分析過程中使用,以顯示不會一對一映射的概念,但這種情況非常罕見。
- 包裝圖。在大多數情況下,也可以與代碼一對一映射。除了展示實際來源的包裝之外,我從未看過它的任何用法。
- 序列圖。在大多數情況下,地圖也會相當接近代碼。除了順序圖中經常會避免的某些步驟,否則會變得很大。它仍然顯示直接或間接呼叫誰。
- 狀態圖。這一個更抽象。它顯示程序中的元素的各種狀態(或程序本身),不能按原樣轉置;您首先需要決定如何存儲/建模狀態。例如。在java中顯示可能的thread state的狀態圖並不映射到代碼中真正直接可見的內容,但線程有一個狀態,如corresponding enum所示。
- 活動圖。顯示算法/程序的各個步驟。儘管一些事情可以相當容易地進行轉置,例如循環,但其他一些(如並行活動)的實現在代碼中可能會有所不同。並行活動最明顯的實現是使用線程,但這可能是JMS,具體取決於圖的粒度。它仍然不會告訴你每一步的邏輯是什麼,所以最終有一些工作需要解釋和實施。
- 用例。這是最重要的一個。它不能被轉換,你需要考慮如何實現用例,這個用例可以從很高層次到低層次。沒有它的公式。
結論:UML是一種用各種視角描述軟件的工具。某些方面可以在代碼中輕鬆轉換,其他方面更加抽象,並且可以以各種方式實現,具體取決於圖的粒度。
這是設計和發展之間的區別:實行的是設計細化到一些真正的可執行文件(代碼),這可能需要更多或更少的工作依賴於現有設計的粒度。
這個夢當然是能夠生成UML的代碼,而反過來,但我們還沒有呢!它幾乎適用於類圖:)
2
我已經使用EclipseUML Omondo進行UML建模,並使用AndroMDA進行代碼生成。 您可以使用原型從Class,usecase和State圖生成代碼。您需要在分類器上添加原型,然後AndroMDA引擎讀取原型並生成代碼。 看看AndroMDA論壇的更多信息:http://forum.andromda.org/index.php
相關問題
- 1. 試圖將uml合成轉換成代碼[uml]
- 2. 將UML類圖轉換爲C++代碼(VS 2012)
- 3. 建議工具將cpp代碼轉換爲UML類圖
- 4. 將VB6代碼轉換爲PHP轉換
- 5. 將xml轉換爲代碼
- 6. 將代碼轉換爲POST
- 7. 將代碼轉換爲RequireJS
- 8. 將ASTNode轉換爲代碼
- 9. 將代碼轉換爲lambda
- 10. 將代碼轉換爲constexpr
- 11. 將代碼轉換爲python
- 12. 將Java代碼轉換爲C#代碼
- 13. 將Android代碼轉換爲MonoAndroid代碼
- 14. 將PHP代碼轉換爲C#代碼
- 15. 將JavaScript代碼轉換爲C代碼
- 16. 將Informatica代碼轉換爲SQL代碼
- 17. 將atmega32代碼轉換爲atmega16代碼
- 18. 將JavaScript代碼轉換爲VBScript代碼?
- 19. 將matlab代碼轉換爲R代碼
- 20. 將pyside代碼轉換爲pyqt5代碼
- 21. 將html代碼轉換爲actionscript代碼
- 22. 將PHP代碼轉換爲ColdFusion代碼
- 23. 將Javascript代碼轉換爲PHP代碼
- 24. 將僞代碼轉換爲C#代碼
- 25. 作業:將轉換後的僞代碼轉換爲C代碼
- 26. 協助將UML圖轉換成Ruby代碼
- 27. 如何將(.JAR)文件轉換爲UML?
- 28. 如何將UML轉換爲java?
- 29. 將XSD文件轉換爲UML模型
- 30. 使用XSLT將ReqIF轉換爲UML