Agile срещу традиционната методология за разработване на софтуер
Днес в софтуерната индустрия се използват различни методологии за разработване на софтуер. Методът за разработване на водопад е един от най-ранните методи за разработване на софтуер. V-Model, RUP и няколко други линейни, итеративни и комбинирани линейно-итеративни методи, които дойдоха след методологията на водопада, имаха за цел да унищожат много проблеми на метода на водопада. Всички тези по-ранни методологии се наричат Традиционни методологии за разработване на софтуер. Agile model е по-нов модел за разработване на софтуер, въведен за отстраняване на недостатъците, открити в традиционните модели. Основният фокус на Agile е да включи тестването възможно най-рано и да пусне работеща версия на продукта много рано, като разбие системата на много малки и управляеми подчасти.
Какво представлява традиционната методология за разработване на софтуер?
Софтуерните методологии като Waterfall method, V-Model и RUP се наричат традиционни методологии за разработване на софтуер. Методологията на водопада е един от най-ранните модели за разработка на софтуер. Както подсказва името, това е последователен процес, при който напредъкът протича през няколко фази (анализ на изискванията, проектиране, разработване, тестване и изпълнение) отгоре надолу, аналогично на водопад. V-Model се разглежда като продължение на модела за разработване на софтуер Waterfall. V-Model използва същите връзки между фазите, определени в модела на водопада. Но вместо да се спуска линейно (като модела Waterfall), V-Model се спуска надолу по диагонал и след това се връща обратно нагоре (след фазата на кодиране), образувайки формата на буквата V. RUP (Rational Unified Process) е адаптивна рамка на процеса (не един конкретен процес),които могат да бъдат персонализирани от организацията за развитие според техните нужди. Малко подобен на водопада, той има фиксирани фази като начало, разработване, изграждане и преход. Но за разлика от водопада, RUP е итеративен процес.
Какво е Agile?
Agile е съвсем нова методология за разработване на софтуер (или по-точно група от методологии), базирана на гъвкавия манифест. Това е разработено, за да реши някои недостатъци в традиционните методологии за разработване на софтуер. Подвижните методи се основават на отдаване на висок приоритет на участието на клиентите в началото на цикъла на разработка. Той препоръчва включването на тестване от клиента по-рано и възможно най-често. Тестването се извършва във всяка точка, когато стане налична стабилна версия. Основата на Agile се основава на започване на тестване от началото на проекта и продължаване до края на проекта. Scrum и Extreme програмирането са две от най-популярните разновидности на Agile методите.
Ключовата стойност на Agile е „качеството е отговорност на екипа“, което подчертава, че качеството на софтуера е отговорност на целия екип (а не само на екипа за тестване). Друг важен аспект на Agile е разбиването на софтуера до по-малки управляеми части и доставянето им на клиента много бързо. Предоставянето на работещ продукт е от изключителна важност. След това екипът продължава да усъвършенства софтуера и да предоставя непрекъснато на всяка голяма стъпка. Това се постига чрез много кратки цикли на освобождаване (наречени спринтове в Scrum) и получаване на обратна връзка за подобрение в края на всеки цикъл. Сътрудници без много взаимодействия на екипа, като разработчици и тестери в по-ранните методи, сега работят заедно в рамките на Agile модела.
Каква е разликата между Agile и традиционната методология за разработване на софтуер?
Въпреки че Agile методът се основава на итеративно развитие като някои от традиционните подходи, Agile и Традиционните методологии имат ключови разлики. Традиционните подходи използват планирането като техен контролен механизъм, докато Agile моделите използват обратната връзка от потребителите като основен контролен механизъм. Agile може да се нарече ориентиран към хората подход, отколкото традиционните методи. Agile моделът доставя работеща версия на продукта много рано в сравнение с традиционните методологии, така че клиентът да може да осъзнае някои от предимствата рано. Времето за изпитване на Agile е сравнително кратко в сравнение с традиционните методи, тъй като тестването се извършва успоредно с разработването. Повечето традиционни модели са много твърди и относително по-малко гъвкави от модела Agile. Поради всички тези предимства, Agile е за предпочитане пред традиционните методологии в момента.