آنچه در این صفحه می خوانید:
- معرفی Agile
- تاریخچه Agile
- متد های توسعه نرم افزار Agile
- بیانیه توسعه نرم افزار Agile
- ویژگی های Agile
- مقایسه اسکرام با Agile
معرفی Agile
توسعه نرم افزار Agile رویکردی برای توسعه نرم افزار است که براساس آن، الزامات و راه حل ها با تلاش مشترک تیم های خود سازمان دهی و عملکرد متقابل و مشتری یا کاربر نهایی آنها تکامل می یابد. این از برنامه ریزی تطبیقی، توسعه تکاملی، تحویل زودرس و بهبود مداوم حمایت می کند و پاسخ سریع و انعطاف پذیر برای تغییر را تشویق می کند. اصطلاح Agile در این زمینه توسط بیانیه برای توسعه نرم افزار Agile رایج شده است. مقادیر و اصول حمایت شده در این بیانیه از طیف گسترده ای از فریمورک های توسعه نرم افزار، از جمله Scrum و Kanban، مشتق شده و از آن پشتیبانی می شوند. در حالی که شواهد حکایتی زیادی وجود دارد مبنی بر اتخاذ رویه ها و ارزش های Agile، مهارت های نرم افزارها، تیم ها و سازمان ها را بهبود می بخشد، برخی از مطالعات تجربی این شواهد را رد کرده اند. Agile یک روش مدیریت پروژه است که از چرخه های توسعه کوتاه به نام "sprints" برای تمرکز بر پیشرفت مستمر در توسعه محصول یا خدمات استفاده می کند. Agile بر اساس توسعه تکراری و افزایشی بنا شد و فرآیند طراحی سازگار، تکامل تدریجی را تعریف می کند. متدولوژی Agile با تقسیم کارها، سبب انجام تکرارها در زمانی کوتاه تری می شود و نسبت به تغییرات انعطاف پذیر است. Agile باعث می شود تا یک نرم افزار با نیاز های کاربران به طور کامل مطابقت داشته و به صورت بهصورت فازبندی به آنها ارائه می شود. هدف از Agile، داشتن محصولات کارآمد، مشتری راضی و نیروی کارعالی است.
تاریخچه Agile
روش های توسعه Iterative و افزایشی را می توان در اوایل سال 1957 کشف کرد، با مدیریت پروژه تکاملی و توسعه نرم افزار تطبیقی در اوایل دهه 1970 ظهور کرد. در دهه 1990، تعدادی از روش های توسعه نرم افزار سبک وزن در واکنش به روش های حاکم بر سنگین وزن که منتقدین آن ها را تحت عنوان بیش از حد تنظیم شده، برنامه ریزی شده و خرد مدیریت شده توصیف کردند. این موارد عبارتند از: توسعه سریع برنامه (RAD)، از سال 1991؛ فرآیند یکپارچه (UP) و روش توسعه سیستم های پویا (DSDM)، هر دو از سال 1994؛ اسکرام، از 1995؛ برنامه کریستال پاک و اکستریم (XP)، هر دو از سال 1996؛ و از ویژگی های توسعه، از سال 1997. اگرچه این ها قبل از انتشار بیانیه Agile سرچشمه گرفته اند، اما اکنون به طور جمعی به عنوان روش های توسعه نرم افزار Agile شناخته می شوند. در همین زمان، تغییرات مشابهی در تولید و هوافضا انجام شد.
در سال 2001، این هفده توسعه دهنده نرم افزار یکدیگر را در یک استراحتگاه در Snowbird, Utah ملاقات کردند تا در مورد این روش های توسعه سبک وزن بحث کنند: کنت بک، وارد کانینگهام، دیو توماس، جف ساترلند، کن شوور، جیم هاسمیت، آلیستر کاکبرن، رابرت سی مارتین، مایک بیدل، آری ون بننكوم، مارتین فاولر، جیمز گرنینگ، اندرو هانت، ران جفریس، جان كرن، برایان ماریك و استیو ملور. آنها با هم بیانیه را برای توسعه نرم افزار Agile منتشر کردند. در سال 2005، گروهی به سرپرستی Cockburn و Highsmith ضمیمه ای از اصول مدیریت پروژه، بیانیه PM وابستگی متقابل، را برای راهنمایی مدیریت پروژه نرم افزار با توجه به روش های توسعه نرم افزار Agile نوشتند. در سال 2009، گروهی که با مارتین همکاری داشتند، اصول توسعه نرم افزار، "بیانیه کاردستی نرم افزار" را نوشتند، تا راهنمای نرم افزار Agile را مطابق رفتار و تسلط حرفه ای راهنمایی کنند.
در سال 2011، اتحادیه Agile راهنمائی برای تمرینات چالاکی را ایجاد کرد (در سال 2016 به واژه نامه Agile تغییر نام داد)، مجموعه ای اوپن سورس در حال تحول از تعاریف کاری شیوه ها، اصطلاحات و عناصر Agile، به همراه تفسیرها و رهنمودهای تجربه جامعه جهانی از تمرین کنندگان Agile را ایجاد کردند.
متد های توسعه نرم افزار Agile
روش های توسعه نرم افزار Agile از طیف گسترده ای از چرخه عمر توسعه نرم افزار را پشتیبانی می کند. برخی بر روی تمرین ها به عنوان مثال XP، برنامه نویسی عملی، مدل سازی Agile تمرکز می کنند، در حالی که برخی روی مدیریت جریان کار تمرکز می کنند، مانندScrum و Kanban و برخی از فعالیت های پشتیبانی از مشخصات و توسعه مورد نیاز مانندFDD، در حالی که برخی به دنبال پوشش کامل چرخه زندگی توسعه هستند مانندDSDM ، RUP.
فریمورک های قابل توجه توسعه نرم افزار Agile شامل موارد زیر است:
- مدلسازی Agile
- فرایند یکپارچهٔ Agile (AUP)
- Crystal Clear
- متدهای Crystal
- متدهای توسعهٔ سیستمهای دینامیک (DSDM)
- برنامهنویسی اکستریم (XP)
- توسعهٔ ویژگیمحور (FDD)
- طراحی گرافیکی سیستم (GSD)
- توسعه Kanban
- توسعه Lean
- Scrum
- Scrumban
بیانیه توسعه نرم افزار Agile
براساس تجربه مشترک خود در زمینه توسعه نرم افزار و کمک به دیگران در انجام این کار، هفده امضاکننده این بیانیه اعلام کردند که:
ما با توسعه نرم افزار و کمک به دیگران در انجام آن در حال کشف راه های بهتری برای توسعه نرم افزار هستیم. از این روش ها باید به ارزش دست یابیم:
- افراد و تعاملات بالاتر از فرآیندها و ابزارها
- نرم افزار کارکننده بالاتر از مستندات جامع
- مشارکت مشتری در انجام کار بالاتر از قرارداد کار
- پاسخگویی به تغییرات بالاتر از پیروی یک طرح
با وجود اینکه موارد سمت چپ نیز ارزشمند هستند ولی ما برای موارد سمت راست ارزش بیشتری قائل هستیم. همانطور که اسکات امبلر توضیح داد:
- ابزارها و فرایندها مهم هستند ، اما داشتن افراد ذیصلاح به طور مؤثر در کنار هم کار مهمتر است.
- مستندات خوب برای کمک به مردم برای درک چگونگی ساخت نرم افزار و نحوه استفاده از آن مفید است ، اما نکته اصلی توسعه ایجاد نرم افزار است نه مستند سازی.
- یک قرارداد مهم است اما جایگزینی برای همکاری نزدیک با مشتریان برای کشف آنچه نیاز دارند نیست.
- یک طرح پروژه مهم است ، اما نباید آنقدر سختگیرانه باشد که بتواند تغییرات در فناوری یا محیط ، اولویت های ذینفعان و درک مردم از مشکل و راه حل آن را تحقق بخشد.
برخی از نویسندگان اتحاد Agile، یک سازمان غیر انتفاعی را تشکیل داده اند که براساس ارزش ها و اصول بیانیه، توسعه نرم افزار را ارتقا می بخشد. جیم Highsmith با معرفی بیانیه به نمایندگی از اتحاد Agile، گفت: "جنبش Agile ضد متدولوژی نیست، در حقیقت بسیاری از ما می خواهیم اعتبار خود را به کلمه روش شناسی برگردانیم. ما می خواهیم تعادل را بازیابی کنیم. ما برنامه ریزی می کنیم اما محدوده برنامه ریزی را در یک محیط آشفته می شناسیم. کسانی که طرفداران XP یا SCRUM یا هر یک از دیگر روشهای سریع را به عنوان "هکرها" می نامند، از این روش شناسی و تعریف اصلی اصطلاح هکر غافل هستند."
اصول توسعه نرم افزار Agile
بیانیه برای توسعه نرم افزار Agile مبتنی بر دوازده اصل است:
- رضایت مشتری با تحویل زودهنگام و مداوم نرم افزارهای ارزشمند.
- خوش آمدگویی در تغییر الزامات، حتی در اواخر توسعه.
- ارائه نرم افزار کار به طور مکرر (هفته ها و نه ماه ها)
- همکاری نزدیک و روزانه بین افراد تجاری و توسعه دهندگان
- پروژه هایی در اطراف افراد با انگیزه ساخته می شود که به آنها اعتماد می شود.
- گفتگوی چهره به چهره بهترین شکل ارتباطی (محل سکونت) است.
- نرم افزار کار، اندازه گیری اصلی پیشرفت است.
- توسعه پایدار، قادر به حفظ سرعت ثابت
- توجه مستمر به برتری فنی و طراحی خوب
- سادگی - هنر حداکثر کردن کارهایی که انجام نمی شود - ضروری است.
- بهترین معماری ها، الزامات و طرح ها از تیم های خود ساماندهی پدیدار می شوند.
- به طور مرتب، تیم در مورد چگونگی مؤثرتر شدن و تنظیم متناسب بودن، تأمل می کنند.
ویژگی های Agile
- مدیریت بهتر کسب و کار
- افزایش کیفیت کارها و پروژه ها
- کاهش هزینه های پروژه کاری
- بهبود و افزایش بهره وری در کسب و کار
- مدیریت محصولات
- توجه به طراحی خوب مطابق با نیاز مشتریان
- ایجاد همکاری بین افراد کسب و کار و تیم توسعه
- داشتن یک سرعت بالا و ثابت برای انجام کارها
- تحویل مکرر نرم فزار
مقایسه اسکرام با Agile
روش Agile عملی است که به تکرار مداوم توسعه و آزمایش در فرآیند SDLC کمک می کند. Agile محصول را به ساختهای کوچکتر تقسیم می کند. در این روش، برخلاف سایر روشهای توسعه نرم افزار، فعالیتهای توسعه و آزمایش همزمان هستند. همچنین کار گروهی و ارتباط چهره به چهره را ترغیب می کند. مشاغل، ذینفعان و توسعه دهندگان و مشتریان باید برای توسعه یک محصول با یکدیگر همکاری کنند.
اسکرام چیست؟
اسکرام یک فرایند Agile است که به ما امکان می دهد تا در کمترین زمان بر ارائه ارزش تجاری متمرکز شویم. این نرم افزار به سرعت و بارها و بارها از نرم افزار واقعی کار بازرسی می کند. این امر بر مسئولیت پذیری، کار تیمی و پیشرفت تکراری به سمت یک هدف تعریف شده تأکید دارد. فریمورک Scrum معمولاً به این واقعیت می پردازد که احتمالاً نیازها تغییر می کنند یا بیشتر اوقات در ابتدای پروژه مشخص نیست.
مقایسه اسکرام با Agile در زیر آمده است:
Agile
- Agile یک روش توسعه مبتنی بر رویکرد تکراری و افزایشی است.
- توسعه نرم افزار Agile به طور گسترده ای به محیط هایی که دارای تیم توسعه پروژه کوچک اما متخصص هستند، بسیار مناسب است
- در فرآیند Agile، رهبری نقش اساسی دارد.
- در مقایسه با اسکرام روشی سخت تر است. بنابراین فضای زیادی برای تغییرات مکرر وجود ندارد.
- Agile شامل همکاری و تعامل چهره به چهره بین اعضای تیم های مختلف عملکردی متقابل است.
- Agile می تواند بسیاری از فرایندهای پیشرفت و تغییر سازمانی را پیش رو داشته باشد.
- در این روش، هر مرحله از توسعه مانند الزامات، تجزیه و تحلیل، طراحی، به طور مداوم در طول چرخه زندگی کنترل می شود.
- سرپرست پروژه از كليه كارها در روش چابك مراقبت مي كند.
- روش Agile بازخورد را در طی فرایند از کاربر نهایی تشویق می کند. در این روش، محصول نهایی مفیدتر خواهد بود.
- بطور مرتب نرم افزار را تهیه و به روز کنید.
- طراحی و اجرا باید ساده نگه داشته شود.
- در روش Agile اولویت همیشه جلب رضایت مشتری با ارائه مداوم نرم افزارهای ارزشمند است.
- نرم افزار کار ابتدایی ترین میزان پیشرفت است.
- بهتر است ارتباط چهره به چهره برقرار شود و از تکنیک هایی مانند اینها باید استفاده شود تا در حد امکان به این هدف نزدیک شوید.
اصول Agile در زیر آمده است:
- ماشین نیازهای در حال تغییر، حتی دیر توسعه. فرآیندهای Agile امکان تغییر را با توجه به مزیت رقابتی مشتری ایجاد می کنند
- افراد تجاری و توسعه دهندگان روزانه در طول پروژه کار خواهند کرد.
- توجه به برتری فنی و طراحی درست باعث افزایش چابکی می شود.
- تیم، برای کارآمد تر شدن کار کنند، برای این که آنها رفتار خود را مطابق با پروژه تنظیم می کنند.
اسکرام
- اسکرام یکی از کاربردهای روش Agile است. که در آن ساخت های افزایشی در هر دو تا سه هفته به مشتری تحویل داده می شود.
- اسکرام در ایده آل در پروژه ای استفاده می شود که نیاز به سرعت تغییر می یابد.
- اسکرام تیمی متشکل از عملکرد خود را سازمان می دهد.
- بزرگترین مزیت اسکرام انعطاف پذیری آن است زیرا به سرعت نسبت به تغییرات واکنش نشان می دهد.
- در اسکرام، همکاری در جلسه ایستادن روزانه با نقش ثابت که به استاد اسکرام، صاحب محصول و اعضای تیم اختصاص داده شده است.
- هنگام اجرای فرایند اسکرام تغییرات زیادی لازم نیست.
- نمایشی از عملکرد در انتهای هر نقوش ارائه شده است. به طوری که بازخورد منظم را می توان قبل از حداکثر سرعت دویدن بعدی انجام داد
- سرپرست تیم وجود ندارد، بنابراین کل تیم به مسائل یا مشکلات می پردازد.
- جلسه روزانه Sprint برای بررسی و بازخورد برای تصمیم گیری در مورد پیشرفت آینده پروژه انجام می شود.
- هنگامی که تیم با فعالیت های فعلی اسپرینت انجام می شود، می توان اسپرینت بعدی را برنامه ریزی کرد.
- طراحی و اجرای می تواند نوآورانه و آزمایشی باشد.
- کنترل فرآیند تجربی یک فلسفه اصلی فرآیند مبتنی بر اسکرام است.
- نرم افزار کار یک اقدام ابتدایی نیست.
- تمرکز تیم Scrum برای ارائه حداکثر ارزش تجاری از ابتدا در ابتدای پروژه و ادامه آن در کل.
در زیر اصول اسکرام آمده است:
- خود-سازمان: این اصل منجر به مالکیت مشترک سالم تر در بین اعضای تیم می شود. همچنین محیطی خلاقانه و خلاقانه است که باعث رشد می شود.
- همکاری: همکاری یک اصل اساسی دیگر است که بر کار مشارکتی متمرکز است: 1. آگاهی 2. بیان و 3. تخصیص. همچنین مدیریت تیم را به عنوان یک فرآیند ایجاد ارزش مشترک با تیم هایی که برای ارائه بالاترین ارزش همکاری می کنند، در نظر می گیرد.
- Time-boxing: این اصل چگونگی محدودیت زمان را در روش Scrum تعریف می کند. یک عنصر مهم از عناصر با جعبه زمان برنامه ریزی و جلسه های نقد و بررسی روزانه است.
- توسعه عملی: این اصل بر نحوه مدیریت بهتر تغییرات و ساخت محصولاتی که نیاز مشتری را برآورده می کند تأکید می کند. همچنین مسئولیت های سازمان در مورد توسعه مکرر را تعریف می کند.