2009-06-05 9 views
28

को चित्रित करने के लिए एक निष्क्रिय यूएमएल दृष्टिकोण है, मुझे अपने सॉफ़्टवेयर का वर्णन करने के लिए यूएमएल आरेखों का उपयोग करने का शौक है। अधिकांश मामलों में आरेख मेरे स्वयं के उपयोग के लिए हैं और मैं उन्हें कोड, इंटरैक्शन इत्यादि के अधिक शामिल टुकड़ों के लिए उपयोग करता हूं, जहां मुझे भविष्य में उन पर वापस देखने में सक्षम होने से लाभ होगा।क्या थ्रेड

एक चीज जो मैंने खुद को कुछ अलग तरीकों से पाया है वह आरेखण धागे है। उनकी प्रकृति से धागे कोड के अधिक शामिल टुकड़ों में पॉप अप करते हैं और उनका ट्रैक रखने के लिए अक्सर मेरे डिजाइन दस्तावेजों का प्राथमिक उद्देश्य होता है।

अतीत में मैंने एक नए धागे के निर्माण को दिखाने के लिए एक अनुक्रम आरेख में एक प्रतीक का उपयोग किया है, लेकिन कुछ आरेखों पर वापस देखकर यह कभी-कभी किसी ऑब्जेक्ट के जीवनकाल के बीच संदिग्ध होता है - जो अनुक्रम आरेख के लिए होते हैं - और धागे जीवन काल। क्या यूएमएल में धागे को शामिल करने के लिए एक बेहतर तरीका है?

+0

http://stackoverflow.com/questions/1643733/how-to-illustrate-multiple-threads-in-sequence-diagram – feuGene

उत्तर

11

मैं एक आरेख तैयार करने में कामयाब रहा जो इसे चित्रित करने के समय मुझे समझ में आता है। बुनियादी आधार यह है कि मैंने ग्रेड उदाहरणों का प्रतिनिधित्व करने वाले भूरे रंग के बक्से को ढीला जीवनकाल का प्रतिनिधित्व करने वाले नीले रंग के बक्से के साथ ओवरलैड किया है। मुख्य बात यह है कि मुझे ट्रैक रखने की सुविधा मिलती है यह जानना कि मैं किस विधि को निष्पादित कर रहा हूं जब मैं कुछ तरीकों को कॉल करता हूं।

इसमें कोई संदेह नहीं है कि थ्रेड और क्लास मॉडलिंग करने के लिए बेहतर और अधिक सहज तरीके हैं। मेरे लिए सफलता का उपाय यह है कि क्या मेरा स्वयं का चित्र अभी भी ट्रैक के नीचे 6 महीने की समझ के समान स्तर देता है।

+0

को धक्का दिया गया है, यह दृष्टि से समझ सकता है, लेकिन मॉडलिंग नहीं करता है। ओवरले में कोई यूएमएल अर्थ नहीं है। दस्तावेज़ीकरण के लिए आपकी जरूरतों को पूरा करने के लिए, अगर यह बहुत अच्छा काम करता है। –

+1

"लेकिन मॉडलिंग यह नहीं करता" - आपका मतलब है: लेकिन यूएमएल मॉडलिंग यह नहीं करता है। मैंने आपके द्वारा प्रदान किए गए उदाहरणों पर ध्यान दिया लेकिन कुछ भी फिट नहीं हुआ। मुझे संदेह है कि यूएमएल मानक की कल्पना होने पर धागे इतने बड़े मुद्दे नहीं थे। – sipwiz

+2

मैं सिपविज़ के साथ हूं - यूएमएल का शब्द "मॉडलिंग" नहीं है। मुझे इस आरेख की तरह है। –

2

मुझे किसी तरह से पता नहीं है, लेकिन अनुक्रम आरेख का उपयोग पूरी तरह से अनुचित नहीं लगता है, क्योंकि एक धागा Thread (या समान) वर्ग के रूप में लागू कई भाषाओं में है।

सबसे अधिक यूएमएल-संगत तरीका शायद कुछ प्रकार की एनोटेशन जोड़ना होगा जो दर्शाता है कि 'ऑब्जेक्ट' थ्रेड का प्रतिनिधित्व करता है।

+1

हां, मैं थ्रेड सिंक्रनाइज़ेशन का वर्णन करने के पहले अनुक्रम आरेख का उपयोग करता हूं। मुझे बस एक और आरेख नाम दिया गया है [टाइमिंग आरेख] (http://www.visual-paradigm.com/support/documents/vpumluserguide/94/200/6715_drawingtimin.html), बहुत रोचक। – Felix

0

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

3

यूएमएल गतिविधि आरेखों में कांटा है और तर्क के समानांतर प्रवाह दिखाने के लिए तत्वों में शामिल हो गए हैं।

+0

गतिविधि आरेखों को आम तौर पर एक व्यावसायिक प्रक्रिया के मॉडल के रूप में समझा जाता है। जो मुझे अधिक दिलचस्पी है वह मेरे सॉफ़्टवेयर की आंतरिक कार्यप्रणाली का मॉडलिंग कर रहा है। हालांकि मैं आपका मुद्दा लेता हूं, एक गतिविधि आरेख के कुछ पहलू हैं जो सॉफ्टवर धागे मॉडलिंग में उपयोगी होंगे। – sipwiz

+1

@sipwiz: यह सच नहीं है कि गतिविधि आरेखों का उपयोग केवल व्यावसायिक प्रक्रियाओं के लिए किया जाता है। कृपया मेरा जवाब देखें। –

9

गतिविधि, अनुक्रम, और राज्य आरेख सभी थ्रेड व्यवहार दिखाने के सही तरीके हैं।

पहला: (बनाम की टिप्पणियों के लिए) यूएमएल, स्थैतिक संरचना, जैसे आप इसे डालते हैं, और व्यवहार में आरेखों या मॉडलिंग तत्वों के दो सेट हैं। कोई भी पुस्तक आपको विभाजन को समझने में मदद करेगी, आम तौर पर सामग्रियों/टीओसी में, इसके अतिरिक्त मार्टिन फाउलर के यूएमएल डिस्टिल्ड के पेज 11 पर मेरी राय में यूएमएल शुरू करने के लिए एक डिफैक्टो मानक डिस्टिल्ड किया जा सकता है।

2: (sipwiz के सवाल और टिप्पणी करने के लिए) गतिविधि चित्र आमतौर पर व्यापार प्रक्रिया मॉडल करने के लिए नहीं समझा गया है, वे फिर भी उस के लिए इस्तेमाल किया जा सकता है, और सबसे उदाहरण या सरल ट्यूटोरियल एक व्यापार के दृष्टिकोण से यह दृष्टिकोण होगा। अपने विकल्पों पर

चर्चा धागे मॉडल करने के लिए:

गतिविधि आरेख - forking और एक बार और उपयोग लाइनों का उपयोग करके संगामिति निर्दिष्ट करने के लिए अनुमति देता है। ध्यान दें कि नीचे कोई उदाहरण व्यवसाय प्रक्रिया नहीं है, example। अधिकांश लोग इन, व्यवसाय, प्रबंधन और डेवलपर्स को पढ़ सकते हैं, हालांकि कभी-कभी उन्हें विस्तार की कमी हो सकती है या गन्दा हो सकता है।

अनुक्रम संपर्क चित्र - एक ही पोस्ट, example में, आप अनुक्रम आरेख आप एक लेबल "बराबर" के साथ में चलाने योग्य व्यवहार मुक्केबाजी से एक दृश्य के भीतर समानांतर व्यवहार निर्दिष्ट करने की अनुमति देते हैं देखेंगे, यह पाठक को दिखाने के लिए उपयोगी है क्या विधियों को समानांतर, यानी, विभिन्न धागे द्वारा बुलाया जा सकता है या कहा जाना चाहिए। यह वह तरीका है जिसका उपयोग मैं विस्तृत डेवलपर के लिए करता हूं जैसे ऑब्जेक्ट बनाने के आसपास चर्चा।

राज्य आरेख - राज्य चार्ट जैसे गतिविधि एक बार और उपयोग लाइनों का उपयोग करके समेकन की अनुमति देता है।

नोट: ये एक विशिष्ट थ्रेड मॉडल नहीं होगी और यह सटीक लिफ्ट चक्र है, के रूप में है कि, मॉडलिंग के उदाहरण/रन-टाइम स्तर का हिस्सा है कि अगर यह मैं क्या आप अपने प्रश्न को स्पष्ट करना चाहते हैं और जवाब देंगे । मैं इसे उपरोक्त में से किसी एक का उपयोग करके मॉडल करूँगा क्योंकि एमडीए/यूएमएल विशेषज्ञ के अलावा कोई भी आपको कॉल नहीं करेगा, और आप एक चल रहे सिस्टम को नहीं बना रहे हैं।

इसके अलावा: कृपया ध्यान दें कि अधिकतर विवरण अधिकांश यूएमएल पुस्तकों में पाए जा सकते हैं। भी लीवरेज: http://www.jguru.com/faq/view.jsp?EID=56322

8

पारंपरिक रूप से थ्रेडिंग को पेट्री नेट्स का उपयोग करके आरेखण से चित्रित किया गया है। रॉब मार्टिन में यूएमएल में मल्टीथ्रेडिंग पर an article है जो आपको उपयोगी मिल सकता है।

अपडेट- बस याद किया गया है कि आप गतिविधि आरेखों में कांटे के साथ धागे का प्रतिनिधित्व कर सकते हैं- मैंने find something that explains this में प्रबंधित किया है।

पेट्री नेट्स के लिए कोई भी निःशुल्क ट्यूटोरियल ढूंढना बहुत मुश्किल है, हालांकि मुझे पता है कि पेट्री नेट मॉडलिंग समेकन के लिए अच्छे हैं, इसलिए मैंने Google को "निर्माता-उपभोक्ता पेट्री नेट्स" (मेरी पसंदीदा थ्रेडिंग चीज़) और found this किया।

मुझे कुछ स्लाइड भी मिली हैं जो पेट्री नेट modeling a Semaphore दिखाती हैं।

+2

आपका "ऐसा कुछ जो बताता है" लिंक अब –

2

यूएमएल को यूएमएल सुपरस्ट्रक्चर द्वारा परिभाषित किया गया है, आप इसे http://www.omg.org/spec/UML पर पा सकते हैं। यदि आप विनिर्देश पढ़ते हैं तो आप पाते हैं कि एक यूएमएल कक्षा सक्रिय हो सकती है। एक सक्रिय कक्षा एक वर्ग है जिसमें मेटा-विशेषता है सक्रिय सक्रिय पर सेट है। यह भी अलग-अलग चित्रित किया गया है। एक सक्रिय वर्ग का एक ऑब्जेक्ट उदाहरण स्वचालित रूप से "वर्गीकृत व्यवहार" निष्पादित करता है। किसी भी व्यवहार के लिए आप इसे उस गतिविधि के माध्यम से परिभाषित कर सकते हैं जिसमें आप एसिंक्रोनस सिग्नल (AcceptEventActions) के लिए प्रतीक्षा करते हैं और विधियों (CallOperationAction) या अन्य व्यवहार (CallBehaviorActions) को आमंत्रित करते हैं। यूएमएल में यह सक्रिय वस्तुओं का मॉडल कैसे किया जाता है। आपको बस यूएमएल विनिर्देश पढ़ना होगा।

1

गतिविधि आरेख कांटे के साथ आपके सॉफ़्टवेयर की आंतरिक कार्यप्रणाली का मॉडल करेगा और धागे का प्रतिनिधित्व करने के लिए जुड़ जाएगा। बिल्कुल यह पता लगाने के लिए कि कृपया इसे ठीक से कैसे मॉडल करें, कृपया कॉनराड बॉक की उत्कृष्ट श्रृंखलाओं की श्रृंखला देखें। Here वह आलेख है जो कांटे और जुड़ता है, लेकिन आपको "रंगीन पेट्री नेट" का उपयोग करके उचित तरीके से मॉडल करने का तरीका जानने के लिए श्रृंखला में पहले लेख पर वापस लिंक का पालन करना चाहिए। ऐसा नहीं है कि आप कैसे सोचते हैं (और यह बहुत आसान है)!

एक नया, प्रक्रिया में Alf नामक एक भाषा है कि गतिविधि आरेख के लिए एक और अधिक सुविधाजनक सतह अंकन प्रदान करता है और कोड का प्रतिनिधित्व करने के लिए लक्षित है के लिए OMG पर मानक नहीं है।कल्पना से:

एक कार्रवाई भाषा के एक प्राथमिक लक्ष्य एक व्यापक मॉडल है कि मुख्य रूप से यूएमएल के सामान्य ग्राफिकल अंकन का प्रयोग करके प्रतिनिधित्व किया भीतर निष्पादन व्यवहार निर्दिष्ट करने के लिए सतह अंकन के रूप में कार्य करने के लिए है। उदाहरण के लिए, इसमें राज्य मशीनों पर कक्षाओं या संक्रमण प्रभाव व्यवहार के संचालन के तरीके शामिल हो सकते हैं।

प्रोग्रामर के लिए, शायद आप अल्फ से अधिक सहज नहीं हो सकते हैं। और यह पूरी तरह से यूएमएल गतिविधि आरेखों में परिवर्तित हो जाएगा।

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