متدولوژی توسعه نرم افزار اجایل چیست؟
متدولوژی AGILE (اجایل یا چابک)، شیوهای است که تکرار مداوم توسعه و تست را در طول چرخهی حیات توسعه نرم افزار یا پروژه ترویج میکند. در مدل چابک، برخلاف مدل آبشاری، هر دو فعالیت توسعه و تست به موازات هم انجام میشوند.

روش توسعه نرم افزار Agile یکی از سادهترین و موثرترین فرآیندها برای تبدیل چشمانداز نیازهای تجاری به راهکارهای نرم افزاری است. اصطلاح چابک، برای توصیف رویکردهای توسعه نرم افزار استفاده میشود که از برنامهریزی مداوم، یادگیری، بهبود، همکاری تیمی، توسعهی تکاملی و تحویل زودهنگام استفاده و از راهکارهای انعطافپذیر برای تغییر استقبال میکند. در ادامه با متدلوژی اجایل بیشتر آشنا میشویم.
نقش ها در متدولوژی agile
یک فرایند توسعه نرم افزار agile همیشه با تعریف کاربران برای یک محصول خاص و داکیومنت سازی درباره چشم اندازی که برای دامنه مشکلات، فرصت ها و ارزش های پروژه وجود دارند آغاز می شود. صاحب محصول می تواند این چشم انداز را به تصویر بکشد و با یک یا چند تیم که در حوزه های مختلف فعالیت دارند روی آن کار کند. به طور کلی چندین نقش در فرایند توسعه نرم افزار با متدولوژی agile نقش دارند که در ادامه درباره هر یک از آنها بیشتر صحبت خواهیم کرد.
کاربران در متدولوژی agile
یک پروژه که مبتنی بر متدولوژی agile است همیشه با در نظر گرفتن کاربر یا مشتری آغاز می شود. امروزه توسعه دهندگان نرم افزار در اغلب مواقع شخصیت های کاربر را برای نشان دادن نقش های مختلف در گردش کار به همراه انواع نیازها و رفتارهای مشتری تعریف می کنند.
نحوه تشکیل تیم های مختلف در این متدولوژی
نحوه تشکیل دادن تیم های متدولوژی agile به طور کامل به رهبران سازمان ها و مالکان محصولات نرم افزاری بستگی دارد. البته عامل مهم دیگری نیز در این زمینه وجود دارد و آن این است که این تیم ها چقدر بزرگ هستند؟ در واقع شما باید سعی کنید تیم های خود را به شکلی تشکیل دهید که بتوانید بهترین بهره وری را داشته باشید و میزان همکاری بین تیم های خود را به حداکثر برسانید.
اسکرام و کانبان در متدولوژی agile
زمانی که چشم انداز محصول را ایجاد کرده و تیم های توسعه با متدولوژی agile را تشکیل دادید باید کار خود را با انتخاب مواردی که در مانیفست این متدولوژی تعریف شده اند آغاز کنید. برای این کار باید یک متد یا روش پردازش و فرایند را انتخاب کنید که بهترین گزینه ها برای شما اسکرام و کانبان خواهند بود. برخی از سازمان ها کار خود را با کانبان آغاز می کنند چرا که توضیحات و پیاده سازی آن تقریبا ساده و راحت است. نکته جالبی که درباره کانبان وجود دارد این است که به عنوان یک فرایند fan-in و fan-out کار می کند که در آن اعضای تیم داستان های مربوط به کاربر را از یک برد بیرون کشیده و آن را وارد یک گردش کار می کند تا زمانی که به طور کامل علامت گذاری شود.
با این حال امروزه بسیاری از سازمان ها نیز اسکرام را برای پیاده سازی انتخاب می کنند که روند انجام پروژه را در sprintها خلاصه می کند. معمولا انجام دادن هر sprint بین یک تا دو هفته به طول می انجامد. در این روش مالک محصول نیازمندی های خود را به عنوان داستان های کاربران می نویسد و سپس آنها را بر اساس ارزش تجاری که دارند در یک فهرست اولویت بندی می کند. در ادامه اعضای تیم لاگ ها را بررسی کرده و طبق اولویت بندی sprint ها را کامل می کنند.
نکاتی مهم درباره اسکرام
یکی از مهمترین ویژگی های اسکرام این است که دارای میتینگ ها یا جلسات استانداردی است که به تیم ها کمک می کند تا اسپرینت ها را به خوبی اولویت بندی کرده و وظایف خود را در طول اسپرینت های مختلف تکمیل کنند. به این ترتیب آنها می توانند این موارد را با بالاترین سرعت ممکن تکمیل کرده و به پایان برسانند. این جلسات معمولا شامل چندین عنصر مشترک هستند که در ادامه به معرفی آنها می پردازیم.
عناصر مشترک جلسات در اسکرام و متدولوژی agile
از جمله عناصر مشترک جلسات در اسکرام و متدولوژی agile می توان به موارد زیر اشاره کرد:
– Sprint planning جایی است که مالک محصول اولویت های خود را به اشتراک می گذارد و اعضای تیم تصمیم می گیرند که چقدر کار می تواند یک اسپرینت را به پایان برساند.
– جلسات روزانه در اسکرام به تیم ها کمک می کند تا در مورد وضعیت داستان های کاربران با یکدیگر به بحث و گفتگو بنشینند. هم تیمی ها می توانند در این جلسات اهداف روزانه خود را به اشتراک بگذارند و هر کسی می تواند موانعی که مانع پیشرفت تیم می شود را معرفی کند.
-بازبینی های اسپرینت جلساتی هستند که در پایان هر اسپرینت برگزار می شوند که در آن عملکرد اسپرینت به صاحب و مالک محصول نمایش داده می شود تا نتایج را مورد بررسی قرار دهند.
-جلسات گذشته نگر که به آنها Retrospective نیز گفته می شود جلساتی هستند که در آن اعضای تیم درباره این که چه چیزی خوب پیش رفت و چه چیزی در طول متدولوژی agile نیازمند بهبود بیشتر است صحبت می کنند و موارد مختلف را در توسعه نرم افزار بررسی می کنند.
نکات پایانی که باید درباره اسکرام در متدولوژی agile بدانید
اسکرام می تواند عملکرد یک تیم را با توانمند ساختن تیم برای متعهد شدن نسبت به انجام دادن کاری معقول در زمان مناسب کمک می کند. در این روش در واقع دیگر مالک محصول نیست که زمان ارائه هر اسپرینت یا وظیفه را مشخص می کند و همین عامل نیز به میزان زیادی روی کیفیت انجام کار تاثیرگذار است. در واقع در این جا هر داستان کاربر می تواند یک قرارداد خرد را تشکیل دهد که دارای نیازهای تجاری و معیارهای پذیرش مخصوص به خود است و تیم ها را قادر می سازد تا در مورد نحوه پیاده سازی هر یک از آنها تصمیم گیری کنند. بررسی اسپرینت ها در هر دور می تواند به مالکان محصول انگیزه بیشتری بدهد و به آنها اجازه دهد تا با اطلاعات بیشتری اقدام به اولویت بندی مجدد اسپرینت های محصول کنند. بررسی اسپرینت های گذشته نیز به اعضای تیم اجازه می دهد تا مشکلات را به شکل بهتری شناسایی کنند.

