Làm cách nào tôi có thể tạo các sơ đồ UML (đặc biệt là sơ đồ tuần tự) từ mã Java hiện có?
Làm cách nào tôi có thể tạo các sơ đồ UML (đặc biệt là sơ đồ tuần tự) từ mã Java hiện có?
Câu trả lời:
Là những gì tôi đã sử dụng. Nó dễ dàng cài đặt từ kho lưu trữ:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
Và tạo ra các sơ đồ UML khá đẹp:
ObjectAid UML Explorer khác với các công cụ UML khác. Nó sử dụng ký hiệu UML để hiển thị biểu diễn đồ họa của mã hiện tại chính xác và cập nhật như trình soạn thảo văn bản của bạn, trong khi rất dễ sử dụng. Một số tính năng độc đáo làm cho điều này có thể:
- Mã nguồn và thư viện của bạn là mô hình được hiển thị, chúng không được thiết kế ngược lại thành một định dạng khác.
- Nếu bạn cập nhật mã của mình trong Eclipse, sơ đồ của bạn cũng được cập nhật; không cần phải đảo ngược mã nguồn kỹ sư.
- Tái cấu trúc cập nhật sơ đồ cũng như mã nguồn của bạn. Khi bạn đổi tên một trường hoặc di chuyển một lớp, sơ đồ của bạn chỉ đơn giản phản ánh các thay đổi mà không mất đồng bộ.
- Tất cả các sơ đồ trong không gian làm việc Eclipse của bạn được cập nhật với các thay đổi tái cấu trúc khi thích hợp. Nếu cần thiết, chúng được kiểm tra ra khỏi hệ thống kiểm soát phiên bản của bạn.
- Các sơ đồ được tích hợp hoàn toàn vào IDE Eclipse. Bạn có thể kéo các lớp Java từ bất kỳ khung nhìn nào khác vào sơ đồ và thông tin liên quan đến sơ đồ được hiển thị trong các khung nhìn khác bất cứ khi nào có thể áp dụng.
An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
EDIT: Nếu bạn là một nhà thiết kế thì Paccorus là lựa chọn tốt nhất của bạn, nó rất tiên tiến và đầy đủ các tính năng, nhưng nếu bạn chỉ muốn phác thảo một số sơ đồ UML và cài đặt dễ dàng thì ObjectAid khá tuyệt và nó không yêu cầu bất kỳ plugin nào chỉ cần cài đặt nó qua Eclipse-Java EE và hoạt động rất tốt!
CẬP NHẬT ngày 11 tháng 10 năm 2013
Bài viết gốc của tôi là vào tháng 6 năm 2012, rất nhiều thứ đã thay đổi, nhiều công cụ đã phát triển và những thứ khác thì không. Vì tôi sẽ quay lại để thực hiện một số mô hình hóa và cũng nhận được một số phản hồi cho bài đăng, tôi quyết định cài đặt lại giấy cói và sẽ điều tra lại các giải pháp mô hình hóa UML có thể khác. Việc tạo UML (có tính năng đồng bộ hóa) thực sự quan trọng không phải đối với nhà thiết kế phần mềm mà là nhà phát triển trung bình.
Tôi ước rằng giấy cói có cách đơn giản để đảo ngược các lớp Kỹ sư thành sơ đồ lớp UML và sẽ rất tuyệt nếu kỹ thuật đảo ngược đó có tính năng đồng bộ hóa, nhưng không may là dự án giấy cói có đầy đủ các tính năng và tôi nghĩ rằng các nhà phát triển đã có sẵn rất nhiều những hành động bạn làm trên giấy cói có thể không cung cấp cho bạn bất kỳ phản hồi nào và dù sao cũng không có gì xảy ra ngoài phạm vi câu hỏi này.
Câu trả lời (ngày 11 tháng 10 năm 2013)
Công cụ
Các bước
Nhấp chuột phải vào MyProject_kdm.xmi -> Discovery -> Discoverer -> Khám phá mô hình UML từ mã KDM một lần nữa, bạn sẽ nhận được hộp thoại thuộc tính đặt propization serialization thành TRUE để tạo tệp có tên MyProject.uml
Di chuyển MyProject.uml đã tạo được tạo ở thư mục gốc, vào thư mục UML, Eclipse sẽ hỏi bạn Nếu bạn muốn thay thế nó, hãy nhấp vào có. Những gì chúng tôi đã làm ở đây là chúng tôi đã thay thế một mô hình trống bằng một mô hình được tạo.
ALT + W -> hiển thị chế độ xem -> giấy cói -> mô hình thám hiểm
Trong chế độ xem đó, bạn sẽ tìm thấy các lớp của mình như trong hình
Trong chế độ xem Nhấp chuột phải vào mô hình gốc -> Sơ đồ mới
Sau đó bắt đầu lấy các lớp vào sơ đồ từ khung nhìn
Một số tính năng
Để hiển thị các thành phần lớp (biến, hàm, v.v.) Nhấp chuột phải vào bất kỳ lớp nào -> Bộ lọc -> hiển thị / ẩn nội dung Voila !!
Bạn có thể có các cài đặt màu thân thiện mặc định từ Cửa sổ -> pereferences -> giấy cói -> sơ đồ lớp
một cài đặt rất quan trọng là Sắp xếp khi bạn thả các lớp mà chúng nhận được nhấp chuột phải vào bất kỳ khoảng trống nào trong sơ đồ lớp và nhấp vào Sắp xếp tất cả
Các mũi tên trong khung nhìn thám hiểm mô hình có thể được lấy vào sơ đồ để hiển thị khái quát hóa, hiện thực hóa, v.v.
Sau khi tất cả các cài đặt của bạn sẽ hiển thị sơ đồ như
Đồng bộ hóa không khả dụng theo như tôi biết, bạn sẽ cần nhập thủ công bất kỳ lớp mới nào.
Đó là tất cả, Và đừng mua các sản phẩm thương mại trừ khi bạn thực sự cần nó, giấy cói thực sự tuyệt vời và tinh vi thay vì tặng hoặc một cái gì đó.
Tuyên bố miễn trừ trách nhiệm: Tôi không có liên quan đến những người có giấy cói, thực tế, lúc đầu tôi không thích giấy cói cho đến khi tôi thực hiện nhiều nghiên cứu và trải nghiệm nó với một chút kiên nhẫn. Và sẽ quay lại bài đăng này một lần nữa khi tôi thử các công cụ miễn phí khác.
Cơ sở mã của bạn là gì? Java hay C ++?
eUML2 cho Java là một trình tạo mô hình UML mạnh mẽ được thiết kế cho nhà phát triển Java trong Eclipse. Phiên bản miễn phí có thể được sử dụng cho mục đích thương mại. Nó hỗ trợ các tính năng sau:
- CVS và hỗ trợ nhóm
- Được thiết kế cho dự án lớn với nhiều chế độ xem mô hình và có thể tùy chỉnh
- Tuân thủ Helios
- Đồng bộ hóa mã / mô hình thời gian thực
- Tuân thủ UML2.1 và hỗ trợ OMG XMI
- Hỗ trợ JDK 1.4 và 1.5
Phiên bản thương mại cung cấp:
Kỹ thuật đảo ngược tiên tiến
- Công cụ phân tích phụ thuộc thực sự mạnh mẽ
- Hồ sơ UML và MDD
- Công cụ cơ sở dữ liệu
- Hỗ trợ mẫu có thể tùy chỉnh
Tôi là một trong những tác giả, vì vậy câu trả lời có thể bị sai lệch. Nó là mã nguồn mở (Apache 2.0), nhưng plugin không miễn phí. Bạn không phải trả tiền (rõ ràng) nếu bạn nhân bản và xây dựng nó tại địa phương.
Trên Intellij IDEA, ZenUML có thể tạo sơ đồ trình tự từ mã Java.
Hãy xem thử tại https://plugins.jetbrains.com/plugin/12437-zenuml-support
Làm thế nào về PlantUML ? Nó không dành cho kỹ thuật đảo ngược !!! Đó là cho kỹ thuật trước khi bạn mã.
Tôi đã phát triển một plugin maven có thể cả hai, được chạy từ CLI làm mục tiêu plugin hoặc nhập dưới dạng phụ thuộc và lập trình sử dụng trình phân tích cú pháp, @see Main#main()
để có ý tưởng về cách.
Nó hiển thị mã src PlantUML của các gói mong muốn theo cách đệ quy mà bạn có thể chỉnh sửa thủ công nếu cần (hy vọng bạn sẽ không). Sau đó, bằng cách dán mã trong trang plantUML hoặc bằng cách tải xuống jar của nhà máy, bạn có thể hiển thị sơ đồ UML dưới dạng hình ảnh png.
Kiểm tra nó ở đây https://github.com/juanmf/Java2PlantUML
Bất kỳ đóng góp là nhiều hơn chào mừng. Nó có một bộ các bộ lọc tùy chỉnh đầu ra nhưng tôi chưa để lộ những bộ lọc này trong các tham số CLI của plugin.
Điều quan trọng cần lưu ý là nó không giới hạn đối với các tệp * .java của bạn, nó có thể hiển thị sơ đồ UML src từ các phụ thuộc maven của bạn. Điều này rất thuận tiện để hiểu các thư viện mà bạn phụ thuộc vào. Nó thực sự kiểm tra các lớp được biên dịch với sự phản chiếu nên không cần nguồn
Hãy là người đầu tiên đánh dấu sao tại GitHub: P
Tôi muốn giới thiệu EclipseUML từ Omondo để sử dụng chung, mặc dù tôi đã gặp một số vấn đề trong vài tháng trước, với các dự án web của tôi. Họ đã có một phiên bản miễn phí tại một thời điểm, nhưng điều đó được cho là không còn được quảng bá.
Nếu bạn thực sự quan tâm đến các sơ đồ trình tự kỹ thuật đảo ngược từ mã nguồn, tôi muốn giới thiệu jTracert .
Theo như các dự án Eclipse có liên quan, dự án Công cụ UML2 của Eclipse có thể hỗ trợ kỹ thuật đảo ngược, mặc dù tôi chưa bao giờ thấy việc sử dụng nó trong thực tế.
Dự án MoDisco (Model Discovery) Dự án Eclipse GMT dường như rõ ràng hơn trong việc đạt được mục tiêu của bạn. Các danh sách các công cụ cụ thể công nghệ sẽ là một nơi tốt để bắt đầu.
jSonde
không có sẵn trong URL hiển thị ở trên. Bạn có thể tìm thấy một trang web và mã nguồn trong Github: github.com/bedrin/jsonde .
Tôi thấy plugin Green rất đơn giản để sử dụng và tạo sơ đồ lớp từ mã nguồn. Hãy thử một lần :). Chỉ cần sao chép plugin vào thư mục plugin của bạn.
Bạn cũng có thể dùng thử bộ điều chế UML của netbeans. Tôi đã sử dụng nó để tạo javacode mà tôi đã sử dụng trong các dự án nhật thực của mình. Bạn thậm chí có thể nhập các dự án nhật thực trong netbeans và giữ cho các cài đặt nhật thực được đồng bộ hóa với các cài đặt dự án netbeans.
Tôi đã thử một số bộ điều chế UML cho nhật thực và không hài lòng với chúng. Chúng hoặc không ổn định, phức tạp hoặc chỉ đơn giản là xấu xí. ;-)
Sử dụng IntelliJ IDEA. Để tạo sơ đồ lớp, chọn gói và nhấn Ctrl+ Alt+ U:
Theo mặc định, nó chỉ hiển thị tên lớp và không phải tất cả các phụ thuộc. Để thay đổi: nhấp chuột phải -> Hiển thị Danh mục ... và Hiển thị phụ thuộc:
Để sơ đồ phụ thuộc genarate (sơ đồ triển khai UML) và bạn sử dụng maven đi Xem -> Công cụ Windows -> Dự án Maven và nhấn Ctrl+ Alt+ U:
Ngoài ra có thể tạo ra nhiều sơ đồ khác. Xem tài liệu .
Bạn có thể sử dụng bản dựng đánh giá 30 ngày của EclipseUML cho Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Đây không phải là bản dựng 3.6 mới nhất, nhưng khá tốt và không yêu cầu bạn mua nó để thử nghiệm và kỹ thuật đảo ngược.
Kỹ thuật đảo ngược: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
Bản demo flash trực tiếp: http://www.ejb3.org/reverse.swf
EclipseUML Omondo là công cụ tốt nhất trên thế giới dành cho Java. Chỉ eUML dường như cạnh tranh với nó trên thị trường đồng bộ hóa java trực tiếp này, nhưng eUML thêm các thẻ mô hình trong mã thực sự rất rất xấu và chắc chắn không phù hợp với tôi.
Cho đến nay, công cụ tốt nhất mà tôi đã sử dụng cho kỹ thuật đảo ngược và java vấp vòng -> UML là Borland's Together . Nó dựa trên Eclipse (không chỉ là một plugin) và thực sự hoạt động tốt.
Tôi đề nghị PlantUML. công cụ này rất hữu ích và dễ sử dụng. PlantUML có một plugin cho Netbeans mà bạn có thể tạo sơ đồ UML từ mã java của mình.
bạn có thể cài đặt plugin PlantUML trong netbeans bằng phương pháp này:
Menu Netbeans -> Công cụ -> Plugin
Bây giờ chọn Plugin có sẵn và sau đó tìm PlantUML và cài đặt nó.
Để biết thêm thông tin, hãy truy cập trang web: www.plantuml.com
Tôi đã nhận thấy plugin SequenceDiagram cho Intellij cũng là một lựa chọn tốt.
Một công cụ mô hình hóa khác cho Java là trang web (của tôi) GitUML . Tạo sơ đồ UML từ mã Java hoặc Python được lưu trữ trong kho GitHub.
Một ý tưởng quan trọng với GitUML là giải quyết một trong những vấn đề với "tài liệu": sơ đồ đó luôn lỗi thời. Với GitUML, sơ đồ sẽ tự động cập nhật khi bạn đẩy mã bằng git.
Duyệt qua các sơ đồ UML cộng đồng, có một số mẫu thiết kế Java ở đó. Lướt qua các kho lưu trữ GitHub phổ biến và trực quan hóa các kiến trúc và các mẫu trong đó.
Tạo sơ đồ bằng cách sử dụng điểm và nhấp chuột. Không có trình soạn thảo kéo thả, chỉ cần nhấp vào các lớp trong cây kho lưu trữ mà bạn muốn trực quan hóa:
Công nghệ cơ bản dựa trên PlantUML, có nghĩa là bạn có thể tinh chỉnh sơ đồ của mình bằng cách đánh dấu PlantUML bổ sung.
Có một công cụ miễn phí có tên binarydoc có thể tạo UML Sequence Diagram
hoặc Control Flow Graph
( CFG
) từ bytecode
(thay vì mã nguồn) của phương thức Java.
Dưới đây là sơ đồ mẫu binarydoc được tạo cho phương thức java java.net.Ab tríchPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: