সরাসরি পর্বে যান
পর্ব ২০ · ৭০-এর মধ্যে · মডিউল ৪

Requirement engineering — stakeholder, elicitation আর feasibility

Requirements Engineering — Stakeholders, Elicitation Techniques and Feasibility Study

Taught in Bangla, this lesson explains why wrong requirements sink projects and walks through the requirements engineering cycle, stakeholder power and interest analysis, and elicitation techniques with when to use each. A worked interview turns vague talk into candidate requirements, then it covers surveys, observation and tacit knowledge, feasibility studies, resolving conflicts, separating what from how, and elicitation in the local context.

এই পর্বে যা শিখবেন

  • Requirement কেন project ডোবায়, আর requirement engineering-এর সাতটি কাজ কী কী
  • Stakeholder খোঁজা, power/interest grid, user class আর persona দিয়ে কার সাথে কতটা কথা বলবেন তা ঠিক করা
  • Interview, survey, observation, workshop, prototype — কোন elicitation কৌশল কখন, আর ভালো প্রশ্ন কেমন
  • Feasibility study-র পাঁচ দিক, আর payback period ও NPV হাতে-কলমে হিসাব
  • Stakeholder-দের মধ্যে বিরোধ মেটানো, আর requirement (কী) বনাম design (কীভাবে)-এর পার্থক্য

১ · ভুল জিনিস নিখুঁতভাবে বানানো — requirement কেন project ডোবায়

একটি পরিচিত দৃশ্য দিয়ে শুরু করি। পাড়ার একটি ফার্মেসির মালিক — ধরা যাক তাঁর দোকানের নাম “ওষুধবাড়ি” (পুরো পর্বের উদাহরণটি কাল্পনিক) — একটি ছোট software দলকে ডেকে বললেন, “আমার একটা অ্যাপ লাগবে। কাস্টমার মোবাইল থেকে ওষুধ অর্ডার করবে, ব্যস।” দল চার মাসে একটি সুন্দর অ্যাপ বানাল: ক্যাটালগ, কার্ট, অনলাইন payment. এক মাস পর দেখা গেল, অর্ডার আসে দিনে দুই-তিনটি। বেশিরভাগ ক্রেতা বয়স্ক, তাঁরা আগের মতোই ফোন করেন। অ্যাপের অনেক অর্ডারে এমন ওষুধ চাওয়া হলো, যা প্রেসক্রিপশন ছাড়া দেওয়া যায় না। আর ফার্মাসিস্ট বললেন, “অর্ডার তো আসে, কিন্তু স্টকে আছে কি না দেখার কোনো উপায় অ্যাপে নেই — আমি খাতা খুলে মেলাই।”

দলের কোড ভালো ছিল। ব্যর্থতা কোডে নয়, কী বানাতে হবে সেই বোঝাপড়ায়। Requirement মানে software-কে কী করতে হবে বা কেমন হতে হবে, তার স্পষ্ট বিবরণ। আর সেই requirement খুঁজে বের করা, বোঝা, লিখে রাখা, যাচাই করা আর বদলের সাথে সামলানোর শৃঙ্খলাবদ্ধ কাজের নাম requirement engineering (RE).

দর্জির দোকানের কথা ভাবুন। একজন ক্রেতা বললেন, “ঈদের জন্য একটা পাঞ্জাবি বানিয়ে দিন।” ভালো দর্জি মাপ নেন, জিজ্ঞেস করেন কোন অনুষ্ঠানে, কেমন কাপড়, কবে লাগবে, তারপর খাতায় লিখে পড়ে শোনান। কাপড় কাটার পর হাতা ছোট হলে জোড়া লাগানো কঠিন — software-এও তাই। Requirement engineering হলো software-এর দর্জির মাপ নেওয়া, শুধু এখানে “শরীর”টি একটি পুরো দোকানের কাজের ধারা।

দোলনার কার্টুন — ভুল বোঝার একটি পুরোনো ছবি

Software জগতে একটি কার্টুন কয়েক দশক ধরে ঘুরছে, সাধারণত “tree swing” কার্টুন নামে পরিচিত। প্রতিটি ছবিতে একই দোলনা, ভিন্ন মানুষের চোখে। কার্টুনটির ঠিক উৎস নিশ্চিত নয়; ১৯৬০-৭০-এর দশক থেকে এটি নানা রূপে ছাপা হয়েছে, আর বিভিন্ন সংস্করণে ছবির সংখ্যা ও কথাও আলাদা। একটি প্রচলিত সংস্করণের ছবিগুলো মোটামুটি এমন (খুঁটিনাটি সংস্করণ-ভেদে আলাদা):

ছবিদোলনাটি দেখতে কেমন
গ্রাহক যেভাবে বোঝালেনবিশাল, জাঁকালো, তিন তলা দোলনা
Project lead যা বুঝলেনডাল কেটে দুই ভাগ, মাঝে দোলনা
Analyst যা নকশা করলেনগাছের গুঁড়ি কেটে দোলনা ঝোলানো
Programmer যা বানালেনদড়ি বাঁধা, কিন্তু মাটিতে পড়ে আছে
যা document করা হলোপ্রায় কিছুই না
গ্রাহকের আসলে যা দরকার ছিলডালে বাঁধা একটি টায়ার

কার্টুনের তিনটি কারণ ওষুধবাড়িতেও আছে:

  • ভুল বোঝা: মালিক বললেন “অ্যাপ”; আসল চাওয়া ছিল “ফোনের ভিড় কমুক, ভুল ওষুধ না যাক।”
  • বাদ পড়া stakeholder: কথা হয়েছে শুধু মালিকের সাথে; ফার্মাসিস্ট, বয়স্ক ক্রেতা, রাইডার আর ওষুধ বিক্রির নিয়ম আলোচনার বাইরে।
  • বদলে যাওয়া চাহিদা: অ্যাপ হাতে পেয়ে মালিক নতুন জিনিস চাইলেন — মানুষ জিনিস দেখে তবেই নিজের চাওয়া বোঝেন। সমস্যা হয় বদল সামলানোর ব্যবস্থা না থাকলে।

১৯৮৬ সালে Fred Brooks “No Silver Bullet” প্রবন্ধে লেখেন, software বানানোর সবচেয়ে কঠিন একক অংশ হলো ঠিক কী বানাতে হবে তা নিখুঁতভাবে ঠিক করা (পর্ব ২, Software crisis আর software engineering-এর ইতিহাস)। Requirement-জনিত ব্যর্থতা নিয়ে প্রায়ই Standish Group-এর CHAOS report-এর শতাংশ উদ্ধৃত হয়, কিন্তু তার পদ্ধতি নিয়ে গবেষকেরা গুরুতর প্রশ্ন তুলেছেন — তাই আমরা কোনো শতাংশ দেব না। গুণগত কথাটি প্রায় সর্বজনস্বীকৃত: ভুল requirement দেরিতে ধরা পড়লে খরচ বাড়ে, যদিও কত গুণ তা project-ভেদে খুব আলাদা (পর্ব ১-এর cost of change-এর সতর্কতা)।

মডিউল ৪-এর মানচিত্র

এই পর্ব দিয়ে মডিউল ৪ শুরু। এখানে আমরা “কী বানাতে হবে” প্রশ্নের প্রথম অর্ধেক — মানুষ খোঁজা, কথা বলা আর বানানো উচিত কি না — দেখব। বাকি অংশগুলো পরের চার পর্বে:

পর্ববিষয়মূল প্রশ্ন
২০ (এই পর্ব)Stakeholder, elicitation, feasibilityকার কাছ থেকে, কীভাবে জানব? বানানো কি উচিত?
২১Functional আর non-functional requirementকীভাবে লিখব, যাতে মাপা যায়? SRS কেমন?
২২Use case আর user storyব্যবহারকারীর চোখে কীভাবে বর্ণনা করব?
২৩Requirement modelingছবি আর মডেলে কীভাবে আঁকব?
২৪Requirement managementঅগ্রাধিকার, traceability আর বদল কীভাবে সামলাব?

২ · Requirement engineering-এর সাতটি কাজ — একটি চক্র

Roger Pressman-এর Software Engineering: A Practitioner's Approach বইয়ের সাম্প্রতিক সংস্করণগুলো RE-কে সাতটি কাজে ভাগ করে; Ian Sommerville-এর Software Engineering একই কাজ মোটা দাগে দেখায় elicitation ও analysis, specification, validation আর requirement management হিসেবে। নাম বই-ভেদে আলাদা, ভেতরের কাজ প্রায় এক। আমরা Pressman-এর সাতটি নাম নেব, কারণ পরীক্ষায় এগুলোই বেশি আসে:

Requirement engineering-এর চক্র

Seven RE tasks; management runs through all of them

Requirement engineering-এর সাতটি কাজের চক্র ১ Inceptionশুরুর বোঝাপড়া ২ Elicitationতথ্য সংগ্রহ ৩ Elaborationবিশ্লেষণ, মডেল ৪ Negotiationবিরোধ মেটানো ৫ Specificationলিখে রাখা ৬ Validationঠিক জিনিস তো? ৭ Managementবদল, অগ্রাধিকার,traceability আবার ঘোরে ↺
ছবি ২০.১ — Validation-এর পর চক্র আবার elicitation-এ ফেরে: নতুন প্রশ্ন, নতুন stakeholder, নতুন বদল। মাঝের management পুরো সময় চলে।
কাজকী হয়ওষুধবাড়িতে উদাহরণকোথায় বিস্তারিত
Inceptionসমস্যা, লক্ষ্য, মূল stakeholder আর সীমানার প্রথম বোঝাপড়া“ফোনের ভিড় কমানো, ভুল ওষুধ ঠেকানো”এই পর্ব
Elicitationমানুষ, কাগজপত্র আর পুরোনো system থেকে চাহিদা বের করে আনাInterview; কাউন্টারে বসে দেখাএই পর্ব
Elaborationসংগ্রহ করা তথ্য বিশ্লেষণ, পরিষ্কার আর মডেল করাঅর্ডারের ধাপের activity diagramপর্ব ২২, ২৩
Negotiationপরস্পরবিরোধী চাওয়া আর সীমিত সময়-টাকার মধ্যে মীমাংসামালিক চান তাৎক্ষণিক নিশ্চয়তা, ফার্মাসিস্ট আগে যাচাইএই পর্ব, পর্ব ২৪
Specificationসবাই বোঝে এবং যাচাই করা যায়, এমনভাবে লেখা“ডেলিভারির আগে ফার্মাসিস্ট প্রতিটি অর্ডার অনুমোদন করবেন”পর্ব ২১
Validationলেখা requirement আসল প্রয়োজন মেটায় কি না; অস্পষ্ট বা বাদ পড়া কিছু আছে কি নাReview, কাগজের prototype দেখানোপর্ব ২৪
Managementবদল, সংস্করণ, অগ্রাধিকার আর traceability সামলানো“ডেলিভারি চার্জ”-এর নতুন অনুরোধ বিচারপর্ব ২৪
মূল ধারণা

RE শুরুতেই শেষ হয়ে যাওয়া একটি “ধাপ” নয়। পর্ব ৪-এর (SDLC আর process model) waterfall-এ এটি প্রথম ধাপে ঘন হয়ে থাকে; পর্ব ৫-এর (Agile আর Scrum) Scrum-এ প্রতিটি sprint-এর refinement আর review-তে ছড়ানো। Process model বদলালে RE-র সময় আর মাত্রা বদলায়, কাজগুলো বাদ যায় না।

পর্ব ৩-এর (Software quality) ভাষায়, validation মানে “ঠিক জিনিস বানাচ্ছি তো?”, আর verification মানে “ঠিকভাবে বানাচ্ছি তো?” Requirement validation প্রথম প্রশ্নের সবচেয়ে সস্তা মুহূর্ত — কোড লেখার আগে।

৩ · Stakeholder — কে কে, কতটা ক্ষমতা, কতটা আগ্রহ

Stakeholder হলেন সেই সব মানুষ বা প্রতিষ্ঠান, যাঁরা software-টি দ্বারা প্রভাবিত হন বা এর ওপর প্রভাব রাখেন। শব্দটি ব্যবস্থাপনা-শাস্ত্রে জনপ্রিয় হয় R. Edward Freeman-এর Strategic Management: A Stakeholder Approach (১৯৮৪) বইয়ের পর।

