Bagaimana cara menghasilkan diagram UML (terutama diagram urutan) dari kode Java?

434

Bagaimana saya bisa menghasilkan diagram UML (terutama diagram urutan) dari kode Java yang ada?

Jonathan
sumber
3
Itu tidak mungkin terjadi. Kode Java asli tidak terstruktur agar terlihat cantik seperti diagram UML.
Stephan Eggermont
1
Begitu banyak jawaban yang tidak membahas diagram urutan. Hmph
Bill K
@ BillK jawaban saya memang diagram urutan alamat. Ini adalah plugin Intellij Idea - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com
1
Pertanyaan ini lebih sesuai untuk situs saudara Rekomendasi Stack Exchange .
Basil Bourque

Jawaban:

257

Explorer UML ObjectAid

Apakah yang saya gunakan. Mudah diinstal dari repositori:

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

Dan menghasilkan diagram UML yang cukup bagus:

Tangkapan layar

Deskripsi dari situs web:

ObjectAid UML Explorer berbeda dari alat UML lainnya. Ini menggunakan notasi UML untuk menunjukkan representasi grafis dari kode yang ada yang seakurat dan mutakhir dengan editor teks Anda, sementara sangat mudah digunakan. Beberapa fitur unik memungkinkan ini:

  • Kode sumber dan pustaka Anda adalah model yang ditampilkan, mereka tidak direkayasa balik menjadi format yang berbeda.
  • Jika Anda memperbarui kode di Eclipse, diagram Anda juga diperbarui; tidak perlu membalikkan kode sumber insinyur.
  • Refactoring memperbarui diagram Anda serta kode sumber Anda. Saat Anda mengganti nama bidang atau memindahkan kelas, diagram Anda hanya mencerminkan perubahan tanpa keluar dari sinkronisasi.
  • Semua diagram di ruang kerja Eclipse Anda diperbarui dengan perubahan refactoring yang sesuai. Jika perlu, mereka diperiksa dari sistem kontrol versi Anda.
  • Diagram sepenuhnya terintegrasi ke dalam Eclipse IDE. Anda dapat menyeret kelas Java dari tampilan lain ke diagram, dan informasi terkait diagram ditampilkan di tampilan lain di mana pun berlaku.
Thomas Ahle
sumber
Lebih mudah daripada Papyrus, tetapi dengan lebih sedikit opsi untuk membuat diagram.
lcardosobr
Di ObjectAid, Apakah ada cara untuk mengatur diagram kelas secara otomatis?
Reusable
4
HowTo >>> Buat akun di sini: objectaid.com/login (email aktivasi dikirim dalam 10 menit), Klik Diagram Add-On, lisensi akan dikirimkan ke email Anda. Ikuti objectaid.com/installation ini untuk menginstal ObjectAid, lalu instal GEF dari download.eclipse.org/tools/gef/updates/releases Sekarang salin dan tempel lisensi dari email ke Window-> Preferences-> ObjectAid Bagaimana cara membuat diagram? objectaid.com/class-diagram
rluks
Tidak dapat memasang di gerhana juno. 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.
Gunaseelan
1
Versi komersial ObjectAid dapat melakukan yang lebih baik dalam hal pembuatan diagram urutan vs gratis hanya dapat digunakan untuk menghasilkan diagram kelas !!
whoami
63

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

  1. Unduh Papyrus
  2. Pergi ke Bantuan -> Instal Perangkat Lunak Baru ...
  3. Dalam Karya dengan: tarik-turun, pilih - Semua Situs Yang Tersedia -
  4. Dalam filter, ketikkan Papyrus
  5. Setelah instalasi selesai, restart Eclipse
  6. Ulangi langkah 1-3 dan kali ini, instal Modisco

Langkah

  1. Dalam proyek java Anda (anggap itu disebut MyProject) buat folder misalnya UML
  2. Klik kanan atas nama proyek -> Discovery -> Discoverer -> Discover Java dan model inventaris dari proyek java, file yang disebut MyProject_kdm.xmi akan dihasilkan. masukkan deskripsi gambar di sini
  3. Klik kanan file nama proyek -> baru -> model papirus -> dan sebut itu MyProject.
  4. Pindahkan tiga file yang dihasilkan MyProject.di, MyProject.notation, MyProject.uml ke folder UML
  5. 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

  6. 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.

  7. ALT + W -> tampilkan tampilan -> papyrus -> model explorer

  8. Dalam tampilan itu, Anda akan menemukan kelas Anda seperti pada gambar masukkan deskripsi gambar di sini

  9. Pada tampilan Klik kanan model root -> Diagram baru masukkan deskripsi gambar di sini

  10. 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

  • 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.

