JavaコードからUML図(特にシーケンス図)を生成する方法は?


434

既存のJavaコードからUML図(特にシーケンス図)を生成するにはどうすればよいですか?


3
それは起こりそうにありません。実際のJavaコードは、UML図のように美しく見えるように構造化されていません。
ステファンエガーモント2013

1
シーケンス図を扱わない非常に多くの答え。Hmph
ビルK

@BillK私の答えはシーケンス図を扱います。-それは、プラグインのIntelliJアイデアですstackoverflow.com/a/45239269/529187
小鵬-ZenUML.com

1
この質問は姉妹サイトのSoftware Recommendations Stack Exchangeに適しています。
バジルブルク

回答:


257

ObjectAid UMLエクスプローラー

私が使用したものです。リポジトリから簡単にインストールできます:

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

そして、非常に優れたUMLダイアグラムを生成します。

スクリーンショット

ウェブサイトからの説明:

ObjectAid UML Explorerは、他のUMLツールとは異なります。UML表記を使用して、非常に使いやすく、テキストエディタと同じくらい正確で最新の既存のコードをグラフィカルに表示します。これを可能にするいくつかのユニークな機能:

  • ソースコードとライブラリは表示されるモデルであり、別の形式にリバースエンジニアリングされません。
  • Eclipseでコードを更新すると、ダイアグラムも更新されます。ソースコードをリバースエンジニアリングする必要はありません。
  • リファクタリングにより、ダイアグラムとソースコードが更新されます。フィールドの名前を変更したり、クラスを移動したりすると、図は同期を失うことなく変更を反映するだけです。
  • Eclipseワークスペース内のすべてのダイアグラムは、必要に応じてリファクタリングの変更で更新されます。必要に応じて、バージョン管理システムからチェックアウトされます。
  • 図はEclipse IDEに完全に統合されています。Javaクラスを他の任意のビューからダイアグラムにドラッグできます。ダイアグラム関連の情報は、該当する他のビューに表示されます。

Papyrusよりも簡単ですが、ダイアグラムを作成するためのオプションが少なくなります。
lcardosobr 2012

ObjectAidで、クラス図を自動配置する方法はありますか?
2012年

4
ハウツー>>>ここでアカウントを作成:objectaid.com/login(アクティベーションメールは10分で送信されました)、[ダイアグラムアドオン]をクリックすると、ライセンスがメールに送信されます。このobjectaid.com/installationに従ってObjectAidをインストールしてから、download.eclipse.org / tools / gef / updates / releasesからGEFをインストールします。ライセンスを電子メールからWindow-> Preferences-> ObjectAidにコピーして貼り付けます。objectaid.com/class-diagram
rluks

eclipse 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 2013

1
ObjectAidの商用バージョンは、シーケンス図の生成に関してより優れています。vsfreeはクラス図の生成にしか使用できません。
whoami 2018年

63

編集:あなたがデザイナーならPapyrusがあなたの最良の選択ですそれは非常に高度で機能が豊富ですが、いくつかのUMLダイアグラムと簡単なインストールをスケッチしたいだけならObjectAid はかなりクールでプラグインを必要としませんI Eclipse-Java EEを介してインストールしただけで、うまく動作します


2013年10月11日更新

私の最初の投稿は2012年6月で、多くのツールが変化し、多くのツールが成長しましたが、他のツールは変化しませんでした。モデリングをやり直し、投稿への返信もあるので、パピルスを再度インストールし、他の可能なUMLモデリングソリューションをもう一度調査することにしました。UML生成(同期機能付き)は、ソフトウェア設計者ではなく、平均的な開発者にとって非常に重要です。

パピルスがUMLクラス図にクラスをリバースエンジニアリングする簡単な方法を望んでおり、そのリバースエンジニアリングに同期機能があれば非常にクールですが、残念ながらパピルスプロジェクトには機能が満載で、開発者はすでに多くの人から手が届いていると思いますあなたがパピルスに対してあなたがする行動はあなたに何の反応も与えないかもしれません、そして何も起こらないだけですがそれはとにかくこの質問の範囲外です

