किसी भी कोड को लिखने से पहले आप किसी एप्लिकेशन के आर्किटेक्चर की योजना कैसे बनाते हैं? [बन्द है]


84

एक चीज जो मैं संघर्ष करता हूं, वह किसी भी कोड को लिखने से पहले एक एप्लिकेशन की वास्तुकला की योजना बना रही है।

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

मैं इकट्ठा करता हूं कि यूएमएल ऐसा करने का एक तरीका है, लेकिन मुझे इसके साथ कोई अनुभव नहीं है, इसलिए यह एक प्रकार का नेबुला लगता है।

किसी भी कोड को लिखने से पहले आप किसी एप्लिकेशन के आर्किटेक्चर की योजना कैसे बनाते हैं? यदि यूएमएल जाने का रास्ता है, तो क्या आप छोटे अनुप्रयोगों के एक डेवलपर के लिए संक्षिप्त और व्यावहारिक परिचय की सिफारिश कर सकते हैं?

मैं आपके इनपुट की सराहना करता हूं।

जवाबों:


32

मुझे वास्तव में पता चलता है कि कागज या व्हाइटबोर्ड पर लेखन का पहला हिस्सा वास्तव में महत्वपूर्ण है। फिर अगर आप चाहें तो यूएमएल की ओर बढ़ें, लेकिन कुछ भी नहीं बस पहले से ही इसे हाथ से खींचने के लचीलेपन को धड़कता है।


30
सुनिश्चित करें कि आपने सुपर-सिक्योर "Do Not ERASE" को व्हाइटबोर्ड पर रखा है। :)
मुशीनेसिस 13

1
आप वास्तव में प्रारंभिक डिज़ाइन के लिए व्हाइटबोर्ड और पेपर को हरा नहीं सकते। यह आसान, लचीला और अभिव्यंजक है।
Booji Boy

3
आप उपयोग के बाद सिर्फ व्हाइटबोर्ड को टुकड़े टुकड़े कर सकते हैं ...: पी
पैट्रिक

41

मैं निम्नलिखित पर विचार करता हूं:

  1. सिस्टम क्या करने वाला है, यानी वह कौन सी समस्या है जिसे सिस्टम हल करने की कोशिश कर रहा है
  2. ग्राहक कौन है और उनकी इच्छाएँ क्या हैं
  3. सिस्टम को किसके साथ एकीकृत करना है
  4. क्या कोई विरासत पहलू हैं जिन पर विचार करने की आवश्यकता है
  5. उपयोगकर्ता के व्यवधान क्या हैं
  6. आदि...

फिर मैं सिस्टम को ब्लैक बॉक्स के रूप में देखना शुरू करता हूं और:

  1. उस ब्लैक बॉक्स के साथ होने वाले इंटरैक्शन क्या हैं
  2. ब्लैक बॉक्स के अंदर होने वाले व्यवहार क्या हैं, अर्थात उच्च स्तर पर वांछित व्यवहार प्रदर्शित करने के लिए ब्लैक बॉक्स के लिए उन इंटरैक्शन का क्या होना चाहिए, जैसे आरक्षण प्रणाली से आने वाले संदेशों को प्राप्त करना और संसाधित करना, डेटाबेस अपडेट करना आदि। ।

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

यूएमएल ऐसे व्यवहार का प्रतिनिधित्व करने के लिए बहुत अच्छा है। आप यूएमएल के कई घटकों में से दो का उपयोग करके अधिकांश प्रणालियों का वर्णन कर सकते हैं:

  • वर्ग आरेख, और
  • अनुक्रम आरेख।

यदि आपको किसी व्यवहार में समानता की आवश्यकता है, तो आपको गतिविधि आरेख की आवश्यकता हो सकती है।

यूएमएल सीखने के लिए एक अच्छा संसाधन मार्टिन फाउलर की उत्कृष्ट पुस्तक "यूएमएल डिस्टिल्ड" ( अमेज़ॅन लिंक - स्क्रिप्ट किडी लिंक नाज़िस के लिए वहां से बाहर (-:) है)। यह पुस्तक आपको प्रत्येक घटक के आवश्यक भागों पर एक त्वरित नज़र देती है। यूएमएल।

