Пројектовање софтвера — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Skripta od Nikole)
Нема описа измене
 
(Није приказано 36 међуизмена 8 корисника)
Ред 8: Ред 8:
| следећи  = Рачунарска графика
| следећи  = Рачунарска графика
}}
}}
'''Пројектовање софтвера''' је обавезан предмет у петом семестру за СИ, а изборни у седмом семестру за РТИ, у духу [[ОО1|Објектно оријентисаног програмирања 1]] и [[ОО2|2]].
'''Пројектовање софтвера''' је неизбежан предмет у петом семестру за СИ, а изборни у седмом семестру за РТИ. ''Ђаво је у детаљима.''


== Корисне везе ==
== Корисне везе ==
* ''[https://staruml.io/ StarUML]'' — окружење које се користи на вежбама
* ''[https://staruml.io/ StarUML]'' — окружење које се користи на вежбама
* [https://drive.google.com/open?id=1qZ1Z_wSa1BBmOvmgz4mRS2yTHEyaJfQK '''Скрипта са свим презентацијама комбинованим у једном документу, спремно за штампу''']
* [https://drive.google.com/open?id=1qZ1Z_wSa1BBmOvmgz4mRS2yTHEyaJfQK '''Скрипта са свим презентацијама комбинованим у једном документу, спремно за штампу'''] ([https://docs.google.com/document/d/1pXMugMAyTZx8ki2z4gbcA27tmVaDbIa2 изворни ''Word'' документ])
* [https://drive.google.com/open?id=1FQce1ZdoMZK1V6wOdC9w6SZliWrDTBGx ETF SI] (збирка задатака, претходне лабораторијске вежбе)
* [https://drive.google.com/open?id=1FQce1ZdoMZK1V6wOdC9w6SZliWrDTBGx ETF SI] (збирка задатака, претходне лабораторијске вежбе)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38805409747 ETF Materijali (Box)] (белешке)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38805409747 ETF Materijali (Box)] (белешке)
* [https://studentetfbgacrs-my.sharepoint.com/:b:/g/personal/sa190595d_student_etf_bg_ac_rs/EZn3Myy8GgZKohr0hCgOXh8Btt9JVmgpK7EDHtz6V4qhUA Документ са пречицама за алат ''StarUML'']
* [https://github.com/Jovan11111/DesignPatterns Пројектни узорци имплементирани у Јави и C++]
* [https://cet.rs/proizvod/gotova-resenja-design-patterns-elementi-objektno-orijentisanog-softvera/ Готова решења - Елементи објектно оријентисаног кода (Design Patterns: Elements of Reusable Object-Oriented Software) - CET]


== Настава ==
== Настава ==
На предавањима на предмету се паралелно предају две области: UML и пројектни узорци. Њихова подела иде овако:
На предавањима на предмету се предају две области: UML и пројектни узорци. Њихова подела иде овако:
* '''Први блок:'''
* '''Први блок:'''
** Дијаграми: класа, пакета, објеката
** Предају се сви пројектни узорци, подељени између предавања и вежби, тако да је потребно пратити оба. На последња два часа вежби се обрађују задаци слични онима који долазе на колоквијуму.
** Пројектни узорци: Уникат, Шаблонски метод, Прототип, Састав, Декоратер
** За припрему првог колоквијума могу се, до неке мере, користити некадашње лабораторијске вежбе. Поред тога, за разумевање образаца у великој мери може помоћи књига ''Design Patterns, Elements of Reusable Object-Oriented Software''.
* '''Други блок:'''  
* '''Други блок:'''  
** Дијаграми: интеракције (секвенце и комуникације), случјаева коришћења (до ове области за РТИ колоквијум), стања
** UML - Увод, употреба, основна синтакса. Дијаграми: Класа, Пакета (на предавањима овај део креће у првом блоку, и прелива се делом у трећи блок).
** Пројектни узорци: Посматрач, Итератор, Стратегија (до ове области за РТИ колоквијум), Стање, Подсетник, Мува, Адаптер, Фасада
** За припрему другог колоквијума могу се користити некадашње лабораторијске вежбе. При том, треба имати у виду да фокус другог колоквијума на УМЛ, и да ће фокус на пројектне узорке бити мањи у односу на лабораторијске вежбе.
* '''Трећи блок:'''  
* '''Трећи блок:'''  
** Дијаграми: активности, сложене структуре, компонената, распоређивања, класа (напредни појмови), интеракције (напредни појмови)
** На предавањима се раде архитектурални обрасци (слојевита архитектура, микросервиси, архитектура вођена догађајима...) и њихово моделовање. На вежбама се пролазе ствари за пројекат.
** Пројектни узорци: Фабрички метод, Апстрактна фабрика, Мост, Команда, Заступник, Посредник, Ланац одговорности, Градитељ
 
Презентације из архитектуре моделирања и пројектних узорака Посетилац и Интерпретер се не предају током семестра и не могу доћи у прва два испитна рока.
== Лабораторијске вежбе ==
'''''Овај блок је писан у складу са старим пропозицијама на предмету, од школске 2024/2025 нема лабораторијских вежби'''''
 
Исто као и на [[ОО1#Лабораторијске вежбе|ОО1]], осим што се домаћи задаци не предају, већ се на самој лабораторијској вежби добије готово решење.
 
На првој лабораторијској вежби демонстратори пролазе референтно решење домаћег задатка, а затим над њом раде модификације које пишу у задатку. За другу лабораторијску вежбу долази градиво закључно са дијаграмима стања и пројектног узорка Стање, док за трећу лабораторијску вежбу долази градиво закључно са дијаграмима активности и пројектним узорком Заступник.


На вежбама се дијаграми и пројектни узорци проеђени на предавањима прелазе у ''StarUML'' алату са додатним објашњењима. Градиво вежби долази на лабораторијским вежбама.
Неке претходне лабораторијске вежбе могу се наћи међу драјвовима у [[#Корисне везе|одељку са корисним везама]]. Неке лабораторијске вежбе објављиване су на страници предмета, па су сада архивиране:
* [https://web.archive.org/web/20230125192247im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2022_23_reseno.pdf Лаб 2 2022/2023. године]
* [https://web.archive.org/web/20231221005013im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2023_24_V1_reseno.pdf Лаб 2 група 1 2023/2024. године]
* [https://web.archive.org/web/20231221005129im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab2_2023_24_V2_reseno.pdf Лаб 2 група 2 2023/2024. године]
* [https://web.archive.org/web/20230125192053im_/https://rti.etf.bg.ac.rs/rti/ir4ps/lab/lab3_2022_23_reseno.pdf Лаб 3 2022/2023. године


== Домаћи ==
==Пројекат==
За разлику од [[ОО1#Домаћи|ОО1]], домаћи служе само за припрему, не предају се, а на лабораторијским вежбама се добијају решени домаћи. За домаћи задатак се обично добије опис једног система за који треба да се саставља један или више UML дијаграма.
Од школеске 2024/2025 постоји пројекат на предмету. Пројекат носи 30 поена и није обавезан. Брани се у јануарском, фебруарском или августвоском испитном року.


== Лабораторијске вежбе ==
* [https://web.archive.org/web/20251211142709/https://ps.etf.bg.ac.rs/domaci/Projektni%20zadatak%202024%20v1.1.pdf Пројекат - школска 2024/2025, 2025/2026 (Wayback machine)]
Исто као и на [[ОО1#Лаб вежбе|ОО1]]. За другу лабораторијску вежбу долази градиво закључно са дијаграмима стања и пројектног узорка Стање, док за трећу лабораторијску вежбу долази градиво закључно са дијаграмима активности и пројектним узорком Заступник.


== Испитни рокови ==
== Испитни рокови ==
Ред 42: Ред 54:
Уколико желите да додате рок, посетите '''[[Project:Направи#Moodle|страницу за прављење рока]]'''.
Уколико желите да додате рок, посетите '''[[Project:Направи#Moodle|страницу за прављење рока]]'''.


=== Пробни тестови ===
=== Колоквијум 1 ===
{{#dpl:
| category    = Пројектовање софтвера
| category    = Рокови
| titleregexp = Пројектовање софтвера/К1
| nottitleregexp = ^Пројектовање софтвера/К1 20[01][0-9]$
| nottitleregexp = ^Пројектовање софтвера/К1 202[0-3]$
| format      = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
 
=== Колоквијум 2 ===
{{#dpl:
| category    = Пројектовање софтвера
| category    = Рокови
| titleregexp = Пројектовање софтвера/К2
| nottitleregexp = ^Пројектовање софтвера/К2 20[01][0-9]$
| nottitleregexp = ^Пројектовање софтвера/К2 202[0-3]$
| format      = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
 
=== Испит ===
{{#dpl:
| category    = Пројектовање софтвера
| category    = Рокови
| titleregexp = Пројектовање софтвера/.* \d+$
| nottitleregexp    = Пројектовање софтвера/.* 201[0-9]$
| nottitleregexp    = Пројектовање софтвера/.* 202[0-4]$
| nottitleregexp  = Пројектовање софтвера/К\d
| nottitleregexp  = Пројектовање софтвера/Пробни тестови
| nottitleregexp  = Пројектовање софтвера/Лаб
| format      = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
 
=== Стари рокови (пре 2024/2025)===
 
==== Пробни тестови ====
Овде се налазе пробни тестови дати за вежбу пред колоквијум на Moodle платформи.
Овде се налазе пробни тестови дати за вежбу пред колоквијум на Moodle платформи.
{{#dpl:
{{#dpl:
Ред 50: Ред 103:
}}
}}


=== Колоквијум 1 ===
==== Колоквијум 1 ====
{{#dpl:
{{#dpl:
| titleregexp     = Пројектовање софтвера/К1
| category    = Пројектовање софтвера
| noresultsheader = Тренутно нема решених рокова.
| category    = Рокови
| format         = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]],,
| titleregexp = ^Пројектовање софтвера/К1 20[01][0-9]$
| titleregexp = ^Пројектовање софтвера/К1 202[0-3]$
| format     = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
}}


=== Колоквијум 2 ===
==== Колоквијум 2 ====
{{#dpl:
{{#dpl:
| titleregexp     = Пројектовање софтвера/К2
| category    = Пројектовање софтвера
| noresultsheader = Тренутно нема решених рокова.
| category    = Рокови
| format         = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]],,
| titleregexp = ^Пројектовање софтвера/К2 20[01][0-9]$
| titleregexp = ^Пројектовање софтвера/К2 202[0-3]$
| format     = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
}}


=== Испит ===
==== Испит ====
{{#dpl:
{{#dpl:
| titleregexp    = Пројектовање софтвера/.* \d+$
| category    = Пројектовање софтвера
| category    = Рокови
| titleregexp    = Пројектовање софтвера/.* 201[0-9]$
| titleregexp    = Пројектовање софтвера/.* 202[0-4]$
| nottitleregexp  = Пројектовање софтвера/К\d
| nottitleregexp  = Пројектовање софтвера/К\d
| nottitleregexp  = Пројектовање софтвера/Пробни тестови
| nottitleregexp  = Пројектовање софтвера/Пробни тестови
| nottitleregexp  = Пројектовање софтвера/Лаб
| nottitleregexp  = Пројектовање софтвера/Лаб
| noresultsheader = Тренутно нема решених рокова.
| format     = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]]</span>,
| format         = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦23¦-1}²]],,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
}}


== Начин оцењивања ==
== Начин оцењивања ==
Исто као и на [[ОО1#Начин оцењивања|ОО1]]. Школске 2021/22. године је било омогућено да у фебруарском року важе исти услови и да фебруарски рок исто може да надокнади колоквијуме (као и на ОО1 те године).
Исто као и на [[ОО1#Начин оцењивања|ОО1]]. Школске 2022/23. године је, због друге лабораторијске вежбе која није била прегледана до пар сати пред трећу лабораторијску вежбу, било омогућено да поправна лабораторијска вежба надокнађује другу, трећу, или и другу и трећу лабораторијску вежбу (студенти су тај избор морали да направе пре саме лабораторијске вежбе).


== Потребна помоћ ==
== Потребна помоћ ==
* {{zadaci|postavke}}
* {{zadaci|postavke}}
** Од користи су такође модификације добијене на лабораторијским вежбама, како би студенти знали отприлике шта их на лабораторијским вежбама чека.
** Од користи су такође модификације добијене на лабораторијским вежбама, како би студенти знали отприлике шта их на лабораторијским вежбама чека.

Тренутна верзија на датум 22. фебруар 2026. у 16:06

Пројектовање софтвера је неизбежан предмет у петом семестру за СИ, а изборни у седмом семестру за РТИ. Ђаво је у детаљима.

Корисне везе

Настава

На предавањима на предмету се предају две области: UML и пројектни узорци. Њихова подела иде овако:

  • Први блок:
    • Предају се сви пројектни узорци, подељени између предавања и вежби, тако да је потребно пратити оба. На последња два часа вежби се обрађују задаци слични онима који долазе на колоквијуму.
    • За припрему првог колоквијума могу се, до неке мере, користити некадашње лабораторијске вежбе. Поред тога, за разумевање образаца у великој мери може помоћи књига Design Patterns, Elements of Reusable Object-Oriented Software.
  • Други блок:
    • UML - Увод, употреба, основна синтакса. Дијаграми: Класа, Пакета (на предавањима овај део креће у првом блоку, и прелива се делом у трећи блок).
    • За припрему другог колоквијума могу се користити некадашње лабораторијске вежбе. При том, треба имати у виду да фокус другог колоквијума на УМЛ, и да ће фокус на пројектне узорке бити мањи у односу на лабораторијске вежбе.
  • Трећи блок:
    • На предавањима се раде архитектурални обрасци (слојевита архитектура, микросервиси, архитектура вођена догађајима...) и њихово моделовање. На вежбама се пролазе ствари за пројекат.

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

Овај блок је писан у складу са старим пропозицијама на предмету, од школске 2024/2025 нема лабораторијских вежби

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

На првој лабораторијској вежби демонстратори пролазе референтно решење домаћег задатка, а затим над њом раде модификације које пишу у задатку. За другу лабораторијску вежбу долази градиво закључно са дијаграмима стања и пројектног узорка Стање, док за трећу лабораторијску вежбу долази градиво закључно са дијаграмима активности и пројектним узорком Заступник.

Неке претходне лабораторијске вежбе могу се наћи међу драјвовима у одељку са корисним везама. Неке лабораторијске вежбе објављиване су на страници предмета, па су сада архивиране:

Пројекат

Од школеске 2024/2025 постоји пројекат на предмету. Пројекат носи 30 поена и није обавезан. Брани се у јануарском, фебруарском или августвоском испитном року.

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

Слична прича као и за ОО1. Доступни су и испитни примери који нису категорисани по роковима.

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

Колоквијум 1

Колоквијум 2

Испит

Стари рокови (пре 2024/2025)

Пробни тестови

Овде се налазе пробни тестови дати за вежбу пред колоквијум на Moodle платформи.

Колоквијум 1

Колоквијум 2

Испит

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

Исто као и на ОО1. Школске 2022/23. године је, због друге лабораторијске вежбе која није била прегледана до пар сати пред трећу лабораторијску вежбу, било омогућено да поправна лабораторијска вежба надокнађује другу, трећу, или и другу и трећу лабораторијску вежбу (студенти су тај избор морали да направе пре саме лабораторијске вежбе).

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

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