Java kodundan UML diyagramları (özellikle sıra diyagramları) nasıl oluşturulur?


434

Mevcut Java kodundan nasıl UML diyagramları (özellikle sıra diyagramları) oluşturabilirim?


3
Bunun gerçekleşmesi pek mümkün değil. Gerçek Java kodu, UML diyagramlarına benzeyecek şekilde yapılandırılmamıştır.
Stephan Eggermont

1
Sıra diyagramlarını ele almayan birçok cevap. Hmph
Bill K

@BillK cevabım dizi diyagramlarını ele alıyor. Bir Intellij Fikir eklentisidir - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com

1
Bu soru kardeş sitesi Yazılım Önerileri Stack Exchange için daha uygundur .
Basil Bourque

Yanıtlar:


257

ObjectAid UML Gezgini

Kullandığım şey bu. Depodan kolayca yüklenir :

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

Ve oldukça güzel UML diyagramları üretir:

Ekran görüntüsü

Web sitesinden açıklama:

ObjectAid UML Explorer, diğer UML araçlarından farklıdır. UML gösterimini, mevcut kodun metin düzenleyiciniz kadar doğru ve güncel bir grafik temsilini göstermek için kullanır ve kullanımı çok kolaydır. Birkaç benzersiz özellik bunu mümkün kılar:

  • Kaynak kodunuz ve kitaplıklarınız görüntülenen modeldir, tersine farklı bir formata dönüştürülmezler.
  • Kodunuzu Eclipse'de güncellerseniz, diyagramınız da güncellenir; mühendis kaynak kodunu tersine çevirmeye gerek yoktur.
  • Yeniden düzenleme, diyagramınızın yanı sıra kaynak kodunuzu da günceller. Bir alanı yeniden adlandırdığınızda veya bir sınıfı taşıdığınızda, diyagramınız senkronizasyondan çıkmadan değişiklikleri yansıtır.
  • Eclipse çalışma alanınızdaki tüm diyagramlar, uygun şekilde yeniden düzenleme değişiklikleriyle güncellenir. Gerekirse, sürüm kontrol sisteminizden kontrol edilir.
  • Diyagramlar Eclipse IDE'ye tamamen entegre edilmiştir. Java sınıflarını başka herhangi bir görünümden diyagrama sürükleyebilirsiniz ve şemaya ilişkin bilgiler, uygun olan yerlerde diğer görünümlerde gösterilir.

Papirüs'ten daha kolay, ancak diyagram oluşturmak için daha az seçenekle.
lcardosobr

ObjectAid'de, sınıf diyagramını otomatik olarak düzenlemenin bir yolu var mı?
Yeniden kullanılabilir

4
Nasıl Yapılır >>> Burada hesap oluşturun: objectaid.com/login (etkinleştirme e-postası 10 dakika içinde gönderildi), Diyagram Eklentisi'ni tıklayın, lisans e-postanıza gönderilecektir. ObjectAid'i yüklemek için bu objectaid.com/installation komutunu izleyin , ardından download.eclipse.org/tools/gef/updates/releases adresinden GEF'i yükleyin Şimdi e-postadan Window-> Preferences-> ObjectAid'e lisansı kopyalayıp yapıştırın Diyagram nasıl oluşturulur? objectaid.com/class-diagram
rluks

Eclipse juno'ya yüklenemiyor. 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
ObjectAid'in ticari versiyonu, dizi diyagramı oluşturma vs ücretsiz olduğunda daha iyi yapabilir, ancak sınıf diyagramları oluşturmak için kullanılabilir!
whoami

63

EDIT: Eğer bir tasarımcı iseniz Papirüs en iyi seçimdir çok gelişmiş ve özelliklerle dolu, ama sadece bazı UML diyagramları ve kolay kurulum çizmek istiyorsanız , ObjectAid oldukça havalı ve herhangi bir eklenti gerektirmiyor I Eclipse-Java EE üzerine yükledim ve harika çalışıyor !.


