एक्स्ट्रीम प्रोग्रामिंग - एक्स्ट्रीम प्रोग्रामिंग. सॉफ्टवेअर डेव्हलपमेंट पद्धती

ज्ञान बेस मध्ये आपले चांगले काम पाठवा सोपे आहे. खालील फॉर्म वापरा

विद्यार्थी, पदवीधर विद्यार्थी, तरुण शास्त्रज्ञ जे ज्ञानाचा आधार त्यांच्या अभ्यासात आणि कार्यात वापरतात ते तुमचे खूप आभारी असतील.

http://www.allbest.ru/ वर पोस्ट केले

सामग्री

  • परिचय
  • 1. XP म्हणजे काय?
  • 3.1 मूलभूत तंत्रेXP
  • 4. फायदे आणि तोटे
  • 5. वापराचा इतिहास
  • निष्कर्ष

परिचय

एक्स्ट्रीम प्रोग्रामिंग, ज्याला संक्षिप्त रूपात XP म्हटले जाते, हे सॉफ्टवेअर डेव्हलपमेंट आणि सॉफ्टवेअर व्यवसायाची एक शिस्त आहे जी दोन्ही पक्षांच्या (प्रोग्रामर आणि व्यावसायिक लोकांच्या) प्रयत्नांना सामान्य, साध्य करण्यायोग्य उद्दिष्टांवर केंद्रित करते. XP वापरणारे संघ अतिशय वेगाने दर्जेदार सॉफ्टवेअर तयार करतात. एचआरची शिस्त बनवणारी तंत्रे निवडली जातात कारण ती मानवी सर्जनशीलतेवर आणि मानव चंचल आणि चुकीचे प्राणी आहेत या मान्यतेवर आधारित आहेत.

XP अनेकदा तंत्रांचा संच म्हणून सादर केला जातो, परंतु XP स्वतःच अंतिम रेषा नाही. या प्रक्रियेच्या शेवटी दीर्घ-प्रतीक्षित सुवर्ण तारा प्राप्त करण्यासाठी HR चा सराव आणि विकास करण्याची गरज नाही. याउलट, XP ही सुरुवातीची ओळ आहे. XP प्रश्न विचारतो: "आम्ही दर्जेदार सॉफ्टवेअर तयार करणे सुरू ठेवण्यासाठी आमचे प्रयत्न किती कमी असू शकतात?"

एक्स्ट्रीम प्रोग्रामिंग हे अस्पष्ट किंवा वेगाने बदलणार्‍या गरजांच्या परिस्थितीत सॉफ्टवेअर उत्पादन विकसित करणार्‍या तज्ञांच्या छोट्या आणि मध्यम आकाराच्या संघांसाठी एक सरलीकृत उत्पादन पद्धत आहे.

1. XP म्हणजे काय?

एक्स्ट्रामामीतागाचे कापडकार्यक्रममीफिरणे(इंग्रजी) अत्यंत प्रोग्रामिंग, XP) ही लवचिक सॉफ्टवेअर डेव्हलपमेंट पद्धतींपैकी एक आहे. पद्धतीचे लेखक केंट बेक, वॉर्ड कनिंगहॅम, मार्टिन फॉलर आणि इतर आहेत.

XP हे सॉफ्टवेअर विकसित करण्याचा एक सरलीकृत, कार्यक्षम, लवचिक, अंदाज लावता येण्याजोगा, विज्ञान-आधारित आणि अत्यंत आनंददायक, कमी जोखमीचा मार्ग आहे. खालील मार्गांनी एचआर इतर पद्धतींपेक्षा वेगळे आहे:

अत्यंत लहान विकास चक्र वापरून, XP जलद, वास्तविक आणि चालू फीडबॅक ऑफर करते.

XP वाढीव नियोजनाचा वापर करते, ज्यामुळे एकूण प्रकल्प योजना बर्‍यापैकी वेगाने उदयास येते, परंतु हे समजले जाते की ही योजना प्रकल्पाच्या संपूर्ण आयुष्यात विकसित होते.

XP या किंवा त्या कार्यक्षमतेच्या अंमलबजावणीसाठी एक लवचिक वेळापत्रक वापरते, जे व्यवसायाचे बदलते स्वरूप आणि या संदर्भात बदलत्या ग्राहकांच्या गरजांना प्रतिसाद सुधारते.

XP प्रोग्रामर आणि ग्राहक दोघांनी विकसित केलेल्या स्वयंचलित चाचण्यांवर आधारित आहे. या चाचण्यांबद्दल धन्यवाद, विकास प्रक्रियेचे निरीक्षण करणे, सिस्टमची योग्य उत्क्रांती सुनिश्चित करणे आणि सिस्टममध्ये विद्यमान दोष त्वरित शोधणे शक्य आहे.

XP मौखिक संप्रेषण, चाचण्या आणि स्त्रोत कोडवर आधारित आहे. ही तीन साधने प्रणालीची रचना आणि वर्तन याबद्दल माहितीची देवाणघेवाण करण्यासाठी वापरली जातात.

XP विकसित होत असलेल्या डिझाईन प्रक्रियेवर आधारित आहे जी सिस्टीम अस्तित्वात असेपर्यंत चालू राहते.

XP सर्वात सामान्य कौशल्ये आणि क्षमता असलेल्या प्रोग्रामरमधील जवळच्या परस्परसंवादावर आधारित आहे.

XP वैयक्तिक प्रोग्रामरच्या अल्पकालीन प्रवृत्ती आणि संपूर्ण प्रकल्पाच्या दीर्घकालीन हितसंबंधांची पूर्तता करणाऱ्या तंत्रांवर आधारित आहे.

XP ही एक सॉफ्टवेअर डेव्हलपमेंट शाखा आहे. ही एक शिस्त आहे कारण XP मध्ये काही गोष्टी आहेत ज्या तुम्ही XP वापरणार असाल तर कराच. चाचण्या लिहायच्या की नाही हे तुम्ही निवडू नये, कारण तुम्ही तसे न केल्यास, तुम्ही करत असलेले प्रोग्रामिंग टोकाचे नाही.

XP पद्धतीची रचना अशा प्रकल्पांवर काम करण्यासाठी केली गेली आहे ज्यावर दोन ते दहा प्रोग्रामर काम करू शकतात, जे विद्यमान संगणक वातावरणाच्या कठोर मर्यादेमुळे मर्यादित नाहीत आणि ज्यामध्ये सर्व आवश्यक चाचणी कार्य एका दिवसात पूर्ण केले जाऊ शकते.

2. अत्यंत प्रोग्रामिंग कोठे सुरू होते?

अत्यंत प्रोग्रामिंग कोठे सुरू होते? देशांतर्गत सॉफ्टवेअर डेव्हलपरची ठराविक स्थिती विकास खर्च शक्य तितकी कमी करण्यास बांधील आहे या समजातून. आणि यासाठी ग्राहकाला सखोल सहकार्य करणे, त्याची आवड समजून घेणे आणि शेवटी, त्याला जे हवे आहे ते करणे आवश्यक आहे: अधिक आणि कमी नाही.

एक्स्ट्रीम प्रोग्रामिंग विशिष्ट तंत्रांवर आधारित नाही, जसे सामान्यतः मानले जाते, परंतु केवळ चार मूलभूत तत्त्वांवर आधारित आहे: संवाद, साधेपणा, अभिप्राय आणि धैर्य. इथेच तुम्हाला सुरुवात करायची आहे.

एक्स्ट्रीम प्रोग्रामिंग एक तयार उपाय ऑफर करते: सर्वकाही शक्य तितके सोपे ठेवा, ग्राहकाला स्वतःकडे ठेवा किंवा ग्राहकासोबत राहू द्या, त्याला विकास प्रक्रियेवर सक्रियपणे निरीक्षण करू द्या, बदलाचे स्वागत करा - आणि यश जवळजवळ हमी आहे.

XP संघांमध्ये, संवादाला नेहमी प्रोत्साहन दिले जाते - माहिती आणि अनुभव सामायिक करण्याचा सर्वात जलद मार्ग. जेव्हा जास्तीत जास्त विकास गती आवश्यक असते तेव्हा हे खूप महत्वाचे आहे. परंतु संप्रेषण, इतर कोणत्याही उपयुक्त प्रयत्नांप्रमाणेच, सतत समर्थन आवश्यक आहे. म्हणूनच संघातील कोणीतरी तथाकथित मुत्सद्दी बनून संवादाचे निरीक्षण करण्याची जबाबदारी स्वीकारली पाहिजे. संप्रेषण आणि इतर कार्यसंघ सदस्यांना आपल्या कृती समजावून सांगण्याची आवश्यकता आपल्याला शक्य तितक्या सहजतेने सर्वकाही करण्यास भाग पाडते. जर ते प्रथमच कार्य करत नसेल तर, मुख्य ध्येय साध्य होईपर्यंत ते पुन्हा पुन्हा सरलीकरणावर कार्य करतात - इतर विकासकांसाठी कोडची जास्तीत जास्त समज.

आम्ही काहीही केले तरी - सुई थ्रेडिंग किंवा पार्टीला जाणे - आम्ही नेहमीच काही ध्येय साध्य करण्यासाठी प्रयत्न करतो. आपण त्यातून विचलित होत आहोत हे लक्षात आल्यास, त्यानुसार आपण आपल्या कृती समायोजित करतो. आता कल्पना करा की डोळे बंद करून सुई बांधणे किंवा आरशाशिवाय सुंदर कपडे घालणे किती कठीण आहे! परंतु प्रोग्राम विकसित करताना, बहुतेकदा असे होते: आपण काहीतरी करतो, ज्याचा परिणाम आपण पाहू शकत नाही. म्हणून, अत्यंत प्रोग्रामिंगमध्ये शक्य तितक्या लवकर आपल्या कृतींचे परिणाम पाहणे हा नियम आहे. किंवा, तांत्रिकदृष्ट्या, शक्य तितक्या लवकर अभिप्राय प्रदान करण्यासाठी.

एक्स्ट्रीम प्रोग्रामिंग आम्हाला विचारते: धैर्य का विकसित करू नये? शेवटी, ती तिच्या कामात खूप महत्वाची आहे. धैर्याशिवाय, एखादे कार्य पूर्ण करण्याची जबाबदारी घेणे शक्य आहे का आणि विशिष्ट कालावधीत? धैर्याशिवाय, आपण शेवटपर्यंत पोहोचला आहात हे समजणे शक्य आहे का, एक पाऊल मागे घ्या आणि उपाय शोधा? आणि, शेवटी, विकासकाला सर्व मुदती संपल्यावरच योग्य पूर्ततेसह सादर करण्याऐवजी, कार्याचे मूल्यांकन करण्यात आपली चूक कबूल करण्याची आणि इतरांना त्याबद्दल वेळेत चेतावणी देण्यास काय अनुमती देईल? धैर्याचे फायदे स्पष्ट आहेत आणि प्रत्येक यश, अगदी लहान कार्यातही, हे धैर्य विकसित करू शकते.

3. XP तंत्र

एक्स्ट्रीम प्रोग्रामिंग (XP) बॉटम-अप सॉफ्टवेअर डेव्हलपमेंटची उत्क्रांती पद्धत म्हणून उदयास आली. हा दृष्टिकोन तथाकथित चपळ विकास पद्धतीचे उदाहरण आहे. "लाइव्ह" पद्धतींच्या गटामध्ये, अत्यंत प्रोग्रामिंग व्यतिरिक्त, पद्धती SCRUM, DSDM (डायनॅमिक सिस्टम्स डेव्हलपमेंट मेथड, डायनॅमिक सिस्टम विकसित करण्याची पद्धत), वैशिष्ट्य-चालित विकास (सिस्टम फंक्शन्सद्वारे चालवलेला विकास) इ.

लाइव्ह सॉफ्टवेअर डेव्हलपमेंटची मूलभूत तत्त्वे 2000 मध्ये प्रकट झालेल्या थेट विकास जाहीरनाम्यात समाविष्ट आहेत.

· प्रकल्पात सामील असलेले लोक आणि त्यांचा संवाद प्रक्रिया आणि साधनांपेक्षा अधिक महत्त्वाचा असतो.

· सर्वसमावेशक दस्तऐवजीकरणापेक्षा कार्यरत कार्यक्रम अधिक महत्त्वाचा असतो.

· कराराच्या तपशिलांवर चर्चा करण्यापेक्षा ग्राहकासोबतचे सहकार्य महत्त्वाचे आहे.

· योजनांना चिकटून राहण्यापेक्षा बदलांमधून कार्य करणे अधिक महत्त्वाचे आहे.

सॉफ्टवेअर डेव्हलपमेंटच्या अत्याधिक नोकरशाहीचा निषेध म्हणून "जिवंत" पद्धती दिसून आल्या, अंतिम निकाल मिळविण्यासाठी आवश्यक नसलेल्या बाजूच्या कागदपत्रांची विपुलता, ज्या बहुतेक "जड" प्रक्रियांनुसार प्रकल्प राबविताना तयार कराव्या लागतात. , संस्थेच्या निश्चित प्रक्रियेस समर्थन देण्यासाठी अतिरिक्त कार्य, जसे की आत आवश्यक आहे, उदाहरणार्थ, CMM. अशा प्रकारचे बहुतेक काम आणि दस्तऐवज थेट सॉफ्टवेअर डेव्हलपमेंट आणि गुणवत्ता हमीशी संबंधित नाहीत, परंतु विकास कराराच्या औपचारिक कलमांचे पालन करणे, विविध मानकांचे पालन करण्यासाठी प्रमाणपत्रे प्राप्त करणे आणि पुष्टी करणे या हेतूने आहेत.

"लाइव्ह" पद्धती विकासकांना त्यांचे बहुतेक प्रयत्न विकास कार्यांवर आणि वास्तविक वापरकर्त्याच्या गरजा पूर्ण करण्यावर केंद्रित करण्यास अनुमती देतात. दस्तऐवजांच्या ढिगाऱ्यांची अनुपस्थिती आणि त्यांना सुसंगत स्थितीत ठेवण्याची आवश्यकता आपल्याला आवश्यकतेतील बदलांना आणि भविष्यातील कार्यक्रमास कार्य करावे लागेल अशा वातावरणात अधिक जलद आणि कार्यक्षमतेने प्रतिसाद देऊ देते.

तथापि, XP ची स्वतःची विकास प्रक्रिया आकृती आहे (जरी, साधारणपणे बोलायचे झाले तर, "विकास प्रक्रिया" ची बर्‍याच प्रमाणात कठोर कृती योजना म्हणून वापरली जाणारी समज "जिवंत" विकासाच्या कल्पनेला विरोध करते), आकृती 1 मध्ये दर्शविलेले आहे. .

XP च्या लेखकांच्या मते, हे तंत्र खालील तंत्रांचे संयोजन वापरण्याइतके कृतीच्या काही सामान्य पद्धतींचे अनुसरण करत नाही. तथापि, प्रत्येक तंत्र महत्त्वाचे आहे, आणि त्याचा वापर केल्याशिवाय, विकास XP नाही असे मानले जाते, वॉर्ड कनिंगहॅम आणि रॉन जेफ्रीजसह या दृष्टिकोनाचे लेखक केंट बेक यांच्या मते.

· राहतातनियोजन (नियोजनखेळ)

पुढील सॉफ्टवेअर आवृत्तीपूर्वी किती काम करणे आवश्यक आहे हे शक्य तितक्या लवकर निर्धारित करणे हे त्याचे कार्य आहे. सर्वप्रथम, ग्राहकाच्या प्राधान्यक्रमांवर (म्हणजेच, त्याच्या गरजा, त्याचा व्यवसाय अधिक यशस्वीपणे चालवण्यासाठी त्याला सिस्टीममधून काय आवश्यक आहे) आणि दुसरे म्हणजे, तांत्रिक मूल्यांकनांच्या आधारावर (म्हणजेच, जटिलतेचा अंदाज) यावर आधारित निर्णय घेतला जातो. विकासाचे, सिस्टमच्या इतर घटकांसह सुसंगतता इ.). योजना वास्तविकतेपासून किंवा ग्राहकांच्या इच्छेपासून विचलित होताच बदलल्या जातात.

तांदूळ.1 XP वर्कफ्लो डायग्राम

· वारंवारबदलव्हीआवृत्त्या (लहानप्रकाशन)

अगदी पहिली कार्यरत आवृत्ती शक्य तितक्या लवकर दिसली पाहिजे आणि ताबडतोब वापरण्यास सुरुवात केली पाहिजे. त्यानंतरच्या आवृत्त्या बर्‍याच कमी अंतराने तयार केल्या जातात (लहान प्रोग्राममधील लहान बदलांसाठी कित्येक तासांपासून, मोठ्या प्रणालीच्या मोठ्या पुनर्कार्यासाठी एक किंवा दोन महिन्यांपर्यंत). उत्पादनाच्या आवृत्त्या (रिलीझ) शक्य तितक्या वेळा सेवेमध्ये सोडल्या पाहिजेत. प्रत्येक आवृत्ती पूर्ण होण्यासाठी शक्य तितका कमी वेळ लागेल. शिवाय, प्रत्येक आवृत्ती व्यवसायासाठी उपयुक्ततेच्या दृष्टीने पुरेशी अर्थपूर्ण असणे आवश्यक आहे.

· रूपक (रूपक) प्रणाली

रूपक, संघासाठी अगदी सोप्या आणि समजण्यायोग्य स्वरूपात, सिस्टमच्या मूलभूत यंत्रणेचे वर्णन केले पाहिजे. ही संकल्पना आर्किटेक्चरची आठवण करून देणारी आहे, परंतु तांत्रिक निर्णयांचे मुख्य सार फक्त एक किंवा दोन वाक्यांशांमध्ये वर्णन केले पाहिजे.

आर्किटेक्चर म्हणजे सिस्टमच्या घटकांची आणि ते एकमेकांशी कसे जोडलेले आहेत याची काही कल्पना. सिस्टममध्ये काही नवीन कार्यक्षमता कुठे जोडली जात आहे आणि काही नवीन घटक कशाशी संवाद साधतील हे समजून घेण्यासाठी विकासक आर्किटेक्चरचा वापर करतात.

सिस्टीम मेटाफोर हे बहुतेक तंत्रांमध्ये आर्किटेक्चर म्हणतात त्याचे एक अॅनालॉग आहे. सिस्टम मेटाफर टीमला सिस्टम सध्या कसे चालते, नवीन घटक कोठे जोडले जात आहेत आणि त्यांनी कोणते स्वरूप घेतले पाहिजे याची जाणीव देते.

