घटक आधारित वास्तुकला
घटक-आधारित वास्तुकला व्यक्तिगत कार्यात्मक या तार्किक घटकों में डिजाइन के अपघटन पर केंद्रित है जो विधियों, घटनाओं और गुणों से युक्त अच्छी तरह से परिभाषित संचार इंटरफेस का प्रतिनिधित्व करते हैं। यह अमूर्तता का एक उच्च स्तर प्रदान करता है और समस्या को उप-समस्याओं में विभाजित करता है, प्रत्येक घटक विभाजन से जुड़ा होता है।
घटक-आधारित वास्तुकला का प्राथमिक उद्देश्य सुनिश्चित करना है component reusability। एक घटक एक पुन: प्रयोज्य और स्व-परिनियोज्य बाइनरी इकाई में एक सॉफ्टवेयर तत्व की कार्यक्षमता और व्यवहार को एन्क्रिप्ट करता है। कई मानक घटक रूपरेखाएँ जैसे COM / DCOM, JavaBean, EJB, CORBA, .NET, वेब सेवाएँ और ग्रिड सेवाएँ हैं। इन तकनीकों का व्यापक रूप से स्थानीय डेस्कटॉप GUI अनुप्रयोग डिज़ाइन में उपयोग किया जाता है जैसे ग्राफिक JavaBean घटक, MS ActiveX घटक और COM घटक जिनका उपयोग केवल ड्रैग और ड्रॉप ऑपरेशन द्वारा किया जा सकता है।
घटक-उन्मुख सॉफ़्टवेयर डिज़ाइन में पारंपरिक वस्तु-उन्मुख दृष्टिकोणों पर कई फायदे हैं जैसे कि -
बाजार में कम समय और मौजूदा घटकों का पुन: उपयोग करके विकास लागत।
मौजूदा घटकों के पुन: उपयोग के साथ विश्वसनीयता में वृद्धि।
एक घटक क्या है?
एक घटक एक अच्छी तरह से परिभाषित कार्यक्षमता का एक मॉड्यूलर, पोर्टेबल, बदली और पुन: प्रयोज्य सेट है जो इसके कार्यान्वयन को अंजाम देता है और इसे उच्च-स्तरीय इंटरफ़ेस के रूप में निर्यात करता है।
एक घटक एक सॉफ्टवेयर ऑब्जेक्ट है, जिसका उद्देश्य अन्य घटकों के साथ बातचीत करना है, जो निश्चित कार्यक्षमता या कार्यात्मकताओं का एक सेट है। इसका स्पष्ट रूप से परिभाषित इंटरफ़ेस है और एक आर्किटेक्चर के भीतर सभी घटकों के लिए एक अनुशंसित व्यवहार के अनुरूप है।
एक सॉफ्टवेयर घटक को केवल एक निर्दिष्ट निर्दिष्ट इंटरफ़ेस और स्पष्ट संदर्भ निर्भरता के साथ रचना की एक इकाई के रूप में परिभाषित किया जा सकता है। यही है, एक सॉफ्टवेयर घटक स्वतंत्र रूप से तैनात किया जा सकता है और तीसरे पक्ष द्वारा रचना के अधीन है।
एक घटक का दृश्य
एक घटक के तीन अलग-अलग विचार हो सकते हैं - वस्तु-उन्मुख दृश्य, पारंपरिक दृश्य, और प्रक्रिया-संबंधी दृश्य।
Object-oriented view
एक घटक को एक या अधिक सहयोगी कक्षाओं के एक सेट के रूप में देखा जाता है। प्रत्येक समस्या डोमेन वर्ग (विश्लेषण) और बुनियादी ढांचा वर्ग (डिजाइन) को उन सभी विशेषताओं और कार्यों की पहचान करने के लिए समझाया जाता है जो इसके कार्यान्वयन पर लागू होते हैं। इसमें उन इंटरफेस को परिभाषित करना भी शामिल है जो कक्षाओं को संवाद और सहयोग करने में सक्षम बनाते हैं।
Conventional view
इसे एक कार्यात्मक तत्व या प्रोग्राम के मॉड्यूल के रूप में देखा जाता है जो प्रसंस्करण तर्क को एकीकृत करता है, आंतरिक डेटा संरचनाएं जो प्रसंस्करण तर्क और एक इंटरफ़ेस को लागू करने के लिए आवश्यक होती हैं जो घटक को लागू करने में सक्षम बनाता है और डेटा को इसे पारित करने के लिए सक्षम करता है।
Process-related view
इस दृष्टिकोण में, प्रत्येक घटक को खरोंच से बनाने के बजाय, सिस्टम एक पुस्तकालय में रखे गए मौजूदा घटकों से निर्माण कर रहा है। जैसा कि सॉफ्टवेयर आर्किटेक्चर तैयार किया गया है, घटकों को लाइब्रेरी से चुना जाता है और आर्किटेक्चर को आबाद करने के लिए उपयोग किया जाता है।
एक यूजर इंटरफेस (यूआई) घटक में ग्रिड, बटन होते हैं जिन्हें नियंत्रण के रूप में संदर्भित किया जाता है, और उपयोगिता घटक अन्य घटकों में उपयोग किए जाने वाले कार्यों का एक विशिष्ट सबसेट उजागर करते हैं।
अन्य सामान्य प्रकार के घटक वे हैं जो संसाधन गहन हैं, अक्सर एक्सेस नहीं किए जाते हैं, और बस-इन-टाइम (JIT) दृष्टिकोण का उपयोग करके सक्रिय किया जाना चाहिए।
कई घटक अदृश्य होते हैं जो एंटरप्राइज़ व्यावसायिक अनुप्रयोगों और इंटरनेट वेब अनुप्रयोगों जैसे कि एंटरप्राइज़ जावाबिन (ईजेबी), .NET घटकों और कॉरबा घटकों में वितरित किए जाते हैं।
अवयवों की विशेषताएँ
Reusability- घटक आमतौर पर विभिन्न अनुप्रयोगों में विभिन्न स्थितियों में पुन: उपयोग करने के लिए डिज़ाइन किए जाते हैं। हालाँकि, कुछ घटकों को किसी विशिष्ट कार्य के लिए डिज़ाइन किया जा सकता है।
Replaceable - घटकों को अन्य समान घटकों के साथ स्वतंत्र रूप से प्रतिस्थापित किया जा सकता है।
Not context specific - घटकों को विभिन्न वातावरणों और संदर्भों में संचालित करने के लिए डिज़ाइन किया गया है।
Extensible - एक घटक को नए व्यवहार प्रदान करने के लिए मौजूदा घटकों से बढ़ाया जा सकता है।
Encapsulated - एए घटक इंटरफेस को दर्शाता है, जो कॉलर को अपनी कार्यक्षमता का उपयोग करने की अनुमति देता है, और आंतरिक प्रक्रियाओं या किसी भी आंतरिक चर या राज्य के विवरण को उजागर नहीं करता है।
Independent - घटकों को अन्य घटकों पर न्यूनतम निर्भरता के लिए डिज़ाइन किया गया है।
घटक के सिद्धांत Design आधारित डिजाइन
घटक-स्तरीय डिज़ाइन को कुछ मध्यस्थ प्रतिनिधित्व (जैसे चित्रमय, सारणीबद्ध या पाठ-आधारित) का उपयोग करके प्रतिनिधित्व किया जा सकता है जिसे स्रोत कोड में अनुवाद किया जा सकता है। डेटा संरचनाओं, इंटरफेस, और एल्गोरिदम का डिज़ाइन हमें त्रुटियों की शुरूआत से बचने में मदद करने के लिए अच्छी तरह से स्थापित दिशानिर्देशों के अनुरूप होना चाहिए।
सॉफ्टवेयर सिस्टम को पुन: प्रयोज्य, एकजुट और संकुचित घटक इकाइयों में विघटित किया जाता है।
प्रत्येक घटक का अपना इंटरफ़ेस होता है जो आवश्यक पोर्ट और प्रदान किए गए पोर्ट निर्दिष्ट करता है; प्रत्येक घटक अपने विस्तृत कार्यान्वयन को छुपाता है।
घटक के मौजूदा भागों में आंतरिक कोड या डिज़ाइन संशोधन करने की आवश्यकता के बिना एक घटक को बढ़ाया जाना चाहिए।
अमूर्त घटक पर निर्भर अन्य ठोस घटकों पर निर्भर नहीं होते हैं, जो व्यय में कठिनाई बढ़ाते हैं।
कनेक्टर्स घटकों को जोड़ते हैं, घटकों के बीच बातचीत को निर्दिष्ट और शासित करते हैं। सहभागिता प्रकार घटकों के इंटरफेस द्वारा निर्दिष्ट किया गया है।
घटक इंटरैक्शन विधि इनवोकेशन, एसिंक्रोनस इनवोकेशन, ब्रॉडकास्टिंग, संदेश संचालित इंटरैक्शन, डेटा स्ट्रीम संचार और अन्य प्रोटोकॉल विशिष्ट इंटरैक्शन का रूप ले सकते हैं।
एक सर्वर वर्ग के लिए, ग्राहकों की प्रमुख श्रेणियों की सेवा के लिए विशेष इंटरफेस बनाया जाना चाहिए। केवल उन संचालन जो क्लाइंट की एक विशेष श्रेणी के लिए प्रासंगिक हैं, उन्हें इंटरफ़ेस में निर्दिष्ट किया जाना चाहिए।
एक घटक अन्य घटकों का विस्तार कर सकता है और फिर भी अपने स्वयं के विस्तार बिंदु प्रदान कर सकता है। यह प्लग-इन आधारित वास्तुकला की अवधारणा है। इससे एक प्लगइन दूसरे प्लगइन एपीआई की पेशकश कर सकता है।
घटक स्तर के डिजाइन दिशानिर्देश
उन घटकों के लिए एक नामकरण सम्मेलनों का निर्माण करता है जो वास्तुशिल्प मॉडल के भाग के रूप में निर्दिष्ट होते हैं और फिर घटक-स्तरीय मॉडल के भाग के रूप में परिष्कृत या विस्तृत होते हैं।
समस्या डोमेन से वास्तुशिल्प घटक नामों को बनाए रखता है और यह सुनिश्चित करता है कि उनके पास सभी हितधारकों के लिए अर्थ है जो वास्तुशिल्प मॉडल को देखते हैं।
अन्य संस्थाओं पर किसी भी संबंधित निर्भरता के बिना स्वतंत्र रूप से मौजूद व्यावसायिक प्रक्रिया संस्थाओं को निकाल सकता है।
इन स्वतंत्र संस्थाओं को नए घटकों के रूप में पहचाना और खोजा।
बुनियादी ढांचे के घटक नामों का उपयोग करता है जो उनके कार्यान्वयन-विशिष्ट अर्थ को दर्शाते हैं।
ऊपर (आधार वर्ग) से नीचे (व्युत्पन्न वर्ग) तक बाएं से दाएं और वंशानुक्रम से किसी भी निर्भरता को मॉडल करें।
किसी भी घटक पर निर्भरता को एक प्रत्यक्ष घटक-से-घटक निर्भरता के रूप में प्रतिनिधित्व करने के बजाय मॉडल के रूप में मॉडल करें।
घटक-स्तरीय डिजाइन का संचालन
विश्लेषण मॉडल और वास्तुशिल्प मॉडल में परिभाषित सभी डिज़ाइन वर्गों को समस्या डोमेन के अनुरूप पहचानता है।
सभी डिज़ाइन वर्गों को पहचानता है जो बुनियादी ढांचे के डोमेन के अनुरूप हैं।
सभी डिज़ाइन वर्गों का वर्णन करता है जिन्हें पुन: प्रयोज्य घटकों के रूप में अधिग्रहित नहीं किया जाता है, और संदेश विवरण निर्दिष्ट करता है।
प्रत्येक घटक के लिए उपयुक्त इंटरफेस की पहचान करता है और विशेषताओं को विस्तृत करता है और उन्हें लागू करने के लिए आवश्यक डेटा प्रकार और डेटा संरचनाओं को परिभाषित करता है।
प्रत्येक ऑपरेशन के भीतर छद्म कोड या यूएमएल गतिविधि आरेख के माध्यम से विस्तार से प्रसंस्करण प्रवाह का वर्णन करता है।
लगातार डेटा स्रोतों (डेटाबेस और फ़ाइलें) का वर्णन करता है और उन्हें प्रबंधित करने के लिए आवश्यक कक्षाओं की पहचान करता है।
एक वर्ग या घटक के लिए व्यवहारिक अभ्यावेदन का विकास और विस्तार करता है। यह विश्लेषण मॉडल के लिए बनाए गए यूएमएल राज्य आरेखों को विस्तृत करके और डिज़ाइन वर्ग के लिए प्रासंगिक सभी उपयोग मामलों की जांच करके किया जा सकता है।
अतिरिक्त कार्यान्वयन विवरण प्रदान करने के लिए परिनियोजन आरेख विस्तृत करता है।
क्लास इंस्टेंसेस का उपयोग करके और विशिष्ट हार्डवेयर और ऑपरेटिंग सिस्टम वातावरण को निर्दिष्ट करके सिस्टम में प्रमुख पैकेज या घटकों के वर्गों का स्थान प्रदर्शित करता है।
अंतिम निर्णय स्थापित डिजाइन सिद्धांतों और दिशानिर्देशों का उपयोग करके किया जा सकता है। अनुभवी डिजाइनर अंतिम डिजाइन मॉडल पर बसने से पहले वैकल्पिक डिजाइन समाधान के सभी (या अधिकांश) पर विचार करते हैं।
लाभ
Ease of deployment - जैसे-जैसे नए संगत संस्करण उपलब्ध होते जाते हैं, मौजूदा संस्करणों को अन्य घटकों या सिस्टम पर कोई प्रभाव नहीं पड़ना आसान होता है।
Reduced cost - तृतीय-पक्ष घटकों का उपयोग आपको विकास और रखरखाव की लागत को फैलाने की अनुमति देता है।
Ease of development - घटक परिभाषित कार्यक्षमता प्रदान करने के लिए प्रसिद्ध इंटरफेस को लागू करते हैं, जिससे सिस्टम के अन्य हिस्सों को प्रभावित किए बिना विकास की अनुमति मिलती है।
Reusable - पुन: प्रयोज्य घटकों के उपयोग का अर्थ है कि उनका उपयोग कई अनुप्रयोगों या प्रणालियों में विकास और रखरखाव लागत को फैलाने के लिए किया जा सकता है।
Modification of technical complexity - एक घटक एक घटक कंटेनर और इसकी सेवाओं के उपयोग के माध्यम से जटिलता को संशोधित करता है।
Reliability - समग्र प्रणाली की विश्वसनीयता बढ़ जाती है क्योंकि प्रत्येक व्यक्तिगत घटक की विश्वसनीयता पुन: उपयोग के माध्यम से पूरे सिस्टम की विश्वसनीयता बढ़ाती है।
System maintenance and evolution - बाकी सिस्टम को प्रभावित किए बिना कार्यान्वयन को बदलना और अपडेट करना आसान है।
Independent- घटकों की स्वतंत्रता और लचीली कनेक्टिविटी। समानांतर में विभिन्न समूह द्वारा घटकों का स्वतंत्र विकास। सॉफ्टवेयर विकास और भविष्य के सॉफ्टवेयर विकास के लिए उत्पादकता।