2015-08-18 7 views
5

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

only the class structure

मेरी यूएमएल आरेख में, मैं उजागर करने के लिए कैसे इन वर्गों (और इंटरफेस) अलग binaries को वितरित किया जाता है, ताकि क्या स्पष्ट करने के लिए में चाहते हैं सिस्टम के कुछ हिस्सों को बिना किसी संकलन के बदला जा सकता है।

अब, जबकि मुझे पता है कि यूएमएल काफी कुछ छूट प्रदान करता है और यूएमएल का मुख्य बिंदु एक कठोर नोटेशन पर चिपक नहीं रहा है, लेकिन इसे समझने के तरीके में जानकारी व्यक्त कर रहा है, मुझे अभी भी उम्मीद है कि वहां एक सामान्य अभ्यास होगा यह परिदृश्य जानकारी है कि मैं का एक UML component diagram उपयोग कर रहा है सोचा था का प्रतिनिधित्व करने के


एक सरल तरीके से। Wikipedia cites परिभाषा

एक प्रणाली का एक मॉड्यूलर हिस्सा, जो इसकी सामग्री को समाहित करता है और जिसका अभिव्यक्ति इसके पर्यावरण के भीतर बदलने योग्य है।

एक घटक के लिए। यह फिट लगता है, यह देखते हुए कि मैं जो दिखाना चाहता हूं वह एक प्रतिस्थापन योग्य घटक है। इसलिए, घटकों में से ऊपर प्रकार रखकर, मैं इस पर पहुंचने:

class structure in a component diagram

हालांकि यह सुबोध है, मैं थोड़ा शक है इस स्वीकार्य अंकन है, यह देखते हुए कि लगभग सभी संसाधनों (aforementioned Wikipedia article सहित) पर घटक आरेख जो मुझे मिल सकते हैं, आवश्यक और प्रदान किए गए इंटरफेस को परिभाषित करने पर एक बड़ा जोर डालते हैं। औपचारिक रूप से, ऐसा लगता है कि मुझे आरेख में हर जगह छोटे आयताकार बंदरगाहों या लॉलीपॉप-आकार वाले इंटरफेस जोड़ना चाहिए जहां संबंध घटकों के तत्वों को जोड़ते हैं। मुझे उस संभावना की तरह काफी पसंद नहीं है, क्योंकि यह कुछ हद तक बोझिल लगता है, और इससे भी महत्वपूर्ण बात यह है कि यह बिना अतिरिक्त जानकारी प्रदान किए ग्राफिक को अव्यवस्थित करेगा।


वैकल्पिक रूप से, package एक स्वीकार्य नोटेशन हो सकता है। मेरे उद्देश्य क्या Wikipedia

रूप में संबंधित लेख में दूसरी सूची में वर्णन करता है जब स्वामित्व और/या संभावनाओं का पुन: उपयोग के अनुसार समूह के घटक मॉडल, उपयोग संकुल के आयोजन घटकों के साथ मैच के लिए लगता है।

एक पैकेज चित्र के रूप में विचार करेंगे इस प्रकार है:

using packages to represent assemblies

दूसरी ओर, मैं थोड़ा सावधान कि पैकेज अंकन का उपयोग वास्तविक में-कोड पैकेज के साथ भ्रम की स्थिति पैदा हो सकती है कर रहा हूँ (नामस्थान) , जो असेंबली में वास्तव में ऑर्थोगोनल हैं।दरअसल, there are resources जो यूएमएल पैकेज को जावा पैकेज में 1: 1 मैपिंग के रूप में समझता है, जो कि मैं व्यक्त करने की कोशिश नहीं कर रहा हूं (तर्क के लिए, सभी चित्रित प्रकार बहुत ही नामस्थान के भीतर बहुत अच्छी तरह से रह सकते हैं, MyGreatSystem.Plugins जैसे कुछ)।


केवल अन्य यूएमएल आरेख प्रकार है कि कुछ हद तक उपयुक्त हो सकता है एक deployment diagram हो सकता है, लेकिन इस तरह के Wikipedia से एक के रूप में परिभाषाओं यह बजाय स्पष्ट कर दूं कि इस तरह के एक चित्र में एक node या तो एक भौतिक मशीन, या एक है निष्पादन पर्यावरण, दोनों अलग-अलग बाइनरी में होने से स्पष्ट रूप से अलग हैं।


एक आखिरी विकल्प है कि मैं है के बारे में सोच सकता है यूएमएल टिप्पणी के साथ प्रकार जोड़ने के द्वारा बाइनरी फ़ाइलें संकेत:

using comments to indicate assemblies

बहरहाल, यह अधिक मेरे लिए एक समाधान की तरह लगता है, और मैं महसूस करें कि अतिरिक्त नोड्स और किनारों (के प्रकार के अंदर असेंबली, जहां वे वास्तव में हैं) के बजाय चित्र कम पठनीय बनाता है।


