यूएमएल का उपयोग अधिकांश मुफ्त सॉफ्टवेयर (जैसे लिनक्स पर) में क्यों नहीं किया जाता है?


29

मैं यह समझने की कोशिश कर रहा हूं कि अधिकांश मुफ्त सॉफ्टवेयर परियोजनाओं में यूएमएल का उपयोग क्यों नहीं किया जाता है । उदाहरण के लिए, मेरे डेबियन / लिनक्स सिस्टम में संभवतः दस हजार से अधिक मुफ्त सॉफ्टवेयर पैकेज हैं, और मैं एक भी नाम नहीं दे सकता जिसे स्पष्ट यूएमएल ढांचे और कार्यप्रणाली का उपयोग करके विकसित किया गया है । उदाहरण के लिए, क्यूटी , जीसीसी , लिनक्स कर्नेल , बैश , जीएनयू मेकअप , OCaml , Gnome , यूनिसन , lighttpd , libonion , डोकर मुफ्त सॉफ्टवेयर परियोजनाओं (AFAIK) सब पर यूएमएल का उल्लेख नहीं है कर रहे हैं।

(मेरा अनुमान है कि यूएमएल विकास कार्यों के औपचारिक उप-संचालन के लिए बहुत अच्छी तरह से अनुकूल है, और यही नहीं मुफ्त सॉफ्टवेयर विकसित किया गया है)

ध्यान दें कि जब मैंने यूएमएल के बारे में कुछ सामग्री पढ़ी थी, तो मुझे इसके बारे में अच्छी समझ होने का दावा नहीं है।

वास्तव में, मैं आसानी से एक मुफ्त सॉफ्टवेयर का नाम नहीं दे सकता, जहां यूएमएल का उपयोग किया गया है (शायद मुफ्त सॉफ्टवेयर के रूप में लागू कुछ यूएमएल उपकरण को छोड़कर)। शायद ओपनस्टैक एक अपवाद है (कुछ में यूएमएल का उल्लेख है)।

(यहां तक ​​कि पुराने मुफ्त सॉफ्टवेयर प्रोजेक्टों को शुरू करने के बाद यूएमएल ने अपनाया हो सकता है, लेकिन उन्होंने ऐसा नहीं किया)


Papyrus पर काम करने वाले कुछ सहयोगियों ने उल्लेख किया कि अधिकांश मुफ्त सॉफ्टवेयर प्रोजेक्ट्स में उनकी शुरुआत में कोई स्पष्ट रूप से (और पर्याप्त गहरा) औपचारिक मॉडल नहीं था। इसके अलावा, UML जावा से बहुत अधिक संबंधित है जैसा कि यह दावा करता है (मुझे पूरी तरह से यकीन नहीं है कि यह Ocaml या कॉमन लिस्प या हास्केल या जावास्क्रिप्ट के लिए समझ में आएगा, और शायद C ++ 11 के लिए भी नहीं ....)। शायद चुस्त सॉफ्टवेयर विकास बहुत यूएमएल के अनुकूल नहीं है।

यह भी देखें इस एक किसी भी तरह से संबंधित सवाल का जवाब। M.Fowler का ब्लॉग डिजाइन मृत है? आनंदमय है।

पुनश्च। मुझे नहीं लगता कि यह मुख्य रूप से राय का विषय है; वहाँ कुछ उद्देश्य कारण होना चाहिए, और मुफ्त सॉफ्टवेयर के कुछ आवश्यक विशेषता है, यही कारण है कि बताते हैं। मैं यह अनुमान लगाता हूं कि यूएमएल केवल औपचारिक उपमहाद्वीप के लिए उपयोगी है, और केवल तब ही उपयोगी होता है जब विकसित सॉफ्टवेयर का कुछ हिस्सा मालिकाना परियोजनाओं के रूप में छिपा होता है। अगर यह सच है, तो यूएमएल मुफ्त सॉफ्टवेयर विकास के साथ असंगत होगा ।

NB: मैं खुद एक यूएमएल प्रशंसक नहीं हूं। मैं यूएमएल को केवल कागज के दस्तावेज के रूप में परिभाषित नहीं करता, बल्कि सॉफ्टवेयर टूल्स के लिए [मेटा-] डेटा प्रारूप के रूप में भी


30
शायद यूएमएल बकवास है? या यह इसलिए है क्योंकि अधिकांश मुफ्त सॉफ्टवेयर में एक अच्छे दस्तावेज की कमी है?
B:04овиЈ

19
आपके पास यह दूसरा रास्ता है। यूएमएल का उपयोग करने का वस्तुनिष्ठ कारण होना चाहिए, अन्य तरीके से नहीं। FOSS UML का उपयोग नहीं करता है, या तो कोई वस्तुनिष्ठ कारण नहीं है, या सभी कारण FOSS समुदाय द्वारा स्वीकार नहीं किए जाते हैं।
व्यंग्यात्मक

18
आपके द्वारा सूचीबद्ध कुछ परियोजनाओं के लिए, कारण स्पष्ट नहीं हैं: क्योंकि समय यात्रा का अभी तक आविष्कार नहीं हुआ है। UML को पहली बार 1997 में मानकीकृत किया गया था। GNU परियोजना 1983, GCC 1987, 1988 1988, Bash 1988, GNU मेक 1989, Qt 1991, OCaml 196, Gnome 1997 से है। केवल lighttpd और Unison अभी भी UML का उपयोग कर विकसित किए गए हैं, लेकिन lighttpd OCaml में C और Unison में लिखा गया है, दोनों ही ऐसी भाषाएं हैं जिन्हें UML में अच्छी तरह से वर्णित नहीं किया जा सकता है। साथ ही, फ्री सॉफ्टवेयर डेवलपर्स आमतौर पर कोड को इस तरह से लिखने में विश्वास करते हैं कि इसे बाहरी उपकरणों की मदद के बिना समझा जा सके।
जार्ज डब्ल्यू मित्तग

26
UML का उपयोग खुले या बंद स्रोत सॉफ़्टवेयर विकास में बहुत अधिक नहीं किया जाता है । इसका इस्तेमाल ज्यादातर लोग सॉफ्टवेयर डेवलपमेंट के बारे में करते हैं
कार्ल बेज़ेलफेल्ट

16
गैर-मुक्त सॉफ़्टवेयर विकास में UML का समान उपयोग नहीं किया जाता है। यह कागज पर अच्छा लगता है, लेकिन व्यवहार में कोई वास्तविक लाभ प्रदान नहीं करता है।
जॉन डेब्यू

जवाबों:


37

यूएमएल का उपयोग करने के विभिन्न तरीके हैं। मार्टिन फाउलर इन यूएमएल मोड्स को कॉल करते हैं और चार की पहचान करते हैं: यूएमएल नोट्स के रूप में , यूएमएल स्केच के रूप में , यूएमएल ब्लूप्रिंट के रूप में , और यूएमएल एक प्रोग्रामिंग भाषा के रूप में

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

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

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

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


इसका दूसरा पक्ष ओपन सोर्स कल्चर है।

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

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

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


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

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

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


1
पाठ के बहुत सारे लेकिन केवल अंतिम लेकिन एक पैराग्राफ वास्तव में प्रश्न का उत्तर देता है। इसके अलावा, क्या आपने प्रश्न को फिर से खोल दिया है ताकि आप इसका उत्तर दे सकें?
जश्न

6
@ यूफोरिक हालांकि अंतिम पैराग्राफ प्रश्न का उत्तर देता है, बाकी इसकी पृष्ठभूमि निर्धारित करने और शर्तों और अवधारणाओं को सामान्य करने के लिए आवश्यक है। और नहीं, इसमें पहले से ही 4 रीओपन वोट थे - मैंने 5 वें को कास्ट किया और जवाब दिया।
थॉमस ओवेन्स

3
+1 बहुत व्यापक जवाब। मेरी राय में, पिछले पैराग्राफ निष्कर्ष बताते हैं। बहुत बढ़िया!
एंड्रेस एफ

8

उदाहरण के लिए, लिनक्स का उपयोग करें

  • यह ऑब्जेक्ट ओरिएंटेड प्रोजेक्ट नहीं है, कुछ भाग, जैसे वीएफएस को यूएमएल में मॉडल किया जा सकता है, लेकिन अन्य नहीं हो सकते हैं या बहुत प्रभावी नहीं हो सकते हैं, अर्थात मूल रूप से structकोई संबंध नहीं के साथ वर्ग आरेख में सीधे अनुवाद ।
  • UML दस्तावेज़ीकरण के लिए अच्छा है, एक परियोजना के लिए कुछ नया करने के लिए गति प्राप्त करता है। यह कुछ ऐसा नहीं है जो वास्तव में लिनक्स द्वारा पूरा किया गया हो, लोगों से यह स्वयं सीखने की अपेक्षा की जाती है।
  • यूएमएल उपकरण का उपयोग करने के लिए निश्चित नहीं है, लोगों को किसी चीज पर सहमत होने की आवश्यकता है अगर यह बनाए रखा जा रहा था। उस के लिए एक मुफ्त जावा आवेदन था, लेकिन मुझे नहीं लगता कि कई लोग इसका उपयोग करना चाहते हैं।
  • 90 के दशक में GUI अभी भी लिनक्स पर एक चुनौती थी। बस मेलिंग सूची संग्रह खोदने के लिए जाओ, मुझे यकीन है कि आपको बूट के समय में दिखाए जाने वाले xpm प्रारूप में खुद लिनक्स के लिए लोगो के अलावा किसी भी प्रकार के ग्राफिक्स नहीं मिलेंगे। सादा पाठ पसंदीदा प्रारूप है।
  • मुझे नहीं लगता कि कोई भी वास्तव में डिजाइन की परवाह करता है। लोग सुविधाओं के बारे में परवाह करते हैं और यदि उन्हें स्वीकार किया जाता है तो कोड की जांच की जाएगी। उपयोग के मामलों को अभी भी सबसे अच्छे शब्दों में वर्णित किया गया है, जैसे कि POSIX और SUS जैसे मानक कैसे लिखे जाते हैं।
  • ऑपरेटिंग सिस्टम के डोमेन में बहुत सी वस्तुओं को समुदाय के भीतर अच्छी तरह से समझा और मानकीकृत किया गया है। उदाहरण के लिए, लोगों को पता होगा कि struct in_addrस्मृति में कैसा दिखता है, कोई चित्र इसे स्पष्ट नहीं कर सकता है।
  • यूएमएल मॉडलिंग एलगोरिदम में बहुत मदद नहीं करता है, जैसे मेमोरी एलोकेटर, शेड्यूलर, इंटरप्ट हैंडलर आदि। स्रोत को समझना आसान है।

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

संभवतः उल्लेख के लायक है, मैं काम पर यूएमएल का उपयोग नहीं करता हूं। संभवत: 20% लोग मैं यूएमएल के कुछ सबसेट के साथ काम करते हैं।


4
लिनक्स ऑब्जेक्ट ओरिएंटेशन का उपयोग करता है , यह सिर्फ ऑब्जेक्ट ओरिएंटेड भाषा का उपयोग नहीं करता है । सच है, लिनक्स में बहुत ही प्रक्रियात्मक शैली में लिखे गए भाग भी होते हैं, लेकिन कर्नेल मॉड्यूल इंटरफ़ेस जैसे अन्य भाग, निश्चित रूप से ऑब्जेक्ट उन्मुख होते हैं।
सेमीस्टर

यूएमएल में वर्ग आरेख से अधिक हैं।
माइकल डोर्नर

हर बड़े सॉफ्टवेयर प्रोजेक्ट के लिए ऑब्जेक्ट ओरिएंटेड डिज़ाइन की आवश्यकता होती है।
कैस

योगदानकर्ताओं को परियोजना पर काम करने से पहले एक मानक मॉडलिंग भाषा को समझने की आवश्यकता है, और यही एक सॉफ्टवेयर मॉडलिंग प्रलेखन की आवश्यकता को सही ठहराता है चाहे वह यूएमएल, SysML, IDEF0, ODL या OCL में हो।
कैस

2

यूएमएल एक प्रतिनिधित्व है, इसलिए यह भाषा का एक रूप है, और तर्क के लिए मान लेते हैं कि इसका उद्देश्य एक व्यक्ति से दूसरे व्यक्ति के लिए एक मानसिक मॉडल का संचार करना है।

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

IMHO, मैं एक भाषा "डोमेन विशिष्ट" (डीएसएल) को उस सीमा तक कहता हूं जो ऊपर दिए गए माप को कम करता है, जिससे रखरखाव लागत और बग्स को कम करने में स्पष्ट लाभ हैं। डीएसएल कैसे बनाये? इसके कई तरीके हैं। सबसे सरल में से एक मौजूदा प्रोग्रामिंग भाषा में डेटा संरचनाओं और विधियों को परिभाषित करना है। यह आधार भाषा में संज्ञा और क्रिया जोड़ता है, जिससे यह कहना आसान हो जाता है कि कोई क्या चाहता है। (नोट: मैं कोई सीखने की अवस्था के लिए एक डीएसएल की तलाश नहीं करता हूं। यह हो सकता है कि एक डीएसएल के पाठक को इसे सीखने की एकमुश्त लागत का निवेश करना होगा।)

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

यूएमएल की मेरी धारणा यह है कि इसने क्या करने की कोशिश की।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.