答え(2013年10月11日)

ツール

  1. Papyrusをダウンロード
  2. ヘルプ->新しいソフトウェアのインストール...に移動します。
  3. [ Work with:]ドロップダウンで、[- All Available Sites--]を選択します。
  4. フィルターにPapyrusと入力します
  5. インストールが完了したら、Eclipseを再起動します
  6. 手順1〜3を繰り返し、今度はModiscoをインストールします。

手順

  1. Javaプロジェクト(MyProjectと呼ばれていると仮定)で、UMLなどのフォルダーを作成します。
  2. プロジェクト名を右クリック-> Discovery-> Discoverer-> JavaプロジェクトからJavaおよびインベントリモデルを検出すると、MyProject_kdm.xmiというファイルが生成されます。 ここに画像の説明を入力してください
  3. プロジェクト名ファイルを右クリックします->新規->パピルスモデル->そしてMyProjectと呼びます。
  4. 生成された3つのファイルMyProject.di、MyProject.notation、MyProject.umlをUMLフォルダーに移動します。
  5. MyProject_kdm.xmi-> Discovery-> Discoverer-> KDMコードからUMLモデルを再度右クリックすると、プロパティダイアログが表示され、シリアル化プロップをTRUEに設定してMyProject.umlという名前のファイルを生成します。 ここに画像の説明を入力してください

  6. ルートで生成された生成済みのMyProject.umlをUMLフォルダーに移動すると、Eclipseはそれを置き換えたいかどうか尋ねてきますので、[はい]をクリックします。ここで行ったことは、空のモデルを生成されたモデルで置き換えたことです。

  7. Alt + W->ビューを表示->パピルス->モデルエクスプローラー

  8. そのビューでは、写真のようにクラスが見つかります ここに画像の説明を入力してください

  9. ビューで、ルートモデルを右クリックします->新しいダイアグラム ここに画像の説明を入力してください

  10. 次に、ビューからダイアグラムへのクラスの取得を開始します

いくつかの機能

  • クラス要素(変数、関数など)を表示するにはクラスを右クリック->フィルター->コンテンツの表示/非表示出来上がり!!

  • ウィンドウ->環境設定->パピルス->クラス図からデフォルトのフレンドリーな色設定をすることができます

  • 非常に重要な設定の1つは、クラスをドロップするときに配置を整理することです。クラスダイアグラムの何もないスペースを窮屈に右クリックし、[すべて配置]をクリックします。

  • モデルエクスプローラービューの矢印をダイアグラムに取り込むと、一般化、実現化などを表示できます

  • すべての後にあなたの設定は次のような図を表示します ここに画像の説明を入力してください

  • 新しいクラスを手動でインポートする必要があることがわかっている限り、同期は利用できません。

それだけです。本当に必要な場合を除いて、市販の製品を購入しないでください。パピルスは、実際には素晴らしいものであり、代わりに寄付や何かを提供しています。

免責事項:私はパピルスの人々とは関係がありません。実際、私は最初、多くの研究を行い、辛抱強くそれを経験するまで、パピルスが好きではありませんでした。そして、私が他の無料のツールを試したときに再びこの投稿に戻るでしょう。


EclipseでModiscoを検索しました。インストール不可0で表示されました。このプロジェクトは生きているか、それとも取り上げられていますか?有料ツールになりましたか?Papyrusはこれなしでは動作しませんか?
R-JANA 2013

使用されたSTSと失敗。
R-JANA 2013

@ R-JANA Modiscoの現在のステータスはわかりませんが、できるだけ早くこの投稿に戻ります。原因はパピルスをすぐにインストールしようとしていて、更新する必要があるからです。私の現在の投稿を念頭に置いて、パピルスを自分でインストールしてみることをお勧めします。この回答を投稿してから、大きな変化があったと思います。
Ismail Marmoush 2013

