कहाँ वास्तु समस्याओं का वर्णन करने के लिए?


18

मैं एक मध्यम आकार की परियोजना के मध्य में शामिल हो गया, जो पहले से ही कई वर्षों से चलती है। समस्याओं में से एक यह है कि वास्तुकला का वर्णन करने वाला दस्तावेज़ कभी नहीं लिखा गया था। अब मुझे वास्तुकला विवरण लिखने का काम सौंपा गया।

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

उदाहरण के लिए, GUI को एक पतली परत माना जाता था, बिना व्यावसायिक तर्क के। यही मुझे बताया गया था। कार्यान्वयन में बहुत सारे तर्क हैं।

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

तो, मुझे इन समस्याओं का वर्णन कहां करना चाहिए? बग्स ट्रैकिंग सॉफ्टवेयर? या क्या मुझे सिस्टम की वास्तुकला का वर्णन करने वाले दस्तावेज़ में वास्तुकला से कार्यान्वयन के विचलन का वर्णन करना चाहिए?


8
मुझे नहीं मिला। आपने कार्यान्वयन के आधार पर वास्तुकला का वर्णन किया, फिर पता चला कि कार्यान्वयन विवरण के अनुरूप नहीं है। क्या यह तब आपका विवरण नहीं है जो त्रुटिपूर्ण है?
back2dos

4
@ back2dos मैं इसकी व्याख्या कर रहा हूं क्योंकि सॉफ्टवेयर कुछ वास्तु नियमों और शैलियों के अनुरूप है, लेकिन कुछ घटक उन नियमों और शैलियों को तोड़ते हैं।
थॉमस ओवेन्स

5
आपको किसने कार्य सौंपा है, और आपके दस्तावेज़ के लिए दर्शक कौन होगा? दोनों समूहों से पूछें कि वे क्या पढ़ना चाहते हैं - वास्तुकला जैसा कि यह होना चाहिए, जैसा कि है, या दोनों। और जैसा कि हम उन लोगों के विचारों को ध्यान में नहीं रख सकते हैं, मैं इस प्रश्न को राय के आधार पर बंद करने के लिए मतदान कर रहा हूं।
डॉक्टर ब्राउन

जवाबों:


25

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

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

दिन के अंत में, एक डिज़ाइन दस्तावेज़ को कोड के लिए एक गाइड के रूप में काम करना चाहिए। यदि दस्तावेज़ किसी नए डेवलपर को कोड आधार की वर्तमान स्थिति को समझने में मदद नहीं करता है और यह कैसे संरचित है, तो दस्तावेज़ उपयोगी नहीं है।

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

यदि आप आर्किटेक्चर को कैप्चर करने के बारे में सलाह लेना चाहते हैं, तो मुझे IEEE Standard 1016-2009 IEEE स्टैंडर्ड फॉर इन्फॉरमेशन टेक्नोलॉजी - सिस्टम डिज़ाइन - सॉफ़्टवेयर डिज़ाइन विवरण की वकालत की गई । यह एक डिज़ाइन विवरण के लिए एक उचित संरचना प्रदान करता है, जिसका उपयोग वास्तुशिल्प और विस्तार स्तर की डिज़ाइन जानकारी दोनों को पकड़ने के लिए किया जा सकता है।

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


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

1
@JimmyHoffa वास्तव में, मुझे लगता है कि उन्होंने इस सवाल का जवाब दिया: "इसे वास्तुकला का वर्णन करने वाले दस्तावेज़ में रखें"। मैं घटकों का वर्णन करने वाले प्रत्येक अध्याय में एक अलग अध्याय या एक उपशाखा के रूप में अनुमान लगाता हूं।
BЈовић


6

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

सॉफ्टवेयर या तकनीकी वास्तुकला का प्राथमिक लक्ष्य गैर-कार्यात्मक आवश्यकताओं की पहचान करना है जो गुणवत्ता गुणों द्वारा महसूस किए जाते हैं जो सिस्टम आर्किटेक्चर को चलाएंगे

गैर-कार्यात्मक आवश्यकताओं पर:

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

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

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

आधिकारिक होने के लिए सॉफ्टवेयर आर्किटेक्चर वास्तव में 3 चीजें होना चाहिए।

कथात्मक

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

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

दलील

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

यह निर्णय क्यों किया गया? हम बताते हैं कि क्यों Rationale सेक्शन में और गैर-कार्यात्मक आवश्यकताओं, गुणवत्ता विशेषता लक्ष्यों या आर्किटेक्चरली महत्वपूर्ण आवश्यकताओं के लिए हमारे स्पष्टीकरण को वापस लिंक करें। । ..)

जोखिम

अब जब आपने घोषित कर दिया है कि आर्किटेक्चर को कैसे होना चाहिए और इसे अपने राशनलेबल के साथ साबित करना चाहिए, तो आप अब रिस्क को सिस्टम की वर्तमान स्थिति पर पहचान सकते हैं जहां यह पालन नहीं करता है।

(उदा। सर्वर साइड सत्यापन क्लाइंट साइड जावास्क्रिप्ट कोड पर डुप्लिकेट किया जा रहा है। यह DRY सिद्धांत का उल्लंघन है और यह रखरखाव की गुणवत्ता गुण के लिए काउंटर चलाता है। इस में प्रदर्शन के आसपास कोई गैर-कार्यात्मक आवश्यकताएं निर्धारित नहीं हैं। वर्तमान प्रणाली व्यवहार के लिए कोई तर्क नहीं है)

आपके जोखिम भी आरेख कर सकते हैं जहां वर्तमान स्थिति आर्किटेक्चर से विचलित हो रही है। इन जोखिमों को अब विकास टीम द्वारा संबोधित किया जा सकता है, या तो उनकी परियोजना योजना के माध्यम से या बैकलॉग में जोड़कर।


1

आपको वास्तव में यह तय करने की आवश्यकता है कि क्या आप परियोजना की वर्तमान संरचना का दस्तावेजीकरण करने वाले हैं , या इच्छित संरचना, या दोनों का ।

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

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


1

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

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


0

मुझे 3 मुख्य वर्गों में आयोजित एक वास्तुशिल्प दस्तावेज़ लिखने की इच्छा होगी।

पहले डिजाइन / वास्तुकला को शुरू करने का इरादा था जो शुरू में इरादा था। इससे नए डेवलपर्स / पाठकों को इस बात का अंदाजा हो सकेगा कि सिस्टम को क्या करना चाहिए और जाहिर तौर पर उसे आवश्यकताओं / यूजर्स आदि से जोड़ा जाना चाहिए।

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

अंत में मुझे लगता है कि अब क्या होना चाहिए के लिए सिफारिशों का विवरण देने वाला एक अनुभाग। यह आपकी दृष्टि को वास्तविकता बनाने के लिए वर्तमान में सॉफ़्टवेयर में परिवर्तनों के लिए वास्तुकला / डिज़ाइन और रोडमैप में कोई भी परिवर्तन होना चाहिए।

मुझे लगता है कि इस कवर (उच्च स्तर पर) पर कब्जा करने की क्या जरूरत है। आपके द्वारा नियोजित दस्तावेज़ या बग ट्रैकिंग सॉफ़्टवेयर के उपखंड के संदर्भ में आप यह कैसे करते हैं, आप उस डोमेन से नीचे हैं जो आप / व्यक्तिगत वरीयता / टीम आकार / बजट / समय पैमाने आदि में काम कर रहे हैं।

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