PHP UML जेनरेटर [बंद]


110

मैं PHP में मौजूदा कक्षाओं के आधार पर UML आरेख कैसे उत्पन्न करूं?


2
मैं अब PHP के साथ काम नहीं करता, इसलिए मेरे पास वास्तव में परीक्षण करने के लिए कोड नहीं है। जब मैंने यह पोस्ट किया तो कोई भी प्रारंभिक उत्तर पर्याप्त नहीं था, लेकिन तब से बहुत कुछ बदल गया है। मैं PHP 5.2 के साथ काम कर रहा था, और यह अब इन दिनों PHP7 है।
जेफरी04

जवाबों:


42

नाशपाती से उपलब्ध PHP UML टूल भी है ।

PHP_UML:

  • संस्करण 1.4 में, या संस्करण 2.1 (तार्किक, घटक और परिनियोजन दृश्य) में यूएमएल / एक्सएमआई फाइलें उत्पन्न कर सकते हैं
  • HTML प्रारूप में एक एपीआई प्रलेखन उत्पन्न कर सकते हैं
  • किसी दिए गए XMI फ़ाइल से PHP कोड (कोड कंकाल) उत्पन्न कर सकते हैं
  • UML / XMI सामग्री को संस्करण 1.4 से संस्करण 2.1 में परिवर्तित कर सकते हैं

के माध्यम से कमांड लाइन पर इसे स्थापित करें:

$ pear install pear/php_uml

(यह हुआ करता था $ pear install pear/php_uml-alphaलेकिन पैकेज तब से स्थिर है।)

अपनी ज़मी उत्पन्न करें:

$ phpuml -o project.xmi


2
किसी कारण के लिए, pear.com एक अनुगामी स्लैश के बिना उस लिंक को पसंद नहीं करता है: pear.php.net/package/PHP_UML
स्टीफन फुह्री

1
@ स्टीफन, हाँ, मैंने भी देखा! यदि आप लिंक पर क्लिक करते हैं, तो यह आपको 404 देता है, लेकिन यदि आप एड्रेस बार चुनते हैं और एंटर दबाते हैं, तो यह काम करता है।
निक

1
कुछ साल बाद अब कमांड है pear install PHP_UML-1.6.1(देखें pear.php.net/package/PHP_UML/download/All या pear.php.net/package/PHP_UML )
बेन

1
यह स्वीकृत उत्तर होना चाहिए। उपकरण शानदार है।
21

3
php 7 के साथ काम नहीं कर रहा है
DevWL

41

मैं BOUML की दृढ़ता से अनुशंसा करता हूं :

  • बहुत तेज़ है (सबसे तेज़ यूएमएल टूल जो कभी बनाया गया है, बेंचमार्क देखें ),
  • रॉक सॉलिड PHP इम्पोर्ट और एक्सपोर्ट सपोर्ट है (C ++, जावा, पायथन को भी सपोर्ट करता है)
  • गुणक है (लिनक्स, विंडोज, अन्य OSes),
  • पूर्ण रूप से चित्रित किया गया है, प्रभावशाली रूप से गहन रूप से विकसित किया गया है ( विकास के इतिहास को देखें , यह विश्वास करना कठिन है कि इस तरह की तेजी से प्रगति संभव है)।
  • प्लगइन्स का समर्थन करता है, मॉड्यूलर आर्किटेक्चर है (यह उपयोगकर्ता योगदान की अनुमति देता है , ऐसा लगता है कि BOUML समुदाय बन रहा है)

बेंचमार्क वास्तव में प्रभावशाली दिखते हैं। मुझे एंटरप्राइज आर्किटेक्ट से प्यार है, लेकिन इसमें PHP सपोर्ट नहीं है। मैं इस उपकरण को पारित करूंगा, धन्यवाद।
पॉल ड्रैगुनिस

1
@Paul Dragoonis स्पार्क्स सिस्टम एन्टरप्राइज़ आर्किटेक्ट करता है और - पीएचपी समर्थन नहीं सबसे खराब है
कुल्हाड़ी।

5
BOUML का वेब पेज अब बताता है: "चेतावनी: विकिपीडिया के लोगों से लगातार लाइसेंस उल्लंघन, हमले और अपमान के कारण [...], मैंने बग को ठीक करने के अलावा बूलेम पर काम बंद करने का फैसला किया है।"
MPV

