মূল বিকাশ বনাম কী পরিমাণ সময় ব্যয় করা উচিত? [বন্ধ]


26

এই প্রশ্নটি একটু বিমূর্ত তবে আমি আশা করছি যে কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে।

আমার প্রশ্ন হ'ল কোনও আসল বিকাশের সময়ের সাথে সম্পর্কিত কোনও সফ্টওয়্যার প্রকল্পের বাগগুলিতে উত্সর্গ করতে কত সময় আশা করতে পারে? আমি বুঝতে পারি যে নির্ধারিত কারণগুলির মধ্যে একটি বিশাল সংখ্যা রয়েছে তবে আমি একটি সাধারণ বা গড় ভাঙ্গার আশা করছিলাম।

উদাহরণস্বরূপ, যদি প্রকল্প এগুলিকে 40 ঘন্টা এবং অতিরিক্ত 10 ফিক্সিং বাগগুলি সময় লাগে তবে এই প্রকল্পের 4: 1 অনুপাত হবে।

যদি অন্য প্রকল্প (বি) সম্পূর্ণ করতে 10 ঘন্টা সময় নেয় তবে বাগগুলিতে আরও 8 টি থাকে তবে এর 5: 4 অনুপাত থাকবে।

এটি কি নথিভুক্ত / গবেষণা ধারণা?

হালনাগাদ

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


এটি উন্নয়ন প্রচেষ্টার মানের উপর নির্ভর করে। আরও গুণমান কম বাগ ফিক্সিং নেতৃত্ব দেয়।
থমাসএক্স

উত্তর:


16

ত্রুটি-ফিক্সিংয়ে বরাদ্দকৃত মোট ক্ষমতার ভারসাম্য শতাংশ ত্রুটিযুক্ত ইনজেকশন হারের সমান

অনেকগুলি এই হারকে অবশ্যই প্রভাব ফেলতে পারে, তাদের মধ্যে অবশ্যই: দলটি কী ধরণের পণ্য বিকাশ করছে, কোন প্রযুক্তি এবং প্রযুক্তিগত অনুশীলন তারা ব্যবহার করে, দলের দক্ষতা স্তর, সংস্থা সংস্কৃতি ইত্যাদি,

টিম বি বিবেচনা করে, তারা যদি প্রতি 10 ইউনিট তারা সম্পন্ন কাজের জন্য গড়ে 8 টি ইউনিট পুনরায় তৈরি করে, তবে 8 টি ইউনিটকে কাজ করা পুনরায় কাজের 6.4 ইউনিট তৈরি করবে। জ্যামিতিক অগ্রগতির যোগফল হিসাবে তাদের শেষ পর্যন্ত যে ব্যয় করতে হবে তা আমরা অনুমান করতে পারি:

10 + 8 + 6.4 + 5.12 + ...

সময়ের সাথে ত্রুটির সংখ্যা তাত্পর্যপূর্ণভাবে হ্রাস পাবে, তবে টিম বি তাদের খাতায় এমন গুণাগুণ রয়েছে যে এটি খুব ধীরে ধীরে শূন্যে চলে যাবে। প্রকৃতপক্ষে, উপরের সিরিজের প্রথম তিনটি পদটির যোগফল কেবল 24.4; প্রথম পাঁচটির, 33.6; প্রথম 10, 45 এর; সম্পূর্ণ সিরিজের, 50. সুতরাং, টিম বি সংক্ষিপ্তসার: ত্রুটি ইনজেকশন হার, 0.8; বৈশিষ্ট্য বিকাশ, 10/50 = 20%; ত্রুটি-নির্ধারণ, 80%। 20/80 হ'ল তাদের টেকসই ক্ষমতা বরাদ্দ।

বিপরীতে, দল টি আরও ভাল আকারে আছে। তাদের অগ্রগতি দেখে মনে হচ্ছে:

40 + 10 + 2.5 + 0.625 + ...

