既存のJavaコードからUML図(特にシーケンス図)を生成するにはどうすればよいですか?
既存のJavaコードからUML図(特にシーケンス図)を生成するにはどうすればよいですか?
回答:
私が使用したものです。リポジトリから簡単にインストールできます:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
そして、非常に優れたUMLダイアグラムを生成します。
ObjectAid UML Explorerは、他のUMLツールとは異なります。UML表記を使用して、非常に使いやすく、テキストエディタと同じくらい正確で最新の既存のコードをグラフィカルに表示します。これを可能にするいくつかのユニークな機能:
- ソースコードとライブラリは表示されるモデルであり、別の形式にリバースエンジニアリングされません。
- Eclipseでコードを更新すると、ダイアグラムも更新されます。ソースコードをリバースエンジニアリングする必要はありません。
- リファクタリングにより、ダイアグラムとソースコードが更新されます。フィールドの名前を変更したり、クラスを移動したりすると、図は同期を失うことなく変更を反映するだけです。
- Eclipseワークスペース内のすべてのダイアグラムは、必要に応じてリファクタリングの変更で更新されます。必要に応じて、バージョン管理システムからチェックアウトされます。
- 図はEclipse IDEに完全に統合されています。Javaクラスを他の任意のビューからダイアグラムにドラッグできます。ダイアグラム関連の情報は、該当する他のビューに表示されます。
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.
編集:あなたがデザイナーならPapyrusがあなたの最良の選択ですそれは非常に高度で機能が豊富ですが、いくつかのUMLダイアグラムと簡単なインストールをスケッチしたいだけならObjectAid はかなりクールでプラグインを必要としませんI Eclipse-Java EEを介してインストールしただけで、うまく動作します
2013年10月11日更新
私の最初の投稿は2012年6月で、多くのツールが変化し、多くのツールが成長しましたが、他のツールは変化しませんでした。モデリングをやり直し、投稿への返信もあるので、パピルスを再度インストールし、他の可能なUMLモデリングソリューションをもう一度調査することにしました。UML生成(同期機能付き)は、ソフトウェア設計者ではなく、平均的な開発者にとって非常に重要です。
パピルスがUMLクラス図にクラスをリバースエンジニアリングする簡単な方法を望んでおり、そのリバースエンジニアリングに同期機能があれば非常にクールですが、残念ながらパピルスプロジェクトには機能が満載で、開発者はすでに多くの人から手が届いていると思いますあなたがパピルスに対してあなたがする行動はあなたに何の反応も与えないかもしれません、そして何も起こらないだけですがそれはとにかくこの質問の範囲外です
答え(2013年10月11日)
ツール
手順
MyProject_kdm.xmi-> Discovery-> Discoverer-> KDMコードからUMLモデルを再度右クリックすると、プロパティダイアログが表示され、シリアル化プロップをTRUEに設定してMyProject.umlという名前のファイルを生成します。
ルートで生成された生成済みのMyProject.umlをUMLフォルダーに移動すると、Eclipseはそれを置き換えたいかどうか尋ねてきますので、[はい]をクリックします。ここで行ったことは、空のモデルを生成されたモデルで置き換えたことです。
Alt + W->ビューを表示->パピルス->モデルエクスプローラー
そのビューでは、写真のようにクラスが見つかります
ビューで、ルートモデルを右クリックします->新しいダイアグラム
次に、ビューからダイアグラムへのクラスの取得を開始します
いくつかの機能
クラス要素(変数、関数など)を表示するにはクラスを右クリック->フィルター->コンテンツの表示/非表示出来上がり!!
ウィンドウ->環境設定->パピルス->クラス図からデフォルトのフレンドリーな色設定をすることができます
非常に重要な設定の1つは、クラスをドロップするときに配置を整理することです。クラスダイアグラムの何もないスペースを窮屈に右クリックし、[すべて配置]をクリックします。
モデルエクスプローラービューの矢印をダイアグラムに取り込むと、一般化、実現化などを表示できます
すべての後にあなたの設定は次のような図を表示します
新しいクラスを手動でインポートする必要があることがわかっている限り、同期は利用できません。
それだけです。本当に必要な場合を除いて、市販の製品を購入しないでください。パピルスは、実際には素晴らしいものであり、代わりに寄付や何かを提供しています。
免責事項:私はパピルスの人々とは関係がありません。実際、私は最初、多くの研究を行い、辛抱強くそれを経験するまで、パピルスが好きではありませんでした。そして、私が他の無料のツールを試したときに再びこの投稿に戻るでしょう。
あなたのコードベースは何ですか?JavaまたはC ++?
eUML2 for Javaは、EclipseのJava開発者向けに設計された強力なUMLモデラーです。無料版は商用利用が可能です。次の機能をサポートしています。
- CVSとチームのサポート
- 複数のカスタマイズ可能なモデルビューを備えた大規模プロジェクト向けに設計
- Helios準拠
- リアルタイムのコード/モデル同期
- UML2.1に準拠し、OMG XMIをサポート
- JDK 1.4および1.5のサポート
商用版は以下を提供します:
高度なリバースエンジニアリング
- 強力な真の依存関係分析ツール
- UMLプロファイルとMDD
- データベースツール
- カスタマイズ可能なテンプレートのサポート
私は著者の一人なので、答えは偏っています。オープンソース(Apache 2.0)ですが、プラグインは無料ではありません。ローカルでクローンを作成してビルドする場合、(明らかに)支払う必要はありません。
Intellij IDEAでは、ZenUMLはJavaコードからシーケンス図を生成できます。
https://plugins.jetbrains.com/plugin/12437-zenuml-supportで確認してください。
どの程度PlantUML?リバースエンジニアリング用ではありません!!! コード化する前のエンジニアリング用です。
私は、CLIからプラグインの目標として実行するか、依存関係としてインポートし、プログラムでパーサーを使用して両方の方法を理解できるMavenプラグインを開発しました@see Main#main()
。
これは、必要に応じて手動で編集できるように、目的のパッケージのPlantUML srcコードを再帰的にレンダリングします(できれば、できません)。次に、plantUMLページにコードを貼り付けるか、plantのjarをダウンロードして、UML図をpng画像としてレンダリングできます。
こちらをご覧くださいhttps://github.com/juanmf/Java2PlantUML
どんな貢献でも大歓迎です。出力をカスタマイズする一連のフィルターがありますが、プラグインのCLIパラメーターではまだ公開していません。
* .javaファイルに限定されず、Maven依存関係からUML図srcをレンダリングできることに注意することが重要です。これは、依存しているライブラリを理解するのに非常に便利です。それは実際にリフレクションでコンパイルされたクラスを検査するので、ソースは必要ありません
GitHub:Pで最初にスターを付けましょう
私は、一般的な使用法としてOmondoのEclipseUMLをお勧めしますが、Webプロジェクトで数か月前にいくつかの問題が発生しました。ある時点で無料版がありましたが、それはおそらく宣伝されていません。
ソースコードからシーケンス図をリバースエンジニアリングすることに本当に熱心である場合は、jTracertをお勧めします。
Eclipseプロジェクト自体に関する限り、Eclipse UML2ツールプロジェクトはリバースエンジニアリングをサポートしている可能性がありますが、実際にその使用を確認したことはありません。
MoDisco(モデルディスカバリー)プロジェクトのEclipse GMTプロジェクトは、あなたの目的を達成するために明確であるように思われます。テクノロジー固有のツールのリストは、開始するのに適しています。
また、netbeans UMLモデラーを試してみることもできます。私はこれを使用して、Eclipseプロジェクトで使用したjavacodeを生成しました。EclipseプロジェクトをNetBeansにインポートして、Eclipse設定をNetBeansプロジェクト設定と同期したままにすることもできます。
私は日食のためにいくつかのUMLモデラーを試してみましたが、満足できませんでした。それらは不安定で複雑であるか、単純に醜いものでした。;-)
あなたは、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はコードにモデルタグを追加しますが、これは本当に非常に悪いことであり、私にとって決定的な行き止まりです。
私がリバースエンジニアリングに使用した断然最高のツールであり、java-> UMLのラウンドトリップはBorlandのTogetherです。これは(単一のプラグインではなく)Eclipseに基づいており、実際にうまく機能します。
IntellijのSequenceDiagramプラグインも良いオプションであることに気づきました。
Javaのもう1つのモデリングツールは、(私の)WebサイトGitUMLです。GitHubリポジトリに保存されているJavaまたはPythonコードからUML図を生成します。
GitUMLの重要なアイデアの1つは、「ドキュメント」の問題の1つに対処することです。つまり、ダイアグラムは常に古くなっています。GitUMLでは、gitを使用してコードをプッシュすると、ダイアグラムが自動的に更新されます。
コミュニティーのUMLダイアグラムを参照してください。そこにはいくつかのJava設計パターンがあります。人気のGitHubリポジトリをサーフィンし、それらのアーキテクチャとパターンを視覚化します。
ポイントアンドクリックを使用して図を作成します。ドラッグドロップエディターはありません。視覚化するリポジトリツリーのクラスをクリックしてください。
基盤となるテクノロジーはPlantUMLベースです。つまり、追加のPlantUMLマークアップを使用してダイアグラムを調整できます。
Javaメソッドの(ソースコードの代わりに)から、または()を生成できるbinarydocという名前の無料ツールがあります。UML Sequence Diagram
Control Flow Graph
CFG
bytecode
以下は、Javaメソッドjava.net.AbstractPlainSocketImpl.getInputStreamに対して生成されたサンプルの図であるbinarydocです。
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: