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