ओह। मैंने जो वर्णन किया है वह आइवर जैकबसन के दृष्टिकोण से बहुत अधिक है। जैकबसन ओओ के तीन अमीगो में से एक है। वास्तव में यूएमएल को शुरू में अन्य दो व्यक्तियों द्वारा विकसित किया गया था जो कि थ्री एमिगोस, ग्रैडी बूच और जिम रूंबॉ का निर्माण करते हैं


18

आपको निश्चित रूप से स्टीव मैककोनेल के कोड को पूरा देखना चाहिए- और विशेष रूप से "निर्माण में डिजाइन" पर उनके सस्ता अध्याय में

आप इसे उसकी वेबसाइट से डाउनलोड कर सकते हैं:

http://cc2e.com/File.ashx?cid=336


यह बहुत अच्छी रीडिंग है - बहुत सारी अच्छी जानकारी, सलाह और विचार। बहुत लंबा भी नहीं है।
बूजी बॉय

पुस्तक खरीदें और अध्याय 6 भी पढ़ें जो व्यक्तिगत कक्षाओं के डिजाइन के बारे में है। फिर अन्य सभी अध्यायों को भी पढ़ें - यह शुद्ध सोना है।
मार्कज

ओह हां, अध्याय 4 आवेदन वास्तुकला के बारे में है
मार्क जे

इस उद्योग में कुछ गंभीर करने का दिखावा करने वाले सभी को निश्चित रूप से उस पुस्तक को पढ़ना चाहिए, चाहे वह कोई भी भूमिका निभाए।
चेपे

9

यदि आप .NET के लिए विकसित कर रहे हैं, तो Microsoft ने सिर्फ एक मुफ्त ई-पुस्तक ( एप्लीकेशन आर्किटेक्चर गाइड 2.0b1 के रूप में ) प्रकाशित किया है । यह किसी भी कोड को लिखने से पहले आपकी वास्तुकला की योजना बनाने के बारे में बहुत अच्छी जानकारी प्रदान करता है।

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


अब और अधिक नवीनतम संस्करण उपलब्ध है। इसे डाउनलोड करने के लिए होमपेज पर जाएं apparchguide.codeplex.com
MarkJ

8

मैं यह कहकर इसकी पुष्टि करूंगा कि मैं ज्यादातर वेब डेवलपमेंट करता हूं, जहां बहुत कुछ आर्किटेक्चर पहले से ही तय हो चुका है (अब WebForms, अब MVC) और मेरे ज्यादातर प्रोजेक्ट्स काफी छोटे हैं, एक-व्यक्ति के प्रयास जो एक साल से भी कम समय लेते हैं। मुझे यह भी पता है कि मैं अपने व्यापार ऑब्जेक्ट और डेटा इंटरैक्शन को संभालने के लिए क्रमशः ORM और DAL होगा। हाल ही में, मैंने इसके लिए LINQ का उपयोग करने के लिए स्विच किया है, इतना "डिज़ाइन" डेटाबेस डिज़ाइन और डीबीएमएल डिजाइनर के माध्यम से मैपिंग बन जाता है।

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

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

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


5

http://dn.codegear.com/article/31863

मैं यूएमएल का उपयोग करता हूं, और उस गाइड को बहुत उपयोगी और पढ़ने में आसान पाता हूं। अगर आपको कुछ अलग चाहिए तो मुझे बताएं।


4

UML एक संकेतन है। यह आपके डिज़ाइन को रिकॉर्ड करने का एक तरीका है, लेकिन डिज़ाइन करने के दौरान (मेरी राय में) नहीं। यदि आपको चीजों को लिखने की आवश्यकता है, तो मैं यूएमएल की सिफारिश करूंगा, हालांकि, इसलिए नहीं कि यह "सबसे अच्छा" है, बल्कि इसलिए कि यह एक मानक है जो अन्य शायद पहले से ही जानते हैं कि कैसे पढ़ना है, और यह आपके "मानक" का आविष्कार करने के लिए धड़कता है।

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

