3.7

View in English

3.7 সফটওয়্যার রক্ষণাবেক্ষণ

পরিচিতি ও প্রেরণা

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

রক্ষণাবেক্ষণ দীর্ঘস্থায়ীভাবে কম অনুমানকৃত ও কম মূল্যায়িত, এবং সেই ভুল ব্যয়বহুল। কয়েক দশকের অধ্যয়ন বারবার রক্ষণাবেক্ষণকে সফটওয়্যারের জীবনকালীন মোট খরচের অর্ধেকের অনেক বেশি স্থান দেয়, দীর্ঘজীবী সিস্টেমে সাধারণত ৬০ থেকে ৯০ শতাংশ হিসেবে উদ্ধৃত। তবু প্রতিষ্ঠান প্রাথমিক নির্মাণকে পুরো প্রচেষ্টা ধরে পরিকল্পনা, বাজেট, কর্মী নিয়োগ ও উদ্যাপন করে। তারপর পরের সবকিছু পরবর্তী ভাবনা হিসেবে দেখে, সংকুচিত পাত্র থেকে অর্থায়ন করে এবং যে-ই উপলব্ধ তাকে দেয়। ফল পূর্বানুমেয়: ভঙ্গুর সিস্টেম, হতাশ রক্ষণাবেক্ষণকারী, বাড়ন্ত পরিবর্তন-খরচ, এবং শেষে এমন সংকট যাকে “লিগ্যাসি সমস্যা” (অধ্যায় 3.6) বলা হয় যখন তা শুরু থেকেই অপরিচালিত-রক্ষণাবেক্ষণ সমস্যা ছিল।

এই অধ্যায় SWEBOK (Software Engineering Body of Knowledge) সফটওয়্যার রক্ষণাবেক্ষণ জ্ঞান ক্ষেত্র এবং ISO/IEC 14764 অনুসরণ করে। এটি রক্ষণাবেক্ষণের মৌলিক বিষয় ও চারটি স্বীকৃত শ্রেণি; রক্ষণাবেক্ষণকে কঠিন করা প্রধান বিষয়, খরচ, কর্মী নিয়োগ ও মনোবলসহ; রক্ষণাবেক্ষণ প্রক্রিয়া; প্রোগ্রাম বোধ, পুনঃপ্রকৌশল ও রিফ্যাক্টরিংয়ের মূল কৌশল; রক্ষণাবেক্ষণ খরচ কীভাবে অনুমান করবেন; এবং (অধ্যায়ের সর্বোচ্চ-লিভারেজ ধারণা) শুরু থেকে রক্ষণাবেক্ষণযোগ্যতার জন্য কীভাবে নকশা করবেন তা কভার করে। কেন্দ্রীয় প্রত্যয় হলো রক্ষণাবেক্ষণ প্রকৌশলের পরের কোনো নিম্নমানের কার্যকলাপ নয়। এটি সফটওয়্যার প্রকৌশলের সবচেয়ে বড় অংশ, এবং একে সেভাবেই পরিকল্পনা, জনবল ও সম্মান দিতে হবে।

মূল নীতিসমূহ

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

সুপারিশ

রক্ষণাবেক্ষণের চারটি শ্রেণি আলাদা করুন এবং সবগুলোর জন্য কর্মী নিন