· सोपेडिझाइनउपाय (सोपेडिझाइन)

कोणत्याही वेळी, सिस्टम शक्य तितक्या सोप्या पद्धतीने डिझाइन केले पाहिजे. आगाऊ वैशिष्ट्ये जोडण्याची आवश्यकता नाही - केवळ त्यासाठी स्पष्ट विनंती केल्यानंतर. सर्व अनावश्यक गुंतागुंत शोधल्याबरोबर काढून टाकली जाते.

XP या वस्तुस्थितीतून पुढे जातो की कामाच्या प्रक्रियेदरम्यान, समस्येची परिस्थिती वारंवार बदलू शकते, ज्याचा अर्थ असा आहे की विकसित केलेले उत्पादन संपूर्णपणे आगाऊ तयार केले जाऊ नये. तुम्ही पहिल्यांदा सुरू केल्यावर सुरुवातीपासून शेवटपर्यंत तपशीलवार प्रणाली डिझाइन करण्याचा प्रयत्न केल्यास, तुम्ही तुमचा वेळ वाया घालवत आहात. XP असे गृहीत धरते की डिझाइन ही एक महत्त्वाची प्रक्रिया आहे की ती संपूर्ण प्रकल्पात सतत केली जाणे आवश्यक आहे. सतत बदलत्या आवश्यकता लक्षात घेऊन डिझाइन लहान चरणांमध्ये केले पाहिजे. प्रत्येक क्षणी आम्ही सध्याच्या समस्येचे निराकरण करण्यासाठी सर्वात सोपी डिझाइन वापरण्याचा प्रयत्न करतो. त्याच वेळी, समस्येची परिस्थिती बदलल्याप्रमाणे आम्ही ते बदलतो.

· विकासवरआधारचाचणी (चाचणी- चालवलेलाविकास)

विकासक प्रथम चाचण्या लिहितात, नंतर त्यांचे मॉड्यूल लागू करण्याचा प्रयत्न करतात जेणेकरून चाचण्या कार्य करतात. ग्राहक आगाऊ चाचण्या लिहितात ज्या सिस्टमच्या मुख्य क्षमतांचे प्रदर्शन करतात जेणेकरून ते पाहू शकतील की सिस्टम खरोखर कार्य करते.

XP दोन प्रकारच्या चाचणीवर विशेष भर देते:

ь युनिट चाचणी;

b स्वीकृती चाचणी.

अत्यंत प्रोग्रामिंग सॉफ्टवेअर

विकासकाला त्याने लिहिलेल्या कोडच्या अचूकतेबद्दल खात्री असू शकत नाही जोपर्यंत तो विकसित करत असलेल्या सिस्टमच्या मॉड्यूल्सच्या सर्व चाचण्या पूर्ण केल्या जात नाहीत. युनिट चाचण्या डेव्हलपरना त्यांचा कोड योग्यरितीने काम करत असल्याचे सत्यापित करण्यास अनुमती देतात. ते इतर विकसकांना कोडचा विशिष्ट भाग का आवश्यक आहे आणि ते कसे कार्य करते हे समजून घेण्यात मदत करतात. युनिट चाचण्या डेव्हलपरला कोणतीही चिंता न करता रिफॅक्टर करण्याची परवानगी देतात.

स्वीकृती चाचण्या हे सुनिश्चित करतात की सिस्टममध्ये प्रत्यक्षात नमूद केलेल्या क्षमता आहेत. याव्यतिरिक्त, स्वीकृती चाचण्या तुम्हाला विकसित होत असलेल्या उत्पादनाच्या योग्य कार्याची पडताळणी करण्यास अनुमती देतात.

XP साठी, उच्च प्राधान्य म्हणजे TDD (टेस्ट ड्रायव्हन डेव्हलपमेंट) नावाचा दृष्टीकोन आहे, प्रथम एक चाचणी लिहिली जाते जी उत्तीर्ण होत नाही, नंतर कोड लिहिला जातो जेणेकरून चाचणी उत्तीर्ण होते, आणि त्यानंतरच कोड रिफॅक्टर केला जातो.

· स्थिरपुनर्वापर (रिफॅक्टरिंग)

हे गुपित नाही की प्रत्येक नवीन कार्यक्षमता आणि कोड वाढीमुळे विकास गुंतागुंत होतो, त्रुटी ओळखणे आणि त्यानंतरचे बदल करणे. एक्स्ट्रीम प्रोग्रामिंगच्या युक्त्यांपैकी एक म्हणजे कोड सुधारणांसह कार्यक्षमता जोडण्याची भरपाई करणे. हे कोड प्रोसेसिंग किंवा रिफॅक्टरिंग आहे.

प्रोग्रामर अनावश्यक क्लिष्टता दूर करण्यासाठी, कोडची समज वाढवण्यासाठी, त्याची लवचिकता वाढवण्यासाठी, परंतु त्याचे वर्तन न बदलता, ज्याची चाचणी प्रत्येक पुनरावृत्तीनंतर चालवून सत्यापित केली जाते, सिस्टममध्ये सतत पुन्हा काम करत असतात. त्याच वेळी, इच्छित परिणाम देण्याच्या तुलनेत अधिक मोहक आणि लवचिक समाधानांना प्राधान्य दिले जाते. अयशस्वीपणे पुन्हा डिझाइन केलेले घटक चाचणी अंमलबजावणी दरम्यान ओळखले जावे आणि शेवटच्या अखंड स्थितीत परत आणले जावे (त्यांच्यावर अवलंबून असलेल्या घटकांसह).

रिफॅक्टरिंग हे कोडची कार्यक्षमता न बदलता सुधारण्याचे तंत्र आहे. XP चा अर्थ असा आहे की एकदा कोड लिहिला गेला की, तो प्रकल्पादरम्यान अनेक वेळा पुन्हा लिहिला जाईल. XP डेव्हलपर पूर्वी लिहिलेल्या कोडमध्ये सुधारणा करण्यासाठी निर्दयपणे पुन्हा काम करतात. या प्रक्रियेला रिफॅक्टरिंग म्हणतात. चाचणी कव्हरेजच्या अभावामुळे सिस्टम खंडित होण्याच्या भीतीमुळे रिफॅक्टरला नकार दिला जातो, ज्यामुळे कोडचा हळूहळू ऱ्हास होतो.

· प्रोग्रामिंगजोडी मध्ये (जोडीप्रोग्रामिंग)

अनुभवी विकासकांच्या लक्षात आले आहे की वेळोवेळी इतर लोकांच्या कोडचे पुनरावलोकन केल्याने त्याच्या गुणवत्तेवर सकारात्मक प्रभाव पडतो. एक्स्ट्रीम प्रोग्रामिंगच्या मास्टर्सने पेअर प्रोग्रामिंग नावाच्या तंत्राद्वारे विकासादरम्यान कोडचे सतत पुनरावलोकन करून हा दृष्टिकोन विकसित केला आहे.

एका संगणकावर दोन प्रोग्रामरद्वारे कोडिंग केले जाते. पेअरिंग अनियंत्रित आहे आणि कार्यानुसार बदलते. ज्याच्या हातात कीबोर्ड आहे तो सध्याची समस्या उत्तम प्रकारे सोडवण्याचा प्रयत्न करत आहे. दुसरा प्रोग्रामर पहिल्याच्या कार्याचे विश्लेषण करतो आणि सल्ला देतो, काही निर्णयांचे परिणाम, नवीन चाचण्या, कमी थेट परंतु अधिक लवचिक उपायांचा विचार करतो. आवश्यक असल्यास, कीबोर्ड मुक्तपणे एकाकडून दुसऱ्याकडे हस्तांतरित केला जातो. प्रोजेक्टवर काम करताना, जोड्या निश्चित केल्या जात नाहीत: त्यांना मिसळण्याची शिफारस केली जाते जेणेकरून टीममधील प्रत्येक प्रोग्रामरला संपूर्ण सिस्टमची चांगली समज असेल. अशाप्रकारे, पेअर प्रोग्रामिंग टीममधील सहयोग वाढवते.

· सामूहिकताबाकोड (सामूहिकमालकी)

सामूहिक ताबायाचा अर्थ प्रत्येक कार्यसंघ सदस्य सर्व स्त्रोत कोडसाठी जबाबदार आहे. अशा प्रकारे, प्रत्येकास कार्यक्रमाच्या कोणत्याही भागामध्ये बदल करण्याचा अधिकार आहे. पेअर प्रोग्रामिंग या प्रथेला समर्थन देते: वेगवेगळ्या जोड्यांमध्ये काम करून, सर्व प्रोग्रामर सिस्टमच्या कोडच्या सर्व भागांशी परिचित होतात. सामायिक कोड मालकीचा एक महत्त्वाचा फायदा म्हणजे तो विकास प्रक्रियेला गती देतो, कारण एखादी त्रुटी आढळल्यास, कोणताही प्रोग्रामर त्याचे निराकरण करू शकतो.

प्रत्येक प्रोग्रामरला कोड बदलण्याचा अधिकार देऊन, आम्ही प्रोग्रामरद्वारे सादर केलेल्या बगचा धोका चालवतो ज्यांना वाटते की ते काय करत आहेत हे त्यांना माहित आहे परंतु विशिष्ट अवलंबनांचा विचार करत नाही. चांगल्या-परिभाषित UNIT चाचण्या या समस्येचे निराकरण करतात: जर न तपासलेल्या अवलंबित्वांमुळे त्रुटी निर्माण झाल्या, तर UNIT चाचण्यांचा पुढील रन अयशस्वी होईल.

· स्थिरएकीकरण (सततएकीकरण)

प्रणाली एकत्र केली जाते आणि शक्य तितक्या वेळा, दिवसातून अनेक वेळा, प्रत्येक वेळी दोन प्रोग्रामर पुढील कार्याची अंमलबजावणी पूर्ण करतात तेव्हा एकत्रीकरण चाचणी घेते.

तुम्ही विकसित होत असलेली प्रणाली पुरेशा प्रमाणात समाकलित केल्यास, तुम्ही त्याच्याशी संबंधित बहुतेक समस्या टाळू शकता. पारंपारिक पद्धतींमध्ये, एकीकरण सामान्यतः उत्पादनावरील कामाच्या अगदी शेवटी केले जाते, जेव्हा असे मानले जाते की सिस्टमचे सर्व घटक पूर्णपणे तयार आहेत. XP मध्ये, संपूर्ण सिस्टमचे कोड इंटिग्रेशन दिवसातून अनेक वेळा केले जाते, सर्व युनिट चाचण्या योग्यरित्या सुरू झाल्याची डेव्हलपरना खात्री झाल्यानंतर.

साधेपणा असूनही, या तंत्राचे स्वतःचे नियम आहेत, जसे की कार्यक्षमतेसाठी विद्यमान युनिट चाचण्यांचे यश, कार्यात्मक किंवा स्वीकृती चाचण्यांची उपस्थिती आणि अर्थातच, पूर्वीच्या स्थितीत परत येण्याची क्षमता. . सामान्यतः, एकात्मीकरण आणि संबंधित अडचणींचे निराकरण वेगळ्या संगणकावर दोन प्रोग्रामरद्वारे केले जाते. हे आपल्याला एकत्रीकरणाच्या अनिष्ट परिणामांचा धोका कमी करण्यास अनुमती देते.

· ४० तासकार्यरतएक आठवडा

ओव्हरटाइम काम करणे हे प्रकल्पातील मोठ्या समस्यांचे लक्षण म्हणून पाहिले जाते. सलग 2 आठवडे ओव्हरटाइम काम करण्याची परवानगी नाही - यामुळे प्रोग्रामर थकतात आणि त्यांचे कार्य लक्षणीयरीत्या कमी उत्पादक बनवते.

एखादी व्यक्ती, विशेषत: जर तो प्रोग्रामर असेल तर, व्यवसायाच्या फायद्यासाठी बरेच काही करण्यास सक्षम आहे: कामावर उशीरा राहणे, आठवड्याच्या शेवटी कामावर जाणे, सुट्टी देणे, कीबोर्डवर बसून बरेच दिवस जागे राहणे ... सर्वसाधारणपणे, आपण आपल्या आवडत्या क्रियाकलापाच्या फायद्यासाठी काय करू शकता. परंतु अत्यंत प्रोग्रामिंग स्पष्टपणे अशा आत्म-त्याग आणि स्वीकृत कामगार कायद्याच्या मानकांचे उल्लंघन करण्याच्या विरुद्ध आहे.

हे केवळ कायदेशीरपणा आणि मानवतेच्या विचारांनीच नव्हे, तर सर्व प्रथम, कार्य क्षमता आणि कठोर संघटना वाढवण्याच्या गरजेद्वारे निर्धारित केले जाते. शेवटी, अत्यंत प्रोग्रामिंग हा एक सामूहिक खेळ आहे, जो व्यक्तींसाठी नाही तर संपूर्ण गटासाठी डिझाइन केलेला आहे. आणि अशी गोष्ट, उदाहरणार्थ, जोडी प्रोग्रामिंग तेव्हाच शक्य आहे जेव्हा त्यातील सहभागींचे बायोरिदम समक्रमित केले जातात. आणि जर एक व्यक्ती नऊ वाजता कामावर आली, आणि दुसरा बारा वाजता, किंवा एकाने ठरवले की शनिवार आणि रविवारी काम करणे त्याच्यासाठी चांगले आहे, तर दुसरा गैरसोयीचा आहे.

परंतु सर्वात महत्वाची गोष्ट अशी आहे की आरोग्य आणि कार्यक्षमता टिकवून ठेवण्यासाठी व्यक्तीला योग्य विश्रांतीची आवश्यकता असते. आठ तास कामाचा दिवस आणि पाच दिवसांचा आठवडा तंतोतंत जास्तीत जास्त उत्पादकतेच्या कारणांसाठी स्थापित केला जातो. बर्‍याच पाश्चात्य कंपन्यांमध्ये, काम उशिरा सोडणे हे चांगले कार्य न करणे किंवा एखाद्याच्या कामाच्या वेळेचे योग्य व्यवस्थापन करण्यास असमर्थता मानले जाते. बहुतेक प्रकरणांमध्ये हे खरे आहे. आणि वैद्यकीय दृष्टिकोनातून, कामावर विलंब केल्याने सतत थकवा, चिडचिड आणि मेंदूची क्रिया कमी होते. हे प्रभावी आहे का? अशा टीममधील डेव्हलपर्समध्ये आम्ही सतत मुक्त संवाद कसे आयोजित करू शकतो आणि पेअर प्रोग्रामिंग शक्य होईल का? उत्तर नकारार्थी आहे. मानके मानक आहेत आणि त्यांचे पालन केले पाहिजे.

· समावेशनग्राहकव्हीसंघ (वर- जागाग्राहक)

सॉफ्टवेअर डेव्हलपमेंटमधील मुख्य समस्या ही विकसित होत असलेल्या विषयातील प्रोग्रामरचे ज्ञान नसणे आहे. अत्यंत प्रोग्रामिंगने या परिस्थितीतून मार्ग काढला आहे. नाही, ही ग्राहकाच्या एंटरप्राइझमध्ये डेव्हलपर इंटर्नशिप नाही - मग तो प्रोग्राम करू इच्छित नाही. उलट विकास प्रक्रियेत ग्राहकाचा सहभाग असतो.

विकास कार्यसंघामध्ये नेहमी ग्राहक प्रतिनिधी समाविष्ट असतो जो संपूर्ण कामकाजाच्या दिवसात उपलब्ध असतो आणि सिस्टमबद्दलच्या सर्व प्रश्नांची उत्तरे देण्यास सक्षम असतो. सिस्टमची कार्ये, त्याचा इंटरफेस, आवश्यक कार्यप्रदर्शन, कठीण परिस्थितीत सिस्टमचे योग्य ऑपरेशन, इतर अनुप्रयोगांशी संप्रेषण राखण्याची आवश्यकता इत्यादींसंबंधी कोणत्याही प्रकारच्या प्रश्नांची त्वरित उत्तरे देणे ही त्याची जबाबदारी आहे.

अनेकांना विकास प्रक्रियेत ग्राहकांचा सहभाग असण्याच्या शक्यतेवर शंका आहे. खरंच, ग्राहक वेगळे आहेत. ग्राहक किंवा त्याच्या प्रतिनिधीला आकर्षित करणे शक्य नसल्यास, काहीवेळा विकसित केल्या जात असलेल्या क्षेत्रातील तज्ञांना तात्पुरते नियुक्त करण्याचा सल्ला दिला जातो. या पायरीमुळे कामातील संदिग्धता कमी होईल, विकासाचा वेग वाढेल आणि ग्राहकाला जे प्राप्त करायचे आहे त्याच्या जवळ प्रकल्प आणेल. हे आर्थिक बाजूने देखील फायदेशीर ठरू शकते: शेवटी, प्रोग्रामरचा पगार कधीकधी इतर उद्योगांमधील तज्ञांच्या पगारापेक्षा लक्षणीय असतो.

· वापरकोडकसेसुविधासंवाद

संघातील संप्रेषणाचे सर्वात महत्त्वाचे साधन म्हणून कोडकडे पाहिले जाते. कोडची स्पष्टता ही मुख्य प्राधान्यांपैकी एक आहे. ही स्पष्टता प्रदान करणाऱ्या कोडिंग मानकांचे पालन करणे अत्यावश्यक आहे. अशा मानकांनी, कोड स्पष्टतेव्यतिरिक्त, किमान भाषा (कोड आणि माहितीची डुप्लिकेशन नाही) सुनिश्चित केली पाहिजे आणि सर्व कार्यसंघ सदस्यांनी स्वीकारली पाहिजे.

· उघडाकार्यरतजागा (उघडाकार्यक्षेत्र)

महत्त्वाच्या तांत्रिक निर्णयांचे नियोजन आणि निर्णय घेताना संप्रेषण सुलभ करण्यासाठी आणि गटचर्चा सक्षम करण्यासाठी संघाला एका बऱ्यापैकी प्रशस्त खोलीत ठेवण्यात आले आहे.

· बदलानियमद्वारेगरज (फक्तनियम)

प्रत्येक कार्यसंघ सदस्याने सूचीबद्ध केलेले नियम स्वीकारले पाहिजेत, परंतु जर गरज भासली तर, संघाचे सर्व सदस्य या बदलावर सहमत असल्यास ते बदलू शकतात.

