एजाइल के हिस्से के रूप में डिज़ाइन दस्तावेज़


25

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

इसलिए, इसके भाग के रूप में, मैं यह प्रस्ताव कर रहा हूं कि हम डिज़ाइन दस्तावेज़ उत्पन्न करते हैं, जो उपयोगकर्ता कहानी स्तर से ऊपर और उससे परे हैं, सिस्टम के भीतर किसी दिए गए फ़ीचर के प्रभाव की प्रारंभिक जांच के परिणामों को सही ढंग से दर्शाते हैं और जिसमें हमारे पास मौजूद प्रश्नों के उत्तर भी शामिल हैं। व्यापार पूछा।

क्या इसके लिए कोई प्रभावी मानक है?

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


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

3
मुझे पता है कि हमारे पास वे चीजें होनी चाहिए । हम नहीं करते। मैं वहां तक पहुंचने में मदद करने के कोशिश कर रहा हूँ, और मैं संचार के लिए एक विश्वसनीय, repeatable ढांचे (दस्तावेजों स्थापित करने की कोशिश कर रहा हूँ कर रहे हैं सब के बाद, संचार)। समस्या यह है, अभी हम भारी हो गए हैं "अब इसे पूरा करें!" चक्र, और हम तदर्थ संचार पर भरोसा करते हैं, जिसके परिणामस्वरूप लोगों को ज्ञान साइलो होता है क्योंकि उपयोगकर्ता कहानी के बाद उत्पन्न होने वाली विशेषता के बारे में वास्तविक जानकारी के लिए कोई संदर्भ नहीं है ।
Asthasr

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

मुझे लगता है कि आपको इससे अलग सवाल पूछना चाहिए। इस तरह के प्रश्न के लिए, आपको सामान्य "दस्तावेज़ ठीक हैं, जब .." मिलेंगे, तो यह आपकी बहुत मदद नहीं करेगा। आपको चाहिए कि यदि आपकी समस्या का समाधान सही है और अन्य संभावित समाधानों के बारे में पूछें।
व्यंग्यात्मक

4
"फुर्तीला प्रलेखन के खिलाफ नहीं है - यह बेकार प्रलेखन के खिलाफ है।": प्रत्येक विकास प्रक्रिया बेकार दस्तावेज के खिलाफ है (उपयोगी और बेकार की उनकी परिभाषा के अनुसार)।
जियोर्जियो

जवाबों:


18

"अस्पष्ट आवश्यकताएं, खराब स्वीकृति मानदंड, शुभकामनाएं!"

