web-dev-qa-db-ja.com

PHP UMLジェネレーター

PHPの既存のクラスに基づいてUML図を生成するにはどうすればよいですか?

107
Jeffrey04

BOUML which:

  • 非常に高速です(これまでに作成された中で最も速いUMLツールです ベンチマーク をチェックしてください)、
  • 堅実PHPインポートおよびエクスポートサポート(C++、Java、Pythonもサポート)
  • マルチプラットフォーム(Linux、Windows、その他のOS)です。
  • フル機能で、非常に集中的に開発されています( 開発履歴 を見てください。このような急速な進歩が可能であるとは信じられません)。
  • プラグインをサポートし、モジュラーアーキテクチャを備えています(これにより ユーザーの貢献 が可能になり、BOUMLコミュニティが形成されているように見えます)
41
anon

pear から利用可能なPHP UMLツールもあります。

PHP_UML:

  • バージョン1.4またはバージョン2.1(論理、コンポーネント、およびデプロイメントビュー)でUML/XMIファイルを生成できます。
  • HTML形式のAPIドキュメントを生成できます
  • 特定のXMIファイルからPHPコード(コードスケルトン)を生成できます。
  • UML/XMIコンテンツをバージョン1.4からバージョン2.1に変換できます

以下を介してコマンドラインにインストールします。

$ pear install pear/php_uml

(以前は$ pear install pear/php_uml-alphaでしたが、その後パッケージは安定しました。)

Xmiを生成します。

$ phpuml -o project.xmi

41
kguest

phUML

phUMLは、BSDライセンスでライセンスされた、PHPで記述された完全自動のUMLクラスダイアグラムジェネレータです。 PHP5オブジェクト指向のソースコードを解析し、UML仕様に基づいてoo構造の適切な画像表現を作成できます。

UML Example

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

ステップバイステップガイド

23

PHPおよびUMLを実行するのに最適な(Windows)ソフトウェアは Sparx SystemsEnterprise Architect です。 機能 のpletoraに加えて、PHPの following をサポートします

  • オブジェクト指向のPHPをUMLクラス図にリバースエンジニアリングします
  • UMLクラス図からPHPクラス定義を生成する
  • UMLクラスで行われた変更を対応するPHPクラス定義に同期します
  • PHPクラス定義で行われた変更を対応するUMLクラスに同期します
  • UMLシーケンス図を作成して、PHPクラスが使用するものとその使用方法を示します
  • 標準のPHPおよびHTML形式でRTFコードの詳細なドキュメントを作成する
  • モデルのコードエンジニアリングを実行して、ベースPHPページを生成します。

無料(199ドル)ではありませんが、間違いなくお金の価値があります。

19
ax.

php2xmi もあります。少し手作業を行う必要がありますが、すべてのクラスが生成されるため、 mbrello のクラス図にドラッグするだけです。

それ以外の場合、反射とgraphvizを使用してダイアグラムを生成するのは非常に簡単です。スニペット こちら があり、これを出発点として使用できます。

7
troelskn

Autodia はまだ試しましたか?前回試したときは完璧ではありませんでしたが、十分でした。

7
Vinko Vrsalovic

私がそれをした方法は次のとおりです(コードから手動で何も描画せずにPDF描画に直接):

  1. クラスモデルを抽出するには、「リバースエンジニアリングPHPコード」に BOUML を使用します(BOUMLはUbuntuの「ユニバース」リポジトリから入手できます)。私が試した他の多くのプログラムに比べて本当に速いので、私はこのステップにBOUMLを真剣にお勧めします。さらに、BOUMLはモデルを正しく抽出しているように見えます(BOUMLが抽出しようとする部分についても)。
  2. BOUMLを使用してモデルをXMI 1.4ファイルとしてエクスポートします
  3. ArgoUML を使用して、上記のXMIファイルをインポートします(このステップにはWebstartバージョンを使用できます)
  4. ArgoUMLからXMIをエクスポートします(出力がどのXMIバージョン/バリアントであるかわかりませんが、BOUMLからの出力と同じ結果ではありません。argouml-graphvizはBOUMLから直接XMIファイルを処理できません)。
  5. argouml-graphviz を使用して、ArgoUMLでエクスポートされたXMIファイルをドット形式に変換します(XSLT2を使用しているため、xsltprocの代わりに saxon を使用する必要がある場合があります)
  6. dot または fdp または sfdp を使用して、クラス図をレンダリングします。