1
"" 18 दिसंबर, 2011] डाउनलोड को अगली सूचना तक निलंबित कर दिया गया है "उनकी आधिकारिक वेब साइट से। http://bouml.free.fr/download.html - इसका कारण यह है कि मुझे Win7 के लिए एक संस्करण की आवश्यकता थी। मुझे लगता है कि यह अभी भी उबंटू रिपॉजिटरी से उपलब्ध हो सकता है - जांच करने की आवश्यकता है
वैल रेडेंको

4
संस्करण 6.1 23 सितंबर, 2012 को जारी किया गया । प्रकट रूप से विकास फिर से उठा है। धीमा करने, रोकने, आदि के बारे में कोई सूचना नहीं है। bouml.fr/historic.html
एंड्रयू

24

phUML

phUML पूरी तरह से स्वचालित UML वर्ग का आरेख है जो PHP में लिखा गया है, BSD लाइसेंस के तहत लाइसेंस प्राप्त है। यह किसी भी PHP5 ऑब्जेक्ट ओरिएंटेड सोर्स कोड को पार्स करने में सक्षम है और यूएमएल विनिर्देश के आधार पर ओओ संरचना का एक उचित छवि प्रतिनिधित्व बनाता है।

यूएमएल उदाहरण

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

स्टेप बाय स्टेप गाइड


डाउनलोड करने के लिए एसवीएन / तोड़फोड़ की आवश्यकता होती है और वास्तव में यह नहीं कहता कि स्रोत कोड का लाइसेंस क्या है, लेकिन यह अच्छा लगता है! हाँ, मैं सोर्स कोड को देखकर सावधान

लाइसेंस लेखक की वेबसाइट के तहत प्रोजेक्ट के वेबसाइट साइडबार में वहीं से जुड़ा हुआ है, क्रिएटिव कॉमन्स: Creativecommons.org/licenses/by-nc-sa/3.0
एंथनी हट्ज़ोपुलोस

इस साइट की सामग्री के लिए लाइसेंस, परियोजना के लिए LICENSE परियोजना के साथ ही शामिल होना चाहिए।

3
मैंने लेखक, जैकब को एक ईमेल भेजा और उन्होंने रिपॉजिटरी को एक स्पष्ट और कट 3-खंड बीएसडी लाइसेंस के
एंथनी हट्ज़ोपुलोस

मैंने इसे डाउनलोड किया और इसे थोड़ी छेड़छाड़ के बाद काम करने के लिए मिला। वास्तव में काफी अच्छा था, सिवाय मैं काम करने के लिए संघों को प्राप्त नहीं कर सकता, लेकिन मुझे यकीन है कि मैं इसे समझूंगा। अच्छा, सरल। कोई जीयूआई नहीं है, लेकिन यह एक बड़ा सौदा नहीं है।
इंपल्स

19

सबसे अच्छा (विंडोज) सॉफ्टवेयर मैंने पाया है कि PHP और UML Sparx Systems Enterprise Architect हैसुविधाओं के ढेर के अलावा , यह PHP के लिए निम्नलिखित का समर्थन करता है :

  • रिवर्स इंजीनियर ऑब्जेक्ट ओरिएंटेड PHP को UML वर्ग आरेख में
  • UML वर्ग आरेखों से PHP वर्ग परिभाषाएं उत्पन्न करें
  • UML वर्ग में किए गए परिवर्तनों को संगत PHP वर्ग परिभाषा में सिंक्रनाइज़ करें
  • UML वर्ग में PHP वर्ग परिभाषा में किए गए परिवर्तनों को सिंक्रनाइज़ करें
  • PHP वर्ग का उपयोग और वे कैसे उपयोग किए जाते हैं, यह दिखाने के लिए UML अनुक्रम आरेख बनाएं
  • मानक आरटीएफ और एचटीएमएल प्रारूप में अपने PHP कोड के विस्तृत प्रलेखन का निर्माण करें
  • बेस PHP पेज बनाने के लिए मॉडल पर कोड इंजीनियरिंग करें।

मुक्त नहीं ($ 199), लेकिन निश्चित रूप से पैसे के लायक।


