অ্যাজাইল প্রিন্সিপল ও অ্যাজাইল ম্যানিফেস্টো
এই পাঠে যা শিখবেন
- অ্যাজাইল ম্যানিফেস্টোর চারটি মূল ভ্যালু স্টেটমেন্ট নির্ভুলভাবে বলতে পারবেন
- "বামপাশ বেশি গুরুত্বপূর্ণ, ডানপাশ অপ্রয়োজনীয় নয়" — এই গুরুত্বপূর্ণ সূক্ষ্ম পার্থক্যটি বুঝবেন
- অ্যাজাইলের কয়েকটি গুরুত্বপূর্ণ প্রিন্সিপল ও তাদের বাস্তব প্রভাব জানবেন
- পরিবর্তনের প্রতি সাড়া দেওয়ার খরচ ওয়াটারফল বনাম অ্যাজাইলে কীভাবে ভিন্নভাবে বাড়ে, তা Python দিয়ে গণনা করবেন
১ · অ্যাজাইল কী — একটি পরিবার, একটি একক মডেল নয়
অ্যাজাইলAgileSDLC পদ্ধতির একটি পরিবার, একক রিজিড মডেল নয় — হালকা-ওজনের, পুনরাবৃত্তিমূলক, পরিবর্তনের প্রতি সাড়া দেওয়ার উপর জোর দেয়। একটি গুরুত্বপূর্ণ কথা প্রথমেই স্পষ্ট করা দরকার — অ্যাজাইল কোনো একক, রিজিড SDLC মডেল নয়, বরং একাধিক পদ্ধতির একটি পরিবার (স্ক্রাম, কানবান, ও আরও অনেক কিছু — M2/L09-এ বিস্তারিত)। এই পরিবারটি জন্ম নিয়েছিল বিশেষভাবে ওয়াটারফলের (L05) মতো ভারী, প্রচুর ডকুমেন্টেশন ও আগাম পরিকল্পনা-নির্ভর মডেলের বিরুদ্ধে একটি হালকা-ওজনের প্রতিক্রিয়া হিসেবে। ২০০১ সালে ১৭ জন সফটওয়্যার ডেভেলপার একত্রিত হয়ে অ্যাজাইল ম্যানিফেস্টো প্রকাশ করেন — একটি বাস্তব, ঐতিহাসিকভাবে গুরুত্বপূর্ণ দলিল, যা আজও অ্যাজাইলের ভিত্তি হিসেবে বিবেচিত হয়।
২ · চারটি মূল ভ্যালু স্টেটমেন্ট
অ্যাজাইল ম্যানিফেস্টোর মূল কথাটি ঠিক এই চারটি স্টেটমেন্টে বলা আছে — এগুলো হুবহু মনে রাখার মতো গুরুত্বপূর্ণ:
over processes and tools — মানুষ ও পারস্পরিক যোগাযোগ, প্রসেস ও টুলের চেয়ে বেশি গুরুত্বপূর্ণ।
over comprehensive documentation — কার্যকরী সফটওয়্যার, বিস্তারিত ডকুমেন্টেশনের চেয়ে বেশি গুরুত্বপূর্ণ।
over contract negotiation — গ্রাহকের সাথে সহযোগিতা, কন্ট্রাক্ট নিয়ে দরকষাকষির চেয়ে বেশি গুরুত্বপূর্ণ।
over following a plan — পরিবর্তনের প্রতি সাড়া দেওয়া, পরিকল্পনা অনুসরণ করার চেয়ে বেশি গুরুত্বপূর্ণ।
ম্যানিফেস্টো স্পষ্টভাবে বলে যে ডানপাশের জিনিসগুলো (প্রসেস, ডকুমেন্টেশন, কন্ট্রাক্ট, পরিকল্পনা) এখনও মূল্যবান — অ্যাজাইল শুধু বামপাশের জিনিসগুলোকে বেশি গুরুত্ব দেয়, ডানপাশেরগুলোকে সম্পূর্ণ বাতিল করে না। এটি একটি প্রায়ই ভুল বোঝা বিষয় — "অ্যাজাইল মানে কোনো ডকুমেন্টেশন নয়" এমন ভাবা ভুল; সঠিক ব্যাখ্যা হলো "অ্যাজাইলে কাজ করা সফটওয়্যারকে ডকুমেন্টেশনের চেয়ে অগ্রাধিকার দেওয়া হয়"।
৩ · কয়েকটি গুরুত্বপূর্ণ প্রিন্সিপল
ম্যানিফেস্টোর সাথে বারোটি প্রিন্সিপল প্রকাশিত হয়েছিল — সবগুলো মুখস্থ করার দরকার নেই, কিন্তু কয়েকটি বিশেষভাবে গুরুত্বপূর্ণ এবং এই কোর্সের অন্যান্য পাঠের সাথে সরাসরি যুক্ত:
- ঘন ঘন কার্যকরী সফটওয়্যার ডেলিভার করুন — সপ্তাহ থেকে মাসের মধ্যে, ছোট সময়সীমার পছন্দ সহকারে — L06-এর ইনক্রিমেন্টাল ডেলিভারি ধারণার সরাসরি পুনর্ব্যবহার, এখন এটি একটি মূল অ্যাজাইল প্রিন্সিপল।
- প্রজেক্টের শেষ দিকেও পরিবর্তিত রিকোয়ারমেন্টকে স্বাগত জানান — L05-এর ওয়াটারফল অনুমানের সরাসরি, স্পষ্ট বিপরীত।
- ব্যবসায়িক মানুষ ও ডেভেলপারদের প্রতিদিন একসাথে কাজ করতে হবে — ক্রমাগত যোগাযোগের উপর জোর।
- কার্যকরী সফটওয়্যারই অগ্রগতির প্রাথমিক পরিমাপক — ডকুমেন্টেশন বা পরিকল্পনার সাথে "সামঞ্জস্য" নয়, বাস্তবে কাজ করা সফটওয়্যারই আসল প্রমাণ।
৪ · পরিবর্তনের খরচ — ওয়াটারফল বনাম অ্যাজাইল
"Responding to change over following a plan" — এই স্টেটমেন্টটি একটি সংখ্যাগতভাবে পরিমাপযোগ্য ধারণায় পরিণত করা যায়: একটি দেরিতে আসা পরিবর্তনের খরচ কেমন বাড়ে? ওয়াটারফলে দেরিতে পরিবর্তন মানে ইতিমধ্যে সম্পন্ন হওয়া ফেজগুলো (রিকোয়ারমেন্ট, ডিজাইন) পুনরায় খুলতে হয় — যত দেরিতে পরিবর্তন আসে, তত বেশি সম্পন্ন কাজ পুনরায় করতে হয়, তাই খরচ বাড়তেই থাকে। অ্যাজাইলে কাজ ছোট, স্বয়ংসম্পূর্ণ ইটারেশনে ভাগ করা থাকে — একটি পরিবর্তন সাধারণত শুধু চলতি ইটারেশনের মধ্যেই প্রভাব ফেলে, প্রজেক্টের মোট দৈর্ঘ্যের মধ্যে ঠিক কোথায় এটি আসে তার উপর তেমন নির্ভর করে না — তাই খরচ তুলনামূলকভাবে স্থির থাকে।
# ওয়াটারফল বনাম অ্যাজাইলে একটি দেরিতে আসা পরিবর্তনের মডেলকৃত খরচ
def compare_methodology_responsiveness(model_name, change_request_day, project_length_days,
iteration_length_days=10, cost_per_day_of_rework=2):
if model_name == "waterfall":
# আগের সম্পন্ন ফেজগুলো পুনরায় খুলতে হয় -- যত দেরিতে পরিবর্তন আসে, তত বেশি কাজ পুনরায় করতে হয়
return change_request_day * cost_per_day_of_rework
elif model_name == "agile":
# প্রতিটি ইটারেশন ছোট ও স্বয়ংসম্পূর্ণ -- পরিবর্তন শুধু চলতি ইটারেশনেই সীমাবদ্ধ, day নির্বিশেষে
return iteration_length_days * cost_per_day_of_rework
raise ValueError(f"অজানা মডেল: {model_name}")
project_length = 100
print(f"{'দিন':>6} | {'Waterfall খরচ':>15} | {'Agile খরচ':>11}")
for day in (10, 50, 90):
wf_cost = compare_methodology_responsiveness("waterfall", day, project_length)
ag_cost = compare_methodology_responsiveness("agile", day, project_length)
print(f"{day:>6} | {wf_cost:>15} | {ag_cost:>11}")
change_request_day * cost_per_day_of_rework সরাসরি day-এর উপর নির্ভরশীল। Agile
কলামের সংখ্যা (২০, ২০, ২০) সবসময় একই থাকছে — কারণ এটি নির্ভর করে শুধু iteration_length_days-এর
উপর, যা day নির্বিশেষে স্থির। এটিই সংখ্যাগতভাবে দেখায় কেন অ্যাজাইল "পরিবর্তনের প্রতি সাড়া
দেওয়াকে" মূল্য দেয়।
অ্যাজাইল একটি রিজিড মডেল নয়, একটি ভ্যালু সিস্টেম — মানুষ, কার্যকরী সফটওয়্যার, সহযোগিতা ও পরিবর্তনের প্রতি সাড়া দেওয়াকে অগ্রাধিকার দেয়, কিন্তু প্রসেস, ডকুমেন্টেশন, কন্ট্রাক্ট বা পরিকল্পনাকে বাতিল করে না। পরবর্তী পাঠে (L09) আমরা দেখব এই মূল্যবোধগুলো বাস্তবে কীভাবে দুটো নির্দিষ্ট, বহুল-ব্যবহৃত ফ্রেমওয়ার্কে (স্ক্রাম ও কানবান) রূপ নেয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ "অ্যাজাইল মানে কোনো ডকুমেন্টেশন লেখা লাগে না" — এই ধারণাটি কি সঠিক? কেন বা কেন নয়?
না, এটি একটি সাধারণ ভুল বোঝাবুঝি। ম্যানিফেস্টো স্পষ্টভাবে বলে "working software over comprehensive documentation" — অর্থাৎ কার্যকরী সফটওয়্যারকে বিস্তারিত ডকুমেন্টেশনের চেয়ে বেশি গুরুত্ব দেওয়া হয়, ডকুমেন্টেশন সম্পূর্ণ বাতিল করা হয় না। বাস্তবে অনেক অ্যাজাইল টিমই প্রয়োজনীয়, হালকা-ওজনের ডকুমেন্টেশন রাখে — শুধু ওয়াটারফলের মতো ভারী, আগাম-সম্পূর্ণ ডকুমেন্টেশনের উপর নির্ভর করে না।
প্র ০২ L05-এর ওয়াটারফল মডেলের কোন নির্দিষ্ট অনুমানটিকে অ্যাজাইল ম্যানিফেস্টো সবচেয়ে সরাসরিভাবে চ্যালেঞ্জ করে?
"Responding to change over following a plan" স্টেটমেন্টটি ওয়াটারফলের সেই অনুমানকে সরাসরি চ্যালেঞ্জ করে যে রিকোয়ারমেন্ট প্রজেক্ট শুরুর আগেই সম্পূর্ণভাবে জানা ও স্থির থাকবে। ওয়াটারফল ধরে নেয় পরিবর্তন বিরল ও ব্যয়বহুল বলে এড়ানো উচিত; অ্যাজাইল ম্যানিফেস্টো স্পষ্টভাবে বলে "প্রজেক্টের শেষ দিকেও পরিবর্তিত রিকোয়ারমেন্টকে স্বাগত জানান" — একেবারে বিপরীত অবস্থান।
প্র ০৩
কোড সেলে agile মডেলের খরচ day প্যারামিটার নেওয়া সত্ত্বেও কেন তিনটি ভিন্ন দিনের জন্য একই ফলাফল দিচ্ছে?
কারণ agile শাখার গণনা (iteration_length_days * cost_per_day_of_rework)
ফাংশনের day প্যারামিটারটি একেবারেই ব্যবহার করে না — এটি শুধু নির্ভর করে ইটারেশনের
দৈর্ঘ্যের উপর, যা পুরো প্রজেক্ট জুড়ে স্থির থাকে। এটিই ঠিক সেই ধারণা যা কোডে প্রতিফলিত করা হয়েছে: ছোট,
স্বয়ংসম্পূর্ণ ইটারেশনে সংগঠিত কাজে, পরিবর্তন প্রজেক্টের ঠিক কোন দিনে আসছে তার উপর খরচ নির্ভর করে না।
অনুশীলন
-
চিন্তা করুন: একটি টিম দাবি করে তারা "অ্যাজাইল" কারণ তারা কোনো ডকুমেন্টেশন লেখে না এবং কোনো
পরিকল্পনা করে না। এই দাবিতে কী সমস্যা আছে, ম্যানিফেস্টোর ভাষা অনুযায়ী ব্যাখ্যা করুন।
সমস্যা হলো টিমটি "over" শব্দের অর্থ ভুল বুঝেছে — ম্যানিফেস্টো ডানপাশের জিনিসগুলোকে (ডকুমেন্টেশন, পরিকল্পনা) বাতিল করে না, শুধু বামপাশেরগুলোকে বেশি অগ্রাধিকার দেয়। ডকুমেন্টেশন বা পরিকল্পনা একেবারেই না থাকা মানে অ্যাজাইল নয় — এটি বরং শৃঙ্খলার অভাব, যা টিমকে দীর্ঘমেয়াদে সমস্যায় ফেলতে পারে।
-
পরীক্ষা করুন: কোড সেলে
iteration_length_daysমান ১০ থেকে ৩০-এ পরিবর্তন করে Run চেপে দেখুন Agile কলামের সংখ্যা কীভাবে বদলায় এবং কেন।Agile কলামের সংখ্যা তিনটি দিনের জন্যই ২০ থেকে ৬০-এ বেড়ে যাবে (৩০ × ২), কারণ সূত্রটি সরাসরি
iteration_length_days-এর উপর নির্ভরশীল — কিন্তু এখনও তিনটি সংখ্যাই একে অপরের সমান থাকবে (day নির্বিশেষে)। এটি একটি বাস্তব, গুরুত্বপূর্ণ পয়েন্টও প্রকাশ করে: দীর্ঘ ইটারেশন অ্যাজাইলের "সাড়া দেওয়ার" সুবিধা কমিয়ে দেয় — তাই ছোট ইটারেশন সাধারণত পছন্দ করা হয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৮টি পাঠ পরবর্তী পাঠগুলো — স্ক্রাম, কানবান, রিকোয়ারমেন্ট ইঞ্জিনিয়ারিং ও আরও অনেক কিছু।
- স্ক্রাম ও কানবান ফ্রেমওয়ার্ক পরের পাঠ অ্যাজাইলের বিমূর্ত মূল্যবোধ বাস্তবে কীভাবে দুটো নির্দিষ্ট, বহুল-ব্যবহৃত ফ্রেমওয়ার্কে রূপ নেয়।
- এস্টিমেশন টেকনিক — স্টোরি পয়েন্ট ও প্ল্যানিং পোকার মডিউল ১৩ অ্যাজাইল টিমগুলো কীভাবে কাজের আকার অনুমান করে — এই পাঠের ভ্যালু সিস্টেমের একটি প্রায়োগিক প্রসারণ।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design ও Software Engineering & Git — সব এক জায়গায়।