सिस्टम के आर्किटेक्चर को औपचारिक रूप देते समय यह महत्वपूर्ण है कि आप न केवल उस मूल्य को समझें जो आर्किटेक्चर टेबल पर लाएगा, बल्कि यह समझना और उसकी सराहना करना भी चाहिए कि यह क्या होना चाहिए।
सॉफ्टवेयर या तकनीकी वास्तुकला का प्राथमिक लक्ष्य गैर-कार्यात्मक आवश्यकताओं की पहचान करना है जो गुणवत्ता गुणों द्वारा महसूस किए जाते हैं जो सिस्टम आर्किटेक्चर को चलाएंगे ।
गैर-कार्यात्मक आवश्यकताओं पर:
एक गैर-कार्यात्मक आवश्यकता एक आवश्यकता है जो मानदंडों को निर्दिष्ट करती है जिसका उपयोग विशिष्ट व्यवहारों के बजाय एक प्रणाली के संचालन का न्याय करने के लिए किया जा सकता है। वे कार्यात्मक आवश्यकताओं के विपरीत हैं जो विशिष्ट व्यवहार या कार्यों को परिभाषित करते हैं। कार्यात्मक आवश्यकताओं को लागू करने की योजना सिस्टम डिज़ाइन में विस्तृत है। गैर-कार्यात्मक आवश्यकताओं को लागू करने की योजना सिस्टम वास्तुकला में विस्तृत है।
मोटे तौर पर, कार्यात्मक आवश्यकताएं परिभाषित करती हैं कि सिस्टम क्या करना चाहिए और गैर-कार्यात्मक आवश्यकताएं यह परिभाषित करती हैं कि सिस्टम को कैसे माना जाता है। ... गैर-कार्यात्मक आवश्यकताओं को अक्सर एक सिस्टम की "गुणवत्ता विशेषताओं" कहा जाता है। गैर-कार्यात्मक आवश्यकताओं के लिए अन्य शब्द "गुण", "गुणवत्ता लक्ष्य", "सेवा आवश्यकताओं की गुणवत्ता", "बाधाएं" और "गैर-व्यवहार संबंधी आवश्यकताएं" हैं।
निश्चित रूप से ग्रीनफील्ड प्रोजेक्ट पर आर्किटेक्चर की महत्वपूर्ण आवश्यकताओं को पहचानने से समझ में आता है, हालांकि मौजूदा सॉफ़्टवेयर के साथ काम करते समय, जितना संभव हो उतना अनुशासित होना सबसे अच्छा है। आप नहीं चाहेंगे कि आपका सॉफ्टवेयर आर्किटेक्चर मौजूदा सिस्टम से प्रभावित हो।
आधिकारिक होने के लिए सॉफ्टवेयर आर्किटेक्चर वास्तव में 3 चीजें होना चाहिए।
कथात्मक
यह दस्तावेज़ीकरण का एक हिस्सा है जहाँ आप घोषित नहीं करते कि आईएस क्या है, लेकिन कैसे होना चाहिए। हम इसे सिस्टम के विभिन्न वास्तुशिल्प दृश्यों के उपयोग के माध्यम से करते हैं। हम उन घटकों को परिभाषित करते हैं जो होना चाहिए, वे कैसे बातचीत करते हैं, और फिर हम वैकल्पिक रूप से प्रत्येक घटक में अधिक बारीक विचारों के लिए ड्रिल करते हैं जो घोषित करते हैं कि सिस्टम को कैसे डिज़ाइन किया जाना चाहिए।
यह एक महत्वपूर्ण अंतर है। सिस्टम डिज़ाइन को सिस्टम आर्किटेक्चर द्वारा विवश किया जाना चाहिए, वे वास्तव में अलग लेकिन संबंधित चीजें हैं।
दलील
आपके सॉफ़्टवेयर आर्किटेक्चर का औचित्य वह है जो बनाए गए आर्किटेक्चर निर्णयों को वैधता और अधिकार प्रदान करता है। शायद एक बैच की नौकरी को ट्रिगर करने के लिए एमक्यू पर एक पब / सब इवेंट श्रोता का उपयोग करने का निर्णय लिया गया था और आप इसे आरेखित करते हैं?
यह निर्णय क्यों किया गया? हम बताते हैं कि क्यों Rationale सेक्शन में और गैर-कार्यात्मक आवश्यकताओं, गुणवत्ता विशेषता लक्ष्यों या आर्किटेक्चरली महत्वपूर्ण आवश्यकताओं के लिए हमारे स्पष्टीकरण को वापस लिंक करें। । ..)
जोखिम
अब जब आपने घोषित कर दिया है कि आर्किटेक्चर को कैसे होना चाहिए और इसे अपने राशनलेबल के साथ साबित करना चाहिए, तो आप अब रिस्क को सिस्टम की वर्तमान स्थिति पर पहचान सकते हैं जहां यह पालन नहीं करता है।
(उदा। सर्वर साइड सत्यापन क्लाइंट साइड जावास्क्रिप्ट कोड पर डुप्लिकेट किया जा रहा है। यह DRY सिद्धांत का उल्लंघन है और यह रखरखाव की गुणवत्ता गुण के लिए काउंटर चलाता है। इस में प्रदर्शन के आसपास कोई गैर-कार्यात्मक आवश्यकताएं निर्धारित नहीं हैं। वर्तमान प्रणाली व्यवहार के लिए कोई तर्क नहीं है)
आपके जोखिम भी आरेख कर सकते हैं जहां वर्तमान स्थिति आर्किटेक्चर से विचलित हो रही है। इन जोखिमों को अब विकास टीम द्वारा संबोधित किया जा सकता है, या तो उनकी परियोजना योजना के माध्यम से या बैकलॉग में जोड़कर।