You are on page 1of 97

Универзитет у Београду

Факултет организационих наука

Лабораторија за софтверско инжењерство

Предмет: Пројектовање софтвера

Семинарски рад
Тема: Развој софтверског система за праћење рада
нутриционистичке ординације у Јава окружењу

Ментор: Студент:

проф. др Синиша Влајић Теодора Голубовић

Београд, 2022.
Садржај
1. Прикупљање корисничких захтева..................................................................................................4
1.1 Вербални опис..........................................................................................................................4
1.2 Спецификација захтева помоћу модела случајева коришћења......................................4
СК1 Случај коришћења – Пријављивање нутриционисте..............................................................5
СК2 Случај коришћења – Унос новог пацијента............................................................................6
СК3 Случај коришћења – Претрага пацијента................................................................................7
СК4 Случај коришћења - Брисање пацијента..................................................................................8
СК5 Случај коришћења – Унос нове нутригенетичке анализе......................................................9
СК6 Случај коришћења – Унос новог плана исхране (сложен СК).............................................10
СК7 Случај коришћења – Измена података плана исхране (сложен СК)....................................11
СК8 Случај коришћења – Претрага плана исхране.......................................................................12
2. Анализа.............................................................................................................................................13
2.1 Понашање софтверског система – системски дијаграм секвенци......................................13
ДС1: Дијаграм секвенци случаја коришћења – Пријављивање нутриционисте.........................14
ДС2: Дијаграм секвенци случаја коришћења – Унос новог пацијента........................................16
ДС3: Дијаграм секвенци случаја коришћења – Претрага пацијента............................................18
ДС4: Дијаграм секвенци случаја коришћења – Брисање пацијента............................................21
ДС5: Дијаграм секвенци случаја коришћења – Унос нутригенетичке анализе..........................25
ДС6: Дијаграм секвенци случаја коришћења – Унос новог плана исхране................................27
ДС7: Дијаграм секвенци случаја коришћења – Измена података плана исхране.......................29
ДС8: Дијаграм секвенци случаја коришћења – Претрага плана исхране....................................35
Резултирајуће системске операције................................................................................................38
2.2 Дефинисање уговора о системским операцијама...................................................................38
Уговор UG1: Login..........................................................................................................................38
Уговор UG2: kreirajPacijenta...........................................................................................................38
Уговор UG3: ucitajListuPacijenta.....................................................................................................39
Уговор UG4: nadjiPacijente..............................................................................................................39
Уговор UG5: ucitajPacijenta.............................................................................................................39
Уговор UG6: obrisiPacijenta............................................................................................................40
Уговор UG7: ucitajListuNutrigenetickihAnaliza..............................................................................40
Уговор UG8: kreirajNutrigenetickuAnalizu......................................................................................40
Уговор UG9: ucitajListuNamirnica..................................................................................................40

2
Уговор UG10: kreirajPlanIshrane.....................................................................................................41
Уговор UG11: ucitajListuPlanovaIshrane.........................................................................................41
Уговор UG12: nadjiPlanoveIshrane..................................................................................................41
Уговор UG13: ucitajPlanIshrane.......................................................................................................41
Уговор UG14: izmeniPlanIshrane.....................................................................................................42
2.3 Структура софтверског система – Концептуални (доменски) модел.................................43
2.4 Структура софтверског система – Релациони модел............................................................44
3. Пројектовање.......................................................................................................................................49
3.1 Пројектовање корисничког интерфејса..................................................................................50
3.1.1 Пројектовање екранских форми........................................................................................50
СК1: Случај коришћења- Пријављивање нутриционисте............................................................51
СК2: Случај коришћења- Унос новог пацијента...........................................................................53
СК3: Претрага пацијента.................................................................................................................56
СК4: Брисање пацијента..................................................................................................................59
СК5: Унос нове нутригенетичке анализе.......................................................................................63
СК6: Унос новог плана исхране.....................................................................................................65
СК7: Измена података плана исхране............................................................................................67
СК8: Претрага плана исхране.........................................................................................................72
3.1.2 Пројектовање контролера корисничког интерфејса......................................................75
3.2 Пројектовање апликационе логике..........................................................................................75
3.2.1 Конторлер апликационе логике.........................................................................................75
3.2.2 Пословна логика...................................................................................................................76
3.2.3 Пројектовање складишта података...................................................................................92
4. Фаза имплементације..........................................................................................................................95
5. Тестирање.............................................................................................................................................97
6. Закључак...............................................................................................................................................97
Коришћена литература............................................................................................................................97

3
1. Прикупљање корисничких захтева

1.1 Вербални опис


Потребно је направити софтверски систем, који ће моћи да се користи за потребе рада
нутриционистичке ординације. Систем треба да омогући пријаву администратора на систем (у
овом случају, улогу администратора има нутрициониста). Такође, систем треба да омогући
евиденцију података о новим пацијентима, претраживање пацијената у систему и брисање
података пацијената из система. Када пацијент одради неопходна тестирања, потребно је да систем
омогући унос нутригенетичке анализе за пацијента. У оквиру нутригенетичке анализе чувају се
лични подаци о пацијенту, као и информације о метаболичком генотипу пацијента. Након
завршених анализа, систем треба да омогући администратору креирање новог плана исхране за
пацијента. Сваки план исхране има свој тип (план исхране за спортисте, план исхране за
мршављење, план исхране за добијање на тежини и др.), као и списак ставки, односно дозвољених
намирница и количине тих намирница, које пацијент коме је намењен план исхране може да
конзумира у току дана. Поред тога, систем треба да омогући администратору да претражује
планове исхране по пацијентима или по нутриционисти који је креирао план исхране за неког
пацијента.

1.2Спецификација захтева помоћу модела случајева коришћења


Дефинисано је девет случајева коришћења који су приказани на слици 1:

1. Пријављивање нутриционисте
2. Унос новог пацијента
3. Претрага пацијента
4. Брисање пацијента
5. Унос нутригенетичке анализе
6. Унос плана исхране (сложен СК)
7. Измена података плана исхране (сложен СК)
8. Претрага плана исхране

4
Слика1: Модел случајева коришћења

СК1 Случај коришћења – Пријављивање нутриционисте


Назив СК
Пријављивање нутриционисте

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и приказује форму за пријављивање нутриционисте.

Основни сценарио СК

1. Нутрициониста уноси податке за пријаву на систем. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке за пријаву. (АНСО)
3. Нутрициниста позива систем да пронађе нутриционисту са задатим подацима. (АПСО)
4. Систем претражује нутриционисту. (СО)
5. Систем приказује поруку: „Успешно сте се пријавили на систем“. (ИА)

Алтернативна сценарија

5.1 Уколико систем не може да пронађе нутриционисту, он нутриционисти приказује поруку


„Систем не може да пронађе нутриционисту на основу унетих података“. (ИА)

5
СК2 Случај коришћења – Унос новог пацијента
Назив СК
Унос новог пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са пацијентима.

Основни сценарио СК
1. Нутрициониста уноси податке о пацијенту. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке о пацијенту. (АНСО)
3. Нутрициониста позива систем да креира новог пацијента.(АПСО)
4. Систем креира новог пацијента. (СО)
5. Систем приказује поруку „Систем је успешно креирао новог пацијента“. (ИА)

Алтернативна сценарија

5.1 Уколико систем не може да креира новог пацијента, он приказује нутриционисти поруку
„Систем не може да креира новог пацијента”.(ИА)

6
СК3 Случај коришћења – Претрага пацијента
Назив СК
Претрага пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за претраживање пацијената. Учитана је листа пацијената.

Основни сценарио СК
1. Нутрициониста уноси вредност по којој претражује пацијенте. (АПУСО)
2. Нутрициониста позива систем да нађе пацијенте по задатој вредности. (АПСО)
3. Систем тражи пацијенте по задатој вредности. (СО)
4. Систем приказује нутриционисти податке о пацијентима и поруку: „Систем је нашао
пацијенте по задатој вредности.”. (ИА)
5. Нутрициониста бира пацијента којег жели да му систем прикаже. (АПУСО)
6. Нутрициониста позива систем да учита податке о изабраном пацијенту. (АПСО)
7. Систем учитава податке о пацијенту. (СО)
8. Систем приказује нутриционисти податке о пацијенту и поруку:
“Систем је учитао пацијента“. (ИА)

Алтернативна сценарија

4.1 Уколико систем не може да нађе ниједног пацијента он приказује нутриционисти поруку:
„Систем не може да нађе пацијенте по задатој вредности”. Прекида се извршење сценарија. (ИА)

8.1 Уколико систем не може да учита податке о изабраном пацијенту он приказује нутриционисти
поруку: „Систем не може да учита податке о изабраном пацијенту“. (ИА)

7
СК4 Случај коришћења - Брисање пацијента

Назив СК
Брисање пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму претраживање пацијената. Учитана је листа пацијената.

Основни сценарио СК

1. Нутрициониста уноси вредност по којој претражује пацијенте. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке за претрагу пацијената.
(АНСО)
3. Нутрициониста позива систем да пронађе пацијенте по задатој вредности. (АПСО)
4. Систем тражи пацијенте по задатој вредности. (СО)
5. Систем приказује пацијенте нутриционисти и поруку: „Систем је пронашао пацијенте по
задатој вредности“. (ИА)
6. Нутрициониста бира пацијента кога жели да избрише. (АПУСО)
7. Нутрициониста позива систем да учита податке о изабраном пацијенту. (АПСО)
8. Систем учитава податке о изабраном пацијенту. (СО)
9. Систем приказује пацијента и поруку: „Систем је пронашао пацијента“. (ИА)
10. Нутрициониста позива систем да обрише пацијента. (АПСО)
11. Систем брише пацијента. (СО)
12. Систем приказује нутриционисти поруку: „Систем је обрисао пацијента“. (ИА)

Алтернативна сценарија
5.1 Уколико систем не може да нађе пацијенте, он приказује нутриционисти поруку: “Систем не
може да пронађе пацијенте по задатој вредности”. Прекида се извршење сценарија. (ИА)

9.1 Уколико систем не може да учита податке о изабраном пацијенту, он приказује нутриционисти
поруку: “Систем не може да учита пацијента.”. Прекида се извршење сценарија. (ИА)

12.1 Уколико систем не може да обрише пацијента он приказује нутриционисти поруку: „Систем
не може да обрише пацијента “. (ИА)

8
СК5 Случај коришћења – Унос нове нутригенетичке анализе
Назив СК
Унос нове нутригенетичке анализе

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са нутригенетичком анализом. Учитана је листа пацијената.

Основни сценарио СК
1. Нутрициониста уноси податке о нутригенетичкој анализи. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке о нутригенетичкој анализи.
(АНСО)
3. Нутрициониста позива систем да креира нову нутригенетичку анализу.(АПСО)
4. Систем креира нову нутригенетичку анализу. (СО)
5. Систем приказује поруку „Систем је успешно креирао нову нутригенетичку анализу“. (ИА)

Алтернативна сценарија
5.1 Уколико систем не може да креира нутригенетичку анализу он приказује нутриционисти
поруку: „Систем не може да креира нутригенетичку анализу”. (ИА)

9
СК6 Случај коришћења – Унос новог плана исхране (сложен СК)
Назив СК
Унос новог плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са планом исхране. Учитане су листа пацијената, нутригенетичких анализа
и намирница.

Основни сценарио СК

1. Нутрициониста уноси податке о плану исхране. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке о плану исхране. (АНСО)
3. Нутрициониста позива систем да креира нови план исхране.(АПСО)
4. Систем креира нови план исхране. (СО)
5. Систем приказује поруку „Систем је успешно креирао нови план исхране“. (ИА)

Алтернативна сценарија
5.1 Уколико систем не може да креира план исхране, он приказује нутриционисти поруку: „Систем
не може да креира план исхране“. (ИА)

10
СК7 Случај коришћења – Измена података плана исхране (сложен СК)
Назив СК
Измена података плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са планом исхране. Учитане су листа пацијената, нутригенетичких анализа
и намирница.

Основни сценарио СК
1. Нутрициониста уноси вредност по којој претражује планове исхране. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке за претрагу планова исхране.
(АНСО)
3. Нутрициониста позива систем да нађе планове исхране по задатој вредности. (АПСО)
4. Систем тражи планове исхране по задатој вредности. (СО)
5. Систем приказује нутриционисти планове исхране и поруку: „Систем је нашао планове
исхране по задатој вредности.“. (ИА)
6. Нутрициониста бира план исхране који жели да измени. (АПУСО)
7. Нутрициониста позива систем да нађе изабрани план исхране. (АПСО)
8. Систем учитава изабрани план исхране. (СО)
9. Систем приказује нутриционисти податке о изабраном плану исхране и поруку: „Систем је
учитао план исхране“. (ИА)
10. Нутрициониста мења податке о плану исхране. (АПУСО)
11. Нутрициониста контролише да ли је коректно унео податке о плану исхране. (АНСО)
12. Нутрициониста позива систем да запамти податке о плану исхране. (АПСО)
13. Систем памти податке о плану исхране. (СО)
14. Систем приказује нутриционисти поруку: „Систем је изменио план исхране.“. (ИА)

Алтернативна сценарија
5.1 Уколико систем не може да пронађе планове исхране он приказује нутриционисти поруку:
“Систем не може да пронађе планове исхране по задатој вредности”. Прекида се извршење
сценарија. (ИА)
9.1 Уколико систем не може да учита податке о плану исхране, приказује следећу поруку
нутриционисти: „Систем не може да учита план исхране“. Прекида се извршење сценарија. (ИА)

14.1 Уколико систем не може да измени податке о плану исхране он приказује нутриционисти
поруку: „Систем не може да измени план исхране“. (ИА)

11
СК8 Случај коришћења – Претрага плана исхране
Назив СК
Претрага плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за претраживање планова исхране. Учитана је листа планова исхране.

Основни сценарио СК

1. Нутрициониста уноси вредност по којој претражује планове исхране. (АПУСО)


2. Нутрициониста позива систем да нађе планове исхране по задатој вредности. (АПСО)
3. Систем тражи планове исхране по задатој вредности. (СО)
4. Систем приказује нутриционисти податке о плановима исхране и поруку: „Систем је нашао
планове исхране по задатој вредности.”. (ИА)
5. Нутрициониста бира план исхране који жели да му систем прикаже. (АПУСО)
6. Нутрициониста позива систем да учита податке о изабраном плану исхране. (АПСО)
7. Систем учитава податке о плану исхране. (СО)
8. Систем приказује нутриционисти податке о плану исхране и поруку:
“Систем је учитао план исхране“. (ИА)

Алтернативна сценарија
4.1 Уколико систем не може да нађе ниједан план исхране он приказује нутриционисти поруку:
„Систем не може да нађе планове исхране по задатој вредности”. Прекида се извршење сценарија.
(ИА)

8.1 Уколико систем не може да учита податке о изабраном плану исхране он приказује
нутриционисти поруку: „Систем не може да учита податке о изабраном плану исхране“. (ИА)

12
2. Анализа

У фази анализе описујемо логичку структуру и понашање софтвера. Заправо, резултат фазе
анализе јесте пословна логика софтверског система. Понашање софтверског система се описује
помоћу дијаграма секвенци и системских операција, док се структура система описује помоћу
концептуалног и релационог модела.

2.1 Понашање софтверског система – системски дијаграм секвенци

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

13
ДС1: Дијаграм секвенци случаја коришћења – Пријављивање нутриционисте

Основни сценарио СК

1. Нутрициониста позива систем да пронађе нутриционисту са задатим подацима. (АПСО)

2. Систем приказује поруку „Успешно сте се пријавили на систем“. (ИА)

Дијаграм 1:ДС Пријављивање доктора(основни сценарио)

Алтернативна сценарија:

2.1 Уколико систем није пронашао нутриционисту, приказује нутриционисти поруку “Систем не
може да нађе нутриционисту на основу унетих вредности”. (ИА)

14
Дијаграм 2:ДС Пријављивање доктора (алтернативни сценарио 1)

Са наведених секвенцних дијаграма уочава се једна системска операција коју треба пројектовати:

1. signal login(Nutricionista)

15
ДС2: Дијаграм секвенци случаја коришћења – Унос новог пацијента

Основни сценарио СК

1. Нутрициониста позива систем да креира новог пацијента.(АПСО)

2. Систем приказује нутриционисти креираног пацијента и поруку:„Систем је успешно


креирао новог пацијента.”. (ИА)

Дијаграм 3:ДС Унос новог пацијента(основни сценарио)

Алтернативна сценарија СК

2.1. Уколико систем не може да креира новог пацијента он приказује нутриционисти поруку:
„Систем не може да креира новог пацијента.”. (ИА)

16
Дијаграм 4:ДС Унос новог пацијента(алтернативни сценарио 1)

Са наведених секвенцних дијаграма уочава се једна системска операција коју треба пројектовати:

1. signal kreirajPacijenta(Pacijent)

17
ДС3: Дијаграм секвенци случаја коришћења – Претрага пацијента

Основни сценарио СК

1. Форма позива систем да врати листу пацијената. (АПСО)


2. Систем враћа форми листу пацијената. (ИА)
3. Нутрициониста позива систем да нађе пацијенате по задатој вредности.(АПСО)
4. Систем приказује нутриционисти податке о пацијентима и поруку:„Систем је нашао
пацијенте по задатој вредности.”.(ИА)
5. Нутрициониста позива систем да учита пацијента. (АПСО)
6. Систем приказује нутриционисти податке о пацијенту и поруку: „Систем је учитао
пацијента“. (ИА)

Дијаграм 5:ДС Претрага пацијента(основни сценарио)

18
Алтернативна сценарија

4.1 Уколико систем не може да нађе пацијенте по задатој вредности, он приказује


нутриционисти поруку: “Систем не може да нађе пацијенте по задатој вредности.” Прекида се
извршење сценарија. (ИА)

Дијаграм 6:Претрага пацијента(алтернативни сценарио 1)

19
6.1 Уколико систем не може да учита пацијенте он приказује нутриционисти поруку: “Систем не
може да учита пацијента.”.(ИА)

Дијаграм 7:Претрага пацијента(алтернативни сценарио 2)

Са наведених секвенцних дијаграма уочавају се три системске операције које треба пројектовати:

1. signal ucitajListuPacijenata(List<Pacijent>)
2. signal nadjiPacijente(String zadataVrednost, List<Pacijent>)
3. signal ucitajPacijenta(Pacijent)

20
ДС4: Дијаграм секвенци случаја коришћења – Брисање пацијента

1. Форма позива систем да врати листу пацијената. (АПСО)


2. Систем враћа форми листу пацијената. (ИА)
3. Нутрициониста позива систем да нађе пацијенте по задатој вредности. (АПСО)
4. Систем приказује пацијенте нутриционисти и поруку: „Систем је нашао пацијенте по
задатој вредности“. (ИА)
5. Нутрициониста позива систем да нађе изабраног пацијента. (АПСО)
6. Систем приказује пацијента и поруку: „Систем је учитао пацијента“. (ИА)
7. Нутрициониста позива систем да обрише пацијента. (АПСО)
8. Систем приказује нутриционисти поруку: „Систем је обрисао пацијента“. (ИА)

Дијаграм 8:ДС Брисање пацијента(основни сценарио)

21
Алтернативна сценарија СК

4.1 Уколико систем не може да нађе пацијенте, он приказује нутриционисти поруку: „Систем не
може да нађе пацијенте по задатој вредности”. Прекида се извршење сценарија. (ИА)

Дијаграм 9:ДС Брисање пацијента(алтернативни сценарио 1)

22
6.1 Уколико систем не може да прикаже податке о пацијенту, приказује следећу поруку
нутриционисти: „Систем не може да учита пацијента.”. Прекида се извршење сценарија.
(ИА)

Дијаграм 10:ДС Брисање пацијента(алтернативни сценарио 2)

23
8.1 Уколико систем не може да обрише пацијента, приказује следећу поруку
нутриционисти:„Систем не може да обрише изабраног пацијента.”. (ИА)

Дијаграм 11:ДС Брисање пацијента(алтернативни сценарио 3)

Са наведених секвенцних дијаграма уочавају се четири системске операције које треба


пројектовати:

1. signal ucitajListuPacijenata(List<Pacijent>)
2. signal nadjiPacijente(ZadataVrednost, List<Pacijent>)
3. signal ucitajPacijenta(Pacijent)
4. signal obrisiPacijenta(Pacijent)

24
ДС5: Дијаграм секвенци случаја коришћења – Унос нутригенетичке анализе

Основни сценарио СК

1. Форма позива систем да врати листу пацијената. (АПСО)

2. Систем враћа форми листу пацијената. (ИА)

3. Нутрициониста позива систем да креира нову нутригенетичку анализу.(АПСО)

4. Систем приказује нутриционисти креирану нутригенетичку анализу и поруку:„Систем је


успешно креирао нову нутригенетичку анализу.”. (ИА)

Дијаграм 12:ДС Унос нове нутригенетичке анализе(основни сценарио)

25
Алтернативна сценарија СК

6.1 Уколико систем не може да креира нутригенетичку анализу, он приказује нутриционисти


поруку: „Систем не може да креира нову нутригенетичку анализу.”(ИА)

Дијаграм 13:ДС Унос нове нутригенетичке анализе(алтернативни сценарио 1)

Са наведених секвенцних дијаграма уочавају се две системске операције које треба пројектовати:

1. signal ucitajListuPacijenata(List<Pacijent>)
2. signal kreirajNutrigenetickuAnalizu(NutrigenetickaAnaliza)

26
ДС6: Дијаграм секвенци случаја коришћења – Унос новог плана исхране

Основни сценарио СК

1. Форма позива систем да врати листу пацијената. (АПСО)


2. Систем враћа форми листу пацијената. (ИА)
3. Форма позива систем да врати листу нутригенетичких анализа. (АПСО)
4. Систем враћа форми листу нутригенетичких анализа.
5. Форма позива систем да врати листу намирница. (АПСО)
6. Систем враћа форми листу намирница. (ИА)
7. Нутрициониста позива систем да креира план исхране.(АПСО)
8. Систем приказује нутриционисти креирани план исхране и поруку: „Систем је креирао
план исхране.”. (ИА)

Дијаграм 14:ДС Унос новог плана исхране(основни сценарио)

27
Алтернативна сценарија СК

8.1 Уколико систем не може да креира план исхране, он приказује нутриционисти поруку:
„Систем не може да креира план исхране”(ИА)

Дијаграм 15:ДС Унос новог плана исхране(алтернативни сценарио 1)

Са наведених секвенцних дијаграма уочава се једна системска операција коју треба пројектовати:

1. signal kreirajPlanIshrane(PlanIshrane)

28
ДС7: Дијаграм секвенци случаја коришћења – Измена података плана исхране

1. Форма позива систем да учита листу пацијената. (АПСО)


2. Систем враћа форми листу пацијената. (ИА)
3. Форма позива систем да учита листу нутригенетичких анализа. (АПСО)
4. Систем враћа форми листу нутригенетичких анализа. (ИА)
5. Форма позива систем да учита листу намирница. (АПСО)
6. Систем враћа форми листу намирница. (ИА)
7. Нутрициониста позива систем да претражи планове исхране по задатој вредности. (АПСО)
8. Систем приказује нутриционисти пронађене планове исхране. Систем приказује
нутриционисти поруку „Систем је нашао планове исхране по задатој вредности“ (ИА)
9. Нутрициониста позива систем да учита све податке о изабраном плану исхране. (АПСО)
10. Систем приказује нутриционисти све податке о плану исхране. Систем приказује
нутриционисти поруку: „Систем је учитао све податке о изабраном плану исхране“. (ИА)
11. Нутрициониста позива систем да запамти податке о плану исхране. (АПСО)
12. Систем приказује нутриционисти запамћен план исхране и поруку: „Систем је запамтио
план исхране“. (ИА)

29
Дијаграм 16:ДС Измена плана исхране(основни сценарио)

30
Алтернативна сценарија
8.1 Уколико систем не може да нађе ниједан план исхране он приказује нутриционисти
поруку: „Систем не може да нађе планове исхране по задатој вредности”. Прекида се
извршење сценариа. (ИА)

Дијаграм 17:ДС Измена плана исхране(алтернативни сценарио 1)

31
10.1 Уколико систем не може да учита податке о изабраном плану исхране он приказује
нутриционисти поруку: „Систем не може да учита податке о изабраном плану исхране“.
Прекида се извршење сценариа. (ИА)

