आप आम तौर पर बड़े सॉफ्टवेयर प्रोजेक्ट्स में रन-टाइम पर होने वाली ट्रांसेटिव डिपेंडेंसी मुद्दों पर कैसे पहुँचते हैं?
पिछले तीन हफ्तों से, मैं सॉफ़्टवेयर के एक अन्य घटक के भीतर सॉफ़्टवेयर के एक बड़े टुकड़े के एक घटक को शुरू करने की कोशिश कर रहा हूं, लेकिन यह संक्रमणीय निर्भरता के कारण मर जाता है जो केवल रन-टाइम पर ज्ञात होते हैं।
सकरात्मक निर्भरता के मुद्दों से मेरा मतलब है कि किसी दिए गए प्रोजेक्ट की निर्भरता की निश्चित निर्भरता रन-टाइम में अन्य निर्भरता के साथ टकराती है, जिससे अस्थिरता या त्वरित विफलता होती है।
उपयोग में सैकड़ों निर्भरताएं हैं, और उपकरण से जुड़े लगभग 50 उप-प्रोजेक्ट हैं जो अन्य टीमों द्वारा अलगाव में काम किए जाते हैं, जहां सभी मॉड्यूल एक-दूसरे के बीच गहरी निर्भरता रखते हैं। किसी को नहीं पता कि परियोजना के पैमाने, और जटिलता को देखते हुए सभी उप-परियोजनाओं का उपयोग किस लिए किया जाता है।
इस स्थिति में, क्या आप प्रभावित घटक की निर्भरता में से प्रत्येक के लिए डीएजी के एक दृश्य प्रतिनिधित्व को उत्पन्न करने की कोशिश करेंगे, और यह निर्धारित करने का प्रयास करेंगे कि रन-टाइम में कहां टक्कर हो सकती है? अन्य उप-परियोजनाओं में निर्भरता कैसे प्रबंधित की जाती है, इस पर मेरा कोई नियंत्रण नहीं है, और अन्य डेवलपर्स द्वारा लिखे गए किसी भी जावा कोड को नहीं बदल सकते
मैंने जो समाधान किए हैं वे केवल एक या दो घंटे के लिए काम करते हैं, और फिर अपस्ट्रीम घटकों में बदलाव के कारण वे काम करना बंद कर देते हैं। एक अपस्ट्रीम घटक का एक उदाहरण एक कलाकृति है जिस पर मैं जिस परियोजना पर काम कर रहा हूं वह उस पर निर्भर है जो सीआई पाइपलाइन में पहले चरण में बनाया गया है।
अन्य अनुरोधों पर , मैं इस जानकारी को शामिल करने जा रहा हूं कि किस तकनीक का उपयोग किया जा रहा है, बहुत अधिक जानकारी प्रदान करने के लिए प्रश्न बंद होने के जोखिम पर, या शरीर बहुत लंबा हो रहा है:
- मावेन का उपयोग निर्भरता प्रबंधन के लिए किया जाता है; तथा
- वसंत का उपयोग डीआई कंटेनर के रूप में किया जाता है;
- निर्भरता के अधिकांश मुद्दों में अन्य मॉड्यूल के संदर्भ के रूप में ओवरलैपिंग बीन कॉन्टेक्ट्स शामिल हैं, जो अन्य मॉड्यूल के रन-टाइम पर लोड होने के कारण होते हैं।
- उत्पाद ठीक से काम करता है, और कार्यक्रम के कार्यात्मक शुद्धता को समाप्त करने के लिए इकाई परीक्षणों और एकीकरण परीक्षणों के स्मोर्गास्फ़ोर्ड हैं।
सामान्य तौर पर, मैं किसी दिए गए प्रोजेक्ट की निर्भरता के सभी संभावित संयोजनों के माध्यम से गणना किए बिना निर्भरता संघर्षों को हल करने के तरीकों की पहचान करने के लिए एक भाषा-अज्ञेयवादी दृष्टिकोण की तलाश कर रहा हूं ।
मैं परियोजना को फिर से आर्किटेक्ट नहीं कर सकता, अतिरिक्त गुणवत्ता द्वार जोड़ सकता हूं, कंपनी में प्रतिमान बदलाव के लिए धक्का दे सकता हूं, या एक संकल्प के रूप में भाषाओं को स्विच कर सकता हूं।