مدل اجایل و آبشاری دو روش مختلف فرآیند تولید نرم افزار هستند. اگرچه از نظر روش متفاوت هستند، هر دو روش بسته به نیاز و نوع پروژه در بعضی مواقع مفید هستند. مهمترین تفاوتهای مدل اجایل و مدل آبشاری عبارتند از:
– رویکردی افزایشی و تکراری را برای طراحی نرم افزار پیشنهاد میکند.
– پروسهی چابک به مدلهای منفردی تقسیم میشود که طراحان روی آنها کار میکنند.
– مشتری فرصتهای زودرس و مکرر برای مشاهدهی محصول، تصمیمگیری و تغییر در پروژه را دارد.
– مدل چابک در مقایسه با مدل آبشاری، بدون ساختار به نظر میرسد.
– پروژههای کوچک را میتوان خیلی سریع اجرا کرد. برای پروژههای بزرگ، تخمین زمان توسعه دشوار است.
– خطا در وسط پروژه قابل رفع است.
– روند توسعه تکراری است و پروژه در تکرارهای کوتاه ۲ الی ۴ هفتهای اجرا میشود. برنامهریزی بسیار کمتر است.
– مستندسازی اولویت کمتری نسبت به توسعه نرم افزار دارد.
– هر تکرار مرحلهی تست خاص خود را دارد. این کار اجازه میدهد تا تست رگرسیون را هر زمان که توابع یا منطق جدید افزوده میشود، انجام دهید.
– در تست چابک با پایان تکرار، ویژگیهای قابل حمل محصول به مشتری تحویل داده میشود. ویژگیهای جدید نیز بلافاصله پس از تحویل قابل استفاده هستند. این ویژگی اجایل، زمانی مفید است که با مشتریان ارتباط خوبی داشته باشید.
– تست کنندگان و توسعه دهندگان با هم همکاری میکنند.
– این مدل، به ارتباط نزدیک با توسعه دهندگان، تحلیل نیازها و برنامهریزی نیاز دارد.
مدل آبشاری:
– مراحل توسعه نرم افزار به ترتیب از نقطهی شروع به نقطهی پایان جریان مییابد.
– فرآیند طراحی به مدلهای منفرد تقسیم نمیشود.
– مشتری فقط میتواند محصول را در پایان پروژه مشاهده کند.
– مدل آبشاری از ایمنی بیشتری برخوردار است زیرا تا حد زیادی برنامه محور میباشد.
– انواع پروژهها قابل تخمین و پیادهسازی هستند.
– کل محصول تنها در پایان تست میشود. اگر خطایی کشف شود یا نیاز به ایجاد تغییر داشته باشیم، پروژه باید از ابتدا شروع شود.
– روند توسعه مرحلهای است و مرحله، بسیار بزرگتر از تکرار است. هر مرحله با شرح دقیق مرحلهی بعدی به پایان میرسد.
– مستندات در اولویت اول هستند و حتی میتوانند برای آموزش کارکنان و ارتقاء نرم افزار توسط تیم دیگری استفاده شوند.
– تنها پس از مرحلهی توسعه، مرحلهی تست اجرا میشود زیرا بخشها به صورت جداگانه، کاربردی و قابل تست نیستند.
– تمام ویژگیهای توسعه یافته پس از مرحلهی طولانی پیادهسازی، بلافاصله تحویل داده میشوند.
– تست کنندگان جدا از توسعه دهندگان کار میکنند.
– توسعه دهنده درگیر فرآیند جمعآوری نیازها و برنامهریزی نیست. معمولاً یک زمان تاخیر بین تست و کدنویسی اتفاق میافتد.
مراحل پیاده سازی اجایل در یک پروژه عبارتند از:
اولین قدم این است که درک روشنی از چابک بودن داشته باشید. دانستن هدف نهایی، چگونگی سودآوری مشتری و همچنین سازمان و نحوهی دستیابی به آن، گامهای اصلی در اولین مرحله هستند. ممکن است از مدیران پروژه خواسته شود که با مشتریان مصاحبه کنند، دربارهی استراتژی جلساتی برگزار کنند و تحقیقات بازار را انجام دهند.
دامنهی انعطاف پذیری پروژه که میتواند به روند کار و موفقیت پروژه کمک کند نیز در این مرحله در نظر گرفته میشود. هدف اصلی استفاده از مدیریت پروژه چابک، پذیرش تغییرات و تلفیق آنها است.
داشتن یک تیم قدرتمند و همه کاره، یک قدم بزرگ برای موفقیت اجایل است. اعضای این تیم، مسئول طراحی، اجرا و تحویل هستند. برای ایجاد یک نقشهی راه مناسب برای تیم و محصول، ممکن است به آموزش اعضای فعلی تیم، درخواست کمک از بخشهای دیگر یا حتی مشاوران خارج از سازمان نیاز باشد.
نقشهی راه محصول، در اصل شناسایی و تحلیل هدف، معیارها و ویژگیهایی است که محصول نهایی را تشکیل میدهند.
طرح انتشار، شامل تهیهی یک برنامه توسط مدیر پروژه و تحویل آن به صاحب محصول و کل اعضای تیم است. چرخههای توسعه در روش چابک نسبتاً کوتاه و موثر هستند که به آنها اسپرینت گفته میشود. یک نرم افزار، قبل از رسیدن به دست مشتری باید چندین اسپرینت را طی کند.
در طول برنامه ریزی برای انتشار، ویژگیهای محصول اولیه که قرار است عرضه شود، در اولویت قرار دارند. به طور معمول، برنامههای عرضهی محصولات بعدی، در روز عرضهی اولین محصول بررسی میشوند؛ زیرا محصول در اسپرینتهای بعدی بیشتر توسعه خواهد یافت.
گام مهم بعدی، برنامه ریزی اسپرینتها است. اسپرینت یک چرخهی کوتاه توسعه است که به طور معمول تا چهار هفته طول میکشد. این مدت باید در طول چرخه ثابت نگه داشته شود. همچنین مهم است که هر یک از اعضای تیم در اسپرینت، مسئولیت برابر داشته باشند. یک برنامه ریزی موفق اسپرینت، با مشارکت و همکاری مدیران، مالکان و اعضای تیم تعیین میشود.
استندآپها اساساً جلساتی کوتاه هستند که پانزده دقیقه بیشتر طول نمیکشند. استندآپ، راهی آسان برای ارزیابی پیشرفت اسپرینت است. استندآپ توسط هر یک از اعضای تیم برای تعیین هدف روز، شناسایی مشکلات و تغییرات ممکن، ایجاد میشود.
استندآپ روزانه یک روش برای بهرهمندی موثر از تمامی اعضای تیم است. همچنین تیم را قادر میسازد که بتواند ارتباطات موثری داشته باشد.
در پایان هر اسپرینت، جلسهای با اعضای تیم و ذینفعان پروژه برگزار میشود. در این مرحله، محصول به ذینفعان نشان داده میشود. اعضای تیم در مورد میزان کار، موانع و مواردی که مدیریت کارها را آسان میکند، صحبت میکنند. در این جلسه، در مورد حذف یا افزودن ویژگیها در اسپرینت بعدی بحث خواهد شد.