Papyrusにはオプションのプラグインがあり、Javaリバースエンジニアリング機能が追加されています:wiki.eclipse.org/Java_reverse_engineering。これにより、ソースから図の要素を追加する方が簡単になり、クラスを図にドラッグすることもできます。
Markus Ende 2015

42

あなたのコードベースは何ですか?JavaまたはC ++?

代替テキスト

eUML2 for Javaは、EclipseのJava開発者向けに設計された強力なUMLモデラーです。無料版は商用利用が可能です。次の機能をサポートしています。

  • CVSとチームのサポート
  • 複数のカスタマイズ可能なモデルビューを備えた大規模プロジェクト向けに設計
  • Helios準拠
  • リアルタイムのコード/モデル同期
  • UML2.1に準拠し、OMG XMIをサポート
  • JDK 1.4および1.5のサポート
  • 商用版は以下を提供します:

  • 高度なリバースエンジニアリング

  • 強力な真の依存関係分析ツール
  • UMLプロファイルとMDD
  • データベースツール
  • カスタマイズ可能なテンプレートのサポート

20
これはインストールが非常に難しいツールです。30分ほど試してみましたが失敗しました。他の提案はありますか?
ジョナサン

2
eUML2は私のアップデートマネージャであり、この機能だけで新しいEclipseセットアップをパックしたくありません。私はEclipse "Helios"を使用しており、次のように進んでいます。ヘルプ-新しいソフトウェアのインストール-Helios download.eclipse.org/releases/helios-モデリング
OneWorld

3
これは古い投稿ですが、eUML2のインストールに関するほとんどの問題は解決されたようです。
アンディ

7
eUMLは本当のがらくたです。それは私のコード形式を変更し、あらゆる場所にタグを追加しました。私のコードは非常に汚いので、変更を元に戻すことを好みます。問題は、元に戻すことができず、コードが永久に変更されることです。eUMLクラッパーを使用する前にプロジェクトをバックアップすることをお勧めします:-)
UML GURU

31
バージョン管理について聞いたことがありますか?
食欲をそそるエリジウム

9

私は著者の一人なので、答えは偏っています。オープンソース(Apache 2.0)ですが、プラグインは無料ではありません。ローカルでクローンを作成してビルドする場合、(明らかに)支払う必要はありません。

Intellij IDEAでは、ZenUMLはJavaコードからシーケンス図を生成できます。 ここに画像の説明を入力してください

https://plugins.jetbrains.com/plugin/12437-zenuml-supportで確認してください。

ソースコード:https : //github.com/ZenUml/jetbrains-zenuml


1
@hc_dev、リマインダーをありがとう。そのメモを追加しました。
Xiao Peng-ZenUML.com

7

どの程度PlantUML?リバースエンジニアリング用ではありません!!! コード化する前のエンジニアリング用です。


4
リバースエンジニアリングツールを明確に求める質問には答えません。
jmite

1
それが完全に正しいかどうかはわかりません。PlantUMLは、ダイアグラムでコードを記述することもできます。クラスファイルで関連するビューを開いてみてください
Erez A. Korn

1
ええ、私はクラス図がEclipseプラグインのJavaファイルから自動作成されていることを確認できます。
HRJ 2013

1
私はこれを試しましたが、PlantUMLコードが複雑になりすぎると、図面が適切にレンダリングされず、グリッチが発生する理由を理解するためにすべての時間を費やします。小さな図だけに適しています。
trusktr 2013年

Intellijでは、PlantUMLとSketch It!を組み合わせています。そして、graphvizはコードからクラス図を生成できます。小さなパッケージに最適です。図が大きくなりすぎると、pngが完全に作成されないようです。
Melissa Loos

6

私は、CLIからプラグインの目標として実行するか、依存関係としてインポートし、プログラムでパーサーを使用して両方の方法を理解できるMavenプラグインを開発しました@see Main#main()

これ、必要に応じて手動で編集できるように、目的のパッケージのPlantUML srcコードを再帰的レンダリングします(できれば、できません)。次に、plantUMLページにコードを貼り付けるか、plantのjarをダウンロードして、UML図をpng画像としてレンダリングできます。

