বৃহত্তর ডিজাইন করা সফ্টওয়্যার

বৃহত্তর ডিজাইন করা সফ্টওয়্যার

সফ্টওয়্যার ডিজাইনের একটি দর্শন বড় দীর্ঘকালীন রক্ষণাবেক্ষণযোগ্য সফ্টওয়্যার প্রোগ্রামগুলি ডিজাইন করার বিষয়ে আমি আজ পর্যন্ত পড়েছি আমার প্রিয় বই। আমি যা শিখেছি তা এখানে:

জটিলতা

জটিলতা এমন কোনও সফ্টওয়্যার সিস্টেমের কাঠামোর সাথে সম্পর্কিত এমন কিছু যা সিস্টেমটি বুঝতে এবং সংশোধন করা শক্ত করে তোলে।

  • জটিলতার লক্ষণ:

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

    • নির্ভরতা – যখন কোনও প্রদত্ত কোডের টুকরোটি বিচ্ছিন্নভাবে বোঝা এবং সংশোধন করা যায় না তখন একটি নির্ভরতা বিদ্যমান; কোডটি অন্য কোডের সাথে সম্পর্কিত।
    • অস্পষ্টতা – যখন গুরুত্বপূর্ণ তথ্য সুস্পষ্ট না হয় তখন অস্পষ্টতা ঘটে।

জটিলতার লক্ষণ এবং কারণগুলি এবং কীভাবে তারা একে অপরের সাথে সম্পর্কিত তা দেখায় একটি ধারণা মানচিত্রের চিত্রটি

একটি সফ্টওয়্যার সিস্টেম বজায় রাখতে, আপনাকে অবশ্যই সিস্টেমের জটিলতা কম রাখার জন্য আপনাকে অবশ্যই প্রচেষ্টা করতে হবে কারণ আপনি এবং অন্যরা এতে পরিবর্তন আনতে পারেন।

বড় ছবি

জটিলতার সাথে সম্পর্কিত ধারণাগুলি, যা এই নিবন্ধের অবশিষ্ট বিভাগগুলি জুম করবে:

নির্ভরতা: জটিলতার কারণ

নির্ভরতা যখন নির্দিষ্ট কোডের টুকরোটি বিচ্ছিন্নভাবে বোঝা যায় না তখন বিদ্যমান; কোডটি অন্য কোডের সাথে সম্পর্কিত। কোনও সিস্টেমের মডিউলগুলির মধ্যে অসংখ্য এবং দৃ strong ় নির্ভরতা অন্যকে পরিবর্তন না করে একটি মডিউল পরিবর্তন করা কঠিন করে তোলে (পরিবর্ধন পরিবর্তন করে) এবং বিচ্ছিন্নতার (উচ্চ জ্ঞানীয় লোড) মডিউলগুলি বুঝতে অসুবিধা করে তোলে।

নির্ভরতা-জটিলতার মূল অবদানকারীরা হলেন:

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

নির্ভরতা-জটিলতার বিপরীতটি হ’ল সম্মিলিত কোডপ্রাথমিকভাবে ডিজাইনিংয়ে ফোকাস করে তৈরি করা হয়েছে গভীর মডিউল

গভীর মডিউল একটি ছোট ইন্টারফেসের মাধ্যমে প্রচুর কার্যকারিতা অ্যাক্সেস করার অনুমতি দিন:

মডিউল ইন্টারফেস রাখা মডিউলগুলির মধ্যে নির্ভরতার সংখ্যা এবং শক্তি হ্রাস করে, যার ফলে সামগ্রিক সিস্টেমের জটিলতা কম হয়:

বিমূর্ততা ছাড়া এবং জটিলতা

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

অস্পষ্টতা: জটিলতার কারণ

অস্পষ্টতা যখন গুরুত্বপূর্ণ তথ্য সুস্পষ্ট না হয় তখন ঘটে।

অস্পষ্টতা অজানা অজানা তৈরি করে এবং উচ্চ জ্ঞানীয় লোডে অবদান রাখে:

অস্পষ্টতার মূল অবদানকারী:

  • অস্পষ্ট নাম
  • অসঙ্গতি
  • অপর্যাপ্ত ডকুমেন্টেশন

অস্পষ্টতার জন্য ছোট অবদানকারী:

  • মাধ্যমে নির্বিচারে শ্রোতা
  • মাধ্যমে নির্বিচারে পলিমারফিজম
  • ব্যবহার কাঠামোগত ডেটা ধরে রাখতে জেনেরিক পাত্রে

অস্পষ্টতার বিপরীত সুস্পষ্ট কোড। সুস্পষ্ট কোড

  • ব্যবহার সুনির্দিষ্ট নাম,
  • হয় ধারাবাহিক,
  • হয় ভাল-নথিভুক্তএবং
  • ভাল ব্যবহার করে হোয়াইটস্পেস

তৈরির জন্য অনেক কৌশল রয়েছে ধারাবাহিকতা কোডে:

  • নামের ধারাবাহিক ব্যবহার, ধারাবাহিক কোড শৈলীএবং ধারাবাহিক বাস্তবায়ন নিদর্শন সাধারণভাবে ধারাবাহিকতার বৈশিষ্ট্য।

  • যেমন সরঞ্জাম অটোফর্ম্যাটার্স, লিন্টারএবং স্বয়ংক্রিয় ধারাবাহিকতা পরীক্ষা ধারাবাহিকতা কার্যকর করার জন্য দুর্দান্ত।

  • ডকুমেন্টেশন কনভেনশনগুলির মধ্যে ক্যাপচার করা যেতে পারে কোডিং স্টাইল গাইড এবং নথিভুক্ত রেফারেন্স মাধ্যমে নকশা নিদর্শন

কৌশলগত বনাম কৌশলগত মানসিকতা

জটিলতা যদি চেক না করা থাকে তবে কোনও সফ্টওয়্যার সিস্টেমে প্রাকৃতিকভাবে জমে থাকে।

এবং একবার জটিলতা জমা হয়ে গেলে এটি নির্মূল করা শক্ত।

অতএব বইটি জটিলতার ক্রমবর্ধমান প্রবর্তনের দিকে “শূন্য-সহনশীলতা” অবস্থান গ্রহণের পরামর্শ দেয়।

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

অনেক প্রোগ্রামার, বিপরীতে, খাঁটিভাবে গ্রহণ করুন কৌশলগত পদ্ধতির যে ফোকাস শুধুমাত্র নতুন বৈশিষ্ট্যগুলি কাজ করার বিষয়ে, ক্রমবর্ধমান জটিলতা এবং কাটার কোণগুলির অন্যান্য ফর্ম যুক্ত করার দীর্ঘমেয়াদী ব্যয়কে উপেক্ষা করে।

টেকওয়ে

ওয়ার্কিং কোড (একা) যথেষ্ট নয়।

একটি সফ্টওয়্যার সিস্টেম বজায় রাখতে, আপনাকে অবশ্যই সিস্টেমের জটিলতা কম রাখার জন্য আপনাকে অবশ্যই প্রচেষ্টা করতে হবে কারণ আপনি এবং অন্যরা এতে পরিবর্তন আনতে পারেন।

Source link

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।