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