वापरलेल्या तंत्रांवरून पाहिले जाऊ शकते, XP लहान संघांमध्ये वापरण्यासाठी डिझाइन केले आहे (10 पेक्षा जास्त प्रोग्रामर नाही), ज्यावर या तंत्राच्या लेखकांनी जोर दिला आहे. मोठ्या संघाचा आकार यशासाठी आवश्यक संवादाची सुलभता नष्ट करतो आणि सूचीबद्ध केलेल्या अनेक तंत्रांची अंमलबजावणी करणे अशक्य करते.

3.1 मूलभूत XP तंत्रे

अत्यंत प्रोग्रामिंगची बारा मूलभूत तंत्रे (पुस्तकाच्या पहिल्या आवृत्तीवर आधारित अत्यंत प्रोग्रामिंग स्पष्ट केले) चार गटांमध्ये एकत्र केले जाऊ शकते:

· लघु अभिप्राय चक्र (उत्तम प्रमाणात अभिप्राय)

o चाचणी आधारित विकास

o नियोजन खेळ

o ग्राहक नेहमी जवळ असतो (संपूर्ण टीम, ऑनसाइट ग्राहक)

o पेअर प्रोग्रामिंग

बॅच प्रक्रियेऐवजी सतत

o सतत एकात्मता

o रिफॅक्टरिंग (डिझाइन सुधारणा, रिफॅक्टर)

o वारंवार लहान प्रकाशन

· सर्वांनी सामायिक केलेली समज

o साधेपणा (साधी रचना)

o प्रणाली रूपक

o सामूहिक कोड मालकी किंवा निवडलेले डिझाइन नमुने (सामूहिक नमुन्यांची मालकी)

o कोडिंग मानक किंवा कोडींग परंपरा

· प्रोग्रामर कल्याण:

o 40-तास कामाचा आठवडा (शाश्वत गती, चाळीस तासांचा आठवडा)

एक खेळव्हीनियोजन

आपले जग परिस्थितीच्या स्थिरतेवर अवलंबून राहण्यासाठी खूप बदलणारे आणि अप्रत्याशित आहे. सॉफ्टवेअर डेव्हलपमेंटमध्येही असेच घडते: दुर्मिळ प्रणालीसह, आपण असे म्हणू शकता की त्याचे अंतिम स्वरूप विकासाच्या अगदी सुरुवातीस तपशीलवार आधीच ज्ञात होते. सामान्यतः, ग्राहकाची भूक खाताना येते: त्याला सतत काहीतरी बदलायचे असते, काहीतरी सुधारायचे असते किंवा सिस्टममधून काहीतरी पूर्णपणे काढून टाकायचे असते. ही आवश्यकतांची परिवर्तनशीलता आहे ज्याची प्रत्येकाला भीती वाटते. सुदैवाने, एखाद्या व्यक्तीला संभाव्य पर्यायांचा अंदाज घेण्याची क्षमता दिली जाते आणि अशा प्रकारे परिस्थिती नियंत्रणात ठेवली जाते.

एक्स्ट्रीम प्रोग्रामिंगमध्ये, नियोजन हा विकासाचा अविभाज्य भाग आहे आणि योजना बदलू शकतात ही वस्तुस्थिती अगदी सुरुवातीपासूनच लक्षात घेतली जाते. फुलक्रम, एक तंत्र जे तुम्हाला परिस्थितीचा अंदाज लावू देते आणि बदलांना वेदनाहीनपणे सहन करू देते, हे नियोजन खेळ आहे. अशा खेळादरम्यान, ज्ञात सिस्टम आवश्यकता त्वरीत संकलित केल्या जाऊ शकतात, मूल्यमापन आणि प्राधान्यानुसार नियोजन केले जाऊ शकते.

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

एक्स्ट्रीम प्रोग्रामिंग असे गृहीत धरते की डेव्हलपर स्वतःच ठरवू शकतात की त्यांना त्यांची कार्ये पूर्ण करण्यासाठी किती वेळ लागेल आणि त्यापैकी कोण एक समस्या सोडवण्यास अधिक इच्छुक असेल आणि कोण दुसरी.

आदर्श परिस्थितीत, पुढील विकास पुनरावृत्ती सुरू होईपर्यंत ग्राहक आणि प्रोग्रामर यांच्यातील नियोजन गेम दर 3-6 आठवड्यांनी खेळला जावा. हे मागील पुनरावृत्तीच्या यश आणि अपयशांवर आधारित समायोजन करणे सोपे करते.

4. फायदे आणि तोटे

XP चे फायदे, जर ते अंमलात आणले जाऊ शकले तर, अधिक लवचिकता, बदलत्या गरजा आणि वैयक्तिक ग्राहकांच्या इच्छेनुसार सॉफ्टवेअरमध्ये जलद आणि अचूक बदल करण्याची क्षमता, परिणामी कोडची उच्च गुणवत्ता आणि आवश्यकतेची अनुपस्थिती. ग्राहकांना पटवून द्या की परिणाम त्यांच्या अपेक्षा पूर्ण करतो.

या पद्धतीचे तोटे म्हणजे या शैलीतील पुरेशा मोठ्या आणि गुंतागुंतीच्या प्रकल्पांची अव्यवहार्यता, पुरेशा दीर्घ मुदतीसाठी प्रकल्पाची वेळ आणि गुंतागुंतीची योजना आखण्यात असमर्थता आणि गुणोत्तराच्या दृष्टीने दीर्घकालीन प्रकल्पाच्या परिणामांचा स्पष्टपणे अंदाज लावणे. निकालाची गुणवत्ता आणि वेळ आणि संसाधनांचा खर्च. हे देखील लक्षात घेतले जाऊ शकते की XP अशा प्रकरणांसाठी योग्य नाही ज्यामध्ये पूर्वी मिळवलेल्या अनुभवाच्या आधारावर संभाव्य उपाय त्वरित सापडत नाहीत, परंतु प्राथमिक संशोधन आवश्यक आहे.

5. वापराचा इतिहास

वर्णन केलेल्या तंत्रांचा संच म्हणून XP प्रथम C3 प्रकल्पावर काम करताना वापरला गेला (क्रिस्लर कॉम्प्रिहेन्सिव्ह कंपेन्सेशन सिस्टीम, डेमलर क्रिस्लर येथे कर्मचार्‍यांच्या फायद्यांचा लेखाजोखा मांडण्यासाठी सिस्टमचा विकास). या प्रकल्पातील 20 सहभागींपैकी, 5 (एक्सपीच्या वरील-उल्लेखित 3 मुख्य लेखकांसह) 3 पुस्तके आणि प्रकल्पादरम्यान आणि त्यानंतरच्या काळात XP ला वाहिलेल्या मोठ्या संख्येने लेख प्रकाशित केले. बर्‍यापैकी गुंतागुंतीच्या प्रकल्पांना लागू केल्यावर काही XP तंत्रांमधील समस्या खालील डेटा स्पष्ट करतो.

हा प्रकल्प जानेवारी १९९५ मध्ये सुरू झाला. मार्च 1996 पासून, केंट बेकच्या समावेशानंतर, ते XP वापरून चालवले जात आहे. यावेळी, ते आधीच बजेट आणि कार्ये टप्प्याटप्प्याने अंमलबजावणीसाठी योजनांच्या पलीकडे गेले होते. विकास कार्यसंघ कापला गेला आणि त्यानंतर सुमारे सहा महिने हा प्रकल्प यशस्वीरित्या विकसित झाला. ऑगस्ट 1998 मध्ये, एक प्रोटोटाइप दिसला जो सुमारे 10,000 कर्मचाऱ्यांना सेवा देऊ शकेल. प्रकल्प मूलतः 1999 च्या मध्यात पूर्ण होणे अपेक्षित होते आणि परिणामी सॉफ्टवेअर कंपनीच्या 87,000 कर्मचार्‍यांचे फायदे व्यवस्थापित करण्यासाठी वापरले जाईल. 4 वर्षे XP चालवल्यानंतर टाइम फ्रेम आणि बजेट पूर्ण करण्यात पूर्ण अपयशी ठरल्याने फेब्रुवारी 2000 मध्ये ते थांबवण्यात आले. तयार केलेले सॉफ्टवेअर 10,000 पेक्षा जास्त कर्मचार्‍यांच्या डेटासह काम करण्यासाठी कधीही वापरले गेले नाही, जरी असे दिसून आले आहे की ते 30,000 कंपनी कर्मचार्‍यांचा डेटा हाताळू शकते. प्रोजेक्ट टीममध्ये समाविष्ट असलेल्या ग्राहकाची भूमिका बजावलेल्या व्यक्तीने अशा कामाच्या काही महिन्यांनंतर काम सोडले, कामाचा भार सहन करण्यास असमर्थ, आणि प्रकल्पाच्या समाप्तीपर्यंत कधीही पुरेशी बदली मिळाली नाही.

निष्कर्ष

वरील सर्व पद्धती योगायोगाने एकत्र आणल्या जात नाहीत. त्यांचे सातत्यपूर्ण संयोजन विकास प्रक्रियेला बौद्धिक अनुनादात आणू शकते, उत्पादनाची गुणवत्ता लक्षणीयरीत्या वाढवते आणि त्याच्या प्रकाशनाची वेळ लवकर करते. सर्व अत्यंत प्रोग्रामिंगचे मुख्य सौंदर्य म्हणजे अंदाज आणि विकास खर्च कमी करणे; रिलीझच्या वेळी ग्राहकाला प्राप्त करू इच्छित असलेले उत्पादन प्रदान करणे; आणि अर्थातच, कामावर असताना विकासकांशी संवाद आणि प्रशिक्षण.

प्रस्तावित पद्धतीबद्दल मते भिन्न असू शकतात. हे समजून घेणे महत्त्वाचे आहे की एक्स्ट्रीम प्रोग्रामिंगचे उद्दिष्ट विद्यमान विकास तंत्रज्ञान बदलण्याचे नाही. उलटपक्षी, XP पारंपारिक दृष्टिकोन वापरून संघांना अतिरिक्त प्रोत्साहन देऊ शकते. तुमच्या सर्व प्रश्नांची उत्तरे तुम्ही इथे पाहू नयेत. हे प्रोग्रामिंग तंत्रज्ञान नाही, तर कामाचे आयोजन करण्याचे तंत्रज्ञान आहे आणि या स्वरूपात त्याला जीवनाचा अधिकार आहे.

Allbest.ru वर पोस्ट केले

तत्सम कागदपत्रे

    इष्टतम आणि कार्यात्मक एआरआयएस मॉडेलच्या विकासाच्या टप्प्यांचे आणि वैशिष्ट्यांचे विश्लेषण - कंपनीच्या व्यवसाय प्रक्रियेचे मॉडेलिंग करण्यासाठी IDS Scheer चे सॉफ्टवेअर उत्पादन. अत्यंत प्रोग्रामिंगच्या मूलभूत संकल्पना, पद्धती आणि दृष्टिकोनांचा अभ्यास.

    चाचणी, 06/04/2011 जोडले

    सॉफ्टवेअर डेव्हलपमेंटचे मुख्य टप्पे (सॉफ्टवेअर पॅकेज), सिस्टम आवश्यकतांचे विश्लेषण. चरण-दर-चरण तपशीलांची पद्धत. निम्न-स्तरीय आणि उच्च-स्तरीय प्रोग्रामिंग भाषा (अत्यावश्यक, ऑब्जेक्ट-ओरिएंटेड, कार्यात्मक, तार्किक).

    सादरीकरण, 10/13/2013 जोडले

    विकासाची भाषा, अंमलबजावणीचे वातावरण, विकास साधने. प्रोग्राम अंमलबजावणीसाठी आभासी वातावरणाची वैशिष्ट्ये आणि सॉफ्टवेअर उत्पादनाच्या विकासामध्ये त्यांचा विचार. सिस्टम मॅक्रो आणि विकास ग्रंथांमध्ये त्यांचा वापर. व्हिज्युअल प्रोग्रामिंग साधने.

    ट्यूटोरियल, 10/26/2013 जोडले

    सॉफ्टवेअर विश्वासार्हतेची समस्या, त्याचे निर्देशक आणि समर्थन घटक. कार्यक्रम आणि दस्तऐवजीकरण, त्रुटी प्रतिबंध विकास प्रक्रियेचे निरीक्षण करण्याच्या पद्धती. सॉफ्टवेअर डीबगिंग प्रक्रियेचे टप्पे, संरचित प्रोग्रामिंग तंत्र आणि मॉड्यूलरिटीचे सिद्धांत.

    सादरीकरण, 04/30/2014 जोडले

    मशीन कोड आणि असेंबलर. प्रथम उच्च-स्तरीय प्रोग्रामिंग भाषा. फोरट्रान प्रोग्रामिंग भाषा. ALGOL चे फायदे आणि तोटे. वैज्ञानिक आणि लेखा कार्यक्रम. बेसिक प्रोग्रामिंग भाषा तयार करताना पाळलेली मूलभूत तत्त्वे.

    अभ्यासक्रम कार्य, 06/21/2014 जोडले

    वितरित सॉफ्टवेअर डेव्हलपमेंटची संकल्पना आणि मुख्य फरक, त्याचे फायदे आणि तोटे. संकल्पनात्मक उपाय आणि विकास प्रकाराची निवड. ओपन सोर्स सॉफ्टवेअरची वैशिष्ट्ये. मुक्त स्त्रोताची कल्पना आणि विकास.

    कोर्स वर्क, 12/14/2012 जोडले

    सॉफ्टवेअर जीवन चक्र संकल्पना. तांत्रिक प्रकल्पांमध्ये दोन प्रकारचे क्रियाकलाप वेगळे केले जातात: डिझाइन आणि उत्पादन. लवचिक पद्धतींच्या अनुयायांच्या जाहीरनाम्याचे मुख्य सिद्धांत. अत्यंत प्रोग्रामिंगची मूलभूत तत्त्वे.

    सादरीकरण, 08/14/2013 जोडले

    पास्कल प्रोग्रामिंग भाषेसाठी आंतरराष्ट्रीय मानक. टर्बो पास्कल मधील ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगचे तंत्र. भाषेची चिन्हे, तिची वर्णमाला. कार्यक्रमाच्या विकासाचे टप्पे. अल्गोरिदम आणि अल्गोरिदमीकरणाची संकल्पना. पास्कलमधील कार्यक्रमांची रचना.

    अभ्यासक्रम कार्य, 02/28/2010 जोडले

    नियंत्रण प्रणालीसाठी आधुनिक सॉफ्टवेअर विकास साधने. युनिव्हर्सल प्रोग्रामिंग भाषा आणि त्यांची SCADA सिस्टमशी तुलना. मल्टीचॅनल मेजरिंग ट्रान्सड्यूसर Ш9327 वापरून सॉफ्टवेअर डेव्हलपमेंट.

    प्रबंध, 07/13/2011 जोडले

    डेल्फी प्रोग्रामिंग वातावरणात काम करण्यासाठी मूलभूत तंत्रे. साधे अनुप्रयोग तयार करण्यासाठी तंत्रज्ञानाची वैशिष्ट्ये. अनुप्रयोग विकास पर्यावरण घटकांसह कार्य करणे. माहितीचे इनपुट, संपादन, निवड आणि आउटपुट. शाखा रचना वापरण्याचे पैलू.

एक्स्ट्रीम प्रोग्रामिंग किंवा XP, एक्स्ट्रीम प्रोग्रामिंग ही एक लवचिक सॉफ्टवेअर डेव्हलपमेंट पद्धत आहे. इतर चपळ पद्धतींप्रमाणे, त्यात विशिष्ट साधने, प्रक्रिया आणि भूमिका आहेत. जरी XP च्या लेखकाने नवीन काहीही आणले नाही, परंतु चपळ विकासाच्या सर्वोत्तम पद्धती घेतल्या आणि त्यांना जास्तीत जास्त बळकट केले. म्हणूनच प्रोग्रामिंगला एक्स्ट्रीम म्हणतात.

या पद्धतीचे लेखक अमेरिकन विकसक केंट बेक आहेत. 90 च्या दशकाच्या उत्तरार्धात, त्यांनी क्रिस्लर कॉम्प्रिहेन्सिव्ह कॉम्पेन्सेशन सिस्टम प्रकल्पाचे नेतृत्व केले आणि तेथे त्यांनी अत्यंत प्रोग्रामिंगचा सराव केला. 1999 मध्ये प्रकाशित झालेल्या Extreme Programming Explained या पुस्तकात त्यांनी त्यांचा अनुभव आणि त्यांनी निर्माण केलेली संकल्पना वर्णन केली. त्यानंतर XP पद्धतींचा तपशील देणारी इतर पुस्तके आली. वॉर्ड कनिंगहॅम, मार्टिन फॉलर आणि इतरांचा देखील कार्यपद्धतीच्या विकासामध्ये सहभाग होता.

XP इतर चपळ पद्धतींपेक्षा भिन्न आहे कारण ते लागू होते फक्त सॉफ्टवेअर डेव्हलपमेंट क्षेत्रात.ते दुसऱ्या व्यवसायात किंवा दैनंदिन जीवनात जसे की स्क्रम, कानबन किंवा दुबळे वापरले जाऊ शकत नाही.

सॉफ्टवेअर उत्पादनासाठी सतत बदलत असलेल्या आवश्यकतांना तोंड देणे आणि विकासाची गुणवत्ता सुधारणे हे XP पद्धतीचे उद्दिष्ट आहे. म्हणून, XP जटिल आणि अनिश्चित प्रकल्पांसाठी योग्य आहे

XP कार्यपद्धती चार प्रक्रियेभोवती तयार केली आहे: कोडिंग, चाचणी, डिझाइन आणि ऐकणे. याव्यतिरिक्त, एक्स्ट्रीम प्रोग्रामिंगमध्ये साधेपणा, संवाद, अभिप्राय, धैर्य आणि आदर ही मूल्ये आहेत.


1. संपूर्ण टीम

XP वापरणारे सर्व प्रकल्प सहभागी एक टीम म्हणून काम करतात. यात ग्राहकाचा प्रतिनिधी समाविष्ट असणे आवश्यक आहे; हा व्यवसाय समजून घेणारा उत्पादनाचा वास्तविक अंतिम वापरकर्ता असल्यास ते अधिक चांगले आहे. ग्राहक उत्पादनासाठी आवश्यकता पुढे ठेवतो आणि कार्यक्षमतेच्या अंमलबजावणीला प्राधान्य देतो. व्यवसाय विश्लेषक त्याला मदत करू शकतात. अंमलबजावणीच्या बाजूने, संघात विकासक आणि परीक्षक, काहीवेळा संघाला मार्गदर्शन करणारा प्रशिक्षक आणि संघाला संसाधने पुरवणारा व्यवस्थापक यांचा समावेश होतो.

