2009-11-15 15 views
5

सॉफ्टवेयर इंजीनियरों को एक और तनावपूर्ण रिलीज के बाद क्या सामना करना पड़ता है? खैर, हमारे समूह में पहली चीज हम सामने आती हैं जो हमने खुले में जारी की हैं। तनावग्रस्त रिलीज के बाद हम सॉफ़्टवेयर इंजीनियरों के रूप में सबसे बड़ी समस्या स्पेगेटी-कोड है, जिसे big ball of mud भी कहा जाता है।मेरा स्टेकहोल्डर और मैनेजर साबित करने के लिए कैसे मेरा सॉफ़्टवेयर काम करता है?

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

आप समय पर गुणवत्ता सॉफ्टवेयर वितरित करने के लिए की जरूरत है, और बजट के तहत

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

लेकिन अगर यह वास्तव में प्रत्येक दीर्घकालिक सॉफ्टवेयर प्रोजेक्ट की तुलना में मामला हमेशा मिट्टी की एक बड़ी गेंद का नेतृत्व करेगा।

हम जानते हैं कि हमेशा नहीं होता है। कैसे? क्योंकि यह बयान है कि प्रबंधकों को आर्किटेक्चर को दबाने वाली चिंता के रूप में नहीं माना जाता है। कम से कम आजकल। आईटी क्षेत्र में प्रबंधकों को अच्छी तरह से पता है कि रखरखाव व्यापार के लिए महत्वपूर्ण है।

व्यवसाय इसे चलाने वाले डेटा पर निर्भर हो जाता है। व्यवसाय अपने सॉफ्टवेयर पर गंभीर रूप से निर्भर हैं और बुनियादी ढांचे की गणना कर रहे हैं। कई मिशन महत्वपूर्ण प्रणालियां हैं जो प्रति सप्ताह चौबीस घंटे प्रति सप्ताह/सात दिन होनी चाहिए। यदि ये सिस्टम नीचे जाते हैं, तो इन्वेंट्री की जांच नहीं की जा सकती है, कर्मचारियों को भुगतान नहीं किया जा सकता है, विमान को रूट नहीं किया जा सकता है, और इसी तरह। [..]

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

अब

मेरे सवाल के लिए:

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

[बाद में दिया गया है]

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

अनुवर्ती प्रश्न यह है कि सभी उस क्यूए नीति में क्या होना चाहिए?

  • कि buildserver मेरी हितधारकों
  • buildserver केवल सिर्फ निर्माण 'नहीं होने के लिए दिखाई दे चल होने लेकिन परीक्षण है कि गुणवत्ता आश्वासन नीति
  • हमारे विकास की प्रक्रिया पर मेरी हितधारकों से एक समझौते के बाद का हिस्सा थे जोड़ने (डेवलपर्स एक दूसरे की समीक्षा जहां कोड का हिस्सा) है ..
  • अधिक

कुछ अधिक जानकारी: टीम मैं अग्रणी रहा हूँ है webservices निर्माण है कि अन्य सॉफ्टवेयर के द्वारा खपत होती है टीमों। यही कारण है कि एक तोड़ने वाली webservice तुरंत पैसे खर्च कर रहा है। presentationlayer टीम के डेवलपर्स, या वास्तविक परीक्षकों आगे नहीं बढ़ सकता है जब हम तत्काल तनाव में हैं और जल्द से जल्द कीड़े तय करने के लिए है, जो जल्दी हैक्स के लिए बारी का नेतृत्व .. में

[बाद में जोड़ा]

है सारे सवालों के जवाब देने के लिए धन्यवाद। यह वास्तव में 'ट्रस्ट' के बारे में है। अगर हम हितधारकों द्वारा सॉफ़्टवेयर पर भरोसा नहीं करते हैं, तो हम रिलीज नहीं कर सकते हैं, जो हमारी वेबसाइट का उपभोग करने वाली वेबसाइट का उपयोग करके अपने सॉफ्टवेयर का सक्रिय रूप से परीक्षण कर रहे हैं। जब समस्याएं उत्पन्न होती हैं, तो हमारे परीक्षकों का पहला प्रश्न यह है: क्या यह servicelayer समस्या या प्रस्तुति समस्या है? जो मुझे एक क्यूए नीति रखने का निर्देश देता है जो सुनिश्चित करता है कि हमारे सॉफ़्टवेयर परीक्षण के लिए ठीक है।

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

उत्तर

4

आप इसे परीक्षण के दायरे से बाहर साबित नहीं कर सकते हैं, और जब तक बुलेटप्रूफ विनिर्देश (जो कभी नहीं होता) तब तक परीक्षण स्पष्ट रूप से कुछ भी साबित नहीं होता है।

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

एक टीम के रूप में एक सॉफ्टवेयर के रूप में साबित करने का एकमात्र तरीका विश्वसनीय रिकॉर्ड है: शुरुआत से चीजें सही तरीके से करें, नई सुविधाओं को लागू करने से पहले बग ठीक करें, त्वरित हैक फिक्स में कभी भी न दें, और सुनिश्चित करें हर कोई कोड के लिए उत्साह और सम्मान साझा करता है।

3

सभी मामूली मामलों में, आप 'साबित नहीं कर सकते कि आपका सॉफ़्टवेयर सही है।

