2008-11-03 10 views
177

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

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

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

+14

मोड इस प्रश्न को रचनात्मक नहीं मिला। मैं (और कई अन्य जिन्होंने इसे पसंद किया है) ने इसे उपयोगी पाया। तो क्या? _that_ यह "रचनात्मक" नहीं होने से बड़ा सौदा नहीं है! –

+9

रचनात्मक नहीं है क्योंकि यह बहस, तर्क, चर्चाओं का अनुरोध करेगा ?????? क्या हम नहीं चाहते हैं? यह एक बहुत ही प्रासंगिक सवाल है .. – Bhushan

+2

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

उत्तर

7

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

+1

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

+0

क्या आपको 3.4 के साथ पीयूयूएमएल काम प्राप्त हुआ? – anijhaw

+0

आखिरी बार इस परियोजना की तारीख 200 9 तक है। यह मार्केटप्लेस में दिखाई नहीं दे रहा है और ग्रहण इसे '.zip' संग्रह से इंस्टॉल करने में सक्षम नहीं है। –

8

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

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

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

+3

कुछ अच्छी चीजें, लेकिन रोक-सुलझाने वाले हाथ से निकलने वाले इसे खंडित करते हैं। पैथोलॉजिकल मामले यहां मामला नहीं हैं। अच्छी तरह से व्यवहार पर्याप्त है। – ddaa

+0

आपका क्या मतलब है, "हाथ से निकलना"? मैंने पूर्ण सबूत नहीं लिखे, लेकिन मैंने पर्याप्त जानकारी दी कि जिसने समान सबूत देखा है, वह उन्हें बना सकता है, एक रचना के लिए और एक विरासत के लिए। – Glomek

+9

यहां एक समानता है: diff/पैच कई अलग-अलग तरीकों से असफल हो सकता है, उनमें से कुछ तुच्छ हैं। यह अभी भी बहुत सारे वास्तविक दुनिया के मामलों में बहुत उपयोगी है। उचित मामलों में, आरेखण विरासत तुच्छ है। प्रतिनिधिमंडल अधिक कठिन है, लेकिन पैकेज की सीमाओं के भीतर प्रकार अनुमान के अनुसार व्यवहार्य है। – ddaa

78

Epydoc एक उपकरण अजगर स्रोत कोड से API दस्तावेज़ उत्पन्न करने के लिए है। यह Graphviz का उपयोग फैंसी तरीके से यूएमएल क्लास आरेखों को भी उत्पन्न करता है। यहां Epydoc के स्रोत कोड से उत्पन्न an example of diagram है।

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

+0

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

+3

वर्तमान में, 'epydoc' ग्राफ उत्पन्न करने में असमर्थ लगता है। यह [बग रिपोर्ट] देखें (https://sourceforge.net/p/epydoc/bugs/372/)। –

+1

पायथन 3 – tomsv

3

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

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

+0

के साथ काम नहीं करता है दुख की बात है कि यह विकास बंद कर दिया है, लेकिन अभी भी यहां काम करता है! (2013) – Abdelouahab

6

Gaphor का उल्लेख करना उचित है। एक पायथन मॉडलिंग/यूएमएल उपकरण।

3

स्पार्क्स के Enterprise Architect प्रदर्शन अजगर स्रोत की राउंड ट्रिपिंग। उनके पास निःशुल्क समय-सीमित परीक्षण संस्करण है।

3

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

+0

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

+1

एएएच, आपको आयात करने की आवश्यकता है फ़ाइलें और फिर जब आप ड्राइंग क्षेत्र में कक्षाओं को खींचते और छोड़ते हैं, तो कनेक्शन स्वचालित रूप से जोड़े जाते हैं। – Hosane

68

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

+0

Pyreverse ठीक काम करता है – Quanlong

3

Vipera एक छोटे से आवेदन डिजाइनर है, और यूएमएल शामिल है। आप इसे में देख सकते हैं:

vipera

सादर।