مدل توسعه اجایل (چابک) چیست؟

اصطلاح توسعه نرم افزاری اجایل، نخستین بار در سال ۲۰۰۱ پدید آمد. جمعی از توسعه دهندگان نرم افزار که از مدل توسعه آبشار (Waterfall model) که مدلی قدیمی و دست و پاگیر محسوب می‌شد، خسته شده بودند، تصمیم گرفتند که برای مدیریت پروژه در توسعه نرم افزار بیانیه جدیدی تنظیم کنند و آن را “بیانیه اجایل” نام نهادند.

این بیانیه مهم به حدی تاثیرگذار بود که تا به امروز در بین توسعه دهندگان از آن به عنوان کتاب مقدس توسعه نرم افزاری اجایل یاد می شود و حاوی تمام اصول و رویه های مناسب برای کار .
روش شناسی اجایل به این مسئله می پردازد که توسعه دهندگان بیش از هرچیز باید بدنبال جلب رضایت مشتری باشند. این کار را می توان از طریق ایجاد و حفظ ارتباط دائم با مشتری و ارائه ی مداوم بروزرسانی‌های نرم افزاری به مشتری و همچنین تمرکز بر برقراری ارتباط بین اعضای تیم انجام داد.

بیانیه اجایل شامل ۱۲ مورد است که در ادامه به برخی از این موارد می پردازیم :

  1. رضایت مشتری در اولویت است. تیم توسعه از طریق ارائه مداوم بروزرسانی ها و محصولات و همچنین ایجاد ارزش افزوده باید بدنبال جلب رضایت مشتری باشد.
  2. چنانچه مشتری هرگونه تغییری در سفارش خود اعمال کند، کار باید مطابق میل او انجام شود حتی اگر نرم افزار در مراحل پایانی توسعه باشد.
  3. مشتری و تیم توسعه دهنده باید به صورت روزانه با یکدیگر در ارتباط باشند.
  4. ضروری است که فضای مناسبی برای کار تیم توسعه دهنده فراهم شود و پشتیبانی و حمایت لازم از آنها صورت گیرد. تنها با انجام این کار میتوان تیم توسعه دهنده را با انگیزه نگه داشت.
  5. فرآیند اجایل دارای اصول ثابت و برتری تکنیکی هستند که منجر به افزایش بهره وری شده و از این رو باعث توسعه پایدار می شوند.
  6. تیم توسعه زمانی را باید برای بازنگری اختصاصی دهد. این کار باعث می‌شود تا اعضای تیم توسعه با یکدیگر سازگاری بیشتری داشته و در نتیجه بازدهی را بالاتر ببرند.

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

اگرچه روش اجایل موجب تحویل سریع تر نرم افزار به مشتری می شود، اما مهم ترین مزیت این متد سرعت تحویل محصول نهایی نیست، بلکه ارتباط دائم با مشتری و ارائه مداوم و هرچه بیشتر ارزش به اوست.

سورنا ذبیحی در وبلاگ شخصی خود و پادکست بی تاکس توضیحات بیشتری در مورد فلسفه اجایل داده و در مورد مدیریت پروژه تحت اجایل صحبت میکند. پیشنهاد میکنم در صورتی که علاقه مند هستید حتما اپیزود ۳ پادکست بی تاکس را گوش داده و این مطلب از سورنا را مطالعه کنید. اما در ادامه این مطلب، به پنج روش اصلی اجایل و مزایا و معایب آنها در توسعه نرم افزار اشاره خواهیم کرد.

 

۱. اسکرام (Scrum)

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

هر روز جلسات کوتاه ۱۵ دقیقه ای برگزار می شود که نقش همگام سازی فعالیت ها و یافتن بهترین راه برای برنامه ریزی روز کاری را دارند.