1
वाह, यह वास्तव में उपयोगी और पेशेवर कार्यक्रम है, टिप के लिए धन्यवाद !! मैंने अभी-अभी UML क्लास के आरेख को PHP स्रोत कोड से Sparx EA के रिवर्स इंजीनियरिंग विधि के साथ बनाने की कोशिश की, और यह एक आकर्षण की तरह काम करता है, मैं हैरान था कि यह कितना अच्छा काम करता है। : डी के रूप में हमारी परियोजनाएं बड़ी और बड़ी हो रही हैं, और हम अधिक से अधिक वस्तुओं का निर्माण करते हैं, हमारे अपने कोड पर नजर रखना कठिन हो रहा है, लेकिन इसमें बहुत मदद मिलती है, क्योंकि यह यूएमएल आरेख को सही तरीके से उत्पन्न करता है (में) बेशक, शायद अपवाद हो सकता है) के बाद हम कोड समाप्त कर दिया। यह वस्तुओं के बीच संबंधों को सरल बनाने में भी मदद करता है।
Sk8erPeter

@ax - मैं एक नौसिखिया हूं, और मैं उनकी सुविधाओं की सूची में थोड़ा खो जाता हूं ("संस्करणों की तुलना" के तहत)। उस सुविधा का नाम क्या होगा जो मुझे PHP कोड (या PHP फ़ाइलों के लिंक) में प्रवेश करने की अनुमति देता है, और बदले में एक आरेख प्राप्त करता है? यह जानने की कोशिश कर रहा हूं कि मुझे किस संस्करण की आवश्यकता हो सकती है।
JDelage

7

क्या आपने अभी तक ऑटोडिया की कोशिश की है? पिछली बार मैंने कोशिश की थी कि यह सही नहीं था, लेकिन यह काफी अच्छा था।


मैंने ऑटोडिया की कोशिश की लेकिन किसी तरह मैं सटीक वर्ग आरेख उत्पन्न कर सकता हूँ (php5)
Jeffrey04

7

Php2xmi भी है । आपको थोड़ा मैनुअल काम करना होगा, लेकिन यह सभी वर्गों को उत्पन्न करता है, इसलिए आपको बस इतना करना है कि उन्हें छाता में एक क्लाडाग्राम में खींचें

अन्यथा, प्रतिबिंब और ग्राफविज़ के उपयोग के साथ एक आरेख बनाना, काफी सरल है। मेरे पास यहां एक स्निपेट है , जिसे आप शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।


7

यहाँ मैंने यह कैसे किया (कोड से पीडीएफ ड्राइंग के बिना सीधे कुछ भी मैनुअल ड्राइंग के बिना):

  1. वर्ग मॉडल निकालने के लिए "रिवर्स इंजीनियरिंग PHP कोड" [sic] के लिए BOUML का उपयोग करें (BOUML उबंटू के "ब्रह्मांड" भंडार से उपलब्ध है)। मैं इस कदम के लिए BOUML की गंभीरता से सिफारिश करता हूं क्योंकि यह मेरे द्वारा किए गए कई अन्य कार्यक्रमों की तुलना में वास्तव में तेज है। इसके अलावा, ऐसा लगता है कि BOUML मॉडल को सही तरीके से निकालने लगता है (उन भागों के लिए जो BOUML निकालने का प्रयास करता है)।
  2. मॉडल को XMI 1.4 फ़ाइल के रूप में निर्यात करने के लिए BOUML का उपयोग करें
  3. कहा XMI फ़ाइल आयात करने के लिए ArgoUML का उपयोग करें (आप इस चरण के लिए वेबस्टार्ट संस्करण का उपयोग कर सकते हैं)
  4. ArgoUML से XMI निर्यात करें (मुझे नहीं पता कि कौन सा XMI संस्करण / संस्करण आउटपुट है, लेकिन यह BOUML से आउटपुट के समान परिणाम नहीं है। argouml-graphviz BOUML से सीधे XMI फ़ाइल को संभाल नहीं सकता है)।
  5. ArgoUML एक्सपोर्ट की गई XMI फाइल को डॉट फॉर्मेट में बदलने के लिए argouml-graphviz का उपयोग करें (आपको XSLT2 के उपयोग के कारण इसे काम करने के लिए xsltproc के बजाय सैक्सन का उपयोग करने की आवश्यकता हो सकती है )
  6. वर्ग आरेख को प्रस्तुत करने के लिए डॉट या fdp या sfdp का उपयोग करें ।

