फीचर-ड्रिवेन डेवलपमेंट

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

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

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

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



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

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

सुविधा के अनुसार योजना बनाएं
फीचर सूची पूरी होने के बाद, अगला कदम विकास योजना तैयार करना और प्रोग्रामर को क्लास (कंप्यूटर विज्ञान) के रूप में सुविधाओं (या फीचर सेट) का स्वामित्व सौंपना है।

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

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

मील के पत्थर
चूँकि सुविधाएँ छोटी हैं, इसलिए किसी सुविधा को पूरा करना अपेक्षाकृत छोटा कार्य है। सटीक स्थिति रिपोर्टिंग और सॉफ़्टवेयर विकास परियोजना पर नज़र रखने के लिए, प्रत्येक सुविधा पर हुई प्रगति को चिह्नित करना महत्वपूर्ण है। इसलिए एफडीडी प्रति फीचर छह मील के पत्थर को परिभाषित करता है जिन्हें क्रमिक रूप से पूरा किया जाना है। पहले तीन मील के पत्थर #डिजाइन बाय फीचर गतिविधि के दौरान पूरे होते हैं, और अंतिम तीन मील के पत्थर #बिल्ड फीचर गतिविधि के दौरान पूरे होते हैं। प्रगति को ट्रैक करने के लिए, प्रत्येक मील के पत्थर को पूर्ण प्रतिशत आवंटित किया जाता है। नीचे दी गई तालिका में मील के पत्थर और उनके पूरा होने का प्रतिशत दिखाया गया है। जिस बिंदु पर कोडिंग शुरू होती है, एक सुविधा पहले से ही 44% पूर्ण होती है (डोमेन वॉकथ्रू 1%, डिज़ाइन 40% और डिज़ाइन निरीक्षण 3% = 44%)।

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


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

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

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

यह भी देखें

 * चंचल सॉफ्टवेयर विकास
 * व्यवहार आधारित विकास
 * परियोजना जीवनचक्र
 * सॉफ़्टवेयर वास्तुशिल्प
 * सॉफ्टवेयर विकास प्रक्रिया
 * सॉफ्टवेयर इंजीनियरिंग

संदर्भ

 * 1. Coad, P., Lefebvre, E. & De Luca, J. (1999). Java modelling In Color With UML: Enterprise Components and Process. Prentice Hall International. (ISBN 0-13-011510-X)
 * 2. Palmer, S.R., & Felsing, J.M. (2002). A Practical Guide to Feature-Driven Development. Prentice Hall. (ISBN 0-13-067615-2)

बाहरी संबंध

 * Feature Driven Development Community
 * Nebulon FDD Page - Nebulon is the consulting practice of Jeff De Luca
 * Successful Web Development Methodologies - Use of FDD for Web Development projects
 * Delivering Real Business Value using Feature Driven Development - Article gives basic overview of FDD
 * FDD and Agile modelling
 * Better Software Faster - Another book in the Coad Series referencing Feature Driven Development. Authors Andy Carmichael and Dan Haywood ISBN 0-13-008752-1
 * Interview with FDD-Creator Jeff DeLuca (Podcast)
 * Interview with FDD-Creator Jeff DeLuca (Podcast)