ISO/IEC 14764 ও SWEBOK চারটি শ্রেণি স্বীকার করে, এবং এদের গুলিয়ে ফেলা একটি সাধারণ পরিকল্পনা ভুল। সংশোধনমূলক রক্ষণাবেক্ষণ পরিচালনায় পাওয়া ত্রুটি সারায়। অভিযোজনমূলক রক্ষণাবেক্ষণ পরিবেশ বদলালে সফটওয়্যারকে কার্যকর রাখে: নতুন অপারেটিং সিস্টেম, ব্রাউজার, নির্ভরতা, হার্ডওয়্যার, বিধি বা ইন্টারফেসিং সিস্টেম। পরিপূর্ণতামূলক রক্ষণাবেক্ষণ ব্যবহারকারী ও রক্ষণাবেক্ষণকারীদের জন্য সফটওয়্যার উন্নত করে, নতুন ফিচার, ভালো পারফরম্যান্স, উন্নত ব্যবহারযোগ্যতা ও উন্নত রক্ষণাবেক্ষণযোগ্যতার মাধ্যমে। প্রতিরোধমূলক রক্ষণাবেক্ষণ সুপ্ত ত্রুটি সারায় এবং ভঙ্গুর এলাকা শক্তিশালী করা, পরিষ্কার ও আধুনিকীকরণের মাধ্যমে প্রকাশ পাওয়ার আগে ভবিষ্যৎ ঝুঁকি কমায়। আরেকটি উপকারী ভাগ সংশোধনমূলক ও প্রতিরোধমূলককে সংশোধন (ত্রুটি নিয়ে কাজ) এবং অভিযোজনমূলক ও পরিপূর্ণতামূলককে বর্ধন (নতুন প্রয়োজন নিয়ে কাজ) হিসেবে গোষ্ঠীবদ্ধ করে। অত্যন্ত গুরুত্বপূর্ণভাবে, অভিজ্ঞতালব্ধ অধ্যয়ন ধারাবাহিকভাবে দেখায় বেশিরভাগ রক্ষণাবেক্ষণ সংশোধনমূলক নয়; বর্ধন ও অভিযোজন প্রাধান্য পায়। সেভাবে বাজেট ও কর্মী নিন, এবং আপনার পরিশ্রম আসলে কোন শ্রেণিতে পড়ে তা অনুসরণ করুন যাতে তা পরিচালনা করতে পারেন।

প্রোগ্রাম বোধে বিনিয়োগ করুন

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

টেস্ট সুরক্ষা জালের অধীনে নিরন্তর রিফ্যাক্টর করুন

রিফ্যাক্টরিং হলো কোডের শৃঙ্খলাবদ্ধ পুনর্গঠন যা তার বাহ্যিক আচরণ না বদলে অভ্যন্তরীণ গুণমান উন্নত করে। নিরন্তর ও ছোট ধাপে করা হলে এটি জটিলতার দিকে স্বাভাবিক সরে যাওয়ার বিরুদ্ধে কাজ করে এবং পরিবর্তনের খরচ বাড়ার বদলে সমতল রাখে। আলোচনাযোগ্য নয় এমন পূর্বশর্ত হলো একটি নির্ভরযোগ্য স্বয়ংক্রিয় টেস্ট স্যুট (অধ্যায় 2.4)। তা ছাড়া “রিফ্যাক্টরিং” কেবল ঝুঁকিপূর্ণ পুনর্লিখন। রিফ্যাক্টরিংকে দৈনন্দিন কাজে মিলিয়ে দিন: বিরল, বড়, বিপজ্জনক পরিষ্কারের জন্য জমিয়ে না রেখে প্রতিটি মডিউলকে আপনি যেমন পেয়েছেন তার চেয়ে একটু পরিচ্ছন্ন রেখে যান। এটি চর্চায় প্রতিরোধমূলক রক্ষণাবেক্ষণ, এবং এটি সবচেয়ে সস্তা রক্ষণাবেক্ষণ।

ক্রমবর্ধমান পরিবর্তন আর যথেষ্ট না হলে পুনঃপ্রকৌশল করুন

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

একটি সংজ্ঞায়িত রক্ষণাবেক্ষণ প্রক্রিয়া চালান

