কোনও সিস্টেম ডিজাইন করার সময়, আপনি যে ফ্রেমওয়ার্কটি ব্যবহার করবেন তার চারপাশে নকশাটি পূরণ করা কি সেরা অনুশীলন?


37

কোনও সিস্টেম বা অ্যাপ্লিকেশন বিকাশ করার সময় যা আপনি নির্দিষ্ট কাঠামোর সাথে ব্যবহার করার পরিকল্পনা করছেন, ফ্রেমওয়ার্কটি মাথায় না রেখে সিস্টেমের নকশা করা কি সেরা অনুশীলন, না মানসিকতার সাথে সিস্টেমটি ডিজাইন করা আরও ভাল "ভাল কাঠামোর একটি সহজ সময় থাকতে পারে এর সাথে".


4
আপনি কোন ধরণের কাঠামোর কথা বলছেন? আপনার অর্থ কি এমন কোনও কুলুঙ্গি-নির্দিষ্ট কাঠামো যা কোনও নির্দিষ্ট শিল্পের জন্য খুব ডোমেন-নির্দিষ্ট সমস্যা সমাধানের জন্য ডিজাইন করা হয়েছে? (যেমন চিকিৎসা, পারমাণবিক, প্রতিরক্ষা, বিমান, ইত্যাদি)। অথবা আপনি প্রযুক্তিগত সমস্যাগুলি সমাধানের জন্য ডিজাইন করা সাধারণ-উদ্দেশ্য ফ্রেমওয়ার্কের বিষয়ে কথা বলছেন?
বেন কট্রেল

1
প্রযুক্তিগত সমস্যাগুলি সমাধানের জন্য সাধারণ উদ্দেশ্যে কাঠামো তৈরি করা হয়েছে
রবার্ট পাউন্ডার

2
অভাবের জন্য ছোট স্কেল (আমি কর্মে আছি, পরে আরও বিস্তারিতভাবে বলতে পারি): আমি এমন একটি সিস্টেম লিখছি যা ডিজাইনের ভিত্তিতে ইমেল তৈরি করে। - আমি যদি লারাভেলে এটি লিখতে থাকি তবে আমি সম্ভবত ইমেলগুলি ডিজাইনের জন্য তাদের টেম্প্লেটিং ইঞ্জিন "ব্লেড" ব্যবহার করতে যাবো, যা সিস্টেমের নকশাকে প্রবাহের দিক দিয়ে অনেক সহজ করে তুলবে। তবে আমি যদি ভ্যানিলা পিএইচপি করছিলাম বা অন্য কোনও উপযুক্ত বিকল্প টেম্প্লেটিং সিস্টেম খুঁজে নিচ্ছিলাম তবে টেম্প্লেটিং ইঞ্জিনটি লিখতে হবে। এটি নকশা প্রক্রিয়াতে যুক্ত করবে, যা প্রশ্নটি খুব উল্লেখ করছে।
রবার্ট পাউন্ডার

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

1
চাকাযুক্ত পাবলিক ট্রানজিট যানবাহনের ডিজাইনের চেষ্টা করতে গিয়ে হারিয়ে যাওয়া বাসের ধাক্কায় খুব খারাপ লাগবে।

উত্তর:


51

আপনার ডিজাইনটি ক্লায়েন্টদের যতটা প্রয়োজন তত ঘনিষ্ঠতার প্রয়োজনগুলি পূরণ করা উচিত। মনে রাখবেন যে ডিজাইনে সামান্য জিনিস অন্তর্ভুক্ত রয়েছে:

  • ব্যবহারকারীর অভিজ্ঞতা
  • কার্যকারিতার
  • আপনার আবেদনের টুকরো কীভাবে যোগাযোগ করে (নিজেই বা বাহ্যিক সত্তার সাথে)

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

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

সংক্ষেপে

  • আপনার ব্যবহারকারীদের জন্য ডিজাইন
  • আপনার নকশাটি সম্পাদন করার জন্য উপযুক্ত সরঞ্জামগুলি চয়ন করুন
  • আপনার সরঞ্জামগুলি সেগুলি ব্যবহারের জন্য নকশাকৃতভাবে ব্যবহার করুন

আরও চিন্তা:

20+ বছর ধরে সফটওয়্যার ইঞ্জিনিয়ারিংয়ের পরে এবং বেশ কয়েকটি ফ্রেমওয়ার্ক ব্যবহার করার পরে আমি কয়েকটি পাঠ শিখেছি। সমস্ত ফ্রেমওয়ার্কগুলি একটি দ্বি প্রান্তযুক্ত তরোয়াল: এগুলি উভয়ই বাধা দেয় এবং সক্ষম করে। আমি উপরে উল্লিখিত বড় 3 টি দেখার আগে আপনার কাঠামোটি স্থির করে দেওয়ার বিষয়টি হ'ল আপনি একটি সাধারণ (সেরা) একজনের জন্য ভাল ব্যবহারকারীর অভিজ্ঞতার সাথে আপস করছেন। অথবা কিছু নির্দিষ্ট কার্যকারিতা সম্পাদনের জন্য আপনাকে ফ্রেমওয়ার্ক ডিজাইন থেকে বিচ্যুত হতে বাধ্য করা যেতে পারে।


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

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

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

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

1
@ রবার্টপাউন্ডার, এটি এমন একটি সরঞ্জাম যা সিস্টেমটির নকশা তৈরির সময় সমাধানের উপযুক্ততার সিদ্ধান্ত নিতে হবে । আমি বুঝতে পারি ফ্রেমওয়ার্কগুলি কীভাবে ডিজাইনকে প্রভাবিত করতে পারে, তবে তাদের এটি নির্ধারণ করা উচিত নয়।
বেরিন লরিটশ

27

কাঠামো প্রাকৃতিকভাবে নির্দিষ্ট মডিউল এবং উপ-সিস্টেমগুলির নকশাকে প্রভাবিত করে (যেমন একটি জিইউআই ফ্রন্ট-এন্ড)। উল্লিখিত অন্য উত্তরের হিসাবে, আপনি যদি আপনার নির্বাচিত কাঠামোর (গুলি) এর বিরুদ্ধে লড়াই করে নিজেকে খুঁজে পান তবে আপনার পক্ষে একটি কঠিন সময় হবে।

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

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

সাধারণ-উদ্দেশ্যে ফ্রেমওয়ার্কগুলি (যেমন ইউআই ফ্রেমওয়ার্কস, ডেটা লেয়ার ফ্রেমওয়ার্কগুলি ইত্যাদি) আপনার সিস্টেমের সম্পূর্ণ আর্কিটেকচার নির্ধারণ করার জন্য উপস্থিত নেই - সর্বাধিক তারা কোনও উপাদান বা মডিউলটির নকশা লিখে দিতে পারে; উদাহরণস্বরূপ, কিছু জিইউআই প্রযুক্তি নির্দিষ্ট এমভি * নিদর্শনগুলির দিকে এগিয়ে থাকে।

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

আপনার বড়-চিত্র ডিজাইনের জন্য নিম্নলিখিতগুলি মাথায় রাখার চেষ্টা করুন:


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

2
@ কমফ্রোম - আপনার কোডটি কাঠামোর সাথে শক্তভাবে সংযুক্ত করা বিকাশকারীদের দ্বারা উত্সাহিত করা হবে কারণ তারা ধরে নিয়েছে যে তারা প্রথমে এটির জন্য তৈরি করা সমস্যাগুলির সমাধান করার জন্য আপনি তাদের কাঠামোটি বেছে নিয়েছেন।
JeffO

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

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

2
আমি অবশ্যই এখানে @ নোকম্প্রেডেন্ডের সাথে একমত নই; না ভবিষ্যতের সব প্রয়োজনীয়তা পূর্বাভাস করা যেতে পারে, কিন্তু কখনো কখনো সিস্টেম পুনর্লিখিত হয় কারণ পূর্ববর্তী সফটওয়্যার প্রসারিত / বজায় রাখার জন্য খুব কঠিন
সেলডমনিডি

7

হ্যাঁ, ফ্রেমওয়ার্ক আপনাকে যা করতে বলে "আপনার কাছে যতটা সম্ভব নিবিড়ভাবে থাকা উচিত ।

কারণটি হ'ল আপনি "চিন্তাভাবনা" এর ফ্রেমওয়ার্কের পথে যত বেশি ঘনিষ্ঠ থাকবেন ততই আপনি আপনার সমস্যাগুলি / ধারণা সম্পর্কে অন্যান্য বিকাশকারীদের সাথে কথা বলতে সক্ষম হবেন যা সেই কাঠামোটিও ব্যবহার করে।

আপনি পরবর্তীতে এবং অন্যান্য লোকেরা এটির ব্যবহারের স্বাচ্ছন্দ্য বৃদ্ধি করেন যা আপনি পরে যা ব্যবহার করছেন তার অন্তর্নিহিত দর্শনে অটল থাকলে আপনি টিউটোরিয়াল বা সাধারণ সমাধানগুলি আরও ভালভাবে বুঝতে এবং অন্তর্ভুক্ত করতে পারবেন।

আপনি কেন কাঠামোটি "ভেঙে" ফেলবেন সে সম্পর্কে আমি কেবলমাত্র ঠিক কারণটি ভাবতে পারি যে আপনার একেবারে এমন কিছু প্রয়োজন যা এটির "ডিফল্ট" কনফিগারেশন / নীতিগুলির প্রয়োগের দ্বারা সরবরাহ করতে পারে না। তবে তারপরে, এটি শুরু করা সঠিক কাঠামো নাও হতে পারে।

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


প্রশ্নের পরিবর্তনের কারণে আপনার উত্তরটি পর্যালোচনা করা উচিত। আপনার উত্তরটি আসলে ওপি-র প্রশ্নের উত্তর দেয় না।
লাইভ

1
@ লাইভ আমি দেখতে পাচ্ছি না কীভাবে এটি প্রশ্নের উত্তর দেয় না, যদিও বিষয়টি আপনার মতের সাথে মেলে না, এটি এখনও একটি উত্তর। আলোচিত বিষয়ের বিরোধপূর্ণ প্রকৃতিটি প্রদর্শনের জন্য আপনার নিজের উত্তরটি লিখতে আপনি সবচেয়ে স্বাগত।
এফপি

আমি নিজে যদি ভালভাবে ব্যাখ্যা না করি তবে আমাকে ক্ষমা করবেন। আমি যতটা হতে চাই ইংরেজিতে তেমন সাবলীল নই। আমি কেবল এটি বলতে চেয়েছিলাম, আইএমও, প্রশ্ন এবং আপনার উত্তর বিভিন্ন বিষয়ে কথা বলে। আপনি যদি ভাবেন যে তারা না করে, ঠিক আছে। আমি তর্ক করব না। এটাই.
লাইভ

1
এটি একেবারে এটি। এটি ডোমেন-নির্দিষ্ট ভাষা এবং অনুরূপ ধারণাগুলি কীভাবে কাজ করে তার সমান to আপনার পণ্যগুলি সরঞ্জামের (ফ্রেমওয়ার্ক) আকারে অন্যভাবে নয় not ফ্রেমওয়ার্ক "জিতেছে"। আপনি যদি এটি বিবাহ করতে না পারেন, তবে অন্যটি বেছে নিন। (ইঙ্গিত: কোনও আদর্শ কাঠামো নেই Just শুধু বলুন '

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