Softverski paterni

Naziv predmeta: SOFTVERSKI PATERNI 

Godina na kojoj se izvodi nastava: IV godina (VII semestar)
Broj ESPB bodova: 6 bodova
Uslovi:
Cilj: Shvatanje definicija i različitih oblika predstavljanja uzora (paterna). Mogućnost praktičnog korišćenja uzora u različitim fazama razvoja softvera. Upoznavanje sa postojećim matematičkim formalizmima za opisivanje uzora.
Način polaganja: Ispit se sastoji iz tri dela: a) pismeni ispit b) odbrana seminarskog rada (za ocenu 9 i 10) v) usmeni deo ispita

Sadržaj predmeta:

1. Uvod
2. Postojeće definicije i oblici predstavljanja uzora
    2.1 Šta su uzori
    2.2 Oblici predstavljanja uzora
        2.2.1 Aleksanderov oblik
        2.2.2 GOF oblik
        2.2.3 Koplienov oblik
    2.3 Klasifikacija uzora
        2.3.1 Tronivojski uzori
        2.3.2 Aleksanderovo skaliranje
        2.3.3 Drugi skalirajući pristupi
        2.3.4 Anti uzori
        2.3.5 Meta uzori
3. Uzori zahteva (Software Requirement Patterns – Stephen Withall)
4. Uzori analize (Analysis patterns – Martin Fowler)
    UZAN1:  Uzori odgovornosti (accountability)
    UZAN2: Uzori posmatranja i merenja (observations and measurement)
    UZAN3: Uzori referenciranja na objekte
    UZAN4: Uzori zaliha i računovodstva (inventory and accounting)
    UZAN5: Korišćenje modela računovodstva
    UZAN6: Uzori planiranja
    UZAN7: Uzori trgovine (trading)
    UZAN8: Uzori ugovora (derivative contracts)
5. Uzori projektovanja
    a. Mikro arhitektura
        5.1.1 GOF uzori projektovanja (Design Patterns – Gamma,…  Head First Design Patterns –Eric Freeman and Elisabeth Freeman, Java JDK 6 Edition)
            GOFKR: Uzori za kreiranje objekata
                GOFKR1: Abstract Factory
                GOFKR2: Builder
                GOFKR3: Factory method
                GOFKR4: Prototype
                GOFKR5: Singleton
            GOFST: Strukturni uzori
                GOFST1: Adapter
                GOFST2: Bridge
                GOFST3: Composite
                GOFST4: Decorator
                GOFST5: Facade
                GOFST6: Flyweight
                GOFST7: Proxy
            GOFPO: Uzori ponašanja
                GOFPO1: Chain of responsability
                GOFPO2: Command
                GOFPO3: Interpreter
                GOFPO4: Iterator
                GOFPO5: Mediator
                GOFPO6: Memento
                GOFPO7: Observer
                GOFPO8: State
                GOFPO9: Strategy
                GOFPO10: Template method
                GOFPO11: Visitor
        5.1.2 GRASP uzori projektovanja (Applying UML and patterns–Larman,…)
            GRASP1: Ekspert uzor
            GRASP2: Kreator uzor
            GRASP3: Uzor slabe povezanosti
            GRASP4: Uzor visoke kohezivnosti
            GRASP5: Kontroler uzor
            GRASP6: Uzor podele domena od prezentacije (Model-View separation pattern)
            GRASP7: Izdavač – pretplatnik uzor (Publish – Subscribe)
            GRASP8: Uzor polimorfizma
            GRASP9: Pure fabrication uzor
            GRASP10: Uzor indirekcije
            GRASP11: Protected variations
            GRASP12: Don’t Talk to Strangers uzor
            GRASP13: Database broker uzor
            GRASP14: Framework design – realizovan preko Template method uzora
            GRASP15: Materijalizacija realizovana preko Template method uzora
    5.2 Makro arhitektura
        ECF: ECF uzor
        MVC: MVC uzor
    5.3 Važni principi projektovanja
        OCP: Open Closed Principle
        DIPR: Dependence Inversion Principle
        PRLK: The Principle of Last Knowledge
        HOPR: The Hollywood Principle
6. Implementacioni uzori
    JAVAID: Java idiomi
7. Refaktorisanje (Refactoring – Improving the design of existing code, Martin Fowler)
    REFA1: Šta je refaktorisanje
    REFA2: Principi refaktorisanja
    REFA3: Primeri lošeg koda
    REFA4: Pravljenje testova
    REFA5: Katalog refaktoringa
    REFA6: Komponovanje metoda
    REFA7: Pomeranje osobina između objekata
    REFA8: Organizovanje podataka
    REFA9: Pojednostavljenje uslovnih izraza
    REFA10 Pravljenje jednostavnih poziva metoda
    REFA11: Rad sa generalizacijom
8. Uzori testiranja
9. Formalizacija uzora
10. Zaključak

Način ocenjivanja:
Ispit se sastoji iz tri dela:
1. Pismeni ispit (Izrada zadataka na računaru):
Student koji je položio pismeni deo ispita dobija od 10 do 40 poena (BrojPoenaPismeni).
Napomena: Studenti mogu u tekućoj školskoj godini da budu ocenjivani za njihove aktivnosti.

2. Odbrana seminarskog rada
Student koji je odbranio seminarski rad dobija od 10 do 20 poena (BrojPoenaSeminar).
Napomena:  Seminarski rad  nije obavezan deo ispita.

3. Usmeni deo ispita
Student koji je položio usmeni deo ispita dobija od 10 do 40 poena (BrojPoenaUsmeni).
Napomena: Usmeni deo ispita se može polagati tek nakon položenog pismenog dela ispita.

Ocena se dobija na osnovu sledeće formule:
Ocena = (BrojPoenaPismeni + BrojPoenaSeminar + BrojPoenaUsmeni)/10

Podaci o nastavnicima:
Dr Siniša Vlajić, docent
Kabinet:  B006
E-pošta: vlajic@fon.rs

dr Ilija Antović, docent
Kabinet: B006
E-pošta: ilijaa@fon.bg.ac.rs

Dušan Savić, asistent
Kabinet: B006
E-pošta: dules@fon.rs

Vojislav Stanojević, saradnik u nastavi
Kabinet: B006
E-pošta: vojkans@fon.rs