اجایل (Agile) چیست؟

توی این مطلب سعی دارم به زبون ساده چیستی اجایل، ارتباط‌ش با QA و قواعد کلی‌ش رو توضیح بدم. باشد که ساده و قابل فهم باشد!

اجایل، اجایل، اجایل! این اصطلاح عجیب و غریب رو این روزا به حدی می‌شنوم که حتی در جاهایی به کار برده میشه که خود گوینده هم تعریف درستی از اون نداره. اما طبیعتا باید تعریف درست و ساختار تعریف شده‌ای داشته باشه. اینطوری نیست؟

توی این مطلب قصد دارم به زبان ساده و ۱۰۱طور توضیح بدم که اجایل چیه، به چه دردی می‌خوره و اینکه در مدیریت پروژه‌ها چطوری می‌تونه به ما کمک کنه. بیایید با تعاریف اولیه شروع کنیم.

واژه‌شناسی Agile

کلمات از آسمون نمی‌افتن رو زمین، بلکه ما اونا رو درست می‌کنیم و فارغ از اینکه در طول زمان چه بلاهای معنایی سرشون میاد، یه ریشه و مفهوم اولیه داره. Agile هم درست به همین شکل هستش. در نتیجه قبل از اینکه بفهمیم منظور از متدولوژی اجایل چیه، بیایید با خود واژه Agile ‌آشنا بشیم.

اگه توی گوگل سرچ کنیم Define Agile با چنین نتیجه‌ای روبرو می‌شیم:

همونطور که می‌بینید در تعریف اول، اجایل رو «قادر بودن به حرکت به سرعت و آسانی» تعریف کرده. در تعریف دوم هم سراغ همون چیزی رفته که ما امروز می‌خوایم راجع بهش صحبت کنیم.

اما اگه متوجه شده باشید مفهوم کلی Agile به معنای سریع بودن هستش. سریع بودن در انجام کاری.

متدولوژی اجایل (Agile methodology) چیست؟

خب متدولوژی اجایل داره سعی میکنه یه چهارچوبی رو درست کنه تا ما بتونیم کارها رو با سرعت و آسونی بیشتری انجام بدیم. حالا اون کار توسعه و تست نرم‌افزار باشه یا تولید محتوا و کارهای دیگه.

این متدولوژی تلاش میکنه تا یه کار رو به جای اینکه خطی انجام بده، اون رو به چند مرحله پویا تقسیم کنه. هرکدوم از این مراحل رو در ادبیات اجایلی، اسپرینت می‌گن.

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

منظور از اسپرینت (Sprint) چیه؟

اسپرینت (Sprint) یک بازه زمانی کوتاه و تعریف‌شده‌ست که توی روش‌های توسعه نرم‌افزار اجایل (Agile) برای انجام یک مجموعه از وظایف و دستیابی به اهداف مشخص تعریف می‌شه. اسپرینت‌ها معمولاً بین یک تا چهار هفته طول می‌کشن.

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

اسپرینت‌ها به تیم‌ها کمک می‌کنن تا در بازه‌های زمانی کوتاه و قابل مدیریت کار کنن، بازخورد‌های مکرر بگیرن و به تدریج محصول رو بهبود بدن.

مانیفست Agile

حالا که متوجه ریشه واژه اجایل و متدولوژی‌ش آشنا شدید، بیایید با مانیفست و باید و نبایدهاش آشنا بشیم.

اجایل به‌صورت کلی ۱۲ تا شرط و باید و نباید داره که با رعایت کردن اونا می‌تونید یک کار رو براساس استانداردهای اجایل پیش ببرید.

۱۲ قاعده Agile

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

نقش Agile در QA

توی روش اجایل (Agile)، کیفیت سنجی (QA) نقش خیلی مهمی داره و به شدت با فرآیند توسعه نرم‌افزار گره خورده. برخلاف روش‌های سنتی که QA معمولاً در انتهای پروژه صورت می‌گیره، توی اجایل، QA به صورت مستمر و در طول اسپرینت‌ها انجام می‌شه. به این صورت:

  1. ادغام QA در تیم‌های توسعه: توی تیم‌های اجایل، تست‌کننده‌ها (QA) بخشی از تیم توسعه هستن و از همون ابتدا درگیر پروژه می‌شن. این باعث می‌شه که مشکلات و باگ‌ها زودتر شناسایی و برطرف بشن.
  2. تست‌های مداوم: در طول هر اسپرینت، تست‌های مداوم انجام می‌گیره تا مطمئن بشیم که هر ویژگی جدید اضافه شده بدون مشکل کار می‌کنه و روی بخش‌های دیگه تاثیر منفی نمی‌ذاره. این شامل تست‌های واحد (Unit Tests)، تست‌های ادغام (Integration Tests) و تست‌های پذیرش (Acceptance Tests) هست.
  3. بازخورد سریع: یکی از اصول اجایل اینه که به صورت مداوم بازخورد بگیریم و بهبود بدیم. QA به تیم توسعه بازخورد سریع می‌ده تا مشکلات به سرعت برطرف بشن و کیفیت نهایی نرم‌افزار بالا باشه.
  4. خودکارسازی تست‌ها: توی اجایل، تست‌های خودکارسازی شده اهمیت زیادی دارن. با استفاده از ابزارهای خودکارسازی تست، می‌تونیم تضمین کنیم که تغییرات جدید به نرم‌افزار به خوبی تست شدن و مشکلات کمتری به وجود میان.
  5. تست‌های چابک (Agile Testing): تست‌های چابک به معنای تست کردن به روشی انعطاف‌پذیر و سازگار با تغییرات هست. این تست‌ها باید سریع، کارا و قابل تنظیم باشن تا با فرآیند اجایل همخوانی داشته باشن.

برای مطالعه بیشتر در ارتباط با Agile و یادگیری‌ش می‌تونید از وبسایت agilealliance استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مطالب وبلاگ