प्रस्तावना

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

UML तेजी से, बेहतर और आसान तरीके से सीखें
क्या आप UML को तेजी से, आसान और जल्दी सीखने के लिए एक मुफ्त UML उपकरण ढूंढ रहे हैं?Visual Paradigm कम्युनिटी एडिशन एक UML सॉफ्टवेयर है जो सभी UML आरेख प्रकारों का समर्थन करता है। यह एक अंतर्राष्ट्रीय पुरस्कार विजेता UML मॉडलर है, और फिर भी यह उपयोग में आसान, सहज और पूरी तरह से मुफ्त है।
मुफ्त डाउनलोड
घटक आरेख एक नज़र में
एक घटक आरेख (component diagram) विकास में चल रहे वास्तविक सिस्टम को विभिन्न उच्च स्तरीय कार्यों में विभाजित करता है। प्रत्येक घटक पूरे सिस्टम में एक स्पष्ट उद्देश्य के लिए जिम्मेदार होता है और केवल आवश्यकता के आधार पर अन्य आवश्यक तत्वों के साथ ही बातचीत करता है।

उपरोक्त उदाहरण एक बड़े घटक के आंतरिक घटकों को दर्शाता है:
- आवश्यक इंटरफेस:डेटा (खाता और निरीक्षण आईडी) दाईं ओर के पोर्ट के माध्यम से घटक में प्रवेश करता है और उस रूप में परिवर्तित हो जाता है जिसे आंतरिक घटक उपयोग कर सकते हैं। दाईं ओर के इंटरफेसों को आवश्यक इंटरफेस कहा जाता है, जो उन सेवाओं को दर्शाते हैं जिनकी घटक को अपनी जिम्मेदारी निभाने के लिए आवश्यकता होती है।
- प्रदान किए गए इंटरफेस:उसके बाद डेटा विभिन्न कनेक्शन के माध्यम से कई अन्य घटकों से होकर गुजरता है और बाईं ओर के पोर्ट पर आउटपुट होता है। बाईं ओर के वे इंटरफेस प्रदान किए गए इंटरफेस के रूप में जाने जाते हैं, जो प्रदर्शित घटक द्वारा प्रदान की जाने वाली सेवाओं को दर्शाते हैं।
- एन्कैप्सुलेशन (संरक्षितकरण):यह ध्यान देने योग्य है कि आंतरिक घटकों को एक बड़े ‘बॉक्स’ से घिरा हुआ होता है, जो स्वयं समग्र सिस्टम हो सकता है (इस स्थिति में ऊपरी दाईं कोने में कोई घटक प्रतीक नहीं होगा) या समग्र सिस्टम का उप-सिस्टम या घटक हो सकता है (इस स्थिति में ‘बॉक्स’ स्वयं एक घटक है)।
घटक आरेख के मूल अवधारणाएँ
एकघटकएक सिस्टम का मॉड्यूलर भाग है जो अपने सामग्री को एन्कैप्सुलेट करता है और जिसका प्रकटीकरण अपने वातावरण में बदला जा सकता है। UML 2 में, एक घटक को एक आयत के रूप में खींचा जाता है जिसमें ऊर्ध्वाधर रूप से संरेखित वैकल्पिक खंड होते हैं। UML 2 में एक घटक का उच्च-स्तरीय, अमूर्त दृश्य निम्नलिखित रूप में मॉडल किया जा सकता है:
- घटक के नाम वाला एक आयत।
- घटक प्रतीक वाला एक आयत।
- स्टीरियोटाइप पाठ और/या प्रतीक वाला एक आयत।

