Технологии за разработка на софтуер

Жизненият цикъл на софтуера (SW) е период от време, който започва от момента на вземане на решение за необходимостта от създаване на софтуерен продукт и завършва в момента на пълното му изтегляне от експлоатация [1]. Този цикъл е процес на изграждане и разработване на софтуер.

Водопад (каскаден, последователен) модел

Моделът на жизнения цикъл на водопада е предложен през 1970 г. от Уинстън Ройс. Той предвижда последователно изпълнение на всички етапи на проекта в строго фиксиран ред. Преходът към следващия етап означава пълно завършване на работата на предишния етап. Изискванията, определени на етапа на формиране на изискванията, са строго документирани под формата на техническо задание и фиксирани за целия период на разработване на проекта. Всеки етап завършва с издаването на пълен набор от документация, достатъчна за разработката, която да бъде продължена от друг екип за разработка.

Етапи на проекта според модела на водопада:

Формиране на изисквания; Дизайн; Внедряване; Тестване; Въведение; Експлоатация и поддръжка.

Пълна и съгласувана документация на всеки етап; Лесно е да се определи времето и цената на проекта.

Итеративен модел

Алтернатива на последователния модел е така нареченият итеративен и инкрементален модел на развитие (IID), който също е получен от Т. Гилб през 70-те години. името на еволюционния модел. Този модел се нарича още итеративен модел и инкрементален модел[4].

Според Т. Гилба „еволюцията е техника, предназначена да създаде вид на стабилност. Шансовете за успешно създаване на сложна система ще бъдат максимално увеличени, ако тя се внедри в поредица от малки стъпки и ако всякаедна стъпка включва добре дефиниран успех, както и възможност за „връщане назад“ към предишна успешна стъпка в случай на неуспех. Преди да пусне в действие всички ресурси, предназначени за създаване на система, разработчикът има възможност да получи сигнали за обратна връзка от реалния свят и да коригира възможните грешки в проекта.

Подходът IID има и своите отрицателни страни, които всъщност са обратната страна на предимствата. Първо, цялостно разбиране на възможностите и ограниченията на проекта липсва от много дълго време. Второ, когато итерирате, трябва да отхвърлите част от работата, свършена по-рано. Трето, добросъвестността на специалистите при изпълнение на работата все още намалява, което е психологически разбираемо, тъй като те постоянно са доминирани от усещането, че „така или иначе всичко може да бъде преработено и подобрено по-късно“ [3].

В повечето съвременни методологии за разработка (RUP, MSF, XP) се прилагат различни варианти на итеративния подход.

спираловиден модел

Спираловидният модел е разработен в средата на 80-те години от Бари Бьом. Базиран е на класическия цикъл на Деминг PDCA (планиране-извършване-проверка-действие). Когато се използва този модел, софтуерът се създава в няколко итерации (спирални завъртания) чрез прототипиране.

Всяка итерация съответства на създаването на фрагмент или версия на софтуера, при което се уточняват целите и характеристиките на проекта, оценява се качеството на получените резултати и се планира работата на следващата итерация.

При всяка итерация се оценява следното:

рискът от превишаване на сроковете и стойността на проекта; необходимостта да се извърши още една итерация; степента на пълнота и точност на разбиране на изискванията към системата; целесъобразността от прекратяване на проекта.

Важно е да се разбере, че спиралният модел не е алтернатива на еволюционния модел.(Модели IID), но специално проектирана версия. За съжаление, спиралният модел често се използва погрешно или като синоним на еволюционния модел като цяло, или (не по-малко погрешно) се споменава като напълно независим модел заедно с IID [3].

Отличителна черта на спиралния модел е специалното внимание, отделено на рисковете, които засягат организацията на жизнения цикъл и етапите. Boehm формулира 10-те най-често срещани (с приоритет) рискове:

Липса на специалисти. Нереалистичен график и бюджет. Внедряване на неподходяща функционалност. Проектиране на грешен потребителски интерфейс. Перфекционизъм, ненужна оптимизация и финес. Безкраен поток от промени. Липса на информация за външни компоненти, които определят средата на системата или участват в интеграцията. Дефекти в извършената работа от външни (по отношение на проекта) ресурси. Недостатъчна производителност на получената система.

Разликата в квалификацията на специалистите в различни области.

Днешният спирален модел дефинира следния общ набор от контролни точки [5]: