شاید باور کردن این مسئله بسیار سخت باشد که امسال متدولوژی agile 20 ساله شد. این روش در واقع روشی بود که زمانی برای استارت آپ هایی که در یک فضای کوچک کار می کردند مورد استفاده قرار می گرفت و آنها با استفاده از یک تخته و چسب هایی با یکدیگر همکاری می کردند ولی امروزه به مجموعه ای پیچیده، مقیاس پذیر و بسیار پرکاربرد تبدیل شده است که فرایندها و ابزارهای زیادی را در اختیار شما قرار می دهد.
متدولوژی agile دارای تاریخچه ای غنی در توسعه نرم افزار است و به همین علت نیز امروزه بسیاری از سازمان ها از متدولوژی های agile مانند scrum و Kanban برای مدرنیته کردن اپلیکیشن های خود استفاده می کنند. علاوه بر این آنها می توانند با استفاده از این متدولوژی ها برای بهبود تجربه مشتری و پیاده سازی تحولات دیجیتال نیز استفاده کنند. نکته مهم دیگر این است که مجموعه ای عظیم از دانش درباره این متدولوژی وجود دارد که توسعه دهندگان نرم افزار می توانند از آنها استفاده کنند.
مطالعه ادامه این مطلب به شما کمک می کند تا با متدولوژی agile، کاربردها و فرایندهای آن بیشتر آشنا شوید و بتوانید به شکل بهتری از آن استفاده کنید.
نقش ها در متدولوژی agile
یک فرایند توسعه نرم افزار agile همیشه با تعریف کاربران برای یک محصول خاص و داکیومنت سازی درباره چشم اندازی که برای دامنه مشکلات، فرصت ها و ارزش های پروژه وجود دارند آغاز می شود. صاحب محصول می تواند این چشم انداز را به تصویر بکشد و با یک یا چند تیم که در حوزه های مختلف فعالیت دارند روی آن کار کند. به طور کلی چندین نقش در فرایند توسعه نرم افزار با متدولوژی agile نقش دارند که در ادامه درباره هر یک از آنها بیشتر صحبت خواهیم کرد.
کاربران در متدولوژی agile
یک پروژه که مبتنی بر متدولوژی agile است همیشه با در نظر گرفتن کاربر یا مشتری آغاز می شود. امروزه توسعه دهندگان نرم افزار در اغلب مواقع شخصیت های کاربر را برای نشان دادن نقش های مختلف در گردش کار به همراه انواع نیازها و رفتارهای مشتری تعریف می کنند.
مالک محصول
صاحب محصول وظیفه دارد صدای مشتری را بشنود و با هر شخصی که از پروژه سود می برد ارتباط بگیرد. این شخص در واقع بینش ها، ایده ها و بازخوردها را برای ایجاد چشم انداز محصول استخراج می کند. دیدگاه هایی که درباره محصول وجود دارند در اغلب مواقع کوتاه مدت و سرراست هستند اما با این وجود تصویری از این که مشتری یا کاربر کیست؟ چه ارزش هایی باید بیشتر مورد توجه قرار گیرند و ... به شما ارائه می دهد و یک استراتژی مناسب برای پرداختن به آنها را نیز در اختیار شما قرار می دهد. شاید برای شما جالب باشد که بدانید دیدگاه اصلی گوگل نیز دقیقا چیزی شبیه به این است. اجازه دهید تا کار خود را با یک رابط ساده و مبتنی بر کلمه کلیدی و الگوریتمی که منابع معتبر را در نتایج جستجوی گوگل رتبه بندی می کند آغاز کنیم. هدف در این جا یافتن وب سایت ها و صفحات مرتبط برای هر کسی است که به اینترنت دسترسی دارد و البته هدف اصلی تر آسان تر کردن این روند است.
چشم انداز این پروژه هرچه که باشد مالک محصول مسئول تعریف کردن آن و سپس همکاری با تیم توسعه برای تبدیل کردن آن به واقعیت است.
برای کار کردن با تیم توسعه دهنده صاحب محصول دیدگاه محصول را به مجموعه ای از داستان های مورد نیاز کاربر تقسیم بندی می کند. هر داستان مربوط به کاربر باید کاربران هدف، چالش های آنها، چرایی راه حل مورد نیاز، محدودیت ها و معیارهای پذیرش راه حل را مشخص کند. مالک محصول این داستان های کاربر را اولویت بندی می کند و آنها را به کمک تیم مورد بررسی قرار می دهد تا اطمینان حاصل کند که اعضای تیم به درک مشترکی از آنچه که از آنها خواسته می شود دست پیدا کرده اند.
تیم توسعه دهنده نرم افزار
تیم هایی که در توسعه یک محصول نرم افزاری مشارکت دارند باید به صورت چند رشته ای باشند. علاوه بر این اعضای تیم باید شامل افرادی با مهارت ها و سوابق لازم برای انجام کارها و وظایف مختلف باشند. نکته دیگر درباره اعضای تیم این است که علاوه بر توسعه دهندگان اعضای تیم های توسعه با متدولوژی agile باید شامل مهندسین اتوماسیون و تضمین کیفیت، مهندسان داده، طراحی تجربه کاربری که به آن UX نیز گفته می شود و سایر نقش های وابسته به طراحی و ساخت محصولات نرم افزاری باشند.
متدولوژی agile تیم ها را بر روی ارائه نرم افزارها متمرکز می کند و به همین علت نیز آنها باید اپلیکیشن ها، ادغام ها و ... را که می توانند به طور مستقیم روی کاربران تاثیرگذار باشند در زمان مناسب تحویل دهند. دقت داشته باشید که این موارد تنها محدود به اجزا و مسائل فنی نمی شود. اعضای تیم باید بر اساس آنچه که می سازند با یکدیگر هماهنگ باشند و هر کس دقیقا بداند که چه کاری را انجام می دهد و چگونه یک نرم افزار را توسعه می دهد.
نقش های دیگر در متدولوژی agile
تیم هایی که در حوزه متدولوژی agile فعالیت دارند معمولا شامل نقش های دیگری نیز می شوند که از جمله آنها می توان به موارد زیر اشاره کرد:
- تیم های تکنولوژی که معماری نرم افزار، معیارهای پذیرش اپلیکیشن، توالی ها، وابستگی ها و ... را کنترل می کنند. معمولا اعضای این تیم مسئولیت های فنی گسترده ای دارند که ممکن است شامل موارد متعددی شود.
- اسکرام مسترها اغلب تیم های جدید را در مورد فرایندها، مسئولیت ها و ابزارهای متدولوژی agile هدایت می کنند. مسئولیت هایی که یک اسکرام مستر دارد می تواند شامل حل مسائلی باشد که مانع پیشرفت پروژه می شوند. علاوه بر این آنها رویکردهای مختلف را برای بهبود سرعت تیم بررسی می کنند و موارد عقب افتاده را نیز اصلاح می کنند.
- تحلیلگران تجاری معمولا با صاحب محصول همکاری کرده و با آنها شریک می شوند. مسئولیت های تحلیلگران اغلب شامل ایجاد انواع وایرفریم ها، مستندسازی داستان هایی که درباره کاربران وجود دارد و بررسی نتایج تست ها است. تحلیلگران کسب و کار و تحلیلگران تجاری به ویژه زمانی در یک پروژه مفید واقع می شوند که تیم های توسعه نرم افزار در حال توسعه میکروسرویس ها و سایر محصولات فنی هستند. دقت داشته باشید که یک تحلیلگر تجاری یا کسب و کار دارای دانش بیشتری در حوزه توسعه نرم افزار و فرایندهای مرتبط با آن نسبت به مالک محصول می باشد.
نحوه تشکیل تیم های مختلف در این متدولوژی
نحوه تشکیل دادن تیم های متدولوژی agile به طور کامل به رهبران سازمان ها و مالکان محصولات نرم افزاری بستگی دارد. البته عامل مهم دیگری نیز در این زمینه وجود دارد و آن این است که این تیم ها چقدر بزرگ هستند؟ در واقع شما باید سعی کنید تیم های خود را به شکلی تشکیل دهید که بتوانید بهترین بهره وری را داشته باشید و میزان همکاری بین تیم های خود را به حداکثر برسانید.
اسکرام و کانبان در متدولوژی agile
زمانی که چشم انداز محصول را ایجاد کرده و تیم های توسعه با متدولوژی agile را تشکیل دادید باید کار خود را با انتخاب مواردی که در مانیفست این متدولوژی تعریف شده اند آغاز کنید. برای این کار باید یک متد یا روش پردازش و فرایند را انتخاب کنید که بهترین گزینه ها برای شما اسکرام و کانبان خواهند بود. برخی از سازمان ها کار خود را با کانبان آغاز می کنند چرا که توضیحات و پیاده سازی آن تقریبا ساده و راحت است. نکته جالبی که درباره کانبان وجود دارد این است که به عنوان یک فرایند fan-in و fan-out کار می کند که در آن اعضای تیم داستان های مربوط به کاربر را از یک برد بیرون کشیده و آن را وارد یک گردش کار می کند تا زمانی که به طور کامل علامت گذاری شود.
با این حال امروزه بسیاری از سازمان ها نیز اسکرام را برای پیاده سازی انتخاب می کنند که روند انجام پروژه را در sprintها خلاصه می کند. معمولا انجام دادن هر sprint بین یک تا دو هفته به طول می انجامد. در این روش مالک محصول نیازمندی های خود را به عنوان داستان های کاربران می نویسد و سپس آنها را بر اساس ارزش تجاری که دارند در یک فهرست اولویت بندی می کند. در ادامه اعضای تیم لاگ ها را بررسی کرده و طبق اولویت بندی sprint ها را کامل می کنند.
نکاتی مهم درباره اسکرام
یکی از مهمترین ویژگی های اسکرام این است که دارای میتینگ ها یا جلسات استانداردی است که به تیم ها کمک می کند تا اسپرینت ها را به خوبی اولویت بندی کرده و وظایف خود را در طول اسپرینت های مختلف تکمیل کنند. به این ترتیب آنها می توانند این موارد را با بالاترین سرعت ممکن تکمیل کرده و به پایان برسانند. این جلسات معمولا شامل چندین عنصر مشترک هستند که در ادامه به معرفی آنها می پردازیم.
عناصر مشترک جلسات در اسکرام و متدولوژی agile
از جمله عناصر مشترک جلسات در اسکرام و متدولوژی agile می توان به موارد زیر اشاره کرد:
- Sprint planning جایی است که مالک محصول اولویت های خود را به اشتراک می گذارد و اعضای تیم تصمیم می گیرند که چقدر کار می تواند یک اسپرینت را به پایان برساند.
- جلسات روزانه در اسکرام به تیم ها کمک می کند تا در مورد وضعیت داستان های کاربران با یکدیگر به بحث و گفتگو بنشینند. هم تیمی ها می توانند در این جلسات اهداف روزانه خود را به اشتراک بگذارند و هر کسی می تواند موانعی که مانع پیشرفت تیم می شود را معرفی کند.
- بازبینی های اسپرینت جلساتی هستند که در پایان هر اسپرینت برگزار می شوند که در آن عملکرد اسپرینت به صاحب و مالک محصول نمایش داده می شود تا نتایج را مورد بررسی قرار دهند.
- جلسات گذشته نگر که به آنها Retrospective نیز گفته می شود جلساتی هستند که در آن اعضای تیم درباره این که چه چیزی خوب پیش رفت و چه چیزی در طول متدولوژی agile نیازمند بهبود بیشتر است صحبت می کنند و موارد مختلف را در توسعه نرم افزار بررسی می کنند.
نکات پایانی که باید درباره اسکرام در متدولوژی agile بدانید
اسکرام می تواند عملکرد یک تیم را با توانمند ساختن تیم برای متعهد شدن نسبت به انجام دادن کاری معقول در زمان مناسب کمک می کند. در این روش در واقع دیگر مالک محصول نیست که زمان ارائه هر اسپرینت یا وظیفه را مشخص می کند و همین عامل نیز به میزان زیادی روی کیفیت انجام کار تاثیرگذار است. در واقع در این جا هر داستان کاربر می تواند یک قرارداد خرد را تشکیل دهد که دارای نیازهای تجاری و معیارهای پذیرش مخصوص به خود است و تیم ها را قادر می سازد تا در مورد نحوه پیاده سازی هر یک از آنها تصمیم گیری کنند. بررسی اسپرینت ها در هر دور می تواند به مالکان محصول انگیزه بیشتری بدهد و به آنها اجازه دهد تا با اطلاعات بیشتری اقدام به اولویت بندی مجدد اسپرینت های محصول کنند. بررسی اسپرینت های گذشته نیز به اعضای تیم اجازه می دهد تا مشکلات را به شکل بهتری شناسایی کنند.
نیاز به بهترین روش های فنی برای سازمان هایی که از این متدولوژی استفاده می کنند
اگر سازمان شما هم از متدولوژی agile استفاده می کند احتمالا به دنبال پیدا کردن روش هایی فنی برای پیاده سازی بهتر این متدولوژی هستید. اسکرام می تواند فرایندی اساسی را برای تیم هایی که با یکدیگر همکاری می کنند برنامه ریزی کند ولی معمولا به بهترین شیوه های فنی برای پیاده سازی و اجرای آنها، استانداردهای سازمانی و ... اشاره ای نمی کند.
بنابراین شما به شیوه هایی مدرن برای انجام این کار در متدولوژی agile خواهید بود.
معرفی بهترین روش های فنی برای سازمان هایی که از این متدولوژی استفاده می کنند
امروزه شیوه ها و متدهای فنی بسیار زیادی در حوزه متدولوژی agile تعریف می شوند که از جمله آنها می توان به تعریف چرخه حیات نرم افزار که به اختصار SDLC نامیده می شود و پیاده سازی فرایندهای devops اشاره کرد. SDLC دستورالعمل هایی را درباره نوشتن دوباره کدها، مدیریت منابع نرم افزار و توسعه استانداردهای تکنیکال در اختیار شما قرار می دهد. اتوماسیون Devops مانند CI/CD، زیرساخت به عنوان کد یا IaC و البته تست مداوم نیز مسیرهای مطمئن تری را برای تولید فراهم می کنند. از دیگر روش هایی که در این حوزه وجود دارند می توان به روش های shift-left security، میکروسرویس های قابل مشاهده، feature flagging، و AIOps اشاره کرد که دارای مدل های تحویل انعطاف پذیرتر و قابل اطمینان تری هستند.
نکاتی درباره اجرا و پیاده سازی متدولوژی agile
متدولوژی agile ترکیبی از توانمندسازی تیم های خودسازمانده، روش های مبتنی بر متدولوژی agile، توسعه اتوماسیون و خودکارسازی فرایندها و مدرن سازی معماری های ابری را به سازمان های مختلف ارائه می دهد و از این طریق خود را توسعه می دهد. چرخه های توسعه نرم افزار طولانی تر با مدل های ارائه متناوب جایگزین می شوند که امکان انتشار سریع تر ویژگی ها و انواع به روزرسانی ها را برای توسعه دهندگان فراهم می کند. اتوماسیون ها می توانند بسیاری از شکاف ها را بین توسعه دهندگانی که به دنبال خودمختاری و سرعت بالا هستند پر کنند و از این طریق قابلیت اطمینان و امنیت بالاتری را برای نرم افزارها فراهم کنند. ترکیب این شیوه ها و متدها به تیم های مبتنی بر متدولوژی agile کمک می کند تا تصمیمات معماری هوشمندانه تری را بگیرند، آزمایش های مختلف را انجام دهند و بیشتر مبتنی بر داده باشند. این مسئله به توسعه دهندگان کمک می کند تا اشتباهات خود را سریع تر تصحیح کنند.
سایر روش هایی که در متدولوژی agile استفاده می شوند
سایر روش هایی که در متدولوژی agile استفاده می شوند مانند طراحی ادغام شده با اسکرام، پیاده سازی جریان مقادیر، شیوه های توسعه مدیریت محصول و پیاده سازی برنامه ریزی متناوب به تیم های مبتنی بر متدولوژی agile کمک می کند تا با مشتریان، کاربران نهایی و ذینفعان تجاری پروژه همکاری بیشتر و بهتری داشته باشند.
نکاتی که باید درباره تیم های Agile بدانید
تیم های مبتنی بر متدولوژی agile معمولا ابزارهایی مانند نرم افزار Jira، Azure DevOps و Digital.ai برای همکاری با backlogهای این متدولوژی مستقر می کنند. این کار به آنها کمک می کند تا با تخته ها و بردهای Kanban نیز ارتباط بهتری برقرار کنند. این ابزارها به تیم های توسعه در متدولوژی agile کمک می کند تا کارها را به شکل بهتری اولویت بندی کنند، نیازمندی ها را به درستی ذخیره و ثبت کنند، داستان های مربوط به کاربران را کامل کرده و گزارش های فرسودگی در پروژه ها را بررسی کنند. این کار می تواند گردش کار در این تیم ها را نیز به میزان زیادی توسعه دهد و باعث خودکارسازی طیف گسترده ای از ابزارها در متدولوژی agile شود.
نکات پایانی که باید درباره متدولوژی agile بدانید
فریم ورک ها و راهنماهای مفهومی که در متدولوژی agile مورد استفاده قرار می گیرند می توانند به هدایت بهتر اصولی که در این زمینه وجود دارند، رعایت کردن استانداردهای معماری و طراحی نرم افزار و پیاده سازی متدهای Agile برای همکاری بهتر بین اعضای تیم کمک کنند. از جمله این فریم ورک ها و راهنماها می توان به مواردی مانند SAFe، اسکرام سازمانی، LeSS، مدل اسپاتیفای و StarCIO اشاره کرد که هر یک دارای ویژگی ها و مزایای مخصوص به خود در متدولوژی agile هستند.
اکثر مربیانی که امروزه در این زمینه فعالیت دارند توصیه می کنند که کار خود را با تعریف کردن اهداف تجاری که برای یک محصول دارید آغاز کنید. در ادامه سعی کنید چندین تیم منتخب را در این زمینه انتخاب کنید و ابزارهای محدود و بهینه ای را نیز در این زمینه اضافه کنید. چالشی که معمولا رهبران سازمان ها در این مسیر برای پیاده سازی متدولوژی agile دارند یافتن توازن مناسب بین تیم های متنوعی که در این حوزه وجود دارند، رعایت کردن اصول خودسازماندهی، رعایت کردن استانداردهای حوزه متدولوژی agile، استفاده درست از ابزارهایی که در این زمینه وجود دارند و ادغام هایی است که به سازمان ها کمک می کنند. فراموش نکنید که این ادغام ها به سازمان ها اجازه می دهند تا قابلیت های تکنولوژی جدید را ایجاد کرده و آنها را گسترش دهند. علاوه بر این باید دقت داشته باشید که این ادغام ها در حفظ تکنولوژی ها در متدولوژی agile نیز بسیار مفید هستند.
نظرات کاربران در رابطه با این دوره