অনুশীলনীয় মেট্রিকের উপর ভিত্তি করে সফ্টওয়্যারটি ভাল বা খারাপ কিনা আপনি কীভাবে জানবেন?


18

আমাকে বর্তমানে এমন একটি প্রকল্পের দিকে নজর দিতে বলা হচ্ছে যা পাঁচ মাস আগে মূল বিকাশ শেষ করেছে, তবে এখনও উচ্চ স্তরের ত্রুটি রয়েছে। কি স্থানান্তরিত হয় প্রতি 10 টি ত্রুটিযুক্ত স্থির জন্য, আমরা কমপক্ষে 4 এবং কিছু ক্ষেত্রে 8 ত্রুটি বাড়ায়।

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

অবকাঠামোতে এটি আরও সংজ্ঞায়িত করা হয় যে যদি কিছু খারাপভাবে নির্মিত হয়, তবে এলওসি প্রতি ত্রুটির পাশাপাশি সফ্টওয়্যারগুলির জন্য আপনি কোন পরিমাপ ব্যবহার করতে পারেন?

পণ্যটি 4 মাস ধরে ত্রুটি ফিক্সিংয়ের পর্যায়ে রয়েছে এবং এখনও যথেষ্ট সমালোচনামূলক ত্রুটিগুলি সমাধান করেনি। আমরা নতুন কার্যকারিতা ইনজেকশন দিচ্ছি না, কেবলমাত্র রিগ্রেশন সমস্যার সমাধান করছি ing

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

সুতরাং যখন আপনি কোনও তৃতীয় পক্ষের কোনও পণ্য গ্রহণ করেন এবং এটি সমর্থন করার জন্য আপনাকে জিজ্ঞাসা করা হয়, আপনি মানকে সংজ্ঞায়িত করতে কোন স্বীকৃতি মানদণ্ড ব্যবহার করবেন?

আমাদের লিড বিকাশকারীকে প্রতি রিলিজের কোডের পিয়ার পর্যালোচনা করার পাশাপাশি আরও কী করা যায় তা নিশ্চিত নন?


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


ত্রুটিগুলি অনেক কারণেই আসে - নির্দিষ্টকরণের সাথে ত্রুটি, পরীক্ষার সাথে ত্রুটি, অস্পষ্ট / পরিবর্তনের প্রয়োজনীয়তা। এগুলির সবগুলিই বিকাশকারী ত্রুটির জন্য দায়ী করা যায় না।
রবি ডি

আর্ট রূপকবিদ্যার বিতর্কগুলি, আলোচনাগুলিতে
gnat

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

উত্তর:


23

আপনি না।

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

স্থিতাবস্থা দ্বারা যুক্তিযুক্ত

কিলিয়ান ফথ যেমন উল্লেখ করেছে, "ভাল" সফ্টওয়্যারটির জন্য যদি কোনও সাধারণ ব্যবস্থা থাকে তবে আমরা সকলেই এটি ব্যবহার করতাম এবং প্রত্যেকেই এটির দাবি করবে।

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

পাল্টা বুদ্ধি দ্বারা যুক্তিযুক্ত

ইতিমধ্যে কিলিয়ান ইঙ্গিত দিয়েছিল এবং আরও সাধারণভাবে "প্রতিটি মেট্রিক ক্যান এবং খেলানো হবে" হিসাবে চিহ্নিত হয়।

মেট্রিক খোলার অর্থ কী? এটি বিকাশকারীদের জন্য একটি মজাদার গেম: সত্যই বাজে জিনিসগুলি করার সময় আপনি নিশ্চিত করেন যে মেট্রিক মানগুলি খুব ভাল দেখাচ্ছে।

