আমি কীভাবে কোডের লাইনের জীবনকাল অনুমান করতে পারি?


11

আমি ওপেন সোর্স প্রকল্পগুলিতে কোডের দীর্ঘায়ু বিশ্লেষণের একটি উপায় বের করার চেষ্টা করছি: এটি নির্দিষ্ট কোডের একটি লাইন কতক্ষণ সক্রিয় এবং ব্যবহারে রয়েছে।

আমার বর্তমান চিন্তাভাবনাটি হ'ল কোডটির আজীবন একটি রেখাটি যখন প্রথম প্রতিশ্রুতিবদ্ধ হয় তখনই শুরু হয় এবং নিম্নলিখিতগুলির মধ্যে একটি ঘটে গেলে শেষ হয়:

  • এটি সম্পাদিত বা মুছে ফেলা হয়েছে,
  • বিল্ডগুলি থেকে বাদ দেওয়া হয়েছে,
  • এর বিল্ডের মধ্যে কোনও কোড কিছু সময়ের জন্য বলা হয় না (বলুন, এক বছর)।

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

কোডের জীবনকালীন রেখাটি আর কী নির্ধারণ করবে?


2
"কোডের একটি নির্দিষ্ট লাইন কতক্ষণ সক্রিয় এবং ব্যবহারে থাকবে" আপনি কেন এটি একটি ভাল মেট্রিক বলে মনে করেন?
পিটার বি

উত্তর:


10

অ্যান্ডি ওজমেন্ট ২০০ 2006 সালে ওপেনবিএসডির দিকে একই ধরণের প্রশ্নের সাথে তাকিয়েছিল: দুধ বা ওয়াইন: বয়সের সাথে সফ্টওয়্যার সুরক্ষা কি উন্নত করে?

আপনি তাঁর সংজ্ঞা থেকে শিখতে পারবেন। এটি একটি আকর্ষণীয় উপসংহার সহ একটি খুব আকর্ষণীয় কাগজও, এটি একটি সফটওয়্যার পরিচালনার লরে অন্তর্ভুক্ত করা হয়নি:

.5.৫ বছর এবং পনেরটি প্রকাশের সময়কালে, ওপেনবিএসডি-তে প্রকাশিত ১৪০ টি দুর্বলতার মধ্যে %২% ভিত্তিগত ছিল : অধ্যয়নের শুরুতে কোডটিতে উপস্থিত ছিল ।

এর মধ্যে প্রাথমিক ভিত্তিক দুর্বলতার খবর জানাতে আড়াই বছরেরও বেশি সময় লেগেছিল। আমরা দেখেছি যে অধ্যয়ন করা চূড়ান্ত সংস্করণে উত্স কোডের %১% ভিত্তিগত: এটি 7.৫ বছর আগে প্রকাশিত প্রাথমিক সংস্করণ থেকে অপরিবর্তিত রয়েছে। ওপেনবিএসডি-তে মূলগত দুর্বলতার প্রতিবেদনের হার এভাবেই দুর্বলতার রিপোর্টিংয়ের সামগ্রিক হারকে ব্যাপকভাবে প্রভাবিত করতে পারে।

আমরা পরিসংখ্যানগতভাবে উল্লেখযোগ্য প্রমাণও পেয়েছি যে অধ্যয়নকালীন সময়ে ফাউন্ডেশনাল দুর্বলতার রিপোর্টের হার হ্রাস পেয়েছে। ফাউন্ডেশন সংস্করণে .6 67.।% দুর্বলতা পাওয়া গেছে বলে অনুমান করার জন্য আমরা একটি নির্ভরযোগ্যতা বৃদ্ধির মডেলটি ব্যবহার করেছি। প্রতিদিন রিপোর্ট করা প্রত্যাশিত সংখ্যার দুর্বলতার মডেলটির অনুমান অধ্যয়ন শুরুর সময় 0.051 থেকে কমে 0.04 এ দাঁড়িয়েছে।


1
+1 @ ব্রুস এডিগার: দুর্দান্ত, ধন্যবাদ - এখনই এটি দেখুন!
ভুল হয়েছে

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

1

আমি মনে করি না যে এর কোনও উত্তর আছে। এটি অত্যন্ত প্রকল্প নির্ভর। কিছু বছরের পর বছর ধরে আরও স্থিতিশীল, কেউ কেউ বছরের পর বছর ধরে আরও অস্থির / রিফ্যাক্টর / বিকশিত হয়।

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

এটি বলেছিল, আমি মনে করি এলওসিগুলির একটি ভাল অংশ চিরকাল বেঁচে থাকে।

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

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


0

কোডের একটি লাইন মুছে ফেলা বা বাদ দেওয়া অবশ্যই এর জীবনকাল শেষ হওয়ার ইঙ্গিত দেয়।

সম্পাদনা রেজিস্ট্রেশন, আমি এই প্রশ্ন জিজ্ঞাসা করব: এই বিবৃতি সম্পাদনার পরে একটি পৃথক ফলাফল উত্পাদন করে?

যদি উত্তর হ্যাঁ হয়, তবে আমি বলতে চাই যে পূর্ববর্তী বিবৃতিটি আর উপলভ্য নয়, অন্যথায় আমি এটিকে আগের বক্তব্যের ধারাবাহিকতা হিসাবে বিবেচনা করব।

ফলাফল পরিবর্তন করার উদাহরণ:

if ( a && b )

প্রতি:

if ( a || b )

আজীবন চালিয়ে যাওয়ার উদাহরণ:

foo.bar( baz );

প্রতি:

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