हाँ, यह उसी तरह की आवश्यकताएं हैं जो आपको मिलती हैं, भले ही आप उन्हें नीचे करने की कोशिश करें! (एक उदाहरण के रूप में, एक १०,००० आवश्यकता दस्तावेज जो एक सरकारी ग्राहक को बनाने में ४ साल लगे, अभी भी विसंगतियों, अस्पष्टता और यहां तक ​​कि आंतरिक रूप से विरोधाभासी बयानों से भरा है। यदि ४ साल की आवश्यकताओं के दस्तावेज आपको एक सभ्य, सटीक, आवश्यकता, प्राप्त नहीं कर सकते हैं। आपको कभी लगता है कि आप कुछ भी गैर-अस्पष्ट प्राप्त करने में सक्षम होंगे? '

तो ... चुस्त तरीके का आविष्कार यह समझने के लिए किया गया था कि यह श * टी होता है और इसके खिलाफ काम करने के बजाय इसके साथ काम करना है।

आप "आप क्या चाहते हैं" पूछकर शुरू करते हैं और ग्राहक "कुछ इस तरह थोड़े" के साथ जवाब देता है। आप कुछ काम करते हैं और फिर ग्राहक के पास जाते हैं और कहते हैं "क्या यह वैसा ही है जैसा आप चाहते थे?"

अंततः आपको वही मिलता है जो ग्राहक चाहते थे, भले ही उन्हें पता न हो कि वह क्या है! (नरक, वे कभी नहीं जानते कि वे क्या चाहते हैं, बिल्कुल नहीं)।


यह सरकारी डिजाइन का दस्तावेज दिलचस्प है, क्या कोई स्रोत है? या सिर्फ कुछ आप पहली बार अनुभव किया?
user145400

@ user145400 मुझे कुछ अनुभव हुआ :-(
gbjbaanb

13

हमारी टीम में, चुस्त-दुरूस्त रहने के बाद से, हम यह समझने की कोशिश कर रहे हैं कि वास्तव में कितने प्रलेखन की आवश्यकता है। मैं आपके साथ साझा कर सकता हूं कि हमने अब तक क्या सीखा है।

कुछ और करने से पहले, इस लेख को Agile / Lean Documentation पर पढ़ना सुनिश्चित करें । बहुत अच्छा पढ़ा।

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

आपको अपने आप से यह पूछने की आवश्यकता है कि आप कोडिंग से पहले डिज़ाइन डॉक्स क्यों करना चाहते हैं। हमारे लिए ये कारण थे:

  1. हमें एक टीम के रूप में यह समझने की जरूरत है कि कहानी डिजाइन को कैसे प्रभावित करेगी।
  2. जब नए (या अस्थायी) सदस्य टीम में शामिल होते हैं या जब कोई एक साल से अधिक के लिए काम नहीं करता है तो कोड में लौटते समय डिज़ाइन दस्तावेज़ होना उपयोगी साबित होता है। इसलिए वे यह समझने में मदद करने के लिए संगठनात्मक स्मृति के लिए उपयोगी हैं कि कोड कैसे काम करता है।
  3. डिज़ाइन दस्तावेज़ रखरखाव इंजीनियरों के लिए उपयोगी होते हैं जिन्हें रिलीज़ के बाद कोड का निवारण करना पड़ सकता है।

संतुष्ट करने के लिए (1) आपको एक वास्तविक डिज़ाइन दस्तावेज़ बनाने की आवश्यकता नहीं है। आपकी टीम के पास कोडिंग से पहले एक डिज़ाइन चरण होना चाहिए, लेकिन वह चरण एक व्हाइटबोर्ड या नैपकिन के सामने 15 मिनट के सत्र के रूप में सरल हो सकता है। आपको एक वास्तविक दस्तावेज़ बनाने की ज़रूरत नहीं है जो डिज़ाइन परिवर्तनों पर चर्चा करने के लिए केवल लिखने में घंटों (यदि दिन नहीं) लेगा।

(2) या (3) वर्तमान कहानी के विकास के दौरान की आवश्यकता नहीं है और अधिक से अधिक संभावना है कि वे बाद के पुनरावृत्तियों के लिए आवश्यक नहीं होंगे।

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

तो मैं क्या सुझाऊंगा:

  1. प्रारंभ में अस्थायी डिजाइन / मॉडल का पर्याप्त उत्पादन करें ताकि आपकी टीम कोडिंग से पहले एक बुद्धिमान बातचीत कर सके। इन्हें रखने की अपेक्षा न करें और इन्हें औपचारिक रूप देने में समय बर्बाद न करें।
  2. केवल आधिकारिक डिज़ाइन प्रलेखन का उत्पादन करें यदि किसी को इसकी आवश्यकता होगी (यानी आपकी टीम को संगठनात्मक स्मृति की वास्तविक आवश्यकता है)
  3. केवल कोड पर डिज़ाइन प्रलेखन का उत्पादन करें जिसे स्थिर किया गया है। ऐसे किसी मॉड्यूल को प्रलेखित करने की कोशिश करने का कोई मतलब नहीं है जो हर पुनरावृत्ति में परिवर्तित होता रहे।
  4. डिजाइन दस्तावेजों का उत्पादन करें जो पूरी तरह से एक मॉड्यूल (या उत्पाद के हिस्से) का वर्णन करते हैं। पूर्व में हम डिज़ाइन डॉक्स लिखते थे जो कि किए गए परिवर्तनों का दस्तावेजीकरण करते थे। रिलीज होते ही वे डॉक्स पूरी तरह से बेकार हो गए।
  5. दस्तावेज़ को बहुत उच्च-स्तर पर रखें। यदि आप आर्किटेक्चर को कवर करने वाले 20 पेज लिखते हैं और बहुत उच्च-स्तरीय डिज़ाइन करते हैं, तो वह दस्तावेज़ a) वास्तव में अन्य लोगों द्वारा पढ़ा जाएगा और b) लोगों को आपके कोड के सामान्य लेआउट से परिचित होने में मदद करेगा। विवरण के लिए लोग सीधे कोड में जा सकते हैं। यदि आप विस्तृत विवरण के 700 पृष्ठ लिखते हैं, तो वे लगभग हमेशा वास्तविकता से मेल नहीं खाते हैं, यह किसी के लिए भी पढ़ने के लिए बहुत अधिक है और जब भी भविष्य में परिवर्तन होते हैं, तो आप 20 के बजाय 700 पृष्ठों को बनाए रखने और अपडेट करने के लिए समाप्त हो जाएंगे।

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

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

... आप वास्तव में कोडिंग की तुलना में प्रलेखन लिखने में अधिक समय व्यतीत करेंगे। और एक बार कहानी हो जाने के बाद, जैसे आपने कहा कि ये एक बार की कलाकृतियाँ हैं। तो आपको उन्हें पहली जगह में उत्पादन करने की आवश्यकता क्यों है?
DXM

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