GÜNCELLEME 11 Ekim 2013

Orijinal yazım Haziran 2012'de bir çok şey değişti, birçok araç büyüdü ve diğerleri değişmedi. Bazı modellemeler yapmaya ve aynı zamanda gönderiye bazı yanıtlar almaya gittiğim için tekrar papirüs kurmaya karar verdim ve diğer olası UML modelleme çözümlerini tekrar araştıracağım. UML üretimi (senkronizasyon özelliğiyle) yazılım tasarımcısı için değil, ortalama geliştirici için gerçekten önemlidir.

Keşke papirüs Tersine Mühendislik sınıflarını UML sınıf diyagramına çevirmenin kolay bir yolunu olsaydı ve tersine mühendislik bir senkronizasyon özelliğine sahip olsaydı süper havalı olurdu, ama ne yazık ki papirüs projesi özelliklerle dolu ve bence geliştiriciler zaten çok fazla papirüs üzerinde yaptığınız eylemler size herhangi bir yanıt vermeyebilir ve hiçbir şey olmaz, ancak yine de bu soru kapsamı dışındadır.

The Answer (11 Ekim 2013)

Araçlar

  1. Papirüs indir
  2. Yardım -> Yeni Yazılım Yükle ...
  3. In ile Work: Açılır seçin --Tüm Mevcut Sites--
  4. Filtreye Papirüs yazın
  5. Kurulum tamamlandıktan sonra Eclipse'i yeniden başlatın
  6. 1-3 arası adımları tekrarlayın ve bu sefer Modisco'yu yükleyin

adımlar

  1. Java projenizde (projemin MyProject olduğunu varsayalım) bir klasör oluşturun, örneğin UML
  2. Proje adını sağ tıklayın -> Keşif -> Keşif -> Java projesinden Java ve envanter modelini keşfedin, MyProject_kdm.xmi adlı bir dosya oluşturulacaktır. resim açıklamasını buraya girin
  3. Proje adı dosyasını -> yeni -> papirüs modeli -> sağ tıklayın ve MyProject olarak adlandırın.
  4. Oluşturulan üç MyProject.di, MyProject.notation, MyProject.uml dosyalarını UML klasörüne taşıyın
  5. MyProject_kdm.xmi -> Discovery -> Discoverer -> KDM kodundan UML modelini tekrar sağ tıklayın, MyProject.uml adlı bir dosya oluşturmak için serileştirme propini TRUE olarak ayarlayın. resim açıklamasını buraya girin

  6. Kökte oluşturulan oluşturulan MyProject.uml dosyasını UML klasörüne taşıyın, Eclipse size bunu soracaktır Eğer değiştirmek isterseniz evet'e tıklayın. Burada yaptığımız şey, boş bir modeli üretilen modelle değiştirmemizdi.

  7. ALT + W -> görünümü göster -> papirüs -> model gezgini

  8. Bu görünümde, sınıflarınızı resimdeki gibi bulacaksınız resim açıklamasını buraya girin

  9. Görünümde Sağ tıklama kök modeli -> Yeni diyagram resim açıklamasını buraya girin

  10. Ardından görünümden diyagrama sınıfları yakalamaya başlayın

Bazı özellikler

  • Sınıf öğelerini (değişkenler, fonksiyonlar vb.) Göstermek için Herhangi bir sınıfa sağ tıklayın -> Filtreler -> içeriği göster / gizle Voila !!

  • Pencere -> tercihler -> papirüs -> sınıf diyagramından varsayılan kolay renk ayarlarına sahip olabilirsiniz

  • çok önemli bir ayar, sınıfları düşürdüğünüzde düzenleyin , bir sınıf diyagramındaki herhangi bir boş alana sıkışık bir sağ tıklama alır ve Tümünü Yerleştir'i tıklatın.

  • Model gezgini görünümündeki oklar, genelleme, gerçekleştirme vb.Göstermek için şemaya alınabilir.

  • Tüm bunlardan sonra ayarlarınız aşağıdaki gibi diyagramları gösterecektir: resim açıklamasını buraya girin

  • Senkronizasyon, yeni sınıfları manuel olarak içe aktarmanız gerektiğini bildiğim kadarıyla kullanılamıyor.

