ПСИ
Принципи софтверског инжењерства је обавезни предмет у шестом семестру.
Корисне везе
- ETF SI (рок из јуна 2020. године, белешке)
Настава
На предавањима се раде следеће области:
- Први колоквијум: Модели процеса, RUP, агилне методологије, инжењерство захтева
- Испит: Објектно-оријентисано пројектовање, пројектовање веб апликација, микросервиси, тестирање софтвера, процена напора
Вежбе прате предавања до првог колоквијума, а после настављају да се баве програмским језиком PHP (радни оквири CodeIgniter или Laravel). Како долазе фазе израде пројекта, тако се одржавају и вежбе из тих фаза (израда ССУ и прототипа, формална инспекција, моделовање веб апликација и тестирање).
На првом колоквијуму (на папиру) од градива долази градиво рађено и на предавањима на вежбама (вежбе прате предавања), на другом колоквијуму (на рачунару) само са вежби, а на испиту (теорија на папиру, практични део на рачунару) долази заједно градиво другог колоквијума и са предавања другог и трећег блока. Док се на вежбама ради PHP, на лабораторијским вежбама обрађује се Python (радни оквир Django) и у три поменута радна оквира могуће је радити други колоквијум и испит.
Пројекат
Пројекат се ради у групама од 2 до 4 члана, и циљ пројекта јесте да се студенти упознају са радом у тиму на неком сложенијем софтверу. Ради се из неколико фаза:
- Смишљање теме
- У овој фази је циљ да смислите нацрт пројекта, који садржи барем 3 категорије корисника и довољан број функционалности (примери се могу наћи на страници предмета)
- Уколико се планира рад са неким другим технологијама које нису обрађене на предмету (али са којима се такође не ради на другим предметима) то треба јавити предметним наставницима
- Израда документа са спецификацијом случајева употребе и прототипа апликације
- Први део ове фазе састоји се од тога да се у пројекту дефинише барем 12 (3 по члану тима) спецификација случајева употребе (ССУ) за које се примери могу наћи на страници предмета
- Други део састоји се од тога да се за направљене ССУ праве прототипи коришћењем неких алата за прављење прототипа (нпр. Pencil, Figma) или HTML
- Препоручује се рад у HTML како би се прототип касније могао искоритити приликом имплементације
- Могућа је такође расподела тако да један члан прави цео прототип, а остали пишу ССУ документе
- Формална инспекција пројеката других тимова
- Први део ове фазе састоји се од тога да радите формалну инспекцију пројекта другог тима на следећи начин:
- Други тим вама пошаље пројекат а ви пошаљете пројекат неком другом тиму (насумично изабрано од стране асистената)
- Одржите састанак на коме вођа тима подели улоге члановима свог тима, а доступне улоге су:
- Модератор — главна особа за ову фазу
- Записничар — води записник на коначном састанку тима
- Инспектори — чланови тима који прегледају прототип и ССУ документе другом тиму
- Након поделе улога, инспектори прегледају и попуњавају логове инспектора
- Одржава се коначни састанак тима на ком записничар записује закључке са састанка
- После састанка, записничар и модератор састављају извештај о дефектима
- Извештај о дефектима се шаље другом тиму, а сви документи у овој фази предметним асистентима
- Први део ове фазе састоји се од тога да радите формалну инспекцију пројекта другог тима на следећи начин:
- Моделовање базе података
- Циљ ове фазе је моделовати базу која ће се користити у фази имплементације коришћењем алата ERwin Data Modeler, Toad Data Modeler или MySQL Workbench
- Поред модела базе, у овој фази је такође потребно саставити документ са спецификацијом базе података чији се пример може пронаћи на страници предмета
- Имплементација веб апликације
- Главна фаза пројекта, у којој се прави да апликација ради то што је спецификовано у ССУ и нацрту пројекта
- Неопходно је демонстрирати коришћење XMLHttpRequest/Fetch API (на вежбама названи AJAX)
- Унутар сваког фајла са кодом неопходно је написати ауторе, док је изнад сваке класе и методе контролера и модела потребно додати документационе коментаре шта они раде
- Вођа тима мора написати документ са коришћеним алатима, где су укратко набројани сви алати коришћени у свим фазама и описи њиховог коришћења
- На крају фазе је потребно предати и довољно попуњен модел базе података у виду SQL скрипте
- Моделовање веб апликације
- Моделовање имплементиране апликације у алату StarUML, на сличан начин као на Пројектовању софтвера
- Потребно је искористити релације између клијентских страница као што је показано на вежбама, али у упутству може да се помиње нека застарела WAE-UML екстензија коју није могуће инсталирати на новом StarUML и која се не мора користити
- Тестирање веб апликације
- Потребно је спровести јединично тестирање контролера и модела, као и интеграционо тестирање коришћењем Selenium
- Није потребно прављење никаквог тест плана
Пројекат се генерално ради у програмским језицима обрађиваним на вежбама и лабораторијским вежбама, али могуће је изабрати неку другу технологију која досад није била обрађивана на факултету. Обавезна је употреба неког алата за верзионисање софтвера, и резултати сваке фазе се шаљу на репозиторијум кода.
Лабораторијске вежбе
Лабораторијске вежбе су показног карактера. Постоји четири лабораторијске вежбе и на њима се обрађују:
- Алати за верзионисање попут Git и Subversion
- Језик PHP са MVC узорцима / Django радни оквир (основно)
- PHP радни оквири / Django радни оквир (напредно)
- Повезивање веб апликације са ORM / Додатне функционалности Django радног оквира
За сваку лабораторијску вежбу, поред часа одржаног уживо, има доступан снимак. Рад са Django радним оквиром се обрађује само на другој, трећој и четвртој лабораторијској вежби, и не обрађује се на регуларним вежбама.
Испитни рокови
Испитни рокови нису доступни са странице предмета, али јун 2020. се може наћи на драјву из одељка са корисним везама.
Начин оцењивања
- — бодови са првог и другог колоквијума, први колоквијум се може надокнадити у прва два испитна рока док се други колоквијум може надокнадити бодовима са испита (0-20 сваки)
- — бодови са тимског пројекта
- — бодови са испита
- Коначни бодови:
- Услов: и
Потребна помоћ
- На овом предмету фале поставке рокова. Помозите викију памћењем/преписивањем рокова и постављањем на вики.
- На овом предмету постоје старији рокови лошег квалитета. Помозите викију преписивањем тих рокова на вики.
- Јун 2020. године са Вуковог драјва.