نگرش اَجایل (Agile) و روش های پیاده سازی آن
توسعه نرمافزاری اجایل چیست؟
توسعه نرمافزاری اجایل روشی برای شناسایی میزان انعطافپذیری و سطح عملگرایی مورد نیاز برای تولید یک محصول است. تمرکز این روش بر روی تحویلدهی بینقص بخش به بخش است، نه کل نرمافزار به صورت یکجا. به همین خاطر پیادهسازی و انجام آن در شرکتهای مختلف نیازمند ایجاد تغییرات اساسی در فرهنگ سازمانی آنهاست.
یکی از مزایای بسیار خوب این روش ایجاد چشمانداز مناسب در رابطه با مسیر پیشرفت پروژه در عین تمرکز بالای آن بر روی بخشهای مختلف است.
یکی دیگر از مزایای بسیار مهم اجایل، کار تیمی است. این روش فرهنگ کار تیمی را به خوبی در تیمها و شرکتهای مختلف گسترش میدهد زیرا با اینکه هر شخص یا تیم روی قسمت خاصی مشغول به کار است اما بهگونه ای باهم در ارتباط هستند که توسعه اپلیکیشن با همکاری کامل و کار تیمی انجام میشود.
در پایان شرکتهایی که از این روش استفاده میکنند، به علت دقت مناسب آن و تست کردن بخش به بخش اپلیکیشن، میتوانند خاطر جمع باشند که محصولنهایی آنها با کیفیتی بسیار مطلوب و در زمانبندی مناسب تحویل داده خواهدشد.
تاریخچه:
در اواخر دهه 1970، شاهد انقلابی در صنعت کامپیوترهای شخصی بودیم که این امکان را برای افراد عادی به وجود آورد تا به دنیای کامپیوترهای مدرن دسترسی داشتهباشند. تقاضا برای تکنولوژی نوظهور و کاربردی روزبهروز افزایش یافت و کمپانیها برای پاسخگویی به این حجم بالای تقاضا مجبور به ارتقا دادن و تکامل کسبوکار خود شدند. از طرفی روشهای بسیار سفتوسخت و غیرمنعطفی که قبلتر مورد استفده قرار میگرفتند دیگر پاسخگوی ارائه خدمات به صورت مناسب، سریع و باکیفیت بالا نبودند. در نتیجه شرکتها مجبور به تغییر روش توسعه نرمافزاری خود شدند.
در اوایل دهه 1990، گروه کوچکی از رهبران صنعت نرمافزار شروع به ایجاد تغییراتی در روشهای قدیمی کردند که تمرکز بیشتری بر روی سرعت تحویلدهی، سازگاری و انعطاف در مقابله با تغییرات داشته باشد.
در سال 2001، گروه کوچکی متشکل از 17 تن از رهبران صنعت نرمافزار باهم نشستی را برگزار کردند. این نشست اولین جایی بود که نامی از "توسعه نرمافزاری چابک" به عنوان یک نگرش منعطف و سریع در تحویلدهی نرمافزار و انجام پروژهها با ساختاری چرخهای به میان آمد. مطرح شدن این روش خلاء یک روش مناسب برای پیشبرد پروژهها را پر کرد و خیلی سریع جای روشهای قدیمی را گرفت.
از سال 2001 به بعد، نگرش اجایل روزبهروز محبوبیت بیشتری در میان تیمهای توسعهدهنده و کمپانیهای مختلف پیدا کرد و به علت انعطافپذیری بالای آن، خیلی سریع با نگرش اکثر سازمانها و شرکتها سازگار شد.
اصول 4 گانه اجایل:
در سال 2001، جمعی از بزرگان صنعت نرمافزار گرد هم جمع شدند و در مورد موضوع توسعه نرمافزاری به بحث نشستند که ماه عسل این نشست تدوین اصول 4گانه اجایل به نام "Agile Manifesto" بود که در ادامه به توضیح هر یک از آنها خواهیم پرداخت:
تعاملات فردی از اهمیت بالاتری نسبت به فرآیندها و ابزارها برخوردارند: افراد هدایتگر مسیر توسعه هستند و پاسخگوی نیازهای مختلف یک کسبوکار هستند. آنها مهمترین بخش مسیر توسعه هستند و ارزشگذاری آنها باید بالاتر از فرآیندها و ابزارها باشد. اگر این ارزشگذاری برعکس اتفاق بیفتد و افراد در اولویت پایینتری قرار گیرند، احتمال عدم پیشرفت مناسب در مسیر توسعه بسیار زیاد است.
تمرکز باید بر روی تکمیل و توسعه نرمافزار باشد تا بر روی مستندسازی: قبل از روش اجایل، بیشتر وقت تیم توسعهدهنده به جای توسعه نرمافزار صرف مستندسازی میشد. این مستندسازیها شامل جزئیات ریز زیادی بودند که مسیر توسعه نرمافزار را نیز سخت میکردند. با ورود روش اجایل، مستندسازی به طورکل حذف نشد بلکه مستندسازی را بهینهسازی کرد، به گونهای که فقط اطلاعات مهم و ضروری مستند شده و از نوشتن تمام جزئیات پرهیز میشود.
داشتن تعاملات بیشتر به جای قراردادهایی با جزئیات زیاد: این اصل اشاره به این دارد که، به جای عقد قرار بسیار دقیق در ابتدای کار، تعاملات بین کارفرما و مجری بیشتر شود. این اصل به ما این اجازه را میدهد که در طول مراحل ساخت و توسعه یک نرمافزار با کارفرما در ارتباط باشیم و تأییدیه مرحله به مرحله برای قسمتهای مختلف پروژه را از او بگیریم. مهمترین مزیت این کار این است که در انتهای پروژه و در زمان تحویلدهی نیازمند تغییرات اساسی نیستیم زیرا در گذشته هر مرحله به تأیید کارفرما رسیدهاست.
سخت بودن تغییرات: روشهای قدیمی توسعه نرمافزاری در مقابل تغییرات مقاومت میکردند زیرا این تغییرات مستلزم هزینه و زمان بود اما اجایل این مشکل را حل کرد. توسعه مرحله به مرحله این اجازه را به توسعهدهندگان و کارفرمایان داد که به راحتی در هر مرحله تغییرات مورد نظرشان را اعمال کنند و در انتهای پروژه تغییرات اساسی نداشته باشند که نیاز به صرف هزینه و زمان زیادی داشته باشد.
12 اصل اجایل:
- رضایتمندی مشتری و تحویلدهی مداوم باعث ارزشمند شدن کار میشود
- امکان ایجاد تغییرات در تمامی مراحل توسعه حتی در مراحل پایانی
- تحویلدهی مداوم و بخش به بخش پروژه و گرفتن تأییدیه از کارفرما
- ایجاد تعامل بین کارفرما و تیم توسعهدهنده در تمامی مراحل پروژه
- افزایش یافتن انگیزه تیم با اطمینان کردن به آنها و کسب اعتمادشان
- ایجاد تعاملات بیشتر با اعضای تیم از طریق مختلف مانند ویدیو کنفرانس، کار در یک محل مشخص و...
- اولویت بودن موفقیت پروژه به جای بررسی جزئیات هر مرحله از فرآیند
- فرآیندهای اجایل از توسعه مداوم حمایت میکنند
- بررسی مرحله به مرحله پروژه، ایجاد تغییرات مورد نظر در هر مرحله و رفع خطاها باعث جلوگیری از دوباره کاری و هدر رفتن زمان میشود
- سادهسازی پروژه برای چابکی بیشتر و حذف موارد غیرضروری
- مشاهده بهترین عملکردها از تیمهای خودسازماندهی شده
- پیروی نکردن کورکورانه از پروتکل و ایجاد تغییرات مناسب با توجه به مسیر توسعه
پایان قسمت اول