ПСИ

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Принципи софтверског инжењерства је, како да кажем, обавезни предмет у шестом семестру.

Корисне везе

Настава

На предавањима се раде следеће области:

  • Први колоквијум: Модели процеса, RUP, агилне методологије, инжењерство захтева
  • Испит: Објектно-оријентисано пројектовање, пројектовање веб апликација, микросервиси, тестирање софтвера, процена напора

Вежбе до првог колоквијума се односе на различите фазе пројекта (израда ССУ и прототипа, формална инспекција, Моделовање базе података) и Git, а после настављају да се баве програмским језиком Python (радни оквир Django и wsgiref). Како долазе фазе израде пројекта, тако се одржавају и вежбе из тих фаза (моделовање веб апликација и тестирање).

На првом колоквијуму (на папиру) од градива долази градиво рађено на предавањима и један задатак из Git-a, на другом колоквијуму (на рачунару) само са вежби, а на испиту (теорија на папиру, практични део на рачунару) долази заједно градиво другог колоквијума и са предавања другог и трећег блока (од школске 2023/2024 ће можда теоријски део бити избачен са испита). Док се на вежбама ради Python, на лабораторијским вежбама обрађује се Gerrit.

Пројекат

Пројекат се ради у групама од 2 до 4 члана, и циљ пројекта јесте да се студенти упознају са радом у тиму на неком сложенијем софтверу. Ради се из неколико фаза:

  1. Смишљање теме
    • У овој фази је циљ да смислите нацрт пројекта, који садржи барем 3 категорије корисника и довољан број функционалности (примери се могу наћи на страници предмета)
    • Уколико се планира рад са неким другим технологијама које нису обрађене на предмету (али са којима се такође не ради на другим предметима) то треба јавити предметним наставницима
  2. Израда документа са спецификацијом случајева употребе и прототипа апликације
    • Први део ове фазе састоји се од тога да се у пројекту дефинише барем 12 (3 по члану тима) спецификација случајева употребе (ССУ) за које се примери могу наћи на страници предмета
    • Други део састоји се од тога да се за направљене ССУ праве прототипи коришћењем неких алата за прављење прототипа (нпр. Pencil, Figma) или HTML
      • Препоручује се рад у HTML како би се прототип касније могао искоритити приликом имплементације
    • Могућа је такође расподела тако да један члан прави цео прототип, а остали пишу ССУ документе
  3. Формална инспекција пројеката других тимова
    • Први део ове фазе састоји се од тога да радите формалну инспекцију пројекта другог тима на следећи начин:
      1. Други тим вама пошаље пројекат а ви пошаљете пројекат неком другом тиму (насумично изабрано од стране асистената)
      2. Одржите састанак на коме вођа тима подели улоге члановима свог тима, а доступне улоге су:
        • Модератор — главна особа за ову фазу
        • Записничар — води записник на коначном састанку тима
        • Инспектори — чланови тима који прегледају прототип и ССУ документе другом тиму
      3. Након поделе улога, инспектори прегледају и попуњавају логове инспектора
      4. Одржава се коначни састанак тима на ком записничар записује закључке са састанка
      5. После састанка, записничар и модератор састављају извештај о дефектима
      6. Извештај о дефектима се шаље другом тиму, а сви документи у овој фази предметним асистентима
  4. Моделовање базе података
    • Циљ ове фазе је моделовати базу која ће се користити у фази имплементације коришћењем алата ERwin Data Modeler, Toad Data Modeler или MySQL Workbench
    • Поред модела базе, у овој фази је такође потребно саставити документ са спецификацијом базе података чији се пример може пронаћи на страници предмета
  5. Имплементација веб апликације
    • Главна фаза пројекта, у којој се прави да апликација ради то што је спецификовано у ССУ и нацрту пројекта
    • Неопходно је демонстрирати коришћење XMLHttpRequest/Fetch API (на вежбама названи AJAX)
    • Унутар сваког фајла са кодом неопходно је написати ауторе, док је изнад сваке класе и методе контролера и модела потребно додати документационе коментаре шта они раде
    • Вођа тима мора написати документ са коришћеним алатима, где су укратко набројани сви алати коришћени у свим фазама и описи њиховог коришћења
    • На крају фазе је потребно предати и довољно попуњен модел базе података у виду SQL скрипте
  6. Моделовање веб апликације
    • Моделовање имплементиране апликације у алату StarUML, на сличан начин као на Пројектовању софтвера
    • Потребно је искористити релације између клијентских страница као што је показано на вежбама, али у упутству може да се помиње нека застарела WAE-UML екстензија коју није могуће инсталирати на новом StarUML и која се не мора користити
  7. Тестирање веб апликације
    • Потребно је спровести јединично тестирање контролера и модела, као и интеграционо тестирање коришћењем Selenium
    • Није потребно прављење никаквог тест плана

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

Лабораторијске вежбе

Лабораторијске вежбе су показног карактера. Постоји четири лабораторијске вежбе и на њима се обрађују:

  1. Алати за верзионисање попут Git и Subversion
  2. Језик PHP са MVC узорцима / Django радни оквир (основно)
  3. PHP радни оквири / Django радни оквир (напредно)
  4. Повезивање веб апликације са ORM / Додатне функционалности Django радног оквира

За сваку лабораторијску вежбу, поред часа одржаног уживо, има доступан снимак. Рад са Django радним оквиром се обрађује само на другој, трећој и четвртој лабораторијској вежби, и не обрађује се на регуларним вежбама.

Испитни рокови

Испитни рокови су доступни са странице предмета, али без решења. Решења теоријског дела јунског рока 2020. могу се наћи на драјву из одељка са корисним везама.

Следећи испитни рокови су доступни на викију:

Уколико желите да додате рок, посетите страницу за прављење рока.

Начин оцењивања

  • — бодови са првог и другог колоквијума, први и други колоквијум се могу надокнадити у јунском испитном року.
  • — бодови са тимског пројекта
  • — бодови са испита
  • Коначни бодови:
  • Услов: и

Потребна помоћ

  • На овом предмету фале поставке рокова. Помозите викију памћењем/преписивањем рокова и постављањем на вики.
  • На овом предмету фале решења рокова. Помозите викију решавањем рокова и постављањем њихових решења на вики.
    Рокови којима недостаје понеко решење су:
  • На овом предмету постоје старији рокови лошег квалитета. Помозите викију преписивањем тих рокова на вики.