Generator UML PHP [ditutup]

110

Bagaimana cara membuat diagram UML berdasarkan kelas yang ada di PHP?

Jeffrey04
sumber
2
Saya tidak bekerja dengan PHP lagi, jadi saya tidak memiliki kode untuk benar-benar diuji. Ketika saya memposting ini tidak ada jawaban awal yang cukup, tetapi banyak yang telah berubah sejak itu. Saya bekerja dengan PHP 5.2, dan sekarang PHP7 hari ini.
Jeffrey04

Jawaban:

42

Ada juga alat PHP UML yang tersedia dari pir .

PHP_UML:

  • Dapat menghasilkan file UML / XMI di versi 1.4, atau di versi 2.1 (tampilan logis, komponen, dan penerapan)
  • Dapat menghasilkan dokumentasi API dalam format HTML
  • Dapat menghasilkan kode PHP (kerangka kode) dari file XMI tertentu
  • Dapat mengkonversi konten UML / XMI dari versi 1.4 ke versi 2.1

Instal di baris perintah melalui:

$ pear install pear/php_uml

(Ini dulu $ pear install pear/php_uml-alphatetapi paketnya telah stabil.)

Hasilkan xmi Anda:

$ phpuml -o project.xmi

kguest
sumber
2
untuk beberapa alasan, pear.com tidak menyukai tautan itu tanpa garis miring: pear.php.net/package/PHP_UML
Stephen
1
@ Stephen, ya saya perhatikan itu juga! Jika Anda mengklik tautannya, itu memberi Anda 404, tetapi jika Anda memilih bilah alamat dan menekan enter, itu berfungsi.
nickf
1
Beberapa tahun kemudian perintah sekarang pear install PHP_UML-1.6.1(lihat pear.php.net/package/PHP_UML/download/All atau pear.php.net/package/PHP_UML )
Ben
1
Ini harus menjadi jawaban yang diterima. Alatnya spektakuler.
Xofo
3
tidak bekerja dengan php 7
DevWL
41

Saya sangat merekomendasikan BOUML yang:

  • sangat cepat (alat UML tercepat yang pernah dibuat, lihat tolok ukur ),
  • memiliki dukungan impor dan ekspor PHP yang kokoh (juga mendukung C ++, Java, Python)
  • multiplatform (Linux, Windows, OS lain),
  • berfitur lengkap, dikembangkan secara intensif secara mengesankan (lihat sejarah perkembangan , sulit untuk percaya bahwa kemajuan secepat itu mungkin).
  • mendukung plugin, memiliki arsitektur modular (ini memungkinkan kontribusi pengguna , seperti komunitas BOUML sedang terbentuk)
Daniel Gelling
sumber
Tolok ukurnya terlihat sangat mengesankan. Saya suka arsitek perusahaan tetapi tidak memiliki dukungan PHP. Saya akan menyebarkan alat ini, terima kasih.
Paul Dragoonis
1
@Paul Dragoonis Sparx Systems Enterprise Architect memang memiliki dukungan PHP - dan bukan yang terburuk .
kapak.
5
Halaman web untuk BOUML sekarang menyatakan: "PERHATIAN: Karena pelanggaran lisensi terus menerus, serangan dan penghinaan dari orang-orang wikipedia [...], saya telah memutuskan untuk berhenti bekerja di Bouml kecuali untuk memperbaiki bug."
MPV
1
"[18 Desember 2011] Download ditangguhkan hingga pemberitahuan lebih lanjut" dari situs web resmi mereka. http://bouml.free.fr/download.html - ini karena saya membutuhkan versi untuk Win7. Saya membayangkan itu mungkin masih tersedia dari repositori Ubuntu - perlu diperiksa
Val Redchenko
4
Versi 6.1 dirilis 23 September 2012 . Tampaknya pengembangan telah meningkat lagi. Tidak ada pemberitahuan tentang perlambatan, penghentian, dll. Bouml.fr/historic.html
Andrew Ensley
24

phUML