খোঁজার কৌশল — “আর কে?”

প্রতিটি পরিচিত stakeholder-কে জিজ্ঞেস করুন, “আর কার সাথে কথা বলা উচিত? কার কাজ বদলাবে? কে আপত্তি করতে পারেন?” — নতুন নাম আসা বন্ধ না হওয়া পর্যন্ত। কয়েকটি দল আলাদা করে ভাবুন:

  • যিনি টাকা দেন (customer বা sponsor): ওষুধবাড়ির মালিক।
  • যিনি সরাসরি ব্যবহার করেন (user): ক্রেতা, ফার্মাসিস্ট, ডেলিভারি রাইডার — প্রত্যেকে ভিন্নভাবে।
  • যিনি ফল ভোগ করেন কিন্তু হাত দেন না: রোগী নিজে, যখন অর্ডার দেন তাঁর সন্তান।
  • যিনি নিয়ম ঠিক করেন: ওষুধ বিক্রি আর তথ্য-সুরক্ষার নিয়ন্ত্রক সংস্থা, payment-এর প্রতিষ্ঠান।
  • যিনি বিরোধিতা করতে পারেন: কর্মী, যিনি ভাবছেন অ্যাপ এলে তাঁর চাকরি যাবে।

User class, persona আর “ব্যবহারকারীর কণ্ঠ”

“User” একটি দল নয়, অনেক দল। Karl Wiegers তাঁর Software Requirements বইয়ে (Joy Beatty-র সাথে তৃতীয় সংস্করণ ২০১৩) user class-এর কথা বলেন: যাঁদের কাজ, দক্ষতা আর অধিকার আলাদা — ওষুধবাড়িতে বয়স্ক নিয়মিত ক্রেতা, তরুণ ক্রেতা, ফার্মাসিস্ট আর রাইডার। প্রতিটি class থেকে একজন প্রতিনিধি — Wiegers-এর ভাষায় product champion — রাখলে সেই class-এর কণ্ঠ আলোচনায় হারায় না।

Persona হলো একটি user class-এর কাল্পনিক কিন্তু তথ্যভিত্তিক প্রতিনিধি, নাম আর গল্পসহ। ধারণাটি জনপ্রিয় করেন Alan Cooper, তাঁর The Inmates Are Running the Asylum (১৯৯৯) বইয়ে। যেমন: “রহিমা খাতুন, ৬৮, ডায়াবেটিস আর প্রেশারের ওষুধ প্রতি মাসে নেন। ছোট পর্দার লেখা পড়তে কষ্ট হয়, ছেলে বিদেশে থাকেন, ফোনে কথা বলতেই স্বচ্ছন্দ।” তখন দল জিজ্ঞেস করতে পারে, “রহিমা খালা কি এই screen বুঝবেন?” শর্ত: persona বানাতে হবে আসল interview আর observation থেকে, কল্পনা থেকে নয়।

টাকা যিনি দেন, তিনিই সব নন। মালিক না মানলে টাকা আসবে না; ব্যবহারকারী না মানলে software পড়ে থাকবে। Scrum-এ এই ভারসাম্যের দায়িত্ব অনেকটা Product Owner-এর, কিন্তু তিনিও সব user class-এর হয়ে অনুমান করতে পারেন না; সরাসরি শোনার বিকল্প নেই।

Power/interest grid — কার সাথে কতটা

সবার সাথে সমান সময় দেওয়া অসম্ভব। একটি প্রচলিত হাতিয়ার power/interest grid: প্রতিটি stakeholder-কে দুটি মাপে বসানো হয় — power (project-এর সিদ্ধান্ত বা ফলাফলে প্রভাব খাটানোর ক্ষমতা) আর interest (ফলাফলে তাঁর কতটা আগ্রহ বা কতটা প্রভাবিত হবেন)। ধারণাটি সাধারণত Aubrey Mendelow-এর ১৯৮১ সালের একটি কাজের সাথে যুক্ত করা হয়, পরে ব্যবস্থাপনার বইগুলোতে জনপ্রিয় হয়েছে।

ওষুধবাড়ির stakeholder — power/interest grid

Power (up) vs interest (right), scores 1–10, cut at 5

Power/interest grid Keep satisfied Manage closely Monitor Keep informed মালিক P9 I9 ডাক্তার P5 I5 নিয়ন্ত্রক P9 I3 payment P6 I3 ফার্মাসিস্ট P4 I9 বয়স্ক ক্রেতা P3 I8 রাইডার P2 I6 পাশের দোকান Interest (আগ্রহ) → Power (ক্ষমতা) → ৫ বা বেশি = “উচ্চ”; স্কোর দলের বিচার, মাপ নয়
ছবি ২০.২ — চার ভাগ, চার রকম সম্পর্ক। ফার্মাসিস্টের ক্ষমতা কম, কিন্তু আগ্রহ সবচেয়ে বেশি — তাঁকে উপেক্ষা করলে অ্যাপ কাউন্টারেই আটকে যাবে।

প্রতিটি ভাগের একটি প্রচলিত engagement কৌশল আছে। নিচের প্রোগ্রাম stakeholder তালিকা থেকে ভাগ আর কৌশল বের করে:

// Power/interest grid for the (fictional) pharmacy-ordering app.
// Scores 1-10 come from the team's judgement, not from a formula.
const people = [
  { name: "Pharmacy owner",   power: 9, interest: 9 },
  { name: "Pharmacist",       power: 4, interest: 9 },
  { name: "Elderly customer", power: 3, interest: 8 },
  { name: "Delivery rider",   power: 2, interest: 6 },
  { name: "Drug regulator",   power: 9, interest: 3 },
  { name: "Payment gateway",  power: 6, interest: 3 },
  { name: "Local doctor",     power: 5, interest: 5 },
  { name: "Shop next door",   power: 1, interest: 2 },
];
const CUT = 5; // a score >= 5 counts as "high"
const PLAN = {
  "Manage closely": "workshops + review every release",
  "Keep satisfied": "short briefings, ask before big changes",
  "Keep informed":  "interviews, prototype tests, newsletters",
  "Monitor":        "occasional check, low effort",
};
function quadrant(p) {
  const hp = p.power >= CUT, hi = p.interest >= CUT;
  if (hp && hi) return "Manage closely";
  if (hp) return "Keep satisfied";
  if (hi) return "Keep informed";
  return "Monitor";
}
const count = {};
for (const p of people) {
  const q = quadrant(p);
  count[q] = (count[q] || 0) + 1;
  console.log(p.name.padEnd(17) + ("P" + p.power + " I" + p.interest).padEnd(7) + q.padEnd(15) + PLAN[q]);
}
console.log("---");
for (const q of Object.keys(PLAN)) console.log(q.padEnd(15) + (count[q] || 0));

আউটপুট:

Pharmacy owner   P9 I9  Manage closely workshops + review every release
Pharmacist       P4 I9  Keep informed  interviews, prototype tests, newsletters
Elderly customer P3 I8  Keep informed  interviews, prototype tests, newsletters
Delivery rider   P2 I6  Keep informed  interviews, prototype tests, newsletters
Drug regulator   P9 I3  Keep satisfied short briefings, ask before big changes
Payment gateway  P6 I3  Keep satisfied short briefings, ask before big changes
Local doctor     P5 I5  Manage closely workshops + review every release
Shop next door   P1 I2  Monitor        occasional check, low effort
---
Manage closely 2
Keep satisfied 2
Keep informed  3
Monitor        1

মালিক আর স্থানীয় ডাক্তার (P5 I5) “Manage closely”-তে; ডাক্তার ঠিক সীমারেখায়, কারণ নিয়ম >= 5. নিয়ন্ত্রক (P9 I3) আর payment gateway “Keep satisfied” — আগ্রহ কম, কিন্তু একটি “না” project থামিয়ে দেবে। তিনজন “Keep informed” — ফার্মাসিস্ট, বয়স্ক ক্রেতা আর রাইডার, অর্থাৎ প্রতিদিনের ব্যবহারকারী; elicitation-এর বেশিরভাগ সময় এঁদের সাথেই যাবে। সতর্কতা: স্কোর দলের বিচার, মাপ নয়, আর সময়ের সাথে বদলায়। CUT ৬ করে চালিয়ে দেখুন, ডাক্তার কোন ভাগে যান।

এবার দেখুন, একটি দল বাস্তবে কীভাবে grid ভরে — আর কীভাবে প্রায় একজন গুরুত্বপূর্ণ stakeholder বাদ পড়ে যাচ্ছিলেন:

ওষুধবাড়ির grid (কাল্পনিক)
Manage closely
Keep satisfied
Keep informed
Monitor
ঘটনা
  1. খালি grid. সাদা বোর্ডে দুই অক্ষ — power আর interest. নিয়ম: প্রতিটি নাম বসানোর আগে এক বাক্যে কারণ লেখা।
  2. প্রথম নাম — মালিক। তিনি টাকা দেন, সিদ্ধান্ত নেন, আর ফলাফল নিয়ে সবচেয়ে উদ্বিগ্ন। “Manage closely” — প্রতি সপ্তাহে দেখা।
  3. নিয়মের মালিক। প্রেসক্রিপশনের ওষুধ অনলাইনে বেচার নিয়ম ঠিক করে দেশের নিয়ন্ত্রক সংস্থা। আগ্রহ কম, ক্ষমতা চূড়ান্ত — “Keep satisfied”; নিয়মটি অনুমান না করে আইনি পরামর্শ নেওয়া হবে।
  4. প্রতিদিনের ব্যবহারকারী। ফার্মাসিস্ট আর বয়স্ক ক্রেতা — ক্ষমতা কম, আগ্রহ খুব বেশি। Payment gateway-ও যোগ হলো “Keep satisfied”-এ — তাদের শর্ত ছাড়া অনলাইন payment নেই।
  5. “আর কে?” প্রশ্ন। ফার্মাসিস্টকে জিজ্ঞেস করা হলো, “অর্ডার কে দেন?” উত্তর: “অনেক সময় ঢাকায় বা বিদেশে থাকা ছেলেমেয়ে অর্ডার দেন, টাকাও পাঠান।” নতুন user class — অর্ডারদাতা সন্তান, যিনি দোকানে আসেনই না। রাইডারও যোগ হলেন।
  6. সীমারেখার মানুষ। স্থানীয় ডাক্তার (P5 I5): অস্পষ্ট প্রেসক্রিপশনে ফোন যাবে তাঁর কাছে। তাঁকে রাখা হলো “Manage closely”-তে, কম ঘনত্বে। পাশের দোকান “Monitor”-এ।
  7. Engagement পরিকল্পনা। মালিক-ডাক্তারের সাথে workshop; নিয়ন্ত্রক আর payment-এর জন্য লিখিত প্রশ্ন; বাকিদের interview ও observation. ধাপ ৫-এর একটি প্রশ্ন না করলে সবচেয়ে বেশি অর্ডার দেওয়া user class-টিই বাদ পড়ত।

৪ · Elicitation-এর কৌশল — কোনটি কখন

“Elicit” মানে বের করে আনা: requirement মাটিতে পড়ে থাকে না যে কুড়িয়ে নেবেন; মানুষের মাথা, অভ্যাস আর কাগজপত্র থেকে বের করে আনতে হয়। কোনো একটি কৌশল সব জানায় না, তাই কয়েকটি মেলাতে হয়।

কৌশলকখন সবচেয়ে কাজেরদুর্বলতা
Interviewশুরুতে; একজনের কাজ আর সমস্যা গভীরভাবে বোঝামানুষ যা মনে করেন তা-ই বলেন
Questionnaire / surveyঅনেক মানুষ; জানা প্রশ্নে কতজন কী ভাবেননতুন কিছু আবিষ্কার করে না; sample bias আর ভুল বোঝা প্রশ্ন
Observation / ethnography, job shadowingকাজটি অভ্যাসে চলে; “বলা বনাম করা” ফাঁকসময়সাপেক্ষ; দেখা হচ্ছে জেনে মানুষ আচরণ বদলান
Apprenticingজটিল দক্ষতার কাজ; analyst নিজে শিক্ষানবিশ হয়ে কাজটি শেখেনআরও বেশি সময়; সব কাজে অনুমতি মেলে না
Workshop / JADঅনেক stakeholder-এর মত দ্রুত মেলানো; বিরোধ সামনে আনাদক্ষ সঞ্চালক লাগে; জোরালো কণ্ঠ বাকিদের চাপা দেয়
Focus groupএকটি user class-এর মনোভাব, পছন্দ-অপছন্দ জানাদলের চাপে মত মিলে যায়; আসল ব্যবহার দেখায় না
Document / system analysisপুরোনো system, ফর্ম, খাতা, report, নিয়মের বই আছেকাগজের নিয়ম আর বাস্তব চর্চা আলাদা হতে পারে
Prototype / mockupমানুষ ছবি বা নমুনা দেখে তবেই প্রতিক্রিয়া দিতে পারেন; UI-প্রধান কাজনমুনাকে “প্রায় তৈরি” ভেবে ভুল প্রত্যাশা
Brainstormingনতুন ধারণা দরকার, কেউ জানেন না কী সম্ভবধারণার স্তূপ; পরে বাছাই আর যাচাই লাগে

