আপনি কি কখনও একটি বড় পুনর্লিখনের সাথে যুক্ত হয়েছেন? [বন্ধ]


55

জোল স্পলস্কি তার বিখ্যাত একটি পোস্টে বলেছেন:

কোনও সফ্টওয়্যার সংস্থা যে একক সবচেয়ে খারাপ কৌশলগত ভুল করতে পারে: কোডটি স্ক্র্যাচ থেকে পুনরায় লিখুন।

চাদ ফোলার লিখেছেন:

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

সতর্ক থাকুন। এটি আপনার প্রত্যাশার চেয়ে দীর্ঘ, শক্ত, আরও ব্যর্থতা-প্রবণ পথ path

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


আপনার থ্রেশহোল্ড কি বড় ?
rwong

একটি প্রকল্প যা বহু বছরের মধ্যে একীভূত হয়; অর্থাত্ এমন এক প্রকল্প নয় যা এক মাসে পুনরায় লেখা যায়।
সিস্টেমপুট

:) যে কিছু হতে পারে। কোনও অভিজ্ঞতা ছাড়াই কলেজ থেকে বেরিয়ে আসা কেউ এক কয়েক বছর থেকে এক বছরে যা করতে পারে তা এক দশক বা তার চেয়ে বেশি পরিশ্রমের অভিজ্ঞতা অর্জনের চেয়ে আলাদা।
বেরিন লরিটস

মোজিলা সফলভাবে addons.mozilla.org কে কেকপিএইচপি থেকে জ্যাঙ্গোতে স্থানান্তরিত করেছে। এই বড় পুনর্লিখনকে বর্ণনা করার জন্য একটি কথা আছে ( জাঙ্গোকন 2010 সুইচিং addons.mozilla.org কে কেকপিএইচপি থেকে জাজানোতে ), তবে টিএল: ডিআর সংস্করণটি হ'ল তারা একবারে একটি ইউআরএল স্যুইচ করেছে।
ব্যবহারকারী16764

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

উত্তর:


62

আমি আমার ক্যারিয়ারের কয়েকটা নতুন লেখার সাথে জড়িত ছিলাম এবং তারা ছিল সমস্ত বিপর্যয়। আমি মনে করি তারা সকলেই একই কারণে ব্যর্থ হয়

  • প্রচেষ্টার বিস্তৃত অবমূল্যায়ন প্রয়োজন: প্রত্যেকবার যখন কেউ পুনর্লিখন চায়, কারণ এটি পুরানো সিস্টেমটি পুরানো প্রযুক্তি ব্যবহার করছে এবং বজায় রাখা কঠিন। তারা যে বিষয়টি বিবেচনা করতে ব্যর্থ হয় তা হ'ল এটির বয়সের কারণে এটির মধ্যে 30-40 ম্যান বছর বিকাশ হতে পারে। ভেবে আপনি 5 মাসের একটি টিমের সাথে 6 মাসের মধ্যে পুরো জিনিসটি আবার লিখতে পারেন নির্বোধ।
  • হারিয়ে যাওয়া জ্ঞান: পুরানো সিস্টেমটি এত দীর্ঘ সময় ধরে রয়েছে, এটি প্রচুর পরিমাণে কাজ করে এবং সমস্ত কিছুতে আবদ্ধ। এখানে কোনও আপ-টু-ডেট ডকুমেন্টেশন নেই, এবং এমন কোনও কর্তৃত্বের বিন্দুও নেই যা বাস্তবে সিস্টেমটি সমস্ত জিনিস জানে। নির্দিষ্ট বিভাগগুলিতে নির্দিষ্ট ব্যবহারকারীর সাথে জ্ঞানের কিছু অংশ থাকবে এবং সেগুলি সন্ধান করা কঠিন বা অসম্ভব।
  • দরিদ্র ব্যবস্থাপনার সিদ্ধান্ত: আমি যে সমস্ত পুনর্লিখনের সাথে জড়িত ছিল তাদের পরিচালনার কাছ থেকেও একই রকম প্রত্যাশা ছিল: নতুন সিস্টেমটি 'সম্পন্ন' করা উচিত এবং পুরাতন সিস্টেমটি কেবল কোনও নির্দিষ্ট তারিখ, সময়কালে বন্ধ করা যেতে পারে। অন্য কোনও বিকল্প গ্রহণযোগ্য ছিল না। আমি মনে করি তারা এটি তাদের মাথায় পেয়েছে, কারণ তারা এই বিশাল প্রকল্পের জন্য নতুন লোককে ভাড়া দেওয়ার জন্য এই সমস্ত অর্থ ব্যয় করছে। বাস্তবে, ঝুঁকি নিরসনের কৌশলটি হ'ল পুরানো সিস্টেমের প্রধান ফাংশনগুলি পুনরায় লেখার জন্য, বলুন প্রথম রিলিজের জন্য পুরানো সিস্টেমের 50-75% ব্যবহার করুন, এবং তারপরে দেখুন এটি কীভাবে কাজ করে! উপরের # 1 এবং # 2 এর কারণে এটি সম্ভবত আরও ভাল কাজ করবে, কারণ আমরা হারিয়ে যাওয়া কয়েকটি বৈশিষ্ট্য খুঁজে পেয়েছি এবং পুরানো সিস্টেমটি বন্ধ করার জন্য কী প্রয়োজন।