রক্ষণাবেক্ষণ একটি সুস্পষ্ট, পুনরাবৃত্তিযোগ্য প্রক্রিয়া থেকে উপকৃত হয়, যেমন ISO/IEC 14764-এ বর্ণিত: প্রক্রিয়া বাস্তবায়ন (পরিকল্পনা ও পদ্ধতি স্থাপন), সমস্যা ও পরিবর্তন বিশ্লেষণ (ট্রায়াজ, পুনরুৎপাদন, প্রভাব ও খরচ মূল্যায়ন), পরিবর্তন বাস্তবায়ন, রক্ষণাবেক্ষণ পর্যালোচনা ও গ্রহণ, স্থানান্তর, এবং অবসর। এটি শৃঙ্খলাবদ্ধ পরিবর্তন ব্যবস্থাপনায় মুড়ুন: প্রতিটি রক্ষণাবেক্ষণ অনুরোধ (ত্রুটি প্রতিবেদন বা বর্ধন) লগ করতে, শ্রেণি অনুযায়ী শ্রেণিবদ্ধ করতে, প্রভাব মূল্যায়ন করতে, অগ্রাধিকার দিতে, টেস্টসহ সংস্করণ নিয়ন্ত্রণের অধীনে বাস্তবায়ন করতে, পর্যালোচনা করতে এবং স্বাভাবিক পাইপলাইনের (অধ্যায় 11.2) মাধ্যমে রিলিজ করতে হবে। প্রভাব বিশ্লেষণ, একটি প্রস্তাবিত পরিবর্তন যা যা ছুঁতে পারে তার সবকিছু বোঝা, কেন্দ্রীয় এবং প্রকৃত পরিশ্রম প্রাপ্য। অবসরও প্রক্রিয়ার অংশ: নিরাপদে একটি সিস্টেম বন্ধ করা, তার ডেটা ও ব্যবহারকারী স্থানান্তর, এবং রেকর্ড সংরক্ষণ রক্ষণাবেক্ষণ কাজ যা অবশ্যই পরিকল্পনা করতে হবে, ভোরের উদ্ভাবনে নয়।

রক্ষণাবেক্ষণ খরচ সুস্পষ্টভাবে অনুমান করুন এবং অর্থায়ন করুন

রক্ষণাবেক্ষণকে বিনামূল্যের, বা নির্মাণ বাজেটে গোলমাল গণ্য করবেন না। এটি অনুমান করুন। সাধারণ পদ্ধতির মধ্যে রক্ষণাবেক্ষণ-পরিশ্রম অনুপাত (বহুল-ব্যবহৃত অভিজ্ঞতা-নিয়ম যে বার্ষিক রক্ষণাবেক্ষণ মূল উন্নয়ন খরচের প্রায় ১৫ থেকে ২৫ শতাংশ, যদিও দীর্ঘজীবী জটিল সিস্টেম তাদের জীবনকালে অনেক বেশি জমায়), COCOMO II (Constructive Cost Model) তার রক্ষণাবেক্ষণ ও পুনর্ব্যবহার সম্প্রসারণসহ প্যারামেট্রিক মডেল, এবং ত্রুটির হার, পরিবর্তনের ভলিউম ও পরিবর্তনের খরচ সম্পর্কে আপনার নিজস্ব ঐতিহাসিক তথ্য থেকে মেট্রিক-চালিত পূর্বাভাস। এই অনুমান মালিকানার মোট খরচ বিশ্লেষণ এবং অধ্যায় 10.10-এ আলোচিত অর্থনীতিতে জোগান দিন। একটি সিস্টেমের ক্রয়মূল্য বা নির্মাণ খরচ একটি ডাউন পেমেন্ট। বন্ধক হলো রক্ষণাবেক্ষণ, এবং তা প্রতিটি ব্যবসায়িক যুক্তিতে থাকা উচিত।

শুরু থেকে রক্ষণাবেক্ষণযোগ্যতার জন্য নকশা করুন

রক্ষণাবেক্ষণ খরচের ওপর সবচেয়ে বেশি লিভারেজ রক্ষণাবেক্ষণ শুরুর আগে প্রয়োগ হয়। রক্ষণাবেক্ষণযোগ্যতা (ISO/IEC 25010-এর শব্দভাণ্ডারে বিশ্লেষণযোগ্যতা, পরিবর্তনযোগ্যতা, পরীক্ষাযোগ্যতা ও মডুলারিটি) একটি নকশা গুণ যা সুখী দুর্ঘটনা নয়, একটি সুস্পষ্ট প্রয়োজন হতে হবে। মডুলার, শিথিলভাবে সংযুক্ত, উচ্চ-সংসক্তি নকশা (অধ্যায় 2.2); স্পষ্ট ইন্টারফেস ও উদ্বেগের বিভাজন; শক্তিশালী স্বয়ংক্রিয় টেস্ট; পাঠযোগ্য কোড ও হালনাগাদ ডকুমেন্টেশন; এবং সমৃদ্ধ অবজার্ভেবিলিটি পছন্দ করুন যাতে অপারেটর ও রক্ষণাবেক্ষণকারীরা দেখতে পান সিস্টেম কী করছে (পর্ব ৯)। এর প্রতিটি সিদ্ধান্ত এখন সামান্য বেশি পরিশ্রমের বিনিময়ে সিস্টেম আসলে যত দশক বাঁচবে তা জুড়ে বড়, চক্রবৃদ্ধি সঞ্চয় দেয়। রক্ষণাবেক্ষণযোগ্যতার জন্য গড়া পুরো জীবনচক্রের সর্বোচ্চ-প্রতিদানের বিনিয়োগ।

ট্রেড-অফ: সুবিধা ও অসুবিধা

পদ্ধতিসুবিধাঅসুবিধা
নিরন্তর রিফ্যাক্টরিং / প্রতিরোধমূলক রক্ষণাবেক্ষণপরিবর্তনের খরচ সমতল রাখে, ঝুঁকি কমায়, উচ্চ ROIদৃশ্যমান নতুন ফিচার ছাড়া চলমান পরিশ্রম; শক্তিশালী টেস্ট লাগে
রক্ষণাবেক্ষণ স্থগিত (“আলো জ্বালিয়ে রাখা”)এই ত্রৈমাসিকে সস্তাতম; ফিচারের জন্য সক্ষমতা মুক্ত করেপরিবর্তন-ঋণ চক্রবৃদ্ধি হয়; অবশেষে সংকট ও বাধ্যতামূলক ব্যয়বহুল ব্যবস্থা
অবনত উপাদানের পুনঃপ্রকৌশলরক্ষণাবেক্ষণযোগ্যতা পুনরুদ্ধার করে ও উপযোগী জীবন বাড়ায়উল্লেখযোগ্য পরিশ্রম ও ঝুঁকি; আচরণ সাবধানে সংরক্ষণ করতে হয়
শুরুতেই রক্ষণাবেক্ষণযোগ্যতার জন্য নকশাচক্রবৃদ্ধি জীবনকালীন সঞ্চয়; প্রতিটি ভবিষ্যৎ পরিবর্তন সহজউচ্চতর প্রাথমিক খরচ ও শৃঙ্খলা; সুবিধা স্থগিত ও কম দৃশ্যমান

রক্ষণাবেক্ষণে পুনরাবৃত্ত বিনিময় বর্তমান খরচ বনাম ভবিষ্যৎ খরচ, এবং প্রলোভন সবসময় স্থগিতের দিকে চলে। রিফ্যাক্টরিং এড়ানো, নির্ভরতাকে বুড়ো হতে দেওয়া এবং রক্ষণাবেক্ষণ দলকে অনাহারে রাখা এই ত্রৈমাসিকে বিনামূল্যের মনে হয়, কারণ বিল আসে পরে: ধীরতর, ঝুঁকিপূর্ণ, আরও ব্যয়বহুল সিস্টেম হিসেবে, এবং শেষে একটি “লিগ্যাসি সংকট” হিসেবে। ভালো রক্ষণাবেক্ষণের শৃঙ্খলা হলো পরে বড়, আকস্মিক, কর্মজীবন-নির্ধারক খরচ এড়াতে এখন ছোট, নিরন্তর, দৃশ্যমান খরচ দেওয়া। কারণ সঞ্চয় স্থগিত ও অদৃশ্য, এই বিনিময় এমন নেতৃত্ব চায় যা কেবল লঞ্চের তারিখ নয়, জীবনচক্রের অর্থনীতি বোঝে।

