چرخه توسعه نرمافزاری اجایل:
چرخه توسعه نرمافزاری اجایل به شش قسمت مختلف تقسیمبندی میشود:
مفهوم: شامل شناسایی فرصتهای بالقوه در کسبوکار و همچنین تخمین زمان و کار مورد نیاز برای پروژه است. سپس میتوان پروژهها را براساس اهمیت و ارزش اقتصادی اولویتبندی و پیگیری نمود.
شروع: افراد تیم شروع به شناسایی مشتریان و انجام صحبتهای اولیه با آنها میکنند. در این مرحله باید جدول زمانبندی مشخصی برای کارهای مختلف تیمها و تقسیمبندی وظایف آنها در هر اسپیرینت(به مدت زمانهای کوتاه دو هفته تا یک ماهه Sprint گفته میشود که در آن یکسری کارها یا قسمت مشخصی از پروژه انجام، تست و تحویلدهی میشود) طراحی شود.
تکرار-توسعه: زمانی است که تیم بر اساس نیازسنجی انجام شده و دریافت بازخوردها، آغاز به توسعه مراحل اولیه نرمافزار میکنند. چرخه توسعه نرمافزاری اجایل متکی بر سیکلهای تکرار و توسعه است که زنجیروار به یکدیگر متصل هستند و این چرخهها تا پایان پروژه تکرار میشوند.
یک چرخه تکرار معمولا شامل موارد زیر است:
1) تعریف نیازمندیها بر اساس عقب ماندن کاری، زمانی و بازخورد مشتریان
2) توسعه نرمافزار بر اساس اولویتبندیهای انجام شده
3) انجام تستهای سنجش کیفیت، آموزشهای لازم و مستندسازی
4) تحویلدهی و ادغام بخشهای جدید به محصول
5) تعامل داشتن با مشتریان برای ثبت بازخوردها و انجام تغییرات در پایان هر اسپیرینت و برنامهریزی برای اسپیرینت بعدی
انتشار: بعد از اتمام و انجام تمامی مراحل قبلی و حاصل شدن اطمینان از کیفیت محصولنهایی، مرحله انتشار قرار دارد.
تولید: بعد از مرحله انتشار مرحله تولید(Production) قرار دارد که تمرکزش بر روی پشتیبانی و نگهداری مستمر از نرمافزار است. تیم توسعهدهنده باید به خوبی نرمافزار را به اجرا در بیاورند و نحوه صحیح استفاده از آن را به مشتریان آموزش دهند. این مرحله تا زمانی که نرمافزار از رده خارج شود ادامه خواهد داشت.
بازنشستگی: این مرحله بخش نهاییست که شامل حرکات پایانی برای خاتمه دادن به عمر نرمافزار است، مانند: پیام دادن به مشتریان و اطلاعرسانی به آنها. این مرحله معمولا موقعی انجام میشود که نیاز به یک نرمافزار کم شده و دیگر کاربران زیادی مانند سابق ندارد و یا اینکه نسخه جدید در حال جایگزینی با نسخه قدیمی است.
در سرتاسر یک چرخه اجایل، امکانات مختلف قابل اضافه شدن به مراحل قبلی محصول هستند و مراحل مختلف آنقدر تکرار میشوند که تمامی قسمتها و امکانات رضایتبخش باشند. از این رو با در نظر گرفتن این ویژگی میتوان کفت که اجایل یک پردازش حلقهای(Loop Process) است بجای خطی.
روشهای مختلف پیادهسازی اجایل:
هدف اصلی اجایل امکان ایجاد تغییرات در حین انجام مراحل مختلف پروژه است. با این حال، هر یک از انواع مختلف اجایل در تعاریف و چگونگی انجام این تغییرات با یکدیگر متفاوت هستند.
بیشترین روشهای مورد استفاده اجایل عبارتند از:
- اسکرام(Scrum)
- رویکردهای ناب توسعه نرمافزاری(Lean Software Development)
- برنامهنویسی اکستریم(Extreme Programming)
- Crystal
- کانبان(Kanban)
- روش توسعه سیستمهای پویا(Dynamic Systems Development Method)
- توسعه ویژگی محور(Feature-driven Development)
اسکرام: یک ساختار ساده برای پیادهسازی اجایل است که مدیران پروژه میتوانند تمامی مراحل و چرخهها را با آن کنترل کنند. در اسکرام، مالک محصول یک بکلاگ ایجاد میکند که به او این اجازه را میدهد که با تیم خود کار کنند تا بتوانند عملکردهای سیستم را شناسایی و اولویتبندی کنند. یک بکلاگ محصول، لیستی از تمامی نیازمندهایی است که باید برای رسیدن به موفقیت پروژه انجام شوند که شامل مسائلی مانند: درست کردن خطاها و مشکلات سیستم، اضافه نمودن فیچرها و... هستند.
زمانی که مالک محصول و تیم توسعهدهنده اولویتبندیها را تنظیم کردند، تیم شروع به انجام وظایف در اسپرینتها میکند. بعد از هر اسپیرینت وظایف انجام شده بازنگری، آنالیز و دوباره اولویتبندی میشوند تا در صورت نیاز تغییرات مورد نیاز را اعمال کنند.
اسکرام به علت سادگی از محبوبیت بالایی برخوردار بوده و ثابت کردهاست که استفاده از آن بسیار اثرگذار و سازنده است.
رویکردهای ناب توسعه نرمافزاری: یکی دیگر از روشهای اجایل است که تمرکز آن بر روی استفاده مؤثر از "Value Stream Mapping" برای حاصل شدن اطمینان از باارزش بودن محصول نهایی برای مشتریان است. این روش بسیار منعطف و در حال تکامل است و همچنین دستورالعملهای سفت و سختی ندارد. این روش از یکسری اصول اولیه پیروی میکند که عبارتند از:
- افزایش یادگیری
- توانمندسازی تیم
- ایجاد یکپارچگی هرچه بیشتر
- حذف مسائل کم اهمیتتر که باعث هدر رفتن زمان میشوند
- درک کلی از پروژه
- تا حد امکان تصمیمگیریها دیر به دیر انجام شوند
- تحویلدهی هرچه سریعتر انجام شود
این روش سرعت تعامل بین مشتری و تیم را افزایش میدهد و بازخوردها میتواند سریعتر به دست تیمتوسعهدهنده برسد؛ به همین خاطر میتواند شرایطی ایجاد کند که اطمینان طرفین به یکدیگر افزایش یابد و جریانهای کاری و اجرایی با سرعت بالاتری پیش بروند. این روش همچنین این ویژگی را دارد که با حذف مسائل وقتگیر و کم ارزش به کار تیم سرعت قابل توجهی بدهد. از دیگر مزایای بسیار مهم این روش ارزیابی کار هر یک اعضای تیم است تا از مؤثر بودن کار هر یک از اعضاء اطمینان حاصل شود.
پایان قسمت دوم