सॉफ्टवेयर विकास बनाम निर्माण [बंद]


10

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

प्रश्न : क्या हम डेवलपर्स के रूप में विनिर्माण उद्योग की प्रक्रियाओं से सीख सकते हैं? क्या उनकी प्रक्रियाओं को अपनाने से सॉफ्टवेयर विकास की सफलता दर बढ़ सकती है?

मेरा लेना : किसी उत्पाद के निर्माण में भारी प्रक्रिया संचालित है। आपके पास एक कारखाना हो सकता है जहां प्रत्येक व्यक्ति के पास उन कार्यों का एक विशिष्ट सेट होता है, जिनका वे अनुसरण करते हैं। एक कार्यकर्ता (या रोबोट) पूरे दिन एक पेंच कस सकता है। फिर प्रक्रिया में अगला कार्य अगले विशेषज्ञ द्वारा किया जाता है। श्रमिक (और रोबोट) प्रक्रिया से अलग नहीं होते हैं या "मक्खी पर" कुछ बनाते हैं। भागों प्रक्रिया के माध्यम से मंथन करते हैं, और आउटपुट एक तैयार उत्पाद है। यह अच्छी तरह से काम करता है और कंपनियां 99.99966% दोष मुक्त उत्पादों को प्राप्त करती हैं। कंपनियों ने समय के साथ अक्षमताओं को दूर किया। यह प्रभावशाली है और बहुत अच्छी तरह से एक परिपक्व उद्योग का संकेत हो सकता है।

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

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

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

हर कोई मैं विनिर्माण मानसिकता से सहमत प्रतीत होता है। क्या मैं अपने विचारों में अकेला हूँ?


1
FYI करें: मुझे यह सवाल पूछने के लिए किसने प्रेरित किया था कि यह एक सीएमएमआई पुस्तक थी। इसने सॉफ्टवेयर निर्माण की तुलना विनिर्माण से की और सॉफ्ट.इंड का निष्कर्ष निकाला। अपरिपक्व था।
लॉर्ड टाइडस

3
मैं कहता हूँ कि एक ही क्षेत्र में एक अधिक सटीक सादृश्य आपके कारखाने को डिजाइन करने और स्थापित करने में शामिल होगा। यही वह जगह है जहाँ रचनात्मक / कठिन बिट्स होते हैं। बाकी सिर्फ नट और बोल्ट हैं, जैसे हमारे लिए बाकी सिर्फ 1s और 0s हैं।
बेंजोल

1
सॉफ्टवेयर इंजीनियरिंग विनिर्माण की तुलना नहीं करता है। यह शिल्प कौशल से तुलना करता है। इसे औद्योगिक प्रक्रिया में कम नहीं किया जा सकता है।
मौविसील

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

क्या जापानी ने सिर्फ इतना ही प्रयास नहीं किया: भौतिक वस्तुओं के विनिर्माण की दिशा में अधिक प्रक्रिया में सॉफ्टवेयर बनाने के लिए? जैसा कि मुझे याद है, यह काफी व्यापक रूप से एक पूर्ण और पूरी तरह से विफलता के रूप में माना जाता है, भले ही कुछ सफल जापान-विकसित सॉफ्टवेयर शीर्षक हैं ( उदाहरण के लिए सोनिक हेजहॉग की कोशिश करें )।
एक CVn

जवाबों:


36

सॉफ्टवेयर विकास और निर्माण के बीच मूलभूत अंतर यह है कि सॉफ्टवेयर के लिए, डिजाइन चरण व्यावहारिक रूप से पूरी चीज है। वास्तविक उत्पादन (पारंपरिक निर्माण में असेंबली लाइन हिस्सा) कुछ फाइलों को कॉपी करने का मामला है। सॉफ्टवेयर में, उत्पाद डिजाइन है उत्पाद।

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

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

यदि हम उत्पाद डिजाइन प्रक्रियाओं को देखते हैं, तो सर्वश्रेष्ठ उद्योगों को दो श्रेणियों में देखना है:

  • जहां उत्पादन कमोडिटी दरों पर महसूस किया जा सकता है; उदाहरण के लिए रिकॉर्ड उद्योग (एक सीडी के लिए 1% या उससे कम कीमत बेकिंग और प्रिंटिंग है), ग्राफिकल मीडिया, आदि।
  • जहां मात्रा इतनी कम है कि डिजाइन चरण सबसे प्रमुख लागत कारक है (लक्जरी लेख, अत्यधिक अनुकूलित उत्पाद, आला बाजार ...)

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


