توسعه‌ی چابک نرم‌افزار | مهندسی نرم‌افزار

توسعه‌ی چابک نرم‌افزار

توسعه‌ی چابک یا Agile یک رویکرد تحویل نرم‌افزار مبتنی بر تکرار و با زمان محدود است. در این رویکرد، به‌جای تلاش برای تحویل همه‌ی نرم‌افزار به‌صورت یکجا، پروژه از شروع آن به‌صورت تدریجی ساخته می‌شود.

 

چرا چابک؟

تکنولوژی در عصر ما سریع‌تر از همیشه در حال پیشرفت است. همین مسئله شرکت‌های نرم‌افزاری را وادار به کار در محیط‌هایی کرده است که به‌سرعت تغییر می‌کنند. یعنی این شرکت‌ها در محیط‌های همیشه در حال تغییر کار می‌کنند. بنابراین جمع‌آوری مجموعه‌ی همه‌ی نیازمندی‌های پروژه‌های نرم‌افزاری به‌صورت کامل و جامع غیرممکن است. بدون این مجموعه نیازمندی‌ها، کار کردن برای اکثر مدل‌های مرسوم تولید نرم‌افزار، عملاً سخت می‌شود. مدل‌های مرسوم تولید نرم‌افزار مانند مدل آبشاری، کاملاً به مشخص کردن نیازمندی‌ها، طراحی و تست سیستم نیازمند هستند. این مدل‌ها برای توسعه‌ی سریع نرم‌افزار مناسب نیستند. درنتیجه، یک مدل مرسوم توسعه‌ی نرم‌افزار، در شرایطی که گفتیم؛ در ارائه‌ی محصول موردنیاز شکست می‌خورد.

اینجا، جایی است که مدل توسعه‌ی چابک نرم‌افزار به کمک می‌آید. این مدل، به‌طور خاص برای رفع نیازهای محیط‌های تغییر کننده با سرعت زیاد طراحی‌شده است. به این صورت که توسعه‌ی افزایشی را ملاک قرار می‌دهد و با این هدف شروع به توسعه‌ی محصول نهایی واقعی می‌کند.

حالا می‌خواهیم چیزهایی که پایه‌های مدل چابک روی آن‌ها بناشده را بررسی کنیم.

 

اصول و قوانین:

  1. بالاترین اولویت رضایت مشتری است. این رضایتمندی از طریق تحویل زود و پیوسته‌ی نرم‌افزار باکیفیت تأمین می‌شود.
  2. این مدل توسعه‌ی نرم‌افزار از تغییر نیازمندی‌ها استقبال می‌کند. حتی اگر تغییرات در اواخر توسعه‌ی نرم‌افزار اتفاق بیفتد.
  3. نرم‌افزار به‌صورت پشت سرهم تحویل داده می‌شود. در بازه‌های زمانی یکی دو هفته تا یکی دو ماه، و ترجیحاً در کوتاه‌ترین بازه‌های زمانی ممکن این کار صورت می‌گیرد.
  4. پروژه‌ها در مدل توسعه‌ی چابک نرم‌افزار باید توسط افراد باانگیزه انجام شود. باید محیط مناسب را برای آن‌ها فراهم کرده و از آن‌ها حمایت کنید. نیازهایشان را برطرف کرده و به آن‌ها اعتماد کنید. به این صورت کارها طبق این مدل پیاده‌سازی خواهند شد.
  5. اولین مبنای اندازه‌گیری و سنجش میزان پیشرفت کار، نرم‌افزاری است که به‌درستی کار کند.
  6. ساده‌سازی؛ هنری که باعث به حداکثر رساندن میزان کار انجام‌شده می‌شود؛ یک نیاز ضروری است.
  7. مؤثرترین و کارآمدترین روشِ انتقال اطلاعات به تیم توسعه، گفتگوی چهره به چهره یا Face-to-Face است.

 

توسعه در مدل چابک:

می‌خواهیم بر چگونگی روند توسعه در فلسفه‌ی مدل توسعه‌ی چابک نرم‌افزار، یک نگاه مختصر داشته باشیم.

 

مثال

برای فهم بهتر در مورد اینکه مدل توسعه‌ی چابک نرم‌افزار چطور کار می‌کند؛ یک مثال می‌زنیم.

