UML वर्ग आरेख जावास्क्रिप्ट सिस्टम को डिजाइन करने के लिए पर्याप्त हैं?


23

यह देखते हुए कि UML ऑब्जेक्ट ओरिएंटेशन के लिए अधिक क्लासिक दृष्टिकोण की ओर उन्मुख है, क्या यह अभी भी जावास्क्रिप्ट सिस्टम डिजाइन करने के लिए विश्वसनीय तरीके से उपयोग करने योग्य है?

एक विशिष्ट समस्या जो मैं देख सकता हूं वह यह है कि वर्ग आरेख, वास्तव में, प्रणाली का एक संरचनात्मक दृष्टिकोण है, और जावास्क्रिप्ट अधिक व्यवहार चालित है, आप इससे कैसे निपट सकते हैं?

कृपया ध्यान रखें कि मैं यहाँ वास्तविक विश्व डोमेन के बारे में बात नहीं कर रहा हूँ; यह उस समाधान के लिए एक मॉडल है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं।


7
हम में से कई कहेंगे कि यूएमएल वास्तव में कुछ भी डिजाइन करने के लिए पर्याप्त नहीं है। मेरी राय है कि यूएमएल के पूरे कैनन में एकमात्र मान जो अनुक्रम आरेख है। हर दूसरे यूएमएल आरेख जिसे मैंने समझने की कोशिश की है, उसे अंग्रेजी में बेहतर तरीके से समझाया गया है। लेकिन यह क्या है के लिए व्यक्तिपरक है।
जिमी हॉफ

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

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

@JimmyHoffa: मैं आपसे लगभग सहमत हूं, लेकिन अनुक्रम आरेखों के बारे में नहीं - क्योंकि IMHO अनुक्रम आरेख कुछ भी नहीं दिखाता है जो छद्म कोड के साथ बेहतर रूप से व्यक्त नहीं किया जा सकता है। एकमात्र आरेख प्रकार जिसका मेरे लिए वास्तविक उपयोग है, डेटा-प्रवाह आरेख हैं, और वे यूएमएल का हिस्सा नहीं हैं।
डॉक ब्राउन

@DocBrown मेला काफी, चलो बस इतना मान लेते हैं कि UML सीखने से बचना चाहिए और बल्कि हकलाना और सफ़ेद को पढ़ना शायद इसकी जगह लेनी चाहिए :)
जिमी

जवाबों:


18

ऐसा लगता है कि आप दो अलग चीजें पूछ रहे हैं

  • क्या जावास्क्रिप्ट सिस्टम को चित्रित करने के लिए UML का उपयोग किया जा सकता है?
  • क्या जावास्क्रिप्ट सिस्टम को चित्रित करने के लिए वर्ग आरेखों का उपयोग किया जा सकता है?

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

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


5

आपका उत्तर आपके प्रश्न में छिपा है:

एक विशिष्ट समस्या जो मैं देख सकता हूं वह यह है कि वर्ग आरेख, वास्तव में, सिस्टम का एक संरचनात्मक दृष्टिकोण और जावास्क्रिप्ट अधिक व्यवहार संचालित है, आप इससे कैसे निपट सकते हैं?

को देखो BDD (व्यवहार चालित विकास) तकनीक और उपकरण सूट है कि अपने डिजाइन की जरूरत है चुनें।

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

पीएस: सामान्य तौर पर, UML represent general types of behaviorहालांकि, यह अभी भी आपके डिजाइन को चयनित श्रेणी के सही सेट (एक अनुक्रम आरेख की तरह) के साथ मॉडल करने के लिए इस्तेमाल किया जा सकता है।I would reference the Wikipedia and find the right UML diagram category to use.


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

4

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

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

नोड.जेएस पैकेज "वावी" द्वारा उत्पन्न आरेख


3

यूएमएल में व्यवहार मॉडल भी हैं, जिनका उपयोग आप सिस्टम के व्यवहार को दिखाने के लिए कर सकते हैं जैसे अनुक्रम डायग्राम या चार्ट चार्ट आरेख


1

हां, आप यूएमएल का उपयोग कर सकते हैं, सबसे विशेष रूप से अनुक्रम आरेख

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

UML में जावास्क्रिप्ट के फ्रंट-एंड को डिजाइन करने के अपने अनुभव के आधार पर, मैंने इस विषय पर एक श्वेत पत्र लिखा है: Angular अनुप्रयोगों के लिए UML में तकनीकी डिजाइन


0

ऐसा लगता है कि आप जावास्क्रिप्ट के लिए यूएमएल का उपयोग कर सकते हैं, लेकिन यह इस बात पर निर्भर करेगा कि आप अपने काम के लिए कैसे जा रहे हैं।

विशेष रूप से JS / UML JSDoc, Dojo, YUI के लिए UML प्रलेखन को स्वचालित कर सकता है।

मुझे लगता है कि वहाँ अधिक है, लेकिन अभी तक कुछ और नहीं चला है।


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