Software Metrics-এর মধ্যে Code Complexity, Lines of Code (LOC) এবং Cyclomatic Complexity তিনটি গুরুত্বপূর্ণ মেট্রিকস, যা সফটওয়্যারের কোডের গুণগত মান, জটিলতা এবং রক্ষণাবেক্ষণযোগ্যতা পরিমাপ করতে ব্যবহৃত হয়। এই মেট্রিকসগুলো সফটওয়্যার ডেভেলপারদের কোডের মান ও কার্যকারিতা উন্নয়নে সহায়ক।
১. Code Complexity
Code Complexity হলো কোডের জটিলতার একটি পরিমাপক, যা কোডটি কতটা সহজবোধ্য বা জটিল তা নির্ধারণ করে। কোডের জটিলতা যত বেশি হয়, তত বেশি সময় ও খরচ লাগে তার রক্ষণাবেক্ষণ এবং ত্রুটি সমাধানে। সাধারণত Code Complexity কোডের বিভিন্ন শর্ত (if, else, switch), লুপ (for, while), এবং অন্যান্য কন্ডিশনের ওপর ভিত্তি করে নির্ধারণ করা হয়।
Code Complexity-এর প্রয়োজনীয়তা:
- ত্রুটি কমানো: জটিল কোডে ত্রুটি বেশি থাকে, তাই সহজ কোড লিখে ত্রুটি কমানো যায়।
- রক্ষণাবেক্ষণ সহজ করা: কম জটিল কোডের রক্ষণাবেক্ষণ এবং পরিবর্তন সহজ হয়।
- কোড পুনঃব্যবহারযোগ্য করা: সহজ এবং মডুলার কোড পুনঃব্যবহারযোগ্য হয়, যা ভবিষ্যৎ প্রকল্পে কাজে আসে।
২. Lines of Code (LOC)
Lines of Code (LOC) হলো সফটওয়্যারের কোডের আকার পরিমাপের একটি সরল পদ্ধতি, যা কত লাইন কোড আছে তা নির্ণয় করে। এটি সাধারণত একটি কোডবেসের আকার এবং জটিলতার ভিত্তিতে প্রজেক্টের খরচ, সময়, এবং রিসোর্সের প্রয়োজনীয়তা নির্ধারণ করতে সহায়ক।
LOC-এর প্রয়োজনীয়তা:
- কোড আকার নির্ধারণ: সফটওয়্যারের আকার বোঝা সহজ হয়।
- উন্নয়নের খরচ ও সময় অনুমান: কোডের আকারের ওপর ভিত্তি করে প্রজেক্টের সময়সীমা এবং বাজেট নির্ধারণ করা যায়।
- প্রোডাক্টিভিটি ট্র্যাক করা: কত লাইন কোড প্রতিদিন লেখা হয়েছে বা প্রজেক্টের জন্য কত কোড প্রয়োজন তা নির্ধারণ করা যায়।
LOC-এর সীমাবদ্ধতা:
- কোডের আকার বড় হলেও কোডের কার্যকারিতা বা মান বোঝা যায় না।
- অনেক ক্ষেত্রে কম লাইন কোডে বেশি কার্যকরী ফিচার প্রদান করা সম্ভব, যা LOC দিয়ে বুঝা যায় না।
৩. Cyclomatic Complexity
Cyclomatic Complexity হলো কোডের লজিক্যাল জটিলতা পরিমাপের একটি মেট্রিকস, যা সফটওয়্যারের একটি মডিউলে কতগুলো স্বাধীন পথ বা কন্ট্রোল ফ্লো আছে তা নির্ধারণ করে। এটি একটি গ্রাফ থিওরি ভিত্তিক পদ্ধতি, যেখানে শর্ত (conditions), লুপ এবং অন্যান্য কন্ডিশনাল স্টেটমেন্টের ভিত্তিতে জটিলতা পরিমাপ করা হয়।
Cyclomatic Complexity গণনার ফর্মুলা:
- Cyclomatic Complexity (CC) = E - N + 2P
- E = কোডের কন্ট্রোল ফ্লো গ্রাফের এজ (edges) সংখ্যা।
- N = কোডের কন্ট্রোল ফ্লো গ্রাফের নোড (nodes) সংখ্যা।
- P = সংযুক্ত অংশের সংখ্যা (সংখ্যা যদি একাধিক থাকে)।
Cyclomatic Complexity-এর মান অনুযায়ী কোডের জটিলতার মানদণ্ড:
- ১-১০: সাধারণত সহজবোধ্য এবং রক্ষণাবেক্ষণযোগ্য।
- ১১-২০: মাঝারি জটিল।
- ২১-৫০: জটিল এবং রক্ষণাবেক্ষণে সময় সাপেক্ষ।
- ৫০+: খুবই জটিল এবং ভুলের সম্ভাবনা বেশি থাকে।
Cyclomatic Complexity-এর প্রয়োজনীয়তা:
- জটিলতা নির্ধারণ: কোডের লজিক্যাল জটিলতা নির্ধারণ করে, যা ডেভেলপমেন্ট টিমের জন্য সাহায্যকারী।
- রক্ষণাবেক্ষণ এবং টেস্টিং সহজ করা: কম জটিল কোড সহজে টেস্ট এবং রক্ষণাবেক্ষণ করা যায়।
- ত্রুটি কমানো: জটিল লজিক সহজ করে ত্রুটি ও বাগ কমানো যায়।
উদাহরণ:
def check_number(num):
if num > 0:
print("Positive")
elif num < 0:
print("Negative")
else:
print("Zero")
উপরের উদাহরণে Cyclomatic Complexity = 3, কারণ এখানে তিনটি স্বাধীন পথ রয়েছে: num > 0, num < 0, এবং num == 0।
তুলনামূলক চিত্র
| মেট্রিকস | উদ্দেশ্য | প্রয়োজনীয়তা |
|---|---|---|
| Code Complexity | কোডের জটিলতা নির্ধারণ করা | ত্রুটি কমানো, রক্ষণাবেক্ষণ সহজ করা |
| Lines of Code (LOC) | কোডের আকার নির্ধারণ করা | খরচ ও সময় অনুমান, প্রোডাক্টিভিটি ট্র্যাক করা |
| Cyclomatic Complexity | লজিক্যাল জটিলতা নির্ধারণ করা | টেস্টিং সহজ করা, জটিলতা এবং ত্রুটি কমানো |
সংক্ষেপে
Code Complexity, Lines of Code (LOC), এবং Cyclomatic Complexity সফটওয়্যারের গুণগত মান এবং কার্যকারিতা পরিমাপের গুরুত্বপূর্ণ মেট্রিকস। এগুলো সফটওয়্যারের জটিলতা, আকার, এবং কার্যকারিতা নির্ধারণে সহায়ক, যা রক্ষণাবেক্ষণ, টেস্টিং, এবং উন্নয়নের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more