৪.৩ কোড churn ও হটস্পট বিশ্লেষণ
সারসংক্ষেপ এবং প্রেরণা
কোড churn পরিমাপ করে একটি ফাইল বা মডিউল সময়ের সাথে কত ঘন ঘন পরিবর্তিত হয়, পরপর কমিট জুড়ে যোগ, পরিবর্তিত, ও মুছে ফেলা লাইন। নিজে থেকে, churn একটি মোটামুটি দুর্বল সংকেত: কিছু ফাইল প্রায়ই পরিবর্তিত হয় কারণ সেগুলো সক্রিয়, সুস্থ উন্নয়নের অধীনে, এবং কিছু কদাচিৎ পরিবর্তিত হয় কারণ সেগুলো স্থিতিশীল ও সঠিক, অবহেলিত বলে নয়। এই বিষয়ের পদ্ধতির প্রকৃত নির্ণায়ক শক্তি জটিলতার (বিষয় ৪.১) সাথে churn একত্রিত করা থেকে আসে: একটি ফাইল যা উভয়ই ঘন ঘন পরিবর্তিত ও অত্যন্ত জটিল, একটি হটস্পট, অসামঞ্জস্যপূর্ণভাবে ত্রুটির একটি উৎস ও দলের বেগে একটি টান হওয়ার সম্ভাবনা বেশি, এবং অভিজ্ঞতাভিত্তিক গবেষণা অনেক কোডবেস ও প্রতিষ্ঠান জুড়ে ধারাবাহিকভাবে এটি সমর্থন করে।
হটস্পট বিশ্লেষণ, সফটওয়্যার অ্যানালিটিক্সে অ্যাডাম টর্নহিলের কাজ দ্বারা জনপ্রিয়, নির্দিষ্টভাবে মূল্যবান কারণ এর লক্ষ্য খুঁজে পেতে কোনো ম্যানুয়াল জরিপ বা বিষয়ীগত বিচার প্রয়োজন হয় না। সংস্করণ নিয়ন্ত্রণ ইতিহাস ইতিমধ্যে churn এবং, স্ট্যাটিক বিশ্লেষণ টুলিংয়ের সাথে একত্রিত, জটিলতা উভয়ই গণনা করতে প্রয়োজনীয় সবকিছু ধারণ করে, একটি কোডবেসের প্রতিটি ফাইলের জন্য স্বয়ংক্রিয়ভাবে। এটি একটি দল বা প্রতিষ্ঠানকে, কিংবদন্তি বা একটি রেট্রোস্পেক্টিভে সবচেয়ে জোরালো অভিযোগের বদলে প্রকৃত প্রমাণসহ, চিহ্নিত করতে দেয় ঠিক কোডবেসের কোন ছোট অংশ প্রথমে পুনর্গঠন মনোযোগের যোগ্য।
বড় দলের জন্য, হটস্পট বিশ্লেষণ একটি প্রকৃত বরাদ্দ সমস্যা সমাধান করে: লক্ষ লক্ষ লাইনসহ একটি কোডবেসে কোনো দলের ব্যাপকভাবে পুনর্গঠন করার সামর্থ্য রাখতে পারে তার চেয়ে অনেক বেশি কোড আছে, এবং সবচেয়ে খারাপ সমস্যা কোথায় বাস করে সে সম্পর্কে স্বজ্ঞা প্রায়ই ভুল, যে সর্বশেষ সবচেয়ে বেশি অভিযোগ করেছিল বা একজন জ্যেষ্ঠ প্রকৌশলী যে কোনো ফাইল অপছন্দ করেন তার দ্বারা তির্যক। বড়, দীর্ঘজীবী কোডবেস ব্যবস্থাপনাকারী এন্টারপ্রাইজ ও সরকারি প্রতিষ্ঠান এই উপাত্ত-চালিত অগ্রাধিকারের উপর নির্ভর করে প্রকৃতপক্ষে দুষ্প্রাপ্য পুনর্গঠন বাজেট সেই কোডের দিকে নির্দেশ করতে যা সবচেয়ে বড় রিটার্ন উৎপাদন করবে।
মূল নীতিসমূহ
- একা churn একটি দুর্বল সংকেত; জটিলতার সাথে একত্রিত churn শক্তিশালী। সংমিশ্রণ, কোনো একটি মেট্রিক একা নয়, যা একটি প্রকৃত হটস্পট চিহ্নিত করে।
- হটস্পট বিশ্লেষণে কোনো ম্যানুয়াল জরিপ প্রয়োজন হয় না। সংস্করণ নিয়ন্ত্রণ ইতিহাস ইতিমধ্যে এটি স্বয়ংক্রিয়ভাবে গণনা করতে প্রয়োজনীয় সবকিছু ধারণ করে।
- একটি হটস্পট একটি অগ্রাধিকার সংকেত, একটি স্বয়ংক্রিয় রায় নয়। একটি নির্দিষ্ট হটস্পট কী কর্ম দাবি করে তা সিদ্ধান্ত নিতে এখনও মানুষের বিচার প্রয়োজন।
- ঘন ঘন পরিবর্তন সহজাতভাবে খারাপ নয়। কিছু churn একটি গুণমান সমস্যার বদলে সুস্থ, সক্রিয় উন্নয়ন প্রতিফলিত করে।
- এই বিশ্লেষণ ঠিক সেখানে স্কেল করে যেখানে স্বজ্ঞা ব্যর্থ হয়: বড় কোডবেসে যা একা অনুভূতি দ্বারা জরিপ ও অগ্রাধিকার দেওয়ার জন্য কোনো ব্যক্তির জন্য খুব বড়।
সুপারিশসমূহ
একসাথে churn ও জটিলতা গণনা করুন, এবং তাদের সংমিশ্রণ দ্বারা র্যাঙ্ক করুন
একটি অর্থপূর্ণ উইন্ডো জুড়ে, সাধারণত ছয় মাস থেকে এক বছর, সংস্করণ নিয়ন্ত্রণ ইতিহাস থেকে প্রতি ফাইলে পরিবর্তন ফ্রিকোয়েন্সি বের করুন, এবং একই ফাইলের জন্য একটি জটিলতা পরিমাপের (বিষয় ৪.১) সাথে এটি জোড়া দিন। কোনো একটি মেট্রিক একা নয়, সংমিশ্রণ দ্বারা ফাইল র্যাঙ্ক করুন, সাধারণত churn ও জটিলতার গুণফল, যেহেতু এই সংমিশ্রণ যা অন্তর্নিহিত গবেষণা ধারাবাহিকভাবে উন্নত ত্রুটির হার ও রক্ষণাবেক্ষণ খরচের সাথে যুক্ত করে।
কাজ করার আগে মানুষের বিচারসহ শীর্ষ হটস্পট তদন্ত করুন
একটি র্যাঙ্ককৃত হটস্পট তালিকা মনোযোগের জন্য প্রার্থী চিহ্নিত করে, একটি স্বয়ংক্রিয় কর্ম তালিকা নয়। আপনার প্রতিটি শীর্ষ হটস্পটের জন্য, একটি মানুষের চোখ দিয়ে তদন্ত করুন: এটি কি প্রকৃতপক্ষে খারাপভাবে নকশাকৃত কোড যার পুনর্গঠন প্রয়োজন, নাকি এটি এমন একটি ফাইল যার বৈধভাবে ঘন ঘন পরিবর্তন প্রয়োজন কারণ এটি সক্রিয়, বিকশিত ব্যবসায়িক যুক্তির কেন্দ্রে বসে, যে ক্ষেত্রে অগ্রাধিকার একটি কাঠামোগত পুনর্লিখনের বদলে ভালো পরীক্ষা বা স্পষ্টতর নথিপত্র হতে পারে। এটি বিষয় ৪.১-এর অপরিহার্য-বনাম-দুর্ঘটনাজনিত জটিলতা পার্থক্যকে প্রতিফলিত করে, এখানে সংমিলিত churn-জটিলতা সংকেতে প্রয়োগ করা।
ঘটনা ও ত্রুটি উপাত্তের বিরুদ্ধে হটস্পট ক্রস-রেফারেন্স করুন
উপলব্ধ হলে, পরীক্ষা করুন আপনার চিহ্নিত হটস্পট প্রকৃত উৎপাদন ঘটনার (বিষয় ৬.২) বা ত্রুটি-পলায়ন উপাত্তের (বিষয় ৫.১) সাথে সহসম্পর্কিত কিনা। একটি শক্তিশালী সহসম্পর্ক হটস্পট বিশ্লেষণকে আপনার নির্দিষ্ট কোডবেসের জন্য প্রকৃতপক্ষে ভবিষ্যদ্বাণীমূলক হিসেবে বৈধ করে এবং এর উপর কাজ করার ব্যবসায়িক মামলা শক্তিশালী করে; একটি দুর্বল বা অনুপস্থিত সহসম্পর্ক পরামর্শ দেয় হয় একটি উপাত্ত-গুণমান সমস্যা বা churn ও জটিলতা, আপনার নির্দিষ্ট প্রেক্ষাপটে, অগ্রাধিকার দেওয়ার জন্য সংকেতের সঠিক সংমিশ্রণ নয়।
একটি একক স্ন্যাপশট নয়, পরপর বিশ্লেষণ জুড়ে হটস্পট প্রবণতা ট্র্যাক করুন
পর্যায়ক্রমিকভাবে হটস্পট বিশ্লেষণ পুনরায় চালান, ত্রৈমাসিক সাধারণ, এবং ট্র্যাক করুন পূর্বে চিহ্নিত হটস্পট উন্নত হচ্ছে, খারাপ হচ্ছে, নাকি সমাধান হয়েছে, এবং নতুন কোনো উদ্ভূত হচ্ছে কিনা। বারবার চিহ্নিত হওয়া সত্ত্বেও একাধিক বিশ্লেষণ চক্র জুড়ে টিকে থাকা একটি হটস্পট নির্দেশ করে হয় প্রতিকার প্রচেষ্টা প্রকৃতপক্ষে প্রয়োগ করা হয়নি বা একটি পূর্ববর্তী প্রতিকার প্রচেষ্টা প্রকৃত অন্তর্নিহিত সমস্যা সমাধান করেনি।
দল-স্তরের অগ্রাধিকার কথোপকথন অবহিত করতে হটস্পট উপাত্ত ব্যবহার করুন, প্রতিস্থাপন করতে নয়
হটস্পট বিশ্লেষণকে একটি অগ্রাধিকার আলোচনায় প্রমাণ হিসেবে উপস্থাপন করুন, একটি স্বয়ংক্রিয় ম্যান্ডেট হিসেবে নয় যা এখনই সবচেয়ে গুরুত্বপূর্ণ কী সে সম্পর্কে একটি দলের নিজস্ব প্রাসঙ্গিক বিচার ওভাররাইড করে। একটি দলের একটি পরিচিত হটস্পটকে সাময়িকভাবে অগ্রাধিকার-হ্রাস করার ভালো, বৈধ কারণ থাকতে পারে, উদাহরণস্বরূপ একটি আসন্ন পরিকল্পিত পুনর্লিখন ক্রমবর্ধমান পুনর্গঠনকে অপচয়িত প্রচেষ্টা করে তোলে, এবং বিশ্লেষণটি সেই কথোপকথন অবহিত করা উচিত, এটি প্রতিস্থাপন করা নয়।
মূল্যবিচার: ভালো ও মন্দ দিক
| পদ্ধতি | ভালো দিক | মন্দ দিক |
|---|---|---|
| স্বজ্ঞা-ভিত্তিক অগ্রাধিকার | দ্রুত, কোনো টুলিং প্রয়োজন নেই, দলের প্রাসঙ্গিক জ্ঞান ব্যবহার করে | সাম্প্রতিকতা, ব্যক্তিগত পছন্দ, এবং যে সবচেয়ে জোরে অভিযোগ করে তার দ্বারা তির্যক |
| একা churn | গণনা করা সরল | নিজে থেকে দুর্বল সংকেত; ঘন ঘন পরিবর্তন সহজাতভাবে খারাপ নয় |
| জটিলতার সাথে একত্রিত churn (হটস্পট বিশ্লেষণ) | শক্তিশালী, প্রমাণ-ভিত্তিক, বিদ্যমান উপাত্ত থেকে স্বয়ংক্রিয় | দুটি উপাত্ত উৎস একত্রিত করা ও বিচারের সাথে ফলাফল ব্যাখ্যা করা প্রয়োজন |
| ঘটনা উপাত্তের সাথে ক্রস-রেফারেন্স করা হটস্পট বিশ্লেষণ | বৈধকৃত, অগ্রাধিকারের জন্য সবচেয়ে শক্তিশালী প্রমাণ | নির্ভরযোগ্য ঘটনা-থেকে-কোড সংযোগ প্রয়োজন, যা প্রতিটি প্রতিষ্ঠানের নেই |
কেন্দ্রীয় টানাপোড়েন হলো প্রমাণ বনাম প্রেক্ষাপট। হটস্পট বিশ্লেষণ বস্তুনিষ্ঠ, স্কেলযোগ্য প্রমাণ প্রদান করে যা স্বজ্ঞা-ভিত্তিক অগ্রাধিকার একটি বড়, অপরিচিত, বা দীর্ঘজীবী কোডবেসের আকারে মেলাতে পারে না, কিন্তু এটি একটি দলের এখন একটি নির্দিষ্ট হটস্পট কেন গুরুত্বপূর্ণ, বা নয়, সে সম্পর্কে প্রাসঙ্গিক বিচারের অভাব রাখে। হটস্পট বিশ্লেষণকে একটি অগ্রাধিকার কথোপকথনের প্রমাণ ভিত্তি হিসেবে বিবেচনা করে, সময় ও বিনিময় সম্পর্কে দলের নিজস্ব প্রাসঙ্গিক বিচারের সাথে একত্রিত করে, কখনও প্রতিস্থাপন না করে, টানাপোড়েন সমাধান করুন।
আপনার দলের সাথে আলোচনার প্রশ্ন
১. churn ও জটিলতা একত্রিত করে র্যাঙ্ককৃত আমাদের শীর্ষ পাঁচটি হটস্পট কী, এবং সেই র্যাঙ্কিং কি আমাদের সবচেয়ে খারাপ সমস্যা কোথায় বাস করে সে সম্পর্কে আমাদের দলের স্বজ্ঞার সাথে মিলবে? বিশ্লেষণ চালান এবং উপাত্ত দেখার আগে আপনার দল অনুমান করত তার বিরুদ্ধে ফলাফল তুলনা করুন; অসামঞ্জস্য প্রায়ই সবচেয়ে মূল্যবান অনুসন্ধান।
২. আমাদের চিহ্নিত হটস্পট কি প্রকৃত উৎপাদন ঘটনা বা ত্রুটি-পলায়ন উপাত্তের সাথে সহসম্পর্কিত? যদি আপনার এটি পরীক্ষা করার উপাত্ত থাকে, সরাসরি এটি করুন; যদি না থাকে, সেই ফাঁক নিজেই যার দিকে নির্মাণ করতে হবে তা নাম দেওয়ার যোগ্য।
৩. আমাদের বর্তমান শীর্ষ হটস্পটের জন্য, অন্তর্নিহিত সমস্যা কি অপরিহার্য জটিলতা যার বৈধভাবে ঘন ঘন পরিবর্তন প্রয়োজন, নাকি দুর্ঘটনাজনিত জটিলতা যা একটি পুনর্গঠন প্রকৃতপক্ষে ঠিক করতে পারে? একসাথে ফাইলটির মধ্য দিয়ে হাঁটুন এবং যে কোনো উত্তর ধরে নেওয়ার বদলে স্পষ্টভাবে এই বিচার করুন।
৪. চিহ্নিত হওয়া সত্ত্বেও একটি পূর্বে চিহ্নিত হটস্পট কি একাধিক বিশ্লেষণ চক্র জুড়ে টিকে থেকেছে? যদি তাই হয়, সততার সাথে তদন্ত করুন কেন: প্রতিকার কখনও প্রকৃতপক্ষে চেষ্টা করা হয়নি, বা একটি পূর্ববর্তী প্রচেষ্টা প্রকৃত অন্তর্নিহিত কারণ সমাধান করেনি।
৫. আমরা কি বর্তমানে প্রমাণের ভিত্তিতে পুনর্গঠন কাজ অগ্রাধিকার দিচ্ছি, নাকি যে সর্বশেষ বা সবচেয়ে জোরে অভিযোগ করেছে তার ভিত্তিতে? আপনার দলের প্রকৃত বর্তমান অগ্রাধিকার প্রক্রিয়া সম্পর্কে সৎ হোন এবং এটি একটি প্রমাণ-ভিত্তিক হটস্পট বিশ্লেষণ পরামর্শ দেবে তার সাথে কীভাবে তুলনা করে।
৬. আমাদের বর্তমান শীর্ষ হটস্পট আরও এক বছরের জন্য অসমাধিত রেখে দিলে এটি আমাদের কী খরচ করবে, ত্রুটির হার বা সরবরাহ ধীরগতিতে? এই প্রশ্ন একটি সুনির্দিষ্ট খরচ অনুমান বাধ্য করে যা একটি অগ্রাধিকার সিদ্ধান্তকে নোঙর করতে পারে, হটস্পটকে একটি বিমূর্ত, সহজে অগ্রাধিকার-হ্রাস করা উদ্বেগ হিসেবে রেখে দেওয়ার বদলে।
ক্ষেত্র লেন্স
স্টার্টআপ। আনুষ্ঠানিক হটস্পট বিশ্লেষণ সাধারণত একটি ছোট, তরুণ কোডবেসসহ অপ্রয়োজনীয় যা পুরো দল এখনও সম্মিলিতভাবে তাদের মাথায় ধরে রাখে। কৌশলটি নির্দিষ্টভাবে মূল্যবান হয়ে ওঠে একবার কোডবেস এমন আকার অতিক্রম করে বৃদ্ধি পেলে যেখানে কোনো ব্যক্তি একা স্মৃতি দ্বারা নির্ভরযোগ্যভাবে সবচেয়ে খারাপ ক্ষেত্র চিহ্নিত করতে পারে, প্রায়ই টেকসই বৃদ্ধির প্রথম এক বা দুই বছরের কোথাও।
ছোট ব্যবসা। বিনামূল্যে বা কম-খরচের টুলিং ন্যূনতম সেটআপসহ আপনার বিদ্যমান সংস্করণ নিয়ন্ত্রণ ইতিহাস থেকে সরাসরি churn উপাত্ত বের করতে পারে; এই মাত্রায় নিবেদিত বাণিজ্যিক হটস্পট-বিশ্লেষণ সফটওয়্যারে বিনিয়োগ করার বদলে আপনার বিদ্যমান লিন্টার বা স্ট্যাটিক বিশ্লেষণ টুল ইতিমধ্যে যে জটিলতা উপাত্ত প্রতিবেদন করে তার সাথে এটি একত্রিত করুন।
এন্টারপ্রাইজ। এখানেই প্রমাণ-ভিত্তিক অগ্রাধিকার সবচেয়ে বেশি রিটার্ন অর্জন করে, যেহেতু স্বজ্ঞা প্রকৃতপক্ষে ব্যর্থ হয় শত শত পরিষেবা ও হাজার হাজার ফাইল জুড়ে বিস্তৃত একটি কোডবেসের মাত্রায়। পুরো কোডবেস জুড়ে নিয়মিতভাবে এই বিশ্লেষণ চালাতে এবং ঘটনা উপাত্তের বিরুদ্ধে ক্রস-রেফারেন্স করতে বিনিয়োগ করুন পুনর্গঠন বিনিয়োগের জন্য একটি বৈধকৃত, রক্ষণযোগ্য মামলা তৈরি করতে।
সরকার। দীর্ঘজীবী সিস্টেম, কখনও কখনও দশক পুরনো, হটস্পট বিশ্লেষণের জন্য একটি স্বাভাবিক মিল, যেহেতু সঞ্চিত সংস্করণ নিয়ন্ত্রণ ইতিহাস সিস্টেমের কোন অংশ সময়ের সাথে প্রকৃতপক্ষে সমস্যাযুক্ত প্রমাণিত হয়েছে সে সম্পর্কে একটি সমৃদ্ধ, দীর্ঘমেয়াদী সংকেত প্রদান করে। এই প্রমাণ-ভিত্তিক পদ্ধতি অর্থায়ন অনুমোদনের জন্য একজন প্রকৌশলীর অনানুষ্ঠানিক মতামতের চেয়ে বেশি প্রয়োজন এমন অংশীদারদের কাছে আধুনিকীকরণ বিনিয়োগ ন্যায্যতা দেওয়ার একটি প্ররোচনামূলক, সুনির্দিষ্ট টুলও।
উদাহরণ
এন্টারপ্রাইজ। ডজন ডজন পরিষেবা জুড়ে বিশ লক্ষেরও বেশি কোড লাইন বিস্তৃত একটি বিমা কোম্পানির দাবি-প্রক্রিয়াকরণ প্ল্যাটফর্ম “দাবি-বৈধকরণ মডিউল” সমস্যাযুক্ত হওয়া সম্পর্কে বছরের অনানুষ্ঠানিক অভিযোগ সঞ্চয় করেছিল, কিন্তু সেই অভিযোগ থেকে কখনও কোনো আনুষ্ঠানিক অগ্রাধিকার অনুসরণ করেনি। ছয় মাসের churn উপাত্তকে জটিলতা স্কোরের সাথে একত্রিত করা একটি হটস্পট বিশ্লেষণ সম্পূর্ণভাবে ভিন্ন একটি ফাইল চিহ্নিত করেছিল, একটি কদাচিৎ আলোচিত নির্ভরতায় গভীরে পোঁতা একটি ভাগ করা মুদ্রা-রূপান্তর ইউটিলিটি, প্রকৃত শীর্ষ হটস্পট হিসেবে, একটি যা কখনও কোনো রেট্রোস্পেক্টিভ অভিযোগে আসেনি। ঘটনা উপাত্তের বিরুদ্ধে ক্রস-রেফারেন্স করা নিশ্চিত করেছিল এই ইউটিলিটি পূর্ববর্তী বছরে আর্থিক-গণনা ত্রুটির একটি অসামঞ্জস্যপূর্ণ অংশে জড়িত ছিল, এবং সেই নির্দিষ্ট ইউটিলিটির একটি লক্ষ্যযুক্ত পুনর্গঠন, সবাই অনানুষ্ঠানিকভাবে দোষারোপ করছিল এমন মডিউলের বদলে, পরবর্তী ত্রৈমাসিকের মধ্যে সংশ্লিষ্ট ঘটনায় একটি পরিমাপযোগ্য হ্রাস উৎপাদন করেছিল।
সরকার। একটি রাজ্য মোটর যান সংস্থার দশক-পুরনো লাইসেন্সিং সিস্টেম একটি আধুনিকীকরণ ব্যবসায়িক মামলার অংশ হিসেবে একটি হটস্পট বিশ্লেষণের মধ্য দিয়ে গিয়েছিল। বিশ্লেষণটি ফাইলের একটি ছোট গুচ্ছ চিহ্নিত করেছিল, মোট কোডবেসের ৩%-এর কম প্রতিনিধিত্ব করে, উভয়ই churn ও জটিলতার একটি অসামঞ্জস্যপূর্ণ অংশের জন্য দায়ী, এবং সংস্থার ঘটনা লগের বিরুদ্ধে ক্রস-রেফারেন্স করা দেখিয়েছিল এই একই গুচ্ছ পূর্ববর্তী তিন বছরে প্রতিবেদিত সব সিস্টেম ত্রুটির প্রায় ৪০%-এর জন্য দায়ী ছিল। এই সুনির্দিষ্ট, প্রমাণ-ভিত্তিক অনুসন্ধান, “সিস্টেমটি পুরনো এবং আধুনিকীকরণ প্রয়োজন” এমন একটি সাধারণ দাবির চেয়ে অনেক বেশি প্ররোচনামূলক, একটি অনেক বেশি ব্যয়বহুল সম্পূর্ণ সিস্টেম প্রতিস্থাপনের বদলে নির্দিষ্টভাবে সেই গুচ্ছে ফোকাসকৃত একটি লক্ষ্যযুক্ত, ক্রমবর্ধমান আধুনিকীকরণ প্রচেষ্টার জন্য একটি সফল বাজেট অনুরোধের কেন্দ্রবিন্দু হয়ে উঠেছিল।
ব্যবসায়িক যুক্তি: প্রেরণা, ROI, এবং TCO
হটস্পট বিশ্লেষণের রিটার্ন হলো লক্ষ্যযুক্ত, প্রমাণ-ভিত্তিক বিনিয়োগ: উপরের উভয় উদাহরণ একটি ক্ষেত্র দেখায় যেখানে আনুষ্ঠানিক বিশ্লেষণ পুনর্গঠন মনোযোগকে অনানুষ্ঠানিক অভিযোগ যেখানে এটি ফোকাস করেছিল সেখান থেকে দূরে এবং উপাত্ত প্রকৃতপক্ষে যেখানে সমস্যাটি বাস করে দেখিয়েছিল সেদিকে পুনর্নির্দেশ করেছিল, একটি অলক্ষ্যযুক্ত বা স্বজ্ঞা-চালিত বিনিয়োগ হতো তার চেয়ে পরিমাপযোগ্যভাবে ভালো রিটার্ন উৎপাদন করে।
মোট মালিকানা খরচ কম, যেহেতু churn উপাত্ত সরাসরি বিদ্যমান সংস্করণ নিয়ন্ত্রণ ইতিহাস থেকে আসে এবং জটিলতা উপাত্ত সাধারণত ইতিমধ্যে স্ট্যাটিক বিশ্লেষণ টুলিং (বিষয় ৪.৪) থেকে উপলব্ধ; প্রধান বিনিয়োগ হলো পর্যায়ক্রমিক বিশ্লেষণ প্রচেষ্টা এবং ফলাফল ব্যাখ্যা করার ও প্রতিটি চিহ্নিত হটস্পট কী কর্ম দাবি করে তা সিদ্ধান্ত নেওয়ার মানুষের বিচার সময়।
বিরোধী প্যাটার্ন এবং ফাঁদ
- জটিলতা ছাড়া একা churn ব্যবহার করা: নিজে থেকে একটি দুর্বল সংকেত যা সুস্থ, সক্রিয়ভাবে উন্নয়নশীল কোডকে একটি মিথ্যা ইতিবাচক হিসেবে চিহ্নিত করতে পারে।
- কোনো মানুষের বিচার ছাড়া একটি হটস্পট র্যাঙ্কিংকে একটি স্বয়ংক্রিয় কর্ম তালিকা হিসেবে বিবেচনা করা: সঠিক প্রতিক্রিয়া নির্ধারণ করে এমন অপরিহার্য-বনাম-দুর্ঘটনাজনিত পার্থক্য মিস করে।
- প্রমাণের বদলে সবচেয়ে জোরালো অভিযোগের ভিত্তিতে পুনর্গঠন অগ্রাধিকার দেওয়া: ঘনঘন উপাত্ত প্রকৃতপক্ষে দেখায় সমস্যাটি কোথায় বাস করে তা থেকে দূরে প্রচেষ্টা ভুল দিক নির্দেশ করে।
- কখনও ঘটনা বা ত্রুটি উপাত্তের বিরুদ্ধে হটস্পট ক্রস-রেফারেন্স না করা: বিশ্লেষণের উপর কাজ করার মামলা শক্তিশালী করে এমন বৈধতা পদক্ষেপ মিস করে।
- বিশ্লেষণ একবার চালানো এবং কখনও এটি পুনরাবৃত্তি না করা: প্রতিকার প্রচেষ্টা সময়ের সাথে প্রকৃতপক্ষে কাজ করছে কিনা তা মিস করে।
- কেন প্রতিকার আটকে থাকেনি তা তদন্ত না করে একটি ক্রমাগত চিহ্নিত হটস্পট উপেক্ষা করা: পুনরাবৃত্ত বিশ্লেষণের নির্ণায়ক মূল্য অপচয় করে।
পরিপক্বতা মডেল
- স্তর ১, শুরু: পুনর্গঠন অগ্রাধিকার স্বজ্ঞা বা অভিযোগের আয়তন দ্বারা নির্ধারিত হয়, সিদ্ধান্তকে অবহিত করার কোনো churn বা জটিলতা উপাত্ত ছাড়াই।
- স্তর ২, উন্নয়ন: কিছু দল অনানুষ্ঠানিকভাবে churn বা জটিলতা উপাত্ত পরীক্ষা করে, কিন্তু কোনো সামঞ্জস্যপূর্ণ, প্রতিষ্ঠান-ব্যাপী হটস্পট বিশ্লেষণ অনুশীলন নেই।
- স্তর ৩, মানসম্মতকরণ: churn ও জটিলতা একত্রিতকারী হটস্পট বিশ্লেষণ নিয়মিতভাবে চলে এবং সামঞ্জস্যপূর্ণভাবে প্রতিষ্ঠান-ব্যাপী পুনর্গঠন অগ্রাধিকার অবহিত করে।
- স্তর ৪, ব্যবস্থাপনা: বিশ্লেষণ বৈধ করতে হটস্পট ঘটনা ও ত্রুটি উপাত্তের বিরুদ্ধে ক্রস-রেফারেন্স করা হয়, এবং পরপর চক্র জুড়ে প্রবণতা সক্রিয়ভাবে ট্র্যাক করা হয়।
- স্তর ৫, সমন্বয়: প্রতিষ্ঠান হটস্পট-অবহিত পুনর্গঠন বিনিয়োগ থেকে নির্দিষ্ট, পরিমাপযোগ্য ত্রুটি-হার বা সরবরাহ উন্নতি নির্দেশ করতে পারে, এবং বিশ্লেষণ প্রকৌশল বিনিয়োগ সিদ্ধান্তের একটি রুটিন, বিশ্বস্ত ইনপুট।
আলোচনার জন্য ধারণা
১. আজ আমরা যদি এই বিশ্লেষণ চালাই আমাদের শীর্ষ হটস্পট তালিকা কেমন দেখাবে? ২. সেই তালিকা কি আমাদের সবচেয়ে খারাপ সমস্যা ক্ষেত্র সম্পর্কে আমাদের দলের বর্তমান অনানুষ্ঠানিক অনুভূতির সাথে মিলবে, নাকি বিরোধ করবে? ৩. প্রকৃত ঘটনার বিরুদ্ধে হটস্পট ক্রস-রেফারেন্স করার উপাত্ত কি আমাদের আছে? ৪. পূর্ববর্তী ঠিক করার প্রচেষ্টা সত্ত্বেও একটি পরিচিত সমস্যা ক্ষেত্র কি টিকে থেকেছে, এবং কেন? ৫. আমাদের বর্তমান শীর্ষ হটস্পট আরও এক বছরের জন্য অসমাধিত রেখে দিলে এটি আমাদের কী খরচ করবে?
মূল বিষয়সমূহ
- জটিলতার সাথে একত্রিত churn কোনো একটি মেট্রিক একার চেয়ে অনেক বেশি নির্ভরযোগ্যভাবে প্রকৃত হটস্পট চিহ্নিত করে।
- হটস্পট বিশ্লেষণে কোনো ম্যানুয়াল জরিপ প্রয়োজন হয় না; এটি বিদ্যমান সংস্করণ নিয়ন্ত্রণ ও স্ট্যাটিক বিশ্লেষণ উপাত্ত থেকে স্বয়ংক্রিয়ভাবে গণনাযোগ্য।
- একটি হটস্পট র্যাঙ্কিংকে অগ্রাধিকারের জন্য প্রমাণ হিসেবে বিবেচনা করুন, একটি স্বয়ংক্রিয় রায় নয়; মানুষের বিচার এখনও প্রয়োজন।
- বিশ্লেষণ বৈধ করতে ও এর উপর কাজ করার মামলা শক্তিশালী করতে ঘটনা ও ত্রুটি উপাত্তের বিরুদ্ধে হটস্পট ক্রস-রেফারেন্স করুন।
- প্রতিকার প্রকৃতপক্ষে কাজ করছে তা নিশ্চিত করতে, শুধু একবার একটি স্ন্যাপশট হিসেবে নয়, পরপর বিশ্লেষণ চক্র জুড়ে হটস্পট ট্র্যাক করুন।
তথ্যসূত্র এবং অতিরিক্ত পাঠ
- Tornhill, Adam. Your Code as a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs. Pragmatic Bookshelf, 2015.
- Tornhill, Adam. Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis. Pragmatic Bookshelf, 2018.
- Nagappan, Nachiappan, and Thomas Ball. “Use of Relative Code Churn Measures to Predict System Defect Density.” Proceedings of the International Conference on Software Engineering, 2005.
- Fowler, Martin. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.