নির্ভরশীল সফ্টওয়্যার উপাদানগুলির সংস্করণ সংখ্যা নির্ধারণের জন্য সেরা অনুশীলনের সন্ধান করছেন


15

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

আরও নির্দিষ্ট করা যাক:

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

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

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

সুতরাং এখানে আমাদের সমাধান:

আমরা বহুল ব্যবহৃত মেজর.মিনার.প্যাচ সংস্করণ সংখ্যাটি অনুসরণ করার এবং স্থিতিশীল / অস্থির সংস্করণগুলির জন্য এমনকি / বিজোড় গৌণ সংখ্যাগুলি ব্যবহার করার পরিকল্পনা করি। যদি আমরা এপিআইতে পরিবর্তনগুলি পরিচয় করিয়ে দেই তবে আমরা সংখ্যালঘু সংখ্যা বাড়িয়ে দেব।

এই সম্মেলন নিম্নলিখিত উদাহরণ পরিস্থিতির দিকে নিয়ে যাবে:

বর্তমান স্থিতিশীল শাখাটি 1.2.1 এবং অস্থির 1.3.7। এখন, অস্থিরতার জন্য একটি নতুন প্যাচ এপিআই পরিবর্তন করে, নতুন অস্থির সংস্করণ নম্বরটি 1.5.0.0 এ পরিণত করার কারণ কী। একবার, অস্থির শাখাটি স্থিতিশীল হিসাবে বিবেচনা করা হয়, এর 1.5.3 এ বলি, আমরা এটি 1.4.0 হিসাবে প্রকাশ করব।

আমি নীচে সম্পর্কিত যে কোনও প্রশ্নের উত্তর সম্পর্কে খুশি হব:

  • আপনি কি উপরে বর্ণিত সমস্যাগুলি পরিচালনা করার জন্য সেরা অনুশীলনের পরামর্শ দিতে পারেন?
  • আপনি কি আমাদের "কাস্টম" কনভেনশনটি ভাল বলে মনে করেন?
  • বর্ণিত সম্মেলনে আপনি কী পরিবর্তনগুলি প্রয়োগ করবেন?

2
স্থিতিশীল / অস্থির উপর ভিত্তি করে সংস্করণ নম্বরগুলিতে ফিরে যাচ্ছেন? কমপক্ষে বলতে দ্বিধাবিভক্ত। কখনও প্রকাশিত হয়নি হিসাবে 1.4.0 আছে এবং 1.5.3 1.6.0 হিসাবে প্রকাশ করুন।
মার্জন ভেনেমা

3
সংস্করণ নম্বরকরণ কীভাবে করবেন তার একটি স্পেসিফিকেশন রয়েছে। এটিকে সিমেটিক ভার্সন বলা হয়
Spoike



@ স্পাইকে জন্য আপভোট। আপনার নিজের মন্তব্যটি উত্তর করা উচিত ছিল! আমরা অবশেষে শব্দার্থক ভারডন ব্যবহার করে স্থির হয়েছি।
বিট-পাইরেট

উত্তর:


19

আইএমএইচও সংস্করণ নম্বরগুলি পণ্যের নামের মতো; এগুলি গুরুত্বপূর্ণ যে তারা দৃশ্যমান তবে গুরুত্বহীন যে এগুলি সামগ্রীর চেয়ে সাজসজ্জা।

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

সংস্করণ সংখ্যা একঘেয়েভাবে বৃদ্ধি পাচ্ছে
এটি সম্ভবত সবচেয়ে সুস্পষ্ট প্রত্যাশা এবং একই সময়ে সম্ভবত সত্য হওয়ার সম্ভাবনা কম। এক নজরে, ব্যবহারকারী প্রত্যাশা করে যে সংস্করণটি ২.৩.৫ সংস্করণ ২.২.১7 এর পরে আসবে এবং তার একই বা উন্নত প্রযুক্তি রয়েছে। তবে অবশ্যই ২.৩.x একটি উন্নয়ন শাখা, এবং ২.২.x স্থিতিশীল , এবং ২.৩.৫ আসলে 2004 সালে মুক্তি পেয়েছিল এবং 2.2 শাখাটি এখনও সক্রিয়ভাবে কাজ করছে এবং ২.২.১7 প্রকাশিত হয়েছিল গত এপ্রিলে মাত্র এবং এগুলিতে রয়েছে। .. হ্যাঁ, আপনি ধারণা পেতে পারেন. সংখ্যাটি বহন করে এমন সমস্ত অর্থের জন্য আপনি কেবল ২.২ সংস্করণ "আলু" কল করতে পারেন। " আলু -17 " সংস্করণে স্বাগতম !

