Seorang kolega sedang mencari untuk menghasilkan diagram kelas UML dari tumpukan kode sumber Python. Dia terutama tertarik pada hubungan warisan, dan sedikit tertarik pada hubungan komposisi, dan tidak terlalu peduli tentang atribut kelas yang hanya primitif Python.
Kode sumbernya cukup mudah dan tidak terlalu jahat - misalnya, tidak melakukan keajaiban metaclass mewah. (Ini sebagian besar dari zaman Python 1.5.2, dengan beberapa taburan hal-hal 2.3ish "modern".)
Apa solusi terbaik yang ada untuk direkomendasikan?
Jawaban:
Anda mungkin pernah mendengar tentang Pylint yang membantu memeriksa kode Python secara statis. Beberapa orang tahu bahwa itu datang dengan alat bernama Pyreverse yang menarik diagram UML dari kode python yang dibacanya. Pyreverse menggunakan graphviz sebagai backend.
sumber
Epydoc adalah alat untuk menghasilkan dokumentasi API dari kode sumber Python. Ini juga menghasilkan diagram kelas UML, menggunakan Graphviz dengan cara mewah. Berikut adalah contoh diagram yang dihasilkan dari kode sumber Epydoc itu sendiri.
Karena Epydoc melakukan introspeksi objek dan parsing sumber, ia dapat mengumpulkan lebih banyak informasi sehubungan dengan penganalisa kode statis seperti Doxygen: ia dapat memeriksa sejumlah adil kelas dan fungsi yang dihasilkan secara dinamis, tetapi juga dapat menggunakan komentar atau string yang tidak ditetapkan sebagai sumber dokumentasi, misalnya untuk variabel dan atribut publik kelas.
sumber
epydoc
tampaknya tidak dapat menghasilkan grafik. Lihat laporan bug ini .Periksa daftar tujuh alat uml ini untuk python
sumber
Kelas-kelas tertentu dari program yang berperilaku baik mungkin diagram diagram, tetapi dalam kasus umum, itu tidak dapat dilakukan. Objek Python dapat diperpanjang pada saat run time, dan objek dari tipe apa pun dapat ditugaskan ke variabel instan apa pun. Mencari tahu kelas apa objek dapat berisi pointer ke (komposisi) akan membutuhkan pemahaman penuh tentang perilaku runtime program.
Kemampuan metaclass Python berarti bahwa penalaran tentang struktur warisan juga akan membutuhkan pemahaman penuh tentang perilaku runtime program.
Untuk membuktikan bahwa ini tidak mungkin, Anda berpendapat bahwa jika diagram UML seperti itu ada, maka Anda dapat mengambil program sewenang-wenang, mengonversi pernyataan "berhenti" menjadi pernyataan yang akan memengaruhi diagram UML, dan menggunakan diagrammer UML untuk menyelesaikan masalah penghentian, yang kita tahu tidak mungkin.
sumber
Jika Anda menggunakan gerhana, mungkin PyUML . Tapi belum pernah menggunakannya.
sumber
.zip
arsip.Perlu disebutkan Gaphor . Alat pemodelan Python / UML.
sumber
Umbrello juga melakukannya. di menu buka Kode -> proyek impor dan kemudian arahkan ke direktori root proyek Anda. maka itu membalikkan kode untuk ya ...
sumber
vipera adalah perancang aplikasi kecil, dan uml disertakan. Anda bisa melihatnya di:
vipera
Salam Hormat.
sumber
The SPE IDE memiliki built-in UML pencipta. Cukup buka file di SPE dan klik pada tab UML.
Saya tidak tahu seberapa komprensifnya untuk kebutuhan Anda, tetapi tidak memerlukan unduhan atau konfigurasi tambahan untuk digunakan.
sumber
Enterprise Arsitek Sparx melakukan pemborosan sumber Python. Mereka memiliki edisi uji coba terbatas waktu bebas.
sumber