কোনও আর্কিটেকচারের বর্ণনা নথিটি কি ডিআরওয়াই নীতি লঙ্ঘন করে?


11

ডিআরওয়াই নীতি (নিজেকে পুনরাবৃত্তি করবেন না) বলেছেন যে "জ্ঞানের প্রতিটি অংশের অবশ্যই একটি সিস্টেমে একক, দ্ব্যর্থহীন, কর্তৃত্বমূলক প্রতিনিধিত্ব থাকতে হবে।" বেশিরভাগ সময় এটি কোড বোঝায়, তবে এটি প্রায়শ ডকুমেন্টেশনেও প্রসারিত হয়।

বলা হয়ে থাকে যে প্রতিটি সফ্টওয়্যার সিস্টেমে একটি আর্কিটেকচার থাকে আপনি তা বেছে নিয়েছিলেন বা না করেছেন। অন্য কথায়, আপনি যে সফ্টওয়্যারটি তৈরি করেন তার একটি কাঠামো থাকে এবং এটি "যেমন বিল্ট" কাঠামো হ'ল সফ্টওয়্যারটির আর্কিটেকচার। যেহেতু একটি বিল্ট সফটওয়্যার সিস্টেম কোনও স্থাপত্যের সাথে আসে, সুতরাং সেই সিস্টেমটির কোনও আর্কিটেকচার বর্ণনা তৈরি করা ডিআরওয়াই নীতিমালার লঙ্ঘন করে? সর্বোপরি, যদি আপনাকে আর্কিটেকচারটি জানতে হয় তবে আপনি সর্বদা কেবল কোডটি দেখতে পারেন ...


কোডটি দেখে আপনি কি বাস্তবে আর্কিটেকচারটি সনাক্ত করতে পারবেন বলে বিশ্বাস করেন? কোডটি আপনাকে সমস্ত কার্যকরী এবং অ-কার্যকরী প্রয়োজনীয়তা, আর্কিটেকচারাল ট্রেড-অফস, মোতায়েনের সমস্যা, ব্যবসায়ের প্রসঙ্গে, কেস-এর পরিস্থিতিগুলি ইত্যাদি ব্যবহার করবে? যদি আপনি কোডটি সত্যই বলতে পারেন যে এটি একটি তুচ্ছ সিস্টেমের এক জাহান্নাম।
luis.espinal

@ luis.espinal, কোড এবং চলমান সিস্টেম থেকে যথাক্রমে স্থিতিশীল এবং গতিশীল কাঠামো সনাক্ত করা সম্ভব। এই কাঠামোগুলি কোনও সিস্টেমের স্থাপত্যের সমতুল্য কিনা তা আপনার চিন্তাবিদ্যার উপর নির্ভর করবে। আপনি যেমন উল্লেখ করেছেন, আপনি এখনও কোনও স্থাপত্য ড্রাইভার এবং ডিজাইনের সিদ্ধান্তের পিছনে যুক্তি সহ কিছু বড় অংশ হারিয়ে যাবেন।
মাইকেল

কোন সত্যায়িত চিন্তাভাবনা কোড উত্পন্ন কাঠামোকে কোনও সিস্টেমের আর্কিটেকচারের সাথে সমান করে? যদি আমরা জানি যে আমরা কোনও আর্কিটেকচারাল ড্রাইভার সহ কিছু বড় অংশ মিস করব, তবে আমরা পুরো স্থাপত্যটি অনুপস্থিত missing এটি তুচ্ছভাবে প্রমাণ করে যে স্থির এবং গতিশীল স্ট্রাকচারগুলি কেবল কোড থেকে বোঝা যায় যে কোনও আর্কিটেকচারের সম্পূর্ণরূপে প্রতিনিধিত্ব করে না (স্বাধীনভাবে চিন্তাধারার স্কুলটি।) যদি আমরা সিস্টেম এবং সফ্টওয়্যার আর্কিটেকচারের (যেমন এসআইআই এর বা সংজ্ঞাযুক্ত) দেখতে পারি তবে INCOSE এর), তারা কোডটিতে স্পষ্ট যে কোনও স্থাপত্যের কেবল একটি ভগ্নাংশ।
luis.espinal

বিন্দু ক্ষেত্রে. একটি সিস্টেমের আর্কিটেকচারের জন্য আমাকে নির্দিষ্ট সংখ্যক মেশিনে মোতায়েনের প্রয়োজন হতে পারে, বাইরের ইন্টারফেসগুলি একটি নির্দিষ্ট ক্রমে বন্ধ করে দেওয়া হয়। কোড থেকে উদ্ভূত স্থিতিশীল এবং গতিশীল স্ট্রাকচারগুলি খুব কমই এটি ক্যাপচার করবে (যদি আদৌ হয়।) তবে স্পষ্টতই, এটি কোনও সিস্টেম আর্কিটেকচারের স্থাপনা এবং কার্যনির্বাহী দিকগুলির অংশ। এবং যে কোনও কোড উত্পন্ন কাঠামো কেবল একটি সফ্টওয়্যার অ্যাপ্লিকেশন (বা উপাদান) আর্কিটেকচারের স্থির দিকগুলির উপলব্ধির সাথে সম্পর্কিত । এটি কখনই সিস্টেম আর্কিটেকচারের জন্য হতে পারে না ।
luis.espinal

1
@ luis.espinal, আমি আপনাকে এই প্রশ্নের উত্তর জমা দেওয়ার জন্য আমন্ত্রণ জানাচ্ছি! দেখে মনে হচ্ছে আপনি একটি দুর্দান্ত দৃষ্টিভঙ্গি নিয়ে এসেছেন যা আমি মনে করি যে এই বিষয়টিতে কিছু সত্যিকারের মূল্য যুক্ত হবে। আপনি এটি নিয়ে গায়কদের কাছে প্রচার করছেন, তাহলে কেন এমন একটি উত্তর তৈরি করবেন না যা আপনার চিন্তাভাবনাটিকে পুরোপুরি ব্যাখ্যা করে যাতে সবাই উপকার করতে পারে? এই কারণেই আমি প্রথম প্রশ্নটি জিজ্ঞাসা করেছি।
মাইকেল 19

উত্তর:


11

আপনার চিন্তাগুলি কোডে নকল করা DRY নীতি লঙ্ঘন করে?

গীজ, আপনি যদি কোডটি সন্ধান করে কেবল আর্কিটেকচারটি জানতে পারতেন তবে "আর্কিটেকচারের বিবরণ নথি" এর মতো জিনিসগুলি প্রথম স্থানে থাকত না। এটি কোনও খ্যাতি নয়, এটি সিস্টেমের বর্ণনার আরও একটি স্তর , যা কোড থেকে তুচ্ছভাবে বাদ দেওয়া যায় না এবং বিপরীতে। সুতরাং আপনি DRY আলিঙ্গন করলেও এটির অস্তিত্বের সম্পূর্ণ অধিকার রয়েছে।


7

DRY কে কঠোর এবং দ্রুত নিয়ম হিসাবে গ্রহণ করবেন না। এটি একটি ভাল জিনিস, তবে আপনি অনুশীলনে কেবল এটি আনুমানিক করতে পারেন।

এছাড়াও আমি মনে করি এটি ভাল লেখা হয় নি। "নিজেকে পুনরাবৃত্তি করবেন না" একইরকম গুরুত্বপূর্ণ কেসটিকে কভার করে বলে মনে হচ্ছে না যে অর্থবোধক বা কার্যকরী পরিবর্তন করতে আপনাকে একাধিক জায়গায় উত্স পাঠ্য সম্পাদনা করতে হবে, বিভিন্ন তবে সমন্বিত জিনিস বলে।

এটি লঙ্ঘন না করার আদেশ হিসাবে গ্রহণ করার চেয়ে এটি কেন ভাল ধারণা তা বোঝা এবং এ সম্পর্কে বুদ্ধিমান পছন্দ করা ভাল। একাধিক জায়গায় সমন্বিত সম্পাদনা করা খারাপ হওয়ার কারণটি হ'ল আপনি, সম্পাদক, ভুল করছেন make ত্রুটি ছাড়াই পরিবর্তনগুলি করার জন্য আপনি 100% নির্ভরযোগ্য নন। যদি আপনাকে 10 টি ভিন্ন উত্স পাঠ্যের পরিবর্তন করতে হয় এবং আপনি কেবল 9 টি সঠিক পান তবে আপনি একটি বাগ রেখেছেন । এজন্য সমন্বিত পরিবর্তনের সংখ্যা হ্রাস করার জন্য উত্স পাঠ্যের ব্যবস্থা করা ভাল জিনিস। এটি বাগগুলি হ্রাস করে।

আমরা এমন কোনও ধর্মের অন্তর্ভুক্ত নই যেখানে ডিআরওয়াই হুকুমের মধ্যে একটি। এটি সামান্য বিভ্রান্তিকর হলেও কিছু সাধারণ জ্ঞানকে আবদ্ধ করার উপায় মাত্র একটি সহজ।


4

এমন একটি নির্মাণ বিবরণ বা সফটওয়্যার ডিজাইন বর্ণনা করেন লঙ্ঘন শুকিয়ে। যাইহোক, একটি বৃহত সংস্থায়, যেখানে প্রকল্পগুলি গত বছরগুলিতে, বিকাশকারীরা আসে এবং যায় এবং যে কোনও এক ব্যক্তির পক্ষে সমস্ত বিবরণ তাদের মাথায় রাখার জন্য সিস্টেমটি খুব বড়, এটি একটি সমালোচনামূলক দলিল। পরের আপডেট বা রক্ষণাবেক্ষণের সময় এটি যে পরিমাণ প্রচেষ্টা "সংরক্ষণ করে" তা সিঙ্কে রাখার জন্য এটি পুরোপুরি মূল্যবান।


1
এটি ডিআরওয়াইয়ের একটি ভুল বোঝাবুঝি বা অন্ধ প্রয়োগ। একটি স্থাপত্যের বর্ণনা এটি লঙ্ঘন নয়। যদি কেউ এই পদ্ধতিতে অন্ধভাবে ডিআরওয়াই প্রয়োগ করে থাকে তবে কোড ব্যতীত অন্য কোনও কিছুই এটি লঙ্ঘন ... এবং স্পষ্টতই এটি যারা তাদের ধারণা নিয়ে এসেছিল তাদের উদ্দেশ্য ছিল না।
luis.espinal

2

একটি আর্কিটেকচারের বর্ণনা DRY নীতি লঙ্ঘন করে না।

আপনার সফ্টওয়্যার সিস্টেমটি একটি আর্কিটেকচারের সাথে আসে, অবশ্যই। এবং এটি বহু ফাইলের মধ্যে ছড়িয়ে পড়েছে, অনেক ক্লাসে, বহু বহিরাগত এবং বিশদ যা সংক্ষিপ্তসার জন্য অপ্রয়োজনীয়।

আপনার আর্কিটেকচার ডকুমেন্টটি কোনও সংবাদ প্রতিবেদনের প্রথম অনুচ্ছেদের মতো হওয়া উচিত: এটি একটি রূপরেখা, একটি সংক্ষিপ্তসার, প্রকল্পের একটি রোডম্যাপ।


1

আপনি যদি দস্তাবেজটি তারিখ করেন, তবে এটি লেখার সময় আর্কিটেকচারের বর্ণনা দেয়।

যদিও কোডটি বর্তমান মুহূর্তে আর্কিটেকচারের প্রতিনিধিত্ব করে।

দুটি পৃথক জিনিস - একই জ্ঞান নয়।

যতক্ষণ আপনি লিখেছেন যে ডকুমেন্টটি লেখার সময় আর্কিটেকচারের প্রতিনিধিত্ব করে, আপনি জ্ঞান আইএমওকে নকল করছেন না কারণ এটির ভিন্ন জ্ঞান যদি সময়ের সাথে অন্য কোনও সময়ে সিস্টেম সম্পর্কে থাকে।


কোড কখনও স্থাপত্যের প্রতিনিধিত্ব করে না। এটি কেবল স্থাপত্যের বহিঃপ্রকাশ। আজ যে কোডটি পরিবর্তন করা হয়েছিল তা আজও কালকের আর্কিটেকচারের প্রতিনিধিত্ব করে। তদুপরি, এটি উদ্দেশ্যযুক্ত (বা চুক্তি অনুসারে প্রয়োজনীয়) আর্কিটেকচারের প্রতিনিধিত্ব নাও করতে পারে যা আপনাকে সবচেয়ে বেশি চিন্তা করতে হবে। কোডটি সঠিক বা ভুল কিনা তা আপনাকে জানায় না, কেবল এটি চালানো। এটি সঠিক বা ভুল কিনা তা জানতে, আপনাকে লক্ষ্যযুক্ত আর্কিটেকচার এবং সিস্টেমটি শুরু করার জন্য প্রয়োজনীয় প্রয়োজনীয়তাগুলি দেখতে হবে।
luis.espinal
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.