আপনার দলের সঙ্গে আলোচনার প্রশ্ন

  1. আপনার বাজেটে রক্ষণাবেক্ষণ সংখ্যার মালিক কে, এবং এটি কি প্রথম-শ্রেণির লাইন নাকি নির্মাণে অব্যয়িত থেকে চেঁছে নেওয়া অবশিষ্ট? রক্ষণাবেক্ষণ জীবনকালীন খরচের সংখ্যাগরিষ্ঠ অংশ, দীর্ঘজীবী সিস্টেমে সাধারণত ৬০ থেকে ৯০ শতাংশ, তবু নিয়মিতভাবে পরবর্তী ভাবনা হিসেবে অর্থায়ন পায় এবং যে-ই ফাঁকা তাকে দিয়ে কর্মী নেওয়া হয়। বাজেট অবশিষ্ট হলে প্রতিরোধমূলক কাজ প্রথমে কাটা পড়ে, পরিবর্তন-ঋণ চক্রবৃদ্ধি হয়, এবং “লিগ্যাসি সংকটে” পূর্বানুমেয় পিছলে পড়া ঘটে। একটি প্রকৃত অনুমান (রক্ষণাবেক্ষণ-পরিশ্রম অনুপাত, প্যারামেট্রিক মডেল, বা আপনার নিজস্ব ঐতিহাসিক পরিবর্তন-খরচ তথ্য) আনুন এবং সিস্টেমের জীবন জুড়ে এর অর্থায়নের জবাবদিহিযোগ্য ব্যক্তির নাম দিন। সমাধান হলো প্রতিটি ব্যবসায়িক যুক্তিতে রক্ষণাবেক্ষণ সুস্পষ্টভাবে বাজেট করা, যেভাবে একটি বন্ধক ক্রয়মূল্যের পাশে বসে। যে নেতৃত্ব কেবল লঞ্চ উদ্যাপন করে সে সেই পর্যায়কে কম অর্থায়ন করতে থাকবে যেখানে বেশিরভাগ অর্থ ও ঝুঁকি আসলে বাস করে।

  2. আপনি কি প্রতিরোধমূলক রক্ষণাবেক্ষণের জন্য সক্ষমতা সংরক্ষিত রাখেন, নাকি তা সবসময় পরবর্তী ফিচারের কাছে হারে? প্রতিরোধমূলক কাজ (টেস্ট জালের অধীনে রিফ্যাক্টরিং, নির্ভরতা হালনাগাদ রাখা, ভঙ্গুর এলাকা শক্তিশালী করা) সবচেয়ে সস্তা রক্ষণাবেক্ষণ, কারণ এটি পরিবর্তন-খরচ বক্ররেখা বাড়তে না দিয়ে সমতল রাখে। এটি স্থগিত করাও সবচেয়ে সহজ, যেহেতু এড়ানো এই ত্রৈমাসিকে বিনামূল্যের মনে হয় আর বিল পরে ধীরতর, ঝুঁকিপূর্ণ সিস্টেম হিসেবে আসে। একটি সুনির্দিষ্ট প্রক্রিয়া সাহায্য করে: একটি স্থায়ী বরাদ্দ, এবং অনেক শক্তিশালী দল সক্ষমতার প্রায় এক-পঞ্চমাংশ সুরক্ষিত রাখে, যা প্রতিটি স্প্রিন্টে দর-কষাকষিতে হাতছাড়া না হয়ে পাহারা দেওয়া হয়। প্রমাণ হিসেবে আপনার পরিবর্তন-খরচ প্রবণতা আনুন; তা বাড়লে আপনি ইতিমধ্যে কম বিনিয়োগ করছেন। শৃঙ্খলা হলো পরে বড়, আকস্মিক, কর্মজীবন-নির্ধারক খরচ এড়াতে এখন ছোট, দৃশ্যমান খরচ দেওয়া, এবং তার জন্য এমন নেতৃত্ব দরকার যে লঞ্চের তারিখের বদলে জীবনচক্রের অর্থনীতি পড়ে।

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

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

  5. আপনার রক্ষণাবেক্ষণ কাজে আসলে কর্মী কারা, এবং তার মর্যাদা ও মনোবল কি তার গুরুত্বের সঙ্গে মেলে? রক্ষণাবেক্ষণ জীবনকালীন খরচের সংখ্যাগরিষ্ঠ অংশ এবং কঠিনতম প্রকৌশল, আপনি বানাননি এবং হয়তো পুরোপুরি বোঝেন না এমন সিস্টেম নিরাপদে বদলানো, তবু তা নিয়মিতভাবে সবচেয়ে কম অভিজ্ঞদের হাতে দেওয়া হয় এবং নিম্ন-মর্যাদার “আলো জ্বালিয়ে রাখা” হিসেবে ফ্রেম করা হয়। সেই সংকেত ক্ষয়কারী: আপনার সেরা ইঞ্জিনিয়াররা কাজ এড়ায়, জ্ঞান কেন্দ্রীভূত হয় এবং তারপর দরজা দিয়ে বেরিয়ে যায়, আর কেউ না দেখার মধ্যে পরিবর্তনের খরচ বাড়ে। আপনার দীর্ঘজীবী সিস্টেম কারা রক্ষণাবেক্ষণ করেন তাঁদের জ্যেষ্ঠতা প্রোফাইল, আপনার অ্যাট্রিশন ও জ্ঞান-ধারণ তথ্য, এবং রক্ষণাবেক্ষণ আপনার প্রতিষ্ঠানে কর্মজীবনের শেষ নাকি সম্মানিত বিশেষত্ব তার সৎ পাঠ আনুন। টানাপোড়েন প্রকৃত, কারণ উচ্চাকাঙ্ক্ষী ইঞ্জিনিয়াররা নতুন কিছু গড়তে চান এবং নেতারা লঞ্চ উদ্যাপন করতে চান, তাই রক্ষণাবেক্ষণকে সম্মান করা সুচিন্তিত কাঠামো দাবি করে। দশকের পর দশক নিয়ন্ত্রক ও আর্থিক ঝুঁকি বহন করা সিস্টেম চালানো একটি বড় এন্টারপ্রাইজ বা সরকারি সংস্থার জন্য রক্ষণাবেক্ষণে সম্মানিত জ্যেষ্ঠ ইঞ্জিনিয়ার রাখা একটি ঝুঁকি-ব্যবস্থাপনা সিদ্ধান্ত, এবং রক্ষণাবেক্ষণকে শাস্তিমূলক পদায়ন হতে দেওয়াই পরবর্তী লিগ্যাসি সংকট তৈরির উপায়।

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

