PHP UMLジェネレーター[終了]


110

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


2
PHPを使用していないので、実際にテストするコードがありません。私がこれを投稿したとき、最初の答えはどれも十分ではありませんでしたが、それ以来多くのことが変わっています。私はPHP 5.2を使用していましたが、最近ではPHP7になっています。
Jeffrey04 2017

回答:


42

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


2
何らかの理由で、pear.comは末尾にスラッシュがないとそのリンクが気に入らない:pear.php.net/package/PHP_UML
Stephen Fuhry

1
@Stephen、ええ、私もそれに気づきました!リンクをクリックすると404が表示されますが、アドレスバーを選択してEnterキーを押すと機能します。
nickf

1
数年後のコマンドは今ですpear install PHP_UML-1.6.1pear.php.net/package/PHP_UML/download/Allまたはpear.php.net/package/PHP_UMLを参照)
Ben

1
これは受け入れられる答えになるはずです。ツールは素晴らしいです。
Xofo 2016

3
PHP

41

次のようなBOUMLを強くお勧めします

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

ベンチマークは非常に印象的です。私はエンタープライズアーキテクトが大好きですが、PHPをサポートしていません。おかげで、このツールを渡します。
Paul Dragoonis

1
@Paul Dragoonis Sparx Systems Enterprise Architect PHPをサポートますが、最悪のものはサポートいません
斧。

5
BOUMLのWebページには次のように記載されています。
MPV 2011

1
「[2011年12月18日]公式ウェブサイトからのダウンロードは、追って通知があるまで停止されます。http://bouml.free.fr/download.html-これは、Win7のバージョンが必要だったためです。Ubuntuリポジトリからまだ利用できる可能性があると思います-チェックする必要があります
Val Redchenko

4
2012年9月23日にリリースされたバージョン6.1 。開発は再び持ち直しているようです。減速、停止などに関する通知はありません。bouml.fr/historic.html
Andrew Ensley

24

phuml

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

UMLの例

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

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


ダウンロードにはSVN / subversionが必要で、ソースコードのライセンスが何であるかは実際には何も言われていませんが、見た目は良いです!ええ、私はソースコードを注意深く見ていましたが、ライセンスは絶対にありません。唯一のreadmeは、私が思うサイトにあります

ライセンスは、プロジェクトのWebサイトのサイドバーの作者であるCreative Commons:creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulosにリンクさ

それはサイトのコンテンツのライセンスです。プロジェクトのライセンスはプロジェクト自体に含まれている必要あります。

3
私は作者であるJakobにメールを送信しました。彼はリポジトリに更新を加え、明確な3節のbsdライセンス
Anthony Hatzopoulosを2014年

私はこれをダウンロードして、少しいじくり回した後に動作するようにしました。アソシエーションを機能させることができないことを除いて、本当にとても良かったが、私はそれを理解するだろうと確信している。いい、シンプル。GUIはありませんが、それほど大きな問題ではありません。
インパルス2014

19

PHPとUMLを実行するために私が見つけた最高の(Windows)ソフトウェアはSparx Systems Enterprise Architectです。一連の機能に加えて、PHPでは以下をサポートしいます。

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

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


1
うわー、それは本当に便利でプロフェッショナルなプログラムです。PHPソースコードからSparx EAのリバースエンジニアリング手法を使用して生成したUMLクラス図を試してみましたが、それは魅力的に機能しました。:Dプロジェクトがどんどん大きくなり、オブジェクトをどんどん作成するようになると、独自のコードを監視するのが難しくなりますが、UML図を正しい方法で生成するので、これは大きな助けになります。もちろん、例外が発生する可能性があります)コードを終了した後。これは、オブジェクト間の関係を単純化するのにも役立ちます。
Sk8erPeter

@ax-私は初心者ですが、機能のリスト(「エディションの比較」の下)で少し迷ってしまいます。PHPコード(またはPHPファイルへのリンク)を入力して、代わりに図を取得できるようにする機能の名前は何ですか?私が必要とするかもしれないバージョンを把握しようとしています。
JDelage 2012


7

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

それ以外の場合、reflectionとgraphvizを使用して図を生成するのはかなり簡単です。ここにスニペットがあります。これを開始点として使用できます。


7

これが私がそれをした方法です(何も手動で描画することなくコードからPDFの描画に直接):

  1. 使用BOUML「リバースエンジニアリングPHPコード」のための[sic]クラスモデル(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. 使用ドットまたは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

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

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

(すべての描画にコンピューターを使用する代わりに)クラス図を手動で描画したい場合は、描画にBOUMLまたはArgoUMLのいずれかを使用できます。その場合、BOUMLを介して「リバースエンジニアリングされた」データを使用すると役立ちます。



1

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


1

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

状況

既存のコンポーネント間の同僚とのコミュニケーションを視覚化したいと思います。

PHPStormを使用したプロセス

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

メリット

  • 素敵なUI、最終図。
  • 図からコードをリファクタリングできる。
  • メモを追加できます。
  • クラス図は、プライベート/パブリックプロパティ、コンストラクタ、メソッドを適切にシンボル化します。

短所

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

結果

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

現時点では、UML図にPhpStormを使用しないでください。


これは新しいものだと思います(:
Jeffrey04 2017年

正しい。現在、私は同じ状況にあります。システムの複雑な部分を開発しましたが、それを同僚のために視覚化したいと考えています。私はいくつかのツールを試しましたが、それらはひどく醜いです:)私はPHPStormでそれを行い、それがどのように見え、それがどれほど強力であるか私の答えを更新します。今日は結果をお知らせします@ Jeffrey04
Lukas

大丈夫です、私は実際にはしばらくPHPを使用しません
Jeffrey04

0

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

まれな状況であっても、このリバースエンジニアリングを行う必要がある場合は、自動生成されたUMLの視覚的情報(=情報)が非常に低いため、通常は手動で行うか、少なくとも図を片付けることをお勧めします。ほとんどの場合価値。

ダイアグラムを生成する必要があるだけなら、なぜそれを正確に自問するのが良いでしょうか?対象となる視聴者は誰ですか?目標は何ですか?自動生成された図は何を提供する必要がありますか、どのコードは提供しませんか?

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

これも、コーディングを開始するのではなく、最初にUMLから始める理由です;)これは分析と呼ばれ、衰退しつつあります。ビジネスの2人に1人は少し高すぎるため、本当に必要ではないと考えているからです。


7
確かに、しかし人生はいくつかの原則よりも複雑であり、それは賢明な使い方です。実際のコードを元のUMLダイアグラムと比較するか、UMLダイアグラムなしで実装された誰かのコードまたはいくつかのコードを分析する必要がある場合があります。
DAH 2015

3
同意しない。コードベース/モジュールを図で視覚化することから得られる大きな価値。コードは通りの道順に似ていますが、道順が多すぎると、マップが役立つことがあります。
バジルムーサ

1
ほとんどのUML描画プログラムのUIは非常に悪いため、ダイアグラムの生成に使用したコードを
破棄し
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.