কোড মেট্রিকগুলি বাগ ঘনত্বের সাথে সম্পর্কিত করার পরীক্ষা-নিরীক্ষা


16

আমি ভাবছি যে কেউ যদি ওজেক্ট ওরিয়েন্টেড অ্যাপ্লিকেশনগুলিতে বাগের ঘনত্বের সাথে কোড মেট্রিক্স (এসএলওসি, সাইক্লোমেটিক জটিলতা ইত্যাদি) সম্পর্কিত কিছু পরীক্ষা-নিরীক্ষা করেছেন।

আমি এমন পরীক্ষাগুলির সন্ধান করছি না যা কেবলমাত্র প্রমাণকে প্রমাণ করে বা পরস্পরের সম্পর্ককে অস্বীকার করে, তবে উভয় ক্ষেত্রেই। আমি বিশ্বাস করি না যে কোনও প্রকল্পের বাগের ঘনত্ব কোনও প্রদত্ত প্রকল্প বা দলের জন্য এক বা একাধিক মেট্রিকের সাথে সম্পর্কিত হতে পারে এবং প্রকল্প / দলের জীবদ্দশায় পারস্পরিক সম্পর্ক পরিবর্তন হতে পারে।

আমার লক্ষ্য

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

আপনার যদি এ নিয়ে কোনও অভিজ্ঞতা না থেকে থাকে তবে এই বিষয়ে একটি কাগজ / ব্লগ দেখে মনে আছে, আপনি যদি এটি ভাগ করে নিতে পারেন তবে আমি প্রশংসা করব।


এখনও অবধি আমি এই বিষয় সম্পর্কে কিছু তথ্যের সাথে নিম্নলিখিত লিঙ্কগুলি পেয়েছি


1
আপনি যদি বন্ধ হওয়া এড়াতে চান তবে আপনার প্রশ্নটি পুনরায় করা উচিত। স্ট্যাক এক্সচেঞ্জের সাইটগুলি অনুসন্ধান ইঞ্জিন নয় এবং ব্যবহারকারীরা ব্যক্তিগত গবেষণা সহায়ক নয় । কাগজগুলির লিঙ্কগুলি জিজ্ঞাসা করার পরিবর্তে, কী ধরণের ম্যাট্রিকগুলি ত্রুটি এবং ত্রুটির ঘনত্বের সাথে সম্পর্কযুক্ত তা জিজ্ঞাসা করার বিষয়ে জোর দেওয়া উচিত।
টমাস ওয়ানস

1
আমি দুঃখিত যে প্রশ্নটি আমার ব্যক্তিগত অনুসন্ধান সহকারী হওয়ার অনুরোধ হিসাবে এসেছিল , আমি অবশ্যই যা চাইছিলাম তা নয়, তবে এই জাতীয় কাগজপত্রগুলি খুঁজে পাওয়া খুব সাধারণ বিষয় নয়। আমি শিরোনামটি পরিবর্তন করেছি যাতে অন্যান্য লোকের একই ধারণা না ঘটে।
অগস্টো

উত্তর:


11

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

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

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

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

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

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

আপনার যদি আইইইই সদস্যতা থাকে তবে আমি আরও কিছু বাস্তব-জগত এবং প্রয়োগিত প্রতিবেদনের জন্য আরও একাডেমিক প্রকাশনা এবং আইইইই সফটওয়্যার সম্পর্কিত আইইইই লেনদেনগুলি সন্ধানের পরামর্শ দেব । এসিএমের তাদের ডিজিটাল লাইব্রেরিতে প্রাসঙ্গিক প্রকাশনা থাকতে পারে ।


হ্যালস্টেড মেট্রিক্সগুলি কাঁচা এসএলওসি (কোডের উত্সের লাইনের সংখ্যা) এর সাথে দৃ strongly়ভাবে সম্পর্কযুক্ত দেখানো হয়েছে। এই মুহুর্তে, যে কোনও কিছু হালস্টেড মেট্রিকের সাথে সম্পর্কিত যা কাঁচা এসএলওসি-র সাথে সম্পর্কযুক্ত বলে পরিচিত হয়ে ওঠে এবং হালডস্টেটের মেট্রিকগুলির তুলনায় এসএলওসি পরিমাপ করা আরও সহজ।
জন আর স্ট্রোহম

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

@ জনআর.স্ট্রোহম আমি নিশ্চিত যে একটি এসএলওসি গণনা কর্মসূচির চেয়ে হাল্স্টেড মেট্রিক গণনা প্রোগ্রাম কার্যকর করতে একটু বেশি সময় নেয়। তবে ধরে নিই বৈধ আউটপুট সিদ্ধান্ত নেওয়ার ক্ষেত্রে বৈধ ইনপুট হয়ে যায়, আমার বরং কাঁচা এসএলওসি গণনার চেয়ে অর্থপূর্ণ সময়, প্রচেষ্টা এবং ত্রুটিযুক্ত ডেটা থাকত। আরও জটিল মেট্রিকের অতিরিক্ত মানটি প্রায়শই অতিরিক্ত গণনার সময়ের জন্য মূল্যবান হয়, আবার বৈধ ইনপুট এবং গণনার বৈধ ফলাফলগুলি গ্রহণ করে।
থমাস Owens

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