2. खेळाचे नियोजन

XP मध्ये नियोजन दोन टप्प्यात केले जाते - प्रकाशन नियोजन आणि पुनरावृत्ती नियोजन.

रिलीझ प्लॅनिंग दरम्यान, प्रोग्रामिंग टीम ग्राहकाला भेटते की त्याला पुढील रिलीझसाठी कोणती कार्यक्षमता मिळवायची आहे, म्हणजे 2-6 महिन्यांत. ग्राहकांच्या गरजा बर्‍याचदा अस्पष्ट असल्याने, विकसक त्या निर्दिष्ट करतात आणि त्यांचे भागांमध्ये विभाजन करतात, ज्याच्या अंमलबजावणीसाठी एका दिवसापेक्षा जास्त वेळ लागत नाही. उत्पादन कोणत्या ऑपरेटिंग वातावरणात चालेल हे ग्राहकाला समजणे महत्त्वाचे आहे.

कार्ये कार्डवर लिहिली जातात आणि ग्राहक त्यांचे प्राधान्य ठरवतो. पुढे, विकासक अंदाज करतात की प्रत्येक कार्याला किती वेळ लागेल. जेव्हा कार्यांचे वर्णन केले जाते आणि त्याचे मूल्यांकन केले जाते, तेव्हा ग्राहक दस्तऐवजीकरणाचे पुनरावलोकन करतो आणि काम सुरू करण्यासाठी पुढे जाण्याची परवानगी देतो. प्रकल्पाच्या यशस्वीतेसाठी, ग्राहक आणि प्रोग्रामिंग टीम एकाच मैदानावर खेळणे महत्वाचे आहे: ग्राहक बजेटमध्ये खरोखर आवश्यक असलेली कार्यक्षमता निवडतो आणि प्रोग्रामर त्यांच्या क्षमतेसह ग्राहकाच्या आवश्यकतांची पुरेशी तुलना करतात.

XP मध्ये, जर टीमकडे रिलीजच्या तारखेपर्यंत सर्व कार्ये पूर्ण करण्यासाठी वेळ नसेल, तर रिलीझ मागे ढकलले जात नाही, परंतु ग्राहकांसाठी सर्वात महत्वाचे असलेल्या कार्यक्षमतेचा भाग कापला जातो.

पुनरावृत्ती नियोजन केले जाते दर पंधरवड्याला, कधीकधी कमी किंवा जास्त वेळा. ग्राहक नेहमी उपस्थित असतो: तो पुढील पुनरावृत्तीसाठी कार्यक्षमता निर्धारित करतो आणि उत्पादनाच्या आवश्यकतांमध्ये बदल करतो.

3. वारंवार आवृत्ती रिलीज

XP मध्ये, आवृत्त्या वारंवार रिलीझ केल्या जातात, परंतु थोड्या कार्यक्षमतेसह. प्रथम, कार्यक्षमतेच्या थोड्या प्रमाणात चाचणी करणे आणि संपूर्ण सिस्टमची कार्यक्षमता राखणे सोपे आहे. दुसरे म्हणजे, प्रत्येक पुनरावृत्ती ग्राहकाला कार्यक्षमतेचा एक भाग प्राप्त होतो ज्यामध्ये व्यवसाय मूल्य असते.

4. वापरकर्ता चाचण्या

पुढील उत्पादन कार्याची कार्यक्षमता तपासण्यासाठी ग्राहक स्वत: स्वयंचलित स्वीकृती चाचण्या परिभाषित करतो. संघ या चाचण्या लिहितो आणि तयार कोड तपासण्यासाठी त्यांचा वापर करतो.

5. सामूहिक कोड मालकी

XP मध्ये, कोणताही विकासक कोडचा कोणताही भाग संपादित करू शकतो, कारण... कोड त्याच्या लेखकाला नियुक्त केलेला नाही. संहिता संपूर्ण टीमकडे आहे.

6. सतत कोड एकत्रीकरण

याचा अर्थ असा की कोडचे नवीन तुकडे सिस्टममध्ये त्वरित तयार केले जातात - XP कार्यसंघ दर काही तासांनी किंवा अधिक वेळा नवीन बिल्ड अपलोड करतात. प्रथम, आपण ताबडतोब पाहू शकता की नवीनतम बदल प्रणालीवर कसा परिणाम करतात. जर कोडच्या नवीन तुकड्याने काहीतरी खंडित केले, तर एक आठवड्यानंतर त्रुटी शोधणे आणि त्याचे निराकरण करणे खूप सोपे आहे. दुसरे म्हणजे, कार्यसंघ नेहमी सिस्टमच्या नवीनतम आवृत्तीसह कार्य करते.

7. कोडिंग मानके

जेव्हा प्रत्येकाकडे कोड असतो, तेव्हा सुसंगत डिझाइन मानकांचा अवलंब करणे महत्त्वाचे असते जेणेकरून कोड एखाद्या व्यावसायिकाने लिहिलेला दिसतो. तुम्ही तुमची स्वतःची मानके विकसित करू शकता किंवा रेडीमेडचा अवलंब करू शकता.

8. प्रणाली रूपक

सिस्‍टम मेटॅफोर ही सिस्‍टमची टीममध्‍ये सामायिक दृष्टी निर्माण करण्‍यासाठी परिचित असलेल्‍या एखाद्याशी तुलना आहे. सामान्यत: सिस्टम मेटाफरचा विचार त्या व्यक्तीद्वारे केला जातो जो आर्किटेक्चरची रचना करतो आणि संपूर्ण सिस्टमची कल्पना करतो.

9. स्थिर गती

XP संघ स्थिर गती राखून जास्तीत जास्त उत्पादकतेवर कार्य करतात. त्याच वेळी, अतिप्रोग्रामिंगमध्ये ओव्हरटाइमबद्दल नकारात्मक दृष्टीकोन असतो आणि 40-तासांच्या कामाच्या आठवड्याला प्रोत्साहन देते.

10. चाचणी-चालित विकास

पद्धतीच्या सर्वात कठीण पद्धतींपैकी एक. XP मध्ये, चाचणी करणे आवश्यक असलेला कोड लिहिण्यापूर्वी प्रोग्रामर स्वतः चाचण्या लिहितात. या दृष्टिकोनासह, कार्यक्षमतेचा प्रत्येक भाग 100% चाचण्यांनी व्यापलेला असेल. जेव्हा काही प्रोग्रामर रेपॉजिटरीमध्ये कोड अपलोड करतात, तेव्हा युनिट चाचण्या त्वरित चालवल्या जातात. आणि त्या सर्वांनी काम केले पाहिजे. मग विकासकांना खात्री होईल की ते योग्य दिशेने वाटचाल करत आहेत.

11. पेअर प्रोग्रामिंग

एका संगणकावर दोन विकसकांची कल्पना करा, उत्पादन कार्यक्षमतेच्या एका भागावर काम करत आहेत. हे पेअर प्रोग्रामिंग आहे, सर्वात वादग्रस्त XP सराव. जुनी म्हण "एक डोके चांगले आहे, दोन चांगले आहेत" या दृष्टिकोनाचे सार उत्तम प्रकारे स्पष्ट करते. समस्येचे निराकरण करण्यासाठी दोन पर्यायांमधून सर्वोत्तम पर्याय निवडला जातो, कोड ताबडतोब ऑप्टिमाइझ केला जातो आणि त्रुटी येण्यापूर्वीच पकडल्या जातात. परिणामी, आमच्याकडे स्वच्छ कोड आहे ज्यामध्ये दोन विकासक पारंगत आहेत.

12. साधी रचना

XP मधील साधे डिझाइन म्हणजे भविष्यातील कार्यक्षमतेचा अंदाज न लावता फक्त तुम्हाला जे हवे आहे तेच करणे. साधे डिझाइन आणि सतत रीफॅक्टरिंगचा एक समन्वयात्मक प्रभाव असतो - जेव्हा कोड सोपा असतो, तेव्हा ते ऑप्टिमाइझ करणे सोपे असते.

13. रिफॅक्टरिंग

रिफॅक्टरिंग ही नवीन आवश्यकता पूर्ण करण्यासाठी सिस्टमच्या डिझाइनमध्ये सतत सुधारणा करण्याची प्रक्रिया आहे. रिफॅक्टरिंगमध्ये डुप्लिकेट कोड काढून टाकणे, एकसंधता वाढवणे आणि कपलिंग कमी करणे समाविष्ट आहे. XP मध्ये सतत रिफॅक्टरिंगचा समावेश असतो, त्यामुळे कोड डिझाइन नेहमीच सोपे राहते.

XP फायदे आणि तोटे

XP कार्यपद्धतीमुळे त्यांच्या कार्यसंघामध्ये ते कधीही लागू करण्यात सक्षम नसलेल्या लोकांकडून बरेच विवाद आणि टीका होते.

जेव्हा कार्यसंघ XP पद्धतींपैकी किमान एक पूर्णपणे वापरतो तेव्हा एक्स्ट्रीम प्रोग्रामिंगचे फायदे समजतात. तर, कशासाठी प्रयत्न करणे योग्य आहे:

  • ग्राहकाला आवश्यक असलेले उत्पादन मिळते, जरी विकासाच्या सुरूवातीस तो स्वत: त्याच्या अंतिम स्वरूपाची कल्पना करत नसला तरीही
  • कार्यसंघ पटकन कोड बदल करतो आणि साध्या कोड डिझाइन, वारंवार नियोजन आणि प्रकाशनांद्वारे नवीन कार्यक्षमता जोडतो
  • सतत चाचणी आणि सतत एकत्रीकरणामुळे कोड नेहमी कार्य करतो
  • संघ सहज संहिता राखतो, कारण हे एका मानकानुसार लिहिलेले आहे आणि सतत रिफॅक्टर केले जाते
  • पेअर प्रोग्रामिंग, पुन्हा कामाचा अभाव, टीममध्ये ग्राहकांची उपस्थिती यामुळे विकासाचा वेग
  • उच्च कोड गुणवत्ता
  • विकासाशी संबंधित धोके कमी होतात, कारण प्रकल्पाची जबाबदारी समान रीतीने वितरीत केली जाते आणि कार्यसंघ सदस्याचे निर्गमन/आगमन प्रक्रिया खराब करणार नाही
  • विकास खर्च कमी आहे कारण टीम कोड ओरिएंटेड आहे, दस्तऐवजीकरण आणि मीटिंग नाही

सर्व फायदे असूनही, XP नेहमी कार्य करत नाही आणि त्यात अनेक कमकुवतपणा आहेत. तर, अत्यंत प्रोग्रामिंग - तोटे:

  • प्रकल्पाचे यश ग्राहकांच्या सहभागावर अवलंबून असते, जे साध्य करणे इतके सोपे नाही
  • प्रकल्पावर किती वेळ घालवला हे सांगणे कठीण आहे, कारण... सुरुवातीला आवश्यकतांची संपूर्ण यादी कोणालाही माहीत नसते
  • XP चे यश पूर्णपणे प्रोग्रामरच्या पातळीवर अवलंबून असते; कार्यपद्धती केवळ वरिष्ठ तज्ञांसह कार्य करते
  • व्यवस्थापनाचा पेअर प्रोग्रामिंगबद्दल नकारात्मक दृष्टीकोन आहे, एका ऐवजी दोन प्रोग्रामरसाठी पैसे का द्यावे हे समजत नाही
  • प्रोग्रामरसह नियमित बैठका ग्राहकांसाठी महाग आहेत
  • खूप सांस्कृतिक बदल आवश्यक आहेत
  • संरचना आणि कागदपत्रांच्या अभावामुळे, मोठ्या प्रकल्पांसाठी योग्य नाही
  • कारण चपळ पद्धती कार्यक्षमतेने केंद्रित आहेत, उत्पादनाच्या गुणवत्तेसाठी गैर-कार्यक्षम आवश्यकता वापरकर्त्याच्या कथांच्या स्वरूपात वर्णन करणे कठीण आहे.

XP तत्त्वे

त्याच्या पहिल्या पुस्तकात, केंट बेकने एक्स्ट्रीम प्रोग्रामिंगची तत्त्वे स्पष्ट केली: साधेपणा, संवाद, अभिप्राय आणि धैर्य. पुस्तकाच्या नवीन आवृत्तीत त्यांनी पाचवे तत्व जोडले - आदर.

1. साधेपणा

XP मध्ये, विकासाची सुरुवात सर्वात सोप्या उपायाने होते जी कार्यक्षमतेची सध्याची गरज पूर्ण करेल. कार्यसंघ सदस्य फक्त आता काय करणे आवश्यक आहे हे विचारात घेतात आणि उद्या, एका महिन्यात किंवा कधीही आवश्यक नसलेल्या कोड कार्यक्षमतेमध्ये ठेवू नका.

2. संप्रेषण

XP मध्ये, विकसकांमधील संप्रेषण दस्तऐवजीकरणाद्वारे नाही तर थेट केले जाते. कार्यसंघ सक्रियपणे एकमेकांशी आणि ग्राहकांशी संवाद साधतो.

3. अभिप्राय

XP मधील फीडबॅक एकाच वेळी तीन दिशांनी लागू केला जातो:

  1. मॉड्यूल्सच्या सतत चाचणी दरम्यान सिस्टमकडून अभिप्राय
  2. ग्राहकांकडून अभिप्राय, कारण तो संघाचा भाग आहे आणि लेखन स्वीकृती चाचण्यांमध्ये भाग घेतो
  3. विकास वेळेच्या नियोजनादरम्यान संघाकडून अभिप्राय.

4. धैर्य

काही अत्यंत प्रोग्रामिंग तंत्रे इतकी असामान्य आहेत की त्यांना धैर्य आणि सतत आत्म-नियंत्रण आवश्यक आहे.

5. आदर

एक्स्ट्रीम प्रोग्रामिंगमध्ये, संघाचा आदर आणि स्वाभिमान या दृष्टीने आदर पाहिला जातो. टीम सदस्यांनी संकलन, युनिट चाचण्या किंवा सहकाऱ्यांचे काम मंदावणारे बदल अपलोड करू नयेत. प्रत्येकजण उच्च दर्जाचा कोड आणि डिझाइनसाठी प्रयत्न करतो.

XP पद्धत आणि कार्य प्रक्रिया लागू करण्यासाठी अल्गोरिदम

बेक केंटने प्रकल्पातील समस्या सोडवण्यासाठी XP लागू करण्याची शिफारस केली आहे. कार्यसंघ सर्वात महत्वाची समस्या निवडतो आणि अत्यंत प्रोग्रामिंग पद्धतींपैकी एक वापरून त्याचे निराकरण करतो. नंतर अधिक सरावाने पुढील समस्येकडे जातो. या दृष्टिकोनासह, समस्या XP वापरण्यासाठी प्रेरणा म्हणून कार्य करतात आणि कार्यसंघ हळूहळू कार्यपद्धतीच्या सर्व साधनांवर प्रभुत्व मिळवतो.

XP ला विद्यमान प्रकल्पामध्ये कार्यान्वित करण्यासाठी, तुम्हाला पुढील क्षेत्रांमध्ये हळूहळू त्याच्या तंत्रात प्रभुत्व मिळवावे लागेल:

  • चाचणी
  • डिझाइन
  • नियोजन
  • व्यवस्थापन
  • विकास

चाचणी.

टीम नवीन कोड लिहिण्यापूर्वी चाचण्या तयार करते आणि हळूहळू जुन्या कोडची पुनर्रचना करते. जुन्या कोडसाठी, आवश्यकतेनुसार चाचण्या लिहिल्या जातात: जेव्हा तुम्हाला नवीन कार्यक्षमता जोडण्याची, बगचे निराकरण करण्याची किंवा जुन्या कोडचा भाग पुन्हा कार्य करण्याची आवश्यकता असते.

रचना.

कार्यसंघ नवीन कार्यक्षमता जोडण्यापूर्वी हळूहळू जुना कोड रिफॅक्टर करतो. चाचणीप्रमाणे, जुन्या कोडचे रिफॅक्टरिंग आवश्यक तेव्हाच केले जाते. त्याच वेळी, संघाने कोड रीवर्कसाठी दीर्घकालीन उद्दिष्टे तयार केली पाहिजेत आणि ती हळूहळू साध्य केली पाहिजेत.

नियोजन.

कार्यसंघाने ग्राहकांशी जवळचा संवाद साधला पाहिजे. या टप्प्यावर, त्याला विकासकांसोबत एकाच संघात काम करण्याचे फायदे सांगणे आणि त्याला संघात समाकलित करणे महत्त्वाचे आहे.

व्यवस्थापन.

XP मध्ये संक्रमणादरम्यान व्यवस्थापकांची भूमिका सर्व कार्यसंघ सदस्य नवीन नियमांनुसार कार्य करतात याची खात्री करणे आहे. नवीन वातावरणात कामाचा सामना न करणार्‍या टीम सदस्यासोबत कधी भाग घ्यायचा किंवा एखादा नवीन शोधून त्याला कामात योग्यरित्या समाकलित करायचा हे प्रकल्प व्यवस्थापक ठरवतो.

विकास.

जोड्यांमध्ये प्रोग्रामिंगसाठी वर्कस्टेशन्सच्या संघटनेसह विकासातील परिवर्तने सुरू होतात. विकासकांसाठी कितीही कठीण असले तरीही, बहुतेक वेळा जोड्यांमध्ये प्रोग्राम करणे हे पुढील आव्हान आहे.

XP पद्धतीनुसार कार्य करणार्‍या प्रकल्पामध्ये, प्रक्रियेची रचना खालीलप्रमाणे आहे:


कोण XP वापरतो

Versionone च्या 2016 च्या अभ्यासानुसार, केवळ 1% चपळ कंपन्या त्याच्या शुद्ध स्वरूपात अत्यंत प्रोग्रामिंग वापरतात. हायब्रीड स्क्रॅम आणि XP पद्धती वापरून आणखी 10% काम.


विशेष म्हणजे, जरी XP त्याच्या शुद्ध स्वरूपात सर्वात सामान्य पद्धतीपासून दूर आहे, तरीही त्याच्या पद्धती चपळ पद्धतींवर काम करणार्‍या बहुतेक कंपन्या वापरतात. त्याच अभ्यासातील डेटावरून हे सिद्ध होते:


XP वापरणाऱ्या संघांबद्दल माहिती मिळवणे सोपे नाही, परंतु असे लोक आहेत जे जाहिरात करतात की ही पद्धत त्यांच्या यशाचे कारण आहे. एक्स्ट्रीम प्रोग्रामिंगचे उदाहरण म्हणजे पिव्होटल सॉफ्टवेअर, इंक.