Hepsi bu, Ve gerçekten ihtiyacınız olmadıkça ticari ürünler satın almayın, papirüs bağışlamak ya da bir şey yerine aslında harika ve sofistike.

Feragatname: Papirüs insanlarıyla hiçbir ilişkim yok, aslında, çok fazla araştırma yapana ve biraz sabırla deneyimleyene kadar ilk başta papirüs sevmedim. Ve diğer ücretsiz araçları denediğimde bu gönderiye tekrar döneceğim.


Tutulmada Modisco'yu aradım. 0 yüklenemez ile geldi. Bu proje canlı mı yoksa kaldırılmış mı? Ücretli bir araç haline geldi mi? Papirüs bu olmadan koşmayacak mı?
R-JANA

STS kullanıldı ve başarısız oldu.
R-JANA

@ R-JANA Modisco'nun şu anki durumu nedir bilmiyorum, ama en kısa sürede bu gönderiye geri döneceğim çünkü yakında papirüs kurmak üzereyim ve güncellemem gerekecek. Şu anki yazım göz önünde bulundurularak papirüs kurmaya çalışmanızı tavsiye ederim; Bu cevabı gönderdiğimden beri çok fazla değişiklik olduğunu düşünüyorum.
Ismail Marmoush

Java tersine mühendislik işlevi ekleyen Papirüs için isteğe bağlı bir eklenti vardır: wiki.eclipse.org/Java_reverse_engineering . Bununla, diyagram öğelerini kaynaktan eklemek çok daha kolaydır, hatta sınıfları bir diyagrama sürükleyebilirsiniz.
Markus Ende

42

Kod tabanınız nedir? Java veya C ++?

alternatif metin

Java için eUML2, Eclipse'de Java geliştiricisi için tasarlanmış güçlü bir UML modelleyicisidir. Ücretsiz sürüm ticari kullanım için kullanılabilir. Aşağıdaki özellikleri destekler:

  • CVS ve Takım Desteği
  • Birden çok ve özelleştirilebilir model görünümüne sahip büyük proje için tasarlanmıştır
  • Helios Uyumlu
  • Gerçek zamanlı kod / model senkronizasyonu
  • UML2.1 uyumlu ve OMG XMI desteği
  • JDK 1.4 ve 1.5 desteği
  • Ticari baskı şunları sağlar:

  • Gelişmiş tersine mühendislik

  • Güçlü gerçek bağımlılık analiz araçları
  • UML Profili ve MDD
  • Veritabanı araçları
  • Özelleştirilebilir şablon desteği

20
Bu kurulumu çok zor bir araçtır. Yaklaşık yarım saat boyunca hiç başarı olmadan denedim. Başka öneriniz var mı?
Jonathan

2
Cant bulmak eUML2 benim Güncelleme Managaer ve ben sadece bu özellik fr yeni bir Eclipse kurulum paketi istemiyorum. Eclipse "Helios" kullanıyorum ve bu şekilde gidiyorum: Yardım - Yeni Yazılım Yükle - Helios download.eclipse.org/releases/helios - Modelleme
OneWorld

3
Bu eski bir yazı olduğunu biliyorum, ama eUML2 yükleme ile ilgili çoğu sorun çözülmüş gibi görünüyor.
Andy

7
eUML gerçek bir saçmalıktır. Kod biçimimi değiştirdi ve her yere etiket ekledi. Kodum artık değişikliği geri almayı tercih ettiğim için çok kirli. Sorun, geri alma olmaması ve kodunuzun sonsuza kadar değiştirilmesidir. EUML crapper kullanmadan önce projenizi yedeklemenizi tavsiye ederim :-)
UML GURU