こちらをご覧くださいhttps://github.com/juanmf/Java2PlantUML

出力図の例: ここに画像の説明を入力してください

どんな貢献でも大歓迎です。出力をカスタマイズする一連のフィルターがありますが、プラグインのCLIパラメーターではまだ公開していません。

* .javaファイルに限定されず、Maven依存関係からUML図srcをレンダリングできることに注意することが重要です。これは、依存しているライブラリを理解するのに非常に便利です。それは実際にリフレクションでコンパイルされたクラスを検査するので、ソースは必要ありません

GitHub:Pで最初にスターを付けましょう


4

私は、一般的な使用法としてOmondoのEclipseUMLをお勧めしますが、Webプロジェクトで数か月前にいくつかの問題が発生しました。ある時点で無料版がありましたが、それはおそらく宣伝されていません。

ソースコードからシーケンス図をリバースエンジニアリングすることに本当に熱心である場合は、jTracertをお勧めします

Eclipseプロジェクト自体に関する限り、Eclipse UML2ツールプロジェクトはリバースエンジニアリングをサポートしている可能性がありますが、実際にその使用を確認したことはありません。

MoDisco(モデルディスカバリー)プロジェクトのEclipse GMTプロジェクトは、あなたの目的を達成するために明確であるように思われます。テクノロジー固有のツールリストは、開始するのに適しています。


UML2ツールにリバースエンジニアリング機能が見つからない;(
OneWorld

2
jTracertは廃止されました。jTracertの後継であるjSondeと呼ばれる新しいツールがGPL v3の下でライセンスされています。 jsonde.com
アルパイン

OmondoはJavaに最適です。統合は本当にすっきりしており、モデルとコードの混在はありません。素晴らしいが高すぎる。私たちは1つのライセンスのみを購入することを許可されていますが、セキュリティはユーザー名のログインに基づいているため、20人を超えるモデラーが使用しています。つまり、10人のユーザーが同じログインを持っている場合、すべてのユーザーがそれを使用できます。管理者のユーザー名でライセンスを取得しました:-)
UML GURU

jSonde上に示したURLには使用できません。Github:github.com/bedrin/jsondeウェブサイトとソースコードを見つけることができます。
ハイメ

3

私が見つかりました。グリーン使用するプラグインは非常にシンプルで、ソースコードからクラス図を生成します。試してみる :)。プラグインをプラグインディレクトリにコピーするだけです。


2
グリーンはポテンシャルがあるようです。しかし、私の仕事では、約700のクラスを持つプロジェクトがあり、それが少しの間膨らんでから死んでしまいます。
Appak

3

また、netbeans UMLモデラーを試してみることもできます。私はこれを使用して、Eclipseプロジェクトで使用したjavacodeを生成しました。EclipseプロジェクトをNetBeansにインポートして、Eclipse設定をNetBeansプロジェクト設定と同期したままにすることもできます。

私は日食のためにいくつかのUMLモデラーを試してみましたが、満足できませんでした。それらは不安定で複雑であるか、単純に醜いものでした。;-)


私はNetbeans UMLモデラーも使用しており、比較的単純なケースでは問題にぶつからないことを述べたかっただけです。UIはあまり直感的ではありませんが、まったく問題ありません。モデラーには、私が正しく覚えていれば、モデルからJPAエンティティコードを作成するなど、いくつかの高度な機能もあります。
Tuukka Mustonen 2010年

1
残念ながら、UMLプラグインはサポートされなくなったようです。プラグイン書き換えが進んでいるようですが、書き換えが完了する前に古いプラグインを削除したので、誰も助けにはなりません。
Appak

それは残念なことです:-(書き換えに時間がかかりすぎないことを期待しましょう:-)
Patrick Cornelissen

1
NetBeansのUMLはVPによって作成されていました。彼らはもうそれをしません。弱いバージョンのVP UMLだけが現在利用可能です。
Gangnus