یک شرکت نرم‌افزاری بانام ABC می‌خواهد یک مرورگر وب برای آخرین نسخه‌ی سیستم‌عامل خودش بسازد. مهلت انجام این پروژه 10 ماه است. مدیران شرکت برای این پروژه، دو تیم بانام‌های تیم A و تیم B را اختصاص داده‌اند. برای ایجاد انگیزه در اعضای تیم‌ها، مدیریت شرکت برای تیمی که زودتر از تیم دیگر پروژه را انجام دهد پاداش در نظر گرفته است. این پاداش شامل افزایش حقوق و یک هفته مرخصی شامل برنامه‌ی مسافرت با تأمین هزینه‌های آن است. با رؤیای یک سفر بسیار لذت‌بخش، دو تیم برای ساختن مرورگر وب شروع به کارکردند. تیم A تصمیم گرفت تا کاملاً بر اساس اصول و قوانین عمل کنند. بنابراین مدل توسعه‌ی آبشاری را برای انجام پروژه انتخاب کردند. تیم B بعد از یک گفتگوی طولانی تصمیم گرفت تا ریسک کنند و مدل توسعه‌ی چابک نرم‌افزار را انتخاب کردند.

 

برنامه‌ی توسعه‌ی تیم A به‌صورت زیر بود:

 

برنامه‌ی توسعه‌ی تیم B به‌صورت زیر بود:

 

شروع به کار تیم‌ها

هر دو تیم تمام تلاش خودشان را می‌کنند تا محصول را به مرحله‌ی کامل شدن برسانند. اما ناگهان، به دلیل تغییرات سریع محیط‌های کاری که در ابتدای مقاله توضیح دادیم؛ اتفاق پیش‌بینی‌نشده‌ای رخ داد. مدیران شرکت به‌صورت کامل، مجموعه‌ای از ویژگی‌های جدیدی برای پیاده‌سازی ارائه کردند. همچنین آن‌ها خواستند تا جایی که ممکن است سریع‌تر این کار انجام شود و یک مدل قابل‌اجرا از پروژه را ظرف مدت 2 روز آماده کنند.

 

برخورد تیم A با این مشکل

تیم A در این زمان هنوز در مرحله‌ی طراحی بودند و هنوز کد نویسی پروژه را شروع نکرده بودند. بنابراین هیچ مدل قابل‌اجرایی از برنامه برای نمایش به مدیران نداشتند. همچنین اضافه کردن ویژگی‌های جدید به پروژه، عملاً برای آن‌ها غیرممکن است. زیرا در مدل آبشاری هیچ جایی برای برگشت به فازهای قبلی وجود ندارد. یعنی تیم A باید مراحل را دوباره از اول شروع کنند. این کار باعث می‌شود که آن‌ها هزینه‌ی سنگین و اضافه‌کاری بسیاری را متحمل شوند.

 

برخورد تیم B با این مشکل

تیم B به لطف انتخاب مدل توسعه‌ی چابک نرم‌افزار، در جنبه‌های زیادی از تیم A جلوتر بود. همچنین آن‌ها از اولین مرحله، یک برنامه‌ی قابل‌اجرا ساخته بودند که فقط یک سری از ویژگی‌های پایه‌ای را دارا بود. درنتیجه اضافه کردن لیست جدید نیازمندی‌های موردنظر مدیران شرکت، برای آن‌ها به‌راحتی قابل انجام بود. تنها کاری که آن‌ها باید انجام می‌دادند این بود که این نیازمندی‌های جدید را برای توسعه، در مرحله‌ی افزایشی بعدی زمان‌بندی کنند.

این مثال به‌خوبی نحوه‌ی انجام پروژه و برخورد با تغییرات را در مدل توسعه‌ی چابک نرم‌افزار نشان می‌دهد.

 

مزایای مدل توسعه‌ی چابک نرم‌افزار:

 

معایب مدل توسعه‌ی چابک نرم‌افزار:

 

مدل توسعه‌ی چابک نرم‌افزار یک چارچوب است که چگونگی انجام توسعه‌ی نرم‌افزار را تعریف می‌کند. مدل چابک فقط یک روش نیست. این مدل مجموعه‌ی مختلفی از روش‌ها را ارائه می‌کند و توصیه می‌کند که دستورات باارزشِ ارائه‌شده در برنامه را دنبال کنید. روش چابک توانایی حل تمام مشکلات در موجود در صنعت تولید نرم‌افزار را ندارد (درواقع هیچ مدل توسعه‌ی نرم‌افزاری این توانایی را ندارد). اما این مدل مطمئناً به ایجاد فرهنگ کاری و بنا کردن یک محیط کاری کمک می‌کند. فرهنگ کاری و محیطی که به دنبال پیدا کردن راه‌حل برای مشکلات احتمالی است.