पिव्होटल सॉफ्टवेअर, इंक.

एक अमेरिकन सॉफ्टवेअर कंपनी जी मोठ्या डेटावर आधारित व्यवसाय विश्लेषणासाठी सॉफ्टवेअर विकसित करते आणि सल्ला सेवा प्रदान करते. फोर्ड, मर्सिडीज, बीएमडब्ल्यू, जीएपी, हुमाना, मोठ्या बँका, सरकारी संस्था, विमा कंपन्या इत्यादीद्वारे मुख्य उत्पादने वापरली जातात.

पिव्होटल हा आधुनिक विकासातील एकमेव संभाव्य पद्धती म्हणून चपळ पद्धतींचा समर्थक आहे. लवचिक पद्धतींच्या सर्व पर्यायांपैकी, कंपनीने ग्राहक आणि प्रोग्रामिंग संघांसाठी एक विजय-विजय दृष्टिकोन म्हणून XP निवडले. प्रत्येक कामाचा दिवस जाता जाता भेटीने सुरू होतो आणि 18:00 वाजता संपतो - ओव्हरटाइम नाही. पिव्होटल गेम प्लॅनिंग, पेअर प्रोग्रामिंग, सतत चाचणी, सतत एकत्रीकरण आणि इतर XP पद्धती वापरते. बर्‍याच पद्धतींसाठी, त्यांच्याकडे स्वतःचे सॉफ्टवेअर आहे.


अत्यंत प्रोग्रामिंग,
अत्यंत प्रोग्रामिंग: नियोजन,
एक्स्ट्रीम प्रोग्रामिंग: चाचणी चालित विकास / केंट बेक

पद्धतीच्या निर्मात्याकडून अत्यंत प्रोग्रामिंगवर, केंट बेक. पहिल्यापासून सुरुवात करा, जे XP संकल्पनेचे उदाहरणांसह वर्णन करते आणि त्याचे फायद्यांचे समर्थन करते. नंतर, लेखकाने आणखी अनेक पुस्तके प्रकाशित केली, जिथे त्याने वैयक्तिक XP पद्धतींचे तपशीलवार वर्णन केले.

रिफॅक्टरिंग: विद्यमान कोड / मार्टिन फॉलर सुधारणे

एक्स्ट्रीम प्रोग्रामिंग: प्रक्रिया फॉर्म्युलेशन. पहिल्या पायऱ्यांपासून ते कडू शेवटपर्यंत / केन ऑअर, रॉय मिलर

एक्स्ट्रीम प्रोग्रामिंग स्वच्छ आणि सहज राखता येण्याजोग्या कोडसाठी प्रयत्न करत असल्याने, पुस्तकांच्या सूचीमध्ये सर्व प्रकाशने समाविष्ट आहेत जी तुम्हाला चांगले प्रोग्राम कसे करावे हे शिकवतात.

संघात XP लागू करण्यासाठी अर्ज

XP पद्धतीचा वापर करून प्रकल्पांवर काम करणारे संघ चपळ प्रकल्पांसाठी कार्य व्यवस्थापक आणि सेवा वापरतात. बाजारात अशी अनेक उत्पादने आहेत, आम्ही काही उदाहरणे पाहू.


विनामूल्य आणि मुक्त स्त्रोत कार्य व्यवस्थापक. मुख्य कार्ये: एकाच वेळी अनेक प्रकल्पांवर काम करणे, लवचिक कार्य व्यवस्थापन प्रणाली, Gantt चार्ट, वेळ नियंत्रण, कागदपत्रांसह कार्य करणे, ईमेलद्वारे कार्ये तयार करणे इ.


प्रकल्पांवर सहयोग करण्यासाठी एक सोपी, सोयीस्कर सेवा. टास्क मॅनेजर, मेसेज बोर्ड, बिल्ट-इन चॅट, फाइल स्टोरेज, कॅलेंडर समाविष्ट आहे

जिरा


विशेषत: चपळ प्रकल्पांच्या विकासकांसाठी डिझाइन केलेली एक शक्तिशाली सेवा. बग ट्रॅकर आणि प्रकल्प व्यवस्थापन सेवा एकत्र करते. अनेक कार्ये तसेच इतर सेवांसह सिंक्रोनाइझेशन. विविध आकारांच्या संघांसाठी उपाय.

प्रकल्पांवर काम करणे. तुम्हाला कार्ये सेट करण्यास आणि अंमलबजावणी प्रक्रियेवर नियंत्रण ठेवण्यास, कार्यावर एकमेकांशी पत्रव्यवहार करण्यास, फिल्टर सेट करण्यास, वेळ आणि आर्थिक खर्च विचारात घेण्यास आणि फायलींसह कार्य करण्यास अनुमती देते.

निवाडा

एक्स्ट्रीम प्रोग्रामिंग ही एक लवचिक पद्धत आहे जी साध्या आर्किटेक्चरसह उच्च-गुणवत्तेच्या, कार्यक्षम कोडवर लक्ष केंद्रित करते. त्याचा उद्देश प्रकल्पांमधील अनिश्चिततेची पातळी कमी करणे आणि उत्पादनाच्या आवश्यकतांमधील बदलांना खरोखर लवचिकपणे प्रतिसाद देणे हा आहे.

ही पद्धत केवळ क्षेत्रासाठी आहे सॉफ्टवेअर विकासआणि दुसर्‍या व्यवसायासाठी अनुकूल केले जाऊ शकत नाही.

अंमलात आणण्यासाठी ही सर्वात कठीण पद्धतींपैकी एक आहे कारण त्यात तेरा पद्धतींचा समावेश आहे!

काही कंपन्या शुद्ध XP वर काम करण्याचा धोका पत्करतात, परंतु त्याच्या विकास पद्धती चपळ प्रकल्पांमध्ये सर्वाधिक लोकप्रिय आहेत. आणि त्यांच्या प्रभावीतेच्या बाजूने हा एक मजबूत युक्तिवाद आहे.

कोणीही तुम्हाला सर्व-किंवा-काहीही आधारावर XP लागू करण्यास भाग पाडत नाही. दिवसाच्या शेवटी, चपळ पद्धती त्यांच्या अनुप्रयोगामध्ये लवचिक असणे आवश्यक आहे - विशिष्ट कार्यसंघ आणि प्रकल्पाच्या गरजेनुसार.

विकास (सिस्टम फंक्शन्सद्वारे चालवलेला विकास), इ.

XP च्या लेखकांच्या मते, हे तंत्र खालील तंत्रांचे संयोजन वापरण्याइतके कृतीच्या काही सामान्य पद्धतींचे अनुसरण करत नाही. तथापि, प्रत्येक तंत्र महत्त्वाचे आहे, आणि त्याचा वापर केल्याशिवाय, विकास XP नाही असे मानले जाते, वॉर्ड कनिंगहॅम आणि रॉन जेफ्रीजसह या दृष्टिकोनाचे लेखक केंट बेक यांच्या मते.

  • थेट नियोजन खेळ

    पुढील सॉफ्टवेअर आवृत्तीपूर्वी किती काम करणे आवश्यक आहे हे शक्य तितक्या लवकर निर्धारित करणे हे त्याचे कार्य आहे. सर्वप्रथम, ग्राहकाच्या प्राधान्यक्रमांवर (म्हणजेच, त्याच्या गरजा, त्याचा व्यवसाय अधिक यशस्वीपणे चालवण्यासाठी त्याला सिस्टीममधून काय आवश्यक आहे) आणि दुसरे म्हणजे, तांत्रिक मूल्यांकनांच्या आधारावर (म्हणजेच, जटिलतेचा अंदाज) यावर आधारित निर्णय घेतला जातो. विकासाचे, सिस्टमच्या इतर घटकांसह सुसंगतता इ.). योजना वास्तविकतेपासून किंवा ग्राहकांच्या इच्छेपासून विचलित होताच बदलल्या जातात.

  • वारंवार आवृत्ती बदल (लहान प्रकाशन)

    अगदी पहिली कार्यरत आवृत्ती शक्य तितक्या लवकर दिसली पाहिजे आणि ताबडतोब वापरण्यास सुरुवात केली पाहिजे. त्यानंतरच्या आवृत्त्या बर्‍याच कमी अंतराने तयार केल्या जातात (लहान प्रोग्राममधील लहान बदलांसाठी कित्येक तासांपासून, मोठ्या प्रणालीच्या मोठ्या पुनर्कार्यासाठी एक किंवा दोन महिन्यांपर्यंत).

  • प्रणालीचे रूपक

    रूपक, संघासाठी अगदी सोप्या आणि समजण्यायोग्य स्वरूपात, सिस्टमच्या मूलभूत यंत्रणेचे वर्णन केले पाहिजे. ही संकल्पना आर्किटेक्चरची आठवण करून देणारी आहे, परंतु तांत्रिक निर्णयांचे मुख्य सार फक्त एक किंवा दोन वाक्यांशांमध्ये वर्णन केले पाहिजे.

  • साधे डिझाइन उपाय

    कोणत्याही वेळी, सिस्टम शक्य तितक्या सोप्या पद्धतीने डिझाइन केले पाहिजे. आगाऊ वैशिष्ट्ये जोडण्याची आवश्यकता नाही - केवळ त्यासाठी स्पष्ट विनंती केल्यानंतर. सर्व अनावश्यक गुंतागुंत शोधल्याबरोबर काढून टाकली जाते.

  • चाचणी-चालित विकास

    विकासक प्रथम चाचण्या लिहितात, नंतर त्यांचे मॉड्यूल लागू करण्याचा प्रयत्न करतात जेणेकरून चाचण्या कार्य करतात. ग्राहक आगाऊ चाचण्या लिहितात ज्या सिस्टमच्या मुख्य क्षमतांचे प्रदर्शन करतात जेणेकरून ते पाहू शकतील की सिस्टम खरोखर कार्य करते.

  • सतत रिफॅक्टरिंग

    प्रोग्रामर अनावश्यक क्लिष्टता दूर करण्यासाठी, कोडची समज वाढवण्यासाठी, त्याची लवचिकता वाढवण्यासाठी, परंतु त्याचे वर्तन न बदलता, ज्याची चाचणी प्रत्येक पुनरावृत्तीनंतर चालवून सत्यापित केली जाते, सिस्टममध्ये सतत पुन्हा काम करत असतात. त्याच वेळी, इच्छित परिणाम देण्याच्या तुलनेत अधिक मोहक आणि लवचिक समाधानांना प्राधान्य दिले जाते. अयशस्वीपणे पुन्हा डिझाइन केलेले घटक चाचणी अंमलबजावणी दरम्यान ओळखले जावे आणि शेवटच्या अखंड स्थितीत परत आणले जावे (त्यांच्यावर अवलंबून असलेल्या घटकांसह).

  • पेअर प्रोग्रामिंग

    एका संगणकावर दोन प्रोग्रामरद्वारे कोडिंग केले जाते. पेअरिंग अनियंत्रित आहे आणि कार्यानुसार बदलते. ज्याच्या हातात कीबोर्ड आहे तो सध्याची समस्या उत्तम प्रकारे सोडवण्याचा प्रयत्न करत आहे. दुसरा प्रोग्रामर पहिल्याच्या कार्याचे विश्लेषण करतो आणि सल्ला देतो, काही निर्णयांचे परिणाम, नवीन चाचण्या, कमी थेट परंतु अधिक लवचिक उपायांचा विचार करतो.

  • कोडची सामूहिक मालकी

    कोणत्याही वेळी, कोणताही कार्यसंघ सदस्य कोडचा कोणताही भाग बदलू शकतो. कोणाचीही स्वतःची जबाबदारी नसावी; संपूर्ण संघ सर्व संहितेसाठी जबाबदार आहे.

  • सतत एकीकरण

    प्रणाली एकत्र केली जाते आणि शक्य तितक्या वेळा, दिवसातून अनेक वेळा, प्रत्येक वेळी दोन प्रोग्रामर पुढील कार्याची अंमलबजावणी पूर्ण करतात तेव्हा एकत्रीकरण चाचणी घेते.

  • 40 तास काम आठवड्यात

    ओव्हरटाइम काम करणे हे प्रकल्पातील मोठ्या समस्यांचे लक्षण म्हणून पाहिले जाते. सलग 2 आठवडे ओव्हरटाइम काम करण्याची परवानगी नाही - यामुळे प्रोग्रामर थकतात आणि त्यांचे कार्य लक्षणीयरीत्या कमी उत्पादक बनवते.

  • संघातील ग्राहकाचा समावेश (साइटवरचा ग्राहक)

    विकास कार्यसंघामध्ये नेहमी ग्राहक प्रतिनिधी समाविष्ट असतो जो संपूर्ण कामकाजाच्या दिवसात उपलब्ध असतो आणि सिस्टमबद्दलच्या सर्व प्रश्नांची उत्तरे देण्यास सक्षम असतो. सिस्टमची कार्ये, त्याचा इंटरफेस, आवश्यक कार्यप्रदर्शन, कठीण परिस्थितीत सिस्टमचे योग्य ऑपरेशन, इतर अनुप्रयोगांशी संप्रेषण राखण्याची आवश्यकता इत्यादींसंबंधी कोणत्याही प्रकारच्या प्रश्नांची त्वरित उत्तरे देणे ही त्याची जबाबदारी आहे.

  • संप्रेषणाचे साधन म्हणून कोड वापरणे

    संघातील संप्रेषणाचे सर्वात महत्त्वाचे साधन म्हणून कोडकडे पाहिले जाते. कोडची स्पष्टता ही मुख्य प्राधान्यांपैकी एक आहे. ही स्पष्टता प्रदान करणाऱ्या कोडिंग मानकांचे पालन करणे अत्यावश्यक आहे. अशा मानकांनी, कोड स्पष्टतेव्यतिरिक्त, किमान भाषा (कोड आणि माहितीची डुप्लिकेशन नाही) सुनिश्चित केली पाहिजे आणि सर्व कार्यसंघ सदस्यांनी स्वीकारली पाहिजे.

  • कार्यक्षेत्र उघडा

    महत्त्वाच्या तांत्रिक निर्णयांचे नियोजन आणि निर्णय घेताना संप्रेषण सुलभ करण्यासाठी आणि गटचर्चा सक्षम करण्यासाठी संघाला एका बऱ्यापैकी प्रशस्त खोलीत ठेवण्यात आले आहे.

  • आवश्यकतेनुसार नियम बदलणे (फक्त नियम)

    प्रत्येक कार्यसंघ सदस्याने सूचीबद्ध केलेले नियम स्वीकारले पाहिजेत, परंतु जर गरज भासली तर, संघाचे सर्व सदस्य या बदलावर सहमत असल्यास ते बदलू शकतात.

वापरलेल्या तंत्रांवरून पाहिले जाऊ शकते, XP लहान संघांमध्ये वापरण्यासाठी डिझाइन केले आहे (10 पेक्षा जास्त प्रोग्रामर नाही), ज्यावर या तंत्राच्या लेखकांनी जोर दिला आहे. मोठ्या संघाचा आकार यशासाठी आवश्यक संवादाची सुलभता नष्ट करतो आणि सूचीबद्ध केलेल्या अनेक तंत्रांची अंमलबजावणी करणे अशक्य करते.

XP चे फायदे, जर ते अंमलात आणले जाऊ शकले तर, अधिक लवचिकता, बदलत्या गरजा आणि वैयक्तिक ग्राहकांच्या इच्छेनुसार सॉफ्टवेअरमध्ये जलद आणि अचूक बदल करण्याची क्षमता, परिणामी कोडची उच्च गुणवत्ता आणि आवश्यकतेची अनुपस्थिती. ग्राहकांना पटवून द्या की परिणाम त्यांच्या अपेक्षा पूर्ण करतो.

या पद्धतीचे तोटे म्हणजे या शैलीतील पुरेशा मोठ्या आणि गुंतागुंतीच्या प्रकल्पांची अव्यवहार्यता, पुरेशा दीर्घ मुदतीसाठी प्रकल्पाची वेळ आणि गुंतागुंतीची योजना आखण्यात असमर्थता आणि गुणोत्तराच्या दृष्टीने दीर्घकालीन प्रकल्पाच्या परिणामांचा स्पष्टपणे अंदाज लावणे. निकालाची गुणवत्ता आणि वेळ आणि संसाधनांचा खर्च. हे देखील लक्षात घेतले जाऊ शकते की XP अशा प्रकरणांसाठी योग्य नाही ज्यामध्ये पूर्वी मिळवलेल्या अनुभवाच्या आधारावर संभाव्य उपाय त्वरित सापडत नाहीत, परंतु प्राथमिक संशोधन आवश्यक आहे.

वर्णन केलेल्या तंत्रांचा संच म्हणून XP प्रथम C3 प्रकल्पावर काम करताना वापरला गेला (क्रिस्लर कॉम्प्रिहेन्सिव्ह कंपेन्सेशन सिस्टीम, डेमलर क्रिस्लर येथे कर्मचार्‍यांच्या फायद्यांचा लेखाजोखा मांडण्यासाठी सिस्टमचा विकास). या प्रकल्पातील 20 सहभागींपैकी, 5 (एक्सपीच्या वरील-उल्लेखित 3 मुख्य लेखकांसह) 3 पुस्तके आणि प्रकल्पादरम्यान आणि त्यानंतरच्या काळात XP ला वाहिलेल्या मोठ्या संख्येने लेख प्रकाशित केले. या तंत्राच्या वापराचे उदाहरण म्हणून या प्रकल्पाचा विविध स्त्रोतांमध्ये वारंवार उल्लेख केला जातो. खालील डेटा उल्लेख केलेल्या लेखांमधून संकलित केला आहे, वजा किस्सा पुरावा, आणि काही XP तंत्रांच्या समस्या अगदी जटिल प्रकल्पांना लागू केल्यावर स्पष्ट करतो.

