पायथन स्रोत कोड से UML आरेख उत्पन्न करने का सबसे अच्छा तरीका क्या है? [बन्द है]


258

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

स्रोत कोड बहुत सीधा है और जबरदस्त बुराई नहीं है - यह उदाहरण के लिए कोई भी फैंसी मेटाक्लस जादू नहीं करता है। (यह "आधुनिक" 2.3ish सामान के कुछ छिड़काव के साथ, ज्यादातर पाइथन 1.5.2 के दिनों से है।)

सिफारिश करने के लिए सबसे अच्छा मौजूदा समाधान क्या है?


29
मॉड्स को यह प्रश्न रचनात्मक नहीं लगा। मैंने (और कई अन्य लोग जिन्होंने इसे फेवाइट किया है) ने इसे उपयोगी पाया। तो क्या? यह "रचनात्मक" नहीं होने से बड़ी बात नहीं है!
यति सगड़े १०

13
रचनात्मक नहीं है क्योंकि यह बहस, तर्क, चर्चाओं को हल करेगा ?????? नहीं है कि हम क्या चाहते हैं? यह एक बहुत ही प्रासंगिक सवाल है ..
भूषण

2
यदि आप इसे नोट करते हैं, तो @yatisagade को हटाया नहीं गया था (और इसके साथ कई upvotes शायद व्यावहारिक रूप से कभी भी हटाए नहीं जा सकते)। सिर्फ मतलब में बंद करने से नए जवाब नहीं मिल सकते।
ताकस्वेल

7
@ भूषण नहीं, हम चर्चा नहीं चाहते, हम प्रश्न और उत्तर जोड़े चाहते हैं जिनके स्पष्ट उत्तर हों। यह एक दिलचस्प सवाल या एक उपयोगी सवाल होने पर निर्णय नहीं है, यह एसओ के लिए विषय पर होने का मामला है। निश्चित रूप से आप सहमत हैं कि "सबसे अच्छा संपादक क्या है?" (ऑब्जर्व इमैक) एक रचनात्मक प्रश्न नहीं है, यह प्रश्न बिल्कुल उसी साँचे का है।
ताकस्वेल

जब यह प्रश्नोत्तर प्रश्नोत्तर प्रारूप में आता है तो @tacaswell कुछ चर्चा बहुत प्रासंगिक है।
user32882

जवाबों:


128

आपने पाइलिंट के बारे में सुना होगा जो पाइथन कोड को सांख्यिकीय रूप से जाँचने में मदद करता है। कुछ लोगों को पता है कि यह Pyreverse नामक एक टूल के साथ आता है जो कि अजगर कोड से यूएमएल आरेखों को पढ़ता है। Pyreverse एक बैकएंड के रूप में graphviz का उपयोग करता है।


क्या आप जानते हैं कि "_" से शुरू होने वाले निजी तरीकों की कल्पना कैसे करें
gustavz

1
दुर्भाग्य से, पियरेवोर्स पैकेज आरेख बहुत बड़ा है क्योंकि सब कुछ क्षैतिज रूप से रखा गया है (ग्राफविज़ सीमा से अधिक, लेकिन अभी भी)। दस्तावेजों में शामिल करने के लिए उपयोगी नहीं है।
oarfish

@oarfish वर्कअराउंड के रूप में, आप उन मॉड्यूल को चुन सकते हैं जिन्हें आप शामिल करना चाहते हैं, और कई अलग-अलग ग्राफ़ बना सकते हैं।
jjmontes

95

एपीडॉक पायथन स्रोत कोड से एपीआई प्रलेखन उत्पन्न करने के लिए एक उपकरण है। यह फैंसी तरीकों से ग्राफविज़ का उपयोग करके, यूएमएल श्रेणी के आरेख भी उत्पन्न करता है। यहाँ एपिडोक के स्रोत कोड से उत्पन्न आरेख का एक उदाहरण है।

क्योंकि एपिडोक ऑब्जेक्ट ऑब्जेक्ट इंट्रोस्पेक्शन और सोर्स पार्सिंग दोनों करता है क्योंकि यह स्टेटिक कोड एनालाइज़र जैसे डॉक्सीजेन के लिए अधिक informations सम्मान एकत्र कर सकता है: यह गतिशील रूप से उत्पन्न कक्षाओं और कार्यों की एक उचित मात्रा का निरीक्षण कर सकता है, लेकिन यह एक प्रलेखन स्रोत के रूप में टिप्पणियों या अनचाही स्ट्रिंग्स का भी उपयोग कर सकता है, जैसे। चर और वर्ग सार्वजनिक विशेषताओं के लिए।


वहाँ यह gifs के बजाय उत्पादन वेक्टर ग्राफिक्स के लिए कोई रास्ता नहीं है? मुझे उस पर कोई प्रलेखन नहीं मिला और HTML डॉक के अलावा किसी भी चीज़ के लिए ग्राफ काफी बेकार हैं।
oarfish

3
वर्तमान में, epydocरेखांकन उत्पन्न करने में असमर्थ प्रतीत होता है। इस बग रिपोर्ट की जाँच करें ।
लुइस डी सूसा

14
अजगर 3 के साथ काम नहीं करता है
tomsv

23

अजगर के लिए सात uml उपकरण की इस सूची की जाँच करें