2
बहुत बढ़िया जवाब। सॉफ्टवेयर विकास में सब कुछ एक प्रोटोटाइप है!
जेम्स एंडरसन

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

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

@ कालेब - यह शायद उत्पादन लाइन और उत्पादन प्रक्रियाओं को स्थापित करने के बारे में सच है। उत्पादन लाइन स्थापित करना विनिर्माण प्रक्रिया के सबसे महंगे और समय लेने वाले पहलुओं में से एक है।
जेम्स एंडरसन

2
@ कालेब: मुझे लगता है कि आपने यहाँ मेरी उपमा को गलत समझा। जब मैं 'डिज़ाइन' के बारे में बात कर रहा हूँ, तो मैं प्रोडक्ट डिज़ाइन के बारे में बात कर रहा हूँ, यानी वह प्रक्रिया जो असेंबली लाइन शुरू करने से पहले हो। किसी सॉफ्टवेयर उत्पाद के डिज़ाइन और कार्यान्वयन चरण इस अर्थ में 'डिज़ाइन' होते हैं, जबकि निर्माण का हिस्सा बायनेरिज़ को सर्वर पर अपलोड करने या शिपिंग के लिए डीवीडी-रोम बेक करने के लिए कम होता है। एक प्रोग्रामर के रूप में, आप सभी कभी भी एक प्रोटोटाइप है; इतना सब कुछ आप करते हैं, जिसमें रखरखाव का काम भी शामिल है, पारंपरिक उत्पादन श्रृंखला सादृश्य में 'डिजाइन' है।
tdammers डेस

10

यदि आप एक ही सटीक सॉफ़्टवेयर को बार-बार लिखना चाहते हैं (जैसा कि केवल इसे कॉपी करने के लिए विरोध किया जाता है) तो आप असेंबली लाइन के माध्यम से बहुत कुशलता से कर सकते हैं।

लेकिन सॉफ्टवेयर निर्माण एक दोहराव कार्य नहीं है, प्रत्येक मॉड्यूल uniqe है। इसीलिए विनिर्माण की तुलना अमान्य है।


विनिर्माण से सबक लेते हुए इसका मतलब सॉफ्टवेयर असेंबली लाइन का निर्माण नहीं है। विनिर्माण प्रक्रिया सुधार के बारे में कहने के लिए बहुत कुछ है, और सॉफ्टवेयर विकास प्रक्रिया में बहुत कुछ है जो सुधार में खड़ा हो सकता है।
कालेब

@ कालेब: फिर तुम क्या सबक सीखते हो? ठीक यही मैंने सोचा था कि आपका मतलब क्या है।
सेवेंससीकैट

1
@ कर्क, प्रक्रिया में सुधार तब भी हो सकता है जब आप ऐसी चीजों का उत्पादन कर रहे हों जो समान नहीं हैं। इस महीने में हमने कितने बग लिखे? पिछले महीने? दो महीने पहले? यदि यह संख्या एक महीने से अगले महीने तक महत्वपूर्ण रूप से बदल जाती है, तो आपको यह पता लगाना चाहिए कि क्यों। यह उस तरह की चीज़ है जो किसी भी प्रक्रिया के लिए काम करती है, चाहे आप असेंबली लाइन पर समान विजेट्स का निर्माण कर रहे हों या अत्यधिक रचनात्मक प्रक्रिया में फ़िल्में बनाते हों।
कालेब

2

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

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

  • कोड समीक्षा उत्कृष्ट हैं, और सबसे अधिक कीड़े खोजने के लिए दिखाया गया है, लेकिन समीक्षा की प्रभावशीलता समीक्षा के पहले घंटे के बाद काफी तेज हो जाती है। यह देखते हुए कि औसत व्यक्ति एक घंटे में कोड की कुछ सौ पंक्तियों को ही पढ़ सकता है, यह बताता है कि डेवलपर्स को छोटे टुकड़ों में परिवर्तन को तोड़ना चाहिए।
  • बग को और अधिक महंगा (समय और धन) खोजने में लगने वाला समय इसे ठीक करना होगा। इसलिए यदि कोई डेवलपर इसे कोड लिखते समय पाता है तो हम कहते हैं कि लागत १ है। यदि कोई सबसे अच्छा खाता है तो बाद में लागत १० है, अगर ईवीटी को पता चलता है कि यह लागत १०० है, इत्यादि।
  • कुछ सबूत हैं जो यह सुझाव देते हैं कि समाधान जितना जटिल है, समाधान उतना ही जटिल है और समाधान जितना जटिल होगा, कीड़े होने की संभावना उतनी ही अधिक होगी।

