কোড স্থায়িত্ব পরিমাপের জন্য উত্স কোড মেট্রিক?


17

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

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

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



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

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

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

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

উত্তর:


17

মাইকেল ফেদার তার একটি পরিমাপ বর্ণনা করেছেন যে, " ক্লাসের অ্যাক্টিভ সেট "।

তিনি "বদ্ধ "দের বিরুদ্ধে যোগ হওয়া ক্লাসের সংখ্যা পরিমাপ করেন। শ্রেণি ক্লোজারটি বর্ণনা করে:

একটি শ্রেণি সেই তারিখে বন্ধ রয়েছে যে তারিখে আজ অবধি এটিতে আর কোনও পরিবর্তন হয় না।

তিনি চার্ট তৈরি করতে এই ব্যবস্থাগুলি ব্যবহার করেন: সক্রিয় ক্লাস চার্ট

দুটি লাইনের মধ্যবর্তী ব্যবধানের চেয়ে ছোট সংখ্যাটি আরও ভাল।

আপনি আপনার কোড বেসে অনুরূপ পরিমাপ প্রয়োগ করতে সক্ষম হতে পারেন। সম্ভবত ক্লাসের সংখ্যা কোডের লাইনের সংখ্যার সাথে সম্পর্কিত হয়। এমনকি ক্লাস পরিমাপের জন্য একটি লাইন অফ-কোড অন্তর্ভুক্ত করার জন্য এটি প্রসারিত করাও সম্ভব হতে পারে, যদি আপনার কিছু বড় একঘেয়েমি ক্লাস থাকে তবে গ্রাফের আকার পরিবর্তন করতে পারে।


4

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

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

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

দুর্ভাগ্যক্রমে, আমার বক্তব্য প্রমাণ করার মতো সাহিত্য আমার নেই। এটি সম্পূর্ণরূপে ভাল (এবং এত ভাল নয়) কোড বেসগুলিতে উত্স ব্যবহার করার আমার অভিজ্ঞতার ভিত্তিতে।

যদি আপনি গিট বা এসএনএন ব্যবহার করে থাকেন এবং আপনার উত্স সংস্করণ> = 0.39 হয় তবে এটি প্রকল্প ফোল্ডারে চলমান উত্সের মতোই সহজ।


উত্স এছাড়াও দুর্দান্ত সরঞ্জাম বলে মনে হচ্ছে! (+1)
জর্জিও

1
আমি এই উত্তরে হোঁচট খেয়েছি, তারপরে পরের ছয় ঘন্টা গোরসের সাথে খেলতে কাটিয়েছি। আমি নিশ্চিত নই যে এটি +1 বা a -1 প্রাপ্য, তবে অভিশাপ, এটি একটি দুর্দান্ত সরঞ্জাম।
রনু

@ রনু: আপনি কাস্টম সময়সীমার মধ্যে সংগ্রহস্থলের অবস্থা কল্পনা করতে উত্স ব্যবহার করতে পারেন। এর মুল বক্তব্যটি এটি আপনার কোড বেসে সময়ের সাথে ক্রিয়াকলাপটিকে ভিজ্যুয়ালাইজ করে। তথ্যটি কীভাবে ব্যাখ্যা করা সহজ তা অনেকগুলি বিষয়ের উপর নির্ভর করে যেমন আমি উপরের উত্তরটিতে ব্যাখ্যা করেছি। হ্যাঁ, আপনি যদি "বড় ছবি" চান তবে এটি একটি আশ্চর্যজনক সরঞ্জাম, সুতরাং আমার কাছে মনে হয় এটি একটি +1 এর উপযুক্ত
কার্ল

হ্যাঁ, যখন আমি "ছয় ঘন্টা" বলেছিলাম, এর অর্থ আমি এই সময়টির জন্য একটি গ্রোস সিম চালাতাম না ... কেবলমাত্র আমি প্রচুর অপশন নিয়ে খেলেছি, এফএফপিপেতে পাইপ করেছি, সম্ভবত একটি মহাকাব্য সাউন্ডট্র্যাক ইত্যাদি যুক্ত করেছে It বেশ খরগোশের গর্ত ছিল। :)
রনু

লেমে অনুমান। সাউন্ডট্র্যাকটি ছিল লুপযুক্ত হারলেম সাফল্য;)
কার্ল

0

কোড স্থায়িত্বের জন্য একটি সূচক হিসাবে পরিবর্তিত লাইনের ফ্রিকোয়েন্সি ব্যবহার কমপক্ষে প্রশ্নবিদ্ধ।

প্রথমে, পরিবর্তিত লাইনের সময়ের সাথে সাথে বিতরণটি প্রকল্পের সফ্টওয়্যার পরিচালনার মডেলের উপর নির্ভর করে। বিভিন্ন পরিচালনার মডেলগুলিতে দুর্দান্ত পার্থক্য রয়েছে।

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

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


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

বিটিডাব্লু, কোডটি অস্থির হতে পারে কারণ বিকাশকারীরা খারাপ, তবে প্রয়োজনীয়তাগুলি পরিষ্কার নয় এবং প্রকল্পটি এখনও প্রোটোটাইপিং পর্যায়ে রয়েছে।
জর্জিও

