आप स्क्रैम में डिज़ाइन के साथ कैसे व्यवहार करते हैं?


26

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

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


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

जवाबों:


11

सिर्फ इसलिए कि यह घोटाला है इसका मतलब यह नहीं है कि सब कुछ प्रत्येक स्प्रिंट को बदलता है!

Scrum वह करने के बारे में है जो आवश्यक है (लेकिन अधिक नहीं) । आपको अभी भी डिजाइन करने की आवश्यकता है और आपको अभी भी दस्तावेज़ की आवश्यकता है। इसकी सिर्फ राशि तय नहीं है और न ही यह कैसे करना है।

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


9

इस विषय पर मुझे बहुत कुछ कहना है। मैंने ऐसे कई मामले देखे हैं जहाँ कंपनियां / टीमें / लोग कहते हैं कि वे सॉफ्टवेयर के लिए चुस्त दृष्टिकोण का उपयोग कर रहे हैं लेकिन वास्तव में, वे उन पुरस्कारों को फिर से प्राप्त करना चाहते हैं जो एजाइल विधियों के सिद्धांतों का पालन किए बिना वादा करते हैं।

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

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

यहाँ कुछ पढ़ने की सिफारिश की गई है

ये सीखने की शुरुआत करने के लिए अच्छी जगहें हैं।


4
@ मर्फ़: विचार यह है कि आर्किटेक्चर उभर रहा है, आपको इसे अप-फ्रंट को परिभाषित करने के बजाय परीक्षण के माध्यम से खोजना चाहिए।
मार्टिन विकमैन

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

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

1
Scrum का कारण यह है कि सॉफ्टवेयर की प्रकृति का अर्थ है कि हम इसे पहली बार सही नहीं पाते हैं। कई मामलों में हितधारकों को यह नहीं पता होता है कि वे वास्तव में क्या चाहते हैं जब तक कि उनके सामने कुछ न हो। क्या बेहतर है: एक सुविधा के लिए एक डिज़ाइन बनाने में घंटों बिताना (जिसे परिष्कृत करना होगा या सबसे अधिक संभावना है कि रबर फुटपाथ को हिट करता है) और कार्यान्वयनकर्ता को उस डिज़ाइन को संचारित करना होगा; या उन घंटों को खर्च करना, जो सुविधा में पहले पास को लागू करते हैं और इसे परीक्षणों और रिफैक्टिंग के माध्यम से परिष्कृत करते हैं।
माइकल ब्राउन

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

2

स्क्रेम एक प्रोजेक्ट-मैनेजमेंट कार्यप्रणाली है, न कि सॉफ्टवेयर-डेवलपमेंट मेथडोलॉजी। आमतौर पर स्क्रैम का उपयोग एक चुस्त कार्यप्रणाली के साथ किया जाता है। उसमें आपका जवाब है।


4
स्क्रम एक चुस्त कार्यप्रणाली है और यह विकास टीम और स्टेक होल्डर्स पर केंद्रित है और वर्किंग कोड की पुनरावृति प्रदान करता है। टॉप डाउन प्रोजेक्ट मैनेजमेंट और स्क्रैम तेल और पानी की तरह हैं।
माइकल ब्राउन

1
@ माइक सहमत हुए, लेकिन मुझे हमेशा लगा है कि स्क्रेम एक प्रोजेक्ट मैनेजर की चुस्त कार्यप्रणाली है, जबकि एक्सट्रीम प्रोग्रामिंग एक डेवलपर की एग्योर कार्यप्रणाली है। उस ने कहा, मैंने देखा है कि सॉफ्टवेयर के अलावा बहुत सारी परियोजनाओं पर स्क्रैम को लागू किया गया है। दिलचस्प रूप से विकिपीडिया स्करम की यह परिभाषा प्रदान करता है: स्क्रैम प्रोजेक्ट प्रबंधन के लिए एक पुनरावृत्त, वृद्धिशील कार्यप्रणाली है जिसे अक्सर फुर्तीले सॉफ्टवेयर विकास, एक प्रकार के सॉफ्टवेयर इंजीनियरिंग में देखा जाता है: en.wikipedia.org/wiki/Scrum_(advelopment)
अहिस्तले

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

1

आवश्यकताओं के रूप में अक्सर सामने के डिजाइन में बदलाव नहीं होता है। तो कक्षा स्तर तक डिजाइन करना आमतौर पर समय की बर्बादी है। हालांकि, यह उच्च स्तर के वास्तु निर्णयों के सार्थक स्केचिंग हो सकता है।

भारी शुल्क डिज़ाइन दस्तावेज़ों के साथ समस्या यह है कि वे निर्मित होते ही लगभग अप्रचलित हो जाते हैं। तो जो सबसे अच्छा काम किया है वह आमतौर पर उच्च स्तर का प्रलेखन है जो थोड़े समय में पूरी तरह से बदलने की संभावना नहीं है।


1
मैं यह नहीं कहूंगा कि आवश्यकताएं लगातार बदल रही हैं। स्प्रिंट के दौरान प्रभाव स्थिर और अपरिवर्तित हैं। प्रत्येक स्प्रिंट के बाद आवश्यकताओं की प्राथमिकता का पुनर्मूल्यांकन किया जा सकता है। खरीदें आपका समग्र लक्ष्य नहीं बदलेगा।
मार्टिन यॉर्क

@ मार्तीन अच्छा बिंदु। मुझे लगता है कि मुझे rephrase चाहिए कि वे घोटाले से घोटाले में बदल रहे हैं।
वादिम

1

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

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

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

ध्यान दें कि सभी आरेख वास्तविक कार्यान्वयन के बाद बनाए जाते हैं। यह "व्यापक प्रलेखन पर काम कर रहे सॉफ़्टवेयर" और बस-इन-टाइम डिज़ाइन के साथ है।

और हां, पठनीय कोड निश्चित रूप से प्रलेखन है।


1

परियोजना के समग्र आर्किटेक्चर और उच्च स्तरीय डिजाइन को स्क्रैम टीमों के बाहर किया जाएगा जब परियोजना के मालिक कहानियों का निर्माण कर रहे हैं।

कहानियों और ग्राहकों की अपेक्षाओं के बीच संबंधों को देखने में मदद करने के लिए जो भी रूप में लिखा गया है, उसमें समग्र डिजाइन के लिए पर्याप्त होना चाहिए।

प्रत्येक कहानी के लिए आवश्यक डिजाइन में से कुछ योजना के दौरान उत्पाद के मालिक के साथ योजना और बातचीत में किया जाएगा।

एक कहानी के लिए डिजाइन प्रयास का थोक स्प्रिंट में किया जाएगा।

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


0

मेरी समझ यह है कि आप परियोजना की शुरुआत में इकट्ठा होने वाली अग्रिम आवश्यकताओं के साथ एक उच्च स्तरीय डिजाइन करते हैं। आप इस डिज़ाइन को अच्छी तरह से प्रलेखित करें।

फिर जब आप वास्तव में आवश्यकता को लागू करने के लिए जाते हैं, तो आप निचले स्तर के डिजाइन को बदलते हैं जैसे आपको आवश्यकता होती है, लेकिन आप उच्च स्तर के डिजाइन को बदलने से बचते हैं।

खैर, यह है कि यह पाँच मिनट पहले मुझे वैसे भी समझाया गया था ...


0

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

मैं उनसे सहमत हूं क्योंकि एमएमडी बकवास है जबकि यूएमएल वास्तव में एक उत्कृष्ट तरीका है क्योंकि टीम के अन्य सदस्यों के साथ संवाद करने के लिए मानकीकृत करें। वैकल्पिक शब्द

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