ধরা যাক আপনি এলওসি প্রতি ত্রুটিগুলি পরিমাপ করেন। আমি কিভাবে এটি খেলতে যাচ্ছি? সহজ - কেবল আরও কোড যুক্ত করুন! বোকা কোডটি তৈরি করুন যা 100 টি লাইনের উপরে অ-অভিযানের ফলাফল দেয় এবং হঠাৎ আপনার এলওসি-তে কম ত্রুটি থাকে। সর্বোপরি: আপনি আসলে সফ্টওয়্যারটির মান হ্রাস করেছেন।

সরঞ্জামের ঘাটতিগুলি আপত্তিজনকভাবে ব্যবহার করা হয়, সংজ্ঞাগুলি তাদের সর্বাধিকের দিকে প্রসারিত হয়, সম্পূর্ণ নতুন উপায়ে উদ্ভাবিত হয় .. মূলত, বিকাশকারীরা সত্যই স্মার্ট লোক এবং আপনার দলে কেবলমাত্র একজন বিকাশকারীকে মেট্রিক খেলে মজা করা উচিত, তবে আপনার মেট্রিকগুলি প্রশ্নবিদ্ধ হবে।

এটি মেট্রিক্স সবসময় খারাপ থাকে তা বলার অপেক্ষা রাখে না - তবে এই মেট্রিকগুলির প্রতি দলের মনোভাব গুরুত্বপূর্ণ। বিশেষত, এর দ্বারা বোঝা যায় এটি কোনও সাবকন্ট্রাক্টর / তৃতীয় পক্ষের বিক্রেতার সম্পর্কের জন্য ভালভাবে কাজ করছে না।

ভুল টার্গেট করে যুক্তি দেওয়া হচ্ছে

আপনি যা পরিমাপ করতে চান তা হ'ল সফটওয়্যার মানের। আপনি যা পরিমাপ করেন তা হ'ল এক বা একাধিক মেট্রিক।

আপনি কী পরিমাপ করেন এবং কী বিশ্বাস করেন এটি আপনাকে জানাতে পারে তার মধ্যে একটি ব্যবধান রয়েছে। এই ফাঁকটি এমনকি বিশাল আকারের।

এটি আমাদের চারপাশের সমস্ত ধরণের ব্যবসায়ের ক্ষেত্রে সর্বদা ঘটে। কেপিআই (মূল পারফরম্যান্স সূচক) এর ভিত্তিতে সিদ্ধান্ত কখনও দেখেছেন? এটি ঠিক একই সমস্যা - আপনি একটি সংস্থা ভাল করতে চান তবে আপনি অন্য কিছু পরিমাপ করেন।

পরিমাণমত দ্বারা যুক্তি

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

শুধুমাত্র মেট্রিকের মাধ্যমে সফ্টওয়্যার মানের বিচার করা এবং আপনি যে পরিমাণটি মাপ দিতে পারেন না এমন অংশগুলির প্রতি দৃষ্টি নিবদ্ধ করা অবশ্যই কার্যকরভাবে কাজ করবে না।

সম্পাদনা:

সারসংক্ষেপ

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

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

আপনি সফ্টওয়্যার এ পরিমাপ করেন এবং মেট্রিকগুলি সত্যই খারাপ হয়। তারপরে আপনি নিশ্চিত হতে পারেন যে কোডটির মানটি খারাপ। আপনি সফ্টওয়্যার বি পরিমাপ করেন এবং মেট্রিকগুলি ঠিক আছে, তবে কোড মানের সম্পর্কে আপনার কোনও ধারণা নেই cl "মেট্রিক ভাল = কোড ভাল" ভাবতে বোকা বোধ করবেন না যখন এটি সত্যই "কোড ভাল => মেট্রিক্স ভাল" good

সংক্ষেপে, আপনি মানের সমস্যাগুলি খুঁজতে মেট্রিকগুলি ব্যবহার করতে পারেন, তবে নিজেই মানের নয়।


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

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