phUML adalah generator diagram kelas UML otomatis yang ditulis dalam PHP, berlisensi di bawah lisensi BSD. Ia mampu mengurai kode sumber berorientasi objek PHP5 dan membuat representasi gambar yang sesuai dari struktur oo berdasarkan spesifikasi UML.

Contoh UML

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

Panduan langkah demi langkah

Anthony Hatzopoulos
sumber
membutuhkan SVN / subversi untuk mengunduh dan tidak benar-benar menyebutkan apa lisensi kode sumbernya, tetapi kelihatannya bagus! yah saya akan berhati-hati melihat kode sumber sama sekali tidak ada lisensi di atasnya dan satu-satunya readme ada di situs saya pikir
Lisensi ditautkan di sana di bilah sisi situs web proyek, di bawah penulis, Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos
itulah lisensi untuk konten situs, LISENSI untuk proyek tersebut harus disertakan dengan proyek itu sendiri.
3
Saya mengirim email ke penulis, Jakob dan dia menanggapi dengan pembaruan ke repositori dengan Lisensi bsd 3-klausa yang
Anthony Hatzopoulos
Saya mendownload ini dan membuatnya berfungsi setelah sedikit mengutak-atik. Benar-benar cukup baik, kecuali saya tidak bisa mendapatkan asosiasi untuk bekerja, tapi saya yakin saya akan mengetahuinya. Bagus, sederhana. Tidak ada GUI, tapi bukan masalah besar.
Impuls
19

perangkat lunak (Windows) terbaik yang saya temukan untuk melakukan PHP dan UML adalah Sparx Systems Enterprise Architect . selain sejumlah besar fitur , ini mendukung berikut ini untuk PHP:

  • Membalikkan orientasi objek PHP ke dalam diagram kelas UML
  • Hasilkan definisi kelas PHP dari diagram kelas UML
  • Sinkronkan perubahan yang dibuat di kelas UML ke dalam definisi kelas PHP yang sesuai
  • Sinkronisasi perubahan yang dibuat dalam definisi kelas PHP ke dalam kelas UML yang sesuai
  • Buat diagram urutan UML untuk menunjukkan apa yang digunakan kelas PHP dan bagaimana kelas tersebut digunakan
  • Buat dokumentasi terperinci dari kode PHP Anda dalam format RTF dan HTML standar
  • Lakukan rekayasa kode pada model untuk menghasilkan halaman PHP dasar.

tidak gratis ($ 199), tetapi pasti bernilai uang.

kapak.
sumber
1
Wow, itu benar-benar program yang berguna dan profesional, terima kasih atas tipnya !! Saya baru saja mencoba membuat diagram kelas UML dengan metode rekayasa terbalik Sparx EA dari kode sumber PHP, dan bekerja seperti pesona, saya terkejut betapa bagusnya ini bekerja. : D Seiring proyek kami tumbuh semakin besar, dan kami membuat semakin banyak objek, semakin sulit untuk mengawasi kode kami sendiri, tetapi ini sangat membantu, karena ia menghasilkan diagram UML dengan cara yang benar (dari Tentu saja, mungkin pengecualian dapat terjadi) SETELAH kita menyelesaikan kode. Ini bahkan membantu menyederhanakan hubungan antar objek.
Sk8erPeter
@ax - Saya seorang pemula, dan saya agak tersesat dalam daftar fitur mereka (di bawah "bandingkan edisi"). Apa nama fitur yang memungkinkan saya memasukkan kode PHP (atau menautkan ke file PHP), dan mendapatkan diagram sebagai gantinya? Mencoba mencari tahu versi mana yang mungkin saya perlukan.
JDelage
7

Apakah Anda sudah mencoba Autodia ? Terakhir kali saya mencobanya tidak sempurna, tapi cukup bagus.

Vinko Vrsalovic
sumber
saya mencoba autodia tetapi entah bagaimana saya tidak dapat menghasilkan diagram kelas yang akurat (php5)
Jeffrey04
7

Ada juga php2xmi . Anda harus melakukan sedikit pekerjaan manual, tetapi ini menghasilkan semua kelas, jadi yang harus Anda lakukan adalah menyeretnya ke diagram kelas di Umbrello .

