7

मेरे पास टिप्पणियों के बिना जटिल परियोजना है। प्रोजेक्ट जावा में प्रोग्राम किया गया है लेकिन एक से अधिक मुख्य वर्ग हैं, टेम्पलेट जैसे कई .txt फ़ाइलों का उपयोग करें और कई .bat फ़ाइलों का उपयोग करें। मुझे नहीं पता कि कहां से शुरू करना है और परियोजना को कैसे शुरू करना है, क्योंकि मुझे उस परियोजना में कुछ बदलाव करने की ज़रूरत है।असम्बद्ध और जटिल परियोजना को समझने का सबसे अच्छा या तेज़ तरीका

+13

मेरा मानना ​​है कि इस स्थिति को "नरक" कहा जाता है। –

+0

ग्राहक से बात करें। केवल वे शायद जानते हैं कि वे क्या चाहते थे। – leppie

+5

मेरा नंबर एक की सिफारिश है, ग्राहक के साथ आगे बढ़ें, उन्हें बताएं कि इसे सुलझाने में समय लगेगा, और आपको लगता है कि आपको इसकी आवश्यकता होगी उससे अधिक समय मांगें। –

उत्तर

0

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

+0

यदि यह प्लग-इन .bat और .txt फ़ाइलों को पहचान लेगा। – Gogoo

+0

@GoGoo: मैं जावा कक्षाओं को प्रतिबिंबित कर रहा हूं। इसे आज़माएं http://www.soyatec.com/main.php इसमें मुफ्त संस्करण है। आप जावा कोड के दृश्य उमल आरेख बनाते हैं और प्रोजेक्ट को विज़ुअलाइज़ करना शुरू करते हैं। एक बार जब आप उच्च स्तर पर कोड को समझ लेते हैं तो यह पता लगाना आसान होगा कि कोड का कौन सा हिस्सा क्या करता है, और कहां डाइव करना है। – Cratylus

0

यदि लॉग फाइलें उत्पन्न हो रही हैं, तो शुरुआती बिंदु (मुख्य श्रेणी) से प्रवाह को समझने के लिए इसे देखें। अन्यथा, प्रवाह को समझने के लिए डीबग स्टेटमेंट डालें।

3

मुख्य मुख्य श्रेणी खोजें। प्रारंभिक बिंदु। कक्षाओं और उनके स्वामित्व वाली वस्तुओं और बाहरी संस्थाओं का संदर्भ चित्रण करना शुरू करें। सभी शाखाओं का पालन करें जब तक आप एक तार्किक अंत नहीं पा सकते।

मैंने अतीत में यूएमएल रिवर्स इंजीनियरिंग उपकरण का उपयोग किया है और एक दृश्य चित्र अच्छा है, कोड के माध्यम से कदम हमेशा मेरे लिए सबसे कठिन और अभी तक की सर्वोत्तम पद्धति रही है।

और, जैसा कि आप आप अपने खुद के टिप्पणी में जोड़ सकते हैं प्रत्येक टुकड़ा के माध्यम से कदम ..

+1

और इसे ढूंढने का सबसे आसान तरीका .bat फ़ाइलों के साथ है - देखें कि कमांड से कौन से वर्ग बुलाए जाते हैं लाइन, यह आपका प्रवेश बिंदु है। – KevinDTimm

2

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

2

Auch। मुझे डर है कि ऐसा करने का कोई तेज़ तरीका नहीं है। एक पंक्ति (या दो) -> परीक्षण -> देखें कि क्या ब्रेक देखें। आप यहां और वहां ब्रेक स्टेटमेंट भी डाल सकते हैं और डीबगर चला सकते हैं। इससे आपको कुछ संकेत मिलना चाहिए कि आप वहां कैसे पहुंचे (यानी कक्षाओं के बीच पदानुक्रम क्या है)।

उम्मीद है कि मूल डेवलपर्स ने कुछ पैटर्न का उपयोग किया है जिन्हें आप पहचान सकते हैं और नोट्स बना सकते हैं। सब कुछ के नोट्स बनाओ। उच्च स्तरीय संरचना को समझने और वहां से काम करने की कोशिश करके शुरू करें।

अंतहीन घंटे बिताने के लिए तैयार रहें कि यह समझ में नहीं आता कि क्या काम कर रहा है।

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

0

हां, वह काफ़ी खराब जगह की तरह लगता है में किया जाना है।

मैं कहूँगा कि सबसे अच्छा तरीका है बस लाइन के लिए कार्यक्रम लाइन के माध्यम से चलने के लिए है। कोड में बड़ी तस्वीर को समझने की कोशिश करें, और कोड पर टिप्पणियों में टिप्पणियों में, नोट्स के बहुत सारे लिखें।

6