1
আমি সম্মত হই যে সামগ্রিক সফ্টওয়্যার গুণমানটি একটি মেট্রিকের সাথে পরিমাপ করা কঠিন, তবে এমন বেশ কয়েকটি মেট্রিক রয়েছে যা নির্দেশিত বা স্বল্প মানের দিকে প্রবণতা অর্জন করতে পারে।
জন রেয়নর

ঠিক আছে, একটি মেট্রিক গেমিং সমস্যা হতে পারে। তবে আমি মনে করি সঠিক কাজ করার জন্য শাস্তি দিলে আরও খারাপটি হ'ল। আমি কেবলমাত্র এক লাইনের লাইব্রেরি কলের সাথে 100 টি লাইন খারাপ কোডকে প্রতিস্থাপন করে একটি ত্রুটি স্থির করেছি এবং আপনি আমাকে বলছেন যে আমি আপনার মেট্রিক অনুসারে কোডটি আরও খারাপ করে দিয়েছি? এটি আমাকে একটি ভাল কাজ করতে উত্সাহিত করবে না।
সুইভ

আপনি যদি "শাস্তিপ্রাপ্ত" হন তবে আপনি যেভাবেই মেট্রিকগুলি সঠিকভাবে ব্যবহার করছেন না। প্রোগ্রামার উত্পাদনশীলতার সাথে মেট্রিকগুলি বেঁধে ফেলা একটি নির্দিষ্ট, যদিও সাধারণ, ব্যর্থ হওয়ার উপায়।
ফ্র্যাঙ্ক

13

হ্যাঁ, আপনি কিছুটা মেট্রিক দেখে কোডটির মানগত সমস্যা আছে তা বলতে পারেন।

আরও সুনির্দিষ্টভাবে, কোড বেসে একটি জটিলতা বিশ্লেষণ সরঞ্জাম চালনা করুন এবং কোডটি ভাল বা খারাপ কিনা তা আপনি একটি ধারণা পাবেন।

উদাহরণস্বরূপ, আপনি উত্স মনিটর চালাতে পারেন ।

এটি আপনাকে কী বলবে তা হল কোডটি কতটা জটিল। আমি যে সমস্যাজনিত সিস্টেমের অভিজ্ঞতা পেয়েছি তার সংখ্যা খারাপ ছিল বলে আমি বলতে পারি। গ্রহণযোগ্য সীমা ছাড়াই 10 থেকে 100s পদ্ধতিতে জটিলতা। ভয়াবহ সংখ্যা। ভয়াবহ জটিলতা, বাসা বাঁধানো, গভীরতা ইত্যাদির ফলে এটি প্রচুর সমস্যা, ধ্রুবক উচ্চ ত্রুটির হার, অন্য কিছু ভঙ্গ না করে পরিবর্তন করা শক্ত, ইত্যাদি ঘটায় will

আর একটি বিষয় হ'ল ত্রুটি। সময়ের সাথে সাথে সিস্টেমটি স্থিতিশীল হওয়া উচিত। আদর্শভাবে নতুন ত্রুটিগুলি শূন্যের দিকে ঝোঁকানো বা স্বল্প সংখ্যায় সমতল হওয়া উচিত, যার অর্থ সময়ের সাথে সাথে নতুন এবং বর্তমান ত্রুটি হ্রাস করা উচিত।

প্লটটি এর মতো দেখতে হবে:

সময়ের সাথে সাথে ত্রুটিগুলি ওভার টাইমস ত্রুটি

এগুলি যদি অবিচ্ছিন্ন থাকে বা বাড়তে থাকে তবে সফ্টওয়্যারটি ভাল নয়। আপনার মাত্র 4 মাস, তাই আমি এটিকে আরও কয়েক মাস এক বছরে দেব। 6 মাস থেকে এক বছর পরে যদি আপনার যদি ক্রমাগত ত্রুটিগুলি দেখা দেয় তবে এটি খারাপ মানের। আপনার দলটি কাদা একটি অন্য বল বিকাশ ।

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

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

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

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

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


