متدولوژی چابک (agile) در توسعه نرم افزار
پیشرفت تکنولوژی، شتاب تغییرات و توسعه بازارها، کسب و کارها را مجبور کرده که بسیار منعطف باشند و بتوانند با درک مناسب و سرعت هرچه بیشتر، نیاز مشتری را پاسخ دهند. توسعه نرم افزار چابک یا Agile، متدولوژی مدرنی در توسعه نرم افزار است که بر پایه دریافت بازخورد مستمر از مشتری، تیم تولید و توسعه را با توانمندی های انعطاف، خلاقیت و عملکرد سریع در ایجاد ارزش، سازمان می دهد.
توسعه نرم افزار چابک، مستلزم فرهنگی متفاوت در شرکت هاست. رویکرد Agile، فرهنگی مشارکتی را تسهیل می کند که کارایی و اثربخشی را در سازمان ارتقا می بخشد زیرا افراد با توانمندی های چند جانبه، در تیم هایی با هم کار می کنند که از ایجاد ارزش برای مشتری، درک مناسبی دارند و جایگاه و نقش خود را در این فرایند به خوبی می شناسند.
سازمان هایی که از متدولوژی توسعه نرم افزار چابک استفاده می کنند می توانند از عرضه محصولی با کیفیت بالا، مطمئن باشند چراکه تولید و توسعه محصول، با دریافت و تحلیل مستمر بازخورد مشتری همراه است؛ به ویژه تست نرم افزار به موازات گام های توسعه، انجام می شود.
تفاوت کلیدی این رویکرد با روش های سنتی تولید و توسعه نرم افزار در تعریف و عرضه مستمر و کوتاه مدت محصول کاربردی است. در این روش به جای تعریف یک پروژه بلند مدت و خطی، نسخه هایی با کارکرد رو به تکامل و در بازه های زمانی کوتاه، عرضه شده و با دریافت و تحلیل بازخورد مشتری، فاز بعدی آغاز می شود.
متدولوژی Agile چیست؟
شکل گیری این روش به سال 2001 و همفکری و مباحثات گروهی 17 نفره از متخصصین توسعه نرم افزار بر می گردد که با هدف نگرشی بهتر به فرایند توسعه نرم افزار، بیانیه Agile را تنظیم کردند. این رویکرد با استقبال شرکت های نرم افزاری مواجه شد و به مرور زمان، توسعه یافته و در قالب تکنیک ها و روش های ساختار یافته، عرضه و مورد استفاده قرار گرفت. مفاهیم و رویکردها در این بیانیه به قدری قابل درک و کاربردی هستند که کاربرد آن به صنعت IT محدود نشده و در حوزه های مختلفی از صنایع تولیدی و خدماتی به کار گرفته می شود.
بیانیه رویکرد چابک
بیانیه رویکرد چابک، شامل 4 ارزش و 12 اصل است که به تبیین فلسفه Agile می پردازد. سازمان ها با بکارگیری آن، به تناسب فرهنگ و قابلیت های خود، انعطاف پذیری را در اولویت قرار داده و در سازگاری تغییر در محیط ناشناخته، توانمند شده و تولید محصول و خدمت در سطح کیفی متمایزی را تجربه می کنند.
اولویت افراد و تعاملات بر فرایندها و ابزارها
این افراد هستند که فرایند توسعه را پیش می برند و به نیازهای کسب و کار پاسخ می دهند. افراد، مهم ترین بخش توسعه هستند و با وجود اهمیت فرایندها و ابزارها، باید برای افراد، اولویت و ارزش بیشتری قائل شد. ارجحیت ابزاری، قابلیت انعطاف و انطباق با نیاز مشتری را کاهش می دهد.
اولویت کارکرد نرم افزار بر جامعیت مستندات
در فلسفه چابک، فرایند مستندسازی، از اهمیت و ارزش برخوردار است اما تا حدی آن را ساده می کند که فقط اطلاعات مورد نیاز توسعه دهنده برای انجام کار، تامین شود و از صرف زمان های طولانی برای تولید مستندات پیچیده، می پرهیزد. آنچه ارزشمند است و اولویت دارد، کارایی نرم افزار است و فرایند مستندسازی باید همواره در خدمت این ارزش کلیدی باشد.
اولویت همکاری با مشتری بر توافقات قرارداد
تنظیم سطح خدمات و توافقات پایه در قرارداد، امری ضروری است ولی محوریت تامین نیاز مشتری در تولید محصول، اطلاع و درک مستمر از خواست مشتری را در اولویت قرار می دهد. در رویکرد چابک، تیم کسب و کار و تیم توسعه محصول به طور مستمر با مشتری در ارتباط هستند تا اطمینان یابند که نرم افزار، خواسته های مشتری را به خوبی برآورده می سازد. در برخی از تکنیک های عملیاتی چابک و در طراحی نسخه های محصول، جلساتی با حضور نمایندگان گروه های مختلف مشتری تشکیل شده و سناریوهایی برای کاربری نرم افزار تنظیم می شود. طراحی و مدل سازی، براساس بهترین کارکرد محصول در سناریوها انجام می گیرد.
اولویت پاسخ به تغییرات بر برنامه تنظیم شده
نقشه راه و تعهد به برنامه تنظیم شده تولید، اهمیت زیادی برای هماهنگی و تخصیص بهینه منابع دارد اما در متدولوژی توسعه نرم افزار چابک، این تعهد، مانع از واکنش مناسب به تغییرات محیطی و یا نیاز مشتری نمی گردد.
انتشار نسخ کاربردی محصول در بازه های کوتاه زمانی، این امکان را ایجاد می کند که تغییرات، گام به گام و به راحتی انجام شود. همچنین فرصتی را فراهم می سازد که برنامه و فرایند توسعه به بهترین شکل، متناسب با نیازها تنظیم شود. در فلسفه چابک، تغییر، مجالی است برای بهبود پروژه و ایجاد ارزش افزوده.
12 اصل Agile
- راضی نگه داشتن مشتری با عرضه سریع و مستمر محصول ارزش افزا
- پذیرش تغییر نیاز و درخواست مشتری، حتی در لحظات پایانی کار
- عرضه مستمر محصولی که کار می کند (تناوب هفتگی بر ماهانه ترجیح دارد)
- جلسات روزانه و نزدیک بین تیم کسب و کار و توسعه دهندگان
- اعتماد به انگیزه های فردی اعضای تیم که پروژه بر پایه آن شکل گرفته و پیش می رود
- ارتباط و گفت و گوی رو در رو که بهترین و موثر ترین شیوه تعاملی است
- محصولی که کار می کند، کلیدی ترین شاخص ارزیابی پیشرفت است
- فراهم ساختن پایداری و سرعتی ثابت در توسعه
- توجه مستمر به برتری های فنی و طراحی خوب
- ضرورت ساده سازی، به معنای اجتناب حداکثری از انجام کارهای اضافی
- تیم های خود سازمانده، بهترین معماری، الزامات و طراحی ها را ارائه می دهند
- توجه مستمر تیم به ارتقای اثربخشی و هماهنگی در راستای آن
چرخه توسعه نرم افزار Agile
چرخه توسعه نرم افزار چابک را می توان به شش مرحله تقسیم کرد: مدل سازی مفهومی، سازماندهی، چرخه تکرارپذیر ساخت، انتشار، عرضه محصول و خروج از بازار.
مدل سازی مفهومی
مدل سازی مفهومی در اولین گام، شامل شناسایی فرصت های تجاری بالقوه، تخمین زمان و کاری است که برای تکمیل پروژه لازم است. این برآورد برای امکان سنجی و شناسایی پروژه های سودآور مورد استفاده قرار می گیرند.
سازماندهی
در گام سازماندهی، اعضای تیم، شناسایی شده، و بودجه ریزی انجام می شود. در جلساتی رو در رو با مشتری، نیازها و الزامات اولیه مورد بحث قرار می گیرد. در این مرحله، نقشه راه، ترسیم شده و مشخص می شود در هر بازه زمانی باید چه بخشی از کار قابل ارائه، تکمیل گردد. به این بازه های مشخص در اصطلاح روش چابک؛ Sprint یا یک تاخت گفته می شود.
چرخه تکرارپذیر ساخت
ساخت، گامی تکرارپذیر است و براساس شرح نیاز و الزامات، تیم ها دست به کار شده و در هر تاخت یا Sprint، نسخه ای از محصول را ایجاد و برای دریافت بازخورد، ارائه می کنند. هر تاخت، معمولا بین دو تا چهار هفته طول می کشد و هدف، این است که در پایان هر دوره، یک خروجی کارا عرضه شود. توسعه نرم افزار چابک بر نتایج این تاخت ها استوار است و با شکل گرفتن محصول نهایی، پروژه به فاز عرضه نهایی وارد می شود.
تکرارهای متعددی در طول چرخه توسعه رخ می دهد که هر کدام گردش کار خود را دارند. هر تکرار به طور کلی شامل این مراحل است:
• تعریف الزامات بر اساس: فهرست کارهای قابل انجام روی محصول نهایی، فهرست کارهای قابل انجام در تاخت پیش رو و بازخورد دریافتی از مشتریان و ذینفعان
• توسعه نرم افزار بر اساس الزامات تعیین شده
• انجام تست تضمین کیفیت، آموزش و مستندسازی داخلی و خارجی
• انتشار و ادغام کار در محصول اصلی
• جمع آوری بازخورد مشتری و ذینفعان برای تعریف الزامات جدید در تاخت بعدی
تکرارها تا زمانی ادامه می یابند که فهرست کارهای قابل انجام خالی شود.
انتشار محصول
در چهارمین گام و انتشار محصول، تست تضمین کیفیت نهایی، انجام شده و هرگونه اشکال و نقصی برطرف می شود. سیستم و مستندات کاربری، تکمیل شده و محصول آخرین تاخت برای عرضه نسخه نهایی آماده می گردد.
عرضه محصول
در گام پنجم، عرضه محصول بر خدمات پشتیبانی و نگهداری نرم افزار، تمرکز دارد. تیم ها باید نرم افزار را به خوبی نصب و راه اندازی کرده و نحوه استفاده از آن را به کاربران آموزش دهند. این گام تا پایان حیات محصول یا برنامه خروج آن از بازار ادامه می یابد.
خروج از بازار
مرحله آخر، خروج از بازار، شامل تمام فعالیت های پایان عمر، مانند اطلاع رسانی به مشتریان و مهاجرت نهایی است. انتشار نسخ محصول در چرخه توسعه باید متوقف شود. خروج از بازار، زمانی اتفاق می افتد که باید تکنولوژی جدیدی جایگزین شود و یا سیستم، قدیمی و غیر کاربردی شده باشد و عرضه محصول در تقابل با استراتژی کسب و کار قرار گیرد.
پرکاربردترین روش های چابک
• Scrum
• Lean software development
• Extreme programming
• Crystal
• Kanban
• Dynamic systems development method
• Feature-driven development
مزایا و معایب Agile
در روش های سنتی توسعه نرم افزار، کدنویس ها به تنهایی کار می کردند و تا قبل از تحویل کد خروجی، تست کننده و سایر اعضای تیم، هیچ اطلاع و خبری از آن نداشتند. اشکالات، پیچیدگی ها و تغییرات فیچرها به خوبی مدیریت نمی شد و تاخیرها و عدم درک متقابل، باعث اختلال در روند پروژه و یا حتی پاک شدن صورت مساله کلی و از دست رفتن پروژه می شد.
فلسفه چابک در توسعه نرم افزار، با این رویکرد که همه، از جمله بخش تجاری، در فرایند توسعه مشارکت داشته و به تناسب، اطلاعات لازم را داشته باشند؛ تغییری عمیق در نگرش سازمان ها ایجاد کرد و باعث شد با سرعتی مناسب محصولاتی ارائه شود که رضایت کامل مشتری را جلب نماید.
Agile چون اصولی عام و قابل تفسیر و تعمیم دارد با سازمان های متفاوت در اندازه و نوع فعالیت، سازگار شده است. Agile باعث شد که تعاملات انسانی و ارتباطات، به اندازه ی فناوری اهمیت پیدا کند. با تسهیل گفتگو و مفاهمه بین توسعه دهنگان و بخش های تجاری، تولید و تحول در فناوری، جهش قابل توجهی یافته است.
اما با وجود موفقیت در تحول حوزه های تعاملی و نگرشی، Agile نتوانسته است در ایجاد سازه های عملیاتی به موفقیت متناسبی دست یابد. برای مثال ارائه به موقع محصول کاربردی در تاخت های استاندارد می تواند محیط کاری پر استرسی را برای توسعه دهنگان ایجاد کند. آن ها ممکن است مجبور شوند ساعت ها اضافه کار کنند تا بتوانند ضرب الاجل های عرضه محصول را رعایت کنند. در واقع مدیریت تیم با این رویکرد، بسیار دشوار است. به علت تمرکز نگرش بر فراهم سازی بروز خلاقیت در سطوح مختلف، احتمال انحراف سازمان از مسیر استراتژی بالا می رود. معیارهای سنجش و ارزیابی، مبهم است و عموما پیش بینی و ترسیم افق پیش رو غیر ممکن است.
بومی سازی و اصلاح الگوهای عملیاتی متد چابک در قالب متدهای عملیاتی متنوع مانند Scrum، کانبان و … در سازمان های مختلف، از یک زاویه، نقطه ضعف این رویکرد تلقی می شود. نقطه ضعفی که در کنار وجه تحول آفرین آن، زمینه شکل گیری و پذیرش متدولوژی DevOps، به عنوان پیشرفته ترین متد موجود در توسعه نرم افزار، را هموار ساخته است.