এই সিরিজের যোগফল ৫৩/১৩, সুতরাং টিমের এগুলির বৈশিষ্ট্য বিকাশের বরাদ্দ 40 / (53/3) = 75% এবং ত্রুটি-ফিক্সিং বরাদ্দ 25%, যা তাদের ত্রুটিযুক্ত ইনজেকশন হার 10/40 = 0.25 এর সাথে মেলে ।

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

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

"... 2000 সালে ... উত্তর আমেরিকার দলগুলির জন্য পরিমাপ করা সফ্টওয়্যার গুণমান ... প্রতি ফাংশন পয়েন্ট 6 টি ত্রুটি থেকে 100 ফাংশন পয়েন্টের মধ্যে 3 এরও কম ছিল, 200 থেকে 1 এর পরিসীমা, মিডপয়েন্ট প্রায় প্রতি 1 ত্রুটি ০..6 থেকে ১.০ ফাংশন পয়েন্টস imp এটি ইঙ্গিত দেয় যে দলগুলির পক্ষে 90 শতাংশের বেশি প্রচেষ্টা ব্যর্থতা নির্ধারণের জন্য ব্যয় করা সাধারণ বিষয় "" তিনি একটি কোম্পানির তাঁর সহকর্মী দ্বারা সরবরাহিত একটি উদাহরণ তুলে ধরেছেন যা 90% সময় তাদের বাগ ঠিক করতে ব্যয় করে s ।

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

যুক্তিটির রেখার মূল শব্দগুলি যেগুলি আমি এখানে উপস্থাপনের চেষ্টা করছি তা হ'ল "ইকুলিব্রিয়াম" এবং "টেকসই"। যদি আমরা টেকসইতা দূরে সরিয়ে রাখি, তবে এই সংখ্যাগুলিকে ঠকানোর একটি সুস্পষ্ট উপায় রয়েছে: আপনি প্রাথমিক কোডিংটি করেন, তারপরে অন্য কোথাও কোডে যান এবং অন্যকে রক্ষণাবেক্ষণ ছেড়ে যান। বা আপনি প্রযুক্তিগত debtণ আপ এবং একটি নতুন মালিক এ এটি আনলোড।

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

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


8

দুর্ভাগ্যক্রমে আমি বিশ্বাস করি যে এই অনুপাত একটি প্রদত্ত প্রকল্পে অত্যন্ত পরিবর্তনশীল। এটি আপনার পরিবেশ, ভাষা, সরঞ্জাম, দলের আকার এবং অভিজ্ঞতা দ্বারা তাত্পর্যপূর্ণভাবে প্রভাবিত হবে।


8

আপনার বাগ থেকে কেবল তখনই ব্যয় করা উচিত যদি আপনি ঠিক করেন যা আপনি যা বিনিয়োগ করেন তার থেকে বেশি।

নিম্নলিখিতগুলির মতো একটি ম্যাট্রিক্স ব্যবহার করুন (বাগটি ঠিক করার জন্য অনুভূমিক - সময় প্রয়োজন, উল্লম্ব - বাগের ধরণ - ব্যবহারকারীদের উপর প্রভাব)

              | Few hours | Many hours
--------------+-----------+-------------------------
Minor problem | Might fix | Fix only if time permits
--------------+-----------+-------------------------
Major problem | Fix       | Fix

সমস্যার উদাহরণ:

              | Few hours                            | Many hours
--------------+--------------------------------------+---------------------------------
              | Window moves 1px every 10            | Windows is painted incorrectly 
Minor problem | times when you open the application. | every 100th time the app is open.
              | Fix is: handle window resize event   | Fix: Change the graphical engine.
--------------+--------------------------------------+---------------------------------
Major problem | Application crashes when opening     | Poor performance when >100 users 
              | SQL connection.                      | are connected (unusable app)
              | Fix: Fix invalid query + add nice    | Fix: change architecture + DB
              | message                              |

বিভিন্ন স্তরের তীব্রতা, প্রচেষ্টা, ঝুঁকি ইত্যাদির সাথে ম্যাট্রিক্স আরও জটিল হতে পারে