दूसरों के साथ मैं कहता हूं कि यह एक धीमी प्रक्रिया है।

हालांकि अतीत में कई बार में यह किया था, इससे मेरी पद्धति है:

  1. कि कोड को पूरा के रूप में कई आवश्यकताओं की पहचान करना। यह आपको कुछ कारण बता सकता है कि जब आप गहरी लगते हैं तो कुछ चीजें क्यों होती हैं। इन्हें ढूंढने का एक आम तरीका उपलब्ध किसी भी परीक्षण की तलाश है। स्वचालित वाले सर्वश्रेष्ठ होते हैं, लेकिन आम तौर पर वे टिप्पणियों के रूप में गायब होते हैं।

  2. कोड के लिए प्रवेश द्वारों का पता लगाएं। ये आपको ऐसे स्थान देंगे जहां आप कोड को पॉक कर सकते हैं यह देखने के लिए कि विभिन्न इनपुट प्रवाह को कैसे प्रभावित करते हैं। आम प्रवेश बिंदुओं कोड लोड हो रहा है 'मुख्य' प्रकार काम करता है, सेवा इंटरफेस, वेब पेज के बाद पीठ आदि ..

  3. आरेख कोड हैं। उन उपकरणों की तलाश करें जो कोड के काले/सफेद बॉक्स चित्र बना सकते हैं। मेरे लिए यह अमूल्य है। मैंने अवसर पर बड़े लिस्टिंग को मुद्रित किया है और मार्करों और शासकों के साथ हमला किया है। आप कोड प्रवाह के अपने प्रवाह चार्ट (मानसिक या अन्य बुद्धिमान) बनाने का लक्ष्य रख रहे हैं।

  4. ऊपर (iteratively) कोड आपको लगता है कि होने चाहिए करने के लिए आउटपुट का एक सेट का निर्माण, और आउटपुट ऐसे लॉग, डेटा फ़ाइलें, डेटाबेस लिखते हैं आदि के रूप में आप पहले से ही के बारे में पता कर सकते हैं इन में जोड़ने के लिए ..

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

यह पद्धति आमतौर पर मुझे परिवर्तन करने का विश्वास देती है।

नोट इस सतत प्रक्रिया है और कोड के कुछ भागों के साथ या समग्र आप मनचाहे ढंग से किया जा सकता है। मैं आम तौर पर शुरू करने के लिए एक शीर्ष नीचे दृष्टिकोण का पक्ष लेता हूं और फिर जब मैं कुछ अंतर्दृष्टि प्राप्त करता हूं तो मैं विवरण तक भारी ड्रिल करता हूं और फिर मैं दोहराता हूं। हालांकि यह इसलिए है क्योंकि मेरा दिमाग इस तरह से काम करता है - आप अलग हो सकते हैं। सौभाग्य।

+1

6. गायब दस्तावेज जोड़ने के लिए शुरू करें –

0

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

0

मैं पोस्ट किए गए अधिकांश उत्तरों से पूरी तरह से सहमत हूं।

मैं एक विकास उपकरण है जो कोड रिवर्स इंजीनियर करने का उपयोग करें और एक वर्ग रेखाचित्र बनाने के लिए, क्या शामिल है की एक समग्र तस्वीर को जोड़ सकते हैं।

फिर आपको धैर्य की आवश्यकता है। लेकिन अगर आप एक मजबूत और होशियार डेवलपर जब आप के माध्यम से मिल जाएगा ...

गुड लक हो जाएगा!

3

मैं आमतौर पर डॉक्सिजन से शुरू करता हूं, हर निकालने वाले विकल्प (विशेष रूप से EXTRACT_ALL और EXTRACT_PRIVATE) को चालू करता हूं, और SOURCE_BROWSER, HAVE_DOT, CALL_GRAPH और CALLER_GRAPH विकल्प सक्षम करता हूं (आपको डॉट इंस्टॉल करने की भी आवश्यकता होती है)। यह सॉफ्टवेयर का अच्छा विचार देता है। प्रत्येक फ़ंक्शन के लिए कॉल को ग्राफ में प्रदर्शित और लिंक किया जाता है, स्रोत भी वहां से जुड़े होते हैं।

Doxygen C और C++ के लिए है, वहीं इससे जावा स्रोतों (OPTIMIZE_OUTPUT_JAVA विकल्प सेट) के साथ काम करता है।

0

कोड बनाने और चलाने का प्रयास करने के लिए सबसे अच्छी और पहली चीजों में से एक है। यह थोड़ा सा सरल हो सकता है लेकिन जब आप अनियंत्रित कोड लेते हैं तो समस्या यह है कि आप इसे भी नहीं बना सकते हैं और इसे चला सकते हैं। जब कोई सुराग शुरू नहीं किया गया था।