31
Hiç sürüm kontrolü hakkında bir şey duydunuz mu?
elysium

9

Ben yazarlardan biriyim, bu yüzden cevap taraflı olabilir. Açık kaynaklıdır (Apache 2.0), ancak eklenti ücretsiz değildir. Yerel olarak klonlayıp oluşturursanız (açıkçası) ödeme yapmak zorunda değilsiniz.

Intellij IDEA'da ZenUML, Java kodundan dizi diyagramı oluşturabilir. resim açıklamasını buraya girin

Https://plugins.jetbrains.com/plugin/12437-zenuml-support adresinden kontrol edin.

Kaynak kodu: https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, hatırlatıcınız için teşekkürler. Bu notu ekledi.
Xiao Peng - ZenUML.com

7

PlantUML hakkında ne dersiniz ? Tersine mühendislik için değil !!! Kodlamadan önce mühendislik içindir.


4
Açıkça tersine mühendislik aracı isteyen soruya cevap vermez.
jmite

1
Bunun tamamen doğru olduğundan emin değilim. PlantUML ayrıca kodu diyagramlarla tanımlayabilir. İlgili dosyayı bir sınıf dosyasında açmayı deneyin
Erez A. Korn

1
Evet, Eclipse eklentisindeki Java dosyalarından sınıf diyagramlarının otomatik olarak oluşturulduğunu doğrulayabilirim.
HRJ

1
Bunu denedim, ancak PlantUML kodunuz çok karmaşık hale gelirse, tüm zamanınızı çizimin neden düzgün bir şekilde oluşturulmadığını ve aksaklıklara sahip olduğunu anlamaya çalışarak geçirirsiniz. Sadece küçük diyagramlar için iyidir.
trusktr

Intellij'de PlantUML ile Sketch It! ve graphviz koddan sınıflandırmalar oluşturabilir. Küçük paketler için en iyi şekilde çalışır, diyagramlar çok büyük olduğunda png'ler tam olarak oluşturulmamış gibi görünür.
Melissa Loos

6

Bir eklenti hedefi olarak CLI'den çalıştırılabilir veya bağımlılık olarak içe aktarılabilir ve programlayıcı olarak ayrıştırıcıyı nasıl kullanacağına dair fikir edinmek için maven eklentisi geliştirdim @see Main#main().

Bu hale PlantUML yinelemeli istenen paketlerin src kodu (umarım vermeyeceksin) gerekirse elle düzenleyebilirsiniz. Daha sonra, kodu plantUML sayfasına yapıştırarak veya bitkinin kavanozunu indirerek UML diyagramını bir png görüntüsü olarak oluşturabilirsiniz.

Buradan kontrol edin https://github.com/juanmf/Java2PlantUML

Örnek çıktı diyagramı: resim açıklamasını buraya girin

Herhangi bir katkı hoş geldiniz daha fazladır. Çıktıyı özelleştiren bir dizi filtreye sahip, ancak bunları henüz eklenti CLI parametrelerinde göstermedim.

* .Java dosyalarınızla sınırlı olmadığını, UML diyagramlarını src'yi sizden maven bağımlılıklarına da dönüştürebileceğini unutmayın. Bu, bağımlı olduğunuz kütüphaneleri anlamak için çok kullanışlıdır. Aslında derlenmiş sınıfları yansıma ile inceler, böylece kaynak gerekmez

GitHub: P'de yıldız atan ilk siz olun


4

Web projelerimle birkaç ay önce bazı sorunlar yaşadığım halde, genel kullanım için EclipseUML'u Omondo'dan tavsiye ederim . Bir seferde ücretsiz bir sürümleri vardı, ancak bu artık teşvik edilmiyor.

Eğer kaynak kodundan tersine mühendislik sırası diyagramlarına meraklıysanız jTracert'i tavsiye ederim .

