Bagaimana saya bisa menghasilkan diagram UML (terutama diagram urutan) dari kode Java yang ada?
java
uml
reverse-engineering
diagram
Jonathan
sumber
sumber
Jawaban:
Explorer UML ObjectAid
Apakah yang saya gunakan. Mudah diinstal dari repositori:
Dan menghasilkan diagram UML yang cukup bagus:
Deskripsi dari situs web:
sumber
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: Jika Anda seorang desainer maka Papyrus adalah pilihan terbaik Anda, itu sangat canggih dan penuh fitur, tetapi jika Anda hanya ingin membuat sketsa beberapa diagram UML dan pemasangan yang mudah maka ObjectAid cukup keren dan tidak memerlukan plugin apa pun. baru saja menginstalnya di Eclipse-Java EE dan berfungsi dengan baik!
PEMBARUAN 11 Oktober 2013
Posting asli saya adalah pada Juni 2012 banyak hal telah berubah banyak alat telah berkembang dan yang lainnya tidak. Karena saya akan kembali untuk melakukan beberapa pemodelan dan juga mendapatkan beberapa balasan untuk posting saya memutuskan untuk menginstal papyrus lagi dan akan menyelidiki kemungkinan solusi pemodelan UML lainnya. Generasi UML (dengan fitur sinkronisasi) sangat penting bukan untuk perancang perangkat lunak tetapi bagi pengembang rata-rata.
Saya berharap papirus memiliki cara langsung ke kelas Reverse Engineer ke dalam diagram kelas UML dan itu akan sangat keren jika rekayasa terbalik memiliki fitur sinkronisasi, tapi sayangnya proyek papirus penuh dengan fitur dan saya pikir pengembang sudah memiliki banyak di tangan karena juga banyak tindakan yang Anda lakukan terhadap papirus mungkin tidak memberi Anda respons apa pun dan tidak ada apa-apa yang terjadi, tetapi hal itu di luar cakupan pertanyaan ini.
Jawabannya (11 Oktober 2013)
Alat
Langkah
Klik kanan pada MyProject_kdm.xmi -> Discovery -> Discoverer -> Temukan model UML dari kode KDM lagi Anda akan mendapatkan dialog properti mengatur prop serialisasi ke TRUE untuk menghasilkan file bernama MyProject.uml![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/x4YZO.png)
Pindahkan MyProject.uml yang dihasilkan yang dihasilkan di root, ke folder UML, Eclipse akan bertanya kepada Anda Jika Anda ingin menggantinya klik ya. Apa yang kami lakukan di sini adalah bahwa kami mengganti model kosong dengan yang dihasilkan.
ALT + W -> tampilkan tampilan -> papyrus -> model explorer
Dalam tampilan itu, Anda akan menemukan kelas Anda seperti pada gambar![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/VLL54.png)
Pada tampilan Klik kanan model root -> Diagram baru![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/jIBGE.png)
Kemudian mulailah mengambil kelas ke diagram dari tampilan
Beberapa fitur
Untuk menampilkan elemen kelas (variabel, fungsi, dll) Klik kanan pada sembarang kelas -> Filter -> tampilkan / sembunyikan konten Voila !!
Anda dapat memiliki pengaturan warna ramah standar dari Window -> pereferences -> papyrus -> diagram kelas
satu pengaturan yang sangat penting adalah Atur ketika Anda menjatuhkan kelas mereka mendapatkan klik kanan sempit pada ruang kosong di diagram kelas dan klik Atur Semua
Panah dalam tampilan model explorer dapat diambil ke diagram untuk menunjukkan generalisasi, realisasi dll
Setelah semua itu, pengaturan Anda akan menampilkan diagram seperti![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/CEPI8.png)
Sinkronisasi tidak tersedia sejauh yang saya tahu Anda perlu mengimpor kelas baru secara manual.
Itu saja, Dan jangan membeli produk komersial kecuali Anda benar-benar membutuhkannya, papirus sebenarnya hebat dan canggih, bukan sumbangan atau semacamnya.
Penafian: Saya tidak punya hubungan dengan orang-orang papirus, pada kenyataannya, saya tidak suka papirus pada awalnya sampai saya melakukan banyak penelitian dan mengalaminya dengan sabar. Dan akan kembali ke posting ini lagi ketika saya mencoba alat gratis lainnya.
sumber
Apa basis kode Anda? Java atau C ++?
sumber
Pada Intellij IDEA, ZenUML dapat menghasilkan diagram urutan dari kode Java.![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/UcsWi.gif)
Lihat di https://plugins.jetbrains.com/plugin/12437-zenuml-support
Kode sumber: https://github.com/ZenUml/jetbrains-zenuml
sumber
Bagaimana dengan PlantUML ? Ini bukan untuk rekayasa terbalik !!! Ini untuk rekayasa sebelum Anda kode.
sumber
Saya mengembangkan plugin pakar yang dapat keduanya, dijalankan dari CLI sebagai tujuan plugin, atau impor sebagai ketergantungan dan secara terprogram menggunakan parser,
@see Main#main()
untuk mendapatkan ide tentang caranya.Ini membuat kode PlantUML src paket yang diinginkan secara rekursif yang dapat Anda edit secara manual jika diperlukan (mudah-mudahan Anda tidak akan). Kemudian, dengan menempelkan kode di halaman plantUML, atau dengan mengunduh toples plant Anda dapat merender diagram UML sebagai gambar png.
Lihat di sini https://github.com/juanmf/Java2PlantUML
Diagram keluaran contoh:![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/kkUpH.png)
Setiap kontribusi lebih dari diterima. Ini memiliki satu set filter yang mengkustomisasi output tetapi saya belum memaparkan ini di params plugin CLI.
Penting untuk dicatat bahwa ini tidak terbatas pada file * .java Anda, dapat membuat diagram UML src dari maven dependensi Anda juga. Ini sangat berguna untuk memahami perpustakaan yang Anda andalkan. Ini benar-benar memeriksa kelas yang dikompilasi dengan refleksi sehingga tidak diperlukan sumber
Jadilah yang pertama memberi bintang di GitHub: P
sumber
Saya akan merekomendasikan EclipseUML dari Omondo untuk penggunaan umum, meskipun saya mengalami beberapa masalah beberapa bulan lalu, dengan proyek web saya. Mereka memiliki edisi gratis pada satu titik waktu, tetapi itu seharusnya tidak lagi dipromosikan.
Jika Anda benar-benar tertarik pada diagram urutan rekayasa terbalik dari kode sumber, saya akan merekomendasikan jTracert .
Sejauh menyangkut proyek Eclipse sendiri, proyek Eclipse UML2 Tools mungkin mendukung reverse engineering, meskipun saya belum pernah melihat penggunaannya dalam praktik.
Proyek MoDisco (Model Discovery) proyek Eclipse GMT proyek tampaknya lebih jelas dalam mencapai tujuan Anda. The daftar alat khusus teknologi akan menjadi tempat yang baik untuk memulai dengan.
sumber
jSonde
tersedia di URL yang ditunjukkan di atas. Anda dapat menemukan situs web dan kode sumber di Github: github.com/bedrin/jsonde .Saya menemukan plugin Green sangat mudah digunakan dan untuk menghasilkan diagram kelas dari kode sumber. Cobalah :). Cukup salin plugin ke dir plugin Anda.
sumber
Anda juga bisa mencoba pemodel Ube netbeans. Saya telah menggunakannya untuk menghasilkan javacode yang saya gunakan dalam proyek gerhana saya. Anda bahkan dapat mengimpor proyek gerhana di netbeans dan menjaga pengaturan gerhana disinkronkan dengan pengaturan proyek netbeans.
Saya mencoba beberapa pemodel UML untuk gerhana dan tidak puas dengan mereka. Mereka tidak stabil, rumit atau hanya jelek. ;-)
sumber
Menggunakan IntelliJ IDEA. Untuk menghasilkan diagram kelas pilih paket dan tekan Ctrl+ Alt+ U:![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/WBXpI.png)
Secara default, ini hanya menampilkan nama kelas dan tidak semua dependensi. Untuk mengubahnya: klik kanan -> Tampilkan Kategori ... dan Tampilkan dependensi:![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/DFsXM.png)
Untuk membuat diagram dependensi (UML Deployment diagram) dan Anda menggunakan maven go Lihat -> Alat Windows -> Proyek Maven dan tekan Ctrl+ Alt+ U:![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/HblBN.png)
Hasil:![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/7HQhD.png)
Juga dimungkinkan untuk menghasilkan lebih banyak diagram orang lain. Lihat dokumentasi .
sumber
Anda dapat menggunakan versi evaluasi 30 hari EclipseUML untuk Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Ini bukan versi 3.6 terbaru, tetapi cukup bagus dan tidak mengharuskan Anda membelinya untuk pengujian dan rekayasa terbalik.
Rekayasa terbalik: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
Demo flash langsung: http://www.ejb3.org/reverse.swf
EclipseUML Omondo adalah alat terbaik di dunia untuk Jawa. Hanya eUML yang tampaknya bersaing dengannya di pasar sinkronisasi java langsung ini, tetapi eUML menambahkan tag model dalam kode yang benar-benar sangat sangat buruk dan tidak masuk akal bagi saya.
sumber
Sejauh ini alat terbaik yang saya gunakan untuk teknik reverse, dan round tripping java -> UML adalah Borland's Together . Ini didasarkan pada Eclipse (bukan hanya satu plugin) dan benar-benar berfungsi dengan baik.
sumber
Saya sarankan PlantUML. alat ini sangat bermanfaat dan mudah digunakan. PlantUML memiliki plugin untuk Netbeans yang dapat Anda buat diagram UML dari kode java Anda.
Anda dapat menginstal plugin PlantUML di netbeans dengan metode ini:
Menu Netbeans -> Tools -> Plugin
Sekarang pilih Plugins yang Tersedia dan kemudian temukan PlantUML dan instal.
Untuk informasi lebih lanjut, kunjungi situs web: www.plantuml.com
sumber
Saya perhatikan plugin SequenceDiagram untuk Intellij juga merupakan opsi yang baik.
sumber
Alat pemodelan lain untuk Java adalah (saya) situs web GitUML . Hasilkan diagram UML dari Java atau kode Python yang disimpan dalam repositori GitHub.
Satu ide kunci dengan GitUML adalah untuk mengatasi salah satu masalah dengan "dokumentasi": bahwa diagram selalu ketinggalan zaman. Dengan GitUML, diagram secara otomatis diperbarui ketika Anda mendorong kode menggunakan git.
Jelajahi diagram UML komunitas, ada beberapa pola desain Java di sana. Jelajahi melalui repositori GitHub yang populer dan visualisasikan arsitektur dan pola di dalamnya.
Buat diagram menggunakan titik dan klik. Tidak ada editor drag drop, cukup klik pada kelas di pohon repositori yang ingin Anda visualisasikan:
Teknologi yang mendasari adalah PlantUML berbasis, yang berarti Anda dapat memperbaiki diagram Anda dengan markup PlantUML tambahan.
sumber
Ada alat gratis bernama binarydoc yang dapat menghasilkan
UML Sequence Diagram
, atauControl Flow Graph
(CFG
) daribytecode
(alih-alih kode sumber) dari metode Java.Berikut adalah contoh diagram binarydoc yang dihasilkan untuk metode java java.net.AbstractPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
:sumber