आउटपुट पीडीएफ आरेख के लिए fdp का उपयोग करने के लिए उपयुक्त कमांड लाइन का एक उदाहरण है (यह मानते हुए कि 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 आज़मा सकते हैं । मैंने अभी तक कोशिश नहीं की है।

(मैं "रिवर्स इंजीनियरिंग" वाक्यांश का उपयोग कर रहा हूं क्योंकि ऐसा लगता है कि यूएमएल लोग उन शब्दों का उपयोग कर रहे हैं जब वे स्रोत कोड से कक्षा और विधि की जानकारी निकाल रहे हैं । मैं उन शब्दों को व्यक्तिगत रूप से निष्पादन योग्य बाइनरी फ़ाइल से जानकारी निकालने या कच्चे पर कब्जा करने के रूप में व्याख्या करूंगा। तार डेटा।)

यदि आप क्लास आरेख को हाथ से खींचना पसंद करते हैं (सभी ड्राइंग करने के लिए कंप्यूटर का उपयोग करने के बजाय), तो आप ड्राइंग के लिए या तो BOUML या ArgoUML का उपयोग कर सकते हैं। BOUML के माध्यम से "रिवर्स इंजीनियर" डेटा का उपयोग उस मामले में मदद करेगा।


5

यदि आप अपने मौजूदा PHP क्लासेस से आसानी से UML जेनरेट करना चाह रहे हैं तो आप PHPStorm 3.0 IDE पर विचार कर सकते हैं। यह यूएमएल में मौजूदा कोड की नकल करने का अच्छा काम करता है।

PHP स्टॉर्म सुविधा सूची पर एक नज़र है ।


2
निर्भरता की कल्पना नहीं करता है, केवल विरासत।
तुलसी मूसा

1

आप यूएमएल के लिए विज़ुअल पैराडाइम का उपयोग कर सकते हैं। यह सबसे अच्छा भुगतान नहीं हो सकता है (यह यूएस $ 699) उत्पाद है, बस एक विकल्प के रूप में अगर कोई भी कोशिश करना चाहेगा। यह PHP और इसके विपरीत से वर्ग आरेख बना सकता है, और न केवल PHP, भाषा का एक गुच्छा है जिसे आप चुन सकते हैं जैसे कि C #, C ++, Ruby, Java, VB.NET, पायथन, ऑब्जेक्टिव C, पर्ल, आदि। परीक्षण आप पर जाँच कर सकते हैं।


1

सिद्धांत रूप में आप यूएमएल का उपयोग करके अपनी कक्षाओं की कल्पना करने के लिए PhpStorm का उपयोग कर सकते हैं। पीढ़ी वास्तव में महान नहीं है, लेकिन आप प्रभावी रूप से सामान को फिर से रिफ्लेक्ट कर सकते हैं और कम से कम माता-पिता, कार्यान्वयन, स्थिरांक, विशेषताओं, विधियों और उनकी दृश्यता को अच्छे तरीके से देख सकते हैं।

परिस्थिति

मैं किसी सहकर्मी को पहले से मौजूद घटकों के बीच एक संचार की कल्पना करना चाहता हूं।

PHPStorm का उपयोग करते हुए प्रक्रिया

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

लाभ

  • अच्छा यूआई, अंतिम आरेख।
  • एक आरेख से कोड को रिफलेक्टर करने में सक्षम।
  • नोट जोड़ने में सक्षम।
  • वर्ग आरेख निजी / सार्वजनिक गुणों, रचनाकारों, विधियों का अच्छी तरह से प्रतीक है।

नुकसान

  • PHP 7 के लिए कोई समर्थन नहीं।
  • उपयोग करने के लिए दर्दनाक। उत्पन्न बॉक्स का आकार नहीं बदल सकता।
  • एक नया संबंध जोड़ने पर, पिछले वाले बेतरतीब ढंग से खो जाते हैं: हे wtf?
  • PhpStorm को फिर से शुरू करने से आरेख नष्ट हो जाते हैं
  • मेरे मन को बदल दिया, संबंधों का उपयोग करना असंभव है

परिणाम

वैसे भी, काम के कुछ दर्दनाक घंटे के बाद मैं केवल असंबंधित बक्से उत्पन्न करने में सक्षम था और संबंधों को जोड़ने के लिए अतिरिक्त कार्यक्रम का उपयोग करना पड़ा। सच में ख़राब। लेकिन मेरा मानना ​​है कि एक बार जब वे इसे ठीक से काम कर लेते हैं तो यह एक बड़ी विशेषता होगी क्योंकि जैसे-जैसे कोड बदलता है, आरेख स्वचालित रूप से अपडेट हो जाएंगे!

अभी के लिए, UML चित्र के लिए PhpStorm का उपयोग न करें।


मुझे लगता है कि यह नया है: (:
जेफरी04

सही बात। वर्तमान में मैं उसी स्थिति में हूं। मैंने एक प्रणाली का एक जटिल हिस्सा विकसित किया है और मैं इसे अपने सहयोगी के लिए कल्पना करना चाहता हूं। मैंने कई उपकरणों की कोशिश की, लेकिन वे चमकदार और बदसूरत हैं :) मैं इसे PHPStorm के साथ करने जा रहा हूं और अपने उत्तर को अपडेट करता हूं कि यह कैसा दिखता है और यह वास्तव में कितना शक्तिशाली है। मैं आज आपको बता दूंगा परिणाम @ Jeffrey04
लुकास

यह ठीक है, मैं वास्तव में काफी समय से PHP नहीं करता
Jeffrey04

0

अच्छी तरह से ईमानदार होने के लिए, सबसे पहले और सबसे महत्वपूर्ण आपको कोड से यूएमएल मॉडल उत्पन्न नहीं करना चाहिए, लेकिन यूएमएल मॉडल से कोड;)।

