Софтверске компоненте

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

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

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

Циљеви и предности развоја софтвера заснованог на компонентама. Појам софтверске компоненте. Основне карактеристике софтверске компоненте. Појам физичке и логичке модуларности. Пракса одвајања спецификације од имплементације софтверске компоненте. Поштовање SOLID принципа и примена дизајн патерна у развоју заснованом на компонентама. Документовање софтверске компоненте. Појам билд алата и управљање повезаним компонентама. Преглед савремених билд алата за програмске језике Јава и Пајтон. Стандарди за развој модуларних система за Јава платформу - OSGi i Jigsaw. Софтверске лиценце и верзије. Сервисно оријентисана софтверска архитектура и веб сервиси. Технологије и стандарди за имплементацију веб сервиса - SOAP i REST. Појам микросервиса и поређење са другим архитектурама. Интеграција микросервиса и коминикација између микросервиса. Микросервиси и кориснички интерфејс, микросервиси и базе података. Кораци у провођењу монолитне у микросервисну архитектуру.

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

Приказ илустративног примера софтверске компоненте која користи друге компоненте и њено проширење додатним функционалностима. Илустрација особине рејузабилности компоненте. Рад са системима за управљање верзијама. Коришћење билд алата за Јаву - Apache Ant, Apache Maven и Gradle. Креативна вежба креирања компоненте са одвојеном спецификацијом. HTTP протокол и REST архитектура. Имплементација микросервисне апликације коришћењем Spring Boot технологије. Рад са базама података у микросервисној архитектури укључујући релацине и нерелационе базе. Коришћење Hiberante ORM алата за перзистенцију података у релациону базу. Комуникација између микросервиса и коришћење система за размену порука.