এমনকি আপনি প্রতিটি বাগের জন্য একটি র‌্যাঙ্ক তৈরি করতে পারেন এবং র‌্যাঙ্কিংয়ের ভিত্তিতে এগুলি ঠিক করতে পারেন। কিছুটা এইরকম:

Bug priority = Risk x Severity x Effort

* আপনি কোন স্কেল বেছে নেবেন তার উপর নির্ভর করে কিছু অপারেটরের জন্য (1-এক্স) হতে পারে :)

সুতরাং, আপনার প্রশ্নের উত্তর দিতে: বাগের ধরণ, উপলব্ধ সময় / বাজেট ইত্যাদির উপর নির্ভর করে depends


এখন তা প্রয়োগের চিন্তাভাবনা!
সি সি

3

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

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

অভিজ্ঞতা থেকে, আমি বলি যে এটি এমন কিছু যা সর্বদা আন্ডাররেটেড এবং খুব সহজেই "মূল প্রকল্প" এর চেয়ে একই পরিমাণে ঘন্টা ব্যয় করতে পারে।


অভিনন্দন! এছাড়াও, আপনার প্রোফাইল ছবির লোকটি কে? এটা নিকোলা টেসলা নয়
সি সি

না, হা হা, এটা Orville গিবসন siminoff.net/pages/gibson_background.html
Khelben

3

সত্যিকারের সঠিক উত্তরটি বাগ কোডগুলিতে শূন্য ঘন্টা হবে কারণ আপনার কোডটি নিখুঁত। :-)

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


আমাকে বহুবার এই মেট্রিকের জন্য জিজ্ঞাসা করা হয়েছে। অনুপাতটি 1: 0 হওয়ার চেয়ে তাদের অনুপাতের চেয়ে আরও বেশি ম্যানেজমেন্ট আপনাকে জিজ্ঞাসা করে।
darreljnz

2

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


1

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

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


1

সমালোচনামূলক সফটওয়্যারগুলিতে, এ 1: 1 অনুপাত অস্বাভাবিক নয়। একক ইউনিট পরীক্ষার জন্য, আমি সূচকগুলি প্রতি 10 লাইনের কোডের জন্য ইউনিট পরীক্ষার 1 দিনের উল্লেখ দেখেছি।


1

আমি মনে করি যে এই প্রশ্নটি পক্ষপাতদুষ্ট: এটি অনুমান থেকে শুরু হয় যে বাগ সংশোধন করা নতুন কার্যকারিতা বিকাশের চেয়ে একই ধাপ । এই ক্ষেত্রে না হয়.

একজন ভাল বিকাশকারী ডিবাগিং কোডে প্রচুর সময় ব্যয় করবে না কারণ তার কোডটি শুরু থেকেই বাগ-মুক্ত থাকবে। একজন খারাপ বিকাশকারী তার কোডটি ডিবাগ করতে অনেক সময় ব্যয় করবে কারণ তিনি আসল সমস্যাগুলি সমাধান করার জন্য উপযুক্ত বিমূর্ততা তৈরি করতে পারবেন না।

নোট করুন যে বিকাশকারীদের তাদের নিজস্ব কোড নিজেই পরীক্ষা করা উচিত। বাগ-মুক্ত কোড সরবরাহ করা তাদের কাজের দায়িত্ব। সুতরাং কোডিংটি ডিবাগিং থেকে আলাদা করা শক্ত।

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

সুতরাং "বাগগুলিতে ব্যয় করা সময়" সম্পর্কে কথা বলার পরিবর্তে আপনার "পরীক্ষাগুলিতে ব্যয় করা সময়" (ইন্টিগ্রেশন টেস্ট, ব্যবহারকারী গ্রহণযোগ্যতা পরীক্ষা ...) সম্পর্কে কথা বলা উচিত


1

আমি মনে করি আপনি ঠিক বলেছেন - প্রভাবশালী কারণগুলির সংখ্যার কারণে আপনি কোনও অর্থবহ মেট্রিক পাবেন না।

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

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


0

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

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