यहां तक ​​कि अगर आप एक दुर्लभ स्थिति में हैं, जब आपको यह रिवर्स इंजीनियरिंग करने की आवश्यकता होती है, तो आमतौर पर यह सुझाव दिया जाता है कि आप इसे हाथ से या कम से कम डायग्राम के माध्यम से करते हैं, क्योंकि ऑटो-जनरेटेड यूएमएल में वास्तव में खराब दृश्य (= जानकारी) है अधिकांश समय मूल्य।

यदि आपको केवल आरेख उत्पन्न करने की आवश्यकता है, तो यह संभवतः अपने आप से पूछना एक अच्छी बात है कि वास्तव में क्यों? लक्षित दर्शक कौन है और लक्ष्य क्या है? ऑटो-जनरेट किए गए आरेख के पास क्या कोड है, क्या कोड नहीं है?

बुनियादी तौर पर मैं उस प्रश्न का केवल एक ही उत्तर स्वीकार करता हूं। यह बस बहुत बड़ा और समझ से बाहर हो गया।

जो फिर से यूएमएल के साथ शुरू करने का एक कारण है, कोडिंग शुरू करने के विपरीत;) इसे विश्लेषण कहा जाता है और यह गिरावट पर है, क्योंकि व्यापार में हर दूसरा लड़का सोचता है कि यह थोड़ा महंगा है और वास्तव में आवश्यक नहीं है।


7
सच है, लेकिन जीवन कुछ सिद्धांतों की तुलना में अधिक जटिल है, जो उपयोग करने में बुद्धिमान हैं। आपको मूल यूएमएल आरेख के खिलाफ वास्तविक कोड की तुलना करने की आवश्यकता हो सकती है, या किसी के कोड या कुछ कोड का विश्लेषण कर सकते हैं, जिसे यूएमएल आरेख के बिना लागू किया गया था।
दाह

3
सहमत नहीं हैं। एक आरेख के साथ कोड आधार / मॉड्यूल की कल्पना करने से प्राप्त महान मूल्य। कोड सड़क के दिशा-निर्देशों की तरह है, लेकिन कभी-कभी कई दिशाओं के साथ भी एक मानचित्र उपयोगी हो सकता है।
तुलसी मूसा

1
अधिकांश यूएमएल ड्रॉइंग प्रोग्राम्स में यूआई इतना खराब होता है कि कोड लिखना और यूएमएल आरेख को स्वचालित रूप से उत्पन्न करना तेजी से होता है, भले ही आप उस कोड को निकाल दें जो आपने आरेख उत्पन्न करने के लिए इस्तेमाल किया था ...
मिको रान्टालैनेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.