21

আপনি যদি এগুলি সঠিকভাবে স্কোপ করেন তবে পুনরায় লেখাগুলি খুব সফল হতে পারে । এগুলি আপনার "বিআইজি" (টিএম) প্রকল্পের প্রান্তিকের সাথে মেলে কিনা তা আমি জানি না তবে আরও কয়েকটা সফল পুনরায় লেখার জন্য আমি আপনাকে বর্ণনা করতে পারি।

প্রকল্প 1

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

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

প্রকল্প 2

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

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

প্রকল্প 3

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

সমাধান: আমরা যখন আনুমানিক 3 মাস অনুমান করি তখন আমরা প্রায় 4.5 মাসের মধ্যে পুনর্লিখনটি সম্পন্ন করি। অ্যাপ্লিকেশনটি ইউআই এবং এটি কতটা ডেটা পরিচালনা করতে পারে তা উভয়ই ভাল সঞ্চালিত হয়েছিল। তারপরে ২০০৪ সালে সুনামির ঘটনা ঘটে। তাদের ট্র্যাক করতে হয়েছিল এমন সংখ্যার নিখুঁত প্রমানটি প্রমাণ করেছিল যে তাদের সত্যিকারের প্রয়োজনের জন্য সুইং ছিল ভুল প্রযুক্তি। আমরা আমাদের পারফরম্যান্স টিউনিংটি ধরে রাখতে পারি না এবং শেষ পর্যন্ত তারা ঘরে বসে ওরাকল টিম দ্বারা নির্মিত একটি চটকদার একসাথে ওয়েব অ্যাপ্লিকেশনটির পক্ষে সরঞ্জামটি ত্যাগ করে। নিশ্চিত যে আমরা তখন আমাদের জ্ঞানের ভিত্তিতে আমরা যা করেছি তা ন্যায়সঙ্গত করতে পারি, তবে পুনর্লিখনটি যথেষ্ট আক্রমণাত্মক ছিল না, এবং আমরা আমাদের ক্লায়েন্টকে বলতে ব্যর্থ হয়েছি যে লোকেরা সম্ভবত ট্র্যাক করার প্রয়োজন হতে পারে তাদের প্রয়োজনগুলিও ছিল কম।

উপসংহার

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

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

11

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

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


আমি এটিকে আবার লিখব না ... আরও বেশি আপগ্রেডের মতো .. যদি আপনি কোডটি সি # বা অন্য কোনওটিতে রূপান্তর না করেন। আপনি কি নতুন কোডটি স্ক্র্যাচ থেকে শুরু করেছিলেন?
জয়

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

তারা কত বড় ছিল? মূল সিস্টেমে কোডের কতগুলি লাইন, পুনর্লিখনটি কত ব্যক্তি-মাস গ্রহণ করেছিল?
মার্কজে

11