@ জর্জিও: অবশ্যই আপনি ঠিক বলেছেন। তবে এটি হ'ল আমি যা লিখেছি: পরিবর্তিত রেখার গণনাটি অনেকগুলি বিষয়ের উপর নির্ভর করে। তাদের মধ্যে কিছু কোড স্থায়িত্ব সম্পর্কিত, কিছু না not কম লোক - কম বিদ্যুৎ - কম আলো - অধিক লিঙ্গ অনুমান করে কত লোক যৌন মিলন করে, বৈদ্যুতিক শক্তি পরিমাপ করে তা গণনা করার চেষ্টা করার মতো। যদিও এটি প্রমাণিত যে জন্মের হারটি বড় কালো আউটগুলির পরে বাড়ছে। ;)
জনফাউন্ড

-1

দৃust়তা হ'ল এই নির্দেশাবলী প্রকাশের জন্য ব্যবহৃত পাঠ্যের পরিমাণ, ভার্বোসটি, ক্ষুদ্রতা, ব্যাকরণগত নির্ভুলতার সাথে নয়, নির্দেশের সঠিক কাজের সাথে সম্পর্কিত একটি শব্দ term

প্রকৃতপক্ষে সিনট্যাক্সটি গুরুত্বপূর্ণ এবং অবশ্যই এর বাইরে কিছু হতে পারে, কারণ নির্দেশগুলির 'মেট্রিকস' দেখে নির্দেশিকাগুলি পছন্দসই ফাংশনের সাথে সম্পর্কিত, নীচের অংশে চা পাতার প্যাটার্নটি পড়ে আপনার ভবিষ্যতের পরিকল্পনা করার অনুরূপ is তুমি চা কাপ

দৃust়তা পরীক্ষার মাধ্যমে পরিমাপ করা হয়। ইউনিট পরীক্ষা, ধোঁয়া পরীক্ষা, স্বয়ংক্রিয় প্রতিরোধ পরীক্ষা; পরীক্ষা, পরীক্ষা, পরীক্ষা!

আপনার প্রশ্নের আমার উত্তর হ'ল আপনি দৃ one়তার একটির উত্তর খুঁজতে ভুল পদ্ধতি ব্যবহার করছেন। এটি একটি লাল হেরিং যে কোডের রেখার অর্থ কোড দখল লাইনগুলির চেয়ে বেশি কিছু anything আপনি কেবল তখনই জানতে পারবেন যে কোডটি আপনি এটি করতে চাইলে কি করে যদি আপনি পরীক্ষা করেন যে এটি যা আপনার প্রয়োজন হয় তা করে।

দয়া করে যথাযথ পরীক্ষার জোড়ায় দর্শন করুন এবং কোড মেট্রিক রহস্যবাদ এড়ান।

শুভ কামনা.


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

আমি আপনার সাথে তর্ক করতে চাই না তবে সম্মানের সাথে কোড মেট্রিকের অর্থহীনতার বোকামি থেকে দূরে আপনাকে গাইড করুন। আমি আপনাকে প্রশ্নটি পুনরায় পাঠ করি এবং আপনার উদাহরণগুলি সমস্ত কোডের লাইন পরিবর্তিত হওয়ার এবং এর ফলস্বরূপ দৃ a়তার মধ্যে সম্পর্ক নির্ধারণের আকাঙ্ক্ষাকে ইঙ্গিত করে। আমি এটি পেয়েছি যে আপনি যত বেশি শব্দ লিখবেন তত বেশি টাইপ করার সম্ভাবনা রয়েছে। তবে আপনি যা বলছেন তার নীতিবিরোধী আমি তার বিরোধিতা করছি যে আমাকে অবশ্যই আপনার পথ ত্যাগ করার পক্ষে আপনার পক্ষে দৃ strongly়তার সাথে বেরিয়ে আসতে হবে। ভাল পরীক্ষার অনুশীলন = দৃust়তার ভাল সম্ভাবনা।
সাসাফরাস_ওয়ট

"ভাল পরীক্ষার অভ্যাসগুলি = দৃust়তার ভাল সম্ভাবনা" ": আমি সম্পূর্ণরূপে একমত। এ কারণেই আমি পরামর্শ দিচ্ছি যে সাম্প্রতিক সময়ে পরিবর্তিত একটি কোডের টুকরোগুলি আবার সঠিকভাবে পরীক্ষা করা দরকার যা আমরা নিশ্চিত হতে পারি যে এটি সঠিক।
জর্জিও

স্থিতিশীলতার বেশ কয়েকটি সংজ্ঞা রয়েছে এবং এর মধ্যে একটি হ'ল আপনি যা বিতর্ক করছেন। এটি আমি তৈরির একটি আলাদা শব্দার্থক ব্যাখ্যা। আমি স্থির হয়ে দাঁড়ানোর অর্থ গ্রহণ করেছি, এটি "পরিবর্তনের প্রতিরোধী" না হয়ে "চরম পরিবর্তনের বিষয় নয়"
ডেভ হিলিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.