আপনার কোডটি কীভাবে সংগঠিত করা হবে তা পরিকল্পনা করতে কেন ইউএমএল চিত্র ব্যবহার করা অনুচিত?


9

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

চতুর সফ্টওয়্যার বিকাশ: নীতি, প্যাটার্নস এবং অনুশীলনগুলি - রবার্ট সি মার্টিন

এর দ্বারা সে আসলে কী বোঝায়? ইউএমএল কীভাবে "ডাইভিং ইন" এর আগে আপনার কোডটি কাঠামোবদ্ধ করবেন তা পরিকল্পনা করার জন্য ডিজাইন করা হয়নি ? আপনি যে চিত্রগুলি নিয়ে এসেছেন তা যদি আপনি অনুসরণ না করেন তবে এটি ব্যবহার করার কী লাভ?

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


4
চাচা বব এর বক্তব্য হ'ল টেস্ট-চালিত বিকাশ থেকে উদ্ভূত আর্কিটেকচারটি ইউএমএল চিত্রের থেকে মূলত পৃথক হতে পারে।
রবার্ট হার্ভে

1
এছাড়াও পড়ুন ডিজাইন মারা গেছে? এই বিষয় এবং
চৌকস

4
একটি গুরুত্বপূর্ণ এবং দরকারী প্রশ্নটি কী তা বন্ধ করার জন্য ভোট দেওয়ার ক্ষেত্রে @ রবার্টহার্ভি এট আল এর পক্ষে ক্ষুদ্র রায় দেওয়ার জবাবে এই প্রশ্নের জোর দেওয়া।
ডেভিড আরনো

3
@ ডেভিড আর্নো কোনটি বন্ধ করা উচিত বা উচিত নয় সে সম্পর্কে আপনার দৃ strong় মতামত থাকলে, আমাদের মেটা সাইটে আলোচনায় অংশ নিতে আপনাকে দৃ .়ভাবে উত্সাহিত করব। সেখানে উপস্থিত যারা বর্তমানে (আমাকে সহ) পোস্ট করেন তারা সম্ভবত কয়েকজন এসই কর্মচারী বাদে "@ রবার্টহারভি এট আল" এর অধীনে চলে যান, এবং আমরা উদ্বিগ্ন হয়েছি যে সেখানে অন্য দৃষ্টিভঙ্গি উপস্থাপন করা হচ্ছে না, তবে এখনও পর্যন্ত কেউই এর প্রতিনিধিত্ব করতে দেখায় নি ।
Ixrec

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

উত্তর:


19

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

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

কারণটি সহজ। কোডিং হ'ল ডিজাইন । বাড়ির সাদৃশ্যগুলির সাথে কোডটি হ'ল স্থপতিদের অঙ্কন। সংকলক হ'ল নির্মাতা যিনি সেই ডিজাইনগুলি নেন এবং সেগুলি থেকে একটি প্রোগ্রাম তৈরি করেন। এই উপলব্ধিটি তারপরে চতুর কৌশল, টিডিডি ইত্যাদির জন্ম দেয়: সেই কোড ডিজাইনের মান উন্নত করতে সহায়তা করার সরঞ্জামগুলি।

কোনও স্থপতি যেমন তার এবং তার দলটিকে সামগ্রিক নকশাকে কল্পনা করতে সহায়তা করার জন্য প্রাথমিক স্কেচ তৈরি করতে পারে, তেমনি কোনও বিকাশকারী প্রয়োজনীয় নকশাকে কল্পনা করতে সহায়তা করতে ইউএমএল বা অন্যান্য সরঞ্জাম ব্যবহার করতে পারে। এই স্কেচগুলি অন্ধভাবে অনুসরণ করা হয় না, তেমনি ইউএমএলকে অন্ধভাবে অনুসরণ করা উচিত নয়। কোড ডিজাইনের চৌকস পুনরাবৃত্তি এবং টিডিডি ব্যবহার করে বিকশিত হওয়া উচিত। অনুরূপভাবে, কোনও স্থপতি যেমন তার এবং তার দলটিকে অঙ্কনগুলি কল্পনা করতে সহায়তা করার জন্য ঘরের একটি মডেল তৈরি করতে পারে, তাই ইউএমএল কোড কাঠামোটি ভিজ্যুয়ালাইজ করতে সহায়তা করতে পারে।

চাচা বব যেমন বলেছেন, আপনি ইউএমএলকে বৈধতা দিতে পারবেন না, আপনি কেবল কোডটি বৈধ করতে পারবেন। সুতরাং কোডটি প্রাইম ডিজাইনের ডকুমেন্টেশন এবং ইউএমএল, যদি ব্যবহৃত হয় তবে এটি কেবলমাত্র মাধ্যমিক ডকুমেন্টেশন।


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

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

3

আমি অনুমান করি যে প্রতিটি প্রোগ্রামিং আইডিয়ম (বা ডিজাইন, বা কোড) ইউএমএলে ফিট হয় না (যা আমি স্বীকার করি যে আমি এটিতে কয়েকটি বই ভালভাবে পড়তে পারি না-, আমি এটি কখনও ব্যবহার করি নি, এবং সম্ভবত আমি এটি অপছন্দ করি)।

প্লেইন সি কোড (যেমন লিনাক্স কার্নেলের উত্স কোড) ইউএমএল দ্বারা ঠিক মডেলিং নাও হতে পারে ।

ওক্যামেল কোড (এর মডিউল এবং ফান্টেক্টর সহ) বা সি ++ 11 কোড (ল্যাম্বডাস এবং টেমপ্লেট সহ) ইউএমএলে ফিট নাও হতে পারে।

মাল্টিস্টেজ প্রোগ্রামিং à লা মেটাঅক্যামেল সম্ভবত ইউএমএলে ফিট করে না।

প্রোলগ কোড বা কমন লিস্প কোড সম্ভবত ইউএমএলে ফিট হয় না।

এই উত্তর এবং আমার এই প্রশ্নটি দেখুন ।

স্কট এর প্রোগ্রামিং ল্যাঙ্গুয়েজ প্র্যাকমেটিক্স এবং ভ্যান রায়ের ধারণাগুলি, প্রযুক্তি প্রোগ্রাম এবং কম্পিউটার প্রোগ্রামিং বইগুলির মডেলগুলি পড়ুন , তারপরে নিজেকে জিজ্ঞাসা করুন সেখানকার প্রতিটি প্রোগ্রামিং মডেল ইউএমএলে ফিট করে কিনা।

মার্টিন ফাউলারের কি ডিজাইনটি মারা গেছে? ব্লগ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.