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