सॉफ्टवेयर डिज़ाइन और आर्किटेक्चर
सॉफ्टवेयर डिज़ाइन और आर्किटेक्चर इस बात से संबंधित हैं कि एक सॉफ्टवेयर सिस्टम को घटकों और कनेक्टर्स में कैसे संरचित किया जाता है, जिम्मेदारियों को कैसे विघटित किया जाता है, और डिज़ाइन निर्णय कार्यात्मक आवश्यकताओं और गुणवत्ता विशेषताओं को कैसे पूरा करते हैं।
Definition
सॉफ्टवेयर डिज़ाइन एक सिस्टम की वास्तुकला, घटकों, इंटरफेस और अन्य विशेषताओं को परिभाषित करने की प्रक्रिया है, और सॉफ्टवेयर आर्किटेक्चर सिस्टम के तत्वों, उनके संबंधों और दोनों के गुणों से बनी संरचनाओं का समूह है।
Scope
यह क्षेत्र आर्किटेक्चरल शैलियों और पैटर्न (लेयर्ड, क्लाइंट-सर्वर, माइक्रोसर्विसेज, इवेंट-ड्रिवन, पाइप-एंड-फ़िल्टर); मॉड्यूलरिटी, सूचना छिपाना, सामंजस्य, युग्मन और सरोकारों का पृथक्करण जैसे डिज़ाइन सिद्धांतों; ऑब्जेक्ट-ओरिएंटेड और घटक-आधारित डिज़ाइन; डिज़ाइन पैटर्न; आर्किटेक्चरल गुणवत्ता विशेषताएँ और उनके ट्रेड-ऑफ; और UML जैसी मॉडलिंग नोटेशन जो डिज़ाइनों को व्यक्त करने के लिए उपयोग की जाती हैं, को कवर करता है।
Sub-topics
Core questions
- एक सिस्टम को मॉड्यूल और घटकों में कैसे विघटित किया जाना चाहिए?
- कौन सी आर्किटेक्चरल शैली आवश्यक गुणवत्ता विशेषताओं का सबसे अच्छा समर्थन करती है?
- युग्मन और सामंजस्य जैसे डिज़ाइन सिद्धांत अच्छी संरचना का मार्गदर्शन कैसे करते हैं?
- पुनरावर्ती डिज़ाइन समस्याओं को पुन: प्रयोज्य पैटर्न द्वारा कैसे हल किया जाता है?
Key theories
- सूचना छिपाना और मॉड्यूलरिटी
- पारनास ने तर्क दिया कि मॉड्यूल को स्थिर इंटरफेस के पीछे बदलने की संभावना वाले डिज़ाइन निर्णयों को छिपाने के लिए परिभाषित किया जाना चाहिए, ताकि परिवर्तन स्थानीयकृत हो; यह सिद्धांत मॉड्यूलरिटी, एनकैप्सुलेशन और कम युग्मन का आधार है।
- आर्किटेक्चरल गुणवत्ता विशेषताएँ और ट्रेड-ऑफ
- आर्किटेक्चर प्रदर्शन, संशोधनीयता, उपलब्धता और सुरक्षा जैसी गुणवत्ता विशेषताओं द्वारा संचालित होता है; क्योंकि ये परस्पर विरोधी होते हैं, आर्किटेक्चर मौलिक रूप से रणनीति और पैटर्न द्वारा निर्देशित ट्रेड-ऑफ पर तर्क करने के बारे में है।
- डिज़ाइन पैटर्न
- पुनरावर्ती डिज़ाइन समस्याओं के अच्छी तरह से समझे गए, नामित समाधान होते हैं — रचनात्मक, संरचनात्मक और व्यवहारिक पैटर्न — जो विशेषज्ञ अभ्यास को कैप्चर करते हैं और ऑब्जेक्ट-ओरिएंटेड डिज़ाइन के लिए एक साझा शब्दावली प्रदान करते हैं।
Clinical relevance
आर्किटेक्चर के निर्णय बाद में बदलना सबसे कठिन होते हैं और एक सिस्टम की गुणवत्ता विशेषताओं को सबसे दृढ़ता से निर्धारित करते हैं, इसलिए सुदृढ़ डिज़ाइन और आर्किटेक्चर दीर्घकालिक रखरखाव लागत को कम करते हैं, स्केलेबिलिटी और विकास को सक्षम करते हैं, और टीम संगठन को आकार देते हैं।
Evidence & guidelines
ISO/IEC/IEEE 42010 आर्किटेक्चर विवरण को मानकीकृत करता है, और SWEBOK सॉफ्टवेयर डिज़ाइन ज्ञान क्षेत्र, Software Architecture in Practice जैसे संदर्भ ग्रंथों के साथ मिलकर, आम सहमति मार्गदर्शन प्रदान करता है।
History
मॉड्यूलर डिज़ाइन सिद्धांतों को 1970 के दशक की शुरुआत में पारनास द्वारा प्रतिपादित किया गया था। ऑब्जेक्ट-ओरिएंटेड डिज़ाइन और डिज़ाइन पैटर्न 1980 और 1990 के दशक में परिपक्व हुए, सॉफ्टवेयर आर्किटेक्चर 1990 के दशक के मध्य में शॉ और गार्लन के काम के साथ एक विशिष्ट अनुशासन के रूप में उभरा, और सर्विस-ओरिएंटेड और माइक्रोसर्विस शैलियाँ 2000 और 2010 के दशक में आईं।
Debates
- मोनोलिथिक बनाम माइक्रोसर्विस आर्किटेक्चर
- सिस्टम को एक एकल परिनियोजित मोनोलिथ के रूप में बनाना है या कई स्वतंत्र रूप से परिनियोजित सेवाओं के रूप में, इस पर व्यापक रूप से बहस होती है; माइक्रोसर्विसेज वितरित-सिस्टम की जटिलता की कीमत पर स्वतंत्र स्केलिंग और परिनियोजन प्रदान करते हैं, इसलिए सही विकल्प पैमाने और संगठनात्मक संरचना पर निर्भर करता है।
Key figures
- David Parnas
- Mary Shaw
- Len Bass
- Erich Gamma
- Grady Booch
Related topics
Seminal works
- parnas1972
- gamma1994
- bass2012
Frequently asked questions
- डिज़ाइन और आर्किटेक्चर में क्या अंतर है?
- आर्किटेक्चर उच्चतम-स्तरीय संरचनाओं और उन निर्णयों से संबंधित है जिन्हें बदलना सबसे महंगा है — प्रमुख घटक, उनकी बातचीत, और सिस्टम-व्यापी गुणवत्ता विशेषताएँ — जबकि डिज़ाइन उन घटकों की अधिक विस्तृत आंतरिक संरचना को कवर करता है; सीमा एक तीखी रेखा के बजाय महत्व की है।
- डिज़ाइन पैटर्न क्यों मायने रखते हैं?
- पैटर्न पुनरावर्ती डिज़ाइन समस्याओं के सिद्ध समाधानों को कैप्चर करते हैं और इंजीनियरों को एक साझा शब्दावली देते हैं, जिससे डिज़ाइनों को संवाद करना, तर्क करना और विकसित करना आसान हो जाता है; वे विवेकपूर्ण ढंग से लागू किए जाने वाले मार्गदर्शन हैं, न कि अनिवार्य व्यंजन।