ग्रेग विल्सन नाम का एक शख्स है जिसने कुछ साल पहले इस बारे में एक बेहतरीन बात की थी। यहाँ बात करने के लिए एक कड़ी है: ग्रेग विल्सन टॉक

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

  • मुझे अक्सर सभी वेरिएंट्स बनाने की याद नहीं है, जो मेरे लिए बिल्ड तोड़ रहे हैं।
  • कई बार मैं प्रत्येक परिवर्तन के लिए निम्नलिखित के बारे में नहीं सोचता। अच्छा मामला, बुरा मामला और असाधारण मामले।
  • सभी संभावित परिदृश्य जो हो सकते हैं। ध्यान दें कि यह वास्तव में कठिन है क्योंकि उनमें से बहुत सारे हैं।

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


2

यह "उनकी" प्रक्रियाओं को अपनाने के बारे में नहीं है। यह "कुछ" प्रक्रियाओं को अपनाने के बारे में है, जिसमें रचनात्मक प्रयासों के लिए विधानसभा लाइन प्रक्रियाओं का उपयोग करने की सामान्य और अच्छी तरह से सराहना की गई हानिकारक नहीं है। यहां ध्यान देने योग्य सबसे महत्वपूर्ण बात यह विचार है कि प्रक्रियाओं की गुणवत्ता सीधे उत्पाद की गुणवत्ता में अनुवाद करती है।

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

तो नहीं, सॉफ़्टवेयर डेवलपमेंट प्रक्रिया को असेंबली लाइन प्रोडक्शन से तुलना नहीं की जा सकती है और जैसे कि "उनकी प्रक्रियाएँ" ठीक नहीं हैं, लेकिन किसी मैन्युफैक्चरिंग इंडस्ट्री में प्रोडक्ट का प्रोडक्शन डिज़ाइन / प्रोडक्ट डिज़ाइन चरण प्रेरणा लेने वाला हो सकता है।


1

प्रश्न: क्या हम डेवलपर्स के रूप में विनिर्माण उद्योग की प्रक्रियाओं से सीख सकते हैं? क्या उनकी प्रक्रियाओं को अपनाने से सॉफ्टवेयर विकास की सफलता दर बढ़ सकती है?

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

  • दोष ट्रैकिंग: जब एक बग देखा जाता है या रिपोर्ट किया जाता है, तो इसका क्या होता है? क्या आप इसे कागज़ के स्क्रैप पर लिखते हैं और इसे 'जांच' स्पाइक पर चिपका देते हैं? क्या आप बाद में उन स्क्रैप को एक बार में हटा देते हैं, उनकी जांच करते हैं, और आखिरकार उन्हें 'हल' स्पाइक में स्थानांतरित कर देते हैं? यदि आप ऐसा करते हैं कि बग रिपोर्ट के बिना हर बार विफल हो जाते हैं, तो आपको एक अच्छी तरह से परिभाषित, मापने योग्य प्रक्रिया मिल गई है, और शायद आप किसी ऐसे व्यक्ति की तुलना में बहुत बेहतर हैं, जिनके पास एक फैंसी, उच्च-तकनीकी दोष ट्रैकिंग प्रणाली है जो बहुत खराब है कुछ टीम के सदस्य बग को ट्रैक करते हैं, या बिल्कुल नहीं।

  • संस्करण नियंत्रण: एक अच्छा मौका है कि आप संस्करण नियंत्रण का उपयोग करते हैं जहाँ आप काम करते हैं, और संस्करण नियंत्रण स्पष्ट रूप से बहुत अधिक उपयोगी होता है जब हर कोई इसे उसी तरह से उपयोग करता है।

  • उत्पाद का डिज़ाइन: क्या आप तय करते हैं कि पोस्ट-इट नोटों से ढकी दीवार पर डार्ट्स फेंकने से कौन सी सुविधाएँ लागू होंगी? यदि हां, तो आपको एक प्रक्रिया मिल गई है। मुझे नहीं लगता कि कोई भी यह तर्क देगा कि यह एक शानदार प्रक्रिया है, लेकिन कम से कम यह एक शुरुआती बिंदु है। यदि आप इस प्रक्रिया को बदलते हैं तो आप यह कैसे जान सकते हैं कि आपका परिवर्तन वास्तव में एक सुधार था जब तक आप पहले और बाद में माप नहीं लेते? आप नहीं कर सकते।

  • कोड समीक्षा: यदि प्रत्येक समीक्षा के लिए समीक्षा प्रक्रिया और कोडिंग मानदंड बदल गए तो क्या एक कोड समीक्षा उपयोगी होगी? बिलकूल नही।

  • सॉफ्टवेयर विकास जीवन चक्र: संपूर्ण विश्लेषण -> डिजाइन -> कार्यान्वयन -> परीक्षण -> रखरखाव चक्र एक प्रक्रिया है जिसे स्पष्ट रूप से परिभाषित किया जाना चाहिए।

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

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