यू सेवा एक cceptance टी esting की भूमिका है कि: पता चलता है कि कि उपयोगिता के एक स्वीकार्य स्तर तक पहुँच गया है।

+0

उपयोगकर्ता कैसे बता सकते हैं कि आपके पास अच्छी तरह से व्यवहार किया गया है, फिर भी अस्पष्ट, मिट्टी की गेंद? मुझे लगता है कि सवाल सॉफ्टवेयर की गुणवत्ता के बारे में है, उपयोगिता नहीं। –

+0

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

+0

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

1

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

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

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

+0

धन्यवाद क्रिस। हितधारकों के साथ सहमत एक क्यूए नीति होने के नाते वास्तव में मेरी टीम की तलाश हो सकती है। अब फॉलो-अप प्रश्न यह हो सकता है कि सभी क्यूए नीति में क्या होना चाहिए ... मुझे देखने दो कि क्या मैं इसे शुरुआती प्रश्न में जोड़ सकता हूं। – Hace

5

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

ग्राहक, हू, इसके बारे में नहीं पूछते, वे वास्तव में बंद हो गए थे, लेकिन वे हमारी कंपनी के साथ रहे क्योंकि वे जानते हैं कि कोई भी व्यवसाय को समझता है जैसा हम करते हैं।

तो समाधान था क्या:

  • पहली बात प्रोग्रामर से प्रबंधन अलग हो गए और एक दोस्ताना दल के नेता डाल दिया।
  • दूसरा, एक योग्य क्यूए टीम प्राप्त करें। पहले कुछ हफ्तों में, बग 100 के दशक में थे।
  • तीसरा, 2-3 डेवलपर्स को समर्थन टीम के रूप में रखें, जिम्मेदारी है कि कोई नया कार्य न करें, बस बग ठीक करें, सीधे क्यूए के साथ काम करें।
  • चौथा, लोगों को प्रेरित करें, कभी-कभी पैसे या अतिरिक्त छुट्टियों के बारे में नहीं, कभी-कभी एक अच्छा शब्द सही होगा। छोटे उदाहरण, दिन में लगभग 15 घंटे के लिए लगातार 3 दिन काम करने के बाद, टीम के नेता ने प्रबंधक को एक नोट बनाया। दो दिन बाद मुझे सीईओ से मेरे पत्रों पर धन्यवाद और मुझे 2 छुट्टी दिन देने का एक पत्र मिला।

हम जल्द ही सिस्टम के चौथे मॉड्यूल को वितरित करेंगे, और एक सहायक टीम के रूप में मैं इसे कम से कम 95% बग मुक्त कह सकता हूं। जो हमारे पहले मॉड्यूल से एक बड़ी छलांग है।

आज हमारे पास एक शक्तिशाली विकास टीम है, योग्य क्यूए और विशेषज्ञ बग फिक्सर्स हैं।

लंबी कहानी के लिए खेद है, लेकिन यह है कि हमारी टीम (4 महीने के दौरान) प्रबंधक और ग्राहक को साबित करती है कि हम विश्वसनीय हैं, और केवल सही वातावरण की आवश्यकता है।

1

बिली जोएल एक बार कहते हैं, "यह हमेशा विश्वास का विषय रहा है।"

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

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

  1. प्रक्रिया दृश्यता - सुनिश्चित करें कि हर कोई जानता है कि आप क्या कर रहे हैं और कैसे चीजें प्रगति कर रहे हैं सुनिश्चित करें। साथ ही, सुनिश्चित करें कि विकास के दौरान होने वाले सभी प्रभावों और परिवर्तनों को देख सकें।
  2. ट्रस्ट बनाने के लिए छोटी जीत बताएं - इंगित करें कि जब आप योजना बनाते हैं तो चीजें ठीक होती हैं। उन स्थितियों को खोजने का प्रयास करें जहां आपको निर्णय कॉल करना था और अपने प्रबंधन के साथ "जोखिम को कम करना" शब्द का उपयोग करना था।
  3. मत कहो, "मैंने आपको बताया था।" - मान लीजिए कि आपने प्रबंधन को बताया कि आपको कुछ कार्य करने के लिए 2 महीने की आवश्यकता है और वे कहते हैं, "ठीक है आपके पास केवल तीन सप्ताह हैं।" नतीजा अच्छा होने की संभावना नहीं है (मान लीजिए कि आपका अनुमान सटीक है)। प्रबंधन को समय-समय पर पूरा करने की कोशिश करने के लिए आपको जो कुछ करना है, उसे समस्या के बारे में जागरूक करें और दस्तावेज बनाएं। जब गुणवत्ता खराब दिखाई देती है, तो आप उंगली को इंगित करने और कहने के बजाय पेशेवर समस्याओं में सामना करने वाले मुद्दों (और दर्ज) के माध्यम से काम कर सकते हैं, "मैंने आपको बताया था।"

यदि आपके पास प्रबंधक के साथ अच्छा संबंध है, तो आप सुझाव दे सकते हैं कि वे सॉफ्टवेयर विकास के लिए विशिष्ट कुछ किताबें पढ़ते हैं ताकि वे उद्योग के सर्वोत्तम प्रथाओं को समझ सकें।

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

संबंधित मुद्दे