সফ্টওয়্যার ইঞ্জিনিয়ারিং, প্রজেক্ট ম্যানেজমেন্ট, এবং ব্যবসায়িক প্রক্রিয়াগুলিতে অ্যান্টি-প্যাটার্ন হল একটি পুনরাবৃত্ত সমস্যার সাধারণ প্রতিক্রিয়া যা সাধারণত অকার্যকর এবং অত্যন্ত অনুতপাদনশীল হওয়ার ঝুঁকি থাকে। [১] শব্দটি ১৯৯৫ সালে কম্পিউটার প্রোগ্রামার অ্যান্ড্রু কোয়েনিগ এর ডিজাইন প্যাটার্নস বইটিতে দ্বারা অনুপ্রাণিত (যা সফ্টওয়্যার বিকাশে বেশ কয়েকটি নকশার নিদর্শন তুলে ধরে যা এর লেখকদের কাছে অত্যন্ত নির্ভরযোগ্য এবং কার্যকর বলে বিবেচিত)। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং জার্নালে তার নিবন্ধে প্রথম প্রকাশিত হয়।[২] ১৯৯৬ সালে মাইকেল অ্যাক্রয়েড অবজেক্ট ওয়ার্ল্ড ওয়েস্ট কনফারেন্সে উপস্থাপিত আরও একটি গবেষণাপত্রও এন্টি-প্যাটার্ন নথিভুক্ত করে। [২]

যাইহোক, ১৯৯৮ সালে অ্যান্টিপ্যাটার্নস বইটি ধারণাটিকে জনপ্রিয় করে তোলে এবং সফ্টওয়্যার আর্কিটেকচার এবং প্রকল্প পরিচালনাকে অন্তর্ভুক্ত করার জন্য সফ্টওয়্যার ডিজাইনের ক্ষেত্রের বাইরেও এর পরিধি প্রসারিত করে। [২] অন্যান্য লেখকরা পরিবেশগত/সাংগঠনিক/সাংস্কৃতিক এন্টি-প্যাটার্ন অন্তর্ভুক্ত করার জন্য আরও প্রসারিত করেছেন। [২]

সংজ্ঞা সম্পাদনা

ডিজাইন প্যাটার্নের লেখকদের মতে, একটি অ্যান্টি-প্যাটার্নের দুটি মূল উপাদান, যা অন্যান্য খারাপ অভ্যাস, খারাপ অনুশীলন অথবা খারাপ ধারণা থেকে একে আলাদা করে:

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

সাধারণত এই প্যাটার্নের অনুরূপ একটি নির্দেশিকা হল "রুল-অফ-থ্রি": একটি অ্যান্টি-প্যাটার্ন হতে হলে অবশ্যই কমপক্ষে তিনবার একই ঘটনা ঘটতে দেখা উচিত। [২]

ব্যবহারসমূহ সম্পাদনা

একটি সমস্যার বিস্তার বিশ্লেষণ এবং বিশেষজ্ঞ জ্ঞান আহরণের জন্য অ্যান্টি-প্যাটার্ন অন্তর্ভুক্তি একটি কার্যকর উপায় হতে পারে. [৩]

যদিও কিছু অ্যান্টি-প্যাটার্ন শুধুমাত্র প্যাটার্নের খারাপ পরিণতিগুলিকে বর্ণনা করে, ভাল অ্যান্টি-প্যাটার্ন অন্তর্ভুক্তিও একটি বিকল্প বা অ্যান্টি-প্যাটার্নকে সমাধান করার উপায় দেখায়। [৪]

সফ্টওয়্যার প্রকৌশলে এন্টি-প্যাটার্ন সম্পাদনা

সফ্টওয়্যার ইঞ্জিনিয়ারিং-এ, অ্যান্টি-প্যাটার্নগুলির মধ্যে রয়েছে মাটির বড় বল নকশা; ঈশ্বর শ্রেণী (যেখানে কোন প্রোগ্রামের একটি একক শ্রেণী একাধিক শ্রেণীতে নিয়ন্ত্রণ বিতরণ করার পরিবর্তে সমস্ত নিয়ন্ত্রণ একাই পরিচালনা করে); এবং Poltergeists (ক্ষণস্থায়ী নিয়ন্ত্রক শ্রেণি যা শুধুমাত্র শ্রেণিতে অন্যান্য পদ্ধতি চালু করার জন্য থাকে)। [৪]

কাদার বড় বল সম্পাদনা

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

শব্দটি ব্রায়ান ফুট এবং জোসেফ ইয়োডারের ১৯৯৭ সালের একই নামের গবেষণাপত্রের মাধ্যমে জনপ্রিয় হয়েছিল, যা শব্দটিকে সংজ্ঞায়িত করে:

A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated.

The overall structure of the system may never have been well defined.

If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems.

— Brian Foote and Joseph Yoder, Big Ball of Mud. Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, September 1997

ফুট এবং ইয়োডার এই ধরনের নকশার জন্য 'বিগ বল অফ মাড' শব্দটির প্রবর্তক হিসাবে ব্রায়ান ম্যারিককে কৃতিত্ব দিয়েছেন। [৫]

প্রকল্প ব্যবস্থাপনায় অ্যান্টি-প্যাটার্ন সম্পাদনা

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

তথ্যসূত্র সম্পাদনা

  1. Budgen 2003
  2. Neill, Laplante এবং DeFranco 2011
  3. Jimenez 2006
  4. Demeyer 2008
  5. Foote, Brian; Yoder, Joseph (২৬ জুন ১৯৯৯)। "Big Ball of Mud"laputan.org। সংগ্রহের তারিখ ১৪ এপ্রিল ২০১৯