सॉफ्टवेयर विकास ने पहले से ही कई निर्माण अवधारणाओं को अपनाया है:

  • यह मुश्किल है कि दोनों ओओपी और घटक-आधारित विकास पर एली व्हिटनी के विनिमेय भागों के प्रभाव को न देखें ।

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

  • निर्माण के लिए विकसित किए गए सिक्स सिग्मा जैसे गुणवत्ता प्रबंधन के तरीके सॉफ्टवेयर विकास के लिए अनुकूलित किए गए हैं।

भारी प्रक्रिया संचालित वातावरण के बावजूद, डेवलपर को "मक्खी पर" चीजें बनाने में संलग्न होना चाहिए।

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

मक्खी पर चीजें करना विनिर्माण की भावना के खिलाफ है।

फिर, अगर "फ्लाई पर" का अर्थ है "प्रक्रिया से बाहर", तो आप सही हैं। लेकिन अगर आपको लगता है कि विनिर्माण में त्वरित सोच और समस्याओं के रचनात्मक समाधान विकसित करने की आवश्यकता नहीं है, तो आप गलत हैं। विनिर्माण प्रक्रिया में सभी प्रकार की समस्याएं सामने आती हैं - कप केक में पर्याप्त क्रीम भरना नहीं होता है, चित्रित सतहों को अचानक क्यूए के स्क्रैच परीक्षण से गुजरना बंद हो जाता है, 20% तैयार भागों में एक महत्वपूर्ण बनाए रखने की अंगूठी गायब होती है, आटा मिश्रण प्रणाली एक टूट गई है महत्वपूर्ण हिस्सा...


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

@ वैभव गर्ग: मेरा मानना ​​है कि लंबे समय में, व्यावसायिक अर्थों में , सबसे अच्छी तरह से काम करने वाली प्रक्रिया जीत जाती है। यदि नियंत्रित "सॉफ्टवेयर इंजीनियरिंग प्रक्रिया" में उच्च गुणवत्ता * गति / लागत अनुपात होता है, तो यह जीत जाता है। कभी-कभी काउबॉय कोडिंग कष्टप्रद अच्छे परिणामों में उत्पन्न होता है।
जूनास पुलका

1
@JoonasPulakka। मैं सहमत हूं, कि कभी-कभी काउबॉय कोडिंग अच्छे परिणाम देने लगती है। लेकिन यहां कुंजी "कभी-कभी" है। यदि आप प्रदर्शन में पुनरावृत्ति के लिए लक्ष्य रखते हैं, तो आपको जो करना है, उसमें आपको दोहराना होगा। SIPOC में P सोचो!
वैभव गर्ग

1
@ JoonasPulakka- स्तर 1 संगठनों के लिए CMMI मानक से उद्धरण क्रिया: इन संगठनों में सफलता संगठन में लोगों की क्षमता और वीरता पर निर्भर करती है न कि सिद्ध प्रक्रियाओं के उपयोग पर। इस अराजकता के बावजूद, परिपक्वता स्तर 1 संगठन अक्सर काम करने वाले उत्पादों और सेवाओं का उत्पादन करते हैं; हालाँकि, वे अक्सर अपने बजट से अधिक हो जाते हैं और अपने कार्यक्रम को पूरा नहीं करते हैं।
वैभव गर्ग

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