متدولوژی چابک یک چارچوب تعریف شده برای موفقیت توسعه نرم افزار است. Agile برای سازگاری در حل نیازهای خاص بازار در یک زمان معین طراحی شده است و تسریع زمان در بازار و ارزش بینش کاربر را در اولویت قرار می دهد.
متدولوژی چابک چیست؟
Agile که با انعطاف و سازگاری در ذهن ایجاد شده است، روشی برای سازماندهی تیم های توسعه و مدیریت محصول است که توسعه مستمر محصولات را پس از عرضه به بازار در اولویت قرار می دهد. Agile تضمین می کند که محصولات قادر به حل مسائل بازار هستند و تعداد پروژه های رها شده در مجموعه هر تیم را کاهش می دهد.
Agile در مقابل Waterfall
قبل از ایجاد متدولوژی Agile، ممکن است سالها طول بکشد تا محصولی ایجاد شود که چالش های کلیدی یک کسب و کار را حل کند و به آنها اجازه دهد تا بر رشد مستمر تمرکز کنند. رایجترین فرآیند توسعه نرمافزار در دوران پیش از چابک به نام Waterfall شناخته میشد. Waterfall تیم های توسعه را تشویق می کند تا مشکلات را شناسایی کنند، راه حلی ایجاد کنند و یک محصول را به طور کامل به بازار عرضه کنند و قوی ترین تجربه را در اولین تعامل ارائه دهند.
متدولوژی توسعه Waterfall مسیر روشنی را برای رسیدن به محصول نهایی خود دنبال می کند:
- الزامات پروژه و محدوده کار تعیین شده است
- محصولات برای برآورده کردن الزامات تعیین شده توسط محدوده طراحی شده اند
- محصولات ساخته شده است
- محصولات تست می شوند
- مشکلات در طول آزمایش کشف میشوند و رفع آن اعمال میشود
- محصولات پس از تکمیل تست راه اندازی می شوند
در حالی که رویکرد Waterfall منجر به ورود محصولات کامل تری به بازار در یک زمان خاص شد، اما چندین جنبه منفی نیز به همراه داشت. بزرگترین مسئله این بود که Waterfall تیمهای توسعه را مجبور کرد تا بدون ایجاد تغییراتی در طول فرآیند، به این محدوده پایبند باشند. این بدان معنی است که راه حل ها اغلب دیگر قابل دوام نیستند زیرا چالش ها در طول زمان به سمت مشکلات جدیدتر و به سرعت در حال ظهور تغییر می کنند. برای تیم های توسعه امری عادی بود که به جای ارائه راه حل های منسوخ شده به بازار، “قبرستان” پروژه های متروکه را جمع آوری کنند.
انتقال به Agile
با افزایش ناامیدی در سراسر شرکت ها در دهه 1990، صنعت نرم افزار برای به روز رسانی نحوه ساخت پروژه ها آماده شد. پاسخ در سال 2000 با معرفی متدولوژی Agile داده شد .
Agile که توسط گروهی متشکل از هفده توسعهدهنده نرمافزار در اورگان پیشگام بود، به عنوان راهی برای سرعت بخشیدن به زمانهای توسعه و ارائه سریع نرمافزارهای جدید به بازار ظهور کرد. این توسعه دهندگان متوجه شدند که کاهش زمان لازم برای دریافت راه حل برای کاربران، مشکلات مربوط به تناسب بازار را برطرف می کند، در حالی که دریافت بازخورد سریع از کاربران، کار در حال انجام را تأیید می کند و امکان بهبود مداوم را فراهم می کند. در نهایت، هفده توسعه دهنده توانستند Manifesto for Agile Software Development را که معمولاً به عنوان Agile Manifesto شناخته می شود، رسمی کنند.
ایجاد مانیفست چابک چهار ارزش اصلی و دوازده اصل را به ارمغان آورد که اساس روش شناسی چابک را تعیین کرد.
ارزش های چابک
- افراد و تعاملات باید بر فرآیندها و ابزارها اولویت داشته باشند – افرادی که محصولات را ایجاد می کنند مسئول موفقیت آن محصول هستند.
- طرزکار نرم افزار مفیدتر از مستندات جامع است – اطمینان از دسترسی به موقع محصولات به بازار در اولویت است.
- همکاری مشتری باید بر مذاکره قرارداد اولویت داشته باشد – مشتریان برای توسعه محصولات با کیفیت بسیار مهم هستند.
- پاسخ به تغییر بیش از پیروی از یک برنامه ارزش دارد – محیط های کاری چابک همه چیز در مورد سازگاری و تصمیم گیری درست برای یک لحظه معین است.
آیا علاقمند به یادگیری نرم افزار چابک هستید؟ اکنون بیاموزید.
اصول چابک
- رضایت مشتری اولویت اول است
- تغییر مهار
- به طور مکرر طرزکار نرم افزار را ارائه دهید
- همکاری در سطح تجاری ضروری است
- محیط های حمایتی را پیرامون افراد با انگیزه ایجاد کنید
- از تصمیم گیری چهره به چهره استقبال کنید
- اندازه گیری پیشرفت از طریق نرم افزار کار
- ترویج توسعه پایدار
- توجه به برتری فنی را حفظ کنید
- سادگی ضروری است
- به تیم های خودسازمان ده تکیه کنید
- به طور منظم در مورد کارایی تیم فکر کنید و آن را تنظیم کنید
مزایای Agile واقعاً بین سالهای 2012 تا 2015 برای شرکتها مشخص شد، در این مدت پذیرش Agile از 50٪ در میان تیمهای توسعه فراتر رفت.
Agile برای سازماندهی فرآیند توسعه به چندین مفهوم تعریف شده خاص متکی است. این فرآیندها به ایجاد انتظارات روشن برای همه ذینفعان کمک می کند و موانع احتمالی را که می تواند زمان ورود به بازار را به تاخیر بیندازد، به حداقل می رساند. یکی از حیاتی ترین مفاهیم این است که هر فرآیند توسعه Agile حول نقش های خاصی می چرخد.
نقش های چابک
کاربر
فرآیندهای چابک با در نظر گرفتن کاربر یا مشتری با تعریف شخصیت شروع می شود تا به شناسایی رفتار، نیازها و نحوه کمک محصول به آنها کمک کند.
مالک محصول
مسئولیت اصلی مالک محصول این است که بتواند بینش کاربر، ایده های داخلی و خارجی و بازخورد دریافتی را در چشم انداز محصول به درستی تقطیر کند. دیدگاههای محصول، احساساتی مختصر و مستقیم هستند که به همه طرفها اجازه میدهند منافع مورد نظر محصول مشخص شود. صاحبان محصول در کنار تیم های توسعه کار می کنند تا داستان های کاربری ایجاد کنند که جزئیات بیشتری در مورد کاربر هدف، مشکل در دست، مزایای راه حل و معیارهای رسیدن به هدف ارائه می دهد.
آیا علاقمند به یادگیری مالک محصول هستید؟ اکنون بیاموزید.
تیم توسعه نرمافزار
در Agile، تیمهای توسعه نرمافزار دارای گروههای متنوع و چند رشتهای از افراد هستند که با هم کار میکنند تا برنامههای کاربردی کارآمد را ارائه دهند. تیم ها اغلب از توسعه دهندگان، مهندسان تضمین کیفیت، طراحان، تحلیلگران و مهندسان اضافی تشکیل شده اند که با ساخت پایگاه داده، منطق تجاری و رابط کاربری برای دموها شروع می کنند. تیمهای توسعه نرمافزار چابک مرتباً ملاقات میکنند تا اطمینان حاصل کنند که پیشرفت حاصل شده است و هر عضو چشمانداز روشنی از نقشهای خود در این فرآیند دارد.
روش ها و چارچوب های چابک
Set Framework ها یکی دیگر از مفاهیم Agile است که به فرآیند اجازه می دهد تا به راحتی عمل کند. در حالی که متدولوژی Agile به گونه ای طراحی شده است که با یک تجارت و نیازهای بازار آن سازگار باشد، این چارچوب ها به تعریف فرآیند توسعه برای اطمینان از راه اندازی به موقع کمک می کنند.
چابک و اسکرام
اسکرام پرکاربردترین چارچوب چابک است و بر پنج ارزش استوار است: تعهد. شجاعت، تمرکز، صراحت و احترام. اسکرام بسیاری از نقشهای فریم ورک اولیه Agile را حفظ میکند، اما Scrum Master را اضافه میکند، که تضمین میکند Scrum به درستی درک و اجرا شده است.
اسکرام مجموعه ای از “رویدادها” را برای انجام توسعه سازمان یافته دنبال می کند. این رویدادها عبارتند از:
اسپرینت ها
اسپرینت ها جعبه های زمانی برای دستیابی به یک هدف هستند. اینها در طول فرآیند توسعه ثابت می مانند و طول آنها از یک ماه تجاوز نمی کند.
برنامه ریزی اسپرینت
برنامه ریزی اسپرینت فرآیند مشترک ساخت اسپرینت آینده با بقیه تیم توسعه است.
اسکرام روزانه
جلسات 15 دقیقه ای که در هر روز از اسپرینت رخ می دهد اسکرام روزانه نامیده می شود. دستاوردهای روز قبل در طول اسکرام های روزانه مشخص می شود و انتظارات جدیدی در محل ایجاد می شود.
بررسی اسپرینت
این جلسات در پایان هر اسپرینت برگزار می شود تا تیم اسکرام بتواند افزایش خود را به سهامداران ارائه کند و بازخورد دریافت کند.
عقبنشینیهای اسپرینت
در پایان یک اسپرینت، تیمها گرد هم میآیند تا پیش از تعیین انتظارات و پیشرفتها برای اسپرینت بعدی، درباره دستاوردها و عقبنشینیهای اسپرینت قبلی بحث کنند.
آیا علاقمند به یادگیری نرم افزار چابک هستید؟ اکنون بیاموزید.
Kanban
Kanban یک روش بصری تر از مدیریت پروژه Agile است که با ترسیم تصویر واضحی از گردش کار برای شناسایی گلوگاه های اولیه برای نتیجه بهتر کمک می کند. Kanban که از خطوط تولید تویوتا در دهه 1940 متولد شد، از شش روش کلی پیروی می کند: تجسم، محدودیت های کار در حال پیشرفت، مدیریت جریان، ایجاد خط مشی های صریح، استفاده از حلقه های بازخورد و همکاری تجربی.
روش بصری کانبان بر اساس نشانه های تعاملی است که فرآیند توسعه را به وفور واضح می کند.
- صفحه Kanban – یک ابزار مدیریت فیزیکی یا مبتنی بر نرمافزار که وظایف در حال انجام، فهرست کارها و کارهای تکمیلشده را مشخص میکند.
- کارت های کانبان – کارت های کانبان روی برد کانبان قرار می گیرند و نشان دهنده وظایف فردی است که تیم مسئولیت آنها را بر عهده دارد. اطلاعات موجود در کارت های کانبان اغلب شامل نام، وضعیت، زمان چرخه و مهلت های کار است.
- کانبان swimlanes – این عنصر از هیئت مدیره Kanban به اعضای تیم اجازه می دهد تا وظایف را برای نشانه های واضح پیشرفت دسته بندی کنند. وظایف را می توان با دریافت بازخورد به هم ریخت تا بین کار انجام شده، در حال انجام یا هنوز شروع نشده تمایز قائل شود.
Scrum و Kanban مدتهاست که محبوبترین فریم ورکها برای مدیریت پروژه Agile بودهاند، اما تغییرات دیگری برای برآوردن نیازهای خاص کارکنان، شرکت و بازار وجود دارد.
- برنامه نویسی افراطی (XP) به گونه ای طراحی شده است که کیفیت زندگی بالاتری را به تیم توسعه ارائه دهد و در عین حال کیفیت محصول را بهبود بخشد. این امر با پیروی از شیوههایی که شامل نسخههای کوچک، طراحی ساده، برنامهنویسی جفتی، مالکیت جمعی، یکپارچهسازی مداوم، استاندارد کدنویسی، مشتری در محل و یک هفته کاری 40 ساعته است، این کار را انجام میدهد.
- کریستال خانواده ای از متدولوژی های چابک است که حول اجزای اصلی کار تیمی، ارتباطات، سادگی و تأمل ساخته شده است. این چارچوب به گونهای طراحی شده است که بر اساس پروژه به پروژه قابل انطباق باشد و خود را بر اساس سیاستها، شیوهها و فرآیندهای از قبل موجود برای برآورده کردن خواستهها تنظیم میکند.
- توسعه ویژگی محور (FDD) بیش از هر چارچوب دیگری، ارائه نرمافزار کار را با سرعت بیشتری در اولویت قرار میدهد. FDD بر اساس مراحل کوتاهتر کار با هدف واقعی سازی یک ویژگی واحد در یک زمان ساخته شده است.
محصولات قابل تحویل مدیریت پروژه چابک
در حالی که هر چارچوبی هم از نظر فرآیند و هم از نظر بهموقع بودن گزارشدهی متفاوت است، همه آنها تحویلپذیرهای زیادی را به اشتراک میگذارند:
- بیانیه های چشم انداز محصول – چشم انداز بلند مدت و راه حل هایی که محصول ارائه می دهد.
- نقشه راه محصول – چشم انداز یک محصول فقط به اندازه نقشه راه آن ارزشمند است، که مشخص می کند پروژه چگونه و چه زمانی از مراحل برنامه ریزی تا توسعه آن برای رسیدن به بازار برداشته می شود.
- عقب ماندگی محصول – پیگیری ویژگی های جدید، تغییرات در ویژگی های موجود، رفع اشکال، تغییرات زیرساخت و همه تنظیمات دیگر برای موفقیت و توسعه مداوم محصول بسیار مهم است.
- طرح انتشار – ترسیم ویژگیهای چگونگی دسترسی یک محصول به بازار و نحوه تعامل کاربران با آن، دانش بسیار مهمی برای ذینفعان است.
- افزایش – قبل از انتشار یک محصول، ابتدا باید یک افزایش ایجاد شود. Increments همه تغییرات را در یک بک لاگ جمعآوری میکند تا یک نسخه کارآمد برای ارائه به سهامداران برای بازخورد ایجاد کند. سپس میتوان افزایشها را آزاد کرد، اصلاح کرد یا دوباره ارائه کرد.
بهترین تمرینات چابک
چابک تنها زمانی واقعاً مؤثر است که همه اعضای تیم به طور فعال در فرآیند مشارکت داشته باشند و چارچوب به طور مداوم دنبال شود. این ابزارها و بهترین شیوهها میتوانند به تیمها کمک کنند تا در طول چرخه توسعه خود در مسیر خود باقی بمانند و اطمینان حاصل کنند که محصولات به سرعت و با موفقیت به بازار میرسند:
- همکاری با مشتری – به عنوان یک ارزش اصلی که در مانیفست چابک بیان شده است، همکاری مشتری در قلب هر پروژه چابک است. حصول اطمینان از درک واضح تیم توسعه از نیازهای مشتری و بازخورد منجر به محصولاتی می شود که در زمان راه اندازی به طور قابل توجهی مفیدتر هستند.
- یکپارچهسازی مداوم – بهروز نگهداشتن کد را میتوان با تولید بیلدهای بدون خطا در طول روز انجام داد و تحویل محصول را در هر نقطه از زمان ممکن میسازد.
- برنامه نویسی جفتی – برنامه نویسی زوجی زمانی است که دو برنامه نویس روی یک پروژه با هدف کاهش اشکالات، بهبود طرح ها و تشویق به اشتراک گذاری دانش کار می کنند. یکی از برنامه نویسان نقش “راننده” را بر عهده می گیرد در حالی که دیگری با ارائه بازخورد، تماشا و یادگیری “پیمایش” می کند.
- نمودارهای فرسودگی – این نمودار میزان کاری را که باید انجام شود در مقابل زمان باقی مانده برای تکمیل نمایش می دهد. این نمایش منجر به پیشبینی بهتر پروژه میشود و اطمینان میدهد که همه اعضای تیم از بار کاری در پیش رو آگاه هستند.
- بررسی کد – اجازه دادن به اعضای تیم برای بررسی کار همتایان خود میتواند تعداد اشتباهات وارد شده را کاهش دهد و منجر به تسریع و سادهسازی جدول زمانی پروژه شود.