डिजाइन करना कठिन है। यह वास्तव में एक StackOverflow जवाब में कब्जा नहीं किया जा सकता है। दुर्भाग्य से, मेरे डिजाइन कौशल, जैसे वे हैं, वर्षों में विकसित हुए हैं और इसलिए मेरे पास एक स्रोत नहीं है जो मैं आपको संदर्भित कर सकता हूं।

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

लेकिन सबसे अच्छी सलाह व्यापक रूप से पढ़ी जाती है, कठिन लगता है, और अभ्यास किया जाता है। यह विशुद्ध रूप से मिलनसार कौशल नहीं है, आपको वास्तव में यह करना है।


4

मैं इतना स्मार्ट नहीं हूं कि थोड़ा आगे बढ़ूं। जब मैं योजना आगे करते हैं, मेरी योजनाओं हमेशा गलत बाहर आते हैं, लेकिन अब मैं गए खर्च n बुरा योजनाओं पर दिन। व्हाइटबोर्ड पर मेरी सीमा लगभग 15 मिनट की लगती है।

मूल रूप से, मैं उतना कम काम करता हूं जितना मैं यह पता लगा सकता हूं कि क्या मैं सही दिशा में जा रहा हूं।

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

मैं जल्द से जल्द कुछ वास्तविक ग्राहक मूल्य प्राप्त करने की दिशा में कोड करता हूं, इसलिए एक ग्राहक मुझे बता सकता है कि मुझे कहां जाना चाहिए।

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

चलो इसे "चरम प्रोग्रामिंग" कहते हैं।


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

मैं देखता हूं कि आपने वहां क्या किया था
hitch.united

4

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


3

मुझे यकीन नहीं है कि कुछ भी हो सकता हैलागू करने से पहले अग्रिम में योजना बनाई है। मुझे 10 साल का अनुभव है, लेकिन यह केवल 4 कंपनियों (एक कंपनी में 2 साइटों सहित, जो लगभग ध्रुवीय विपरीत थे) पर है, और मेरे लगभग सभी अनुभव कॉलॉज़ल क्लस्टर ****** देखने के संदर्भ में रहे हैं ** होते हैं। मैं यह सोचना शुरू कर रहा हूं कि सामानों को रिफलेक्ट करना वास्तव में चीजों को करने का सबसे अच्छा तरीका है, लेकिन साथ ही मुझे एहसास होता है कि मेरा अनुभव सीमित है, और मैंने जो देखा है, उस पर मेरी प्रतिक्रिया हो सकती है। मैं वास्तव में जानना चाहता हूं कि सबसे अच्छा अनुभव कैसे प्राप्त करना है, इसलिए मैं उचित निष्कर्ष पर पहुंचने में सक्षम हूं, लेकिन ऐसा लगता है कि कोई शॉर्टकट नहीं है और इसमें लोगों को गलत काम करते हुए देखने में बहुत समय लगता है :(।) 'वास्तव में एक ऐसी कंपनी में काम करना चाहते हैं, जहां लोग सही काम करते हैं (जैसा कि सफल उत्पाद परिनियोजन द्वारा स्पष्ट किया जाता है),


2

मैं अलग होना चाहता हूं: यूएमएल का उपयोग एप्लिकेशन आर्किटेक्चर के लिए किया जा सकता है, लेकिन तकनीकी आर्किटेक्चर (फ्रेमवर्क, क्लास या सीक्वेंस डायग्राम, ...) के लिए अधिक बार उपयोग किया जाता है, क्योंकि यह वह जगह है जहां उन आरेखों को सबसे आसानी से विकास के साथ रखा जा सकता है। ।

एप्लिकेशन आर्किटेक्चर तब होता है जब आप कुछ कार्यात्मक विनिर्देश लेते हैं (जो कि भविष्य के कार्यान्वयन के बारे में कोई धारणा बनाए बिना प्रकृति और संचालन के प्रवाह का वर्णन करते हैं), और आप उन्हें तकनीकी विशिष्टताओं में बदल देते हैं।

वे विनिर्देश कुछ व्यावसायिक और कार्यात्मक आवश्यकताओं को लागू करने के लिए आपके द्वारा आवश्यक अनुप्रयोगों का प्रतिनिधित्व करते हैं।