Fdpを使用してPDFダイアグラムを出力するのに適したコマンドラインの例を次に示します(argouml-graphviz XLST処理によって生成されたドットファイルがxmi-model.dotとして保存されていると仮定)。

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

別の方法として、「リバースエンジニアリング」の部分を行うために、BOUMLの代わりに PHP_UML または php2xmi を試すことができます。私はまだ試していません。

(「リバースエンジニアリング」というフレーズを使用しているのは、UMLの人々がソースコードからクラスおよびメソッド情報を抽出することを意味するときにそれらの単語を使用しているようだからです)実行可能なバイナリファイルまたはキャプチャされた生のワイヤデータから情報を抽出するような単語。

コンピューターを使用してすべての描画を行うのではなく、手動でクラス図を描画する場合は、描画にBOUMLまたはArgoUMLを使用できます。その場合、BOUMLを介して「リバースエンジニアリング」データを使用すると役立ちます。

7

既存のPHPクラスからUMLを簡単に生成したい場合は、PHPStorm 3.0 IDEを検討してください。既存のコードをUMLに複製するのに適しています。

PHP Storm機能リスト をご覧ください。

5
David Lundquist

UMLにはVisual Paradigmを使用できます。これは最高の有料(699米ドル)の製品ではないかもしれません。誰かが試してみたい場合の選択肢としてだけです。 PHPからクラス図を作成できます。その逆も同様です。PHPだけでなく、C#、C++、Ruby、Java、VB.NET、Python、Objective C、Perlなどの言語を選択できます。など。確認できる試用版もあります。

1
Hendra Uzia

理論的には、PhpStormを使用して、UMLを使用してクラスを視覚化できます。生成は本当に素晴らしいものではありませんが、少なくとも親、実装、定数、属性、メソッド、およびそれらの可視性をニースの方法でプレビューできます。

状況

同僚との既存のコンポーネント間の通信を視覚化したい。

PHPStormを使用したプロセス

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

利点

  • 素敵なUI、最終図。
  • ダイアグラムからコードをリファクタリングできます。
  • メモを追加できます。
  • クラス図は、プライベート/パブリックプロパティ、コンストラクター、メソッドをうまく象徴しています。

欠点

  • PHPのサポートなし7。
  • 痛々しいほどに使用する。生成されたボックスのサイズを変更できません。
  • 新しい関係を追加すると、以前の関係はランダムに失われます:O wtf?
  • PhpStormを再起動すると図が破壊されます
  • 私の心を変えた、関係を使用することは不可能

結果

とにかく、いくつかの苦痛な時間を費やした後、私は関係のないボックスしか生成できず、関係をリンクするために追加のプログラムを使用する必要がありました。すごく悪い。しかし、コードが変更されるとダイアグラムが自動的に更新されるため、適切に機能させると素晴らしい機能になると思います。

今のところ、UMLダイアグラムにPhpStormを使用しないでください。

1
BlocksByLukas

正直言って、何よりもまず、コードからUMLモデルを生成するのではなく、UMLモデルからコードを生成する必要があります;)。

まれな状況であっても、このリバースエンジニアリングを行う必要がある場合、自動生成されたUMLの視覚(=情報)が非常に悪いため、手作業で行うか、少なくともダイアグラムを整理することをお勧めします。ほとんどの場合価値があります。

ダイアグラムを生成するだけの場合は、おそらく正確な理由を自問するのがよいでしょう。対象読者は誰で、目標は何ですか?自動生成されたダイアグラムは何を提供する必要があり、どのコードは提供しませんか?

基本的に、その質問に対する答えは1つだけ受け入れます。それはただ大きくなりすぎて、理解できません。

コーディングを開始するのではなく、最初にUMLを開始する理由でもあります;)これは分析と呼ばれ、減少傾向にあります。

0
trueanalysis.eu