Interview — তিন ধরন আর দুই ধরনের প্রশ্ন

Interview সবচেয়ে প্রচলিত কৌশল, আবার সবচেয়ে বেশি ভুলভাবে করা হয়। গঠন অনুযায়ী তিন ধরন:

  • Structured: আগে থেকে লেখা প্রশ্ন, একই ক্রমে সবাইকে। তুলনা সহজ, কিন্তু অপ্রত্যাশিত বিষয় ধরা পড়ে না।
  • Semi-structured: একটি প্রশ্নের তালিকা থাকে, কিন্তু উত্তর অনুযায়ী পিছু নেওয়া (follow-up) যায়। বাস্তবে সবচেয়ে বেশি ব্যবহৃত।
  • Unstructured: খোলা আলাপ, একটি বিষয় ধরে। একেবারে শুরুতে, যখন কী জিজ্ঞেস করবেন তাও জানা নেই।

প্রশ্নের ধরনও দুই রকম। Open question উত্তরদাতাকে নিজের ভাষায় বলতে দেয়: “এখন একটি ফোন-অর্ডার কীভাবে নেন, একদম শুরু থেকে বলবেন?” Closed question-এর উত্তর হ্যাঁ/না বা একটি ছোট তথ্য: “দিনে কতগুলো ফোন আসে?” দুটোই দরকার — শুরুতে open প্রশ্নে ছবিটা পাওয়া, পরে closed প্রশ্নে সংখ্যা আর সীমা নিশ্চিত করা। বিপদ হলো leading question, যা উত্তর আগেই বলে দেয়: “Home delivery তো নিশ্চয়ই চান, তাই না?” ভদ্রতার খাতিরে বেশিরভাগ মানুষ “হ্যাঁ” বলবেন।

Active listening মানে শুধু চুপ করে শোনা নয়: মাঝে মাঝে নিজের ভাষায় ফিরিয়ে বলা (“তাহলে বুঝলাম, অস্পষ্ট প্রেসক্রিপশনে আপনি ডাক্তারকে ফোন করেন — ঠিক?”), নীরবতাকে সময় দেওয়া, আর উত্তরের “কেন”-র পিছু নেওয়া। শেষ প্রশ্নটি সবসময় রাখুন: “আমার জিজ্ঞেস করা উচিত ছিল, এমন কিছু বাদ গেল?”

নিচের প্রোগ্রামটি একটি খেলনা question checker: কয়েকটি শব্দ-নিয়ম দিয়ে interview-এর প্রশ্নে closed, leading বা “দুই প্রশ্ন এক বাক্যে” ধরনের সমস্যা চিহ্নিত করে। এটি ভাষা বোঝে না — শুধু দেখায় কোন ধরনের ভুল খুঁজতে হয়।

