Правила полагања предмета

Предмет се полаже кроз самосталну израду и одбрану два практична пројекта. За пројекте одабрати две различите теме из следећег скупа тема:

  1. Рефакторисање web и/или објектно-оријентисане апликације са циљем увођења пројектних Gof и/или PoEAA узорака (design patterns). Литература: 1) Fowler, Refactoring: Improving the Design of Existing Code, 2) Fowler, Patterns of Enterprise Application Architecture - PoEAA, 3) Gamma,..., Design Patterns, Elements of Reusable Object-Oriented Programming Style (GoF). Потребно је покрити најмање 5 различитих врста узорака. Препоручени алат: интегрисано развојно окружење које подржава рефакторинг, нпр. Eclipse или Visual Studio. Уколико апликација има релациону базу података, пожељно је спровести и рефакторисање базе (Литература: Ambler, Sadalage, Refactoring Databases: Evolutionary Database Design).
  2. Test first програмирање.Литература: http://xp123.com/articles/test-first-challenge/. Потребно је у неколико сукцесивних корака (најмање 5) осмислити развој тестова а потом и апликације (уз евентуално рефакторисање кода из претходног корака). При томе можете користити имплементацију неке готове апликације као основу за рад, или развијати нову апликацију од нуле. Такође је дозвољено урадити баш поменути test-first-challenge пример у корацима како је дефинисано на датом линку, али у програмском језику који није јава нити неки други језик за који постоји на webu објављено решење овог проблема.
  3. Увођење уговора (design by contract) у постојећу апликацију. Мора се покрити најмање 3 класе при чему свака од тих класа мора бити потпуно покривена (идентификоване све инваријанте класе и покривени сви методи класе).Литература: Design by Contract in Java with Google, Contracts for Java. Препоручени алат: google cofoja
  4. Увођење аспеката (Aspect Oriented Programming) у класичну ОО апликацију. Мора се увести бар 5 аспеката са различитим наменама, при чему се најмање у једном од њих морају користити inter-type декларације. Литература: 1) Milles, AspectJ Cookbook, 2) Raddad, AspectJ in Action. Препоручени алат: AspectJ

За сваку од тема, треба проучити препоручену литературу (шифра: evolucija7151) и упознати се са изабраним алатом, а затим изабрати са интернета неку open source апликацију (или неку сопствену). Изабрану апликацију и планиране трансформације потребно је пријавити емаилом на bojic@etf.rs да би се избегло евентуално дуплицирање решења. Над изабраном апликацијом спровести одговарајуће измене у складу са изабраном темом. Програмски језик и технологија могу се слободно бирати (а препоручује се јава јер је најбоље подржана алатима).

Решење треба да садржи:

  1. Оригинални изворни код.
  2. Измењени изворни код после спровођења трансформација.
  3. Довољан број тест примера (аутоматизованих, нпр. алатом junit) са улазним подацима и излазима којима се доказује да функционалност није измењена трансформацијама (дакле треба да буду фокусирани на измењене делове).
  4. Списак свих употребљених алата и библиотека са наведеним верзијама. Кратко упутство за инсталацију, подесавање и покретање апликације. Све пропратне конфигурационе, пројектне и друге датотеке потребне да се конфигуришу и употребе алати.
  5. 6) Извештај о урађеном пројекту са насловном страном, са кратким описом дела софтвера који сте изабрали за трансформисање, и описом урађених трансформација и описом спровођења поступка тестирања.

Испит се полаже усменом одбраном урађених пројеката са циљем да се утврди познавање употребљених концепата и алата и самосталност израде пројекта. Комплетна решења оба пројекта са свим прилозима послати емаилом на bojic@etf.rs у облику .zip архиве (уколико је архива већа од ~5Mb окачити на неки сервис за дељење фајлова и послати линк на фајл). Рок за слање је недељу дана пре термина испита у испитном року у коме желите да полажете.