हा प्रकल्प जानेवारी १९९५ मध्ये सुरू झाला. मार्च 1996 पासून, केंट बेकच्या समावेशानंतर, ते XP वापरून चालवले जात आहे. यावेळी, ते आधीच बजेट आणि कार्ये टप्प्याटप्प्याने अंमलबजावणीसाठी योजनांच्या पलीकडे गेले होते. विकास कार्यसंघ कापला गेला आणि त्यानंतर सुमारे सहा महिने हा प्रकल्प यशस्वीरित्या विकसित झाला. ऑगस्ट 1998 मध्ये, एक प्रोटोटाइप दिसला जो सुमारे 10,000 कर्मचाऱ्यांना सेवा देऊ शकेल. प्रकल्प मूलतः 1999 च्या मध्यात पूर्ण होणे अपेक्षित होते आणि परिणामी सॉफ्टवेअर कंपनीच्या 87,000 कर्मचार्‍यांचे फायदे व्यवस्थापित करण्यासाठी वापरले जाईल. 4 वर्षे XP चालवल्यानंतर टाइम फ्रेम आणि बजेट पूर्ण करण्यात पूर्ण अपयशी ठरल्याने फेब्रुवारी 2000 मध्ये ते थांबवण्यात आले. तयार केलेले सॉफ्टवेअर 10,000 पेक्षा जास्त कर्मचार्‍यांच्या डेटासह काम करण्यासाठी कधीही वापरले गेले नाही, जरी असे दिसून आले आहे की ते 30,000 कंपनी कर्मचार्‍यांचा डेटा हाताळू शकते. प्रोजेक्ट टीममध्ये समाविष्ट असलेल्या ग्राहकाची भूमिका बजावलेल्या व्यक्तीने अशा कामाच्या काही महिन्यांनंतर काम सोडले, कामाचा भार सहन करण्यास असमर्थ, आणि प्रकल्पाच्या समाप्तीपर्यंत कधीही पुरेशी बदली मिळाली नाही.

एक्स्ट्रीम प्रोग्रामिंग (XP) ही लवचिक सॉफ्टवेअर डेव्हलपमेंट पद्धतींपैकी एक आहे. पद्धतीचे लेखक केंट बेक, वॉर्ड कनिंगहॅम, मार्टिन फॉलर आणि इतर आहेत.

नियोजन खेळ

आपले जग परिस्थितीच्या स्थिरतेवर अवलंबून राहण्यासाठी खूप बदलणारे आणि अप्रत्याशित आहे. सॉफ्टवेअर डेव्हलपमेंटमध्येही असेच घडते: दुर्मिळ प्रणालीसह, आपण असे म्हणू शकता की त्याचे अंतिम स्वरूप विकासाच्या अगदी सुरुवातीस तपशीलवार आधीच ज्ञात होते. सामान्यतः, ग्राहकाची भूक खाताना येते: त्याला सतत काहीतरी बदलायचे असते, काहीतरी सुधारायचे असते किंवा सिस्टममधून काहीतरी पूर्णपणे काढून टाकायचे असते. ही आवश्यकतांची परिवर्तनशीलता आहे ज्याची प्रत्येकाला भीती वाटते. सुदैवाने, एखाद्या व्यक्तीला संभाव्य पर्यायांचा अंदाज घेण्याची क्षमता दिली जाते आणि अशा प्रकारे परिस्थिती नियंत्रणात ठेवली जाते.
एक्स्ट्रीम प्रोग्रामिंगमध्ये, नियोजन हा विकासाचा अविभाज्य भाग आहे आणि योजना बदलू शकतात ही वस्तुस्थिती अगदी सुरुवातीपासूनच लक्षात घेतली जाते. फुलक्रम, एक तंत्र जे तुम्हाला परिस्थितीचा अंदाज लावू देते आणि बदलांना वेदनाहीनपणे सहन करू देते, हे नियोजन खेळ आहे. अशा खेळादरम्यान, ज्ञात सिस्टम आवश्यकता त्वरीत संकलित केल्या जाऊ शकतात, मूल्यमापन आणि प्राधान्यानुसार नियोजन केले जाऊ शकते.
इतर कोणत्याही खेळाप्रमाणे, नियोजनाचे त्याचे सहभागी आणि त्याचे ध्येय असते. मुख्य आकृती अर्थातच ग्राहक आहे. तोच या किंवा त्या कार्यक्षमतेची आवश्यकता संप्रेषण करतो. प्रोग्रामर प्रत्येक कार्यक्षमतेचे अंदाजे मूल्यांकन देतात. प्लॅनिंग गेमचे सौंदर्य डेव्हलपर आणि ग्राहक यांच्यातील उद्देश आणि एकता यांच्यात आहे: विजयाच्या बाबतीत, प्रत्येकजण जिंकतो, पराभवाच्या बाबतीत, प्रत्येकजण हरतो. परंतु त्याच वेळी, प्रत्येक सहभागी त्याच्या स्वत: च्या मार्गाने विजयाकडे जातो: ग्राहक बजेटनुसार सर्वात महत्वाची कार्ये निवडतो आणि प्रोग्रामर त्यांच्या अंमलबजावणीच्या क्षमतेनुसार कार्यांचे मूल्यांकन करतो.
एक्स्ट्रीम प्रोग्रामिंग असे गृहीत धरते की डेव्हलपर स्वतःच ठरवू शकतात की त्यांना त्यांची कार्ये पूर्ण करण्यासाठी किती वेळ लागेल आणि त्यापैकी कोण एक समस्या सोडवण्यास अधिक इच्छुक असेल आणि कोण दुसरी.
आदर्श परिस्थितीत, पुढील विकास पुनरावृत्ती सुरू होईपर्यंत ग्राहक आणि प्रोग्रामर यांच्यातील नियोजन गेम दर 3-6 आठवड्यांनी खेळला जावा. हे मागील पुनरावृत्तीच्या यश आणि अपयशांवर आधारित समायोजन करणे सोपे करते.

प्रकाशन योजना

रिलीझ प्लॅन रिलीझ तारखा आणि वापरकर्ता विधाने परिभाषित करते जे त्या प्रत्येकामध्ये लागू केले जातील. यावर आधारित, तुम्ही पुढील पुनरावृत्तीसाठी फॉर्म्युलेशन निवडू शकता. पुनरावृत्ती दरम्यान, स्वीकृती चाचण्या तयार केल्या जातात आणि त्या पुनरावृत्तीमध्ये आणि त्यानंतरच्या सर्व चाचण्या प्रोग्राम योग्यरित्या कार्य करत असल्याची खात्री करण्यासाठी चालविल्या जातात. एखाद्या पुनरावृत्तीच्या शेवटी लक्षणीय अंतर किंवा शिसे असल्यास योजनेत सुधारणा केली जाऊ शकते.
पुनरावृत्ती. पुनरावृत्ती विकास प्रक्रिया गतिमान करते. तुमच्या सॉफ्टवेअरच्या कामांची खूप आधीपासून योजना करण्याची गरज नाही. त्याऐवजी, प्रत्येक पुनरावृत्तीच्या सुरुवातीला नियोजन बैठक घेणे चांगले आहे. जी गोष्ट नियोजित नव्हती ती अमलात आणण्याचा प्रयत्न करण्यात अर्थ नाही. रिलीझ योजनेनुसार रिलीझ केल्यावर या कल्पना अंमलात आणण्यासाठी आपल्याकडे अद्याप वेळ असेल.
फंक्शनॅलिटी न जोडण्याची सवय लावून आणि फॉरवर्ड प्लॅनिंग वापरून, तुम्ही बदलत्या ग्राहकांच्या गरजांशी सहज जुळवून घेऊ शकता.

पुनरावृत्ती नियोजन

सॉफ्टवेअर समस्यांचे निराकरण करण्यासाठी चरणांची योजना विकसित करण्यासाठी पुनरावृत्ती नियोजन प्रत्येक पुनरावृत्तीच्या सुरुवातीला बैठकीपासून सुरू होते. प्रत्येक पुनरावृत्ती एक ते तीन आठवड्यांपर्यंत टिकली पाहिजे. पुनरावृत्तीमधील फॉर्म्युलेशन ग्राहकासाठी त्यांचे महत्त्व लक्षात घेऊन क्रमवारी लावले जातात. याव्यतिरिक्त, कार्ये जोडली जातात जी स्वीकृती चाचण्या उत्तीर्ण करू शकली नाहीत आणि पुढील कामाची आवश्यकता आहे. चाचणी विधाने आणि परिणाम सॉफ्टवेअर समस्यांमध्ये अनुवादित केले जातात. तपशीलवार पुनरावृत्ती योजना तयार करणार्‍या कार्डांवर कार्ये लिहिली जातात. प्रत्येक समस्या सोडवण्यासाठी एक ते तीन दिवस लागतात. एका दिवसापेक्षा कमी वेळ लागणारी कार्ये एकत्रितपणे एकत्रित केली जाऊ शकतात आणि मोठी कार्ये अनेक लहान कार्यांमध्ये विभागली जाऊ शकतात. विकासक कार्ये आणि त्यांच्या पूर्ण होण्याच्या मुदतीचा अंदाज लावतात. विकासकाने कार्याच्या अंमलबजावणीची वेळ अचूकपणे निर्धारित करणे खूप महत्वाचे आहे. काही भाषेचे पुनर्मूल्यांकन करणे आणि प्रत्येक तीन किंवा पाच पुनरावृत्तीनंतर रिलीझ योजनेत सुधारणा करणे आवश्यक असू शकते - हे पूर्णपणे स्वीकार्य आहे. जर तुम्ही कामाची सर्वात महत्वाची क्षेत्रे प्रथम अंमलात आणली, तर तुमच्याकडे तुमच्या क्लायंटसाठी शक्य तितके काम करण्यासाठी नेहमीच वेळ असेल. पुनरावृत्ती विकास शैली विकास प्रक्रिया सुधारते.

सभा उभी आहे

समस्या, त्यांचे निराकरण आणि संघाची एकाग्रता बळकट करण्यासाठी दररोज सकाळी एक बैठक घेतली जाते. सर्व कार्यसंघ सदस्यांना रूची नसलेल्या लांबलचक चर्चा टाळण्यासाठी बैठक उभी असते.
ठराविक मीटिंगमध्ये, बहुतेक सहभागी काहीही योगदान देत नाहीत, फक्त इतरांना काय म्हणायचे आहे ते ऐकण्यासाठी सहभागी होतात. थोड्या प्रमाणात संवाद साधण्यासाठी मोठ्या प्रमाणात लोकांचा वेळ वाया जातो. म्हणून, मीटिंगमध्ये प्रत्येकजण असल्‍याने प्रकल्पापासून संसाधने काढून घेतली जातात आणि नियोजनात गोंधळ निर्माण होतो.
अशा प्रकारच्या संवादासाठी स्थायी बैठक आवश्यक आहे. बर्‍याच लांबलचक बैठकांपेक्षा एक लहान, अनिवार्य बैठक घेणे खूप चांगले आहे ज्यामध्ये बहुतेक विकासकांना तरीही उपस्थित राहावे लागते.
जर तुमच्या रोजच्या स्थायी बैठका असतील, तर इतर सर्व सभांना फक्त तेच लोक उपस्थित राहावे जे आवश्यक आहेत आणि टेबलवर काहीतरी आणतील. शिवाय, काही सभा टाळणे देखील शक्य आहे. मर्यादित सहभागींसह, बहुतेक मीटिंग्स मॉनिटरसमोर उत्स्फूर्तपणे आयोजित केल्या जाऊ शकतात, जिथे विचारांची देवाणघेवाण अधिक तीव्र असते.
रोजची सकाळची सभा म्हणजे वेळ वाया घालवणे नव्हे. हे तुम्हाला इतर अनेक मीटिंग टाळण्यास अनुमती देईल आणि तुम्ही त्यावर खर्च करण्यापेक्षा तुमचा जास्त वेळ वाचवू शकाल.

साधेपणा

साध्या डिझाईनला नेहमी जटिलपेक्षा कमी वेळ लागतो. म्हणून नेहमी सोप्या गोष्टी करा ज्या चालतील. जटिल कोड त्वरित बदलणे केव्हाही जलद आणि स्वस्त असते, तुम्ही त्यावर काम करण्याचा बराच वेळ घालवण्यापूर्वी. नियोजित करण्यापूर्वी कार्यशीलता न जोडता गोष्टी शक्य तितक्या सोप्या ठेवा. लक्षात ठेवा: डिझाइन सोपे ठेवणे कठीण काम आहे.

रूपक प्रणाली

वर्ग आणि पद्धतींचे नामकरण करताना संघाला समान चौकटीत ठेवण्यासाठी रूपक प्रणालीची निवड आवश्यक आहे. एकूण सिस्टम डिझाइन आणि कोडचा पुनर्वापर समजून घेण्यासाठी तुम्ही तुमच्या वस्तूंना कसे नाव देता हे खूप महत्त्वाचे आहे. जर एखाद्या विकसकाला अस्तित्वात असलेल्या ऑब्जेक्टला काय म्हणतात ते अचूकपणे सांगता येत असल्यास, यामुळे वेळेची बचत होते. तुमच्या ऑब्जेक्ट्ससाठी नामकरण प्रणाली वापरा जी प्रत्येकजण विशिष्ट सिस्टम ज्ञानाशिवाय समजू शकेल.

कामाच्या ठिकाणी ग्राहक

सॉफ्टवेअर डेव्हलपमेंटमधील मुख्य समस्या ही विकसित होत असलेल्या विषयातील प्रोग्रामरचे ज्ञान नसणे आहे. अत्यंत प्रोग्रामिंगने या परिस्थितीतून मार्ग काढला आहे. नाही, ही ग्राहकाच्या एंटरप्राइझमध्ये डेव्हलपर इंटर्नशिप नाही - मग तो प्रोग्राम करू इच्छित नाही. उलट विकास प्रक्रियेत ग्राहकाचा सहभाग असतो.
एखादा प्रोग्रामर, समस्येचे सार नीट समजून घेतल्याशिवाय आणि टेलिपाथ न बनता, ग्राहकाला काय हवे आहे याचा अंदाज लावू शकतो का? उत्तर उघड आहे. या गैरसोयीवर मात करण्याचा सर्वात सोपा मार्ग - आणि एक्स्ट्रीम प्रोग्रामिंग आम्हाला सर्वात सोपा उपाय शोधायला शिकवते - ग्राहकाला थेट प्रश्न विचारणे. अधिक कठोर पध्दतींसाठी विकसित होत असलेल्या क्षेत्राचे सर्वसमावेशक प्राथमिक विश्लेषण आवश्यक आहे. काही प्रकरणांमध्ये हे न्याय्य आहे, जरी ते अधिक महाग आहे. सांसारिक प्रकल्प चालवण्याचा वास्तविक अनुभव दर्शवितो की आगाऊ सर्व आवश्यकता गोळा करणे अशक्य आहे. शिवाय, जरी आपण असे गृहीत धरले की सर्व आवश्यकता सध्या गोळा केल्या गेल्या आहेत, तरीही एक अडचण असेल: प्रोग्राम, निसर्गातील प्रत्येक गोष्टीप्रमाणे, त्वरित तयार केले जात नाहीत आणि दरम्यानच्या काळात व्यवसाय प्रक्रिया बदलू शकतात. हे लक्षात घेतले पाहिजे.
अनेकांना विकास प्रक्रियेत ग्राहकांचा सहभाग असण्याच्या शक्यतेवर शंका आहे. खरंच, ग्राहक वेगळे आहेत. ग्राहक किंवा त्याच्या प्रतिनिधीला आकर्षित करणे शक्य नसल्यास, काहीवेळा विकसित केल्या जात असलेल्या क्षेत्रातील तज्ञांना तात्पुरते नियुक्त करण्याचा सल्ला दिला जातो. या पायरीमुळे कामातील संदिग्धता कमी होईल, विकासाचा वेग वाढेल आणि ग्राहकाला जे प्राप्त करायचे आहे त्याच्या जवळ प्रकल्प आणेल. हे आर्थिक बाजूने देखील फायदेशीर ठरू शकते: शेवटी, प्रोग्रामरचा पगार कधीकधी इतर उद्योगांमधील तज्ञांच्या पगारापेक्षा लक्षणीय असतो.
वापरकर्ता कथा. वापरकर्ता कथा (वापरकर्त्याच्या कथेसारखे काहीतरी) हे सिस्टम कसे कार्य करावे याचे वर्णन आहे. प्रत्येक युजर स्टोरी कार्डवर लिहिलेली असते आणि ती सिस्टीम कार्यक्षमतेचा काही भाग दर्शवते जी ग्राहकाच्या दृष्टिकोनातून तार्किक अर्थ देते. फॉर्म हा मजकूराचा एक किंवा दोन परिच्छेद आहे जो वापरकर्त्याला समजेल (फार तांत्रिक नाही).
यूजर स्टोरी ग्राहकाने लिहिली आहे. हे सिस्टम वापर प्रकरणांसारखेच आहेत, परंतु वापरकर्ता इंटरफेसपुरते मर्यादित नाहीत. प्रत्येक कथेसाठी, या कथेची योग्य अंमलबजावणी झाली आहे याची पुष्टी करण्यासाठी कार्यात्मक चाचण्या लिहिल्या जातात - त्यांना स्वीकृती चाचण्या देखील म्हणतात.

विकास सुरू होण्यापूर्वी चाचणी

चाचणी, त्याच्या शास्त्रीय अर्थाने, एक कंटाळवाणा प्रक्रिया आहे. सहसा ते एक परीक्षक नियुक्त करतात जो वेळोवेळी समान क्रिया करतो आणि त्या दिवसाची वाट पाहतो जेव्हा त्याची शेवटी दुसर्‍या पदावर बदली केली जाते किंवा नोकरी बदलण्याची संधी उद्भवते.
अत्यंत प्रोग्रामिंगमध्ये, चाचणीची भूमिका अधिक मनोरंजक आहे: आता चाचणी प्रथम येते आणि नंतर कोड. अद्याप अस्तित्वात नसलेल्या गोष्टीची चाचणी कशी करावी? उत्तर सोपे आणि सामान्य आहे: आपल्या विचारांची चाचणी घ्या - भविष्यातील प्रोग्राम किंवा कार्यक्षमतेकडून काय अपेक्षा करावी. हे आपल्याला प्रोग्रामरना काय करण्याची आवश्यकता आहे हे अधिक चांगल्या प्रकारे समजून घेण्यास अनुमती देईल आणि कोड लिहिल्याबरोबर त्याची कार्यक्षमता तपासा.
परंतु चाचणी देखील कार्य करू शकत नाही. मग काय, चाचणीसाठी चाचणी लिहा? आणि मग चाचणीसाठी चाचणी आणि असेच जाहिरात अनंत? अजिबात नाही. चाचणीसाठी चाचणी कोड पुनर्स्थित करेल. असे कसे? परंतु पहा: कल्पना करा की आपल्याला बोल्टच्या मध्यभागी नट निश्चित करणे आवश्यक आहे जेणेकरून ते वळणार नाही. यासाठी ते काय करत आहेत? दुसरा नट पहिल्याच्या जवळ स्क्रू करा, जेणेकरून प्रत्येक नट शेजारच्या नटला वळण्यापासून रोखेल. प्रोग्रामिंगमध्ये हे समान आहे: चाचणी कोडची चाचणी घेते आणि कोड चाचणीची चाचणी घेते.
अनुभव दर्शवितो की हा दृष्टीकोन केवळ मंद होत नाही तर विकासास गती देखील देतो. शेवटी, काय करणे आवश्यक आहे हे जाणून घेणे आणि आवश्यक प्रमाणात काम केल्याने सध्या मागणी नसलेले भाग विकण्यास नकार देऊन वेळ वाचेल.