अपने मॉड्यूलर सिस्टम को AI के साथ डिजाइन करें
घटक आरेख आपके सिस्टम के मॉड्यूलर भागों और भौतिक प्रकटीकरण को दृश्य रूप से प्रस्तुत करते हैं। उपयोग करकेVisual Paradigm का AI चैटबॉटआप तुरंत सिस्टम आर्किटेक्चर पर ब्रेनस्टॉर्म कर सकते हैं, प्रदान किए गए/आवश्यक इंटरफेसों की पहचान कर सकते हैं और एक सरल संवादात्मक इंटरफेस के माध्यम से प्रारंभिक घटक आरेख उत्पन्न कर सकते हैं।
अब उपलब्ध: AI चैटबॉट – आपका डिजाइन साथी
चैटबॉट को अपने मॉड्यूल, माइक्रोसर्विसेस या डेटाबेस संरचनाओं का सरल विवरण दें। यह आपको परिभाषित करने में मदद करेगा:
- मॉड्यूलर सीमाएँ:पहचानें कि आपके सिस्टम के कौन से भागों को घटकों के रूप में एन्कैप्सुलेट किया जाना चाहिए।
- निर्भरता मैपिंग:दृश्य रूप से देखें कि आपके रिलीज में विभिन्न एक्जीक्यूटेबल और लाइब्रेरी एक-दूसरे के साथ कैसे बातचीत करती हैं।
अब AI के साथ चैट करें
हमारे AI-चालित मॉडलिंग पारिस्थितिकी तंत्र के बारे में अधिक जानें:
AI घटक गाइड सभी AI टूल्स
इंटरफेस
इंटरफ़ेस घटकों के बीच की अनुबंध को परिभाषित करते हैं। नीचे दिए गए उदाहरण में, घटक इंटरफ़ेस के दो प्रकार दिखाए गए हैं:
- प्रदान किया गया इंटरफ़ेस: अंत में पूर्ण वृत्त वाले प्रतीक (जिन्हें अक्सर ‘लोलिपॉप’ कहा जाता है) उस इंटरफ़ेस को दर्शाते हैं जिसे घटक प्रदान करता है। यह इंटरफ़ेस वर्गीकृत के वास्तविकीकरण संबंध के लिए संक्षिप्त रूप है।
- आवश्यक इंटरफ़ेस: अंत में केवल अर्धवृत्त वाले प्रतीक (जिन्हें सॉकेट भी कहा जाता है) उस इंटरफ़ेस को दर्शाते हैं जिसे घटक को आवश्यकता होती है। दोनों मामलों में, इंटरफ़ेस का नाम इंटरफ़ेस प्रतीक के पास ही रखा जाता है।

घटक आरेख उदाहरण – इंटरफ़ेस का उपयोग (ऑर्डर सिस्टम)