Eclipse projelerinin kendilerine gelince, Eclipse UML2 Tools projesi uygulamada daha önce hiç görmemiş olmama rağmen tersine mühendisliği destekleyebilir.

MoDisco (Model Discovery) projesi Eclipse GMT proje Hedefiniz ulaşmada daha net görünüyor. Teknoloji özel araçlar listesi ile başlamak için iyi bir yer olurdu.


UML2 Araçları'ndaki tersine mühendislik özelliğini bulamadık; (
OneWorld

2
jTracert artık üretilmiyor. JTracert'in halefi, jSonde adlı yeni bir araç artık GPL v3 altında lisanslanmıştır. jsonde.com
Alp

Omondo java için en iyisidir. Gerçekten temiz entegrasyon, model ve kod arasında bir karışım yok. Mükemmel ama çok pahalı. Yalnızca bir lisans satın almamıza izin verildi, ancak güvenlik kullanıcı adı girişine dayandığından 20'den fazla modelciyiz. Bu, 10 kullanıcı aynı girişe sahipse hepsinin kullanabileceği anlamına gelir. Yönetici kullanıcı adıyla bir lisans aldık :-)
UML GURU

jSondeYukarıda gösterilen URL'de kullanılamaz. Bir web sitesini ve kaynak kodunu Github'da bulabilirsiniz : github.com/bedrin/jsonde .
Jaime

3

Yeşil eklentiyi kullanımı ve kaynak kodundan sınıf diyagramı oluşturmak için çok basit buldum . Bir şans ver :). Eklentiyi eklenti dizininize kopyalamanız yeterlidir.


2
Yeşil, potansiyele sahip gibi görünüyor. Ancak benim işimde ~ 700 sınıfı olan bir projemiz var ve o zamanlar biraz chugs sonra ölüyor.
Appak

3

Netbeans UML modellerini de deneyebilirsiniz. Tutulma projelerimde kullandığım java kodu oluşturmak için kullandım. Eclipse projelerini netbeans'e bile aktarabilir ve eclipse ayarlarını netbeans proje ayarlarıyla senkronize halde tutabilirsiniz.

Tutulma için birkaç UML modellerini denedim ve onlardan memnun kalmadım. Ya dengesiz, karmaşık ya da sadece çirkinlerdi. ;-)


Sadece Netbeans UML modellerini kullandığımı ve nispeten basit vakalarımda sorun yaşamayacağımı belirtmek istedim. UI çok sezgisel değil, ama tamamen iyi. Modeller, doğru hatırlamıyorsam modelden JPA varlık kodu oluşturmak gibi bazı gelişmiş özelliklere de sahip.
Tuukka Mustonen

1
Ne yazık ki UML eklentisi artık desteklenmiyor gibi görünüyor. Bir eklentinin yeniden yazma görünüşte devam etmektedir ancak yeniden yazma işlemi tamamlanmadan eski eklentisi düştü beri bu yardım kimseyi yapmaz.
Appak

Bu bir serseri :-( Umarız yeniden yazma işlemi çok uzun sürmez :-)
Patrick Cornelissen

1
NetBeans için UML VP tarafından yapılıyordu. Artık bunu yapmayacaklar, sadece ücretsiz VP UML'leri zayıf bir ücretsiz sürümü ile mevcut.
Gangnus

2

IntelliJ IDEA kullanma. Sınıf diyagramı oluşturmak için paketi seçin ve Ctrl+ Alt+ tuşlarına basın U:resim açıklamasını buraya girin

Varsayılan olarak, tüm bağımlılıkları değil, yalnızca sınıf adlarını görüntüler. Değiştirmek için: sağ tıklayın -> Kategorileri Göster ... ve Bağımlılıkları göster: resim açıklamasını buraya girin