Ismail Marmoush
sumber
Saya mencari Modisco di gerhana. itu muncul dengan 0 intallable. Apakah proyek ini hidup atau diambil? Apakah itu menjadi alat berbayar. Apakah Papyrus tidak akan lari tanpa ini?
R-JANA
STS bekas dan tidak berhasil.
R-JANA
@ R-JANA Saya tidak tahu apa status Modisco saat ini, tapi saya akan kembali ke posting ini ASAP karena saya akan segera menginstal papyrus dan harus memperbaruinya. Saya menyarankan Anda untuk mencoba memasang papirus sendiri, dengan mengingat postingan saya saat ini; Saya pikir banyak perubahan terjadi sejak saya memposting jawaban ini.
Ismail Marmoush
Ada plug-in opsional untuk Papyrus, yang menambahkan fungsi reverse engineering Java: wiki.eclipse.org/Java_reverse_engineering . Dengan ini, akan lebih mudah untuk menambahkan elemen diagram dari sumber, Anda bahkan dapat menyeret kelas ke dalam diagram.
Markus Ende
42

Apa basis kode Anda? Java atau C ++?

teks alternatif

eUML2 untuk Java adalah pemodel UML kuat yang dirancang untuk Java developper di Eclipse. Edisi gratis dapat digunakan untuk penggunaan komersial. Ini mendukung fitur-fitur berikut:

  • CVS dan Dukungan Tim
  • Dirancang untuk proyek besar dengan tampilan model yang banyak dan dapat disesuaikan
  • Helios Compliant
  • Sinkronisasi kode / model waktu-nyata
  • Sesuai UML2.1 dan dukungan OMG XMI
  • Dukungan JDK 1.4 dan 1.5
  • Edisi komersial menyediakan:

  • Rekayasa terbalik yang canggih

  • Alat analisis ketergantungan benar yang kuat
  • Profil UML dan MDD
  • Alat basis data
  • Dukungan template yang dapat disesuaikan
prakash
sumber
20
Ini adalah alat yang sangat sulit untuk dipasang. Saya mencoba selama sekitar setengah jam tanpa hasil. Ada saran lain?
Jonathan
2
Cant find eUML2 adalah Update Managaer saya dan saya tidak ingin mengemas setup Eclipse baru dari fitur ini. Saya menggunakan Eclipse "Helios" dan pergi dengan cara ini: Bantuan - Instal Software baru - Helios download.eclipse.org/releases/helios - Modeling
OneWorld
3
Saya tahu ini adalah posting lama, tetapi sebagian besar masalah dengan menginstal eUML2 sepertinya telah diselesaikan.
Andy
7
EUML adalah omong kosong nyata. Ini telah mengubah format kode saya dan menambahkan tag di mana-mana. Kode saya sekarang sangat kotor sehingga saya lebih memilih untuk membatalkan perubahan. Masalahnya adalah bahwa tidak ada undo dan kode Anda berubah selamanya. Saya akan merekomendasikan untuk membackup proyek Anda sebelum menggunakan eUML crapper :-)
UML GURU
31
Apakah Anda pernah mendengar tentang kontrol versi?
melahap elysium
9

Saya adalah salah satu penulisnya, jadi jawabannya bisa bias. Ini open-source (Apache 2.0), tetapi plugin ini tidak gratis. Anda tidak perlu membayar (jelas) jika Anda mengkloning dan membangunnya secara lokal.

Pada Intellij IDEA, ZenUML dapat menghasilkan diagram urutan dari kode Java. masukkan deskripsi gambar di sini

Lihat di https://plugins.jetbrains.com/plugin/12437-zenuml-support

Kode sumber: https://github.com/ZenUml/jetbrains-zenuml

Xiao Peng - ZenUML.com
sumber
1
@ hc_dev, terima kasih atas pengingat Anda. Menambahkan catatan itu.
Xiao Peng - ZenUML.com
7

Bagaimana dengan PlantUML ? Ini bukan untuk rekayasa terbalik !!! Ini untuk rekayasa sebelum Anda kode.

Zamel
sumber
4
Tidak menjawab pertanyaan, yang jelas meminta alat rekayasa terbalik.
jmite
1
Saya tidak yakin itu sepenuhnya benar. PlantUML juga dapat menggambarkan kode dengan diagram. Coba buka tampilan yang relevan di file kelas
Erez A. Korn
1
Yup, saya dapat memverifikasi bahwa diagram kelas dibuat secara otomatis dari file Java di plugin Eclipse.
HRJ
1
Saya sudah mencoba ini, tetapi jika kode PlantUML Anda menjadi terlalu kompleks, Anda menghabiskan seluruh waktu Anda mencoba untuk mencari tahu mengapa gambar tidak akan ditampilkan dengan benar dan memiliki gangguan. Ini hanya baik untuk diagram kecil.
trusktr
Di Intellij, menggabungkan PlantUML dengan Sketch It! dan graphviz dapat menghasilkan diagram dari kode. Berfungsi paling baik untuk paket kecil, pngs tampaknya tidak sepenuhnya dibuat ketika diagram menjadi terlalu besar.
Melissa Loos
6

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

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