PlantUML समतुल्य:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' नीले रंगों से मेल खाने के लिए शैली विन्यास
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
skinparam interface {
BackgroundColor #66b3ff
BorderColor #004d99
}
' घटक
component "Order System" as OrderSystem
component "Customer Repository" as CustomerRepo
component "Inventory System" as InventorySystem
' इंटरफ़ेस और कनेक्शन
interface "Customer Lookup" as CustomerLookup
interface "Product Accessor" as ProductAccessor
OrderSystem -( CustomerLookup
CustomerLookup - CustomerRepo
OrderSystem --( ProductAccessor
ProductAccessor -- InventorySystem
@enduml

उप-प्रणालियाँ
वहउप-प्रणाली वर्गीकृत घटक वर्गीकृत का एक विशेष संस्करण है। इस कारण, उप-प्रणाली संकेतन तत्व घटक संकेतन तत्व के सभी समान नियमों को विरासत में प्राप्त करता है। एकमात्र अंतर यह है कि उप-प्रणाली संकेतन तत्व में कीवर्ड है<<उप-प्रणाली>> के बजाय<<घटक>>.

पोर्ट्स
पोर्ट्स को सिस्टम या घटक के किनारे के साथ एक वर्ग का उपयोग करके दर्शाया जाता है। एक पोर्ट अक्सर एक घटक के आवश्यक और प्रदान किए गए इंटरफ़ेस को प्रकट करने में मदद करने के लिए उपयोग किया जाता है, जो एक विशिष्ट अंतःक्रिया बिंदु के रूप में कार्य करता है।

संबंध
ग्राफिक रूप से, एक घटक आरेख शीर्षों और चापों का संग्रह है और आम तौर पर घटकों, इंटरफ़ेसों और विभिन्न संबंधों जैसे निर्भरता, समूहबद्धता, प्रतिबंध, सामान्यीकरण, संबंध और वास्तविकीकरण को शामिल करता है। इसमें नोट्स और प्रतिबंध भी हो सकते हैं।
| संबंध | संकेतन | विवरण |
|---|---|---|
| संबंध | ![]() |
एक संबंध (association) एक अर्थव्यवस्था संबंध को निर्दिष्ट करता है जो टाइप किए गए उदाहरणों के बीच हो सकता है। इसमें कम से कम दो सिरों होते हैं जो गुणों द्वारा दर्शाए जाते हैं, जिनमें से प्रत्येक उस सिर के प्रकार से जुड़ा होता है। |
| संरचना (Composition) | ![]() |
संयुक्त समूहबद्धता (Composite aggregation) समूहबद्धता की एक मजबूत रूप है जो आवश्यकता होती है कि एक भाग उदाहरण एक साथ अधिकतम एक संयुक्त में शामिल हो। यदि एक संयुक्त को हटा दिया जाता है, तो उसके सभी भाग सामान्यतः उसके साथ हटा दिए जाते हैं। |
| समूहबद्धता (Aggregation) | ![]() |
संबंध का एक प्रकार जिसके एक सिर को साझा समूहबद्धता के रूप में चिह्नित किया गया है, जिसका अर्थ है कि इसमें साझा समूहबद्धता है। |
| सीमा (Constraint) | ![]() |
एक शर्त या प्रतिबंध जो प्राकृतिक भाषा के पाठ या मशीन-पठनीय भाषा में व्यक्त किया जाता है, किसी तत्व के कुछ अर्थों की घोषणा करने के उद्देश्य से। |
| निर्भरता (Dependency) | ![]() |
एक निर्भरता संकेत देती है कि एक एकल या मॉडल तत्वों का समूह अपनी विनिर्देश या कार्यान्वयन के लिए अन्य मॉडल तत्वों की आवश्यकता रखता है। निर्भर तत्व अर्थव्यवस्था या संरचनात्मक रूप से आपूर्तिकर्ता तत्वों पर निर्भर होते हैं। |
| सामान्यीकरण (Generalization) | ![]() |
एक अधिक सामान्य वर्गीकारक और एक अधिक विशिष्ट वर्गीकारक के बीच वर्गीकरण संबंध। विशिष्ट वर्गीकारक का प्रत्येक उदाहरण सामान्य वर्गीकारक का एक अप्रत्यक्ष उदाहरण भी होता है, जिसके गुणों को विरासत में प्राप्त करता है। |
व्यावहारिक अनुप्रयोग
1. स्रोत कोड का मॉडलिंग
- या तो अग्र या व्युत्क्रम इंजीनियरिंग द्वारा, रुचि के स्रोत कोड फाइलों के समूह की पहचान करें और उन्हें ” के रूप में स्टीरियोटाइप किया गया घटक के रूप में मॉडल करें।
<<file>>. - बड़े सिस्टम के लिए, स्रोत कोड फाइलों के समूह को दिखाने के लिए पैकेज का उपयोग करें।
- एक टैग किया गया मान प्रकट करने पर विचार करें जो स्रोत कोड फाइल के संस्करण नंबर, इसके लेखक और अंतिम बार बदलने की तारीख जैसे जानकारी को दर्शाता है। इस टैग के मान को प्रबंधित करने के लिए टूल का उपयोग करें।
- इन फाइलों के बीच संकलन निर्भरताओं को निर्भरताओं का उपयोग करके मॉडल करें। फिर से, इन निर्भरताओं को उत्पन्न और प्रबंधित करने में सहायता के लिए टूल का उपयोग करें।
घटक उदाहरण – जावा स्रोत कोड

घटक आरेख उदाहरण – संस्करण के साथ C++ कोड

स्रोत कोड मॉडलिंग के लिए PlantUML समतुल्य:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' नीले रंगों से मिलान करने के लिए स्टाइल कॉन्फ़िगरेशन
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
' घटक पंक्ति 1 (संस्करण)
component "signal.h (v3.5)" as signal35
component "signal.h (v4.0)" as signal40
component "signal.h (v4.1)" as signal41
' घटक पंक्ति 2
component "interp.cpp" as interp
component "signal.h (v5.0)" as signal50
' घटक पंक्ति 3
component "irq.h" as irq
component "device.cpp" as device
' कनेक्शन और लेआउट ओवरराइड
' शीर्ष पंक्ति बाएं-संकेतित माता-पिता
signal40 .left.> signal35 : <>
signal41 .left.> signal40 : <>
' ऊर्ध्वाधर निर्भरताएं
interp .up.> signal41
signal50 .up.> signal41
interp .down.> irq
device .up.> interp
@enduml
2. एक निष्पाद्य रिलीज का मॉडलिंग
- उस घटकों के समुच्चय की पहचान करें जिन्हें आप मॉडल करना चाहते हैं। आमतौर पर, इसमें एक नोड पर रहने वाले कुछ या सभी घटकों, या सिस्टम के सभी नोड्स पर इन घटकों के समुच्चयों के वितरण को शामिल करना होगा।
- इस समुच्चय में प्रत्येक घटक के स्टीरियोटाइप पर विचार करें। अधिकांश सिस्टमों के लिए, आपको घटकों के कुछ ही अलग-अलग प्रकार (जैसे एक्सेक्यूटेबल, लाइब्रेरी, टेबल, फाइलें और दस्तावेज़) मिलेंगे। आप इन स्टीरियोटाइप के लिए दृश्य संकेत प्रदान करने के लिए UML के विस्तारणीय तंत्रों का उपयोग कर सकते हैं।
- इस समुच्चय में प्रत्येक घटक के लिए, अपने पड़ोसियों के साथ इसके संबंध पर विचार करें। आमतौर पर, इसमें कुछ घटकों द्वारा निर्यात (वास्तविक) किए गए और फिर अन्य घटकों द्वारा आयात (उपयोग) किए गए इंटरफ़ेस शामिल होंगे। यदि आप अपने सिस्टम में सीमाओं को प्रकट करना चाहते हैं, तो इन इंटरफ़ेस को स्पष्ट रूप से मॉडल करें। यदि आप अपने मॉडल को उच्चतर अमूर्तता स्तर पर चाहते हैं, तो घटकों के बीच केवल निर्भरता दिखाकर इन संबंधों को छोड़ दें।

एक्सेक्यूटेबल रिलीज़ के लिए PlantUML समतुल्य:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
' आधुनिक नीले स्टाइलिंग को आपके डायग्राम स्टाइल से मेल खाने के लिए
skinparam component {
BackgroundColor #5cadff
BorderColor #2b7fff
FontColor black
RoundCorner 10
}
skinparam interface {
BackgroundColor #5cadff
BorderColor #2b7fff
}
' घटक
component "path.dll" as path
component "collision.dll" as collision
component "driver.dlln(version = "B.2.1.3")" as driver
' इंटरफ़ेस
interface IDrive
interface ISelfTest
' लेआउट और साफ कनेक्शन
path .right.> collision
' इंटरफ़ेस के ऊर्ध्वाधर स्टैकिंग को बल देने के लिए छिपे हुए लेआउट का उपयोग करें
IDrive -[hidden]down- ISelfTest
' ड्राइवर को अपने इंटरफ़ेस को बाईं ओर साफ तरीके से जोड़ें
driver -left- IDrive
driver -left- ISelfTest
' साफ, सीधा ऊर्ध्वाधर निर्भरता रेखा
path .down.> IDrive
@enduml
3. भौतिक डेटाबेस का मॉडलिंग
- अपने मॉडल में उन कक्षाओं की पहचान करें जो आपके तार्किक डेटाबेस स्कीमा का प्रतिनिधित्व करते हैं।
- इन कक्षाओं को टेबल में मैप करने के लिए एक रणनीति चुनें। आपको अपने डेटाबेस के भौतिक वितरण पर भी विचार करना होगा। आपकी मैपिंग रणनीति उस स्थान से प्रभावित होगी जहाँ आप अपने डेटा को अपने डिप्लॉय किए गए सिस्टम पर रहना चाहते हैं।
- अपने मैपिंग को दृश्यमान करने, निर्दिष्ट करने, निर्मित करने और दस्तावेज़ीकृत करने के लिए, एक घटक आरेख बनाएं जिसमें घटक शामिल हों जो “<<table>>” के रूप में स्टीरियोटाइप किए गए हैं।
<<table>>. - जहाँ संभव हो, अपने तार्किक डिज़ाइन को भौतिक डिज़ाइन में परिवर्तित करने में आपकी सहायता के लिए टूल्स का उपयोग करें।

भौतिक डेटाबेस के लिए PlantUML समतुल्य:
@startuml
skinparam componentStyle uml2
skinparam BackgroundColor white
skinparam DefaultFontName Arial
skinparam linetype ortho
' नीले रंगों से मेल खाने के लिए स्टाइल कॉन्फ़िगरेशन
skinparam component {
BackgroundColor #66b3ff
BorderColor #004d99
FontColor black
}
' पैरेंट घटक
component "school.db" as school_db
' चिल्ड घटक
component "course" as course
component "department" as dept
component "instructor" as instructor
component "school" as school
component "student" as student
' क्षैतिज संरेखण पंक्ति को बल देने के लिए छिपे हुए लिंक
course -[hidden]right- dept
dept -[hidden]right- instructor
instructor -[hidden]right- school
school -[hidden]right- student
' संघटन संबंध (काला हीरा)
school_db *-- course
school_db *-- dept
school_db *-- instructor
school_db *-- school
school_db *-- student
@endif 
निष्कर्ष
UML घटक आरेख उन वास्तुकारों और डेवलपर्स के लिए अत्यंत आवश्यक हैं जिन्हें सिस्टम की संरचनात्मक अखंडता को संचारित करने की आवश्यकता होती है। घटकों, इंटरफ़ेस और उनके संबंधों पर ध्यान केंद्रित करके, ये आरेख यह स्पष्ट रूप से दर्शाते हैं कि सॉफ़्टवेयर मॉड्यूल एक-दूसरे के साथ कैसे इंटरैक्ट करते हैं, एक-दूसरे पर निर्भर होते हैं और एक-दूसरे के साथ एकीकृत होते हैं।
AI-चालित टूल्स जैसे Visual Paradigm का AI चैटबॉट और कोड-आधारित मॉडलिंग के साथ VPasCode और PlantUML, इन आरेखों को बनाना और बनाए रखना अधिक कुशल और सुलभ हो गया है। चाहे आप स्रोत कोड निर्भरताओं का मॉडलिंग कर रहे हों, निष्पादन योग्य रिलीजों की योजना बना रहे हों, या भौतिक डेटाबेस स्कीमा डिजाइन कर रहे हों, घटक आरेख स्केलेबल और बनाए रखने योग्य सिस्टम बनाने के लिए आवश्यक स्पष्टता प्रदान करते हैं।
आज ही इन टूल्स का उपयोग शुरू करें ताकि आपकी वास्तुकला दस्तावेज़ीकरण को बेहतर बनाया जा सके और आपका विकास कार्यप्रवाह सरल हो सके।
यह पोस्ट Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Việt Nam, 简体中文 और 繁體中文 में भी उपलब्ध है।

