@ साइरियन: यह वास्तव में लगता है कि आपके पास वही ज़रूरत है जो हमारे पास है। हालाँकि, मैं हैरान हूँ जब आपने कहा कि आप सरल दस्तावेज़ चाहते हैं ... जिसे एक बार की कलाकृतियों के रूप में माना जाता है। तो मान लें कि आपके पास एक परत है जो DB और 6 कहानियों से बात करती है, जिन्हें उस परत में बदलाव की आवश्यकता होती है। क्या आप प्रत्येक कहानी के साथ 6 अलग-अलग दस्तावेज़ों का निर्माण करने की योजना बना रहे हैं? या क्या आप DB लेयर के लिए एक एकल डिज़ाइन विनिर्देशन चाहते हैं? हालाँकि, सिंगल स्पेसिफिकेशन एक ऐसी चीज़ है जिसे DB लेयर को छूने वाले हर फीचर के साथ अपडेट करना होगा।
DXM

3

एजाइल "मंत्र" पूरी तरह से प्रलेखन के बिना नहीं करना है।

एजाइल मंत्र " व्यापक प्रलेखन पर काम कर रहे सॉफ्टवेयर " को प्राथमिकता देना है । लेकिन घोषणापत्र के नीचे थोड़ा ध्यान दें।

यही है, जबकि दाईं ओर की वस्तुओं में मूल्य है, हम बाईं ओर की वस्तुओं को अधिक महत्व देते हैं। "

चाचा बॉब के पास प्रलेखन के लिए एक अच्छी नीति है

जब तक इसकी आवश्यकता नहीं है, तब तक कोई दस्तावेज़ बनाएं, जो तत्काल और महत्वपूर्ण हो

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

यह सब कहा, जब आप कहते हैं 'हम वर्तमान में एक ऐसी स्थिति का सामना करते हैं जहां एक नई सुविधा हमारे "कीचड़ की बड़ी गेंद" प्रणाली में कई क्षेत्रों को प्रभावित कर सकती है, अगर आप चुस्त होने जा रहे हैं, तो आपको इस बारे में कुछ करने की आवश्यकता है।

जब आपके पास अपने दस्तावेज़ हों, तो अपने कोड को संशोधित करने के लिए इसका उपयोग करें। इस तरह से आप प्रलेखन के लिए दीर्घकालिक आवश्यकता को हटाकर प्रलेखन (जो कि नहीं होगा) को बनाए रखने के लिए दीर्घकालिक आवश्यकता को हटा देते हैं।

अर्थात। जरूरत को तत्काल और महत्वपूर्ण बनाएं।


यह उत्तर "सही" है, लेकिन वास्तव में इससे परे नहीं लगता है। उदाहरण के लिए एक वास्तुकला डिजाइन के बारे में क्या? डेवलपर / व्यापार कारोबार के बारे में क्या? यह बहुत सारे गुणवत्ता इकाई परीक्षणों द्वारा कैसे नियंत्रित किया जाता है?
पॉल

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

मैं अभी भी वही कह रहा हूं जो मैं कह रहा हूं। आर्किटेक्चर को बदलें जो भी व्यवसाय इसे कॉल करना चाहता है, और यूनिट परीक्षणों को प्रतिगमन परीक्षणों (स्वचालित!) में बदल दें और यह लागू होता है।
पॉल

@Paul: क्षमा करें, मैं अनुसरण नहीं कर रहा हूं। आपको क्या सार्थक दस्तावेज़ लगता है कि मैं सुझाव दे रहा हूं कि वह बुरा है?
पीडीआर

0

फुर्तीली के बारे में बात यह है कि प्रलेखन प्रयासों को वास्तव में स्क्रैम टीम द्वारा संचालित किया जाना है। यदि डेवलपर्स को ऐसा नहीं लगता कि बाहरी दस्तावेज उनकी जरूरतों के लिए पर्याप्त हैं, तो उपयोगकर्ता की कहानी तब तक के लिए अवरुद्ध हो जाती है जब तक वे ऐसा नहीं करते। यदि व्यवसाय को लगता है कि डेवलपर्स पर्याप्त दस्तावेज नहीं बना रहे हैं, तो उत्पाद स्वामी इसे स्वीकृति मानदंडों का हिस्सा बनाने पर जोर देता है। इस वजह से, मैंने वास्तव में हमारे दस्तावेज़ को अधिक ध्यान केंद्रित करने और प्रभावी होने के लिए पाया है क्योंकि यह घोटाले की ओर बढ़ रहा है।

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

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

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

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

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


0

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

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

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

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