مزایا و معایب:

  1. تیم ها انگیزه زیادی خواهند داشت، زیرا برنامه نویسان می خواهند در چارچوب مهلت تعیین شده ( Deadline ) در هر اسپرینت، کار را تحویل دهند.
  2. شفافیت باعث می شود تا پروژه توسط همه اعضای یک تیم یا سازمان دنبال شود.
  3. در روش اسکرام، تمرکز روی کیفیت بسیار مهم است و در نتیجه اشتباهات کمتری رخ می دهد.
  4. پویایی این روش به توسعه دهندگان این امکان را می دهد تا اولویت ها را سازماندهی کنند و اطمینان حاصل کنند که اسپرینت هایی که هنوز کامل نشده اند، بیشتر مورد توجه قرار می گیرند.
  5. تقسیم بندی پروژه به چند قسمت و تلاش برای بالا بردن سرعت توسعه ممکن است گاهی منجر به این شود که تیم توسعه دهنده، توجه به کلیت پروژه را فراموش کند و فقط روی یک قسمت متمرکز شود.
  6. ممکن است نقش هر توسعه دهنده به خوبی تعریف نشده باشد، در نتیجه باعث سردرگمی اعضای تیم شود.

 

۲. کانبان (Kanban)

Kanban اصالتا واژه ای ژاپنی است به معنی ، “سر وقت” در عمل ، روش کانبان شامل یک تخته یا جدول است که به ستون هایی تقسیم شده است و هر کدام از آنها یکی از جریان های تولید نرم افزار را نشان می دهند. با پیشرفت گام به گام عملیات توسعه، اطلاعات موجود در جدول نیز تغییر می کنند و هنگامی که یک کار جدید شروع می شود ، “کارت” جدیدی برای آن ایجاد می شود.
روش کانبان نیاز به وجود ارتباط موثر بین اعضای تیم و همینطور وجود شفافیت اعتقاد دارد تا اعضای یک تیم در هر لحظه بدانند که محصول دقیقا در چه مرحله ای از توسعه قرار دارد و بتوانند وضعیت پروژه را در هر زمان مشاهده کنند.

مزایا و معایب:

  1. امکان مشاهده کلیه وظایف یک پروژه. به عنوان مثال (تکمیل شده ، در حال انجام یا در حال تست).
  2. می توان تعداد کارهای در حال اجرا را محدود کرد (یعنی میزان کار، با توجه به وضوح یا امکان تحویل آن تعیین می شود).
  3. تمرکز روی مدت زمان یک چرخه (یعنی چه مدت طول می کشد که یک کار از ابتدا تا مرحله نهایی انجام شود).
  4. امکان ارائه مداوم محصول به مشتری را فراهم می کند.
  5. ممکن است اعضای یک تیم اطلاعات موجود در صفحه کانبان بویژه اطلاعات قدیمی و منسوخ را اشتباه تفسیر کنند.
  6. از آنجا که هیچ چارچوب زمانی در کانبان وجود ندارد، ممکن است با مشکلات مربوط به زمان مانند تأخیرهایی در هر مرحله روبرو شوید.

 

۳. برنامه نویسی اکستریم (Extreme Programming)

این روش که آنرا برنامه نویسی مفرط و به اختصار (XP) می نامند، یکی از روش‌های معمولی توسعه اجایل است که توسط کِنت بِک ساخته شده و می تواند برای استفاده شرکت های توسعه ای با ابعاد مختلف مناسب باشد. این روش بر ارزشهایی مانند ارتباطات، سادگی، بازخورد، شجاعت و احترام تأکید دارد و رضایت مشتری را نسبت به هر چیز دیگری در اولویت قرار می دهد. این روش برای توسعه دهندگانی مناسب است که هرگونه تغییر در نیاز و سفارش مشتری را بپذیرند، حتی اگر در مراحل پایانی چرخه توسعه قرار داشته باشند.