Дијаграм 18:ДС Измена плана исхране(алтернативни сценарио 2)

32
12.1 Уколико систем не може да запамти податке о плану исхране он приказује `
нутриционисти поруку „Систем не може да запамти план исхране”. (ИА)

Дијаграм 19:ДС Измена плана исхране(алтернативни сценарио 3)

33
Са наведених случајева коришћења уочава се седам системских операција:
1. signal vratiListuPacijenata(List <Pacijent>);
2. signal vratiListuNutrigenetickihAnaliza(List <NutrigenetickaAnaliza>);
3. signal vratiListuNamirnica(List <Namirnice>);
4. signal vratiListuPlanovaIshrane(List <PlanIshrane>);
5. signal nadjiPlanoveIshrane(String zadataVrednost, List<PlanIshrane>);
6. signal ucitajPlanIshrane(PlanIshrane);
7. signal izmeniPlanIshrane(PlanIshrane)

34
ДС8: Дијаграм секвенци случаја коришћења – Претрага плана исхране

Основни сценарио СК

1. Форма позива систем да врати листу планова исхране. (АПСО)


2. Систем враћа форми листу планова исхране. (ИА)
3. Нутрициониста позива систем да нађе планове исхране по задатој вредности.(АПСО)
4. Систем приказује нутриционисти податке о плановима исхране и поруку:„Систем је
нашао планове исхране по задатој вредности.”.(ИА)
5. Нутрициониста позива систем да учита план исхране. (АПСО)
6. Систем приказује нутриционисти податке о плану исхране и поруку: „Систем је учитао
план исхране“. (ИА)

Дијаграм 20:ДС Претрага плана исхране(основни сценарио)

35
Алтернативна сценарија

4.1 Уколико систем не може да нађе планове исхране по задатој вредности, он приказује
нутриционисти поруку: „Систем не може да нађе планове исхране по задатој вредности.” Прекида
се извршење сценарија. (ИА)

Дијаграм 21:ДС Претрага плана исхране(алтернативни сценарио 1)

36
6.1 Уколико систем не може да учита план исхране он приказује нутриционисти поруку: „Систем
не може да учита изабрани план исхране“

Дијаграм 22:ДС Претрага плана исхране(алтернативни сценарио 2)

Са наведених секвенцних дијаграма уочавају се три системске операције које треба пројектовати:

1. signal ucitajListuPlanovaIshrane(List<PlanIshrane >)


2. signal nadjiPlanoveIshrane(String zadataVrednost, List<PlanIshrane >)
3. signal ucitajPlanIshrane(PlanIshrane)

37
Резултирајуће системске операције
Као резултат анализе сценарија добијамо укупно 14 системских операција које треба пројектовати:

1. signal login(Nutricionista)
2. signal kreirajPacijenta(Pacijent)
3. signal ucitajListuPacijenata(List<Pacijent>)
4. signal nadjiPacijente(String zadataVrednost, List<Pacijent>)
5. signal ucitajPacijenta(Pacijent)
6. signal obrisiPacijenta(Pacijent)
7. signal ucitajListuNutrigenetickihAnaliza(List<NutrigenetickaAnaliza>)
8. signal kreirajNutrigenetickuAnalizu(NutrigenetickaAnaliza)
9. signal ucitajListuNamirnica(List<Namirnica>)
10. signal kreirajPlanIshrane(PlanIshrane)
11. signal ucitajListuPlanovaIshrane(List<PlanIshrane>)
12. signal nadjiPlanoveIshrane(String zadataVrednost, List<PlanIshrane>)
13. signal ucitajPlanIshrane(PlanIshrane)
14. signal izmeniPlanIshrane(PlanIshrane)

2.2 Дефинисање уговора о системским операцијама

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


операцију се прави уговор. Уговор описују понашање системске операције, то јест описује се оно
шта та системска опеација треба да одради (али не и како то треба да одради).

Један уговор везује се за једну системску операцију, и састоји се од следећих секција:

 операција
 веза са СК
 предуслов
 постуслов

Уговор UG1: Login


Операција: login(Nutricionista): signal;

Веза са СК: СК1

Предуслови: /

Постуслови: /

Уговор UG2: kreirajPacijenta

38
Операција: kreirajPacijenta(Pacijent):signal;

Веза са СК: СК2

Предуслови: Вредносна и структурна ограничења над објектом Пацијент морају бити


задовољена.

Постуслови: Креиран је нови пацијент.

Уговор UG3: ucitajListuPacijenta

Операција: ucitajListuPacijenata(List<Pacijent>):signal;

Веза са СК: СК3, СК4, CK5, СК6, СК7

Предуслови: /

Постуслови: /

Уговор UG4: nadjiPacijente

Операција: nadjiPacijente(String zadataVrednost, List<Pacijent>):signal;

Веза са СК: СК3, СК4

Предуслови: /

Постуслови: /

Уговор UG5: ucitajPacijenta

Операција: ucitajPacijenta(Pacijent):signal;

Веза са СК: СК3, СК4

Предуслови: /

Постуслови: /

39
Уговор UG6: obrisiPacijenta

Операција: obrisiPacijenta(Pacijent):signal;

Веза са СК: СК5

Предуслови: Вредносна и структурна ограничења над објектом Пацијент морају бити


задовољена.

Постуслови: Пацијент је обрисан.

Уговор UG7: ucitajListuNutrigenetickihAnaliza

Операција: ucitajListuNutrigenetickihAnaliza(List<NutrigenetickaAnaliza>):signal;

Веза са СК: СК6, СК7

Предуслови: /

Постуслови: /

Уговор UG8: kreirajNutrigenetickuAnalizu

Операција: kreirajNutrigenetickuAnalizu(NutrigenetickaAnaliza):signal;

Веза са СК: СК5

Предуслови: Вредносна и структурна ограничења над објектом НутригенетичкаАнализа морају


бити задовољена.

Постуслови: Креирана је нова нутригенетичка анализа.

Уговор UG9: ucitajListuNamirnica

Операција: ucitajListuNamirnica(List<Namirnica>):signal;

Веза са СК: СК6, СК7

Предуслови: /

Постуслови: /

40
Уговор UG10: kreirajPlanIshrane

Операција: kreirajPlanIshrane(PlanIshrane):signal;

Веза са СК: СК6

Предуслови: Вредносна и структурна ограничења над објектима План исхране и


СтавкаПланаИсхране морају бити задовољена.

Постуслови: Унети подаци о плану исхране су запамћени.

Уговор UG11: ucitajListuPlanovaIshrane

Операција: ucitajListuPlanovaIshrane(List<PlanIshrane>):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

Уговор UG12: nadjiPlanoveIshrane

Операција: nadjiPlanoveIshrane(String zadataVrednost, List<PlanIshrane>):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

Уговор UG13: ucitajPlanIshrane

Операција: ucitajPlanIshrane(PlanIshrane):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

41
Уговор UG14: izmeniPlanIshrane

Операција: izmeniPlanIshrane(PlanIshrane):signal;

Веза са СК: СК7

Предуслови: Вредносна и структурна ограничења над објектима ПланИсхране и


StavkaПланаИсхране морају бити задовољена.

Постуслови: План исхране је измењен.

42
2.3 Структура софтверског система – Концептуални (доменски) модел

Помоћу концептуалног модела описујемо структуру система. Концептуални модел садржи


концептуалне класе (доменске објекте) и асоцијације између концептуалних класа.

Слика 2: Концептуални модел

43
2.4 Структура софтверског система – Релациони модел
На основу концептуалног модела, прави се релациони модел, а на основу њега се пројектује
релациона база података.

У концептуалном моделу се могу индентификовати следеће класе: Nutricionista, Pacijent,


NutrigenetickaAnaliza, PlanIshrane, StavkaPlanaIshrane i Namirnica. Свака релација ће бити
представљена као једна табела у релационом моделу.

На основу концептуалног модела, прави се релациони модел:


Nutricionista(nutricionistaID, zvanje, username, password, ime, prezime)
Pacijent(pacijentID, ime, prezime, datumRodjenja, nutricionistaID)
NutrigenetickaAnaliza(nutrigenetickaAnalizaID, datumAnalize, metabolickiGenotip, visina, tezina,
ciljevi, nutricionistaID, pacijentID,)
PlanIshrane(planIshraneID, tipPlanaIshrane, intolerancije, nutricionistaID, pacijentID,
nutrigenetickaAnalizaID)
StavkePlanaIshrane(planIshraneID, rb, kolicina, namirnicaID)
Namirnice(namirnicaID, naziv, kategorija, porcija, kalorijskaVrednost, preporukaZaPripremu)

Табела 1:Нутрициониста – вредносна и структурна ограничења


Табела Nutricionista Просто вредносно Сложено вредносно ограничење Структурно
ограничење ограничење
Атрибути Име Тип Вредност Међузависност Међузависнос INSERT /
атрибута атрибута атрибута једне т атрибута UPDATE
табеле више табела CASCADES
nutricionistaI int not null Pacijent,
D and >0 NutrigenetickaAnaliza,
zvanje String not null PlanIshrane
username String not null DELETE
password String not null RESTRICTED
ime String not null Pacijent,
prezime String not null NutrigenetickaAnaliza,
PlanIshrane

44
Табела Pacijent Просто вредносно Сложено вредносно ограничење Структурно
ограничење ограничење
Атрибути Име Тип Вредност Међузависност Међузависност INSERT
атрибута атрибута атрибута једне атрибута више RESTRICTED
табеле табела Nutricionista
pacijentID int not null UPDATE
and >0 RESTRICTED
nutricionistaID int not null Nutricionista
and >0 CASCADES
ime String not null NutrigenetickaAnaliza,
prezime String not null PlanIshrane,
datumRodjenj Date not null PacijentNamirnica
a DELETE
RESTRICTED
NutrigenetickaAnaliza,
PlanIshrane,
PacijentNamirnica
Табела 2:Пацијент - вредносна и структурна ограничења

Табела NutrigenetickaAnaliza Просто вредносно Сложено вредносно ограничење Структурно


ограничење ограничење
Атрибут Име Тип Вредност Међузависнос Међузависност INSERT
и атрибута атрибута т атрибута атрибута више RESTRICTED
једне табеле табела Nutricionista,
nutrigenetickaAnalizaID int not null Pacijent
and >0 UPDATE
nutricionistaID int not null RESTRICTED
and >0 Nutricionista,
pacijentID String not null Pacijent
datumAnalize String not null CASCADES
metabolickiGenotip Date not null PlanIshrane
visina int >80 and DELETE
<250 RESTRICTED
tezina int >0 PlanIshrane
ciljevi String not null
Табела 3:Нутригенетичка анализа - вредносна и структурна ограничења

Табела PlanIshrane Просто вредносно Сложено вредносно ограничење Структурно

45
ограничење ограничење
Атрибути Име Тип Вредност Међузависност Међузависност INSERT
атрибут атрибута атрибута једне атрибута више RESTRICTED
а табеле табела Nutricionista,
planIshraneID int not null Pacijent,
and >0 NutrigenetickaAnaliza
nutricionistaID int not null UPDATE
and >0 RESTRICTED
pacijentID String not null Nutricionista,
nutrigenetickaAnalizaID String not null Pacijent,
tipPlanaIshrane String not null NutrigenetickaAnaliza
intolerancije String CASCADES
StavkePlanaIshrane
DELETE
CASCADES
StavkePlanaIshrane
Табела 4:План исхране - вредносна и структурна ограничења

Табела StavkePlanaIshrane Просто вредносно Сложено вредносно ограничење Структурно


ограничење ограничење
Атрибут Име Тип Вредност Међузависност Међузависнос INSERT
и атрибута атрибута атрибута једне т атрибута RESTRICTED
табеле више табела PlanIshrane,
rb int not null Namirnice
and >0 UPDATE
planIshraneID int not null RESTRICTED
and >0 PlanIshrane,
kolicina int not null Namirnice
DELETE /
Табела 5:Ставке плана исхране - вредносна и структурна ограничења

Табела Namirnice Просто вредносно Сложено вредносно ограничење

Табела 6:Намирнице - вредносна и структурна ограничења

46
ограничење ограничење
Атрибут Име Тип Вредност Међузависнос Међузависност INSERT /
и атрибута атрибута т атрибута атрибута више UPDATE
једне табеле табела CASCADES
namirniceID int not null StavkePlanaIshrane
and >0 DELETE
naziv String not null RESTRICTED
kategorija String not null StavkePlanaIshrane
porcija int not null
and >0
kalorijskaVrednost int not null
and >0
preporukeZaPripremu String not null

47
Као резултат анализе сценарија СК и прављења концептуалног модела добија се логичка
структура и понашање софтверског система:

Слика 3:Логичка структура и понашање софтверског система

48
3. Пројектовање

Фаза пројектовања описује физичку структуру и понашање софтверског система. Пројектовање


архитектуре софтверског система обухвата пројектовање корисничког интерфејса (пројектовање
контролера корисничког интерфејса и екранских форми), апликационе логике (пројектовање
контролера апликационе логике и пословне логике) и складишта података (брокер базе података).

Архитектура система је тронивојска и састоји се од следећих нивоа:


 кориснички интерфејс
 апликациона логика
 складиште података

Ниво корисничког интерфејса ја на страни клијента, док су апликациона логика и


складиште на страни сервера.

Слика 4:Тронивојска архитектура

49
3.1 Пројектовање корисничког интерфејса

Кориснички интерфејс представља улазно-излазну реализацију софтверског система. Састоји се


од:

1. Екранске форме
2. Контролера корисничког интерфејса

Слика 5:Структура корисничког интерфејса

3.1.1 Пројектовање екранских форми

Кориснички интерфејс је дефинисан преко скупа екранских форми. Сценарио коришћења


екранских форми је директно повезан са сценаријима случајева коришћења.

Постоје два аспекта пројектовања екранске форме:

1. Пројектовање сценарија СК који се изводе преко екранске форме

2. Пројектовање метода екранске форме

50
СК1: Случај коришћења- Пријављивање нутриционисте
Назив СК
Пријављивање нутриционисте

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и приказује форму за пријављивање нутриционисте.

Слика 6:Форма за пријављивање нутриционисте на систем

Основни сценарио СК

1. Нутрициониста уноси податке за пријаву на систем. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке за пријаву. (АНСО)

Слика 7:Пријављивање нутриционисте на систем

3. Нутрициниста позива систем да пронађе нутриционисту са задатим подацима. (АПСО)

Опис акције: Нутрициониста кликом на дугме „login“ позива системску операцију


login(Nutricionista)

4. Систем претражује нутриционисту. (СО)

51
5. Систем приказује поруку: „Успешно сте се пријавили на систем“. (ИА)

Слика 8:Успешно пријављивање нутриционисте

Алтернативна сценарија

5.1 Уколико систем не може да пронађе нутриционисту, он нутриционисти приказује поруку


„Систем не може да пронађе нутриционисту на основу унетих података“. (ИА)

Слика 9:Неуспешно пријављивање нутриционисте

52
СК2: Случај коришћења- Унос новог пацијента
Назив СК
Унос новог пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са пацијентима.

Слика 10: Форма за унос новог пацијента

Основни сценарио СК
1. Нутрициониста уноси податке о пацијенту. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке о пацијенту. (АНСО)

53
Слика 11:Креирање новог пацијента од стране нутриционисте

3. Нутрициониста позива систем да креира новог пацијента.(АПСО)

Опис акције: Нутрициониста кликом на дугме „Kreiraj pacijenta“ позива системску


операцију kreirajPacijenta(Pacijent)

4. Систем креира новог пацијента. (СО)


5. Систем приказује поруку „Систем је успешно креирао новог пацијента“. (ИА)

Слика 12: Систем приказује поруку о успешности додавања пацијента

Алтернативна сценарија

5.1 Уколико систем не може да креира новог пацијента, он приказује нутриционисти поруку
„Систем не може да креира новог пацијента”.(ИА)

54
Слика 13: Систем приказује поруку о неуспешности креирања пацијента

55
СК3: Претрага пацијента

Назив СК
Претрага пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за претраживање пацијената. Учитана је листа пацијената.

Слика 14:Систем приказује форму за претраживање пацијената

Основни сценарио СК
1. Нутрициониста уноси вредност по којој претражује пацијенте. (АПУСО)
2. Нутрициониста позива систем да нађе пацијенте по задатој вредности. (АПСО)
Опис акције: При самом отварању форме за претрагу пацијената, иницијално се позива
системска операција ucitajListuPacijenata(), а учитани пацијенти се приказују у табели.
Нутрициониста у поље претраге уноси критеријум по коме претражује пацијенте, при чему се
позива системска операција nadjiPacijente(ZadataVrednost, List<Pacijent>)

3. Систем тражи пацијенте по задатој вредности. (СО)


4. Систем приказује нутриционисти податке о пацијентима и поруку: „Систем је нашао
пацијенте по задатој вредности.”. (ИА)

56
Слика 15: Систем тражи пацијенте по задатој вредности

5. Нутрициониста бира пацијента којег жели да му систем прикаже. (АПУСО)


6. Нутрициониста позива систем да учита податке о изабраном пацијенту. (АПСО)

Опис акције: Доктор кликом на дугме „Detalji pacijenta“ позива системску операцију
ucitajPacijenta(Pacijent)

7. Систем учитава податке о пацијенту. (СО)


8. Систем приказује нутриционисти податке о пацијенту и поруку:
“Систем је учитао пацијента“. (ИА)

Слика 16: Систем приказује поруку о успешности учитавања пацијента

57
Слика 17:Систем приказује податке пацијента

Алтернативна сценарија

4.1 Уколико систем не може да нађе ниједног пацијента он приказује нутриционисти поруку:
„Систем не може да нађе пацијенте по задатој вредности”. Прекида се извршење сценарија. (ИА)

Слика 18: Систем приказује поруку о неупшеном учитавању пацијената

8.1 Уколико систем не може да учита податке о изабраном пацијенту он приказује нутриционисти
поруку: „Систем не може да учита податке о изабраном пацијенту“. (ИА)

Слика 19:Систем приказује поруку о неуспешности учитавања пацијента

58
СК4: Брисање пацијента

Назив СК
Брисање пацијента

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму претраживање пацијената. Учитана је листа пацијената.

Слика 20:Форма за рад са пацијентима

Основни сценарио СК

1. Нутрициониста уноси вредност по којој претражује пацијенте. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке за претрагу пацијената.
(АНСО)
3. Нутрициониста позива систем да пронађе пацијенте по задатој вредности. (АПСО)

Опис акције: При самом отварању форме за претрагу пацијената, иницијално се позива
системска операција ucitajListuPacijenata(), а учитани пацијенти се приказују у табели.
Нутрициониста у поље претраге уноси критеријум по коме претражује пацијенте, при чему се
позива системска операција nadjiPacijente(ZadataVrednost, List<Pacijent>)

4. Систем тражи пацијенте по задатој вредности. (СО)


5. Систем приказује пацијенте нутриционисти и поруку: „Систем је пронашао пацијенте по
задатој вредности“. (ИА)

59
Слика 21:Систем учитава пацијенте по задатој вредности

6. Нутрициониста бира пацијента кога жели да избрише. (АПУСО)

Слика 22:Нутрициониста бира пацијента за брисање

7. Нутрициониста позива систем да учита податке о изабраном пацијенту. (АПСО)


Опис акције: Нутрициониста кликом на дугме „Detalji pacijenta“ позива системску операцију
ucitajPacijenta(Pacijent)

8. Систем учитава податке о изабраном пацијенту. (СО)


9. Систем приказује пацијента и поруку: „Систем је учитао пацијента“. (ИА)

Слика 23:Систем приказује поруку да је успешно учитао пацијента

60
Слика 24:Систем приказује податке изабраног пацијента

10. Нутрициониста позива систем да обрише пацијента. (АПСО)

Опис акције: Нутрициониста кликом на дугме „Obrisi pacijenta“ позива системску операцију
obrisiPacijenta(Pacijent)

11. Систем брише пацијента. (СО)


12. Систем приказује нутриционисти поруку: „Систем је обрисао пацијента“. (ИА)

Слика 25:Систем приказује поруку о успешности брисања пацијента

Алтернативна сценарија
5.1 Уколико систем не може да нађе пацијенте, он приказује нутриционисти поруку: “Систем не
може да пронађе пацијенте по задатој вредности”. Прекида се извршење сценарија. (ИА)

Слика 26:Порука о неуспешном учитавању пацијената

9.1 Уколико систем не може да учита податке о изабраном пацијенту, он приказује нутриционисти
поруку: “Систем не може да учита пацијента.”. Прекида се извршење сценарија. (ИА)

61
Слика 27:Порука о неуспешном учитавању пацијента

12.1 Уколико систем не може да обрише пацијента он приказује нутриционисти поруку: „Систем
не може да обрише пацијента “. (ИА)

Слика 28:Порука о неуспешном брисању пацијента

62
СК5: Унос нове нутригенетичке анализе

Назив СК
Унос нове нутригенетичке анализе

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са нутригенетичком анализом. Учитана је листа пацијената.

Слика 29: Форма за рад са нутригенетичком анализом

Основни сценарио СК
1. Нутрициониста уноси податке о нутригенетичкој анализи. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке о нутригенетичкој анализи.
(АНСО)

63
Слика 30: Нутрициониста уноси податке о новој нутригенетичкој анализи

3. Нутрициониста позива систем да креира нову нутригенетичку анализу.(АПСО)


Опис акције: Нутрициониста кликом на дугме „Kreiraj nutrigeneticku analizu“ позива системску
операцију kreirajNutrigenetickuAnalizu(NutrigenetickaAnaliza)

4. Систем креира нову нутригенетичку анализу. (СО)


5. Систем приказује поруку „Систем је успешно креирао нову нутригенетичку анализу“. (ИА)

Слика 31: Систем обавештава нутриционисту о успешности креирања нутригенетичке анализе

Алтернативна сценарија
5.1 Уколико систем не може да креира нутригенетичку анализу он приказује нутриционисти
поруку: „Систем не може да креира нутригенетичку анализу”. (ИА)

Слика 32: Систем обавештава нутриционисту о неуспешном креирању нутригенетичке анализе

64
СК6: Унос новог плана исхране

Назив СК
Унос новог плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са планом исхране. Учитане су листа пацијената, нутригенетичких анализа
и намирница.

Слика 33: Форма за рад са планом исхране

Основни сценарио СК

1. Нутрициониста уноси податке о плану исхране. (АПУСО)


2. Нутрициониста контролише да ли је коректно унео податке о плану исхране. (АНСО)

65
Слика 34: Нутрициониста уноси податке о новом плану исхране

3. Нутрициониста позива систем да креира нови план исхране.(АПСО)


Опис акције: Нутрициониста кликом на дугме „Sacuvaj plan ishrane“ позива системску
операцију kreirajPlanIshrane(PlanIshrane)

4. Систем креира нови план исхране. (СО)


5. Систем приказује поруку „Систем је успешно креирао нови план исхране“. (ИА)

Слика 35: Систем обавештава доктора о успешности креирања плана исхране

Алтернативна сценарија
5.1 Уколико систем не може да креира план исхране, он приказује нутриционисти поруку: „Систем
не може да креира план исхране“. (ИА)

Слика 36: Систем обавештава нутриционисту о неуспешности креирања плана исхране

66
СК7: Измена података плана исхране

Назив СК
Измена података плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за рад са планом исхране. Учитане су листа пацијената, нутригенетичких анализа
и намирница.

Слика 37: Форма за рад са планом исхране

Основни сценарио СК
1. Нутрициониста уноси вредност по којој претражује планове исхране. (АПУСО)
2. Нутрициониста контролише да ли је коректно унео податке за претрагу планова исхране.
(АНСО)

67
Слика 38: Нутрициониста уноси податке за претрагу планова исхране

3. Нутрициониста позива систем да нађе планове исхране по задатој вредности. (АПСО)


Опис акције: Нутрициониста кликом на дугме „Pretrazi planove“ позива системску операцију
pretraziPlanoveIshrane(String zadataVrednost, List<PlanIshrane>)

4. Систем тражи планове исхране по задатој вредности. (СО)


5. Систем приказује нутриционисти планове исхране и поруку: „Систем је нашао планове
исхране по задатој вредности.“. (ИА)

Слика 39: Систем обавештава нутриционисту да је пронашао планове исхране по задатој вредности

Слика 40: Систем приказује пронађене планове исхране по задатој вредности

68
6. Нутрициониста бира план исхране који жели да измени. (АПУСО)
7. Нутрициониста позива систем да нађе изабрани план исхране. (АПСО)
Опис акције: Нутрициониста кликом на дугме „Detalji plana ishrane“ позива системску
операцију ucitajPlanIshrane(PlanIshrane)

8. Систем учитава изабрани план исхране. (СО)


9. Систем приказује нутриционисти податке о изабраном плану исхране и поруку: „Систем је
учитао план исхране“. (ИА)

Слика 41: Систем приказује нутриционисти поруку о успешно учитаном плану исхране

Слика 42: Систем приказује податке о изабраном плану исхране

10. Нутрициониста мења податке о плану исхране. (АПУСО)


11. Нутрициониста контролише да ли је коректно унео податке о плану исхране. (АНСО)

69
Слика 43: Измена података о плану исхране

12. Нутрициониста позива систем да запамти податке о плану исхране. (АПСО)


Опис акције: Нутрициониста кликом на дугме „Izmeni plan ishrane“ позива системску
операцију izmeniPlanIshrane(PlanIshrane)

13. Систем памти податке о плану исхране. (СО)


14. Систем приказује нутриционисти поруку: „Систем је изменио план исхране.“. (ИА)

Слика 44: Систем обавештава нутриционисту о успешности измене плана исхране

Алтернативна сценарија
5.1 Уколико систем не може да пронађе планове исхране он приказује нутриционисти поруку:
“Систем не може да пронађе планове исхране по задатој вредности”. Прекида се извршење
сценарија. (ИА)
9.1 Уколико систем не може да учита податке о плану исхране, приказује следећу поруку
нутриционисти: „Систем не може да учита план исхране“. Прекида се извршење сценарија. (ИА)

70
Слика 45: Систем обавештава нутриционисту о неуспешности учитавања плана исхране

14.1 Уколико систем не може да измени податке о плану исхране он приказује нутриционисти
поруку: „Систем не може да измени план исхране“. (ИА)

Слика 46: Систем обавештава нутриционисту о немогућности измене плана исхране

71
СК8: Претрага плана исхране

Назив СК
Претрага плана исхране

Актори СК
Нутрициониста

Учесници СК
Нутрициониста и систем (програм)

Предуслов: Систем је укључен и нутрициониста je пријављен под својом шифром. Систем


приказује форму за претраживање планова исхране. Учитана је листа планова исхране.

Слика 47: Форма за рад са планом исхране

Основни сценарио СК

1. Нутрициониста уноси вредност по којој претражује планове исхране. (АПУСО)


2. Нутрициониста позива систем да нађе планове исхране по задатој вредности. (АПСО)
Опис акције: Нутрициониста кликом на дугме „Pretrazi planove“ позива системску операцију
pretraziPlanoveIshrane(String zadataVrednost, List<PlanIshrane>)

3. Систем тражи планове исхране по задатој вредности. (СО)


4. Систем приказује нутриционисти податке о плановима исхране и поруку: „Систем је нашао
планове исхране по задатој вредности.”. (ИА)

72
Слика 48: Систем обавештава нутриционисту да је пронашао планове исхране по задатој вредности

Слика 49: Систем приказује пронађене планове исхране по задатој вредности

5. Нутрициониста бира план исхране који жели да му систем прикаже. (АПУСО)


6. Нутрициониста позива систем да учита податке о изабраном плану исхране. (АПСО)
Опис акције: Нутрициониста кликом на дугме „Detalji plana ishrane“ позива системску
операцију ucitajPlanIshrane(PlanIshrane)

7. Систем учитава податке о плану исхране. (СО)


8. Систем приказује нутриционисти податке о плану исхране и поруку:
“Систем је учитао план исхране“. (ИА)

Слика 50: Систем обавештава нутриционисту да је успешно учитао изабрани план исхране

73
Слика 51: Систем приказује нутриционисти изабрани план исхране

Алтернативна сценарија
4.1 Уколико систем не може да нађе ниједан план исхране он приказује нутриционисти поруку:
„Систем не може да нађе планове исхране по задатој вредности”. Прекида се извршење сценарија.
(ИА)

8.1 Уколико систем не може да учита податке о изабраном плану исхране он приказује
нутриционисти поруку: „Систем не може да учита податке о изабраном плану исхране“. (ИА)

Слика 52: Систем приказује нутриционисти поруку о неуспешном учитавању плана исхране

74
3.1.2 Пројектовање контролера корисничког интерфејса

Kонтролер корисничког интерфејса је одговоран да:

1. прихвати податке које шаље екранска форма


2. конвертује податке (који се налазе у графичким елементима) у објекат који представља
улазни аргумент СО која ће бити позвана
3. шаље захтев за извршење системске операције до апликационог сервера (софтверског
система)
4. прихвата објекат (излаз) софтверског система настаo као резултат извршења системске
операције
5. конвертује објекат у податке графичких елемената

3.2 Пројектовање апликационе логике

Апликациона логика описује структуру и понашање система. Апликациони сервер се састоји из:

1. Контролера апликационе логике – треба да подигне серверски сокет који ће да


ослушкује мрежу. Служи за комуникацију са клијентом и одговоран је да прихвати захтев
за извршење системске операције од клијента и проследи га до пословне логике која је
одговорна за извршење СО
2. Пословна логика – описана је структуром (доменске класе) и понашањем (системске
операције)
3. Брокер базе података – служи за комуникацију између пословне логике и базе података

3.2.1 Конторлер апликационе логике

Део за комуникацију подиже серверски сокет који ослушкује мрежу. Када клијентски сокет
успостави конекцију са серверским сокетом, тада сервер генерише нит која ће успоставити
двосмерну комуникацију са клијентом.

Софтверски систем реализован је као клијент-сервер апликација. На серверској страни је нит


ThreadServer која садржи објекат класе ServerSocket. Нит константно позива методу accept која
чека да се покрене клијентска апликација која, кад се то деси, ће покушати да се повеже на сервер.
Слање и примање података од клијента се остварује преко сокета, метода accept креира објекат
класе Socket. Клијент шаље захтев за извршење неке од СО до одговарајуће нити (коју смо назвали
ThreadClient), која је повезана са тим клијентом. ThreadClient прима захтев и даље га преусмерава
до класа које су одговорне за извршење СО. Након извршења СО резултат се враћа до
апликационе логике, односно до класе ThreadClient на серверској страни која тај резултат шаље
назад до клијента путем сокета.

75
3.2.2 Пословна логика

3.2.2.1 Пројектовање понашања софтверског система (системске операције)

За сваки од претходно дефинисаних уговора правимо системску операцију, што заправо


представља пројектовање понашања. Класа ApstraktnaSO која представља апстрактну класу која
садржи методу templateExecute, која представља шаблон извршавања сваке операције над базом
података, а као параметар прима објекат класе ApstraktniObjekat. У тој методи се позивају методе
validate и execute, које су апстрактне и које ће свака класа системске операције имплементирати.
Након тога се позива метода commit која узима објекат Connection, класе DBBroker и позива њену
методу commit. Провера предуслова се извршава на клијентској страни уколико постоји, а
постуслови се очитавају у оквиру Response објекта који шаље сервер клијенту и на основу кога
клијент закључује да ли је операција успешно извршена на серверској страни или је дошло до
грешке.

За сваку системску операцију треба направити концептуална решења која су директно повезана са
логиком проблема.

За сваки уговор пројектује се концептуално решење.

Уговор UG1: Login


Операција: login(Nutricionista): signal;

Веза са СК: СК1

Предуслови: /

Постуслови: /

Слика 53: Дијаграм секвенци за уговор login

76
Уговор UG2: kreirajPacijenta

Операција: kreirajPacijenta(Pacijent):signal;

Веза са СК: СК2

Предуслови: Вредносна и структурна ограничења над објектом Пацијент морају бити


задовољена.

Постуслови: Kreiran je novi pacijent.

Слика 54: Дијаграм секвенци за уговор kreirajPacijenta

Уговор UG3: ucitajListuPacijenata

Операција: ucitajListuPacijenata(List<Pacijent>):signal;

Веза са СК: СК3, СК4, CK5, СК6, СК7

Предуслови: /

Постуслови: /

77
Слика 55: Дијаграм секвенци за уговор ucitajListuPacijenata

Уговор UG4: nadjiPacijente

Операција: nadjiPacijente(String zadataVrednost, List<Pacijent>):signal;

Веза са СК: СК3, СК4

Предуслови: /

Постуслови: /

Слика 56: Дијаграм секвенци за уговор nadjiPacijente

78
Ова операција позива операцију која враћа све пацијенте (getAllPacijent) и затим на клијентској
страни врши филтрирање листе пацијената по критеријуму.

Уговор UG5: ucitajPacijenta

Операција: ucitajPacijenta(Pacijent):signal;

Веза са СК: СК3, СК4

Предуслови: /

Постуслови: /

Слика 57: Дијаграм секвенци за уговор ucitajPacijenta

Уговор UG6: ucitajPacijenta

Операција: obrisiPacijenta(Pacijent):signal;

Веза са СК: СК5

Предуслови: Вредносна и структурна ограничења над објектом Пацијент морају бити


задовољена.

Постуслови: Пацијент је обрисан.

79
Слика 58: Дијаграм секвенци за уговор obrisiPacijenta

Уговор UG7: ucitajListuNutrigenetickihAnaliza

Операција: ucitajListuNutrigenetickihAnaliza(List<NutrigenetickaAnaliza>):signal;

Веза са СК: СК6, СК7

Предуслови: /

Постуслови: /

Слика 59: Дијаграм секвенци за уговор ucitajListuNutrigenetickihAnaliza

80
Уговор UG8: kreirajNutrigenetickuAnalizu

Операција: kreirajNutrigenetickuAnalizu(NutrigenetickaAnaliza):signal;

Веза са СК: СК5

Предуслови: Вредносна и структурна ограничења над објектом НутригенетичкаАнализа морају


бити задовољена.

Постуслови: Креирана је нова нутригенетичка анализа.

Слика 60: Дијаграм секвенци за уговор kreirajNutrigenetickuAnalizu

Уговор UG9: ucitajListuNamirnica

Операција: ucitajListuNamirnica(List<Namirnica>):signal;

Веза са СК: СК6, СК7

Предуслови: /

Постуслови: /

81
Слика 61: Дијаграм секвенци за уговор vratiListuNamirnica

Уговор UG10: kreirajPlanIshrane

Операција: kreirajPlanIshrane(PlanIshrane):signal;

Веза са СК: СК6

Предуслови: Вредносна и структурна ограничења над објектима План исхране и


СтавкаПланаИсхране морају бити задовољена.

Постуслови: Унети подаци о плану исхране су запамћени.

Слика 62: Дијаграм секвенци за уговор kreirajPlanIshrane

82
Уговор UG11: ucitajListuPlanovaIshrane

Операција: ucitajListuPlanovaIshrane(List<PlanIshrane>):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

Слика 63: Дијаграм секвенци за уговор ucitajListuPlanovaIshrane

Уговор UG12: nadjiPlanoveIshrane

Операција: nadjiPlanoveIshrane(String zadataVrednost, List<PlanIshrane>):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

Слика 64:Дијаграм секвенци за уговор nadjiPlanoveIshrane

83
Уговор UG13: ucitajPlanIshrane

Операција: ucitajPlanIshrane(PlanIshrane):signal;

Веза са СК: СК7, СК8

Предуслови: /

Постуслови: /

Слика 65: Дијаграм секвенци за уговор ucitajPlanIshrane

Ова операција позива операцију која враћа све термине (getAllTermin) и затим на клијентској
страни врши филтрирање листе термина и проналази одабрани термин.

Уговор UG13: izmeniPlanIshrane


Операција: izmeniPlanIshrane(PlanIshrane):signal;

Веза са СК: СК7

Предуслови: Вредносна и структурна ограничења над објектима ПланИсхране и


StavkaПланаИсхране морају бити задовољена.

Постуслови: План исхране је измењен.

84
Слика 66: Дијаграм секвенци за уговор izmeniPlanIshrane

85
3.2.2.2 Пројектовање структуре софтверског система (доменске класе)

На основу концептуалних класа креирају се софтверске класe.

Слика 67: Концептулани дијаграм класа

86
Идентификоване су следеће класе:

 Нутрициониста

Слика 68: Класа Nutricionista

 Пацијент

Слика 69: Класа Pacijent

87
 Нутригенетичка анализа

Слика 70: Класа NutrigenetickaAnaliza

 План исхране

Слика 71: Класа PlanIshrane

88
 Ставка плана исхране

Слика 72: Класа StavkaPlanaIshrane

 Намирница

Слика 73: Класа namirnica

Поред њих додате су и следеће класе:

 ApstraktniObjekat - апстрактна класа које све доменске класе наслеђују.

Слика 74: Класа ApstraktniObjekat

89
 Operacije_radna_memorija – интерфејс који садржи све операције које се шаљу од клијента
серверу

Слика 75: Интерфејс Operacije_radna_memorija

 KlijentskiZahtev – служи за слање објекта од клијента ка серверу. Садржи један Object


атрибут који представља објекат над којим треба извршити захтевану операцију и један int
атрибут који представља операцију која треба да се изврши.

Слика 76: Класа KlijentskiZahtev

90
 ServerskiOdgovor – служи за слање објекта од сервера ка клијенту. Садржи један Object
атрибут који представља резултат извршене операције, један Exception атрибут који
представља изузетак који се можда десио.

Слика 77: Класа ServerskiOdgovor

91
3.2.3 Пројектовање складишта података

На основу релационог модела и ограничења пројектоване су табеле базе података које користи
наш софтверски систем:

Слика 78: Табела Nutricionista

Слика 79: Табела Pacijent

Слика 80: Табела NutrigenetickaAnaliza

Слика 81: Табела PlanIshrane

Слика 82: Табела StavkaPlanaIshrane

Слика 83: Табела Namirnica

92
За комуникацију са базом података правимо генеричку класу ApstraktnaSO која има методе за
валидацију и извршавања трансакције, које су апстрактне и које ће имплементирати свака класа
системске операције која ће се извршавати, као и методе за потврђивање и поништавање
трансакције. Она се служи класом DBBroker која је имплементирана помоћу Singleton патерна и
која параметре за повезивање на базу података чита из текстуалног фајла који садржи све потребне
параметре и помоћу ње наша генеричка класа добија конекцију на базу података.

Као резултат пројектовања класе ApstraktnaSO, DatabaseConnection и доменских објеката добијамо


следећи дијаграм класа:

Слика 84: Дијаграм класа добијен након пројектовања доменских класа и ApstraktnaSO класе

93
Слика 85: Коначна архитектура софтверског система

94
4. Фаза имплементације
Софтверски систем је развијан у програмском језику “Java”, развојно окружење NetBeans. Као
систем за управљање базом података коришћен je MySQL.

Организација пројеката је приказана на следећој слици.

Слика 86: Организација пројекта

Пројекат ServerskiProgram садржи нити за покретање комуникације са клијентом, контролера,


генеричку класу за базу података и генерисање конекције на базу података и серверске форме
неопходне за покретање сервера и приказивање тренутно повезаних корисника на сервер.

Слика 87: Серверски део

Пројекат КlijentskiProgram садржи форме на којима запослени ради и сокет који служи за
комуникацију са сервером.

95
Слика 88: Клијентски део

Пројекат Zajednicki садржи заједничке класе које користе клијент и сервер пројекти. То су
доменске класе, класе KlijentskiZahtev и ServerskiOdgovor и интерфејс Operacije_radna_memorija и
енум StatusOdgovora.

Слика 89: Заједнички део

96
5. Тестирање
У фази тестирања, тестиран је сваки од имплементираних случајева коришћења. Приликом
тестирања сваког случаја коришћења, поред унетих правилних података, уношени су и
неправилни подаци да би се утврдио резултат извршења. Након фазе тестирања, софтвер је
спреман за коришћење од стране крајњег корисника.

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

Коришћена литература
”ПРОЈЕКТОВАЊЕ СОФТВЕРА СКРИПТА- радни материјал, вер. 1.3”, др Синиша Влајић,
Београд 2020

97

You might also like