यूएमएल का उपयोग करने के विभिन्न तरीके हैं। मार्टिन फाउलर इन यूएमएल मोड्स को कॉल करते हैं और चार की पहचान करते हैं: यूएमएल नोट्स के रूप में , यूएमएल स्केच के रूप में , यूएमएल ब्लूप्रिंट के रूप में , और यूएमएल एक प्रोग्रामिंग भाषा के रूप में ।
एक प्रोग्रामिंग भाषा के रूप में यूएमएल ने वास्तव में कभी नहीं लिया। इस क्षेत्र में विभिन्न नामों के तहत कुछ काम किया गया है, जैसे कि मॉडल ड्रिवेन आर्किटेक्चर या मॉडल आधारित सॉफ्टवेयर इंजीनियरिंग। इस दृष्टिकोण में, आप अपने सॉफ़्टवेयर सिस्टम के अत्यधिक विस्तृत मॉडल बनाते हैं और उन मॉडलों से कोड उत्पन्न करते हैं। कुछ उपयोग के मामले हो सकते हैं जहां यह दृष्टिकोण उपयोगी है, लेकिन सामान्य सॉफ़्टवेयर के लिए नहीं और विशेष रूप से बड़ी कंपनियों के बाहर नहीं जो उन उपकरणों को खर्च कर सकते हैं जो इस दृष्टिकोण को शक्ति देते हैं। यह एक समय लेने वाली प्रक्रिया भी है - मैं एक वर्ग के लिए तेजी से कोड टाइप कर सकता हूं जितना कि मैं इसे लागू करने के लिए आवश्यक सभी ग्राफिकल मॉडल बना सकता हूं।
एक ब्लूप्रिंट के रूप में यूएमएल अक्सर "बड़े डिजाइन सामने" परियोजना का संकेत है । यह होना जरूरी नहीं है। मॉडल को एक विशेष वेतन वृद्धि के लिए पूरी तरह से वर्णित किया जा सकता है, साथ ही साथ। लेकिन विचार यह है कि समय यूएमएल मॉडल के रूप में एक डिजाइन बनाने में व्यतीत किया जाता है जो कोड में बदलने के लिए किसी को सौंप दिया जाता है। सभी विवरणों को वर्तनी में बदल दिया गया है और कोड में रूपांतरण अधिक यांत्रिक हो जाता है।
नोट्स के रूप में यूएमएल स्केच और यूएमएल प्रकृति में समान हैं, लेकिन जब वे उपयोग किए जाते हैं, तो इसके आधार पर भिन्न होते हैं। UML का उपयोग स्केच के रूप में करने का अर्थ है कि आप UML नोटेशन का उपयोग करके डिज़ाइनों को स्केच करेंगे, लेकिन आरेख पूर्ण नहीं होने की संभावना है, लेकिन डिज़ाइन के उन विशेष पहलुओं पर ध्यान केंद्रित करेंगे जिन्हें आपको दूसरों के साथ संवाद करने की आवश्यकता है। यूएमएल नोट्स के समान है, लेकिन कोड आधार को समझने में सहायता के लिए कोड के बाद मॉडल बनाए जाते हैं।
जब आप इस पर विचार कर रहे होते हैं, तो मुझे लगता है कि किसी भी तरह के मॉडलिंग अंकन के लिए उपरोक्त सब कुछ सच है। आप इसे इकाई-संबंध आरेख, IDEF आरेख, व्यवसाय प्रक्रिया मॉडलिंग अंकन, और इसी तरह लागू कर सकते हैं । मॉडलिंग संकेतन के बावजूद, आप इसे चुन सकते हैं जब आप इसे लागू करते हैं (एक विनिर्देशन के रूप में पहले, एक वैकल्पिक प्रतिनिधित्व के रूप में) और कितना विस्तार (प्रमुख पहलुओं के लिए पूर्ण विवरण)।
इसका दूसरा पक्ष ओपन सोर्स कल्चर है।
अक्सर, एक व्यक्ति (या, आज, एक कंपनी) का सामना कर रहा है एक समस्या को हल करने के लिए ओपन सोर्स प्रोजेक्ट शुरू होता है। यदि इसे किसी व्यक्ति द्वारा लॉन्च किया जा रहा है, तो डेवलपर्स की संख्या 1. इस मामले में, संचार ओवरहेड बहुत कम है और आवश्यकताओं और डिज़ाइन के बारे में संवाद करने की बहुत कम आवश्यकता है। एक कंपनी में, एक छोटी टीम होने की संभावना है। इस उदाहरण में, आपको डिज़ाइन संभावनाओं को संप्रेषित करने और ट्रेड-ऑफ़ पर चर्चा करने की आवश्यकता होगी। हालांकि, एक बार जब आप अपने डिजाइन निर्णय ले लेते हैं, तो आपको अपने मॉडल को बनाए रखने की आवश्यकता होती है क्योंकि समय के साथ आपका कोड आधार बदल जाता है या उन्हें फेंक देता है। में चंचल मॉडलिंग शर्तों, "दस्तावेज़ लगातार" और एक बनाए रखने के "सूचना के एक स्रोत" ।
एक तरफ संक्षिप्त रूप से, यह विचार है कि कोड डिजाइन है और यह कि मॉडल डिजाइन के केवल वैकल्पिक विचार हैं। जैक रीव्स ने डिज़ाइन के रूप में कोड पर तीन निबंध लिखे , और साथ ही C2 विकी पर भी विचार-विमर्श हुआ, उन विचारों पर चर्चा की कि स्रोत कोड डिज़ाइन है , डिज़ाइन स्रोत कोड है , और स्रोत कोड और मॉडलिंग है । यदि आप इस विश्वास की सदस्यता लेते हैं (जो मैं करता हूं), तो स्रोत कोड वास्तविकता है और किसी भी आरेख को कोड को समझने के लिए मौजूद होना चाहिए और, इससे भी महत्वपूर्ण बात यह है कि कोड क्या है, इसके पीछे तर्क है।
एक सफल ओपन सोर्स प्रोजेक्ट, जैसा कि आप उल्लेख करते हैं, का दुनिया भर में योगदान है। ये योगदानकर्ता उन तकनीकों में तकनीकी रूप से सक्षम होते हैं जो सॉफ्टवेयर को शक्ति प्रदान करते हैं और संभवत: सॉफ़्टवेयर के उपयोगकर्ता भी होते हैं। योगदानकर्ता वे लोग हैं जो स्रोत कोड को आसानी से मॉडल के रूप में पढ़ सकते हैं, और कोड को समझने के लिए टूल (आईडीई और रिवर्स इंजीनियरिंग टूल) का उपयोग कर सकते हैं (यदि वे ज़रूरत महसूस करते हैं, तो मॉडल बनाना भी शामिल है)। वे अपने दम पर प्रवाह के रेखाचित्र भी बना सकते हैं।
फाउलर ने जिन चार मोड्स का वर्णन किया है, मुझे नहीं लगता कि आपको कहीं भी एक ओपन सोर्स प्रोजेक्ट, या बहुत अधिक प्रोजेक्ट मिलेंगे, जो मॉडलिंग भाषाओं को प्रोग्रामिंग लैंग्वेज या ब्लूप्रिंट के रूप में उपयोग कर रहे हैं। यह नोट छोड़ देता है और संभव के रूप में स्केच UML के लिए उपयोग करता है। योगदानकर्ता के लिए योगदानकर्ता द्वारा नोट्स बनाए जाएंगे, ताकि आप संभवतः उन्हें कहीं भी अपलोड न करें। कोड के रूप में रेखाचित्र अधिक कम हो जाते हैं और संभावना नहीं बनी रहती है क्योंकि यह योगदानकर्ताओं के हिस्से पर प्रयास करेगा।
कई ओपन सोर्स प्रोजेक्ट्स में मॉडल उपलब्ध नहीं है क्योंकि यह मूल्य नहीं जोड़ता है। हालांकि, इसका मतलब यह नहीं है कि मॉडल परियोजना में किसी व्यक्ति द्वारा जल्दी नहीं बनाए गए थे या व्यक्तियों ने सिस्टम के अपने मॉडल नहीं बनाए हैं। डिजाइन कोड के एक स्रोत को बनाए रखने के लिए यह अधिक समय प्रभावी है: स्रोत कोड।
यदि आप डिजाइन जानकारी का आदान-प्रदान करने वाले लोगों को ढूंढना चाहते हैं, तो मैं किसी भी प्रकार के मंचों या मेलिंग सूचियों को देखने की सलाह दूंगा जो कि योगदानकर्ताओं द्वारा उपयोग की जाती हैं। अक्सर, ये फ़ोरम और मेलिंग सूचियाँ परियोजनाओं के लिए डिज़ाइन प्रलेखन के रूप में कार्य करती हैं। आपको औपचारिक यूएमएल नहीं मिल सकता है, लेकिन आपको वहां डिजाइन सूचना और मॉडल के कुछ प्रकार के चित्रमय प्रतिनिधित्व मिल सकते हैं। आप परियोजना के लिए चैट रूम या अन्य संचार चैनलों में भी पॉप कर सकते हैं - यदि आप लोगों को डिजाइन निर्णयों के बारे में बात करते हुए देखते हैं, तो वे चित्रमय मॉडल के साथ संचार कर सकते हैं। लेकिन संभावना है कि वे एक रिपॉजिटरी का हिस्सा नहीं बनेंगे क्योंकि जब वे संचार में अपने उद्देश्य को पूरा कर लेते हैं, तो वे मूल्यवान नहीं होते हैं।