নতুন এবং উন্নত ইন্টারফেস বাস্তবায়নের পক্ষে যখন কেউ পশ্চাৎপদ সামঞ্জস্যতা ছেড়ে দেয়? [বন্ধ]


11

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

আমার প্রশ্ন: কখন পুরানো ইন্টারফেসের পিছনে সামঞ্জস্য রাখার চেষ্টা করা উচিত এবং একটি নতুন ডিজাইন বাস্তবায়নের পক্ষে বুলেটটি কামড়ানো উচিত?

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


3
I think there comes a point where keeping backward compatibility becomes such a big burden that useful changes to interfaces become impossible.- এবং আমি মনে করি আপনি সেখানে নিজের প্রশ্নের উত্তর দিয়েছেন ...
ইয়ানিস

(1) এটি বাণিজ্যিক? (২) ইন্টারফেস / প্রয়োগের জন্য গ্রাহকরা কি ধারাবাহিকভাবে সমর্থন ফি প্রদান করেন? (এক-বারের অর্থ প্রদানের ভারসাম্য)

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

উত্তর:


5

যদিও 'কখন' একটি ভাল প্রশ্ন, আমি মনে করি 'কীভাবে' আরও প্রাসঙ্গিক। এমনভাবে ব্রেকিং ট্রানজিশন করা কঠিন হতে পারে যা ব্যবহারকারীদের হতাশ বা অসন্তুষ্ট করে না। বিবেচনা করার জন্য কিছু আইটেম:

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

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

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


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

2

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

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

ফলস্বরূপ বিপুল সংখ্যাগরিষ্ঠ - প্রায় 95% গ্রাহকরা নিয়মিত ভিত্তিতে বছরে কমপক্ষে একবার আপগ্রেড হয়। এর অর্থ হ'ল আপনি ধীরে ধীরে নতুন ইন্টারফেসগুলি প্রবর্তন করতে পারেন।

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

এই ক্ষেত্রে কংক্রিট পুরানো ইন্টারফেস ছিল একটি প্ল্যাটফর্ম নির্দিষ্ট প্রযুক্তি যা ধীরে ধীরে স্ট্যান্ডার্ড মূলধারার প্রযুক্তির উপর ভিত্তি করে কোনও পরিষেবা ইন্টারফেস দ্বারা প্রতিস্থাপনের প্রক্রিয়াধীন।

অবশ্যই এই পরিবর্তনটি রাতারাতি ঘটে না এবং এটি সম্পূর্ণ হতে অনেক বছর সময় নেয়। তবে এটি পুরানো প্রযুক্তিতে বিনিয়োগ বন্ধ করে পরিবর্তে নতুন প্রযুক্তিতে বিনিয়োগের অনুমতি দিয়েছে। গ্রাহককে সহায়তা দেওয়া হয় এবং এগিয়ে যাওয়ার পথ রয়েছে। তাদের বেশিরভাগই নতুন প্রযুক্তির দিকে এগিয়ে যাওয়ার দিকে স্বাগত জানায়।

তবে মনে রাখবেন যে এই নির্দিষ্ট পদ্ধতিটি আপনার দৃশ্যে কাজ করতে পারে না। এটি অবশ্যই আমি যে দলের সাথে কাজ করছি তার পক্ষে কাজ করে।


1

আপনি ইতিমধ্যে এখানে কিছু ভাল উত্তর পেয়েছেন, সুতরাং আমি এই বিষয়টি সম্পর্কে জোয়েল স্পলস্কির একটি খুব সুন্দর নিবন্ধে একটি পয়েন্টার যুক্ত করতে চাই। তিনি IE 8 এ পিছনে সামঞ্জস্যতা দেওয়ার পরিকল্পনা নিয়ে আলোচনা করছেন যা মূলত আপনার সমস্যার সমান:

http://www.joelonsoftware.com/items/2008/03/17.html


1

সংক্ষিপ্ত উত্তর হ'ল নেভার!

অভিজ্ঞতা দেখায় যে খুব কম সময়ে নেপথ্যের সামঞ্জস্যতা বাদ দেওয়া গ্রাহক এবং ব্যবহারকারীদের বিরক্ত করে এবং আরও খারাপভাবে সেগুলি সম্পূর্ণ হারাবে।

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

কৌশলটি হ'ল বর্তমান ইন্টারফেসটিকে এমনভাবে উন্নত করা যাতে পশ্চাৎসঙ্গতি সামঞ্জস্য হয় না, বা পুরানো ইন্টারফেস বজায় রেখে সম্পূর্ণ নতুন চকচকে এবং স্পষ্টতই উচ্চতর ইন্টারফেস সরবরাহ করে। এক পর্যায়ে নতুন ইন্টারফেসে এমন বৈশিষ্ট্য থাকবে যা কেবলমাত্র পুরানো ইন্টারফেসে সম্ভব হবে না, তবে এটি সমস্যাটিকে জোর না করে কেবল মানুষকে সরানোর জন্য উত্সাহ দেয়।