একটি বিদ্যমান সিস্টেমের সম্পূর্ণ পুনর্লিখন করার সময় সবচেয়ে বড় ট্র্যাপগুলির মধ্যে একটি হ'ল ভাবা হয় "নতুন সিস্টেমটি কী করতে হবে তা আমাদের নির্দিষ্ট করার দরকার নেই - এটি খুব সহজ, এটি কেবল পুরানো সিস্টেমটি ঠিক যা করতে হবে তা করতে হবে!" ।

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


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

9

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

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

সংস্থানসমূহ: 3 প্রাথমিক স্থপতি - প্রোগ্রামার, পরিচয় পরিচালনা, প্রকল্প পরিচালক। প্রায় 20 বিকাশকারী, 10 বিশ্লেষক, 10 পরীক্ষক।

সমাপ্তির সময় (শেষ করতে শুরু করুন): 1.5 বছর

লঞ্চ সাফল্য: ব্যর্থতার কাছাকাছি

দীর্ঘায়ু সাফল্য: ভয়ঙ্কর

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

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

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

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

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


5

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

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


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

3
যখন আপনার কাজ শেষ হয়ে যায়, দয়া করে অন্যদের আরও বাস্তবসম্মত অনুমান করতে সহায়তা করার জন্য দয়া করে আপনার উত্তরটি "এটি এর আগে চলবে বলে আমি প্রত্যাশা করেছিলাম তবে এটি এমনটি হয়েছিল" with

1
@ থোর শিওর, তবে আপনি কিছুক্ষণ অপেক্ষা করতে পারেন। অ্যাপ্লিকেশনটিতে আরও অনেক কিছুই রয়েছে তারপরে আমি কখনই প্রত্যাশিত ছিল (সুরক্ষা, সম্মতি, ইত্যাদি) এবং কেবল কিছু তৈরির পরিবর্তে ভাল কিছু তৈরির চেষ্টা করা আমার ভাবার চেয়ে বেশি সময় নিচ্ছে।
রাহেল

আপনার কাছে ভাগ করে নেওয়ার জন্য ইতিমধ্যে অতিরিক্ত

10
@ মারকজে দুঃখজনকভাবে প্রকল্পটি এক বছর বা তার পরে বাতিল হয়ে গেছে কারণ সংস্থাটি নির্মাণের জন্য অর্থ ও সংস্থান ব্যয় করতে চায়নি। আমি অনুমান করি যে তারা ভেবেছিল আমরা রসিকতা করছি যখন আমরা তাদের বললাম যে কোনও পার্টটাইম প্রোগ্রামার এতে কাজ করতে প্রায় 5 বছর সময় নেবে ... আমি খুব হতাশ হয়েছি তবে আমি অনেক কিছু শিখেছি এবং আমি মনে করি এটি সামগ্রিকভাবে আমাকে আরও উন্নত প্রোগ্রামার হিসাবে পরিণত করেছে ।
রাহেল

3

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

এটি একটি অভ্যন্তরীণ অ্যাপ্লিকেশন ছিল - মূলত ব্যবসায়ের মূল অ্যাপ্লিকেশন।

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


পুরানো সংস্করণ প্রতিকার করা খুব খারাপ কেন ভাগ করে যত্ন? প্ল্যাটফর্ম বদলেছেন?

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

3

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

খারাপ কৌশল: আমি 4 জন শিক্ষার্থীর একটি দলকে তদারকি করেছি:

  • শিক্ষার্থী # 1 - ডাটাবেস অ্যাক্সেস / কোয়েরিগুলিকে নিরাপদ করতে পুনরায় লিখেছেন
  • ছাত্র # 2 - সমস্ত সিএসএস "আপ" সরানো হয়েছে
  • শিক্ষার্থী # 3 - সমস্ত পৃষ্ঠাগুলি w3c সামঞ্জস্যপূর্ণ করেছে
  • শিক্ষার্থী # 4 - সমস্ত মুলতুবি থাকা বাগগুলি সমাধান করেছে
  • নিজেই: সমস্ত পিএইচপি সতর্কতা এবং কৃপণ স্টাফ সরানো হয়েছে (নকল কোড এবং তাই)

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

ভাল কৌশল:

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

