एक परियोजना का दस्तावेज कैसे करें जो पहले से ही विकसित है?


13

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

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

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


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

1
संबंधित (हालांकि जरूरी नहीं कि डुप्लिकेट): प्रोग्रामर.स्टैकएक्सचेंज.
com/questions/6395/…

शुरुआत में IMHO एक बहुत ही उपयोगी चीज है - एक संदर्भ है - "क्या है?"। कम से कम, जब यह लिपियों के नाम से स्पष्ट नहीं है (और मुझे लगता है कि यह नहीं है)।
डॉक ब्राउन

3
The functions are poorly commented so I can't get good results when I run it with doxygen। इसे डिबगर से चलाने का प्रयास करें। यह बताएगा कि स्रोत कोड को हटाने के साथ टिप्पणियों की एक कॉपी होने से बेहतर क्या है।
रिएक्टगुलर

1
मैंने पाया है कि प्रलेखन अक्सर बताता है कि स्रोत कोड को क्या करना था, न कि यह वास्तव में क्या करता है।
रिएक्टगुलर

जवाबों:


25

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

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

यह मानते हुए कि लोग वास्तव में प्रलेखन का उपयोग करेंगे, कोड और डेटाबेस को सबसे छोटे स्तर पर कब्जा करने की कोशिश न करें। डेवलपर्स minutiae के लिए कोड को देखेंगे। इसके बजाय, उन विवरणों पर ध्यान केंद्रित करें जो कोड में स्पष्ट नहीं हैं , उदाहरण के लिए:

  1. उपयोग के मामलों उत्पाद को पूरा करती है। यह उत्पाद की उम्र पर विचार करने में मुश्किल हो सकता है, लेकिन उत्पाद पर कब्जा करने का मतलब गैर-तकनीकी पाठकों और परीक्षकों को महत्वपूर्ण संदर्भ देता है। बाजार में प्रतिस्पर्धी कौन हैं (यदि कोई हो)? क्या उत्पाद के दायरे से बाहर रखा गया है?
  2. कोई भी स्पष्ट गैर-कार्यात्मक आवश्यकताएं । उदाहरण के लिए, क्या उत्पाद एक निश्चित मात्रा को संभालने के लिए लिखा गया था? डेटा कितना पुराना हो सकता है? कैशिंग का उपयोग कहां किया जाता है? उपयोगकर्ताओं को कैसे प्रमाणित किया जाता है? अभिगम नियंत्रण कैसे काम करता है?
  3. एक संदर्भ आरेख जो अन्य प्रणालियों के साथ सहभागिता दिखा रहा है, जैसे डेटाबेस, प्रमाणीकरण स्रोत, बैकअप, निगरानी और इतने पर।
  4. (यदि ज्ञात हो) जोखिम और कैसे उन्हें एक निर्णय रजिस्टर के साथ कम कर दिया गया । यह संभवतः पूर्वव्यापी में मुश्किल है लेकिन अक्सर महत्वपूर्ण निर्णय होते हैं जो एक डिजाइन को प्रभावित करते हैं। जो भी आप जानते हैं उस पर कब्जा करें।
  5. सामान्य डिज़ाइन पैटर्न या डिज़ाइन दिशानिर्देश । उदाहरण के लिए, क्या डेटाबेस तक पहुँचने का एक मानक तरीका है? क्या कोई कोडिंग या नामकरण मानक है?
  6. महत्वपूर्ण कोड पथ , आमतौर पर प्रवाह चार्ट या यूएमएल गतिविधि या अनुक्रम आरेख का उपयोग करते हैं। इस परियोजना में कोई भी नहीं हो सकता है, लेकिन ये आमतौर पर व्यवसायिक उपयोगकर्ताओं को व्यक्त करते हैं।

भले ही यह सब जानकारी उपलब्ध नहीं है, अब शुरू करें । आपके बाद आने वाले डेवलपर्स आपको धन्यवाद देंगे।

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

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


2

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

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

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


2

सबसे पहली बात, आपका लक्षित दर्शक कौन है? भविष्य के डेवलपर्स या अन्य व्यवसायी लोग? मन में उस सवाल के जवाब के साथ:

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

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

अगर आपको परेशानी शुरू हो रही है, तो बस नाटक करें कि आपके ठीक बगल वाले कमरे में एक और डेवलपर है, जो सिस्टम के बारे में पहली बात नहीं जानता है, मैं अपेक्षाकृत अधीर हूं और मुझे इसके बारे में जानने की जरूरत है। फिर समझाना शुरू करें, और आप जो कहेंगे उसे लिखें :)


0

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


0

सवाल यह है कि क्या आप इसे दस्तावेज बनाना चाहते हैं जैसा कि यह अभी है या जैसा होना चाहिए?

मैंने आपके प्रश्न से जो पढ़ा है वह आप एपीआई दस्तावेज के बारे में सोच रहे हैं और उपयोगकर्ता दस्तावेज के बारे में नहीं है और कोड शायद इतनी अच्छी तरह से बनाए रखा और गूढ़ नहीं है।

मुझे डर है कि अगर अब आप दस्तावेज़ करते हैं, तो कोड को फिर से चालू करने के बाद, आप अपना अधिकांश काम दूर फेंक देंगे।

मैं निम्नलिखित दृष्टिकोण अपनाऊंगा:

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

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

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