অনুরূপ সংস্করণগুলি আপগ্রেডেবল / সামঞ্জস্যপূর্ণ
যদি আমার কম্পিউটারে আমার সংস্করণ 3.7 থাকে এবং 3.8 সমস্ত নতুন চকচকে ফ্রোজবট নিয়ে আসে তবে আমি আশা করি যে কিছু আপগ্রেড বা প্যাচ বা যা কিছু হোক না কেন, আমার 3.7 কোনও বাধা ছাড়াই 3.8 হয়ে উঠতে পারে। তবে আমি যদি 3..7 এ থাকি এবং আপনি 5.2 প্রকাশ করেন তবে আমি তেমন আশাবাদী নই। অবশ্যই, আমি বরং হতাশ হওয়ার চেয়ে আনন্দিতভাবে অবাক হব।

প্রথম
সংখ্যাটি উল্লেখযোগ্য তাৎপর্য আমি জাভা এতটা বিশদভাবে বিষয়টি নিয়ে বিভ্রান্ত না হলে এটি উল্লেখ করার দরকারও দেখব না। যদি কেউ আপনাকে না বলে, আপনি আশা করবেন না যে "জাভা 7" আসলে সংস্করণ 1.7। এবং প্রথমবার যখন আপনি এটি শুনেছিলেন, আপনার প্রতিক্রিয়াটি প্রায় অবশ্যই ছিল: " কি? .. কেন? "

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

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

- সম্পাদনা করুন -
আমি এটি উল্লেখ করতে ভুলে গিয়েছিলাম, কিন্তু কালেব এটিকে সুন্দরভাবে উল্লেখ করেছেন: অন্য কোথাও স্পষ্ট না করে গুরুত্বপূর্ণ কোনও কিছু (যেমন স্থিতিশীল / অস্থির) নির্দেশ করতে সংস্করণ সংখ্যা ব্যবহার করবেন না। হ্যাঁ, আপনি জানেন যে বিজোড় গৌণ সংস্করণ নম্বরটি বিকাশকে নির্দেশ করে তবে এটি আমাদের মধ্যে একটি করে। ডিবানের "অস্থির" মুক্তির মনিকার ভাল উদাহরণ; অথবা আপনি সম্পূর্ণ পৃথক পণ্যের নাম ব্যবহার করতে পারেন; আপনার পণ্যের নামের জন্য "ফ্রোজবট ১.২" এবং আপনার বিকাশের সংস্করণটির জন্য "দেববোট ১.৩"।


1
সুন্দরভাবে লাগিয়ে দিন। শেষ পয়েন্টে, আপনি প্রযুক্তিগত, অভ্যন্তরীণভাবে ব্যবহৃত সংস্করণ নম্বরগুলি থেকে বিপণনের সংস্করণগুলি (অর্থাত্ বিভ্রান্ত করবেন না) আলাদা করতে চাইতে পারেন। জাভা হিসাবে, জাভা 7 একটি বিপণন সংস্করণ (সমস্ত নতুন এবং চকচকে শোনাচ্ছে), 1.7 প্রযুক্তিগত সংস্করণ (একটি গৌণ উন্নতির মতো শব্দ, যা বেশ নির্ভুল)।
অলৌকিক ঘটনা

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

3

একবার, অস্থির শাখাটি স্থিতিশীল হিসাবে বিবেচনা করা হয়, এর 1.5.3 এ বলি, আমরা এটি 1.4.0 হিসাবে প্রকাশ করব।

না না. অস্থিরতার জন্য 1.5.3 স্থিতিশীলটি অবশ্যই 1.6.0 থেকে শুরু হবে (এবং 1.4.x সবেমাত্র মিস হয়েছে, যদি আপনি শব্দার্থক সংস্করণ ব্যবহার করতে চান না)