पेअर प्रोग्रामिंग

उत्पादन प्रणालीसाठी सर्व कोड जोड्यांमध्ये लिहिलेले आहेत. दोन विकासक एकमेकांच्या शेजारी बसले आहेत. एक टाइप करत आहे, दुसरा पाहत आहे. ते वेळोवेळी बदलतात. एकट्याने काम करण्याची परवानगी नाही. जर काही कारणास्तव जोडीतील दुसर्‍याने काहीतरी चुकवले (आजारी, सेवानिवृत्त इ.), तो पहिल्याने केलेल्या सर्व बदलांचे पुनरावलोकन करण्यास बांधील आहे.
हे असामान्य वाटते, परंतु थोड्या काळासाठी अनुकूलतेनंतर, बहुतेक लोक जोड्यांमध्ये चांगले कार्य करतात. त्यांना ते आवडते कारण काम लक्षणीयरीत्या वेगाने पूर्ण होते. "एक डोके चांगले आहे, परंतु दोन चांगले आहे" हे तत्त्व लागू होते. जोडप्यांना सहसा चांगले उपाय सापडतात. याव्यतिरिक्त, कोडची गुणवत्ता लक्षणीय वाढते, त्रुटींची संख्या कमी होते आणि विकसकांमधील ज्ञानाची देवाणघेवाण वेगवान होते. एक व्यक्ती ऑब्जेक्टच्या धोरणात्मक दृष्टीवर लक्ष केंद्रित करते, तर दुसरा त्याचे गुणधर्म आणि पद्धती लागू करतो.

पोझिशन्स बदलणे

पुढील पुनरावृत्ती दरम्यान, सर्व कामगारांना कामाच्या नवीन भागात हलविले जावे. ज्ञानाचे पृथक्करण टाळण्यासाठी आणि अडथळे दूर करण्यासाठी अशा हालचाली आवश्यक आहेत. जोडी प्रोग्रामिंगमधील विकसकांपैकी एकाची जागा घेणे विशेषतः फलदायी आहे.

सामूहिक कोड मालकी

सामायिक कोड मालकी विकासकांना केवळ त्यांच्या स्वतःच्या मॉड्यूल्ससाठी नव्हे तर प्रकल्पाच्या सर्व भागांसाठी कल्पना सबमिट करण्यास प्रोत्साहित करते. कोणताही विकासक कार्यक्षमता वाढवण्यासाठी आणि बगचे निराकरण करण्यासाठी कोणताही कोड बदलू शकतो.
पहिल्या दृष्टीक्षेपात तो अनागोंदी असल्याचे दिसते. तथापि, कमीतकमी कोणताही कोड काही विकासकांनी तयार केला आहे हे लक्षात घेऊन, त्या चाचण्या आपल्याला बदलांची शुद्धता तपासण्याची परवानगी देतात आणि वास्तविक जीवनात आपल्याला अद्याप कोणाचा तरी कोड एक किंवा दुसर्या मार्गाने समजून घेणे आवश्यक आहे. हे स्पष्ट होते की कोडची सामूहिक मालकी बदल करणे खूप सोपे करते आणि एक किंवा दुसर्या टीम सदस्याच्या उच्च स्पेशलायझेशनशी संबंधित जोखीम कमी करते.

कोडिंग अधिवेशन

तुम्ही एका टीमचा भाग आहात जे या प्रकल्पावर बर्याच काळापासून काम करत आहे. लोक येतात आणि जातात. कोणीही एकटा कोड करत नाही आणि कोड प्रत्येकाचा आहे. असे काही वेळा असतील जेव्हा तुम्हाला दुसर्‍याचा कोड समजून घेणे आणि समायोजित करणे आवश्यक असते. डेव्हलपर डुप्लिकेट कोड काढतील किंवा बदलतील, इतर लोकांच्या वर्गाचे विश्लेषण आणि सुधारणा करतील इ. कालांतराने, विशिष्ट वर्गाचा लेखक कोण आहे हे सांगणे अशक्य होईल.
म्हणून, प्रत्येकाने सामान्य कोडिंग मानकांचे पालन केले पाहिजे - कोड स्वरूपन, वर्गांचे नामकरण, चल, स्थिरांक, टिप्पणी शैली. अशा प्रकारे, आम्ही खात्री बाळगू की जेव्हा आम्ही दुसर्‍याच्या कोडमध्ये बदल करतो (जे आक्रमक आणि अत्यंत प्रगतीसाठी आवश्यक आहे), तेव्हा आम्ही ते बॅबल पॅंडेमोनियममध्ये बदलणार नाही.
उपरोक्तचा अर्थ असा आहे की सर्व कार्यसंघ सदस्यांनी सामान्य कोडिंग मानकांवर सहमत असणे आवश्यक आहे. कोणते हे महत्त्वाचे नाही. सर्वांनी त्यांचे पालन करावे असा नियम आहे. ज्यांना त्यांचे पालन करायचे नाही ते संघ सोडतात.

वारंवार एकत्रीकरण

विकसकांनी शक्य असल्यास दर काही तासांनी त्यांचा कोड समाकलित करून सोडला पाहिजे. कोणत्याही परिस्थितीत, आपण कधीही बदल एका दिवसापेक्षा जास्त ठेवू नये. वारंवार एकत्रीकरण विकासामध्ये परकेपणा आणि विखंडन टाळते, जेथे विकासक कल्पना सामायिक करण्याच्या किंवा कोडचा पुनर्वापर करण्याच्या अर्थाने संवाद साधू शकत नाहीत. प्रत्येकाने नवीनतम आवृत्ती चालवली पाहिजे.
विकासकांच्या प्रत्येक जोडीने शक्य तितक्या लवकर त्यांच्या कोडमध्ये योगदान दिले पाहिजे. जेव्हा सर्व युनिट टेस्ट 100% उत्तीर्ण होतात तेव्हा हे होऊ शकते. दिवसातून अनेक वेळा बदल सबमिट करून, तुम्ही एकीकरण समस्या जवळजवळ शून्यावर कमी करता. एकत्रीकरण ही "आता पैसे द्या किंवा नंतर अधिक पैसे द्या" क्रियाकलाप आहे. म्हणून, दररोज लहान वाढीमध्ये बदल एकत्रित करून, तुम्हाला प्रकल्प वितरित होण्यापूर्वी सिस्टम एकत्र बांधण्यासाठी एक आठवडा घालवावा लागणार नाही. नेहमी सिस्टमच्या नवीनतम आवृत्तीवर कार्य करा.

चाळीस तास कामाचा आठवडा

एखादी व्यक्ती, विशेषत: जर तो प्रोग्रामर असेल तर, व्यवसायाच्या फायद्यासाठी बरेच काही करण्यास सक्षम आहे: कामावर उशीरा राहणे, आठवड्याच्या शेवटी कामावर जाणे, सुट्टी देणे, कीबोर्डवर बसून बरेच दिवस जागे राहणे ... सर्वसाधारणपणे, आपण आपल्या आवडत्या क्रियाकलापाच्या फायद्यासाठी काय करू शकता. परंतु अत्यंत प्रोग्रामिंग स्पष्टपणे अशा आत्म-त्याग आणि स्वीकृत कामगार कायद्याच्या मानकांचे उल्लंघन करण्याच्या विरुद्ध आहे.
हे केवळ कायदेशीरपणा आणि मानवतेच्या विचारांनीच नव्हे, तर सर्व प्रथम, कार्य क्षमता आणि कठोर संघटना वाढवण्याच्या गरजेद्वारे निर्धारित केले जाते. शेवटी, अत्यंत प्रोग्रामिंग हा एक सामूहिक खेळ आहे, जो व्यक्तींसाठी नाही तर संपूर्ण गटासाठी डिझाइन केलेला आहे. आणि अशी गोष्ट, उदाहरणार्थ, जोडी प्रोग्रामिंग तेव्हाच शक्य आहे जेव्हा त्यातील सहभागींचे बायोरिदम समक्रमित केले जातात. आणि जर एक व्यक्ती नऊ वाजता कामावर आली, आणि दुसरा बारा वाजता, किंवा एकाने ठरवले की शनिवार आणि रविवारी काम करणे त्याच्यासाठी चांगले आहे, तर दुसरा गैरसोयीचा आहे.
परंतु सर्वात महत्वाची गोष्ट अशी आहे की आरोग्य आणि कार्यक्षमता टिकवून ठेवण्यासाठी व्यक्तीला योग्य विश्रांतीची आवश्यकता असते. आठ तास कामाचा दिवस आणि पाच दिवसांचा आठवडा तंतोतंत जास्तीत जास्त उत्पादकतेच्या कारणांसाठी स्थापित केला जातो. बर्‍याच पाश्चात्य कंपन्यांमध्ये, काम उशिरा सोडणे हे चांगले कार्य न करणे किंवा एखाद्याच्या कामाच्या वेळेचे योग्य व्यवस्थापन करण्यास असमर्थता मानले जाते. बहुतेक प्रकरणांमध्ये हे खरे आहे. आणि वैद्यकीय दृष्टिकोनातून, कामावर विलंब केल्याने सतत थकवा, चिडचिड आणि मेंदूची क्रिया कमी होते. हे प्रभावी आहे का? अशा टीममधील डेव्हलपर्समध्ये आम्ही सतत मुक्त संवाद कसे आयोजित करू शकतो आणि पेअर प्रोग्रामिंग शक्य होईल का? उत्तर नकारार्थी आहे. मानके मानक आहेत आणि त्यांचे पालन केले पाहिजे.

निष्कर्ष

या पद्धती योगायोगाने एकत्र ठेवल्या जात नाहीत. त्यांचे सातत्यपूर्ण संयोजन विकास प्रक्रियेला बौद्धिक अनुनादात आणू शकते, उत्पादनाची गुणवत्ता लक्षणीयरीत्या वाढवते आणि त्याच्या प्रकाशनाची वेळ लवकर करते. सर्व अत्यंत प्रोग्रामिंगचे मुख्य सौंदर्य म्हणजे अंदाज आणि विकास खर्च कमी करणे; रिलीझच्या वेळी ग्राहकाला प्राप्त करू इच्छित असलेले उत्पादन प्रदान करणे; आणि अर्थातच, कामावर असताना विकासकांशी संवाद आणि प्रशिक्षण.

संदर्भग्रंथ:

एक्स्ट्रीम प्रोग्रामिंग (XP) बॉटम-अप सॉफ्टवेअर डेव्हलपमेंटची उत्क्रांती पद्धत म्हणून उदयास आली. हा दृष्टिकोन तथाकथित चपळ विकास पद्धतीचे उदाहरण आहे. "लाइव्ह" पद्धतींच्या गटामध्ये, अत्यंत प्रोग्रामिंग व्यतिरिक्त, पद्धती SCRUM, DSDM (डायनॅमिक सिस्टम्स डेव्हलपमेंट मेथड, डायनॅमिक सिस्टम विकसित करण्याची पद्धत), वैशिष्ट्य-चालित विकास (सिस्टम फंक्शन्सद्वारे चालवलेला विकास) इ.

लाइव्ह सॉफ्टवेअर डेव्हलपमेंटची मूलभूत तत्त्वे 2000 मध्ये प्रकट झालेल्या थेट विकास जाहीरनाम्यात समाविष्ट आहेत.

  • · प्रकल्पात सामील असलेले लोक आणि त्यांचा संवाद प्रक्रिया आणि साधनांपेक्षा अधिक महत्त्वाचा असतो.
  • · सर्वसमावेशक दस्तऐवजीकरणापेक्षा कार्यरत कार्यक्रम अधिक महत्त्वाचा असतो.
  • · कराराच्या तपशिलांवर चर्चा करण्यापेक्षा ग्राहकासोबतचे सहकार्य महत्त्वाचे आहे.
  • · योजनांना चिकटून राहण्यापेक्षा बदलांमधून कार्य करणे अधिक महत्त्वाचे आहे.

सॉफ्टवेअर डेव्हलपमेंटच्या अत्याधिक नोकरशाहीचा निषेध म्हणून "जिवंत" पद्धती दिसून आल्या, अंतिम निकाल मिळविण्यासाठी आवश्यक नसलेल्या बाजूच्या कागदपत्रांची विपुलता, ज्या बहुतेक "जड" प्रक्रियांनुसार प्रकल्प राबविताना तयार कराव्या लागतात. , संस्थेच्या निश्चित प्रक्रियेस समर्थन देण्यासाठी अतिरिक्त कार्य, जसे की आत आवश्यक आहे, उदाहरणार्थ, CMM. अशा प्रकारचे बहुतेक काम आणि दस्तऐवज थेट सॉफ्टवेअर डेव्हलपमेंट आणि गुणवत्ता हमीशी संबंधित नाहीत, परंतु विकास कराराच्या औपचारिक कलमांचे पालन करणे, विविध मानकांचे पालन करण्यासाठी प्रमाणपत्रे प्राप्त करणे आणि पुष्टी करणे या हेतूने आहेत.

"लाइव्ह" पद्धती विकासकांना त्यांचे बहुतेक प्रयत्न विकास कार्यांवर आणि वास्तविक वापरकर्त्याच्या गरजा पूर्ण करण्यावर केंद्रित करण्यास अनुमती देतात. दस्तऐवजांच्या ढिगाऱ्यांची अनुपस्थिती आणि त्यांना सुसंगत स्थितीत ठेवण्याची आवश्यकता आपल्याला आवश्यकतेतील बदलांना आणि भविष्यातील कार्यक्रमास कार्य करावे लागेल अशा वातावरणात अधिक जलद आणि कार्यक्षमतेने प्रतिसाद देऊ देते.

तथापि, XP ची स्वतःची विकास प्रक्रिया आकृती आहे (जरी, साधारणपणे बोलायचे झाले तर, "विकास प्रक्रिया" ची बर्‍याच प्रमाणात कठोर कृती योजना म्हणून वापरली जाणारी समज "जिवंत" विकासाच्या कल्पनेला विरोध करते), आकृती 1 मध्ये दर्शविलेले आहे. .

XP च्या लेखकांच्या मते, हे तंत्र खालील तंत्रांचे संयोजन वापरण्याइतके कृतीच्या काही सामान्य पद्धतींचे अनुसरण करत नाही. तथापि, प्रत्येक तंत्र महत्त्वाचे आहे, आणि त्याचा वापर केल्याशिवाय, विकास XP नाही असे मानले जाते, वॉर्ड कनिंगहॅम आणि रॉन जेफ्रीजसह या दृष्टिकोनाचे लेखक केंट बेक यांच्या मते.

· राहतात नियोजन खेळ)

पुढील सॉफ्टवेअर आवृत्तीपूर्वी किती काम करणे आवश्यक आहे हे शक्य तितक्या लवकर निर्धारित करणे हे त्याचे कार्य आहे. सर्वप्रथम, ग्राहकाच्या प्राधान्यक्रमांवर (म्हणजेच, त्याच्या गरजा, त्याचा व्यवसाय अधिक यशस्वीपणे चालवण्यासाठी त्याला सिस्टीममधून काय आवश्यक आहे) आणि दुसरे म्हणजे, तांत्रिक मूल्यांकनांच्या आधारावर (म्हणजेच, जटिलतेचा अंदाज) यावर आधारित निर्णय घेतला जातो. विकासाचे, सिस्टमच्या इतर घटकांसह सुसंगतता इ.). योजना वास्तविकतेपासून किंवा ग्राहकांच्या इच्छेपासून विचलित होताच बदलल्या जातात.

आकृती क्रं 1

· वारंवार बदल आवृत्त्या (लहान प्रकाशन)

अगदी पहिली कार्यरत आवृत्ती शक्य तितक्या लवकर दिसली पाहिजे आणि ताबडतोब वापरण्यास सुरुवात केली पाहिजे. त्यानंतरच्या आवृत्त्या बर्‍याच कमी अंतराने तयार केल्या जातात (लहान प्रोग्राममधील लहान बदलांसाठी कित्येक तासांपासून, मोठ्या प्रणालीच्या मोठ्या पुनर्कार्यासाठी एक किंवा दोन महिन्यांपर्यंत). उत्पादनाच्या आवृत्त्या (रिलीझ) शक्य तितक्या वेळा सेवेमध्ये सोडल्या पाहिजेत. प्रत्येक आवृत्ती पूर्ण होण्यासाठी शक्य तितका कमी वेळ लागेल. शिवाय, प्रत्येक आवृत्ती व्यवसायासाठी उपयुक्ततेच्या दृष्टीने पुरेशी अर्थपूर्ण असणे आवश्यक आहे.

· प्रणालीचे रूपक

रूपक, संघासाठी अगदी सोप्या आणि समजण्यायोग्य स्वरूपात, सिस्टमच्या मूलभूत यंत्रणेचे वर्णन केले पाहिजे. ही संकल्पना आर्किटेक्चरची आठवण करून देणारी आहे, परंतु तांत्रिक निर्णयांचे मुख्य सार फक्त एक किंवा दोन वाक्यांशांमध्ये वर्णन केले पाहिजे.

आर्किटेक्चर म्हणजे सिस्टमच्या घटकांची आणि ते एकमेकांशी कसे जोडलेले आहेत याची काही कल्पना. सिस्टममध्ये काही नवीन कार्यक्षमता कुठे जोडली जात आहे आणि काही नवीन घटक कशाशी संवाद साधतील हे समजून घेण्यासाठी विकासक आर्किटेक्चरचा वापर करतात.

सिस्टीम मेटाफोर हे बहुतेक तंत्रांमध्ये आर्किटेक्चर म्हणतात त्याचे एक अॅनालॉग आहे. सिस्टम मेटाफर टीमला सिस्टम सध्या कसे चालते, नवीन घटक कोठे जोडले जात आहेत आणि त्यांनी कोणते स्वरूप घेतले पाहिजे याची जाणीव देते.

· सोपे डिझाइन उपाय (साधे डिझाइन)