2

IntelliJ IDEAの使用。クラス図を生成するには、パッケージを選択してCtrl+ Alt+ を押しますUここに画像の説明を入力してください

デフォルトでは、クラス名のみが表示され、すべての依存関係は表示されません。変更するには:右クリック->カテゴリの表示...と依存関係の表示: ここに画像の説明を入力してください

依存関係図(UML配置図)を生成し、mavenを使用するには、[表示]-> [ツールウィンドウ]-> [Mavenプロジェクト]に移動し、Ctrl+ Alt+ を押しUます。 ここに画像の説明を入力してください

結果: ここに画像の説明を入力してください

また、より多くの他の図を生成することも可能です。ドキュメントを参照してください。


2

あなたは、Eclipse 3.5のためEclipseUMLの30日間評価ビルドを使用することができます。http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip これは、最新の3.6ビルドではありませんが、かなり良いですし、テストやリバースエンジニアリングのために購入する必要はありません。

リバースエンジニアリング:http : //www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

ライブフラッシュデモ:http : //www.ejb3.org/reverse.swf

EclipseUML Omondoは、Javaにとって世界で最高のツールです。eUMLだけがこのライブJava同期市場で競合しているようですが、eUMLはコードにモデルタグを追加しますが、これは本当に非常に悪いことであり、私にとって決定的な行き止まりです。



0

PlantUMLをお勧めします。このツールは非常に便利で使いやすいです。PlantUMLには、JavaコードからUML図を作成できるNetbeansのプラグインがあります。

この方法でNetBeansにPlantUMLプラグインをインストールできます。

Netbeansメニュー->ツール->プラグイン

次に、利用可能なプラグインを選択し、PlantUMLを見つけてインストールします。

詳細については、ウェブサイトをご覧ください:www.plantuml.com


0

IntellijのSequenceDiagramプラグインも良いオプションであることに気づきました。


1
世代のためにこれを確認します- quora.com/What-is-the-best-tool-to-generate-UML-diagramsstackoverflow.com/questions/4449291/...スケッチ用(リバースエンジニアリング)&&: - guru99.com/ best-uml-tools.html(すべての無料ツールがシーケンス図を生成するわけではなく、クラス図のみをサポートする可能性があることを思い出してください。生成にはSequenceDiagramを使用し、UML図の手動作成にはdraw.ioを使用しました)
whoami

0

Javaのもう1つのモデリングツールは、(私の)WebサイトGitUMLです。GitHubリポジトリに保存されているJavaまたはPythonコードからUML図を生成します。

GitUMLの重要なアイデアの1つは、「ドキュメント」の問題の1つに対処することです。つまり、ダイアグラムは常に古くなっています。GitUMLでは、gitを使用してコードをプッシュすると、ダイアグラムが自動的に更新されます。

コミュニティーのUMLダイアグラムを参照してください。そこにはいくつかのJava設計パターンがあります。人気のGitHubリポジトリをサーフィンし、それらのアーキテクチャとパターンを視覚化します。

図ブラウザ

ポイントアンドクリックを使用して図を作成します。ドラッグドロップエディターはありません。視覚化するリポジトリツリーのクラスをクリックしてください。

視覚化するJavaクラスを選択します

基盤となるテクノロジーはPlantUMLベースです。つまり、追加のPlantUMLマークアップを使用してダイアグラムを調整できます。


0

Javaメソッドの(ソースコードの代わりに)から、または()を生成できるbinarydocという名前の無料ツールがあります。UML Sequence DiagramControl Flow GraphCFGbytecode

以下は、Javaメソッドjava.net.AbstractPlainSocketImpl.getInputStreamに対して生成されたサンプルの図であるbinarydocです。

  • メソッドの制御フローグラフjava.net.AbstractPlainSocketImpl.getInputStream

制御フローグラフ

  • メソッドのUMLシーケンス図java.net.AbstractPlainSocketImpl.getInputStream

UMLシーケンス図

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.