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