juanmf
sumber
4

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.

Vineet Reynolds
sumber
Belum menemukan fitur reverse engineering di UML2 Tools; (
OneWorld
2
jTracert sekarang dihentikan. Sebagai pengganti jTracert, alat baru yang disebut jSonde sekarang dilisensikan dengan GPL v3. jsonde.com
Alpine
Omondo adalah yang terbaik untuk java. Integrasi yang benar-benar bersih, tidak ada campuran antara model dan kode. Luar biasa tapi terlalu mahal. Kami telah diizinkan untuk membeli hanya satu lisensi tetapi kami memiliki lebih dari 20 pemodel yang menggunakannya karena keamanannya didasarkan pada login nama pengguna. Ini berarti bahwa jika 10 pengguna memiliki login yang sama maka mereka semua dapat menggunakannya. Kami mendapat lisensi dengan nama pengguna Admin :-)
UML GURU
Tidak jSondetersedia di URL yang ditunjukkan di atas. Anda dapat menemukan situs web dan kode sumber di Github: github.com/bedrin/jsonde .
Jaime
3

Saya menemukan plugin Green sangat mudah digunakan dan untuk menghasilkan diagram kelas dari kode sumber. Cobalah :). Cukup salin plugin ke dir plugin Anda.

pcmind
sumber
2
Hijau sepertinya punya potensi. Namun pada pekerjaan saya, kami memiliki sebuah proyek yang memiliki ~ 700 kelas dan sedikit berbunyi kemudian mati.
Appak
3

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. ;-)

Patrick Cornelissen
sumber
Hanya ingin menyebutkan bahwa saya juga menggunakan modeller Ube Netbeans dan tidak menabrak masalah dalam kasus saya yang relatif sederhana. UI tidak terlalu intuitif, tetapi benar-benar oke. Modeller juga memiliki beberapa fitur canggih seperti membuat kode entitas JPA keluar dari model jika saya ingat dengan benar.
Tuukka Mustonen
1
Sayangnya sepertinya plugin UML tidak lagi didukung. Sebuah menulis ulang plugin tampaknya berlangsung tapi itu tidak membantu siapa pun karena mereka menjatuhkan plugin tua sebelum menulis ulang selesai.
Appak
Itu menyebalkan :-( Mari berharap penulisan ulang tidak terlalu lama :-)
Patrick Cornelissen
1
UML untuk NetBeans dibuat oleh VP. Mereka tidak akan melakukannya lagi, hanya VP UML mereka yang tersedia sekarang, dengan versi gratis yang lemah.
Gangnus
2

Menggunakan IntelliJ IDEA. Untuk menghasilkan diagram kelas pilih paket dan tekan Ctrl+ Alt+ U:masukkan deskripsi gambar di sini

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

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

Hasil: masukkan deskripsi gambar di sini

Juga dimungkinkan untuk menghasilkan lebih banyak diagram orang lain. Lihat dokumentasi .

Igor Rybak
sumber
2

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.

UML GURU
sumber
1

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.

serg10
sumber
Together sekarang menjadi Micro Focus Together
Jaime
0

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

Masood
sumber
0

Saya perhatikan plugin SequenceDiagram untuk Intellij juga merupakan opsi yang baik.

siapa saya
sumber
1
Periksa ini untuk generasi: - quora.com/Apa-yang-yang-baik-tool-untuk-membuat-UML-diagram , stackoverflow.com/questions/4449291/… (rekayasa balik) && untuk Sketsa: - guru99.com/ best-uml-tools.html (Ingat tidak semua alat gratis menghasilkan diagram urutan, hanya dapat mendukung diagram kelas, saya telah menggunakan SequenceDiagram untuk generation & draw.io untuk pembuatan manual diagram UML)
whoami
0

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.

browser diagram

Buat diagram menggunakan titik dan klik. Tidak ada editor drag drop, cukup klik pada kelas di pohon repositori yang ingin Anda visualisasikan:

pilih kelas java yang ingin Anda visualisasikan

Teknologi yang mendasari adalah PlantUML berbasis, yang berarti Anda dapat memperbaiki diagram Anda dengan markup PlantUML tambahan.

abulka
sumber
0

Ada alat gratis bernama binarydoc yang dapat menghasilkan UML Sequence Diagram, atau Control Flow Graph( CFG) dari bytecode(alih-alih kode sumber) dari metode Java.

Berikut adalah contoh diagram binarydoc yang dihasilkan untuk metode java java.net.AbstractPlainSocketImpl.getInputStream :

  • Grafik Aliran Kontrol metode java.net.AbstractPlainSocketImpl.getInputStream:

Grafik Aliran Kontrol

  • UML Sequence Diagram metode java.net.AbstractPlainSocketImpl.getInputStream:

Diagram Urutan UML

Senang
sumber