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