@ থমাস ওভেনস: আরও একটি, অবশ্যই স্বীকৃতি দিতে হবে যে হালডস্টিড মেট্রিকস সহজাতভাবে পূর্বপরিকল্পিত। আপনি যে সফ্টওয়্যারটি এখনও লিখেছেননি সেটির হাল্স্টেড মেট্রিকগুলি আপনি পরিমাপ করতে পারবেন না। অন্যদিকে, কোনও নির্দিষ্ট কাজের জন্য কাঁচা এসএলওসি অনুমান করা সম্ভব, এবং যথেষ্ট পরিমাণে বিশদ বিবরণ এবং সামান্য অভিজ্ঞতা দেওয়া হলে, অনুমানের কাছাকাছি আসা খুব সহজ relatively তদুপরি, বাস্তবের সাথে অনুমানের তুলনা করা, কারও অনুমানীয় হিউরিস্টিককে সূক্ষ্ম সুরকরণ করা এবং নিজের ব্যয় নির্ণায়ককে ক্রমাঙ্কিত করা খুব সহজ। জেনারেল ডায়নামিক্স / ফোর্ট ওয়ার্থ 1980 এর দশকের গোড়ার দিকে এটিতে প্রচুর কাজ করেছিলেন।
জন আর স্ট্রোহম

7

আমি আমার ব্লগ পোস্টগুলির একটিতে সম্ভাব্য পারস্পরিক সম্পর্ক নিয়ে আলোচনা করেছি :

সাইক্লোমেটিক জটিলতা এবং বাগের ঘনত্বের মধ্যে সংঘাত: এটি কি আসল সমস্যা?

উত্তর না হয়। আকারটিকে স্থির রেখে, অধ্যয়নগুলি সিসি এবং ত্রুটিযুক্ত ঘনত্বের মধ্যে কোনও সম্পর্ক রাখে না। যাইহোক, অধ্যয়নের জন্য আরও দুটি আকর্ষণীয় সম্পর্ক রয়েছে:

প্রথমটি হ'ল: সিসি ত্রুটিগুলি সনাক্ত এবং নির্ধারণের সময়কালের সাথে দৃ strongly়ভাবে সম্পর্কযুক্ত? অন্য কথায়, সিসি যদি কম হয়, আমরা কি কম সময় ডিবাগ করতে এবং ত্রুটিগুলি সমাধান করতে পারি?

দ্বিতীয়টি হ'ল: সিসি কি ফল্ট ফিডব্যাক অনুপাতের (এফএফআর, একটি ত্রুটিগুলির গড় সংখ্যার ফলস্বরূপ যা একটি পরিবর্তন প্রয়োগ বা একটি ত্রুটি সংশোধন করার ফলে ফলাফল করে) এর সাথে দৃ strongly়ভাবে সম্পর্কযুক্ত?

কেউ কখনও এই পরস্পর সম্পর্কের অভিজ্ঞতা নিয়ে পড়াশোনা করেছেন কিনা তা দেখার জন্য এটি আরও তদন্তের প্রয়োজন। তবে, আমার অন্ত্র অনুভূতি এবং আমি যে দলগুলির সাথে কাজ করি তার থেকে প্রাপ্ত প্রতিক্রিয়া হ'ল একদিকে সাইক্লোমাটিক জটিলতা এবং একটি ত্রুটি সনাক্তকরণ এবং ঠিক করার সময়কালের মধ্যে বা অন্যদিকে পরিবর্তনের প্রভাবের মধ্যে দৃ positive় ইতিবাচক সম্পর্ক রয়েছে corre

এটি করা একটি ভাল পরীক্ষা। ফলাফলের জন্য সতর্ক থাকুন!


ডাউনভোটের যোগ্য নয়, তবে এটি "কিছু গবেষণায় কোনও সম্পর্ক নেই", কারণ অন্যান্য গবেষণাগুলি কোনও সম্পর্ককে দেখায়।
ডেভিড হ্যামেন

3

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

সেগুলি উল্লেখগুলি হ'ল:

  • ম্যাককেবে, টম 1976. "একটি জটিলতা পরিমাপ।" সফটওয়্যার ইঞ্জিনিয়ারিং, এসই -২, আইইইই লেনদেন 4 (ডিসেম্বর): 308-20
  • শেন, ভিনসেন্ট ওয়াই, ইত্যাদি। 1985. "ত্রুটি-প্রবণ সফ্টওয়্যার সনাক্তকরণ - একটি অভিজ্ঞতা অভিজ্ঞতা" " সফটওয়্যার ইঞ্জিনিয়ারিং এসই -11, আইওইই লেনদেনগুলি এসই 11, নং 4 (এপ্রিল): 317-24।
  • ওয়ার্ড, উইলিয়াম টি। 1989. "ম্যাককেবের জটিলতা মেট্রিক ব্যবহার করে সফ্টওয়্যার ত্রুটি প্রতিরোধ।" হিউলেট প্যাকার্ড জার্নাল, এপ্রিল, -৪-68৮।

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

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