इसलिए यदि आपको कई बड़े वित्तीय विभागों (कार्यात्मक विनिर्देश) को संसाधित करने की आवश्यकता है, तो आप यह निर्धारित कर सकते हैं कि आपको उस बड़े विनिर्देश को विभाजित करने की आवश्यकता है:

  • एक प्रेषणकर्ता उन भारी गणनाओं को अलग-अलग सर्वरों को सौंपने के लिए
  • एक लांचर यह सुनिश्चित करने के लिए कि सभी पोर्टफोलियो सर्वर उन पोर्टफ़ोलियो को शुरू करने से पहले उठ रहे हैं और चल रहे हैं।
  • एक GUI दिखाने में सक्षम होने के लिए क्या हो रहा है।
  • इकाई परीक्षण की सुविधा के लिए, लेकिन यह भी कुछ कार्यात्मक और प्रतिगमन परीक्षण की सुविधा के लिए, विशिष्ट पोर्टफोलियो एल्गोरिदम के स्वतंत्र रूप से विशिष्ट पोर्टफोलियो एल्गोरिदम विकसित करने के लिए एक "सामान्य" घटक है।

तो मूल रूप से, एप्लिकेशन आर्किटेक्चर के बारे में सोचने के लिए यह तय करना है कि "फ़ाइलों का समूह" आपको एक सुसंगत तरीके से विकसित करने की आवश्यकता है (आप एक लांचर, जीयूआई, एक डिस्पैचर, फ़ाइलों के एक ही समूह में विकसित नहीं कर सकते हैं: ... वे एक ही गति से विकसित करने में सक्षम नहीं होगा)

जब किसी एप्लिकेशन आर्किटेक्चर को अच्छी तरह से परिभाषित किया जाता है, तो इसके प्रत्येक घटक आमतौर पर एक कॉन्फ़िगरेशन घटक के लिए एक अच्छा उम्मीदवार होता है, जो कि फाइल का एक समूह होता है, जिसे सभी में VCS (संस्करण नियंत्रण प्रणाली) में संस्करणित किया जा सकता है, जिसका अर्थ है कि इसकी सभी फाइलें होंगी जब भी आपको उस एप्लिकेशन के स्नैपशॉट को रिकॉर्ड करने की आवश्यकता होती है, तब एक साथ लेबल किया जाता है (फिर से, आपके सभी सिस्टम को लेबल करना कठिन होगा, इसका प्रत्येक एप्लिकेशन एक ही समय में स्थिर स्थिति में नहीं हो सकता है)


2

मैं कुछ समय से आर्किटेक्चर कर रहा हूं। मैं व्यवसाय प्रक्रिया को परिष्कृत करने के लिए BPML का उपयोग करता हूं और फिर विभिन्न विवरणों को पकड़ने के लिए UML का उपयोग करता हूं! तीसरा चरण आम तौर पर ईआरडी है! जब तक आप BPML और UML के साथ किए जाते हैं, तब तक आपका ERD काफी स्थिर रहेगा! कोई भी योजना सही नहीं है और कोई भी अमूर्त 100% नहीं है। रिफैक्टरिंग पर योजना, लक्ष्य जितना संभव हो उतना कम रिफैक्टरिंग करना है!


1

मैं अपनी सोच को दो क्षेत्रों में तोड़ने की कोशिश करता हूं: जिन चीजों में मैं हेरफेर करने की कोशिश कर रहा हूं, उनका प्रतिनिधित्व करता हूं, और मैं उनके साथ क्या करना चाहता हूं।

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

इन डोमेन मॉडल को यूएमएल डोमेन मॉडल, क्लास डायग्राम और एसक्यूएल ईआरडी के रूप में दर्शाया जा सकता है।

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

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


1

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

एक समाधान सिर्फ वास्तव में कठिन प्रयास करना है। हर जगह यूएमएल लिखें। हर वर्ग के माध्यम से जाओ। सोचें कि यह आपकी अन्य कक्षाओं के साथ कैसे बातचीत करेगा। ऐसा करना मुश्किल है।

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


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