খাতভেদে দৃষ্টিভঙ্গি

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

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

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

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

উদাহরণ

স্টার্টআপ। একটি স্টার্টআপ সবে তার MVP পাঠিয়েছে এবং প্রতিটি ঘণ্টা নতুন ফিচারে ঢালতে প্রলুব্ধ, কিন্তু তার প্রতিষ্ঠাতা ইঞ্জিনিয়ার একেবারে প্রথম মাস থেকে প্রতিটি স্প্রিন্টের একটি স্থায়ী অংশ (প্রায় পাঁচ দিনে একদিন) রক্ষণাবেক্ষণের জন্য আলাদা করেন। সেই বাজেট নির্ভরতা প্যাচ রাখে, ছোট ত্রুটি জমার আগে সারায়, এবং দল ইতিমধ্যে ভয় পাওয়া কোণগুলো রিফ্যাক্টর করে, তাই পণ্য পিভট করার সময় কোডবেস বদলানোর জন্য সস্তা থাকে। যে স্টার্টআপ এটি এড়িয়ে যায় তারা বিশজন ইঞ্জিনিয়ারে পৌঁছে এমন কোডবেস নিয়ে যা কেউ ছুঁতে চায় না, এবং ভাবে এটি “লিগ্যাসি সমস্যা” যখন শুরু থেকেই তা ছিল স্থগিত রক্ষণাবেক্ষণ।

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

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

ব্যবসায়িক যুক্তি: প্রেরণা, ROI ও TCO

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

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

অ্যান্টি-প্যাটার্ন ও ফাঁদ

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