Bağımlılık şemasını (UML Dağıtım şeması) oluşturmak ve maven gitmek için Görünüm -> Araç Pencereleri -> Maven Projeleri'ni kullanın ve Ctrl+ Alt+ tuşlarına basın U: resim açıklamasını buraya girin

Sonuç: resim açıklamasını buraya girin

Ayrıca başka diyagramlar oluşturmak da mümkündür. Belgelere bakın .


2

Eclipse 3.5 için 30 günlük EclipseUML değerlendirme derlemesini kullanabilirsiniz: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Bu en son 3.6 derlemesi değil, oldukça iyi ve test ve tersine mühendislik için satın almanızı gerektirmez.

Tersine mühendislik: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Canlı flaş demosu: http://www.ejb3.org/reverse.swf

EclipseUML Omondo, Java için dünyadaki en iyi araçtır. Sadece eUML bu canlı java senkronizasyon pazarında onunla rekabet ediyor gibi görünüyor, ancak eUML gerçekten çok çok kötü olan kodda model etiketleri ekliyor ve kesin bir hayır benim için gitmiyor.



0

PlantUML'yi öneririm. bu araçlar çok kullanışlı ve kullanımı kolaydır. PlantUML, Netbeans için java kodunuzdan UML diyagramı oluşturabileceğiniz bir eklentiye sahiptir.

PlantUML eklentisini bu yöntemle netbeans'e yükleyebilirsiniz:

Netbeans Menüsü -> Araçlar -> Eklenti

Şimdi Kullanılabilir Eklentiler'i seçin ve PlantUML'yi bulun ve yükleyin.

Daha fazla bilgi için web sitesine gidin: www.plantuml.com


0

Intellij için SequenceDiagram eklentisinin de iyi bir seçenek olduğunu fark ettim.


1
Bunu nesil için kontrol edin: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (tersine mühendislik) && için Eskiz: - guru99.com/ best-uml-tools.html (Tüm ücretsiz araçların dizi diyagramları oluşturmadığını unutmayın, yalnızca sınıf diyagramlarını destekleyebilir, UML diyagramlarının manuel oluşturulması için SequenceDiagram'ı nesil ve draw.io için kullandım)
whoami

0

Java için başka bir modelleme aracı (benim) web sitesi GitUML'dir . GitHub depolarında depolanan Java veya Python kodundan UML diyagramları oluşturun.

GitUML ile ilgili temel fikirlerden biri, "dokümantasyon" ile ilgili sorunlardan birini ele almaktır: diyagramlar her zaman güncel değildir. GitUML ile git kullanarak kodu ittiğinizde diyagramlar otomatik olarak güncellenir.

Topluluk UML diyagramlarına göz atın, orada bazı Java tasarım desenleri var. Popüler GitHub depolarında gezinin ve içindeki mimarileri ve desenleri görselleştirin.

diyagram tarayıcı

İşaretle ve tıkla kullanarak diyagramlar oluşturun. Sürükle bırak editörü yok, sadece görselleştirmek istediğiniz depo ağacındaki sınıfları tıklayın:

görselleştirmek istediğiniz java sınıflarını seçin

Temel teknoloji PlantUML tabanlıdır, yani diyagramlarınızı ek PlantUML işaretlemesi ile hassaslaştırabilirsiniz.


0

Bir Java yönteminin (kaynak kodu yerine ) üretebileceği veya ( ) kodundan üretebilen binarydoc adlı bir Ücretsiz araç vardır .UML Sequence DiagramControl Flow GraphCFGbytecode

Java yöntemi java.net için oluşturulan bir örnek diyagram binarydoc.AbstractPlainSocketImpl.getInputStream :

  • Yöntemin Kontrol Akış Şemasıjava.net.AbstractPlainSocketImpl.getInputStream :

Kontrol Akış Grafiği

  • UML Dizi Yöntemi Diyagramıjava.net.AbstractPlainSocketImpl.getInputStream :

UML Dizi Şeması

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.