3
আপনি লিখেছেন: "আমার ব্যক্তিগত মেট্রিকটি হ'ল আমি যদি কোডটির দিকে তাকিয়ে থাকি এবং এটি কঠোরভাবে অনুসরণ করা হয় বা আমাকে বোবা অনুভব করে, বা আমার মনে হয় আমি যুক্তিটি বের করার জন্য অনেক মস্তিষ্কের চক্র নষ্ট করছি, তবে এটি খারাপ কোড"। আমি যত বেশি বয়সী হই ততই আমি দৃ strongly়ভাবে এর সাথে একমত হই agree আগে আমি ভেবেছিলাম এটি একটি আড়ম্বরপূর্ণ দৃষ্টিকোণ। যাইহোক, এখন যেহেতু আমি অনেকগুলি আপাতদৃষ্টিতে জটিল প্রক্রিয়াগুলি মার্জিত কোডে রিফেক্টর করে দেখেছি আমি বুঝতে পেরেছি যে হার্ড কোড প্রায় সবসময়ই আরও পরিষ্কারভাবে লেখা যেতে পারে।
ইভান

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

কোড ভাল বা খারাপ কিনা এই সম্পর্কে অন্ত্রের অনুভূতিগুলি খারাপ কোডটিকে স্পট করতে সহায়তা করতে পারে তবে তারা খুব কমই মেট্রিক rics এবং বিন্যাস এবং পদ্ধতি / ভেরিয়েবল নামকরণের ভিত্তিতে "খারাপ কোড" সনাক্ত করার জন্য স্বয়ংক্রিয় প্রক্রিয়াগুলি কোনও দলের মধ্যে ধারাবাহিক নামকরণের কনভেনশনগুলি প্রয়োগ করা (যা ভাল যখন প্রকৃত কোড মানের গ্যারান্টি দেয় না বা পরিমাপ করে না) ব্যতীত কিছুই করে না।
6:30

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

3

মেট্রিকগুলির সাথে দুঃখজনক বিষয়টি হ'ল আপনি আপনার মেট্রিকগুলির ফলাফলের মানগুলি উন্নত করতে পারেন তবে তাদের দ্বারা পরিমাপ করার মানটিটি নয় ...

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

যদি আপনার সোর্স কোডে অ্যাক্সেস থাকে তবে আপনি স্ট্যাটিক কোড বিশ্লেষণ চালাতে পারেন। নেট প্রকল্পগুলির জন্য, আপনি উদাহরণস্বরূপ FxCop বা ReSharper ইন্সপেক্টকোড ব্যবহার করতে পারেন। বিকাশকারী দল যখন সঠিকভাবে ব্যবহার করবে তখন সরঞ্জামগুলি মান উন্নত করতে সহায়তা করবে। তবে অবশ্যই সতর্কতাগুলি না বুঝে তা অপসারণের জন্য কিছু "ফিক্স" সম্ভব are

আপনি স্বয়ংক্রিয় পরীক্ষা / ইউনিট টেস্টগুলি দেখতে পারেন: কোড কভারেজটি কতটা ভাল? তবে পরীক্ষাগুলি আসলে কোডটি পরীক্ষা করে কিনা, বা কেবল একবার এটি কার্যকর করা হয়েছিল তা একা কভারেজ আপনাকে জানায় না।

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


3

ত্রুটিযুক্ত ইনজেকশনের মতো মেট্রিক সংগ্রহ করার পাশাপাশি আপনার একটি বিষয় লক্ষ্য করা উচিত যা ত্রুটিগুলির উত্স খুঁজে বের করছে। প্রায়শই এটি নির্দিষ্টকরণের সাথে সম্পর্কিত হয়।

মূলত, স্পেসিফিকেশনের মধ্যে একটি ত্রুটি, স্পিফিকেশনের একটি দ্বিধাদ্বন্দ্ব, ইমপ্লান্টগুলি সিদ্ধান্ত নেওয়ার জন্য ছেড়ে যায় বা এটি বাস্তবায়নের ক্ষেত্রে একটি বাগ।

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


