Софтверски патерни

Назив предмета: СОФТВЕРСКИ ПАТЕРНИ 

Година на којој се изводи настава: IV година (VII семестар)
Број ЕСПБ бодова: 6 бодова
Услови:
Циљ: Схватање дефиниција и различитих облика представљања узора (патерна). Могућност практичног коришћења узора у различитим фазама развоја софтвера. Упознавање са постојећим математичким формализмима за описивање узора.
Начин полагања: Испит се састоји из три дела: а) писмени испит б) одбрана семинарског рада (за оцену 9 и 10) в) усмени део испита

Садржај предмета:

1. Увод
2. Постојеће дефиниције и облици представљања узора
    2.1 Шта су узори
    2.2 Облици представљања узора
        2.2.1 Александеров облик
        2.2.2 ГОФ облик
        2.2.3 Коплиенов облик
    2.3 Класификација узора
        2.3.1 Тронивојски узори
        2.3.2 Александерово скалирање
        2.3.3 Други скалирајући приступи
        2.3.4 Анти узори
        2.3.5 Мета узори
3. Узори захтева (Software Requirement Patterns – Stephen Withall)
4. Узори анализе (Analysis patterns – Martin Fowler)
    UZAN1:  Узори одговорности (accountability)
    UZAN2: Узори посматрања и мерења (observations and measurement)
    UZAN3: Узори референцирања на објекте
    UZAN4: Узори залиха и рачуноводства (inventory and accounting)
    UZAN5: Коришћење модела рачуноводства
    UZAN6: Узори планирања
    UZAN7: Узори трговине (trading)
    UZAN8: Узори уговора (derivative contracts)
5. Узори пројектовања
    a. Микро архитектура
        5.1.1 GOF узори пројектовања (Design Patterns – Gamma,…  Head First Design Patterns –Eric Freeman and Elisabeth Freeman, Java JDK 6 Edition)
            GOFKR: Узори за креирање објеката
                GOFKR1: Abstract Factory
                GOFKR2: Builder
                GOFKR3: Factory method
                GOFKR4: Prototype
                GOFKR5: Singleton
            GOFST: Структурни узори
                GOFST1: Adapter
                GOFST2: Bridge
                GOFST3: Composite
                GOFST4: Decorator
                GOFST5: Facade
                GOFST6: Flyweight
                GOFST7: Proxy
            GOFPO: Узори понашања
                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 узори пројектовања (Applying UML and patterns–Larman,…)
            GRASP1: Експерт узор
            GRASP2: Креатор узор
            GRASP3: Узор слабе повезаности
            GRASP4: Узор високе кохезивности
            GRASP5: Контролер узор
            GRASP6: Узор поделе домена од презентације (Model-View separation pattern)
            GRASP7: Издавач – претплатник узор (Publish – Subscribe)
            GRASP8: Узор полиморфизма
            GRASP9: Pure fabrication узор
            GRASP10: Узор индирекције
            GRASP11: Protected variations
            GRASP12: Don’t Talk to Strangers узор
            GRASP13: Database broker узор
            GRASP14: Framework design – реализован преко Template method узора
            GRASP15: Материјализација реализована преко Template method узора
    5.2 Макро архитектура
        ECF: ECF узор
        MVC: MVC узор
    5.3 Важни принципи пројектовања
        OCP: Open Closed Principle
        DIPR: Dependence Inversion Principle
        PRLK: The Principle of Last Knowledge
        HOPR: The Hollywood Principle
6. Имплементациони узори
    JAVAID: Јава идиоми
7. Рефакторисање (Refactoring – Improving the design of existing code, Martin Fowler)
    REFA1: Шта је рефакторисање
    REFA2: Принципи рефакторисања
    REFA3: Примери лошег кода
    REFA4: Прављење тестова
    REFA5: Каталог рефакторинга
    REFA6: Компоновање метода
    REFA7: Померање особина између објеката
    REFA8: Организовање података
    REFA9: Поједностављење условних израза
    REFA10 Прављење једноставних позива метода
    REFA11: Рад са генерализацијом
8. Узори тестирања
9. Формализација узора
10. Закључак

Начин оцењивања:
Испит се састоји из три дела:
1. Писмени испит (Израда задатака на рачунару):
Студент који је положио писмени део испита добија од 10 до 40 поена (БројПоенаПисмени).
Напомена: Студенти могу у текућој школској години да буду оцењивани за њихове активности.

2. Одбрана семинарског рада
Студент који је одбранио семинарски рад добија од 10 до 20 поена (БројПоенаСеминар).
Напомена:  Семинарски рад  није обавезан део испита.

3. Усмени део испита
Студент који је положио усмени део испита добија од 10 до 40 поена (БројПоенаУсмени).
Напомена: Усмени део испита се може полагати тек након положеног писменог дела испита.

Оцена се добија на основу следеће формуле:
Оцена = (БројПоенаПисмени + БројПоенаСеминар + БројПоенаУсмени)/10

Подаци о наставницима:
Др Синиша Влајић, доцент
Кабинет:  Б006
Е-пошта: vlajic@fon.rs

др Илија Антовић, доцент
Кабинет: Б006
Е-пошта: ilijaa@fon.bg.ac.rs

Душан Савић, асистент
Кабинет: Б006
Е-пошта: dules@fon.rs

Војислав Станојевић, сарадник у настави
Кабинет: Б006
Е-пошта: vojkans@fon.rs