সময়টি এটি নিতে হবে: দুই মাস ( সম্ভবত কম )।

  • ভাল কোড।
  • ভাল রক্ষণাবেক্ষণ।
  • প্রমোদ.
  • "আমরা এটি করতে পারি না, ওয়েবসাইট যেমন পণ্যগুলি পরিচালনা করতে পারে না" এর মতো কোনও উত্তর নেই।

সুতরাং, আমার চূড়ান্ত শব্দ: এটি সমস্ত আপনার পুনরায় লেখার জন্য জটিলতার উপর নির্ভর করে

আমার পোস্টটিকে যথাযথ ইংরেজী করতে সংশোধন করতে দ্বিধা করবেন না দয়া করে আপনাকে অনেক ধন্যবাদ

অলিভিয়ার পন্স


প্রকল্পটি যদি 2 মাস সময় নেয় তবে আমি এটিকে "বিআইজি" পুনর্লিখন হিসাবে বিবেচনা করব না। বিশেষত এটিতে মাত্র 5 জনের একটি দল।
জোয়েল ইথারটন

আপনি এক অর্থে ঠিক আছেন। আমি কেবল ভেবেছিলাম "বিগ" "" এটিতে কাজ করা 2-4 লোক "এর চেয়ে" ফুল "পুনর্লিখনের আরও কাছাকাছি ছিল। আপনি কি মনে করেন আমার পোস্টটি অকেজো? যদি তাই হয় তবে আমি এটি সরিয়ে ফেলব। ধন্যবাদ।
অলিভিয়ার পন্স

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

@ জোয়েল: ঠিক আছে আমি আপনার উত্তরটি পড়েছি, এটি মোটেও একই "সমস্যা" নয়। এটি আবার কেস উপর নির্ভর করে। যেভাবে আমি কয়েক বছর আগে ফরাসি ভাষায় পুরো জোলের নিবন্ধটি অনুবাদ করেছি (আমার ব্যক্তিগত ব্লগে);)
অলিভিয়ার পন্স

2
@OlivierPons আমি নিশ্চিত যে তুলনা কি নই আসলে করেনি কি আপনি কি মনে করেন আপনার বিরুদ্ধে কাজ করতে পারে একটি ন্যায্য তুলনা ... হয়
vaughandroid

2

আমি যে সংস্থার জন্য কাজ করেছি সে কোডবেসের একটি বড় রিফ্যাক্টর শুরু করেছিল।

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

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

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

কিন্তু এটি সংস্থার পতন হিসাবে শেষ হয়েছিল।


2

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

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

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

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


1

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


আমি কী ঘটেছে তার ফলোআপ শুনতে আগ্রহী এটি সফল হয়েছে? পথে আপনি কী শিখলেন? বা বিষয়গুলি এখন কোথায় আছে, যদি এটি অসম্পূর্ণ হয়?
কিমবল রবিনসন

1

আমি 3 সপ্তাহের মধ্যে একটি ব্লগিং ইঞ্জিন লিখেছিলাম। আমি এটি 8 ঘন্টা পুনরায় লিখেছি।

এগিয়ে পরিকল্পনা করা একটি সফল পুনরায় লেখার মূল চাবিকাঠি । সিস্টেমটি ভিতরে এবং বাইরে জেনে রাখাও এটি একটি উপকারী।


4
আপনি একটি 3 সপ্তাহের প্রকল্প একটি বৃহত প্রকল্প বিবেচনা করবেন?
জন ম্যাকআইন্টির

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

একটি বিদ্যমান সংস্করণ (উত্স কোড সহ বা ছাড়াই, তবে যা আপনি নির্দ্বিধায় টিনক করতে পারেন) অবশ্যই পুনর্লিখনের প্রচেষ্টাতে সহায়তা করে। যত বেশি তত ভালো.
rwong

সুনির্দিষ্টভাবে বলতে গেলে, আপনি 3 সপ্তাহের মধ্যে একটি প্রোটোটাইপ ব্লগিং ইঞ্জিন প্রয়োগ করেছেন ।

@ থরব: অবশ্যই, আমার ধারণা এটিই বলা যেতে পারে।
জোশ কে

1

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

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