उचित यूएमएल तरह से संप्रेषित करने के लिए जो प्रकार तैयार उत्पाद में जो बाइनरी में रहते हैं क्या है?

: कक्षाओं और इंटरफेस के लिए कोई भी सदस्य यहां दिखाए जाते हैं, क्योंकि वे समय के लिए प्रासंगिक नहीं हैं। यह मेरे अंतिम आरेख में समान हो सकता है या नहीं भी हो सकता है, क्योंकि फोकस ज्यादातर आंतरिक आंतरिक संरचना पर निर्भर नहीं है।

: मेरे मामले में .NET असेंबली, लेकिन सवाल अन्य वातावरण/प्रौद्योगिकियों के लिए समान रूप से मान्य है।

+0

क्या कोई डाउनवोट समझाएगा, कृपया? –

+1

कोई भी वोट डाउन ट्रॉल्स के लिए कभी भी उपयोग नहीं किया जाता है ... –

उत्तर

1

आप घटकों के बीच एक अंतर है, और बाइनरी है कि वे "प्रकट" कर रहे हैं में बनाना चाहिए।

घटक व्यवहार के तार्किक समूहीकरण है। वास्तविक भौतिक बाइनरी असेंबली यूएमएल में एक प्रकट आर्टिफैक्ट के रूप में दर्शाया गया है।

इस के लिए सबसे घना अंकन पृष्ठ पर आंकड़ा 11.40 पर यूएमएल specificaton वी 2.5 (बीटा) में पाया जा सकता 221

Dense Component Notation

घटक और अन्य के बीच सही संबंध का उपयोग सुनिश्चित करें तत्वों।

कुछ वैकल्पिक नोटेशन भी उपयोग किए जा सकते हैं। उसी यूएमएल 2 से।5 चश्मा: enter image description here

+0

हम्म, लेकिन मैं जो दिखाना चाहता हूं * है * भौतिक बाइनरी असेंबली। अंतिम उपयोगकर्ता के लिए, एक भौतिक बाइनरी असेंबली एक घटक का गठन करती है, क्योंकि अंतिम उपयोगकर्ता संगत प्रकारों को प्रतिस्थापित और जोड़ सकते हैं, जब तक वे संगत प्रकार होते हैं। सार्वजनिक प्रकार का सेट घटक का इंटरफ़ेस है। और उन प्रकारों, ज्यादातर कक्षाएं, वही हैं जो मैं अपने सदस्यों के प्रासंगिक सबसेट के साथ-साथ प्रत्येक असेंबली की सामग्री के रूप में दिखाना चाहूंगा। विनिर्देश बीटा 1 से चित्र 11.40 आप दिख रहे हैं जैसे कि यह केवल प्रकार के नामों की एक सूची है (?) –

+0

शारीरिक बाइनरी असेंबली कलाकृतियों हैं, घटक नहीं। नोटेशन में कुछ विकल्प हैं, लेकिन इसके पीछे का मॉडल वही रहता है। –

+0

ठीक है, इसलिए एक विशेष प्लगइन इंटरफ़ेस के अनुरूप प्रतिस्थापन योग्य संकलित फ़ाइलें ताकि उन्हें अंतिम उपयोगकर्ता द्वारा प्रतिस्थापित किया जा सके, वे घटक नहीं हैं, घटक नहीं। उस स्थिति में, मुझे अभी भी यकीन नहीं है कि उपयोग करने के लिए क्या संकेत है - मैं किसी प्रकार का एक बॉक्स (एक असेंबली का प्रतिनिधित्व करता हूं) जिसमें * प्रासंगिक वर्ग शामिल हैं, यह इंगित करने के लिए कि संबंधित भौतिक असेंबली शारीरिक रूप से * उनमें शामिल हैं कक्षाएं। कम से कम [पीएमसी/2013-09-05 संस्करण यूएमएल विनिर्देश] (http://www.omg.org/spec/UML/2.5/Beta2/) में, ऐसा लगता है कि आर्टिफैक्ट तत्व टिप्पणियों की तरह प्रयोग किया जाता है मेरे आखिरी उदाहरण में, यानी ... –

1

मैं संकुल का उपयोग कर आपके पहले आरेख बनाम के साथ बहुत बढ़िया हूं। घटक तत्वों को अच्छी तरह से रख सकते हैं (यूएमएल स्पेक के अनुसार यह PackageableElements से बना है)। पठनीयता के लिए मैं Core Application बढ़ा दूंगा ताकि हीरा पूरी तरह से अंदर हो। तीसरा विकल्प बस यही है: एक विकल्प। मैं पहले व्यक्ति को पसंद करूंगा।

संबंधित मुद्दे

 संबंधित मुद्दे