পরিপক্বতা মডেল

  • স্তর ১: সূচনা। রক্ষণাবেক্ষণ অপরিকল্পিত ও অনর্থায়িত, যে-ই ফাঁকা তার দ্বারা প্রতিক্রিয়ায় সামলানো। এটি ত্রুটি-সারানো এবং নিম্ন-মর্যাদার কাজ হিসেবে দেখা হয়। কোনো শ্রেণি অনুসরণ, খরচ অনুমান নেই, এবং জ্ঞান কয়েকটি মাথায়। পরিবর্তনের খরচ অলক্ষ্যে বাড়ে যতক্ষণ না একটি সমাধান থামে বা সংকট মনোযোগ বাধ্য করে।
  • স্তর ২: বিকাশ। কিছু দল রক্ষণাবেক্ষণ অনুরোধ লগ ও ট্রায়াজ করতে এবং বাজেট লাইন বইতে শুরু করেছে, কিন্তু প্রতিষ্ঠান জুড়ে চর্চা অসঙ্গত এবং বাজেট সাধারণত অবশিষ্ট। সংশোধনমূলক কাজ অনুসরণ করা হয় যখন অভিযোজনমূলক ও পরিপূর্ণতামূলক পরিশ্রম স্পষ্টভাবে আলাদা নয়। কিছু টেস্ট ও ডকুমেন্টেশন কোণে কোণে আছে, তাই পরিবর্তন আংশিক নিয়ন্ত্রিত কিন্তু বোধ ব্যয়বহুল ও দল থেকে দলে অসম থাকে।
  • স্তর ৩: মানসম্মতকরণ। একটি সংজ্ঞায়িত রক্ষণাবেক্ষণ প্রক্রিয়া (ISO/IEC 14764 অনুযায়ী) নথিবদ্ধ ও সর্বত্র প্রয়োগ করা: কাজ চারটি শ্রেণিতে শ্রেণিবদ্ধ, প্রভাব বিশ্লেষণ ও পরিবর্তন ব্যবস্থাপনা রুটিন, এবং রক্ষণাবেক্ষণ প্রতিটি ব্যবসায়িক যুক্তিতে সুস্পষ্টভাবে অনুমিত ও অর্থায়িত। একটি দৃঢ় টেস্ট স্যুটের অধীনে প্রতিরোধমূলক রক্ষণাবেক্ষণ ও রিফ্যাক্টরিং মান চর্চা, এবং রক্ষণাবেক্ষণযোগ্যতা (বিশ্লেষণযোগ্যতা, পরিবর্তনযোগ্যতা, পরীক্ষাযোগ্যতা, মডুলারিটি) স্থানীয় অভ্যাসের বদলে সুস্পষ্ট নকশা প্রয়োজন।
  • স্তর ৪: ব্যবস্থাপনা। রক্ষণাবেক্ষণ ভিত্তিরেখার বিপরীতে তথ্য দিয়ে মাপা ও নিয়ন্ত্রিত। পরিবর্তন-খরচ সূচক (পরিবর্তন লিড টাইম, পরিবর্তন-ব্যর্থতার হার, জটিলতা ও ত্রুটির প্রবণতা) প্রতি সিস্টেমে অনুসরণ করা হয়, চার-শ্রেণি পরিশ্রম মিশ্রণ প্রত্যাশার বিপরীতে পরিমাণ করা হয়, এবং রক্ষণাবেক্ষণ-পরিশ্রম অনুপাত ও প্যারামেট্রিক অনুমান প্রকৃত ঐতিহাসিক পরিবর্তন খরচের বিপরীতে যাচাই করা হয়। বাড়ন্ত খরচ বক্ররেখা অগ্রণী সূচক হিসেবে ধরা পড়ে এবং পদক্ষেপ ট্রিগার করে, আর প্রতিরোধমূলক বরাদ্দ অনুমানের বদলে প্রমাণ থেকে আকার পায়। রিফ্যাক্টর, পুনঃপ্রকৌশল বা অবসরের সিদ্ধান্ত সহজাত বোধের বদলে মাপা সীমায় নেওয়া হয়।
  • স্তর ৫: সমন্বয়। রক্ষণাবেক্ষণ নিরন্তর উন্নত এবং প্রতিষ্ঠান ও তার জীবনচক্র অর্থনীতি জুড়ে একীভূত। জীবনচক্র TCO পোর্টফোলিও বিনিয়োগ চালায়, উপাদান অবনত হওয়ার আগে ইচ্ছাকৃতভাবে পুনঃপ্রকৌশল প্রয়োগ হয়, জ্ঞান সক্রিয়ভাবে ধরে রাখা হয়, এবং অবসর পরিকল্পিত ও রুটিনভাবে সম্পাদিত। পরিবেশ (বিধি, প্ল্যাটফর্ম, নির্ভরতা) সরলে প্রতিষ্ঠান রক্ষণাবেক্ষণ পরিশ্রম পুনর্ভারসাম্যে আনে, রক্ষণাবেক্ষণকারীরা সম্মানিত জ্যেষ্ঠ ইঞ্জিনিয়ার, এবং পুরো সম্পত্তি খাপ খায় যাতে দশক বাঁচা সিস্টেমে পরিবর্তনের খরচ সমতল থাকে।