1
+1 দুর্দান্ত উত্তর - বাগের উত্সটি সম্বোধন করতে ব্যর্থ হওয়ায় একই উত্স থেকে আরও বাগের জন্য দরজাটি উন্মুক্ত রেখে দিচ্ছে
রবি ডি

3

নীচে, জানার উপায় নেই।

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

এই প্রশ্নের জন্য আমি যে ধারণাটি করি তা: কোড এবং সফ্টওয়্যার এর মধ্যে পার্থক্য রয়েছে। আমি কোনও সফ্টওয়্যারকে কোনও ক্লায়েন্ট / ব্যবহারকারী কোনও সমস্যা সমাধানের জন্য যা ব্যবহার করে তা সংজ্ঞায়িত করি, যখন কোডটি সফ্টওয়্যারটির বিল্ডিং উপাদান।

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

কোডটি (সাধারণত) অনুভূতিক মেট্রিকগুলির সাথে পরিমাপ করা যায় । তবে ব্যাখ্যাটি মানের জন্য 'হ্যাঁ / না' নয়, এমনকি '0 থেকে এন' এর স্কেল পর্যন্ত। মেট্রিকগুলি একটি মানের বিরুদ্ধে পরিমাপ করে। সুতরাং, মেট্রিকগুলি মান দ্বারা নির্ধারিত উদ্বেগের ক্ষেত্রগুলি সন্ধান করতে পারে, তবে উদ্বেগের জায়গাগুলির অনুপস্থিতি প্রমাণ নয় যে এটি মানের কোড। উদাহরণস্বরূপ, দরকারী মেট্রিক: এটি কি সংকলন করে? না -> মানের নয়। হ্যাঁ -> ??? এটি ইউনিট পরীক্ষা পাস? কোন? হতে পারে? (কারণ, ইউনিট টেস্ট মানের কোড?), হ্যাঁ -> ???

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

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


2

আমি তাদের প্রক্রিয়াটি নিরীক্ষণ (এবং বিচ্যুতি খুঁজছি) দ্বারা এটি পরিমাপ করব।

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

আমি ত্রুটিগুলি তাদের মুক্তি প্রক্রিয়াটির মধ্য দিয়ে গিয়েছিল এমন পরিস্থিতিতে প্রতিক্রিয়াতে তারা কীভাবে তাদের প্রক্রিয়াগুলিতে পরিবর্তন করেছে তার প্রমাণও সন্ধান করব।

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

যদি তারা এই নিরীক্ষাটি পাস করে এবং ক্রমাগত তাদের প্রক্রিয়াটি উন্নতি করে তবে তাদের আউটপুটটির ধারাবাহিকতা সময়ের সাথে সাথে উন্নতি হওয়ার সম্ভাবনা রয়েছে।

এটি যদি এটি ঠিক করে না, তবে সম্ভবত তাদের একটি কোড আর্কিটেকচারাল সমস্যা রয়েছে যা তাদের বর্তমান কোড বেসকে প্রসারণ এবং পরীক্ষার ব্যবস্থা করে, এমন ক্ষেত্রে কোনও ভাল বিকল্প নেই।


এটি আমি যে ধরণের উত্তর চেয়েছিলাম তা এই।
যাযাবর প্রযুক্তি

0

আপনি যদি সম্পূর্ণ স্বয়ংক্রিয় পরিমাপের সন্ধান করছেন, তবে আমি এই লোকদের প্রস্তাব দিই: সফটওয়্যার উন্নতি গোষ্ঠী

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

এখানে চিত্র বর্ণনা লিখুন

অনুশীলনে তাদের সমস্ত মেট্রিকের বর্ণনা দিয়ে তাদের কাছে একটি শালীন বই রয়েছে যা পড়ার মতো: 'বিল্ডিং মেনটেইনটেবল সফ্টওয়্যার'

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