2009-08-10 14 views
9

Modularization सॉफ्टवेयर परियोजनाओं में स्पष्ट रूप से महत्वपूर्ण है, लेकिन मैं कैसे महत्वपूर्ण पर और क्या कारणों के लिए लोगों की राय जानना चाहता हूँ यह महत्वपूर्ण है। मुझे स्पष्ट रूप से अपने विचार मिल गए हैं क्योंकि मैं यह पूछ रहा हूं, लेकिन इसके बारे में सोचें कि किसी के सॉफ्टवेयर प्रोजेक्ट को मॉड्यूलर करना चाहिए ...सॉफ्टवेयर के modularization परियोजनाओं कितना महत्वपूर्ण है

+4

समुदाय होना चाहिए विकी –

+0

हो गया, और अभी ठीक है ... –

उत्तर

2

विभिन्न मॉड्यूल में कोड डालने के मेरे मुख्य कारण :

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

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

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

अंत में, जब चीजें छोटी होती हैं, परीक्षण और रखरखाव करना आसान है। इसके अलावा, आपके परीक्षण तेजी से संकेत देते हैं कि त्रुटि कहां है, एक बार वे एप्लिकेशन के केवल एक छोटे से हिस्से का परीक्षण करेंगे।

5

हम जटिल समस्याओं को समझने की बात करते समय मनुष्य सीमित हैं। हालांकि, हमें बड़ी समस्या से निपटने के लिए बहुत जटिल नहीं होने वाली व्यक्तिगत समस्याओं की एक संभावित (संभवतः बहुत बड़ी) संख्या में जटिल समस्या को विघटित करने की क्षमता में उपहार दिया जाता है।

यह मूल रूप से "पुन: उपयोग", "चिंताओं को अलग करने", "आसान रखरखाव" जैसे उत्तर ड्राइव करता है।

इन सभी कारणों से यह सच है कि यह एक व्यक्ति टुकड़ा-टुकड़ा से निपटने के लिए जटिल समस्या को तोड़ रहा है, या यदि यह जटिलता को वितरित करने के लिए इसे तोड़ने वाले लोगों की एक टीम है।

+0

"विभाजन और जीत" का अच्छा स्पष्टीकरण ... :) +1 –

+0

मेरे लिए, यह मॉड्यूलरलाइजेशन (और उस मामले के लिए encapsulation) का प्राथमिक महत्व है। यह बड़े सिस्टम के बारे में सोचने के बिना समाधान के एक संकीर्ण हिस्से में स्कोपिंग करके परिवर्तन करने के लिए आवश्यक कार्य सेट को कम करने की क्षमता है। बड़ी प्रणालियों के साथ, मुझे पता है कि * मैं अपने सिर में इसे रखने के लिए पर्याप्त स्मार्ट नहीं हूं! – kyoryu

1

Modularization और decoupling कई कारणों से महत्वपूर्ण हैं, कुछ कर रहे हैं:

  • पुन: उपयोग: (लेखन decoupled मॉड्यूल पर कार्य करना: यह सॉफ्टवेयर मॉड्यूल है कि विशिष्ट प्रयोजनों
  • जटिलता का प्रबंधन करने के लिए समर्पित कर रहे हैं पुन: उपयोग करना बहुत आसान है कोड, डीबगिंग, रखरखाव इत्यादि) एप्लिकेशन या सॉफ़्टवेयर सिस्टम के अन्य पहलुओं से विचलित किए बिना किसी निश्चित डोमेन समस्या पर अपना ध्यान केंद्रित करता है।
0

यह भी Application Architecture की एक बुनियादी गतिविधि है जो के रूप में देखा जा सकता है:

  • अनुप्रयोगों जबकि गैर कार्यात्मक मॉड्यूल की पहचान करने और शुद्ध तकनीकी में कुछ व्यापार और कार्यात्मक विनिर्देश
  • और समूह प्रमुख कार्यों लेता है अनुप्रस्थ मॉड्यूल

है यही कारण है कि एक "वित्तीय पोर्टफोलियो गणना" वास्तव में विभाजित किया जाएगा:

  • एक गणना मॉड्यूल
  • एक डिस्पैचर मॉड्यूल
  • एक लांचर मॉड्यूल (क्योंकि एक पोर्टफोलियो बहुत बड़ा एक सर्वर पर गणना की जा करने के लिए है) (सभी संगणना पायलट के लिए)
  • एक जीयूआई (देखने के लिए क्या वास्तव में चल रहा है)

प्लस कई अनुप्रस्थ वाले:

  • KPI प्रवेश
  • अपवाद प्रबंधन

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

यह भी मजबूर करता आप अधिक इंटरफेस को परिभाषित करने, और अंतर-संचार का विश्लेषण करने के मुद्दों पर अपने विभिन्न मॉड्यूल का समाधान करना होगा (प्रत्यक्ष n-टू-एन typology? बस ?, ...)

संबंधित मुद्दे