আলোচনার ভাবনা

  1. আপনার প্রকৌশল পরিশ্রমের কত অংশ আসলে রক্ষণাবেক্ষণে যায়, এবং আপনার বাজেট ও কর্মী নিয়োগ কি সেই বাস্তবতা প্রতিফলিত করে?
  2. আপনি কি আপনার রক্ষণাবেক্ষণ কাজ চারটি শ্রেণিতে ভাগ করতে পারেন, এবং মিশ্রণ কি আপনার অনুমানের সঙ্গে মেলে?
  3. একটি সাধারণ পরিবর্তনের কতটা সিস্টেম বোঝায় বনাম বদলানোয় ব্যয় হয়, এবং কী বোধকে সস্তা করবে?
  4. আপনার পরিবর্তনের খরচ কি সময়ের সঙ্গে বাড়ছে, সমতল, নাকি কমছে, এবং আপনি কি আদৌ তা মাপছেন?
  5. আপনার দলগুলোর কি একটি নির্ভরযোগ্য টেস্ট সুরক্ষা জাল আছে যা নিরন্তর রিফ্যাক্টরিং নিরাপদ করে, নাকি পুনর্গঠন চেষ্টার পক্ষে খুব ঝুঁকিপূর্ণ?
  6. আপনার দীর্ঘজীবী সিস্টেম কারা রক্ষণাবেক্ষণ করেন, তাঁদের জ্ঞান কীভাবে ধরা হয়, এবং সেই কাজের মর্যাদা ও মনোবল কেমন?

প্রধান শিক্ষা

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

তথ্যসূত্র ও আরও পড়ার জন্য

  • IEEE Computer Society, SWEBOK Guide (Software Engineering Body of Knowledge), সফটওয়্যার রক্ষণাবেক্ষণ জ্ঞান ক্ষেত্র
  • ISO/IEC 14764 / IEEE 14764, Software Engineering: Software Life Cycle Processes, Maintenance
  • ISO/IEC 25010, Systems and software Quality Requirements and Evaluation (SQuaRE): রক্ষণাবেক্ষণযোগ্যতা গুণমান বৈশিষ্ট্য
  • Martin Fowler, Refactoring: Improving the Design of Existing Code
  • Michael Feathers, Working Effectively with Legacy Code
  • Thomas M. Pigoski, Practical Software Maintenance
  • Penny Grubb ও Armstrong A. Takang, Software Maintenance: Concepts and Practice
  • Barry Boehm et al., Software Cost Estimation with COCOMO II (রক্ষণাবেক্ষণ ও পুনর্ব্যবহার মডেল)
  • Meir M. Lehman, “Laws of Software Evolution” (কেন সফটওয়্যারকে নিরন্তর বদলাতে হয় নয়তো কম উপযোগী হয়)
  • Robert C. Seacord, Daniel Plakosh ও Grace A. Lewis, Modernising Legacy Systems