2
मेरे खुले स्रोत UML उपकरण Pynsource pynsource.com ने उपरोक्त पृष्ठ पर संदर्भित किया है क्योंकि यह उल्लेख किए जाने के बाद से कई संस्करण परिवर्तन कर चुका है। अब यह पायथन 3 को पार्स करता है, इसमें ज़ूम, लेआउट, एएससीआईआई यूएमएल और प्लांटयूएमएल रेंडरिंग सपोर्ट है। Pynsource भी है, जहाँ तक मुझे पता है, एकमात्र UML उपकरण है जो पायथन उदाहरण विशेषताओं को पहचानता है (न कि केवल वर्ग विशेषताएँ)। इसका अर्थ यह है कि स्व.मैट्रा जैसी अभिव्यक्तियां परिणामस्वरूप यूएमएल वर्ग में एक उचित विशेषता "मायट्र" में परिणत होंगी। मैक, विंडोज, उबंटू 18 और 16 के लिए बायनेरिज़ चलाने के लिए तैयार हैं - साथ ही एक खुला स्रोत जीथब रेपो भी है।
अबुलका

8

अच्छी तरह से व्यवहार किए गए कार्यक्रमों की कुछ कक्षाएं आरेखीय हो सकती हैं, लेकिन सामान्य स्थिति में, यह नहीं किया जा सकता है। पायथन ऑब्जेक्ट्स को रन टाइम पर बढ़ाया जा सकता है, और किसी भी प्रकार की ऑब्जेक्ट्स को किसी भी उदाहरण चर में सौंपा जा सकता है। यह पता लगाना कि किसी ऑब्जेक्ट को किन कक्षाओं में रखा जा सकता है (रचना) कार्यक्रम के रनटाइम व्यवहार की पूरी समझ की आवश्यकता होगी।

पायथन की मेटाक्लास क्षमताओं का अर्थ है कि वंशानुक्रम संरचना के बारे में तर्क करना भी कार्यक्रम के रनटाइम व्यवहार की पूरी समझ की आवश्यकता होगी।

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


8
कुछ अच्छी चीजें, लेकिन रुक-रुक कर होने वाला हाथ उसे नष्ट कर देता है। पैथोलॉजिकल केस यहां बात नहीं है। अच्छा व्यवहार काफी है।
डोडा

"हाथ से छूटने" का क्या मतलब है? मैंने पूर्ण प्रमाण नहीं लिखे थे, लेकिन मैंने पर्याप्त जानकारी दी थी कि जो कोई भी इसी तरह के प्रमाणों को देखता है, वह उन्हें बना सकता है, एक रचना के लिए और एक विरासत के लिए।
एंडरू लुविसी

14
यहाँ एक सादृश्य है: भिन्न / पैच बहुत भिन्न तरीकों से विफल हो सकते हैं, उनमें से कुछ तुच्छ हैं। यह वास्तविक दुनिया के बहुत से मामलों में अभी भी बहुत उपयोगी है। उचित मामलों में, आरेख वंशानुक्रम तुच्छ है। प्रत्यायोजन अधिक पेचीदा है, लेकिन पैकेज की सीमाओं के भीतर प्रकार के अनुमान से संभव है।
22

7

यदि आप ग्रहण का उपयोग करते हैं, तो शायद PyUML । हालांकि यह इस्तेमाल नहीं किया है।


1
यह एक बहुत अच्छा सुझाव है, लेकिन FWIW मैं PyUML प्रोजेक्ट साइट पर ध्यान देता हूं कि वे अभी तक 3.4 (Ganymede) ग्रहण का समर्थन नहीं करते हैं। जब वे बाहर काम करेंगे तो मैं इसका प्रयास करने के लिए उत्सुक हूँ।
बिल करविन

क्या आपके पास 3.4 के साथ PyUML काम करने के लिए हुआ था?
आइजॉह

2
आखिरी 2009 तक इस परियोजना की तारीख को लागू करता है। यह मार्केटप्लेस में दिखाई नहीं देता है और .zipसंग्रह से इसे स्थापित करने में सक्षम नहीं है ।
लुइस डी सूसा


5

छाता भी यही करता है। मेनू में कोड -> आयात परियोजना पर जाएं और फिर अपनी परियोजना के मूल निर्देश को इंगित करें। तो यह फिर के लिए कोड उलट ...


क्या आप छाता बनाने का एक तरीका जानते हैं, जो पूरी कक्षा का आरेख उत्पन्न करता है (और उनके बीच के संबंध, न कि केवल स्वयं द्वारा कक्षाएं - याद नहीं है कि उस चित्र को कैसे कहा जाता है)
vlad-ardelean

2
AAhh, आपको फ़ाइलों को आयात करने की आवश्यकता है और फिर जब आप ड्रैगिंग एरिया में ड्रैग और ड्रॉप करते हैं, तो कनेक्शन अपने आप जुड़ जाते हैं।
होसेन

5

vipera एक छोटा अनुप्रयोग डिज़ाइनर है, और uml शामिल है। आप इसे देख सकते हैं:

Vipera

सादर।


4

एसपीई आईडीई में निर्मित यूएमएल निर्माता किया गया है। बस SPE में फाइलें खोलें और UML टैब पर क्लिक करें।

मुझे नहीं पता कि यह आपकी आवश्यकताओं के लिए कितना हानिकारक है, लेकिन इसका उपयोग करने के लिए किसी भी अतिरिक्त डाउनलोड या कॉन्फ़िगरेशन की आवश्यकता नहीं है।


दुख की बात है कि इसने विकास करना बंद कर दिया है, लेकिन अभी भी यहाँ काम करता है! (२०१३)
अब्देलौहाब

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.