// A TOY interview-question checker: simple word rules, no real language understanding.
const questions = [
  "Do you want a mobile app?",
  "How do you take an order today when a customer phones?",
  "You would obviously like home delivery, wouldn't you?",
  "Tell me about the last time a medicine was out of stock.",
  "Is the current paper register slow and hard to search?",
  "What happens if a prescription photo is unclear?",
];
const CLOSED = /^(do|does|did|is|are|was|can|could|will|would|should|have|has)\b/i;
const OPEN = /^(what|how|why|when|where|who|which|tell me|describe|walk me)\b/i;
const LEADING = /\b(obviously|surely|clearly|agree that|isn't it|wouldn't you|don't you|right\?)/i;
function check(q) {
  const flags = [];
  if (LEADING.test(q)) flags.push("LEADING");
  if (CLOSED.test(q)) flags.push("CLOSED");
  if (CLOSED.test(q) && /\band\b|\bor\b/i.test(q)) flags.push("DOUBLE?");
  if (!flags.length && OPEN.test(q)) flags.push("ok-open");
  return flags.length ? flags : ["unknown"];
}
let ok = 0;
questions.forEach((q, i) => {
  const f = check(q);
  if (f[0] === "ok-open") ok++;
  console.log((i + 1) + ". [" + f.join(",") + "] " + q);
});
console.log(ok + " of " + questions.length + " look open and neutral");

আউটপুট:

1. [CLOSED] Do you want a mobile app?
2. [ok-open] How do you take an order today when a customer phones?
3. [LEADING] You would obviously like home delivery, wouldn't you?
4. [ok-open] Tell me about the last time a medicine was out of stock.
5. [CLOSED,DOUBLE?] Is the current paper register slow and hard to search?
6. [ok-open] What happens if a prescription photo is unclear?
3 of 6 look open and neutral

প্রশ্ন ১ (“Do you want a mobile app?”) closed — তার চেয়েও বড় সমস্যা, এটি সমাধান নিয়ে প্রশ্ন, প্রয়োজন নিয়ে নয়। প্রশ্ন ৩ leading: “obviously” আর “wouldn't you” উত্তর বলে দিচ্ছে। প্রশ্ন ৫ closed, আর “and” দিয়ে দুটি প্রশ্ন জোড়া (double-barrelled) — খাতা ধীর কিন্তু খোঁজা সহজ হলে উত্তরদাতা কী বলবেন? ২, ৪ আর ৬ খোলা ও নিরপেক্ষ; বিশেষ করে ৪ (“শেষবার কবে স্টক ফুরিয়েছিল, বলুন”) একটি নির্দিষ্ট ঘটনা চায়, যা সাধারণ মতামতের চেয়ে অনেক বেশি তথ্য দেয়। সীমা: নিয়মগুলো সহজেই ফাঁকি খায় — “Which is better, the app or the website?” “ok-open” পায়, যদিও এটি দুই বিকল্পের closed প্রশ্ন; আর “Any problems with the register?” পায় “unknown”. প্রশ্নের আসল মান বিচার করবেন আপনি।

Workshop আর JAD: JAD (Joint Application Design) ১৯৭০-এর দশকের শেষে IBM-এ গড়ে ওঠে বলে সাধারণভাবে বলা হয়। আলাদা আলাদা interview-এর বদলে মূল stakeholder আর developer-রা এক বা কয়েক দিন এক ঘরে বসেন, একজন নিরপেক্ষ সঞ্চালক (facilitator) আর একজন লেখকসহ; বিরোধ সেখানেই সামনে আসে। ঝুঁকি: সবচেয়ে ক্ষমতাবান মানুষ কথা বললে বাকিরা চুপ হয়ে যান — সঞ্চালকের কাজ সবার কথা বের করে আনা।

৫ · একটি interview — অস্পষ্ট কথা থেকে candidate requirement

Interview-এর ফল একটি “requirement-এর তালিকা” নয়, বরং candidate requirement, যা পরে যাচাই আর মীমাংসার মধ্য দিয়ে যাবে। নিচে মালিকের সাথে একটি semi-structured interview-এর অংশ — দেখুন অস্পষ্ট বাক্য থেকে কীভাবে পরীক্ষাযোগ্য কথা বেরোয়।

মালিকের সাথে interview (কাল্পনিক)
মালিক বললেন
Analyst-এর পরের প্রশ্ন
Candidate requirement
  1. সমাধান দিয়ে শুরু। মালিক একটি সমাধান বললেন — “অ্যাপ”। Analyst তর্কও করলেন না, মেনেও নিলেন না; একটি open প্রশ্নে আজকের কাজের ধারা জানতে চাইলেন।
  2. আজকের ধারা থেকে প্রথম চাহিদা। চার ধাপের ধারা পাওয়া গেল: ফোন → খাতা → স্টক → ডেলিভারি। R1: অর্ডারের দুই পথ — নাম বা প্রেসক্রিপশনের ছবি। পরের প্রশ্নটি সাধারণ মত নয়, একটি নির্দিষ্ট ঘটনা চায়।
  3. ঝামেলা থেকে লুকানো চাহিদা। “ভুল ওষুধ” — নামের মিল থাকা দুটি ওষুধ গুলিয়ে যায়। মালিক এটি কখনো চাননি, অথচ এটিই তাঁর সবচেয়ে বড় ভয় — R2: মানুষের যাচাই। প্রথম অ্যাপে ঠিক এটিই বাদ ছিল।
  4. অস্পষ্ট শব্দকে সংখ্যায়। ক্রেতাদের অভিযোগের প্রশ্নে এলো “দ্রুত” — শব্দটি পরীক্ষা করা যায় না। তখনই একটি closed প্রশ্নে (“কত দ্রুত?”) সংখ্যা এলো: এলাকার মধ্যে দুই ঘণ্টা। এটি non-functional requirement-এর প্রার্থী (R3), যার মাপা যায় এমন লেখা পর্ব ২১-এ।
  5. বাদ পড়া user class. মালিক নিজেই বললেন বয়স্করা ফোন করবেন। R4: ফোনের অর্ডারও একই system-এ ঢুকবে, যাতে স্টক আর যাচাই এক জায়গায় থাকে।
  6. নিয়মের কথা, আর ফিরিয়ে বলা। “প্রেসক্রিপশন ছাড়া দিই না” থেকে R5. Active listening-এর কৌশলে analyst নিজের বোঝাটা ফিরিয়ে বললেন — ইচ্ছে করে একটু সাধারণ করে, যাতে ভুল থাকলে ধরা পড়ে।
  7. সংশোধন আর খোলা প্রশ্ন। মালিক শুধরে দিলেন: সব ওষুধে নয়। R5 সংকীর্ণ হলো, আর একটি নতুন খোলা প্রশ্ন জন্মাল — “প্রেসক্রিপশন-আবশ্যক” তালিকা কোথা থেকে আসবে? এটি নিয়ন্ত্রকের নিয়ম, তাই document analysis-এর তালিকায় গেল। ফিরিয়ে না বললে ভুল R5 কোডে চলে যেত।

পুরো interview-এ কোনো screen বা database-এর কথা হয়নি — প্রশ্ন ছিল কাজ, ঘটনা আর সীমা নিয়ে। খসড়াগুলো user story আর acceptance criteria হবে পর্ব ২২-এ (Use case আর user story), আর অগ্রাধিকার পাবে পর্ব ২৪-এ।

৬ · বলা বনাম করা — survey, observation আর tacit knowledge

দার্শনিক Michael Polanyi তাঁর The Tacit Dimension (১৯৬৬) বইয়ে একটি বিখ্যাত কথা লেখেন, মোটামুটি এমন: “আমরা যতটা বলতে পারি, তার চেয়ে বেশি জানি।” এই মুখে-না-আসা জ্ঞানের নাম tacit knowledge. অভিজ্ঞ ফার্মাসিস্ট এক নজরে বোঝেন অস্পষ্ট হাতের লেখা কোন ওষুধ, কখন ডাক্তারকে ফোন করতে হয় — কিন্তু interview-এ বলবেন, “এ তো সাধারণ ব্যাপার।”

মায়ের রান্নার রেসিপি জিজ্ঞেস করলে প্রায়ই উত্তর আসে, “লবণ আন্দাজমতো, মশলা একটু।” “আন্দাজ” আর “একটু” লেখা যায় না, কিন্তু পাশে দাঁড়িয়ে দেখলে বোঝা যায়: হাতের মুঠোয় কতটা, কখন ঢাকনা খোলেন, ঘ্রাণ পেয়ে কখন আঁচ কমান। Observation আর apprenticing ঠিক এই পাশে দাঁড়িয়ে দেখা।

এই “say vs do” ফাঁক requirement-এর মৌলিক সমস্যা: মানুষ বলেন আদর্শ রূপ, করেন বাস্তব রূপ — শর্টকাট আর ব্যতিক্রমসহ। কয়েকটি কৌশল ফাঁকটি কমায়:

  • Observation ও ethnography: কাজের জায়গায় বসে দীর্ঘ সময় দেখা। ১৯৯০-এর দশকের শুরুতে ব্রিটেনের এয়ার ট্রাফিক কন্ট্রোল নিয়ে Lancaster University-র সমাজবিজ্ঞানী ও software গবেষকদের কাজ RE-তে এর ব্যবহার জনপ্রিয় করে বলে উল্লেখ করা হয়; তাঁরা দেখান কাগজের “flight strip” নিয়ন্ত্রকদের নীরব যোগাযোগেরও মাধ্যম ছিল, যা interview-এ ওঠেনি।
  • Job shadowing: একজনের পেছনে একটি পুরো দিন ছায়ার মতো থাকা। কাউন্টারে একদিন বসলেই দেখা যাবে, ফার্মাসিস্ট ফোন ধরে রেখেই অন্য ক্রেতাকে ওষুধ দেন — অর্ডারের screen এক হাতে চালানো যাওয়া চাই।
  • Contextual inquiry আর apprenticing: কাজ চলাকালীন দেখা আর প্রশ্ন করা, “কেন এটা করলেন?” (Beyer ও Holtzblatt-এর Contextual Design, ১৯৯৮); অথবা Robertson দম্পতির Mastering the Requirements Process-এর মতো analyst নিজে শিক্ষানবিশ হয়ে কাজটি শেখেন।
  • Prototype: কাগজে আঁকা একটি screen দেখালে মানুষ যা বলেন, তা কথার চেয়ে অনেক বাস্তব — পর্ব ৪-এর throwaway prototype.

Survey — অনেক মানুষ, কিন্তু কারা?

Questionnaire বা survey অনেক মানুষের কাছে পৌঁছায়, আর জানা প্রশ্নে “কতজন” মাপতে কাজের। মতামতের প্রশ্নে প্রায়ই Likert scale ব্যবহার হয় — ১ (একদম একমত নই) থেকে ৫ (পুরো একমত); নামটি মনোবিজ্ঞানী Rensis Likert-এর ১৯৩২ সালের কাজ থেকে। কিন্তু survey-র সবচেয়ে বড় ফাঁদ sampling bias: যাঁরা উত্তর দিলেন, তাঁরা কি আসল ব্যবহারকারীদের মতো?

ধরুন ওষুধবাড়ি ফেসবুক পেজে একটি অনলাইন ফর্ম দিল। নিচের প্রোগ্রাম নির্দিষ্ট seed থেকে ১২০টি কাল্পনিক উত্তর বানায় (তরুণেরা বেশি উত্তর দেন), গণনা করে, আর শেষে দোকানের ক্রেতা-খাতার বয়সের হিসাবের সাথে মেলায়:

// Survey analysis with seeded (fake) responses -- same output on every run.
function mulberry32(a) { return () => { a = (a + 0x6D2B79F5) | 0; let t = Math.imul(a ^ (a >>> 15), 1 | a);
  t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; }
const rnd = mulberry32(20);
const pick = (items, w) => { let x = rnd() * w.reduce((a, b) => a + b, 0);
  for (let i = 0; i < items.length; i++) { x -= w[i]; if (x < 0) return items[i]; } return items.at(-1); };
// An ONLINE form: young people answer far more often than older customers.
const N = 120, rows = [];
for (let i = 0; i < N; i++) {
  const age = pick(["18-29", "30-44", "45-59", "60+"], [45, 35, 15, 5]);
  const old = age === "60+" || age === "45-59";
  const channel = pick(["App", "Phone call", "Visit shop"], old ? [2, 5, 4] : [6, 2, 2]);
  const likert = pick([1, 2, 3, 4, 5], old ? [3, 3, 2, 1, 1] : [1, 1, 2, 4, 3]); // "I would upload a prescription photo"
  rows.push({ age, channel, likert });
}
const freq = (key) => rows.reduce((m, r) => (m[r[key]] = (m[r[key]] || 0) + 1, m), {});
const pct = (n) => (100 * n / N).toFixed(1) + "%";
console.log("Preferred channel:"); for (const [k, v] of Object.entries(freq("channel"))) console.log("  " + k.padEnd(11) + String(v).padStart(3) + "  " + pct(v));
const lk = freq("likert"), s = rows.map(r => r.likert).sort((a, b) => a - b);
console.log("Likert 1..5 counts: " + [1, 2, 3, 4, 5].map(k => lk[k] || 0).join(" "));
const agree = (lk[4] || 0) + (lk[5] || 0);
console.log("median " + s[N / 2 - 1] + "/" + s[N / 2] + ", agree (4-5) " + pct(agree) + ", mean " + (s.reduce((a, b) => a + b) / N).toFixed(2));
// Bias check: compare the sample with the shop's own customer register.
const register = { "18-29": 20, "30-44": 30, "45-59": 25, "60+": 25 }; // % of real customers
const ages = freq("age");
console.log("Age   sample  register");
for (const a of Object.keys(register)) console.log(a.padEnd(6) + pct(ages[a] || 0).padStart(6) + String(register[a] + "%").padStart(9));

আউটপুট:

Preferred channel:
  App         63  52.5%
  Visit shop  29  24.2%
  Phone call  28  23.3%
Likert 1..5 counts: 22 12 21 41 24
median 4/4, agree (4-5) 54.2%, mean 3.27
Age   sample  register
18-29  38.3%      20%
30-44  35.8%      30%
45-59  20.0%      25%
60+     5.8%      25%

প্রথম দেখায় ফল চমৎকার: ৫২.৫% অ্যাপ চান, প্রেসক্রিপশনের ছবি আপলোডে ৫৪.২% একমত (৪ বা ৫), median ৪. কিন্তু শেষ টেবিলটি দেখুন: sample-এ ৬০ বছরের বেশি মাত্র ৫.৮%, অথচ দোকানের আসল ক্রেতাদের ২৫%. ১৮-২৯ বছর sample-এ ৩৮.৩%, খাতায় ২০%. অর্থাৎ যাঁরা অনলাইন ফর্ম পূরণ করেন, তাঁরাই অ্যাপ বেশি চান — ফলটি প্রায় নিজের প্রশ্নের উত্তর নিজেই দিচ্ছে। এই sample থেকে “বেশিরভাগ ক্রেতা অ্যাপ চান” লেখা ভুল হবে। Likert-এর গড় (৩.২৭) নিয়ে সাবধান — ধাপগুলো সমান দূরত্বের কি না নিশ্চিত নয়, তাই median আর “একমত কত শতাংশ” বেশি নিরাপদ। ডেটা seed থেকে বানানো, শুধু পদ্ধতি দেখাতে। বিকল্প: কাউন্টারে আর ফোনে একই প্রশ্ন করা, বা বয়স-ভিত্তিক কোটায় উত্তর নেওয়া।

Domain বোঝা আর শব্দের তালিকা

Elicitation-এর একটি নীরব কাজ হলো domain — কাজের ক্ষেত্রটি — শেখা। ওষুধের দোকানে “generic name” আর “brand name”, “strip” আর “box”, “মেয়াদ” আর “ব্যাচ” — এই শব্দগুলোর সঠিক অর্থ না জানলে developer আর ফার্মাসিস্ট একই শব্দে ভিন্ন জিনিস বুঝবেন। তাই প্রথম দিন থেকেই একটি domain glossary রাখা ভালো:

শব্দএই project-এ অর্থকে নিশ্চিত করলেন
অর্ডারএকজন ক্রেতার এক বারের চাওয়া, এক বা একাধিক ওষুধসহ; ফার্মাসিস্টের অনুমোদনের আগে “খসড়া”মালিক, ফার্মাসিস্ট
প্রেসক্রিপশন-আবশ্যক ওষুধনিয়ন্ত্রকের তালিকাভুক্ত ওষুধ, যা বৈধ প্রেসক্রিপশন ছাড়া বিক্রি হবে নাআইনি পরামর্শ বাকি
Unitবিক্রির একক: ট্যাবলেটের ক্ষেত্রে “পাতা” (strip), সিরাপের ক্ষেত্রে “বোতল”ফার্মাসিস্ট

এই তালিকাই পরে domain model-এর ভিত্তি হয় (পর্ব ২৩, Requirement modeling).

৭ · Feasibility study — বানানো কি উচিত?

সব কথা শোনার পর একটি কঠিন প্রশ্ন: এটা কি আদৌ বানানো উচিত, আর কোন পথে? Feasibility study এই প্রশ্নের উত্তর খোঁজে, সাধারণত RE-র শুরুর দিকে — বড় টাকা খরচের আগে। পাঠ্যবইগুলোতে পাঁচটি দিক প্রচলিত, অনেকে ইংরেজি আদ্যক্ষর মিলিয়ে TELOS বলেন:

Technical

প্রযুক্তি আর দক্ষতা আছে? দুর্বল নেটওয়ার্কে ছবি যাবে তো?

পারব কি?

Economic

খরচের তুলনায় লাভ কত, কত দিনে টাকা উঠবে? Cost–benefit analysis, payback, NPV.

পোষাবে কি?

Operational

মানুষ ব্যবহার করবেন? কাজের ধারায় খাপ খাবে?

চলবে কি?

Schedule

দরকারের সময়ের মধ্যে তৈরি হবে?

সময়ে হবে কি?

Legal

আইন, লাইসেন্স, তথ্য-সুরক্ষা আর চুক্তি মানা যাবে?

বৈধ কি?

টাকার হিসাব — payback period আর NPV

Economic feasibility-র দুটি সহজ মাপ। Payback period: শুরুর বিনিয়োগ কত বছরে নিট লাভ থেকে উঠে আসে। সহজ, কিন্তু টাকার সময়-মূল্য আর payback-এর পরের লাভ ধরে না।

টাকার সময়-মূল্য মানে: আজকের ১০০ টাকা এক বছর পরের ১০০ টাকার চেয়ে বেশি দামি, কারণ আজকের টাকা খাটানো যায়। তাই ভবিষ্যতের টাকাকে একটি discount rate (r) দিয়ে আজকের মূল্যে আনা হয়। t বছর পরের টাকা C-এর আজকের মূল্য (present value):

PV = C ÷ (1 + r)t · NPV = Σ Ct ÷ (1 + r)t, t = 0 … n

NPV (net present value) হলো সব বছরের নিট টাকার প্রবাহের আজকের মূল্যের যোগফল, শুরুর বিনিয়োগ (t = 0, ঋণাত্মক) সহ। NPV > 0 হলে সেই rate-এ project লাভজনক; অন্য সব সমান হলে বেশি NPV ভালো। আর যে payback ভবিষ্যতের টাকাকে discount করে হিসাব হয়, তার নাম discounted payback. ওষুধবাড়ির দুটি কাল্পনিক বিকল্প, অঙ্ক লাখ টাকায়, ১০% discount rate-এ:

  • A — নিজস্ব অ্যাপ বানানো: শুরুতে ১২ লাখ; পাঁচ বছরে নিট লাভ ২.৫, ৪, ৪.৫, ৪.৫, ৪.৫ লাখ।
  • B — একটি তৈরি অর্ডার-platform ভাড়া নেওয়া: শুরুতে ২ লাখ (সেটআপ, প্রশিক্ষণ); ভাড়া বাদে নিট লাভ ১.৮, তারপর প্রতি বছর ২.২ লাখ।
// Economic feasibility: two fictional options, amounts in lakh taka.
// Year 0 = investment (negative); years 1-5 = net benefit after running costs.
const RATE = 0.10; // stated discount rate: 10% per year
const options = {
  "A: build own app":  [-12, 2.5, 4.0, 4.5, 4.5, 4.5],
  "B: rent a platform": [-2, 1.8, 2.2, 2.2, 2.2, 2.2],
};
function npv(flows, r) {
  return flows.reduce((sum, cf, t) => sum + cf / Math.pow(1 + r, t), 0);
}
function payback(flows, r) { // r = 0 gives the simple (undiscounted) payback
  let cum = 0;
  for (let t = 0; t < flows.length; t++) {
    const pv = flows[t] / Math.pow(1 + r, t);
    if (t > 0 && cum + pv >= 0) return t - 1 + (-cum / pv); // part of year t
    cum += pv;
  }
  return null; // never pays back inside the horizon
}
for (const [name, f] of Object.entries(options)) {
  const total = f.slice(1).reduce((a, b) => a + b, 0);
  const pb = payback(f, 0), dpb = payback(f, RATE);
  console.log(name);
  console.log("  benefit sum   " + total.toFixed(2) + "  (cost " + (-f[0]) + ")");
  console.log("  NPV @10%      " + npv(f, RATE).toFixed(2));
  console.log("  payback       " + (pb === null ? "none" : pb.toFixed(2) + " yr"));
  console.log("  disc. payback " + (dpb === null ? "none" : dpb.toFixed(2) + " yr"));
}
console.log("NPV of A if rate were 20%: " + npv(options["A: build own app"], 0.20).toFixed(2));

আউটপুট:

A: build own app
  benefit sum   20.00  (cost 12)
  NPV @10%      2.83
  payback       3.22 yr
  disc. payback 3.99 yr
B: rent a platform
  benefit sum   10.60  (cost 2)
  NPV @10%      5.98
  payback       1.09 yr
  disc. payback 1.20 yr
NPV of A if rate were 20%: -0.56

A-র payback: তিন বছরে জমা ২.৫ + ৪ + ৪.৫ = ১১ লাখ, বাকি ১ লাখ; চতুর্থ বছরের ৪.৫ লাখের ১ ÷ ৪.৫ = ০.২২ অংশ — মোট ৩.২২ বছর। A-র NPV: ২.৫ ÷ ১.১ + ৪ ÷ ১.২১ + ৪.৫ ÷ ১.৩৩১ + ৪.৫ ÷ ১.৪৬৪১ + ৪.৫ ÷ ১.৬১০৫১ = ২.২৭২৭ + ৩.৩০৫৮ + ৩.৩৮০৯ + ৩.০৭৩৬ + ২.৭৯৪২ = ১৪.৮২৭২; বিয়োগ ১২ = ২.৮৩ লাখ. মোট লাভ ২০ লাখ দেখালেও আজকের মূল্যে বাড়তি মাত্র ২.৮৩. B: NPV ৫.৯৮ লাখ, payback মাত্র ১.০৯ বছর। টাকার হিসাবে B এগিয়ে, ঝুঁকিও কম। শেষ লাইন: rate ২০% ধরলে A-র NPV ঋণাত্মক (−০.৫৬) — সিদ্ধান্ত discount rate-এর ওপর নির্ভর করে, তাই rate-এর উৎস লিখে রাখুন। খরচ আর লাভের অনুমান কীভাবে করতে হয় — এই হিসাবের সবচেয়ে দুর্বল অংশ — তা পর্ব ৬০-এর (Software estimation) বিষয়।

টাকা শুধু একটি দিক। নিচের stepper-এ দেখুন পাঁচটি দিক মিলিয়ে একটি সিদ্ধান্ত কীভাবে দাঁড়ায়:

বিকল্প A (নিজস্ব অ্যাপ) বনাম B (ভাড়া platform)
Technical
Economic
Operational
Schedule
Legal
সিদ্ধান্ত
  1. প্রশ্ন রাখা হলো। পাঁচটি দিক, দুটি বিকল্প — সব ঘরে প্রশ্নবোধক। একটি দিক “না” হলে বাকিগুলো যত ভালোই হোক, বিকল্পটি আটকে যেতে পারে।
  2. Technical. দুটিই সম্ভব। A-তে ছবি-আপলোড, দুর্বল নেটওয়ার্কে কাজ আর notification নিজেদের বানাতে হবে — ঝুঁকি মাঝারি; B-তে এগুলো তৈরি।
  3. Economic. আগের প্রোগ্রামের হিসাব: ১০%-এ A-র NPV ২.৮৩ লাখ, B-র ৫.৯৮ লাখ। B এগিয়ে, payback-ও ১.০৯ বনাম ৩.২২ বছর।
  4. Operational. Interview আর survey-র সতর্কতা থেকে: বয়স্ক ক্রেতারা ফোনই করবেন। তাই দুটিতেই কর্মী যেন ফোনের অর্ডার একই system-এ তুলতে পারেন (R4); B-র platform-এ যাচাই করা হলো — আছে।
  5. Schedule. মালিক চান চার মাসের মধ্যে চালু হোক। A-র অনুমান ছয় মাস — সময়ে হবে না; B এক মাসে।
  6. Legal. B-তে রোগীর নাম, ওষুধ আর প্রেসক্রিপশনের ছবি থাকবে অন্য প্রতিষ্ঠানের server-এ। তথ্য-সুরক্ষার শর্ত, তথ্য কোথায় থাকে, চুক্তি শেষে ফেরত মিলবে কি না — যাচাই বাকি, অনুমান নয়, আইনি পরামর্শ।
  7. সিদ্ধান্ত। B দিয়ে ছয় মাসের পাইলট, শর্ত: legal যাচাই সন্তোষজনক হওয়া। এক বছর পরে পাইলটের তথ্য দেখে A আবার বিবেচনা। খেয়াল করুন, feasibility-র ফল “হ্যাঁ/না” ছাড়াও “ছোট করে, শর্তসাপেক্ষে” হতে পারে — আর কখনো “না” বলাটাই সবচেয়ে সস্তা সফলতা।

৮ · বিরোধ, মীমাংসা আর “কী” বনাম “কীভাবে”

Stakeholder বাড়লে বিরোধও বাড়ে — এটি স্বাভাবিক। ওষুধবাড়িতে:

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

Barry Boehm ১৯৮৯ সালে Rony Ross-এর সাথে “Theory W” প্রস্তাব করেন — “সবাইকে জয়ী করুন” (make everyone a winner) — আর পরে সহকর্মীদের সাথে WinWin নামে requirement negotiation-এর একটি পদ্ধতি ও tool গড়ে তোলেন। মূল চিন্তা: প্রতিটি পক্ষের “win condition” স্পষ্ট লেখা, তারপর যেখানে দুটি win condition সংঘাত করে, সেখানে এমন বিকল্প খোঁজা যাতে দুপক্ষই যথেষ্ট পায়। ওষুধবাড়ির প্রথম বিরোধে:

পক্ষWin condition (আসল স্বার্থ)মীমাংসার বিকল্প
মালিকক্রেতা যেন অর্ডার দিয়ে চলে না যান — দ্রুত সাড়াঅর্ডার সাথে সাথে “গৃহীত” বার্তা পায়; ফার্মাসিস্ট ১৫ মিনিটের মধ্যে যাচাই করে “নিশ্চিত” করেন; প্রেসক্রিপশন-আবশ্যক না এমন নিয়মিত ওষুধে আগের যাচাই করা অর্ডার আবার দিলে দ্রুত পথ
ফার্মাসিস্টভুল ওষুধ যেন না যায় — যাচাইয়ের সময়

দুপক্ষের প্রথম কথা (“তখনই নিশ্চিত”, “আগে যাচাই”) ছিল অবস্থান (position); নিচে ছিল স্বার্থ (interest) — ক্রেতা ধরে রাখা আর নিরাপত্তা। অবস্থান নিয়ে দর-কষাকষিতে একজন হারেন; স্বার্থ নিয়ে কথা বললে প্রায়ই তৃতীয় বিকল্প বেরোয়। মীমাংসা না হলে কে সিদ্ধান্ত নেবেন, তা আগে থেকে ঠিক থাকা দরকার; অগ্রাধিকারের নিয়মমাফিক পদ্ধতি পর্ব ২৪-এ।

Requirement বনাম design — “কী” আর “কীভাবে”

একটি পুরোনো নিয়ম: requirement বলবে software কী করবে, design ঠিক করবে কীভাবে। “প্রতিটি অর্ডার ডেলিভারির আগে একজন ফার্মাসিস্ট অনুমোদন করবেন” — requirement. “অর্ডার টেবিলে approved_by কলাম থাকবে, আর ফার্মাসিস্ট একটি সবুজ button চাপবেন” — design (software design). Requirement-এ design ঢুকে গেলে দুটি ক্ষতি: ভালো বিকল্পের পথ বন্ধ হয়, আর stakeholder এমন বিষয়ে সিদ্ধান্ত নেন যেখানে তাঁর দক্ষতা নেই।

বাক্যধরনকেন
ক্রেতা প্রেসক্রিপশনের ছবি দিয়ে অর্ডার দিতে পারবেনRequirementকী করা যাবে, বাস্তবায়নের কথা নেই
ছবি S3-ধরনের object storage-এ JPEG হিসেবে রাখা হবেDesignকীভাবে, কোন প্রযুক্তিতে
রোগীর তথ্য দেশের ভেতরের server-এ রাখতে হবেRequirement (constraint)আইন বা চুক্তি থেকে আসা সীমা — design-এর মতো শোনালেও বাধ্যবাধকতা
অ্যাপটি React Native-এ লেখা হবেসাধারণত design; কখনো constraintমালিকের দলে শুধু ওই দক্ষতা থাকলে সেটি বাস্তব সীমা হতে পারে

শেষ দুটি সারি দেখায় সীমারেখা সবসময় পরিষ্কার নয়: একটি স্তরের “কীভাবে” তার নিচের স্তরের “কী” হয়ে যায়। Constraint আর trade-off-এর বিস্তারিত System design কোর্সে (Requirement আর trade-off).

আরও গভীরে: Requirement-এর আন্তর্জাতিক মান ISO/IEC/IEEE 29148 (প্রথম ২০১১, সংশোধিত ২০১৮), যা পুরোনো IEEE 830 (১৯৯৮)-এর জায়গা নিয়েছে; এখানে stakeholder requirement আর system requirement আলাদা করা হয় (SRS-এর কাঠামো পর্ব ২১-এ)। Requirement-কে লক্ষ্য (goal) থেকে ধাপে ধাপে বের করার গবেষণাধারা — goal-oriented RE, যেমন Axel van Lamsweerde-এর KAOS আর Eric Yu-র i* — জানতে van Lamsweerde-এর Requirements Engineering (২০০৯) বইটি দেখতে পারেন।

৯ · আমাদের প্রেক্ষাপটে elicitation — ভাষা, সম্মান আর সংযোগ

Elicitation-এর বই সাধারণত অন্য দেশের কর্মক্ষেত্র মাথায় রেখে লেখা। আমাদের দেশে কাজ করতে গেলে কিছু চেনা চ্যালেঞ্জ প্রায়ই দেখা যায় — এগুলো সাধারণ পর্যবেক্ষণ, প্রতিটি প্রতিষ্ঠান আর মানুষ আলাদা:

ভাষা আর শব্দ

Developer ইংরেজি শব্দে ভাবেন, ব্যবহারকারী বাংলায় বা আঞ্চলিক ভাষায় বলেন। প্রশ্ন আর prototype-এর লেখা ব্যবহারকারীর ভাষায় রাখুন; glossary-তে দুই ভাষার শব্দ পাশাপাশি।

ভাষা

পদমর্যাদা আর “হ্যাঁ” বলার সংস্কৃতি

বসের সামনে কনিষ্ঠ কর্মী দ্বিমত করেন না; অতিথিকে “না” বলা অভদ্রতা মনে হতে পারে। তাই আলাদা interview, নির্দিষ্ট ঘটনার প্রশ্ন আর observation বেশি নির্ভরযোগ্য।

সম্মান

অফলাইন আর দুর্বল সংযোগ

অনেক ব্যবহারকারীর ফোন পুরোনো, ডেটা সীমিত, বিদ্যুৎ বা নেটওয়ার্ক মাঝে মাঝে যায়। অনলাইন survey এঁদের কাছে পৌঁছায় না; আর অফলাইনে কাজ চালানোর প্রশ্ন শুরুতেই তুলুন।

সংযোগ

লেখা নয়, মুখের কথা

অনেক ছোট প্রতিষ্ঠানে নিয়ম লেখা থাকে না, থাকে মানুষের অভ্যাসে। খাতা আর রসিদের ছবি দেখা, আর লিখিত সারাংশ পড়ে শুনিয়ে নিশ্চিত করা কাজে আসে।

অলিখিত নিয়ম

উৎসব আর মৌসুমের প্রভাবও জিজ্ঞেস করুন — ঈদের আগের ভিড়, বর্ষায় ডেলিভারির সমস্যা। আর সবচেয়ে বড় নিয়ম: অনুমান না করে জিজ্ঞেস করা আর দেখা; “আমাদের দেশে মানুষ এমনই” ধরনের সাধারণীকরণও এক ধরনের ভুল requirement.

পরীক্ষা ও ইন্টারভিউতে:

  • Requirement engineering-এর কাজগুলো কী কী? — Inception, elicitation, elaboration, negotiation, specification, validation আর management (Pressman-এর তালিকা); Sommerville একই কাজ মোটা দাগে elicitation-analysis, specification আর validation-এ ভাগ করেন।
  • Elicitation কঠিন কেন? — Scope-এর সমস্যা, বোঝাপড়ার সমস্যা (stakeholder নিজেই নিশ্চিত নন, tacit knowledge) আর পরিবর্তনশীলতা (চাহিদা বদলায়)।
  • Customer আর user-এর পার্থক্য? — Customer টাকা দেন ও সিদ্ধান্ত নেন; user সরাসরি ব্যবহার করেন; প্রায়ই আলাদা মানুষ, আর দুজনের চাওয়াও আলাদা।
  • Feasibility study-র ধরন? — Technical, economic, operational, schedule আর legal (TELOS); economic-এ payback আর NPV.
  • Interview-এ open আর closed প্রশ্ন কখন? — শুরুতে open (ছবি পেতে), পরে closed (সংখ্যা আর সীমা নিশ্চিত করতে); leading প্রশ্ন সবসময় এড়ানো।

১০ · AI-এর যুগে requirement engineering

AI এখন interview-এর প্রশ্ন বানায়, meeting-এর সারাংশ লেখে, চাইলে কয়েক সেকেন্ডে দুই পাতা requirement দেয়। শুরুর খসড়া বা ভুলে যাওয়া প্রশ্ন মনে করাতে এটি কাজের। কিন্তু AI আপনার stakeholder-দের সাথে কথা বলেনি; সে দেয় “সাধারণত এমন অ্যাপে যা থাকে” — আপনার ফার্মাসিস্টের ভয় বা রহিমা খালার সমস্যা নয়। পরিচিত ভুলগুলো:

AI-এর ভুলকীভাবে ধরবেন
Generic requirement-এর লম্বা তালিকা, যা কোনো stakeholder বলেননিপ্রতিটির পাশে উৎস লিখুন; উৎস না থাকলে “অনুমান” চিহ্ন
Requirement-এ design ঢুকিয়ে দেওয়া (“Firebase দিয়ে login হবে”)প্রতিটি বাক্যে জিজ্ঞেস করুন: এটা “কী”, না “কীভাবে”?
Leading বা closed প্রশ্নে ভরা interview guideপ্রশ্নগুলো নিজে পড়ুন; সমাধান-প্রশ্ন (“অ্যাপ চান?”) বাদ দিন
আইন বা মানের নাম, ধারা আর সাল বানিয়ে বলামূল দলিল বা আইনজীবীর কাছে যাচাই; AI-এর উদ্ধৃতি প্রমাণ নয়
NPV বা payback-এর হিসাবে ভুল সূত্র, বা বছর ০-কে discount করাছোট একটি উদাহরণ হাতে বা script-এ মিলিয়ে দেখুন
Interview-এর রেকর্ড বা নোট সারাংশ করতে গিয়ে ব্যক্তিগত তথ্য বাইরের সেবায় পাঠানোStakeholder-এর অনুমতি নিন; নাম, ফোন, রোগের তথ্য মুছে তবেই দিন

নিচের prompt-এ AI-কে requirement বানাতে নয়, আপনার প্রস্তুতি সমালোচনা করতে বলা হয়েছে — যেখানে ভুল হলেও ক্ষতি কম।

আমি একটি পাড়ার ফার্মেসির অর্ডার-ব্যবস্থার requirement elicitation করছি। নিচে আমার stakeholder তালিকা আর interview-এর প্রশ্ন দিলাম (নাম ও ব্যক্তিগত তথ্য বাদ দেওয়া)। [এখানে stakeholder তালিকা আর প্রশ্নগুলো] ১. কোন প্রশ্নগুলো closed, leading বা দুটি প্রশ্ন এক বাক্যে — প্রতিটির কারণ বলো আর একটি নিরপেক্ষ open রূপ প্রস্তাব করো। ২. কোন stakeholder বা user class বাদ পড়তে পারে বলে মনে হয়? প্রতিটির জন্য বলো কেন, আর তাঁকে খুঁজতে কাকে "আর কে?" প্রশ্ন করা উচিত। ৩. নিজে থেকে কোনো requirement লিখবে না। কোনো আইন বা মানের নাম উল্লেখ করলে বলো যে সেটি যাচাই করা দরকার, আর ধারা নম্বর বানিয়ে দেবে না।

AI-এর সাহায্যে requirement-এর কাজ — চেকলিস্ট

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন।

প্র ০১Brooks কেন বলেছিলেন “কী বানাতে হবে” ঠিক করাই সবচেয়ে কঠিন? কোড লেখার চেয়ে কথা বলা কঠিন হয় কীভাবে?

Fred Brooks “No Silver Bullet” (১৯৮৬; পরে ১৯৮৭ সালে IEEE Computer-এ) প্রবন্ধে software-এর কাঠিন্যকে দুই ভাগ করেন: accidental — যা আমাদের হাতিয়ারের সীমা থেকে আসে (ধীর compiler, দুর্বল ভাষা), আর essential — যা সমস্যার নিজের প্রকৃতি থেকে আসে। তাঁর যুক্তি ছিল, ভালো ভাষা আর tool accidental কাঠিন্য অনেক কমিয়েছে, কিন্তু essential কাঠিন্যের কেন্দ্রে আছে ধারণাগত কাঠামোটি ঠিক করা — কী বানাতে হবে, তার সব খুঁটিনাটি, ব্যতিক্রম আর অন্য system-এর সাথে সংযোগসহ। তিনি লেখেন, গ্রাহক নিজেও সাধারণত জানেন না তিনি ঠিক কী চান; তাই requirement “সংগ্রহ” নয়, বারবার prototype আর আলোচনায় একসাথে আবিষ্কার।

কোড লেখার চেয়ে এটা কঠিন কেন? কোডের ভুল একটি compiler বা test ধরে; requirement-এর ভুল কোনো যন্ত্র ধরে না। দ্বিতীয়ত, কোড একজন মানুষের মাথায় থাকে, requirement থাকে অনেক মানুষের মাথায় — যাঁদের স্বার্থ আলাদা, ভাষা আলাদা, আর যাঁদের অনেক জ্ঞান tacit. তৃতীয়ত, requirement বদলায়: software হাতে পেয়ে মানুষের কাজের ধরন বদলায়, আর সেই বদলই নতুন চাহিদা তৈরি করে। Manny Lehman-এর software evolution-এর পর্যবেক্ষণ (পর্ব ৪৩-এ আসবে) ঠিক এ কথাই বলে — বাস্তব জগতে ব্যবহৃত software-কে ক্রমাগত বদলাতে হয়।

ব্যর্থতার শতাংশ নিয়ে সাবধান থাকা দরকার। Standish Group-এর CHAOS report ১৯৯৪ থেকে নিয়মিত বেরোচ্ছে, আর “requirement-এর অসম্পূর্ণতা” ও “ব্যবহারকারীর অংশগ্রহণের অভাব”কে বড় কারণ হিসেবে দেখিয়েছে। কিন্তু Robert Glass, আর পরে J. Laurenz Eveleens ও Chris Verhoef (২০১০) প্রমুখ এর পদ্ধতি নিয়ে প্রশ্ন তোলেন — যেমন মূল অনুমানের সাথে তুলনা করে “ব্যর্থ” বলা, যেখানে অনুমানটাই হয়তো ভুল ছিল। তাই সংখ্যা নয়, গুণগত শিক্ষাটি নিন।

মূল উপলব্ধি: কোডের ভুল যন্ত্র ধরে, requirement-এর ভুল ধরতে মানুষ লাগে। তাই requirement-এর কাজ যন্ত্রের মতো “একবার লিখে শেষ” নয় — এটি বারবার শোনা, দেখা আর যাচাই করার একটি চক্র।

প্র ০২যিনি টাকা দেন আর যিনি ব্যবহার করেন — দুজন আলাদা হলে কার কথা আগে? একটি বাস্তব ব্যর্থতা থেকে কী শেখা যায়?

প্রশ্নটির সহজ উত্তর নেই, কারণ দুজনকেই লাগে। Sponsor না মানলে project-এর টাকা আর অনুমোদন থাকে না; ব্যবহারকারী না মানলে software পড়ে থাকে, বা আরও খারাপ — জোর করে চালানো হয় আর মানুষ চারপাশে নিজেদের বিকল্প পথ (workaround) বানিয়ে নেন। ভালো RE দুজনের স্বার্থ আলাদা করে লেখে আর মেলানোর চেষ্টা করে।

একটি বহুল আলোচিত উদাহরণ ১৯৯২ সালের London Ambulance Service-এর computer-aided dispatch (LASCAD) system. চালুর পর কয়েক দিনের মধ্যে অ্যাম্বুলেন্স পাঠানোয় ব্যাপক দেরি আর বিশৃঙ্খলা দেখা দেয়, আর system বন্ধ করে আগের পদ্ধতিতে ফিরতে হয়। পরের বছর প্রকাশিত সরকারি তদন্ত-প্রতিবেদন আর পরে Anthony Finkelstein ও John Dowell-এর বিশ্লেষণে (১৯৯৬) অনেক কারণ উঠে আসে: অবাস্তব সময়সীমা, অপর্যাপ্ত test, দুর্বল project management — আর আমাদের প্রসঙ্গে গুরুত্বপূর্ণ, যাঁরা প্রতিদিন system ব্যবহার করবেন সেই কর্মী আর অ্যাম্বুলেন্স কর্মীদের যথেষ্ট সম্পৃক্ত না করা, আর মাঠের বাস্তবতা (যেমন অ্যাম্বুলেন্সের অবস্থানের তথ্য সবসময় নির্ভুল আসবে না) requirement-এ ঠিকভাবে না ধরা। (বিস্তারিত বিশ্লেষণ উৎস-ভেদে একটু আলাদা।)

এখান থেকে কয়েকটি শিক্ষা। এক, power/interest grid-এ ব্যবহারকারীর ক্ষমতা কম দেখালেও তাঁর বাস্তব প্রভাব বিশাল — তাঁরাই ঠিক করেন system আসলে কাজ করে কি না। দুই, sponsor-এর চাওয়া প্রায়ই প্রতিষ্ঠানের লক্ষ্য (খরচ কমানো, নিয়ন্ত্রণ), আর ব্যবহারকারীর চাওয়া কাজটি সহজ করা; দুটি মেলাতে না পারলে প্রকল্পের ঝুঁকি লিখিতভাবে sponsor-কে জানানো elicitation-কারীর দায়িত্ব। তিন, product champion বা প্রতিনিধি রাখুন, কিন্তু মনে রাখুন একজন প্রতিনিধি গোটা user class-এর সব বৈচিত্র্য জানেন না — মাঝে মাঝে সরাসরি observation লাগে।

মূল উপলব্ধি: টাকা দেওয়া মানুষ project চালু রাখেন, ব্যবহারকারী project সফল করেন। দুজনের স্বার্থ আলাদা করে লিখুন, আর ব্যবহারকারীর কণ্ঠ সরাসরি শুনুন।

প্র ০৩অনেক মানুষকে প্রশ্ন করলেই কি সঠিক উত্তর মেলে? Survey-র sample bias আর “বলা বনাম করা”-র সমস্যা কতটা গভীর?

পরিসংখ্যানের ইতিহাসে একটি বিখ্যাত উদাহরণ ১৯৩৬ সালের মার্কিন প্রেসিডেন্ট নির্বাচন। Literary Digest নামের একটি পত্রিকা প্রায় এক কোটি মানুষকে ডাকযোগে প্রশ্নপত্র পাঠায়, বিশ লাখের বেশি উত্তর পায়, আর ভবিষ্যদ্বাণী করে Alf Landon জিতবেন। জিতলেন Franklin Roosevelt, বিপুল ব্যবধানে। ঠিকানার তালিকা নেওয়া হয়েছিল টেলিফোন বই আর গাড়ির নিবন্ধন থেকে — মহামন্দার সময়ে যা ধনী মানুষের দিকে ঝোঁকা ছিল — আর যাঁরা উত্তর পাঠিয়েছিলেন, তাঁরাও হয়তো বিশেষ ধরনের মানুষ ছিলেন (পরের গবেষকেরা কোন কারণটি বড় ছিল তা নিয়ে আলোচনা করেছেন)। George Gallup অনেক ছোট কিন্তু পরিকল্পিত sample দিয়ে সঠিক বিজয়ী বলেছিলেন বলে প্রচলিত। শিক্ষা: sample-এর আকার নয়, প্রতিনিধিত্বই আসল।

দ্বিতীয় সমস্যা আরও গভীর: মানুষ সৎভাবে উত্তর দিলেও নিজের আচরণ ঠিকমতো অনুমান করতে পারেন না। মনোবিজ্ঞানে Richard Nisbett ও Timothy Wilson-এর ১৯৭৭ সালের একটি প্রভাবশালী প্রবন্ধ দেখায়, মানুষ প্রায়ই নিজের সিদ্ধান্তের আসল কারণ জানেন না, আর বিশ্বাসযোগ্য একটি কারণ বানিয়ে বলেন। ভদ্রতা আর “ভালো দেখানোর” ইচ্ছা (social desirability) যোগ হলে উত্তর আরও বাস্তব থেকে সরে যায়। “আপনি কি অ্যাপে অর্ডার দেবেন?” — “হ্যাঁ, অবশ্যই” বলা সহজ; মাস শেষে আসলে কে দিলেন, সেটা আলাদা কথা।

তাই অভিজ্ঞ দল তথ্যের উৎস মেলায় (triangulation): survey বলে কতজন কী ভাবেন, observation বলে আসলে কী করেন, পুরোনো রেকর্ড (খাতা, ফোনের log) বলে অতীতে কী ঘটেছে, আর prototype বা ছোট পাইলট বলে নতুন কিছু দিলে মানুষ কী করেন। চারটি একমত হলে আত্মবিশ্বাস; অমিল হলে সেখানেই সবচেয়ে মূল্যবান প্রশ্ন লুকিয়ে আছে।

মূল উপলব্ধি: বেশি উত্তর মানে বেশি সত্য নয়। কারা উত্তর দিলেন তা দেখুন, আর মানুষের কথা তাঁদের কাজের সাথে মিলিয়ে নিন।

প্র ০৪Agile-এ তো requirement “চলতে চলতে” আসে — তাহলে কি আগাম requirement engineering অপ্রয়োজনীয় হয়ে গেছে?

Agile Manifesto (২০০১) “বিস্তারিত documentation-এর চেয়ে কাজ করা software” আর “চুক্তির দর-কষাকষির চেয়ে গ্রাহকের সাথে সহযোগিতা”-কে বেশি মূল্য দেয়। অনেকে এ থেকে ভুল সিদ্ধান্তে পৌঁছান: “Agile-এ requirement লাগে না।” আসলে Agile requirement-এর কাজ বাদ দেয়নি, তার সময় আর আকার বদলেছে। পর্ব ৫-এ দেখেছেন, Product Backlog-এর item-গুলো backlog refinement-এ ধাপে ধাপে স্পষ্ট হয়; sprint review-তে stakeholder কাজ করা increment দেখে মতামত দেন — যা আসলে একটি নিয়মিত validation আর elicitation-এর বৈঠক। User story এসেছে XP (Extreme Programming)-এর চর্চা থেকে; সেখানে Ron Jeffries-এর “card, conversation, confirmation” সূত্রটি বলে, কার্ডটি আলোচনার স্মারক মাত্র; আসল requirement আলোচনায়।

তবে কিছু জিনিস আগে জানতেই হয়, Agile হোক বা না হোক। আইনি বাধ্যবাধকতা (যেমন রোগীর তথ্য কোথায় রাখা যাবে), নিরাপত্তা-গুরুত্বপূর্ণ নিয়ম, অন্য system-এর সাথে চুক্তিবদ্ধ interface, আর architecture-কে প্রভাবিত করে এমন non-functional চাহিদা (অফলাইনে কাজ, লাখো ব্যবহারকারী) দেরিতে জানলে বদলানো খুব দামি। Scott Ambler-এর মতো Agile-পন্থীরাও “just enough” আগাম মডেলিং বা initial envisioning-এর কথা বলেন — শুরুতে কয়েক দিনে মোটা দাগের ছবি, বিস্তারিত পরে।

Process model-এর ঝুঁকিভিত্তিক দৃষ্টিও (পর্ব ৪-এর spiral) একই কথা বলে: যে অনিশ্চয়তা সবচেয়ে বড় ঝুঁকি, সেটি আগে দূর করুন। ওষুধবাড়িতে “প্রেসক্রিপশন-আবশ্যক ওষুধের নিয়ম” প্রথম sprint-এর আগেই জানা দরকার, কারণ পুরো অর্ডার-প্রক্রিয়া এর ওপর দাঁড়িয়ে। কিন্তু ডেলিভারি-চার্জের হিসাব কেমন হবে, তা পাইলটের তথ্য দেখে ঠিক করা যায়।

আসলে Agile-এ elicitation-এর দক্ষতা আরও বেশি লাগে: প্রতি দুই সপ্তাহে stakeholder-দের সাথে ফলপ্রসূ আলোচনা, ঠিক প্রশ্ন আর বিরোধ মেটানো — একই RE, শুধু ঘন ঘন আর ছোট মাত্রায়।

মূল উপলব্ধি: Agile requirement engineering বাদ দেয়নি, ভাগ করে ছড়িয়ে দিয়েছে। কতটা আগে জানতে হবে, তা ঠিক করে ঝুঁকি আর বদলের খরচ — process model-এর নাম নয়।

প্র ০৫NPV ধনাত্মক হলেই কি project করা উচিত, আর ঋণাত্মক হলেই বাদ? Feasibility-র টাকার হিসাবের সীমা কোথায়?

NPV একটি শক্তিশালী ধারণা — টাকার সময়-মূল্যের চিন্তা Irving Fisher-এর ১৯০৭ ও ১৯৩০ সালের কাজে সুগঠিত রূপ পায়। কিন্তু software project-এ এর সংখ্যাগুলো যত নিখুঁত দেখায়, ভিত্তি তত নিশ্চিত নয়।

প্রথম সীমা — অনুমানের ভুল। NPV-এর প্রতিটি ঘর একটি অনুমান: খরচ কত, লাভ কত, কত বছর। পর্ব ৬০-এ দেখবেন software-এর খরচের অনুমান কতটা ছড়ানো হতে পারে; Boehm-এর ১৯৮১ সালের কাজ থেকে আসা, পরে Steve McConnell-এর জনপ্রিয় করা “cone of uncertainty”-র ধারণা অনুযায়ী project-এর শুরুতে অনুমান কয়েক গুণ পর্যন্ত ভুল হতে পারে। তাই একটি NPV-এর বদলে একটি পরিসর দেখান: আশাবাদী, সম্ভাব্য আর হতাশাজনক অনুমানে কী হয় (sensitivity analysis). অংশ ৭-এর হিসাবে শুধু rate ১০% থেকে ২০% করলেই A-র NPV ২.৮৩ থেকে −০.৫৬ হয়েছে।

দ্বিতীয় সীমা — যা টাকায় মাপা কঠিন। ভুল ওষুধ যাওয়া কমলে রোগীর নিরাপত্তা বাড়ে, দোকানের সুনাম বাড়ে, ঝুঁকি কমে — এগুলোকে টাকায় রূপ দেওয়া কঠিন, কিন্তু উপেক্ষা করা ভুল। আবার কিছু project-এর মূল্য “বিকল্প” হিসেবে: নিজস্ব অ্যাপ (A) এখন NPV-তে পিছিয়ে, কিন্তু ভবিষ্যতে নিজের ক্রেতা-তথ্য আর স্বাধীনতা দিতে পারে। অর্থনীতিতে একে real options-এর চিন্তা বলে; ছোট পাইলট (B) দিয়ে শেখা আর পরে বড় সিদ্ধান্ত নেওয়া নিজেই একটি মূল্যবান বিকল্প।

তৃতীয় সীমা — মানুষের পক্ষপাত। ইতিমধ্যে খরচ হওয়া টাকা (sunk cost) ভবিষ্যতের সিদ্ধান্তে ঢোকা উচিত নয়, কিন্তু প্রায়ই ঢোকে: “এত টাকা তো খরচ হয়েই গেছে, এখন থামাব?” Feasibility study তাই শুধু শুরুতে নয়, বড় বাঁকগুলোতে আবার করা উচিত — পর্ব ৪-এর spiral মডেলের প্রতিটি loop-এর শেষে “চালিয়ে যাব, না থামাব” সিদ্ধান্তের মতো।

মূল উপলব্ধি: NPV সিদ্ধান্তের একটি স্পষ্ট ভাষা, সিদ্ধান্ত নিজে নয়। অনুমানগুলো লিখুন, পরিসর দেখান, আর টাকার বাইরের চারটি দিক পাশে রাখুন।

অনুশীলন

হিসাব, পরিকল্পনা, সমালোচনা আর আউটপুট অনুমান — প্রতিটির পূর্ণ উত্তর দেওয়া আছে।

  1. Payback আর NPV-এর হিসাব: একটি কাল্পনিক বিশ্ববিদ্যালয়ের ফলাফল পোর্টালের জন্য একটি নতুন module বানাতে শুরুতে ৫ লাখ টাকা লাগবে, আর পরের তিন বছর প্রতি বছর ২ লাখ টাকা নিট সাশ্রয় হবে। Discount rate ১০%. (ক) সাধারণ payback period কত? (খ) তিন বছরের NPV কত? (গ) কোনো বদল ছাড়া একই সাশ্রয় চতুর্থ বছরেও চললে NPV কত হয়, আর discounted payback কত?

    (ক) দুই বছরে ৪ লাখ উঠে আসে, বাকি ১ লাখ; তৃতীয় বছরের ২ লাখের অর্ধেক = ০.৫ বছর। Payback = ২.৫ বছর.

    (খ) Discount factor: ১ ÷ ১.১ = ০.৯০৯১, ১ ÷ ১.২১ = ০.৮২৬৪, ১ ÷ ১.৩৩১ = ০.৭৫১৩. আজকের মূল্য: ১.৮১৮২ + ১.৬৫২৯ + ১.৫০২৬ = ৪.৯৭৩৭ লাখ। NPV = ৪.৯৭৩৭ − ৫ = −০.০২৬৩ লাখ, অর্থাৎ প্রায় −২,৬৩০ টাকা। মোট সাশ্রয় ৬ লাখ, payback ২.৫ বছর — তবু ১০%-এ project সামান্য ঋণাত্মক! কারণ তিন বছরের ২ লাখ আজকের হিসাবে ২ লাখ নয়।

    (গ) চতুর্থ বছরের ২ লাখের আজকের মূল্য ২ × ০.৬৮৩০ = ১.৩৬৬০; NPV = −০.০২৬৩ + ১.৩৬৬০ = ১.৩৩৯৭ লাখ (ধনাত্মক)। তৃতীয় বছরের শেষে বাকি −০.০২৬৩; চতুর্থ বছরের ১.৩৬৬০-এর ০.০২৬৩ ÷ ১.৩৬৬০ ≈ ০.০১৯ অংশ — discounted payback ≈ ৩.০২ বছর. শিক্ষা: সময়সীমা (horizon) কত বছর ধরছেন, সেটিও একটি অনুমান, আর তা সিদ্ধান্ত উল্টে দিতে পারে।

  2. একটি elicitation plan নকশা করুন: একটি কাল্পনিক জেলা শহরের বেসরকারি হাসপাতাল রোগী ভর্তির কাগজের খাতা বদলে software চায়। জড়িত: পরিচালক, ভর্তি-কাউন্টারের দুজন কর্মী, নার্স, ডাক্তার, হিসাবরক্ষক, রোগী ও তাঁদের আত্মীয়। কাউন্টারের কর্মীরা পরিচালকের সামনে খুব কম কথা বলেন, আর রাতের শিফটে কাজের ধরন আলাদা। দুই সপ্তাহের একটি elicitation plan লিখুন: কোন stakeholder, কোন কৌশল, কোন ক্রমে, আর কেন।

    একটি সম্ভাব্য পরিকল্পনা (একাধিক ভালো উত্তর হতে পারে; মূল বিচার — প্রতিটি কৌশলের কারণ):

    • দিন ১–২ · Inception আর document analysis: পরিচালকের সাথে unstructured interview — লক্ষ্য, বাজেট, সময়, সাফল্যের মাপ। ভর্তির খাতা, ফর্ম আর report-এর ছবি তুলে বিশ্লেষণ; domain glossary শুরু (ভর্তি, বেড, অগ্রিম, ছাড়পত্র)।
    • দিন ২ · Stakeholder map: পরিচালক আর হিসাবরক্ষক উচ্চ ক্ষমতা; কাউন্টারের কর্মী, নার্স আর রোগী-আত্মীয় উচ্চ আগ্রহ। প্রত্যেককে “আর কে?” — যেমন জরুরি বিভাগ বা বীমার দায়িত্বে থাকা কেউ।
    • দিন ৩–৫ · Observation আর job shadowing: কাউন্টারে দিনের আর রাতের একটি করে পুরো শিফট। কারণ: পদমর্যাদার চাপে interview-এ কম কথা আসবে, রাতের কাজ আলাদা, আর tacit কাজ চোখে পড়বে।
    • দিন ৫–৭ · আলাদা semi-structured interview: কর্মী, নার্স, ডাক্তার, হিসাবরক্ষক — পরিচালকের অনুপস্থিতিতে; open প্রশ্ন আর নির্দিষ্ট ঘটনা। অনুমতি নিয়ে রোগী-আত্মীয়ের সাথে ছোট আলাপ।
    • দিন ৮–৯ · Paper prototype: কাগজে আঁকা ভর্তি-screen দিয়ে কর্মীদের একটি কাল্পনিক ভর্তি করানো, কোথায় থামেন তা দেখা।
    • দিন ১০–১১ · JAD ধরনের workshop: নিরপেক্ষ সঞ্চালকসহ সবাই একসাথে; বিরোধ (হিসাবরক্ষক চান অগ্রিম ছাড়া ভর্তি নয়, ডাক্তার চান জরুরি রোগী আগে) নিয়ে win-win আলোচনা। কর্মীদের মত আগেই লিখিত নেওয়া, যাতে চাপা না পড়ে।
    • দিন ১২–১৪ · Validation: উৎস আর খোলা প্রশ্নসহ candidate requirement-এর তালিকা stakeholder-দের পড়ে শোনানো ও সংশোধন; রোগীর তথ্য-সুরক্ষার legal প্রশ্ন আলাদা তালিকায়।

    Survey ইচ্ছে করে বাদ — মানুষের সংখ্যা কম আর বৈচিত্র্য বেশি, তাই মুখোমুখি কৌশল বেশি কাজের।

  3. Interview-প্রশ্নের সমালোচনা: একজন নতুন analyst ওষুধবাড়ির ফার্মাসিস্টের জন্য এই প্রশ্নগুলো লিখেছেন। প্রতিটির সমস্যা বলুন আর একটি ভালো রূপ দিন। (১) “আপনার নিশ্চয়ই একটা barcode scanner দরকার, তাই না?” (২) “অ্যাপটা দ্রুত আর সহজ হওয়া উচিত কি?” (৩) “আপনি কি প্রতিদিন স্টক মেলান?” (৪) “কোন database ভালো হবে বলে মনে করেন?”
    • (১) Leading আর সমাধান-প্রশ্ন: উত্তর বলে দেওয়া, আর একটি নির্দিষ্ট যন্ত্রের প্রস্তাব। ভালো রূপ: “একটি ওষুধ স্টকে আছে কি না এখন কীভাবে খোঁজেন? শেষবার খুঁজতে কতক্ষণ লেগেছিল?”
    • (২) Closed, double-barrelled আর অর্থহীন: “দ্রুত” আর “সহজ” দুটি আলাদা বিষয়, আর কেউই “না” বলবেন না। ভালো রূপ: “অর্ডার নিতে গিয়ে কোন মুহূর্তে সবচেয়ে বেশি সময় যায়?”
    • (৩) Closed: হ্যাঁ/না-তে কাজের ধারা জানা যায় না। ভালো রূপ: “স্টক মেলানোর কাজটি কখন, কীভাবে করেন — একটা সাধারণ দিনের কথা বলবেন?”
    • (৪) ভুল মানুষকে design-এর প্রশ্ন: Database একটি “কীভাবে”-র সিদ্ধান্ত, ফার্মাসিস্টের দক্ষতার বাইরে। এর বদলে জিজ্ঞেস করুন তাঁর তথ্যের চাহিদা: “কোন তথ্য খুঁজে পেতে আপনার সবচেয়ে কষ্ট হয়?”
  4. আউটপুট অনুমান করুন: নিচের JavaScript কোডটি কী ছাপবে? তারপর বলুন, দুই জায়গায় > 5-এর বদলে >= 5 লিখলে আউটপুট কী হতো।
    const s = [{n:"A",p:5,i:4},{n:"B",p:7,i:8},{n:"C",p:2,i:5}];
    for (const x of s) console.log(x.n, x.p > 5
      ? (x.i > 5 ? "manage" : "satisfy")
      : (x.i > 5 ? "inform" : "monitor"));
    A monitor
    B manage
    C monitor

    A: p = ৫, 5 > 5 মিথ্যা, তাই নিচের শাখা; i = ৪, “monitor”. B: দুটোই ৫-এর বেশি — “manage”. C: p = ২; i = ৫, কিন্তু 5 > 5 মিথ্যা — “monitor”.

    >= 5 লিখলে: A satisfy (p = ৫ এখন “উচ্চ”, i = ৪ নিম্ন), B manage, C inform (i = ৫ এখন “উচ্চ”)। তিনটির দুটির ভাগ বদলে গেল শুধু একটি চিহ্নে! শিক্ষা: grid-এর সীমারেখায় থাকা stakeholder-দের নিয়ম লিখে ঠিক করুন, আর সীমারেখার মানুষদের আলাদা করে বিবেচনা করুন — স্কোর নিজেই অনুমান।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমPressman-এর তালিকা অনুযায়ী requirement engineering-এর এই ছয়টি কাজ সাধারণ ক্রমে সাজান (management পুরো সময় চলে বলে বাদ রাখা হলো; ▲▼ চেপে সরান)

  1. Inception — সমস্যা, লক্ষ্য আর মূল stakeholder-এর প্রথম বোঝাপড়া
  2. Elicitation — মানুষ আর কাগজপত্র থেকে চাহিদা বের করে আনা
  3. Elaboration — সংগৃহীত তথ্য বিশ্লেষণ আর মডেল করা
  4. Negotiation — পরস্পরবিরোধী চাওয়ার মীমাংসা
  5. Specification — যাচাইযোগ্যভাবে লিখে রাখা
  6. Validation — লেখা requirement আসল প্রয়োজন মেটায় কি না যাচাই

একটি ফার্মেসির অর্ডার-অ্যাপের জন্য stakeholder-দের power/interest grid-এ বসানো হচ্ছে। ফার্মাসিস্টের project-এর সিদ্ধান্তে ক্ষমতা কম, কিন্তু প্রতিদিন system ব্যবহার করবেন বলে আগ্রহ খুব বেশি। প্রচলিত কৌশল অনুযায়ী তাঁর সাথে সম্পর্ক কেমন হওয়া উচিত?

  • Monitor — মাঝে মাঝে খোঁজ নিলেই চলবে
  • Keep satisfied — বড় সিদ্ধান্তের আগে শুধু একটি briefing
  • Keep informed — নিয়মিত interview, prototype পরীক্ষা আর হালনাগাদ খবর
  • কোনো সম্পর্ক দরকার নেই, কারণ তাঁর ক্ষমতা কম

একটি project-এ শুরুতে ১০ লাখ টাকা বিনিয়োগ লাগবে, আর পরের বছরগুলোতে প্রতি বছর ৪ লাখ টাকা নিট লাভ হবে। টাকার সময়-মূল্য বাদ দিয়ে সাধারণ payback period কত?

  • ২ বছর
  • ২.৫ বছর
  • ০.৪ বছর
  • ৩ বছর

একটি বিকল্পে শুরুতে ১০০ টাকা খরচ, আর ঠিক এক বছর পরে ১১০ টাকা ফেরত। Discount rate বছরে ১০% হলে NPV কত?

  • ১০ টাকা
  • ২১ টাকা
  • প্রায় ৯.০৯ টাকা
  • ০ টাকা

একজন অভিজ্ঞ কর্মী interview-এ নিজের কাজের ধারা পরিষ্কারভাবে বর্ণনা করতে পারছেন না, কারণ কাজটি তাঁর অভ্যাসে চলে। এই tacit knowledge বের করতে কোন কৌশল সবচেয়ে উপযোগী?

  • Observation বা job shadowing, প্রয়োজনে apprenticing
  • একটি বড় online questionnaire
  • আরও কঠোর structured interview
  • Brainstorming session

নিচের কোন বাক্যটি requirement নয়, বরং design-এর সিদ্ধান্ত?

  • ক্রেতা প্রেসক্রিপশনের ছবি দিয়ে অর্ডার দিতে পারবেন
  • অনুমোদনের পর দুই ঘণ্টার মধ্যে এলাকায় ডেলিভারি পৌঁছাবে
  • Order টেবিলে approved_by নামের একটি কলাম থাকবে
  • প্রেসক্রিপশন-আবশ্যক তালিকার ওষুধ প্রেসক্রিপশন ছাড়া নিশ্চিত হবে না

একটি দোকান তাদের ফেসবুক পেজে অনলাইন survey দিয়ে ৫০০টি উত্তর পেল; ৭০% বলছে তারা অ্যাপে অর্ডার দিতে চায়। কিন্তু দোকানের ক্রেতাদের বড় অংশ বয়স্ক, যাঁরা ফেসবুক কম ব্যবহার করেন। এই ফল থেকে কোন সিদ্ধান্তটি সবচেয়ে যুক্তিসংগত?

  • ৫০০টি উত্তর যথেষ্ট বড়, তাই “৭০% ক্রেতা অ্যাপ চান” বলা যায়
  • ফলটি sample bias-এ প্রভাবিত হতে পারে; বয়স মিলিয়ে দেখা আর অন্য পথে (কাউন্টার, ফোন) প্রশ্ন করা দরকার
  • Survey সবসময় অবিশ্বাস্য, তাই ফলটি পুরো উপেক্ষা করা উচিত
  • ৭০% চান বলে ফোনে অর্ডার নেওয়া বন্ধ করে শুধু অ্যাপ রাখা উচিত

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. অনেক project কোডে নয়, “কী বানাতে হবে”-র বোঝাপড়ায় ডোবে: ভুল বোঝা, বাদ পড়া stakeholder আর সামলানো হয়নি এমন বদল।
  2. RE-র সাতটি কাজ — inception, elicitation, elaboration, negotiation, specification, validation, management — একটি চক্র, যা পুরো project জুড়ে ঘোরে।
  3. Stakeholder খুঁজুন “আর কে?” প্রশ্নে; power/interest grid দিয়ে সম্পর্ক ঠিক করুন; customer আর user আলাদা হতে পারেন — প্রতিটি user class-এর কণ্ঠ শুনুন।
  4. কৌশল মেলান: interview-এ open প্রশ্ন আর নির্দিষ্ট ঘটনা, survey-তে sample bias-এর সতর্কতা, আর tacit knowledge-এর জন্য observation ও prototype.
  5. Feasibility পাঁচ দিকে (TELOS); টাকার হিসাবে payback আর NPV, তবে অনুমান আর discount rate লিখে রাখুন। Requirement বলে কী, design বলে কীভাবে.

পরের পর্বে: Interview আর observation থেকে candidate requirement পেলেন — এবার সেগুলো লেখার পালা। পর্ব ২১-এ functional আর non-functional requirement-এর পার্থক্য, “দ্রুত” আর “সহজ”-এর মতো অস্পষ্ট শব্দকে মাপা যায় এমন বাক্যে রূপ দেওয়া, আর SRS দলিলের কাঠামো।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান