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