Jika tidak, membuat diagram dengan menggunakan refleksi dan graphviz, cukup sederhana. Saya memiliki cuplikan di sini , yang dapat Anda gunakan sebagai titik awal.

troelskn
sumber
7

Inilah cara saya melakukannya (langsung dari kode ke gambar PDF tanpa menggambar manual apa pun):

  1. Gunakan BOUML untuk "rekayasa balik kode PHP" [sic] untuk mengekstrak model kelas (BOUML tersedia dari repositori "semesta" Ubuntu). Saya sangat merekomendasikan BOUML untuk langkah ini karena sangat cepat dibandingkan dengan banyak program lain yang telah saya coba. Selain itu, tampaknya BOUML mengekstrak model dengan benar (bahkan untuk bagian-bagian yang BOUML coba ekstrak).
  2. Gunakan BOUML untuk mengekspor model sebagai file XMI 1.4
  3. Gunakan ArgoUML untuk mengimpor file XMI tersebut (Anda dapat menggunakan versi webstart untuk langkah ini)
  4. Ekspor XMI dari ArgoUML (Saya tidak tahu versi / varian XMI mana yang keluarannya tetapi hasilnya tidak sama dengan keluaran dari BOUML. Argouml-graphviz tidak dapat menangani file XMI langsung dari BOUML).
  5. Gunakan argouml-graphviz untuk mengonversi file XMI yang diekspor ArgoUML ke format titik (Anda mungkin perlu menggunakan saxon daripada xsltproc untuk membuatnya berfungsi karena penggunaan XSLT2)
  6. Gunakan titik atau fdp atau sfdp untuk membuat diagram kelas.

Berikut adalah contoh baris perintah yang sesuai untuk menggunakan fdp untuk menghasilkan diagram PDF (dengan asumsi bahwa file titik yang dihasilkan oleh pemrosesan XLST argouml-graphviz disimpan sebagai 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

Sebagai alternatif, Anda dapat mencoba PHP_UML atau php2xmi daripada BOUML untuk melakukan bagian "rekayasa balik". Saya belum mencobanya.

(Saya menggunakan frasa "rekayasa balik" karena tampaknya orang-orang UML menggunakan kata-kata itu ketika yang mereka maksud adalah mengekstrak informasi kelas dan metode dari kode sumber . Saya secara pribadi akan menafsirkan kata-kata itu sebagai mengekstrak informasi dari file biner yang dapat dieksekusi atau menangkap mentah data kabel.)

Jika Anda lebih suka menggambar diagram kelas dengan tangan (daripada menggunakan komputer untuk mengerjakan semua gambar), Anda dapat menggunakan BOUML atau ArgoUML untuk menggambar. Menggunakan data "rekayasa terbalik" melalui BOUML akan membantu dalam kasus tersebut.

Mikko Rantalainen
sumber
5

Jika Anda ingin membuat UML dengan mudah dari Kelas PHP yang ada, Anda mungkin ingin mempertimbangkan IDE PHPStorm 3.0. Itu melakukan pekerjaan yang baik untuk mereplikasi kode yang ada ke dalam UML.

Lihat daftar fitur PHP Storm .

David Lundquist
sumber
2
Tidak memvisualisasikan ketergantungan, hanya warisan.
Basil Musa
1

Anda dapat menggunakan Paradigma Visual untuk UML. Ini mungkin bukan produk dengan bayaran terbaik (US $ 699), hanya sebagai pilihan jika ada yang ingin mencoba. Itu dapat membuat diagram kelas dari PHP dan sebaliknya, dan tidak hanya PHP, ada banyak bahasa yang dapat Anda pilih seperti C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, dll. Ada juga uji coba yang dapat Anda periksa.

Hendra Uzia
sumber
1

Secara teori, Anda dapat menggunakan PhpStorm untuk memvisualisasikan kelas Anda menggunakan UML. Generasi ini tidak terlalu hebat tetapi Anda dapat memfaktor ulang secara efektif dan sekali lagi, setidaknya melihat pratinjau orang tua, implementasi, konstanta, atribut, metode, dan visibilitasnya dengan cara yang bagus.

Situasi

Saya ingin memvisualisasikan komunikasi antara komponen yang sudah ada dengan rekan kerja.

Proses menggunakan PHPStorm

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

Keuntungan

  • UI yang bagus, diagram akhir.
  • Mampu melakukan refactor kode dari diagram.
  • Mampu menambahkan catatan.
  • Diagram kelas melambangkan properti privat / publik, konstruktor, metode dengan baik.

Kekurangan

  • Tidak ada dukungan untuk PHP 7.
  • Sangat menyakitkan untuk digunakan. Tidak dapat mengubah ukuran kotak yang dibuat.
  • Saat menambahkan relasi baru, relasi sebelumnya hilang secara acak: O wtf?
  • Memulai ulang PhpStorm akan menghancurkan diagram
  • Berubah pikiran, tidak mungkin menggunakan hubungan

Hasil

Bagaimanapun, setelah beberapa jam kerja yang menyakitkan, saya hanya dapat membuat kotak yang tidak terkait dan harus menggunakan program tambahan untuk menghubungkan hubungan. Sangat buruk. Tapi saya yakin begitu mereka membuatnya berfungsi dengan baik, itu akan menjadi fitur hebat karena saat kode berubah, diagram akan diperbarui secara otomatis!

Untuk saat ini, jangan gunakan PhpStorm untuk diagram UML.

Lukas Lukac
sumber
Saya kira ini baru (:
Jeffrey04
Benar. Saat ini saya dalam situasi yang sama. Saya mengembangkan bagian kompleks dari sebuah sistem dan saya ingin memvisualisasikannya untuk kolega saya. Saya mencoba beberapa alat tetapi mereka menyebalkan dan jelek :) Saya akan melakukannya dengan PHPStorm dan memperbarui jawaban saya bagaimana tampilannya dan seberapa kuat itu. Saya akan memberi tahu Anda hari ini hasilnya @ Jeffrey04
Lukas Lukac
tidak apa-apa, sebenarnya saya tidak menggunakan PHP untuk beberapa waktu
Jeffrey04
0

Sejujurnya, pertama dan terpenting Anda tidak boleh membuat model UML dari kode, tetapi kode dari model UML;).

