Софтверско инжењерство

Циљ и исход предмета

Упознавање са савременим методама и принципима софтверског инжењерства, као и разумевање и примена најчешће коришћених методологија за развој софтвера. Студент разуме проблеме савременог развоја софтвера, упознат је са различитим методама решавања ових проблема, са њиховим предностима и недостацима. Студент познаје неколико најчешће коришћених методологија и метода за развој софтвера и уме да их примену у тимском раду.

Теоријска настава

Дефинисање функционалних и нефункционалних захтева софтвера. Формална спецификација захтева. Професионални развој софтвера. Етика софтверског инжењерства. Активности софтверског инжењерства. Својства квалитетног софтвера. Изазови у развоју софтвера. Софтверско инжењерство и веб. Анализа студија случаја развоја софтвера у различитим доменима и различитим софтверским технологијама. Модели процеса развоја софтвера - водопадни и инкрементални модел. Спецификација софтвера. Моделирање софтвера - контекстуални модел, модел интеракције, структурни модел, модел понашања. Дизајн и имплементација софтвера. Развој софтвера заснован на моделу. Прототипови. Прилагођавање променама захтева. Rational Unified Process - RUP. Основе агилног развоја софтвера. Тестирање софтвера и развој заснован на тестирању. Еволуција софтвера. Сигурност софтвера. Развој софтвера заснован на компонентама. Коришћење готових софтверских компоненти. Различите софтверске архитектуре - сервисно-оријентисана, монолитна, микросервисна.

Практична настава

Анализа формалне спецификације софтвера. Анализа студија случаја развоја софтвера. Тимски рад на развоју оригиналног софтверског решања уз поштовање принципа софтверског инжењерства обрађених на предавањима. Илустрација различитих модела и метода развоја софтвера - развој заснован на моделу, на тестирању, на компонентама. Демонстрација различитих софтверских архитектура и њихове адекватне примене.