کار تیمی در روش XP بسیار مهم است ، زیرا وقتی مشکلی پیش می آید، باید توسط تمام اعضای یک تیم شامل مدیران، توسعه دهندگان و مشتریان حل شود. همه آنها قطعات اساسی یک پازل یکسان هستند، از این رو در کنار هم محیط کارآمدی ایجاد خواهند کرد که به باعث افزایش بهره وری در تیم خواهد شد. در برنامه نویسی اکستریم، نرم افزار از همان روز اول به صورت مداوم آزمایش می شود و برای بهبود عملکرد آن، بازخوردها جمع آوری و تحلیل می شوند.

مزایا و معایب:

  1. سادگی کد نوشته شده به عنوان یک مزیت در نظر گرفته می شود، زیرا باعث می شود بتوان در هر زمانی که لازم باشد آنرا بهبود بخشید.
  2. کل مراحل و کل چرخه توسعه XP قابل مشاهده است، بنابراین نتایج را به روشی نسبتاً سریع نشان می دهد.
  3. این روش دقیقاً به دلیل آزمایش مداوم نسبت به سایر روش ها چابک تر است.
  4. روش XP همچنین در ارتقاء استعداد تیم ها و برداشتن موانع از مسیر آنها موثر است.
  5. تمرکز شدید روی کدنویسی ممکن است باعث توجه کمتر به طراحی شود ، از این رو لازم است توجه بیشتر به آن طراحی صورت گیرد.
  6. چنانچه همه اعضای تیم در یک منطقه جغرافیایی و نزدیک به هم کار نکنند و برخی ساکن مناطق مختلفی باشند، آنگاه این چارچوب ممکن است به بهترین بازدهی ممکن را نداشته باشد.
  7. در پروژه های XP همه ارورهای احتمالی ثبت نمی شود و عدم وجود نظارت می تواند منجر به اشکالات مشابه در آینده شود.

 

۴. توسعه ناب (Lean Development)

روش توسعه لین (ناب) روشی است که با الهام روش تولید ناب شرکت تویوتا ایجاد شده و امروزه برای توسعه نرم افزار مورد استفاده قرار می گیرد. این روش یک چارچوب مفهومی را ارائه می دهد و از ارزش ها، اصول و شیوه های مناسب توسعه ای پیروی می کند که می توان آنها را زیر مجموعه ای از متد اجایل دانست.

در توسعه ناب هفت اصل اساسی وجود دارد: حذف موارد بی اهمیت (هر چیزی که برای پروژه و مشتری ارزش مؤثری نداشته باشد حذف می شود)؛ توسعه کیفیت (توسعه با کیفیت نیاز به نظم و انضباط دارد). ایجاد دانش (تیم توسعه دهنده باید کل زیرساخت ها را مستند سازی و حفظ کند بطوریکه امکان بازآفرینی آن وجود داشته باشد). تعهدات متنوع (این نکته بیان می کند که اعضای تیم بدون اینکه درک درست و کامل از الزامات یک کسب وکار داشته باشند نباید بیش از حد روی برنامه ریزی و پیش بینی ایده ها در آن زمینه متمرکز شود). تحویل سریع (تحویل ارزش افزوده به مشتری در اسرع وقت)؛ احترام به تیم (برقراری ارتباط بین اعضای تیم و مدیریت اختلافات پیش آمده دو نکته اساسی هستند). بهینه سازی کل (برای ایجاد یک جریان واقعا ارزشمند، دنباله توسعه باید به اندازه کافی کامل شود تا بتواند مشکلات را در کدهای نوشته شده حذف کند).

مزایا و معایب:

  1. این روش به تیم اجازه می دهد تا فعالیت های اضافی را حذف کنند ، بنابراین باعث صرفه جویی در وقت و هزینه می شود.
  2. تیم توسعه را در فرآیند تصمیم گیری توانمند می کند و از این طریق زمان لازم برای ارائه کار آماده شده را کاهش می دهد، از این رو انگیزه اعضای تیم افزایش می یابد.
  3. این روش مقیاس پذیر است. به این معنی که براحتی با پروژه هایی با هر ابعادی سازگار می شود.
  4. این روش شدیدا به توانایی تیم توسعه و پیروی آنها از اصول توسعه ناب وابسته است، این بدان معناست که داشتن برنامه نویسان بسیار متعهد و با استعداد در توسعه لازم خواهد بود.
  5. با توجه به اینکه وظایف مختلف، هر کدام به عناصر متعدد تقسیم می شوند، احتمال کاهش میزان تمرکز وجود دارد.
  6. نیاز به برخی از مستندات ( documentations )، به ویژه در مورد خصوصیات کسب و کاری که موضوع کار است، وجود دارد. در غیر این صورت ، بیم آن می رود که توسعه به صورت نادرست انجام شود و مشکلاتی ایجاد شود.

 

۵. کریستال

روش کریستال هم یکی از روشهای اجایل است که شامل انواع مختلفی از قبیل کریستال شفاف حداکثر شامل یک تیم ۸ نفره ، کریستال زرد حداکثر تیم ۱۰ تا ۲۰ نفره ، کریستال نارنجی حداکثر تیم ۲۰ تا ۵۰ نفره و کریستال قرمز برای تیم های بزرگ با ۵۰ تا ۱۰۰۰ نفر است. کریستال بر روی اصولی مانند افراد، تعامل، جامعه، مهارت، استعداد و ارتباطات متمرکز شده و هدف از آن ارائه بهترین فرآیند ممکن برای توسعه نرم افزار است. هسته اصلی این فرآیند توسعه تعامل و همزیستی است که باید بین افرادی که به پروژه ها و فرایندها اختصاص داده می شوند وجود داشته باشد تا کارآیی در توسعه ایجاد شود.

به گفته آلیستر کاکبِرن، بنیانگذار کریستال، “این روش شامل خانواده ای از روش های توسعه نرم افزار است ، که با قدرتی ناشی از سرمایه گذاری توسط مردم کار می کنند ، و بسیار سبک و انعطاف پذیر است.” اصولاً ، کاکبرن معتقد است که استعداد و نحوه تعامل اعضای تیم مزایایی برای کل پروژه به همراه دارد.

مزایا و معایب:

  1. به منظور شناسایی مشکلات احتمالی در هر مرحله ، ارائه مکرر محصول و بروز رسانی به مشتری را در حین مراحل کار تضمین می کند.
  2. همیشه امکان بهبود ویژگی های نرم افزار وجود دارد، حتی تا مدتی پس از اتمام کار. علاوه بر این امکان بحث در مورد چگونگی انجام فرایندها به بهترین نحو فراهم می شود.
  3. امکان برقراری ارتباط نزدیک تر و ایجاد تعامل و به اشتراک گذاری دانش بین اعضای تیم را فراهم می کند.
  4. این روش نیاز به وجود محیط فنی‌ ای با امکان انجام آزمایشات خودکار ، مدیریت پیکربندی و ادغام مکرر دارد.
  5. وجود انواع مختلفی از متدولوژی ها یک واقعیت است و به این معناست که ممکن است اصول کار با توجه به اندازه تیم و اندازه پروژه متفاوت باشند ، در نتیجه مدیریت و انجام برخی پروژه ها ممکن است خیلی ساده نباشند.
  6. این روش نیاز مستمر به برقراری ارتباط و تأمل بین اعضای تیم دارد لذا ممکن است برای تیم هایی که اعضایشان در مناطق مختلف پراکنده اند، مناسب نباشد.
  7. برنامه ریزی و توسعه وابسته به الزامات پروژه نیست.

 

در این مطلب به بررسی مدل اجایل و نحوه استفاده از متد های تحت اجایل در مدیریت پروژه و همچنین مزایا و معایب آنها پرداختیم. در صورتی که علاقه مند به دریافت اطلاعات بیشتری در مورد اجایل و فلسفه اش هستید پیشنهاد میکنم از پادکست بی تاکس و وبلاگ سورنا ذبیحی حتما دیدن کنید. شما در مدیریت پروژه های خودتان از چه متدی پیروی میکنید ؟