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