3

আপনি দুটি পৃথক জিনিস নির্দেশ করতে একটি মান ব্যবহার করার চেষ্টা করছেন।

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

দ্বিতীয়ত, আপনি চিহ্নিত করার চেষ্টা করছেন যে কোনও প্রদত্ত সংস্করণ স্থিতিশীল কিনা।

এটা সম্ভব একটি একক সঙ্গে উভয় তা নির্দেশ করার জন্য "সংস্করণ সংখ্যা," ঠিক যেমন কিছু দোকানে ইঙ্গিত কিনা একটি আইটেম বিক্রি হয় কিছু মূল্যের স্কিম ব্যবহার করবে। উদাহরণস্বরূপ, আমার কাছের দোকানে '3' এ শেষ হওয়া দামগুলি চূড়ান্ত বিক্রয় মূল্য। এটি সেই কর্মচারীদের পক্ষে ভাল কাজ করে, যারা দ্রুত বিক্রয় মূল্যের বিষয়টি কীভাবে চিহ্নিত করবেন তা শিখেন, তবে আপনার গ্রাহকদের কোনও বিক্রয় সম্পর্কে বলার পক্ষে এটি দুর্দান্ত উপায় নয়। যে কারণে তারা বিক্রয় আইটেমগুলির কাছে চিহ্নও রেখেছিল। আপনি অনুরূপ কিছু করতে পারেন, যেমন স্থিতিশীল রিলিজের জন্য এমনকি সর্বনিম্ন গুরুত্বপূর্ণ অঙ্ক তৈরি করা এবং পরীক্ষামূলক রিলিজের জন্য এটি বিশ্রী করে তোলা। আমি মনে করি, যদিও, আপনি যদি পরীক্ষামূলক যে কোনও কিছু প্রকাশ করতে চলেছেন তবে আপনার স্পষ্টভাবে সেভাবে চিহ্নিত করা উচিত। আপনি সংস্করণ স্ট্রিংয়ের শুরু বা শেষে একটি 'এক্স' যুক্ত করতে পারেন, যেমন:X.1.5.31.5.3.X। আপনি তার পরে একটি পরীক্ষামূলক সংস্করণ নম্বরও করতে পারেন, যাতে আপনি একই বেস সংস্করণের উপর ভিত্তি করে একাধিক পরীক্ষামূলক সংস্করণ প্রকাশ করতে পারেন: 1.5.3.X1, 1.5.3.X2

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


1
+1 উজ্জ্বল উদাহরণ: " আমার কাছের দোকানে '3' এ শেষ হওয়া দামগুলি চূড়ান্ত
বিক্রয়মূল্য

2

আমি স্থির / অস্থির সংস্করণগুলির জন্য একটি এক্সটেনশন "ট্যাগ" ব্যবহার করে এবং মেজর এবং অপ্রাপ্ত সংখ্যার একটি নির্দিষ্ট অর্থ ব্যবহার করে মেজর.মিনার.প্যাচ ফর্ম্যাটটি ব্যবহার করার পরামর্শ দেব:

major.minor.patch-stable|unstable

কোথায়

major  only changes if there are incompatible changes in the API
minor  changes if there are changes in the API but backward compatibility is given
patch  any other changes, could be the build number or any other increasing number
-stable indicates the stable version
-unstable indicates the unstable version

এইভাবে নির্ভরতাগুলি সহজেই পরিচালিত হয় এবং প্রতিটি সংস্থার ক্লায়েন্ট / ব্যবহারকারীকে তাদের জানায় যখন তাদের নতুন সংস্করণগুলিতে আরও মনোযোগ দিতে হয়। উদাহরণস্বরূপ, যদি উপাদান A (1.1.0-স্থিতিশীল) বি (5.4.534-স্থিতিশীল) এর উপর নির্ভর করে এবং বি এর একটি নতুন সংস্করণ যথাযথভাবে (6.1.0-অস্থির) হয় তবে একজন তাত্ক্ষণিকভাবে অবগত হন যে এটিকে সম্ভবত পরিবর্তনযোগ্যভাবে পরিবর্তন করতে হবে ।


1

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


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

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