सॉफ्टवेयर री-इंजीनियरिंग
सॉफ्टवेयर री-इंजीनियरिंग किसी मौजूदा प्रणाली की जांच और उसमें बदलाव करने की प्रक्रिया है ताकि उसे एक नए, बेहतर रूप में पुनर्गठित किया जा सके, आमतौर पर पुरानी विरासत सॉफ्टवेयर को आधुनिक बनाने के लिए जबकि उसके आवश्यक व्यवहार को बनाए रखा जा सके।
Definition
सॉफ्टवेयर री-इंजीनियरिंग किसी विषय प्रणाली को समझने के लिए उसकी जांच करने और फिर उसकी कार्यक्षमता को पर्याप्त रूप से बनाए रखते हुए उसके स्वरूप या प्लेटफॉर्म को बेहतर बनाने के लिए उसे फिर से लागू करने या पुनर्गठित करने की प्रक्रिया है।
Scope
यह विषय रिवर्स इंजीनियरिंग और डिज़ाइन रिकवरी; कोड और डेटा का पुनर्गठन; नए प्लेटफॉर्म, भाषाओं और आर्किटेक्चर में माइग्रेशन; विरासत प्रणालियों के लिए रैपिंग और वृद्धिशील आधुनिकीकरण रणनीतियाँ; परिवर्तन के दौरान व्यवहार को बनाए रखने के लिए परीक्षण; और निरंतर रखरखाव या प्रतिस्थापन के मुकाबले री-इंजीनियरिंग के लिए निर्णय मानदंड को शामिल करता है।
Core questions
- किसी विरासत प्रणाली का डिज़ाइन उसके कोड और डेटा से कैसे पुनर्प्राप्त किया जाता है?
- कौन सी रणनीतियाँ स्वीकार्य जोखिम के साथ किसी प्रणाली को माइग्रेट या पुनर्गठित करती हैं?
- कार्यान्वयन को बदलते समय व्यवहार को कैसे संरक्षित किया जाता है?
- री-इंजीनियरिंग निरंतर रखरखाव या पूर्ण प्रतिस्थापन से कब बेहतर होती है?
Key theories
- रिवर्स इंजीनियरिंग और डिज़ाइन रिकवरी
- चिकोफ़्स्की और क्रॉस ने एक वर्गीकरण को परिभाषित किया जो रिवर्स इंजीनियरिंग (एक प्रणाली से उच्च-स्तरीय प्रतिनिधित्व को पुनर्प्राप्त करना) को पुनर्दस्तावेज़ीकरण, पुनर्गठन और फॉरवर्ड इंजीनियरिंग से अलग करता है, जो डिज़ाइन रिकवरी की गतिविधियों को फ्रेम करता है।
- वृद्धिशील विरासत आधुनिकीकरण
- जोखिम भरे 'बिग-बैंग' पुनर्लेखन के बजाय, विरासत प्रणालियों को मौजूदा कोड के चारों ओर परीक्षण शुरू करके, परिवर्तन बिंदुओं को अलग करके, और धीरे-धीरे घटकों का पुनर्गठन या प्रतिस्थापन करके वृद्धिशील रूप से आधुनिक बनाया जाता है।
Clinical relevance
री-इंजीनियरिंग संगठनों को खरोंच से फिर से लिखने की तुलना में कम जोखिम पर व्यवसाय-महत्वपूर्ण विरासत प्रणालियों के जीवन और मूल्य का विस्तार करने देती है; सुदृढ़ रणनीति और व्यवहार-संरक्षण तकनीकें आवश्यक हैं क्योंकि विरासत प्रणालियाँ अक्सर अपूरणीय, अनधिकृत व्यावसायिक ज्ञान को एन्कोड करती हैं।
History
जैसे-जैसे 1960 के दशक से 1980 के दशक तक निर्मित बड़ी प्रणालियाँ पुरानी होती गईं, रिवर्स इंजीनियरिंग और री-इंजीनियरिंग 1980 के दशक के अंत और 1990 के दशक में अलग-अलग चिंताओं के रूप में उभरीं, जिन्हें चिकोफ़्स्की और क्रॉस की वर्गीकरण द्वारा औपचारिक रूप दिया गया; अप्रशिक्षित विरासत कोड को नियंत्रित करने के लिए व्यावहारिक तकनीकों को बाद में फ़ेदर्स द्वारा संहिताबद्ध किया गया।
Debates
- वृद्धिशील री-इंजीनियरिंग बनाम पूर्ण पुनर्लेखन
- किसी विरासत प्रणाली को वृद्धिशील रूप से आधुनिक बनाना है या उसे थोक में फिर से लिखना है, यह विवादास्पद है; पुनर्लेखन एक साफ स्लेट का वादा करते हैं लेकिन अक्सर अतिरंजित होते हैं और अंतर्निहित ज्ञान खो देते हैं, जबकि वृद्धिशील री-इंजीनियरिंग सुरक्षित लेकिन धीमी होती है।
Key figures
- Elliot Chikofsky
- James Cross
- Michael Feathers
Related topics
Seminal works
- chikofsky1990
- feathers2004
- sommerville2015
Frequently asked questions
- रिफैक्टरिंग और री-इंजीनियरिंग में क्या अंतर है?
- रिफैक्टरिंग स्रोत कोड में छोटे, व्यवहार-संरक्षण सुधार करती है, आमतौर पर चल रहे विकास के हिस्से के रूप में; री-इंजीनियरिंग एक बड़े पैमाने की गतिविधि है जो डिज़ाइनों को पुनर्प्राप्त कर सकती है और एक पूरी प्रणाली को एक नए प्लेटफॉर्म या आर्किटेक्चर में माइग्रेट कर सकती है, जिसमें रिफैक्टरिंग एक तकनीक हो सकती है।
- विरासत प्रणाली को खरोंच से फिर से क्यों नहीं लिखा जाता?
- विरासत प्रणालियाँ अक्सर वर्षों के संचित, खराब दस्तावेज़ीकृत व्यावसायिक नियमों को समाहित करती हैं; खरोंच से फिर से लिखने से इस ज्ञान के खोने का जोखिम होता है और आमतौर पर अतिरंजित होता है, इसलिए वृद्धिशील री-इंजीनियरिंग अक्सर अपनी धीमी गति के बावजूद कम जोखिम वाला मार्ग होता है।