कोणत्याही वेळी, सिस्टम शक्य तितक्या सोप्या पद्धतीने डिझाइन केले पाहिजे. आगाऊ वैशिष्ट्ये जोडण्याची आवश्यकता नाही - केवळ त्यासाठी स्पष्ट विनंती केल्यानंतर. सर्व अनावश्यक गुंतागुंत शोधल्याबरोबर काढून टाकली जाते.

XP या वस्तुस्थितीतून पुढे जातो की कामाच्या प्रक्रियेदरम्यान, समस्येची परिस्थिती वारंवार बदलू शकते, ज्याचा अर्थ असा आहे की विकसित केलेले उत्पादन संपूर्णपणे आगाऊ तयार केले जाऊ नये. तुम्ही पहिल्यांदा सुरू केल्यावर सुरुवातीपासून शेवटपर्यंत तपशीलवार प्रणाली डिझाइन करण्याचा प्रयत्न केल्यास, तुम्ही तुमचा वेळ वाया घालवत आहात. XP असे गृहीत धरते की डिझाइन ही एक महत्त्वाची प्रक्रिया आहे की ती संपूर्ण प्रकल्पात सतत केली जाणे आवश्यक आहे. सतत बदलत्या आवश्यकता लक्षात घेऊन डिझाइन लहान चरणांमध्ये केले पाहिजे. प्रत्येक क्षणी आम्ही सध्याच्या समस्येचे निराकरण करण्यासाठी सर्वात सोपी डिझाइन वापरण्याचा प्रयत्न करतो. त्याच वेळी, समस्येची परिस्थिती बदलल्याप्रमाणे आम्ही ते बदलतो.

· विकास वर आधार चाचणी (चाचणी-चालित विकास)

विकासक प्रथम चाचण्या लिहितात, नंतर त्यांचे मॉड्यूल लागू करण्याचा प्रयत्न करतात जेणेकरून चाचण्या कार्य करतात. ग्राहक आगाऊ चाचण्या लिहितात ज्या सिस्टमच्या मुख्य क्षमतांचे प्रदर्शन करतात जेणेकरून ते पाहू शकतील की सिस्टम खरोखर कार्य करते.

XP दोन प्रकारच्या चाचणीवर विशेष भर देते:

ь युनिट चाचणी;

b स्वीकृती चाचणी.

अत्यंत प्रोग्रामिंग सॉफ्टवेअर

विकासकाला त्याने लिहिलेल्या कोडच्या अचूकतेबद्दल खात्री असू शकत नाही जोपर्यंत तो विकसित करत असलेल्या सिस्टमच्या मॉड्यूल्सच्या सर्व चाचण्या पूर्ण केल्या जात नाहीत. युनिट चाचण्या डेव्हलपरना त्यांचा कोड योग्यरितीने काम करत असल्याचे सत्यापित करण्यास अनुमती देतात. ते इतर विकसकांना कोडचा विशिष्ट भाग का आवश्यक आहे आणि ते कसे कार्य करते हे समजून घेण्यात मदत करतात. युनिट चाचण्या डेव्हलपरला कोणतीही चिंता न करता रिफॅक्टर करण्याची परवानगी देतात.

स्वीकृती चाचण्या हे सुनिश्चित करतात की सिस्टममध्ये प्रत्यक्षात नमूद केलेल्या क्षमता आहेत. याव्यतिरिक्त, स्वीकृती चाचण्या तुम्हाला विकसित होत असलेल्या उत्पादनाच्या योग्य कार्याची पडताळणी करण्यास अनुमती देतात.

XP साठी, उच्च प्राधान्य म्हणजे TDD (टेस्ट ड्रायव्हन डेव्हलपमेंट) नावाचा दृष्टीकोन आहे, प्रथम एक चाचणी लिहिली जाते जी उत्तीर्ण होत नाही, नंतर कोड लिहिला जातो जेणेकरून चाचणी उत्तीर्ण होते, आणि त्यानंतरच कोड रिफॅक्टर केला जातो.

· स्थिर रिफॅक्टरिंग

हे गुपित नाही की प्रत्येक नवीन कार्यक्षमता आणि कोड वाढीमुळे विकास गुंतागुंत होतो, त्रुटी ओळखणे आणि त्यानंतरचे बदल करणे. एक्स्ट्रीम प्रोग्रामिंगच्या युक्त्यांपैकी एक म्हणजे कोड सुधारणांसह कार्यक्षमता जोडण्याची भरपाई करणे. हे कोड प्रोसेसिंग किंवा रिफॅक्टरिंग आहे.

प्रोग्रामर अनावश्यक क्लिष्टता दूर करण्यासाठी, कोडची समज वाढवण्यासाठी, त्याची लवचिकता वाढवण्यासाठी, परंतु त्याचे वर्तन न बदलता, ज्याची चाचणी प्रत्येक पुनरावृत्तीनंतर चालवून सत्यापित केली जाते, सिस्टममध्ये सतत पुन्हा काम करत असतात. त्याच वेळी, इच्छित परिणाम देण्याच्या तुलनेत अधिक मोहक आणि लवचिक समाधानांना प्राधान्य दिले जाते. अयशस्वीपणे पुन्हा डिझाइन केलेले घटक चाचणी अंमलबजावणी दरम्यान ओळखले जावे आणि शेवटच्या अखंड स्थितीत परत आणले जावे (त्यांच्यावर अवलंबून असलेल्या घटकांसह).

रिफॅक्टरिंग हे कोडची कार्यक्षमता न बदलता सुधारण्याचे तंत्र आहे. XP चा अर्थ असा आहे की एकदा कोड लिहिला गेला की, तो प्रकल्पादरम्यान अनेक वेळा पुन्हा लिहिला जाईल. XP डेव्हलपर पूर्वी लिहिलेल्या कोडमध्ये सुधारणा करण्यासाठी निर्दयपणे पुन्हा काम करतात. या प्रक्रियेला रिफॅक्टरिंग म्हणतात. चाचणी कव्हरेजच्या अभावामुळे सिस्टम खंडित होण्याच्या भीतीमुळे रिफॅक्टरला नकार दिला जातो, ज्यामुळे कोडचा हळूहळू ऱ्हास होतो.

· प्रोग्रामिंग जोड्या प्रोग्रामिंग)

अनुभवी विकासकांच्या लक्षात आले आहे की वेळोवेळी इतर लोकांच्या कोडचे पुनरावलोकन केल्याने त्याच्या गुणवत्तेवर सकारात्मक प्रभाव पडतो. एक्स्ट्रीम प्रोग्रामिंगच्या मास्टर्सने पेअर प्रोग्रामिंग नावाच्या तंत्राद्वारे विकासादरम्यान कोडचे सतत पुनरावलोकन करून हा दृष्टिकोन विकसित केला आहे.

एका संगणकावर दोन प्रोग्रामरद्वारे कोडिंग केले जाते. पेअरिंग अनियंत्रित आहे आणि कार्यानुसार बदलते. ज्याच्या हातात कीबोर्ड आहे तो सध्याची समस्या उत्तम प्रकारे सोडवण्याचा प्रयत्न करत आहे. दुसरा प्रोग्रामर पहिल्याच्या कार्याचे विश्लेषण करतो आणि सल्ला देतो, काही निर्णयांचे परिणाम, नवीन चाचण्या, कमी थेट परंतु अधिक लवचिक उपायांचा विचार करतो. आवश्यक असल्यास, कीबोर्ड मुक्तपणे एकाकडून दुसऱ्याकडे हस्तांतरित केला जातो. प्रोजेक्टवर काम करताना, जोड्या निश्चित केल्या जात नाहीत: त्यांना मिसळण्याची शिफारस केली जाते जेणेकरून टीममधील प्रत्येक प्रोग्रामरला संपूर्ण सिस्टमची चांगली समज असेल. अशाप्रकारे, पेअर प्रोग्रामिंग टीममधील सहयोग वाढवते.

· सामूहिक ताबा कोड (सामूहिक मालकी)

सामूहिक ताबायाचा अर्थ प्रत्येक कार्यसंघ सदस्य सर्व स्त्रोत कोडसाठी जबाबदार आहे. अशा प्रकारे, प्रत्येकास कार्यक्रमाच्या कोणत्याही भागामध्ये बदल करण्याचा अधिकार आहे. पेअर प्रोग्रामिंग या प्रथेला समर्थन देते: वेगवेगळ्या जोड्यांमध्ये काम करून, सर्व प्रोग्रामर सिस्टमच्या कोडच्या सर्व भागांशी परिचित होतात. सामायिक कोड मालकीचा एक महत्त्वाचा फायदा म्हणजे तो विकास प्रक्रियेला गती देतो, कारण एखादी त्रुटी आढळल्यास, कोणताही प्रोग्रामर त्याचे निराकरण करू शकतो.

प्रत्येक प्रोग्रामरला कोड बदलण्याचा अधिकार देऊन, आम्ही प्रोग्रामरद्वारे सादर केलेल्या बगचा धोका चालवतो ज्यांना वाटते की ते काय करत आहेत हे त्यांना माहित आहे परंतु विशिष्ट अवलंबनांचा विचार करत नाही. चांगल्या-परिभाषित UNIT चाचण्या या समस्येचे निराकरण करतात: जर न तपासलेल्या अवलंबित्वांमुळे त्रुटी निर्माण झाल्या, तर UNIT चाचण्यांचा पुढील रन अयशस्वी होईल.

· स्थिर एकीकरण (सतत एकत्रीकरण)

प्रणाली एकत्र केली जाते आणि शक्य तितक्या वेळा, दिवसातून अनेक वेळा, प्रत्येक वेळी दोन प्रोग्रामर पुढील कार्याची अंमलबजावणी पूर्ण करतात तेव्हा एकत्रीकरण चाचणी घेते.

तुम्ही विकसित होत असलेली प्रणाली पुरेशा प्रमाणात समाकलित केल्यास, तुम्ही त्याच्याशी संबंधित बहुतेक समस्या टाळू शकता. पारंपारिक पद्धतींमध्ये, एकीकरण सामान्यतः उत्पादनावरील कामाच्या अगदी शेवटी केले जाते, जेव्हा असे मानले जाते की सिस्टमचे सर्व घटक पूर्णपणे तयार आहेत. XP मध्ये, संपूर्ण सिस्टमचे कोड इंटिग्रेशन दिवसातून अनेक वेळा केले जाते, सर्व युनिट चाचण्या योग्यरित्या सुरू झाल्याची डेव्हलपरना खात्री झाल्यानंतर.

साधेपणा असूनही, या तंत्राचे स्वतःचे नियम आहेत, जसे की कार्यक्षमतेसाठी विद्यमान युनिट चाचण्यांचे यश, कार्यात्मक किंवा स्वीकृती चाचण्यांची उपस्थिती आणि अर्थातच, पूर्वीच्या स्थितीत परत येण्याची क्षमता. . सामान्यतः, एकात्मीकरण आणि संबंधित अडचणींचे निराकरण वेगळ्या संगणकावर दोन प्रोग्रामरद्वारे केले जाते. हे आपल्याला एकत्रीकरणाच्या अनिष्ट परिणामांचा धोका कमी करण्यास अनुमती देते.

· ४० तास कार्यरत एक आठवडा

ओव्हरटाइम काम करणे हे प्रकल्पातील मोठ्या समस्यांचे लक्षण म्हणून पाहिले जाते. सलग 2 आठवडे ओव्हरटाइम काम करण्याची परवानगी नाही - यामुळे प्रोग्रामर थकतात आणि त्यांचे कार्य लक्षणीयरीत्या कमी उत्पादक बनवते.

एखादी व्यक्ती, विशेषत: जर तो प्रोग्रामर असेल तर, व्यवसायाच्या फायद्यासाठी बरेच काही करण्यास सक्षम आहे: कामावर उशीरा राहणे, आठवड्याच्या शेवटी कामावर जाणे, सुट्टी देणे, कीबोर्डवर बसून बरेच दिवस जागे राहणे ... सर्वसाधारणपणे, आपण आपल्या आवडत्या क्रियाकलापाच्या फायद्यासाठी काय करू शकता. परंतु अत्यंत प्रोग्रामिंग स्पष्टपणे अशा आत्म-त्याग आणि स्वीकृत कामगार कायद्याच्या मानकांचे उल्लंघन करण्याच्या विरुद्ध आहे.

हे केवळ कायदेशीरपणा आणि मानवतेच्या विचारांनीच नव्हे, तर सर्व प्रथम, कार्य क्षमता आणि कठोर संघटना वाढवण्याच्या गरजेद्वारे निर्धारित केले जाते. शेवटी, अत्यंत प्रोग्रामिंग हा एक सामूहिक खेळ आहे, जो व्यक्तींसाठी नाही तर संपूर्ण गटासाठी डिझाइन केलेला आहे. आणि अशी गोष्ट, उदाहरणार्थ, जोडी प्रोग्रामिंग तेव्हाच शक्य आहे जेव्हा त्यातील सहभागींचे बायोरिदम समक्रमित केले जातात. आणि जर एक व्यक्ती नऊ वाजता कामावर आली, आणि दुसरा बारा वाजता, किंवा एकाने ठरवले की शनिवार आणि रविवारी काम करणे त्याच्यासाठी चांगले आहे, तर दुसरा गैरसोयीचा आहे.

परंतु सर्वात महत्वाची गोष्ट अशी आहे की आरोग्य आणि कार्यक्षमता टिकवून ठेवण्यासाठी व्यक्तीला योग्य विश्रांतीची आवश्यकता असते. आठ तास कामाचा दिवस आणि पाच दिवसांचा आठवडा तंतोतंत जास्तीत जास्त उत्पादकतेच्या कारणांसाठी स्थापित केला जातो. बर्‍याच पाश्चात्य कंपन्यांमध्ये, काम उशिरा सोडणे हे चांगले कार्य न करणे किंवा एखाद्याच्या कामाच्या वेळेचे योग्य व्यवस्थापन करण्यास असमर्थता मानले जाते. बहुतेक प्रकरणांमध्ये हे खरे आहे. आणि वैद्यकीय दृष्टिकोनातून, कामावर विलंब केल्याने सतत थकवा, चिडचिड आणि मेंदूची क्रिया कमी होते. हे प्रभावी आहे का? अशा टीममधील डेव्हलपर्समध्ये आम्ही सतत मुक्त संवाद कसे आयोजित करू शकतो आणि पेअर प्रोग्रामिंग शक्य होईल का? उत्तर नकारार्थी आहे. मानके मानक आहेत आणि त्यांचे पालन केले पाहिजे.

· समावेशन ग्राहक व्ही टीम (साइटवर ग्राहक)

सॉफ्टवेअर डेव्हलपमेंटमधील मुख्य समस्या ही विकसित होत असलेल्या विषयातील प्रोग्रामरचे ज्ञान नसणे आहे. अत्यंत प्रोग्रामिंगने या परिस्थितीतून मार्ग काढला आहे. नाही, ही ग्राहकाच्या एंटरप्राइझमध्ये डेव्हलपर इंटर्नशिप नाही - मग तो प्रोग्राम करू इच्छित नाही. उलट विकास प्रक्रियेत ग्राहकाचा सहभाग असतो.

विकास कार्यसंघामध्ये नेहमी ग्राहक प्रतिनिधी समाविष्ट असतो जो संपूर्ण कामकाजाच्या दिवसात उपलब्ध असतो आणि सिस्टमबद्दलच्या सर्व प्रश्नांची उत्तरे देण्यास सक्षम असतो. सिस्टमची कार्ये, त्याचा इंटरफेस, आवश्यक कार्यप्रदर्शन, कठीण परिस्थितीत सिस्टमचे योग्य ऑपरेशन, इतर अनुप्रयोगांशी संप्रेषण राखण्याची आवश्यकता इत्यादींसंबंधी कोणत्याही प्रकारच्या प्रश्नांची त्वरित उत्तरे देणे ही त्याची जबाबदारी आहे.

अनेकांना विकास प्रक्रियेत ग्राहकांचा सहभाग असण्याच्या शक्यतेवर शंका आहे. खरंच, ग्राहक वेगळे आहेत. ग्राहक किंवा त्याच्या प्रतिनिधीला आकर्षित करणे शक्य नसल्यास, काहीवेळा विकसित केल्या जात असलेल्या क्षेत्रातील तज्ञांना तात्पुरते नियुक्त करण्याचा सल्ला दिला जातो. या पायरीमुळे कामातील संदिग्धता कमी होईल, विकासाचा वेग वाढेल आणि ग्राहकाला जे प्राप्त करायचे आहे त्याच्या जवळ प्रकल्प आणेल. हे आर्थिक बाजूने देखील फायदेशीर ठरू शकते: शेवटी, प्रोग्रामरचा पगार कधीकधी इतर उद्योगांमधील तज्ञांच्या पगारापेक्षा लक्षणीय असतो.

· वापर कोड कसे सुविधा संवाद

संघातील संप्रेषणाचे सर्वात महत्त्वाचे साधन म्हणून कोडकडे पाहिले जाते. कोडची स्पष्टता ही मुख्य प्राधान्यांपैकी एक आहे. ही स्पष्टता प्रदान करणाऱ्या कोडिंग मानकांचे पालन करणे अत्यावश्यक आहे. अशा मानकांनी, कोड स्पष्टतेव्यतिरिक्त, किमान भाषा (कोड आणि माहितीची डुप्लिकेशन नाही) सुनिश्चित केली पाहिजे आणि सर्व कार्यसंघ सदस्यांनी स्वीकारली पाहिजे.

· उघडा कार्यरत जागा (खुली कार्यक्षेत्र)

महत्त्वाच्या तांत्रिक निर्णयांचे नियोजन आणि निर्णय घेताना संप्रेषण सुलभ करण्यासाठी आणि गटचर्चा सक्षम करण्यासाठी संघाला एका बऱ्यापैकी प्रशस्त खोलीत ठेवण्यात आले आहे.

· बदला नियम द्वारे आवश्यक (फक्त नियम)

प्रत्येक कार्यसंघ सदस्याने सूचीबद्ध केलेले नियम स्वीकारले पाहिजेत, परंतु जर गरज भासली तर, संघाचे सर्व सदस्य या बदलावर सहमत असल्यास ते बदलू शकतात.

वापरलेल्या तंत्रांवरून पाहिले जाऊ शकते, XP लहान संघांमध्ये वापरण्यासाठी डिझाइन केले आहे (10 पेक्षा जास्त प्रोग्रामर नाही), ज्यावर या तंत्राच्या लेखकांनी जोर दिला आहे. मोठ्या संघाचा आकार यशासाठी आवश्यक संवादाची सुलभता नष्ट करतो आणि सूचीबद्ध केलेल्या अनेक तंत्रांची अंमलबजावणी करणे अशक्य करते.