জটিলতা এবং পুনঃব্যবহারযোগ্যতার মধ্যে কি কোনও সম্পর্ক আছে?


18

আমি সম্প্রতি ইউনিতে সাইক্লোমেটিক জটিলতা (ম্যাককেব) এবং সফ্টওয়্যারটির পুনঃপ্রতিযোগিতা অধ্যয়ন করেছি। আজ আমার প্রভাষক বলেছিলেন যে দুটি মেট্রিকের মধ্যে কোনও সম্পর্ক নেই, তবে আসলেই কি এটি ঘটছে?

আমি মনে করি অবশ্যই কিছুটা পারস্পরিক সম্পর্ক থাকবে, কারণ কম জটিল প্রোগ্রামগুলি (আমরা দেখেছি এমন কিছু সংখ্যক থেকে) সম্ভবত পুনর্ব্যবহারের দিক থেকে 'আরও ভাল' ফলাফল বলে মনে হচ্ছে।

দু'টি মেট্রিক একসাথে দেখার কোনও প্রচেষ্টা সম্পর্কে কেউ কি জানেন এবং যদি তা না হয় তবে বিশাল (ইশ) সংখ্যক প্রোগ্রামের জন্য জটিলতা এবং পুনঃব্যবহারযোগ্যতা উভয়ের ডেটা খুঁজে পাওয়ার জন্য ভাল জায়গাটি কী হতে পারে?

উত্তর:


2

আমি সম্প্রতি ইউনিতে সাইক্লোমেটিক জটিলতা (ম্যাককেব) এবং সফ্টওয়্যারটির পুনঃব্যবহারযোগ্যতা অধ্যয়ন করেছি। আজ আমার প্রভাষক বলেছিলেন যে দুটি মেট্রিকের মধ্যে কোনও সম্পর্ক নেই, তবে আসলেই কি এটি ঘটছে?

আসলে হ্যাঁ এবং না উভয়ই।

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

CC = E - N

পুনঃসাহারযোগ্যতা সমস্যা গ্রাফ তত্ত্বের একটি সাধারণ সমস্যা যা এভাবে প্রকাশ করা যেতে পারে: দুটি এবং নোড এ এবং বি দেওয়া নোড বি থেকে নোড বি পৌঁছনীয়, অর্থাত্ একটি এ থেকে শুরু হয়ে গ্রাফের প্রান্তগুলি সঠিকভাবে অনুসরণ করে বি তে পৌঁছতে পারে? অভিমুখ? সুতরাং, এটি আবার এমন মেট্রিক যা নিয়ন্ত্রণ প্রবাহ গ্রাফের জন্য প্রযোজ্য এবং কোডে নয়।

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

মূলত কেউ সিসি এবং রিএ্যাচিবিলিটির মধ্যে কিছু প্রকারের পারস্পরিক সম্পর্ক দেখতে পাচ্ছে: সিসি বৃদ্ধির সাথে নোডের উপরের প্রান্তের অনুপাতও বৃদ্ধি পায় এবং এমনকি নির্দেশিত গ্রাফের ক্ষেত্রেও যেখানে প্রান্তের দিকটিও গুরুত্বপূর্ণ, কেউ অনুমান করতে পারে যে ক্রমবর্ধমান প্রান্তের সংখ্যা অবশেষে গ্রাফের মধ্যে উপলব্ধ পাথের বৃদ্ধি এবং নোডের মধ্যে প্রত্যক্ষ বা অপ্রত্যক্ষ সংযোগের মাধ্যমে পুনঃচঞ্চলতা বাড়িয়ে তোলে। সুতরাং, উত্তর হ্যাঁ এখানে।

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


1

আমি পুনঃব্যবহারযোগ্যতার সাথে পরিচিত নই, তবে যদি এটি কোড পাথের এমন একটি পরিমাপ যা কখনও সম্পাদন করা যায় না, তবে চক্রবৃত্তীয় জটিলতাটি এটির উপরের সীমানা বাছাই করা উচিত।


0

এ সম্পর্কে কিছু পরিসংখ্যান থাকতে পারে তবে আমি বলব এর সাথে কোনও সম্পর্ক নেই কারণ একটি অন্যটির উপর নির্ভর করে না এবং এমন একটি সফ্টওয়্যার সিস্টেমের নকশায় পছন্দও রয়েছে যা আপনি এটিকে নির্মূল করতে পারেন।

বাস্তব বিশ্বের তথ্যের নিরিখে, একটি শক্তিশালী পারস্পরিক সম্পর্ক থাকতে পারে তবে এটি খারাপভাবে ডিজাইন করা সফ্টওয়্যার সিস্টেমগুলির কারণে হতে পারে যা এই সম্পর্কটিকে দূর করে না। এটি গ্রাফ তত্ত্বের জ্ঞানের অভাবে দুর্ঘটনাজনিত পারস্পরিক সম্পর্ক হতে পারে।


1
অন্যটির উপর নির্ভর করে একটি হ'ল কার্যকারণ, পারস্পরিক সম্পর্ক নয়।
জেফো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.