এটি আরও স্পষ্ট করতে সম্পাদনা করুন।

প্রোগ্রামার হিসাবে আপনি যা ভাবেন তা হ'ল -

"আমি এই এপিআইটি উন্নত করব এবং সিস্টেমটিকে যথাসম্ভব উন্নত করব এবং প্রত্যেকে আমাকে প্রশংসা করবে"।

আপনার API এর ব্যবহারকারীরা কী ভাবেন -

"এ * * * ই তিনি মনে করেন যে আমার সময় এবং সময়সূচি গুরুত্বপূর্ণ নয়। আমি যা করছি তা বন্ধ করতে হবে এবং তার অহংকে সন্তুষ্ট করা ছাড়া অন্য কোনও কারণে আমার সমস্ত কোডটি রিফ্যাক্টর করতে হবে। যদি আমাকে রিফ্যাক্টর করতে হয় তবে আমি পরিবর্তন করতে যাচ্ছি অন্য কোনও এপিআইতে কেবল এটি আটকে রাখার জন্য।


1
ক্রোধযুক্ত বাধ্য পরিবর্তনগুলি মানুষকে কীভাবে তৈরি করতে পারে তা জোর দেওয়ার জন্য "চিন্তা" যুক্ত করেছে!
জেমস অ্যান্ডারসন

1
কখনো? ভগবান। মাইক্রোসফ্ট উইন্ডোজ প্রতিটি বড় রিলিজ সঙ্গে এই নীতি লঙ্ঘন বলে মনে হচ্ছে। আমি ভাবব যে "কখনই" আসলে বাস্তবে অনুশীলন করা হয় না। দেখে মনে হচ্ছে "বিরল" বা "সাবধানতার সাথে" বা "অনিচ্ছায়" "কখনই নয়" এর চেয়ে অনেক বেশি ভাল শব্দ হবে be প্রশ্নটি বলে "আমি মনে করি এমন একটি পয়েন্ট এসেছে যেখানে পশ্চাৎ সামঞ্জস্যতা রাখা এত বড় বোঝা হয়ে যায় যে ইন্টারফেসে দরকারী পরিবর্তনগুলি অসম্ভব হয়ে যায়।" আপনি এই নির্দিষ্ট সমস্যা সমাধান করতে পারেন?
এস .লট

@ এসলট অযথা শক্তিশালী শব্দ ব্যবহার করা কখনই যখন আপনি সত্যিই খুব কমই বোঝেন তখন একটি সাধারণ জোয়েল
স্পলস্কি

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

-1: কিছু গ্রাহক তাদের মূল্যবান থেকে বেশি ব্যয়বহুল।
জিম জি।

0

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


0

আমি এটির গ্রাহকের পাশে ছিলাম তাই আমি বলতে পারি যে এটি রূপান্তর সম্পর্কে আপনি কী পরিকল্পনা করছেন তার উপর নির্ভর করে।

আমরা বর্তমানে আমাদের অ্যাকাউন্ট সিস্টেমকে আপগ্রেড করছি। আপগ্রেড করা সংস্থাটি পূর্বের বেমানান সংস্করণটিকেও সমর্থন করে। তারা ডেটা নেওয়ার এবং এটিকে নতুন সিস্টেমে সরিয়ে নেওয়ার পরিকল্পনা করেছে যাতে (তত্ত্ব অনুসারে) সমস্ত পুরানো ডেটা থাকবে। আমরা তথ্য রূপান্তরকরণের জন্য কয়েকশো পাউন্ড প্রদান করব। সমস্যা নেই.

পূর্ববর্তী পরিস্থিতিটির সাথে তুলনা করুন আমি যে anથેথ rcompany এর জন্য কাজ করেছি। সরবরাহকারীটির পুরানো থেকে নতুন সিস্টেমে রূপান্তর করার কোনও উপায় ছিল না। এটি তাদের অন্যান্য সরবরাহকারী হিসাবে একই পরিস্থিতিতে রাখে। প্রকৃতপক্ষে তাদের পরিস্থিতি আরও খারাপ ছিল কারণ আমরা জানতাম যে তারা আমাদের আপগ্রেড করতে সহায়তা করবে না। তারা নতুন চুক্তি পায় নি।

আপনি গ্রাহকদের পেতে এবং রাখার জন্য কঠোর পরিশ্রম করেছেন, আপনি কীভাবে স্থানান্তরটি সহজ করতে পারবেন?

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