मैं मौजूदा जावा कोड से यूएमएल आरेख (विशेषकर अनुक्रम आरेख) कैसे उत्पन्न कर सकता हूं?
मैं मौजूदा जावा कोड से यूएमएल आरेख (विशेषकर अनुक्रम आरेख) कैसे उत्पन्न कर सकता हूं?
जवाबों:
क्या मैंने इस्तेमाल किया है। यह भंडार से आसानी से स्थापित है:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
और काफी अच्छा यूएमएल आरेख बनाता है:
ObjectAid UML एक्सप्लोरर अन्य UML टूल से अलग है। यह यूएमएल नोटेशन का उपयोग मौजूदा कोड के चित्रमय प्रतिनिधित्व को दिखाने के लिए करता है जो आपके टेक्स्ट एडिटर की तरह सटीक और अद्यतित है, जबकि उपयोग करने में बहुत आसान है। कई अनूठी विशेषताएं इसे संभव बनाती हैं:
- आपका स्रोत कोड और लाइब्रेरी मॉडल है जो प्रदर्शित होता है, वे एक अलग प्रारूप में रिवर्स इंजीनियर नहीं हैं।
- यदि आप ग्रहण में अपना कोड अपडेट करते हैं, तो आपका आरेख भी अपडेट किया जाता है; इंजीनियर स्रोत कोड को रिवर्स करने की कोई आवश्यकता नहीं है।
- रिफैक्टरिंग आपके आरेख के साथ-साथ आपके स्रोत कोड को भी अपडेट करता है। जब आप किसी फ़ील्ड का नाम बदलते हैं या एक कक्षा को स्थानांतरित करते हैं, तो आपका आरेख केवल सिंक से बाहर जाने के बिना परिवर्तनों को दर्शाता है।
- आपके ग्रहण कार्यक्षेत्र के सभी आरेखों को उपयुक्त रूप से परिवर्तनकारी परिवर्तन के साथ अद्यतन किया जाता है। यदि आवश्यक हो, तो उन्हें आपके संस्करण नियंत्रण प्रणाली से बाहर की जाँच की जाती है।
- डायग्राम पूरी तरह से ग्रहण आईडीई में एकीकृत हैं। आप आरेख पर किसी भी अन्य दृश्य से जावा कक्षाओं को खींच सकते हैं, और जहाँ कहीं भी लागू हो, आरेख-संबंधी जानकारी अन्य दृश्यों में दिखाई देती है।
An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
संपादित करें: यदि आप एक डिज़ाइनर हैं तो Papyrus आपकी सबसे अच्छी पसंद है, यह बहुत ही उन्नत और सुविधाओं से भरपूर है, लेकिन अगर आप बस कुछ यूएमएल आरेख और आसान इंस्टॉलेशन को स्केच करना चाहते हैं, तो ObjectAid बहुत अच्छा है और इसके लिए मुझे किसी भी प्लगइन्स की आवश्यकता नहीं है बस इसे एक्लिप्स-जावा ईई पर स्थापित किया और बढ़िया काम किया!
अद्यतन 11 अक्टूबर 2013
मेरी मूल पोस्ट जून 2012 में थी, बहुत सी चीजों ने बहुत से उपकरण बदले हैं और अन्य नहीं बदले हैं। चूंकि मैं कुछ मॉडलिंग करने के लिए वापस जा रहा हूं और पोस्ट को कुछ जवाब भी मिल रहे हैं इसलिए मैंने फिर से पेपिरस स्थापित करने का फैसला किया और अन्य संभावित यूएमएल मॉडलिंग समाधानों की फिर से जांच करेगा। यूएमएल पीढ़ी (सिंक्रनाइज़ेशन सुविधा के साथ) सॉफ्टवेयर डिजाइनर के लिए नहीं बल्कि औसत डेवलपर के लिए वास्तव में महत्वपूर्ण है।
मेरी इच्छा है कि पपीरस के पास यूएमएल वर्ग आरेख में इंजीनियर वर्गों को उल्टा करने का सीधा तरीका था और यह सुपर कूल होगा यदि उस रिवर्स इंजीनियरिंग में एक तुल्यकालन सुविधा थी, लेकिन दुर्भाग्य से पेपिरस परियोजना सुविधाओं से भरी हुई है और मुझे लगता है कि डेवलपर्स के पास पहले से ही बहुत से हाथ हैं। पपीरस पर आपके द्वारा की जाने वाली क्रियाएं आपको कोई प्रतिक्रिया नहीं दे सकती हैं और बस कुछ नहीं होता है, लेकिन इस प्रश्न के दायरे से बाहर है।
उत्तर (11 अक्टूबर 2013)
उपकरण
कदम
MyProject_kdm.xmi पर राइट क्लिक करें - डिस्कवरी -> खोजकर्ता -> केडीएम कोड से यूएमएल मॉडल को फिर से खोजें आपको MyProject.uml नामक एक फ़ाइल उत्पन्न करने के लिए TRUE को क्रमबद्धता प्रोप सेट मिलेगा।
मूव जनरेट किया गया MyProject.uml जो रूट पर, UML फ़ोल्डर में जनरेट किया गया था, एक्लिप्स आपसे पूछेगा कि क्या आप उसे क्लिक करना चाहते हैं। हमने यहाँ क्या किया था कि हमने एक खाली मॉडल को एक उत्पन्न के साथ बदल दिया।
ALT + W -> शो व्यू -> पेपिरस -> मॉडल एक्सप्लोरर
उस दृश्य में, आपको चित्र में जैसे अपनी कक्षाएं मिलेंगी
दृश्य में राइट क्लिक रूट मॉडल -> नया आरेख
फिर दृश्य से आरेख तक कक्षाएं हथियाना शुरू करें
कुछ सुविधाएं
वर्ग तत्वों (चर, कार्यों आदि) को दिखाने के लिए किसी भी वर्ग पर राइट क्लिक करें -> फिल्टर -> शो / सामग्री छिपाएँ Voila !!
आपके पास विंडो से डिफ़ॉल्ट डिफ़ॉल्ट रंग सेटिंग्स हो सकती हैं -> पेरेफेरेंस -> पेपिरस -> वर्ग आरेख
एक बहुत महत्वपूर्ण सेटिंग व्यवस्था है जब आप कक्षाओं को छोड़ते हैं तो उन्हें एक वर्ग आरेख पर किसी खाली स्थान पर एक तंग दाहिने क्लिक पर क्लिक करें और सभी व्यवस्थित करें पर क्लिक करें
मॉडल एक्सप्लोरर दृश्य में तीर सामान्यीकरण, बोध आदि दिखाने के लिए आरेख को पकड़ा जा सकता है
उस सब के बाद आपकी सेटिंग्स चित्र जैसे दिखेंगी
सिंक्रोनाइज़ेशन अभी तक उपलब्ध नहीं है क्योंकि मुझे पता है कि आपको किसी भी नई कक्षाओं को मैन्युअल रूप से आयात करने की आवश्यकता होगी।
यह सब है, और जब तक आपको वास्तव में इसकी आवश्यकता नहीं है, तब तक व्यावसायिक उत्पादों को न खरीदें, पपीरस वास्तव में दान या कुछ के बजाय महान और परिष्कृत है।
डिस्क्लेमर: मेरा पपीरस लोगों से कोई संबंध नहीं है, वास्तव में, मुझे पपीरस पसंद नहीं था, जब तक कि मैंने बहुत सारे शोध नहीं किए और कुछ धैर्य के साथ अनुभव किया। और इस पोस्ट को फिर से प्राप्त करूंगा जब मैं अन्य मुफ्त टूल आज़माऊंगा।
आपका कोडबेस क्या है? जावा या सी ++?
जावा के लिए eUML2 एक शक्तिशाली यूएमएल मॉडलर है जो एक्लिप्स में जावा डेवलपर के लिए बनाया गया है। मुफ्त संस्करण का उपयोग व्यावसायिक उपयोग के लिए किया जा सकता है। यह निम्नलिखित विशेषताओं का समर्थन करता है:
- सीवीएस और टीम का समर्थन
- कई और अनुकूलन मॉडल विचारों के साथ बड़ी परियोजना के लिए डिज़ाइन किया गया
- Helios आज्ञाकारी
- वास्तविक समय कोड / मॉडल तुल्यकालन
- UML2.1 ओएमजी XMI का अनुपालन और समर्थन
- जेडीके 1.4 और 1.5 का समर्थन करता है
वाणिज्यिक संस्करण प्रदान करता है:
उन्नत उलट इंजीनियरिंग
- शक्तिशाली सच्चे निर्भरता उपकरण का विश्लेषण करते हैं
- यूएमएल प्रोफाइल और एमडीडी
- डेटाबेस उपकरण
- अनुकूलन टेम्पलेट का समर्थन
मैं लेखकों में से एक हूं, इसलिए इसका जवाब पक्षपाती हो सकता है। यह ओपन-सोर्स (Apache 2.0) है, लेकिन प्लगइन मुफ्त नहीं है। यदि आप क्लोन करते हैं और स्थानीय स्तर पर इसका निर्माण करते हैं तो आपको (जाहिर है) भुगतान नहीं करना होगा।
Intellij IDEA पर, ZenUML जावा कोड से अनुक्रम आरेख उत्पन्न कर सकता है।
इसे https://plugins.jetbrains.com/plugin/12437-zenuml-support पर देखें
स्रोत कोड: https://github.com/ZenUml/jetbrains-zenuml
प्लांटयूएमएल के बारे में कैसे ? यह रिवर्स इंजीनियरिंग के लिए नहीं है !!! यह आप कोड से पहले इंजीनियरिंग के लिए है।
मैंने एक मावेन प्लगइन विकसित किया है , जो दोनों सीएलआई से एक प्लगइन लक्ष्य के रूप में चलाया जा सकता है, या निर्भरता के रूप में आयात कर सकता है और प्रोग्रामर का उपयोग @see Main#main()
कैसे कर सकता है, इस विचार को प्राप्त करने के लिए।
यह पुनरावर्तक रूप से वांछित पैकेजों के PlantUML src कोड का प्रतिपादन करता है जिसे आप ज़रूरत पड़ने पर मैन्युअल रूप से संपादित कर सकते हैं (उम्मीद है कि आप नहीं करेंगे)। फिर, प्लांटयूएमएल पेज में कोड पेस्ट करके, या प्लांट के जार को डाउनलोड करके आप पीएमएल छवि के रूप में यूएमएल आरेख को प्रस्तुत कर सकते हैं।
इसे यहाँ देखें https://github.com/juanmf/Java2PlantUML
किसी भी योगदान का स्वागत से अधिक है। इसमें फ़िल्टर का एक सेट है जो आउटपुट को अनुकूलित करता है, लेकिन मैंने इन्हें अभी तक प्लग इन CLI परम में एक्सपोज़ नहीं किया है।
यह ध्यान रखना महत्वपूर्ण है कि यह आपकी * .java फाइलों तक सीमित नहीं है, यह यूएमएल आरेख src आप से निर्भरता के रूप में अच्छी तरह से प्रस्तुत कर सकते हैं। आपके द्वारा निर्भर पुस्तकालयों को समझना बहुत आसान है। यह वास्तव में प्रतिबिंब के साथ संकलित कक्षाओं का निरीक्षण करता है ताकि किसी स्रोत की आवश्यकता न हो
GitHub: P पर इसे स्टार करने वाले पहले व्यक्ति बनें
मैं सामान्य उपयोग के लिए ओमोंडो से एक्लिप्स यूएमएल की सिफारिश करूंगा , हालांकि मैंने कुछ महीने पहले अपनी वेब परियोजनाओं के साथ कुछ समस्याओं का अनुभव किया था। उनके पास एक समय में एक मुफ्त संस्करण था, लेकिन माना जाता है कि अब प्रचार नहीं किया गया है।
यदि आप वास्तव में स्रोत कोड से रिवर्स इंजीनियरिंग अनुक्रम आरेख के लिए उत्सुक हैं, तो मैं jTracert की सिफारिश करूंगा ।
जहां तक एक्लिप्स प्रोजेक्ट्स की बात है, तो एक्लिप्स यूएमएल 2 टूल्स प्रोजेक्ट रिवर्स इंजीनियरिंग का समर्थन कर सकता है, हालांकि मैंने कभी भी इसका उपयोग अभ्यास में नहीं देखा है।
MoDisco (मॉडल डिस्कवरी) परियोजना ग्रहण जीएमटी परियोजना अपने लक्ष्य को प्राप्त करने में स्पष्ट हो रहा है। प्रौद्योगिकी विशिष्ट उपकरणों की सूची शुरू करने के लिए एक अच्छी जगह होगी।
jSonde
यूआरएल ऊपर दिखाए में उपलब्ध नहीं है। आप एक वेबसाइट और जीथब में स्रोत कोड पा सकते हैं : github.com/bedrin/jsonde ।
आप netbeans UML मॉडेलर को भी आजमा सकते हैं। मैंने इसका उपयोग जेवैकॉड बनाने के लिए किया है जो मैंने अपने ग्रहण परियोजनाओं में उपयोग किया था। तुम भी netbeans में ग्रहण परियोजनाओं को आयात कर सकते हैं और ग्रहण सेटिंग्स netbeans परियोजना सेटिंग्स के साथ समन्वयित रखने के लिए।
मैंने ग्रहण के लिए कई यूएमएल मॉडेलर्स की कोशिश की और उनसे संतुष्ट नहीं था। वे अस्थिर, जटिल या सीधे सादे बदसूरत थे। ;-)
IntelliJ आईडिया का उपयोग करना। वर्ग रेखाचित्र का चयन पैकेज और प्रेस उत्पन्न करने के लिए Ctrl+ Alt+ U:
डिफ़ॉल्ट रूप से, यह केवल वर्ग नाम और सभी निर्भरता नहीं दिखाता है। इसे बदलने के लिए: राइट क्लिक करें -> श्रेणियाँ दिखाएँ ... और निर्भरता दिखाएँ:
निर्भरता आरेख (यूएमएल तैनाती आरेख) genarate करने के लिए और आप Maven का उपयोग जाना देखें -> उपकरण विंडोज -> Maven परियोजनाओं और प्रेस Ctrl+ Alt+ U:
इसके अलावा अधिक अन्य आरेख उत्पन्न करना संभव है। प्रलेखन देखें ।
आप ग्रहण 3.5 के लिए एक्लिप्स यूएमएल के 30 दिनों के मूल्यांकन बिल्ड का उपयोग कर सकते हैं: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_mile2010.zip यह नवीनतम 3.6 बिल्ड नहीं है, लेकिन बहुत अच्छा है और परीक्षण और रिवर्स इंजीनियरिंग के लिए आपको इसे खरीदने की आवश्यकता नहीं है।
रिवर्स इंजीनियरिंग: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
लाइव फ्लैश डेमो: http://www.ejb3.org/reverse.swf
EclipseUML ओमोंडो जावा के लिए दुनिया का सबसे अच्छा उपकरण है। केवल eUML ही इस लाइव जावा सिंक्रोनाइज़ेशन मार्केट पर इसका मुकाबला करता है, लेकिन eUML कोड में मॉडल टैग जोड़ता है जो वास्तव में बहुत खराब है और मेरे लिए कोई निश्चित नहीं है।
अब तक मैंने सबसे अच्छा उपकरण रिवर्स इंजीनियरिंग, और राउंड ट्रिपिंग जावा के लिए इस्तेमाल किया है -> यूएमएल बोरलैंड्स टुगेदर है । यह एक्लिप्स (केवल एक प्लगइन नहीं) पर आधारित है और वास्तव में अच्छी तरह से काम करता है।
मेरा सुझाव है कि PlantUML। यह उपकरण बहुत उपयोगी और उपयोग में आसान है। PlantUML में Netbeans के लिए एक प्लगइन है जिससे आप अपने java कोड से UML आरेख बना सकते हैं।
आप इस विधि से netbeans में PlantUML प्लगइन स्थापित कर सकते हैं:
Netbeans मेनू -> उपकरण -> प्लगइन
अब उपलब्ध प्लगिन का चयन करें और फिर प्लांटयूएमएल ढूंढें और इसे स्थापित करें।
अधिक जानकारी के लिए वेबसाइट: www.plantuml.com पर जाएं
मैंने देखा है Intellij के लिए SequenceDiagram प्लगइन भी एक अच्छा विकल्प है।
जावा के लिए एक और मॉडलिंग टूल (मेरी) वेबसाइट GitUML है । GitHub रिपॉजिटरी में संग्रहीत जावा या पायथन कोड से यूएमएल आरेख उत्पन्न करें।
GitUML के साथ एक महत्वपूर्ण विचार "प्रलेखन" के साथ समस्याओं में से एक को संबोधित करना है: कि आरेख हमेशा पुराने हैं। GitUML के साथ, जब आप git का उपयोग करके कोड को धक्का देते हैं, तो चित्र स्वचालित रूप से अपडेट हो जाते हैं।
समुदाय यूएमएल आरेख के माध्यम से ब्राउज़ करें, वहां कुछ जावा डिजाइन पैटर्न हैं। लोकप्रिय GitHub रिपॉजिटरी के माध्यम से सर्फ करें और उनमें आर्किटेक्चर और पैटर्न की कल्पना करें।
बिंदु और क्लिक का उपयोग करके चित्र बनाएं। कोई ड्रैग ड्रॉप संपादक नहीं है, बस रिपॉजिटरी ट्री में उन कक्षाओं पर क्लिक करें जिन्हें आप देखना चाहते हैं:
अंतर्निहित प्रौद्योगिकी प्लांटयूएमएल आधारित है, जिसका अर्थ है कि आप अतिरिक्त प्लांटयूएमएल मार्कअप के साथ अपने आरेखों को परिष्कृत कर सकते हैं।
बाइनरीडोक नाम का एक निशुल्क उपकरण है जो जावा विधि के (स्रोत कोड के बजाय ) उत्पन्न , या ( ) कर सकता है ।UML Sequence Diagram
Control Flow Graph
CFG
bytecode
यहाँ एक नमूना चित्र है binarydoc जावा विधि के लिए उत्पन्न java.net.AbstractPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: