क्या एक कार्यक्रम के उच्च-स्तरीय वास्तुकला को दस्तावेज करने के लिए एक मानक है?


10

मैं एक शौकिया डेवलपर हूं और अब तक के मेरे सभी कार्यक्रम कोड के भीतर प्रलेखित होने के लिए काफी सरल थे। कोड को पढ़ते समय यह स्पष्ट था कि मैं ऐसा क्या कर रहा था और इस तरह की कार्रवाई (मेरा मानक परीक्षण 6 महीने बाद कोड को देखने और पहले पढ़ने पर सब कुछ समझने के लिए था - और मेरे पास कम मेमोरी अवधि है)।

अब मुझे एक ऐसे कार्यक्रम का सामना करना पड़ रहा है, जो बीच-बीच में विभिन्न मुलाकातों को याद रखने के लिए मेरी क्षमताओं को बढ़ा रहा है

  • कोड ही
  • डेटाबेस में अनुक्रमित करता है
  • विभिन्न मॉड्यूल ("कार्यकर्ता" कोर कोड और "लाइब्रेरी") के बीच बातचीत

मेरा वर्तमान दस्तावेज़ एक व्हाइटबोर्ड है जहाँ मेरे पास सभी प्रकार के बक्से और तीर हैं जो कोड को इंगित करते हैं, डेटाबेस अनुक्रमित करने के लिए, निष्पादित किए जा रहे कार्यों के लिए, राज्य परिवर्तन आदि के लिए। बस संदर्भ के लिए, गड़बड़ का एक टुकड़ा:

यहां छवि विवरण दर्ज करें

मेरा प्रश्न यह है कि क्या अधिक जटिल उत्पादों के दस्तावेज़ीकरण के लिए सर्वोत्तम प्रथाओं का एक मानक, या नामित सेट है (इस अर्थ में नाम दिया गया है कि यह उन प्रथाओं का एक समूह है जो एक विशिष्ट नाम के तहत समूहीकृत थे)।

वे कौन से कीवर्ड हैं जिनकी मुझे तलाश करनी चाहिए ("दस्तावेज़ सॉफ़्टवेयर आर्किटेक्चर मानकों पर सामान्य प्रयास" और इसी तरह की विविधताएं आमतौर पर वर्कफ़्लोज़ या आर्किटेक्चर सीएडी सिस्टम के लिए सॉफ़्टवेयर के लिए नेतृत्व करती हैं)।

मैं यह भी उम्मीद करता हूं कि उच्च-स्तरीय विवरणों के लिए कोई सामान्य सर्वोत्तम अभ्यास नहीं हो सकता है और हर कोई अपने स्वयं के दर्शन का निर्माण करता है।


उम यूएमएल और कुछ सादे पुराने पाठ आमतौर पर
जेके।

यदि आप जर्मन पढ़ सकते हैं, तो arc42.de/template/index.html पर एक नज़र डालें। वे सॉफ्टवेयर आर्किटेक्चर के दस्तावेजीकरण के लिए कुछ गाइड लाइन्स दिखाते हैं।
बर्नहार्ड हिलर

8
"ऐसा करने के लिए परेशान नहीं" शायद एक मानक के सबसे करीब है।
whatsisname

जवाबों:


13

ऐसा कोई मानक नहीं है जिसका सभी लोग पालन करते हों। सॉफ़्टवेयर प्रोजेक्ट बहुत भिन्न हो सकते हैं (सोचें: helloworld.py बनाम स्पेस शटल में कोड)।

एक बहुत ही सामान्य विधि 4 + 1 मॉडल का उपयोग करना है । दस्तावेज़ की एक ही शैली में सब कुछ रटना करने की कोशिश करने के बजाय, यह कार्यप्रणाली डिज़ाइन को पांच घटकों में तोड़ती है:

  • विकास दृश्य
  • तार्किक दृश्य
  • फिजिकल व्यू
  • प्रक्रिया दृश्य
  • परिदृश्य

विभिन्न दृष्टिकोण चार अलग-अलग दृष्टिकोणों से उत्पाद का वर्णन करते हैं। परिदृश्य वे हैं जहां उपयोग के मामले रहते हैं, और अन्य विचारों की बातचीत का वर्णन करते हैं।

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

आप यहां और अधिक पढ़ सकते हैं:

  1. 4 + 1 आर्किटेक्चरल व्यू मॉडल (विकिपीडिया)
  2. आर्किटेक्चरल ब्लूप्रिंट - "4 + 1" सॉफ्टवेयर आर्किटेक्चर का मॉडल देखें (IEEE पेपर - पीडीएफ)

यह एक बहुत अच्छा तरीका है, धन्यवाद। वापस कदम रखते हुए, कोई सोच सकता है कि यह बहुत स्पष्ट है, लेकिन यह मुझे एक ग्राफ पर विभिन्न 4 + 1 टुकड़ों को अलग करने में मदद करता है।
WoJ

4

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

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

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


पैकेज आरेख? परिनियोजन आरेख? घटक आरेख?
निक किली

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

@NickKeighley: मेरा संपादन देखें।
डॉक ब्राउन

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

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

0

यूनीफाइड मॉडलिंग लैंग्वेज (यूएमएल) सॉफ्टवेयर इंजीनियरिंग के क्षेत्र में एक सामान्य उद्देश्य, विकासात्मक, मॉडलिंग भाषा है, जिसका उद्देश्य सिस्टम के डिजाइन की कल्पना करने के लिए एक मानक तरीका प्रदान करना है।


औपचारिक विनिर्देश omg.org/spec/UML/2.5 पर पाया जा सकता है, लेकिन वेब पर बहुत सारे मित्रवत ट्यूटोरियल हैं।
साइमन बी

2
यह केवल सवाल का एक हिस्सा है, यूएमएल deifnitively मॉडलिंग करने के लिए सही उपकरण है, लेकिन यह अपने आप में एक पूर्ण प्रलेखन का गठन नहीं करता है
Walfrat

3
क्या कोई बहुत बार यूएमएल का उपयोग करता है?
Panzercrisis

डूडलिंग। रिवर्स इंजीनियरिंग।
निक कीघली

1
@Walfrat। क्या यह? वास्तव में? मुझे संदेह है।
डॉक ब्राउन

-3

मुझे लगता है कि हम बेहतर करते थे। यूएमएल बच्चे को स्नान के पानी के साथ बाहर फेंक रहा था। यूनिफाइड मॉडलिंग भाषा प्रदान करने में इसने वास्तुकला और कार्यान्वयन के बीच के अंतर को समाप्त कर दिया। या अगर यह करने का इरादा नहीं था प्रभाव के लिए लग रहा था।

मैंने कुछ राक्षस यूएमएल मॉडल देखे हैं और स्पष्ट रूप से वे मेरे लिए कुछ भी नहीं करते हैं जो कोड नहीं कर सकता है, और इसे बेहतर कर सकता है।


3
इस सवाल का जवाब नहीं है, शायद सुपरगर्ल के जवाब पर टिप्पणी के रूप में बेहतर है।
न्यूटोपियन

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