Bahkan jika Anda berada dalam situasi yang jarang terjadi, ketika Anda perlu melakukan rekayasa balik ini, umumnya disarankan agar Anda melakukannya dengan tangan atau setidaknya merapikan diagram, karena UML yang dibuat secara otomatis memiliki visual (= informasi) yang sangat buruk menghargai sebagian besar waktu.

Jika Anda hanya perlu membuat diagram, mungkin ada baiknya Anda bertanya pada diri sendiri mengapa sebenarnya? Siapa audiens yang dituju dan apa tujuannya? Apa yang ditawarkan diagram yang dibuat secara otomatis, kode apa yang tidak?

Pada dasarnya saya hanya menerima satu jawaban untuk pertanyaan itu. Itu terlalu besar dan tidak bisa dimengerti.

Yang lagi-lagi merupakan alasan untuk memulai dengan UML di tempat pertama, sebagai lawan untuk memulai pengkodean;) Ini disebut analisis dan itu menurun, karena setiap orang kedua dalam bisnis berpikir itu agak terlalu mahal dan tidak terlalu diperlukan.

trueanalysis.eu
sumber
7
Benar, tetapi hidup itu lebih rumit dari beberapa prinsip, yang bijaksana untuk digunakan. Anda mungkin perlu membandingkan kode aktual dengan diagram UML asli, atau menganalisis kode seseorang atau beberapa kode, yang diterapkan tanpa diagram UML.
DAH
3
Tidak setuju. Nilai besar diperoleh dari visualisasi basis kode / modul dengan diagram. Kode seperti petunjuk arah jalan, tetapi dengan terlalu banyak petunjuk arah terkadang orang mungkin menemukan peta berguna.
Basil Musa
1
Sebagian besar program menggambar UML memiliki UI yang buruk sehingga lebih cepat untuk menulis kode dan menghasilkan diagram UML secara otomatis, bahkan jika Anda kemudian membuang kode yang Anda gunakan untuk membuat diagram ...
Mikko Rantalainen