# Predlog projekta
| | |
|:---|:---|
| **Naziv projekta** | Diploma exchange |
| **Člani projektne skupine** | Matevž Andolšek Peklaj, Rok Caserman, Jernej Ulčakar, Jakob Tadej Udovič, Urh Vovk |
| **Kraj in datum** | 7.3.2021 |
## Opis skupine
1. Miha Palčič, študent 3. letnika na smeri Računalništvo in informatika. Največ izkušenj ima v programiranju v Javascriptu in Javi. Ima izkušnje z uporabo relacijskih in dokumentnih podatkovnih baz in z programiranjem mikrostoritev. Razvijal bo zaledno stran aplikacije, pri tem bo sodeloval z Brinom Colnarjem in Boštjanom Ažmanom.
2. Brin Colnar, študent 3. letnika na smeri Računalništvo in informatika. Pri predmetu PRPO se je spoznal z programiranjem zalednih sistemov v Javi, mikrostoritvami, namestitvijo aplikacij na Azure in načrtovanjem podatkovnih baz. Seznanjen je z razvijanjem in dokumentacijo REST API-jev. Zna uporabljati orodji Docker in Kubernetes. Ima tudi izkušnje z Node.js in ogrodjem Express. Zaradi teh znanj bo pomagal z razvojem zalednega dela, lastnega API-ja in integracijo zunanjih API-jev. Pri tem bo sodeloval z Mihatom Palčičem in Boštjanom Ažmanom.
## Povzetek projekta
S projektom Diploma Exchange želimo poenostaviti iskanje mentorja in teme za diplomsko nalogo, ter komunikacijo in organizacijo tekom izdelave diplome na Univerzi v Ljubljani. Trenutno so mentorji in teme za diplomsko nalogo zapisane v tabeli, ki ni redno posodobljena, nekateri mentroji pa sploh nimajo razpisanih tem (trenutno ima eden izmed mentorjev napisano, da ni na voljo za leto 2019/2020). Poleg tega so letos izkušnje študentov pokazale, da je veliko mentorjev neodzivnih, ali pa po enem tednu napišejo, da niso več na voljo. Aplikacija bi omogočila da bi se vse kar se tiče diplom nahajalo na enem mestu, da bi bili podatki jasno predstavljeni in. Mentorji bi na svojem profilu lahko urejali statuse tem ter sledili statusu njihovih mentorantov z sistemom "ticketov" ter časovnic za posamezne diplome. Študentje bi imeli na voljo časovnico vseh aktivnosti ter komunikacij z mentorjem. Lahko bi tudi objavili "tickete" s katerimi bi od mentorja zahtevali npr. pregled osnutka dela ki bi ga naložili in poslali kar preko aplikacije. Sami smo ugotovili, da je iskanje teme zamuden in nadležen proces za vse udeležendce. Z Diploma exchange bi radi to izkušnjo olajšali in omogočili, da se študent osredotoči na pisanje diplomske naloge, profesor pa na poučevanje in ne na odgovarjanje nepotrebnih emailov.
## 1. Projektna ideja
### 1.1 Ozadje
Za zaključek študija morajo študenti opraviti diplomsko delo. Da študent uspešno izvede omenjeno nalogo, mora poiskati
temo in mentorja zanjo. Trenutno, vsaj na FRI, to poteka tako, da mentorji objavijo njim zanimiva področja oz. naslove nalog
na spletno učilnico, vsa komunikacija med mentorji in študenti pa poteka preko elektronske pošte.
### 1.2 Področje in motivacija
Za projekt smo se odločili, ker smo ob iskanju mentorjev za diplomsko nalogo naleteli na gluha ušesa. Trenunto so teme objavljene na spletni učilnici v tabeli, ki ni
pogosto posodobljena ali pa sploh niso objavljene (mentorji nimajo objavljenih tem), poleg tega ne vemo če so mentorji prosti, kar je izguba časa za njih in za nas.
Nekateri mentorji objavljajo svoje dokumente s temami, vendar se zgodi da tudi te niso posodobljeni in ne prikazujejo njihove zasedenosti. S tem poskušamo olajšati
povezovanje študentov in mentorjev in s tem poenostaviti diplomsko delo.
### 1.3 Namen
Splošen namen je olajšati komunikacijo mentorjev in študentov ter centralizirati vse aktivnosti povezane z diplomo na eno mesto.
* Študentje na preglednem mestu najdejo še razpoložljive teme
* Vidijo zasedenost mentorjev
* Mentorji imajo možnost odkrivanja tem, ki jih predlagajo študenti
* Sledenje vseh aktivnosti izdelave diplome
* Komunikacija in deljenje/pregled gradiv
* Seznanitev z dogajanjem na mednarodnem raziskovalnem področju
### 1.4 Cilji
* Dobro testirana in pregledna spletna aplikacija,
* učinkovita podatkovna baza,
* tehnična dokumentacija (aplikacija, podatkovna baza),
* navodila za uporabo aplikacije,
* olajšanje izbire diplomske naloge za študente in razpisa tem za mentorje,
* boljša seznanitev z globalnimi raziskovalnimi področji,
* izboljšan način komunikacije med študenti in mentorji z integrirano klepetalnico
### 1.5 Smernice za rešitev
Končni izdelek mora izpolnjevati naslednje kriterije:
* interaktiven in odziven spletni vmesnik (po načelu "Mobile first")
* uporabniški mora biti čim bolj preprost za uporabo
* zagotavljanje visoke stopnje varnosti
* zagotavljanje delovanja v načinu brez povezave
* sledenje načelu DRY (Don't Repeat Yourself)
### 1.6 Končni uporabniki
Končni uporabniki so mentorji diplomskih nalog in kandidati študenjte na dodiplomski stopnji Univerze v Ljubljani. Skupaj predstavljajo predvidene uporabnike, kjer je 6 tisoč potencialnih mentorjev in približno 8200 diplomantov UL. Potencialni uporabniki so vešči v uporabi spletnih tehnologij, uporaba pa je podobna aplikacijam, s katerimi se srečujejo na dnevni ravni. Neposredno korist od projekta, bi imela Univerza v Ljubljani, ki bi dobila kvalitetnejše končne projekte - diplome.
## 2. Projektni načrt
### 2.1 Povzetek razdelitve projekta na aktivnosti
Najprej bomo zajeli zahteve za aplikacijo in glede na njih zasnovali grob oris arhitekture aplikacije, da bomo nato lahko izbreli ustrezne tehnologije za implementacijo. Nato bomo za posamezne dele aplikacije naredili podrobnejši načrt vseh zahtev in povezav med njimi v izbranih tehnologijah. Nato bomo začeli z implementacijo aplikacije, najprej bomo postavili skelet strežnika in nato vzporedno implementirali več funkcionalnoti. Ko bomo funkcionalnosti stestirali jih bomo nato preko APIja povezali na frontend in testirali še le tega. Na koncu bomo aplikacijo še varnostno testirali, namestili in testirali nameščeno ter pripravili dokumentacijo APIja.
### 2.2 Načrt posameznih aktivnosti
| **Oznaka aktivnosti** | A1 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 21.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 24.3.2022 |
| **Trajanje** | 4 dni |
| **Naziv aktivnosti** | Zajem zahtev projekta |
| **Obseg aktivnosti v ČM** | 0.3 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Zajeti zahteve problemske domene. |
| **Opis aktivnosti** | Analiza problemske domene, zajem zahtev. |
| **Morebitne odvisnosti in omejitve** | Ni odvisnosti |
| **Pričakovani rezultati aktivnosti** | Zajete zahteve projekta |
| **Oznaka aktivnosti** | A2 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 25.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 25.3.2022 |
| **Trajanje** | 1 dan |
| **Naziv aktivnosti** | Oris arhitekture in izbira tehnologij |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Definirati kateri deli aplikacije so potrebni in izbira tehnologij, ki zadostijo te zahteve. |
| **Opis aktivnosti** | Načrtovanje struktur in izbiranje tehnologij. |
| **Morebitne odvisnosti in omejitve** | Zajete zahteve (A1) |
| **Pričakovani rezultati aktivnosti** | Načrt strukture aplikacije in izbrane tehnologije. |
| **Oznaka aktivnosti** | A3 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 25.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 29.3.2022 |
| **Trajanje** | 3 dni |
| **Naziv aktivnosti** | Zasnova zaslonskih mask/UX |
| **Obseg aktivnosti v ČM** | 0.2 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Izdelati dobre in čiste zaslonske maske |
| **Opis aktivnosti** | Zasnova zaslonskih mask in uporabniške izkušnje |
| **Morebitne odvisnosti in omejitve** | Zajete zahteve (A1) |
| **Pričakovani rezultati aktivnosti** | Uporabniku prijazne in enostavne zaslonske maske. |
| **Oznaka aktivnosti** | A4 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 28.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 30.3.2022 |
| **Trajanje** | 3 dni |
| **Naziv aktivnosti** | Zasnova arhitekture celotne aplikacije |
| **Obseg aktivnosti v ČM** | 0.2 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Narediti specifičen načrt arhitekture, ki zajema vse zahteve. |
| **Opis aktivnosti** | Zasnova arhitekture |
| **Morebitne odvisnosti in omejitve** | Oris arhitekture in izbira tehnologije (A2) |
| **Pričakovani rezultati aktivnosti** | Načrt arhitekture |
| **Oznaka aktivnosti** | A5 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 31.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 1.4.2022 |
| **Trajanje** | 2 dni |
| **Naziv aktivnosti** | Zasnova podatkovnih baz |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Specifikacija shem, tabel in funkcij v bazi podatkov |
| **Opis aktivnosti** | Zasnova podatkovnih baz |
| **Morebitne odvisnosti in omejitve** | Zasnova arhitekture celotne aplikacije (A4) |
| **Pričakovani rezultati aktivnosti** | Načrt zahtev in strukture podatkovne baze |
| **Oznaka aktivnosti** | A6 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 31.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 1.4.2022 |
| **Trajanje** | 2 dni |
| **Naziv aktivnosti** | Zasnova strežniške arhitekture |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Zasnovati natančen načrt postavitve aplikacije v izbrani tehnologiji. |
| **Opis aktivnosti** | Zasnova strežniške arhitekture |
| **Morebitne odvisnosti in omejitve** | Zasnova arhitekture celotne aplikacije (A4) |
| **Pričakovani rezultati aktivnosti** | Načrt postavitve aplikacije na strežniku |
| **Oznaka aktivnosti** | A7 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 30.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 5.4.2022 |
| **Trajanje** | 5 dni |
| **Naziv aktivnosti** | Implementacija zaslonskih mask |
| **Obseg aktivnosti v ČM** | 0.3 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Implementacija zaslonskih mask na podlagi njihove zasnove
| **Opis aktivnosti** | Implementacija zaslonskih mask |
| **Morebitne odvisnosti in omejitve** | Zasnova zaslonskih mask (A3) |
| **Pričakovani rezultati aktivnosti** | Implementirane zaslonske maske. |
| **Oznaka aktivnosti** | A8 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 4.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 12.4.2022 |
| **Trajanje** | 7 dni |
| **Naziv aktivnosti** | Implementacija ogrodja strežniške aplikacije |
| **Obseg aktivnosti v ČM** | 0.4 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Strežnik, ki podpira osnovne zahteve in je pripravljen za razvoj specifičnih funkcionalnosti |
| **Opis aktivnosti** | Implementacija strežnika |
| **Morebitne odvisnosti in omejitve** | Zasnova strežniške arhitekture (A6) |
| **Pričakovani rezultati aktivnosti** | Delujoč osnovni strežnik |
**Oznaka aktivnosti** | A9 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 4.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 21.4.2022 |
| **Trajanje** | 14 dni |
| **Naziv aktivnosti** | Izdelava glavnih funkcionalnosti |
| **Obseg aktivnosti v ČM** | 0.7 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Implementirati vse osnovne funkcionalnosti na strežniku. |
| **Opis aktivnosti** | Implementacija glavnih funkcionalnosti. |
| **Morebitne odvisnosti in omejitve** | Zasnova strežniške arhitekture (A6) |
| **Pričakovani rezultati aktivnosti** | Delujoče osnovne funkcionalnosti na strani strežnika. |
| **Oznaka aktivnosti** | A10 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 4.4.2021 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 11.4.2021 |
| **Trajanje** | 6 dni |
| **Naziv aktivnosti** | Integracija podatkovne baze in sistema za deljenje datotek |
| **Obseg aktivnosti v ČM** | 0.3 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Postaviti in povezati podatkovno bazo, določiti strukturo in implementirati sistem za deljenje datotek. |
| **Opis aktivnosti** | Integracija podatkovne baze in sistema za deljenje datotek |
| **Morebitne odvisnosti in omejitve** | Zasnova podatkovnih baz (A5), Zasnova strežniške arhitekture (A6) |
| **Pričakovani rezultati aktivnosti** | Delujoče podatkovne baze in povezava z aplikacijo |
**Oznaka aktivnosti** | A11 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 12.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 20.4.2022 |
| **Trajanje** | 7 dni |
| **Naziv aktivnosti** | Izdelava chat funkcionalnosti |
| **Obseg aktivnosti v ČM** | 0.4 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Implementirati funkcionalnost za pogovor med uporabniki |
| **Opis aktivnosti** | Izdelava chat funkcionalnosti |
| **Morebitne odvisnosti in omejitve** | Integracija podatkovne baze in sistema za deljenje datotek (A10)|
| **Pričakovani rezultati aktivnosti** | Delujoč chat sistem |
**Oznaka aktivnosti** | A12 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 13.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 15.4.2022 |
| **Trajanje** | 3 dni |
| **Naziv aktivnosti** | Integracija zunanjega APIja |
| **Obseg aktivnosti v ČM** | 0.2 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Integrirati povezavo na zunanji API za upravljanje zunanjih koledarjev |
| **Opis aktivnosti** | Integracija zunanjega APIja |
| **Morebitne odvisnosti in omejitve** | Implementacija glavnih funkcionalnost (A9)|
| **Pričakovani rezultati aktivnosti** | Možnost upravljanja zunanjega koledarja iz naše aplikacije |
| **Oznaka aktivnosti** | A13 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 4.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 21.4.2022 |
| **Trajanje** | 14 dni |
| **Naziv aktivnosti** | Izdelava APIja |
| **Obseg aktivnosti v ČM** | 0.7 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Implementirati API, ki izpostavi vse funkcionalnosti naše aplikacije |
| **Opis aktivnosti** | Izdelava APIja |
| **Morebitne odvisnosti in omejitve** | Zasnova strežniške arhitekture (A6) |
| **Pričakovani rezultati aktivnosti** | Delujoč API |
| **Oznaka aktivnosti** | A14 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 22.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 22.4.2022 |
| **Trajanje** | 1 dan |
| **Naziv aktivnosti** | Testiranje strežniške aplikacije |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Testirati delovanje vseh funkcionalnosti na strežniku ter testiranje APIja |
| **Opis aktivnosti** | Testiranje strežniške aplikacije in APIja |
| **Morebitne odvisnosti in omejitve** | A9, A11, A12, A13, A19 |
| **Pričakovani rezultati aktivnosti** | Testirana funkcionalnost operacij na strežniku in APIja |
| **Oznaka aktivnosti** | A15 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 25.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 26.4.2022 |
| **Trajanje** | 2 dni |
| **Naziv aktivnosti** | Povezava sprednjega dela na API |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Vzpostaviti frontend s povezavo na pripadujoče točke na APIju. |
| **Opis aktivnosti** | Povezava sprednjega dela na API |
| **Morebitne odvisnosti in omejitve** | Implementacija zaslonskih mask (A7), Testiranje strežniške aplikacije (A14) |
| **Pričakovani rezultati aktivnosti** | Polno funkcionalen frontend |
| **Oznaka aktivnosti** | A16 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 27.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 27.4.2022 |
| **Trajanje** | 1 dan |
| **Naziv aktivnosti** | Testiranje celotne aplikacije |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Testirati delovanje aplikacije preko polno funkcionalnega frontenda |
| **Opis aktivnosti** | Testiranje celotne aplikacije |
| **Morebitne odvisnosti in omejitve** | Povezava sprednjega dela na API (A15) |
| **Pričakovani rezultati aktivnosti** | Testirana celotna aplikacija |
| **Oznaka aktivnosti** | A17 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 28.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 28.4.2022 |
| **Trajanje** | 1 dan |
| **Naziv aktivnosti** | Nadgradnja na PWA |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Nadgraditi aplikacijo, da ustreza zahtevam Progressive-Web-App. |
| **Opis aktivnosti** | Nadgradnja na PWA |
| **Morebitne odvisnosti in omejitve** | Testiranje celotne aplikacije (A16) |
| **Pričakovani rezultati aktivnosti** | Naša aplikacija je progresivna |
| **Oznaka aktivnosti** | A18 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 3.5.2022 |
**Predvideni datum zaključka izvajanja aktivnosti** | 4.5.2022 |
| **Trajanje** | 2 dni |
| **Naziv aktivnosti** | Testiranje varnosti. |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Aplikacija je zavarovana proti napadom. |
| **Opis aktivnosti** | Uporaba orodij za testiranje varnosti. |
| **Morebitne odvisnosti in omejitve** | Testiranje nameščene aplikacije (A21) |
| **Pričakovani rezultati aktivnosti** | Aplikacija je varna pred morebitnimi napadi. |
| **Oznaka aktivnosti** | A19 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 4.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 21.4.2022 |
| **Trajanje** | 14 dni |
| **Naziv aktivnosti** | Izdelava dokumentacije |
| **Obseg aktivnosti v ČM** | 0.7 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Izdelati dokumentacijo delovanja celotne aplikacije. |
| **Opis aktivnosti** | Razlaga delujoče kode za lažje vzdrževanje. |
| **Morebitne odvisnosti in omejitve** | Zasnova strežniške arhitekture (A6) |
| **Pričakovani rezultati aktivnosti** | Dobra in uporabniku prijazna dokumentacija. |
| **Oznaka aktivnosti** | A20 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 29.4.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 29.4.2022 |
| **Trajanje** | 1 dan |
| **Naziv aktivnosti** | Namestitev aplikacije |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Zaledni del je uspešno nameščen na strežniku. |
| **Opis aktivnosti** | Namestitev zalednega dela aplikacije na strežnik. |
| **Morebitne odvisnosti in omejitve** | Nadgradnja na PWA (A17) |
| **Pričakovani rezultati aktivnosti** | Uspešna namestitev zalednega dela aplikacije. |
| **Oznaka aktivnosti** | A21 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 2.5.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 2.5.2022 |
| **Trajanje** | 1 dni |
| **Naziv aktivnosti** | Testiranje nameščene aplikacije |
| **Obseg aktivnosti v ČM** | 0.1 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Delovanje aplikacije brez napak (hroščev). |
| **Opis aktivnosti** | Testiranje pripravljene aplikacije, ki je na voljo uporabnikom npr. na Heroku. |
| **Morebitne odvisnosti in omejitve** | Odvisna je od namestitve aplikacije - A20 |
| **Pričakovani rezultati aktivnosti** | Delujoča nameščena aplikacija. |
| **Oznaka aktivnosti** | A22 |
| :-------------------- | :------------------------------- |
| **Predvideni datum pričetka izvajanja aktivnosti** | 21.3.2022 |
| **Predvideni datum zaključka izvajanja aktivnosti** | 4.5.2022 |
| **Trajanje** | 33 dni |
| **Naziv aktivnosti** | Upravljanje projekta |
| **Obseg aktivnosti v ČM** | 1.7 ČM |
| **Seznam ciljev aktivnosti (kaj želite doseči)** | Nemoten potek in pravočasna izvedba projekta. |
| **Opis aktivnosti** | Vodenje, nadzorovanje projekta in usklajevanje članov. |
| **Morebitne odvisnosti in omejitve** | Aktivnost ni odvisna od ostalih aktivnosti. |
| **Pričakovani rezultati aktivnosti** | Uspešno zaključen projekt. |
### 2.3 Seznam izdelkov
| Oznaka izdelka | Ime izdelka | Datum izdaje |
| ---: | :---------------------------- | :---: |
| I1 | Zajete zahteve projekta | 24.3.2022 |
| I2 | Orisana arhitektura in izbran nabor tehnologij | 25.3.2022 |
| I3 | Zasnovane zaslonske maske | 29.3.2022 |
| I4 | Zasnovana arhitektura celotne aplikacije | 30.3.2022 |
| I5 | Zasnovane vse 3 podatkovne baze | 4.4.2022 |
| I6 | Zasnovana strežniška arhitektura | 1.4.2022 |
| I7 | Oblikovane zaslonske maske | 5.4.2022 |
| I8 | Delujoče ogrodje strežniške aplikacije | 1.4.2022 |
| I9 | Delujoče osnovne funkcionalnosti | 21.4.2022 |
| I10 | Integrirana podatkovna baza in integriran sistem za deljenje datotek | 11.4.2022 |
| I11 | Delujoč chat sistem | 20.4.2022 |
| I12 | Integriran zunanji API | 15.4.2022 |
| I13 | Delujoči lastni API | 21.4.2022 |
| I14 | Stestirana in delujoča strežniška aplikacija | 22.4.2022 |
| I15 | Sprednji del uspešno povezan na API | 26.4.2022 |
| I16 | Stestirana celotna aplikacija | 27.4.2022 |
| I17 | Delujoča PWA aplikacija | 28.4.2022 |
| I18 | Zavarovana aplikacija proti napadom | 3.5.2022 |
| I19 | Izdelana dokumentacija lastnega API-ja | 21.4.2022 |
| I20 | Na strežnik nameščena aplikacija | 29.4.2022 |
| I21 | Stestirana nameščena aplikacija | 2.5.2022 |
| I22 | Učinkovito voden projekt | 4.5.2022 |
### 2.4 Časovni potek projekta - Ganttov diagram

### 2.5 Odvisnosti med aktivnosti - Graf PERT

| Aktivnost | Čas trajanja (dni) | Predhodnice |
| :-------- | :----------------- | :---------- |
| A1 | 10 | |
| A2 | 4 | A1 |
| A3 | 6 | A2 |
| A4 | 7 | A1|
| A5 | 4 | A4 |
| A6 | 2 | A5 |
| A7 | 1 | A6 |
| A8 | 6 | A3 |
| A9 | 2 | A8 |
| A10 | 1 | A7 |
| A11 | 4 | A9 |
| A12 | 1 | A11 |
| A13 | 3 | A9 |
| A14 | 1 | A13 |
| A15 | 1 | A10, A12, A14 |
| A16 | 4 | A15 |
| A17 | 2 | A16 |
| A18 | 3 | A17 |
| A19 | 3 | A17 |
| A20 | 2 | A17 |
| A21 | 43 | |
## 3. Obvladovanje tveganj
### 3.1 Identifikacija in analiza tveganj
| Naziv tveganja | Vpliva na | Opis tveganja | Tip tveganja | Verjetnost nastopa tveganja | Posledice nastopa tveganja |
| :------------- | --------- | :------------ | :----------- | :-------------------------- | :------------------------- |
| Podcenjen obseg (T1)| Projekt | Med realizacijo projekta se izkaže, da je projekt kompleksnejši kot smo pričakovali | ocenjevanje | visoka | resne |
| Stopnja zmožnosti popravljanja napak je podcenjena. (T2)| Projekt | Popravljanje napak traja dlje časa od pričakovanega ali pa so same po sebi kompleksnejše. | ocenjevanje | visoka | sprejemljive |
| Konkurenčni produkt (T3)| Posel | Trenutno je v razvoju več konkurenčnih izdelkov, samo najboljši prinaša dodatne točke. | organizacijsko | zelo nizka | sprejemljive |
| Novo vodstvo (T4)| Projekt | Prestrukturiranje podjetja tako, da so za projekt odgovorna različna vodstva. | organizacijsko | nizka | resne |
| Izguba osebja (T5)| Projekt | Član skupine se odloči, da ne bo nadaljeval študija. | ljudje | nizka | katastrofalne |
| Neenotnost razvojne skupine (T6)| Projekt in izdelek | Konflikti v skupini med člani zaradi pogleda na to, kako naj bi delo potekalo; skupina je na robu razpada. | ljudje | zmerna | resne |
| Slab projektni plan (T7)| Projekt in izdelek | Specifikacije aplikacije nejasne; ni jasnih ciljev projekta; razvijalci nimajo dovolj informacij za izvedbo. | zahteve | zelo visoka | katastrofalne |
| Spremembe (T8)| Projekt | Predlagane so spremembe zahtev, ki zahtevajo večjo predelavo | zahteve | visoka | resne |
| Izpad spletnega strežnika (T9)| Izdelek | Izpad strežnika onemogoči delovanje storitve | tehnologija | nizka | katastrofalne |
| Podatkovni vlom (T10)| Izdelek | Podatki uporabnikov so ogroženi | tehnologija | zelo nizka | katastrofalne |
| Okvara strojne opreme (T11)| Projekt | Kritična napaka računalnika člana razvojne skupine; član ne more razvijati. | orodja | zmerna | sprejemljive |
| Programska orodja ne morejo sodelovati celostno (T12)| Projekt | Orodja ne podpirajo ali otežujejo medsebojno integracijo | orodja | visoka | sprejemljive |
### 3.2 Načrtovanje tveganj
| Tveganje | Strategija |
| :-------- | :--------- |
| Slab projektni plan (T7) | Članom razvojne skupine vodja skupine predstavi pomen dobrega načrta. Pripravi krajšo predstavitev nekaj primerov propadlih projektov. Skupaj identificirajo cilje in ključne komponente, ki vodijo do ciljev. |
| Spremembe (T8) | Dobro zajamemo zahteve in jih analiziramo, ter načrt priredimo zahtevam. Če pride do spremembe v zahtevah ocenimo obseg novih zahtev in jih smiselno uvrstimo v časovnico. |
| Podcenjen obseg (T1) | Ne bomo se pripravljali na ta scenarij. Če se zgodi, bomo lobirali pri odgovornih osebah, da smo še začetniki in nismo imeli kje pridobiti izkušenj. COCOMO II zveni lepo, ampak tudi tu lahko precej zgrešimo, če ne znamo izračunati pravih koeficientov. |
| Neenotnost razvojne skupine (T6) | Priprava dobrega načrta projekta je del rešitve. Vodja skupine identificira želje posameznikov in razporedi delo v skladu z njihovimi željami. Uvede se dnevne sestanke ob kavi za povezavo skupine. |
| Izpad spletnega strežnika (T9) | Monitoriranje strežnikov (temperatura, napetost) in uporaba brezprekinitvenega napajanja (V primeru izpada elektrike). V primeru izpada ponovno zaženemo strežnik in testiramo delovanje celotne aplikacije |
| Stopnja zmožnosti popravljanja napak je podcenjena. (T2) | Že v načrtu računamo da razvoj traja dalje kot pričakujemo in s tem skušamo obravnavati to tveganje. |
| Programska orodja ne morejo sodelovati celostno (T12) | Izogibanje nezanesljivemu orodju. Zamenjava programskega orodja. |
| Okvara strojne opreme (T11) | Vnaprej pridobimo rezervno strojno opremo. V primeru okvare le zamenjamo strojno opremo z rezervno. |
| Novo vodstvo (T4) | Pred začetkom projekta se določi kdo prevzame vodstvo v primeru, da se vodja odpove vodenju. |
| Izguba osebja (T5) | Upoštevamo želje in ideje članov razvojne skupine. V primeru izgube podamo razpis za novo delovno mesto in v času iskanja nove osebe porazdelimo delo. |
| Podatkovni vlom (T10) | Da v čimvečji meri preprečimo podatkovne vlome uporabimo najnovejše varnostne tehnologije. Vseeno delamo tudi varnostne kopije vseh podatkov, da omilimo učinke podatkovnega vloma. Sporočimo vsem uporabnikom, da je prišlo do napada in opozorimo za morebitna izpostavljena osebna gesla. |
| Konkurenčni produkt (T3) | Na možnost konkurenčnega produkta se ne bomo ozirali in bomo nadaljevali s projektom po planu, v upanju da hitreje zaključimo projekt in dobimo prednost na trgu. |
## 4. Upravljanje projekta
Delo na projektu bo razdeljeno v dve skupini: frontend in backend. Na zaledju projekta bosta delala Rok in Urh, na podobi pa Jernej in Matevž. Za integracijo med obema bo skrbel Jakob, ki bo prav tako vodja projekta. Delo bomo razdeli s pomočjo orodja Jira, tako da bo vsak vedel kaj so njegove naloge in kako daleč v projektu so ostali člani.
| **Opravilo** | Matevž | Rok | Jernej | Jakob | Urh |
| :----------- | :------ | :------ | :------ | :------ | :------ |
| Zajem zahtev | 20% | 20% | 20% | 20% | 20% |
| Planiranje podatkovne baze | | 20% | | 60% | 20% |
| Planiranje zaledja | | 40% | | 20% | 40% |
| Planiranje čela | 50% | |50% | | |
| Oblikovanje čela | 50% | |50% | | |
| Testiranje in popravljanje čela | 35% |10% |35% |10% |10% |
| Namestitev čela | 50% | |50% | | |
| Razvoj zaledja | | 45% | |10% | 45% |
| Testiranje zaledja | | 50% | | | 50% |
| Namestitev zaledja | | 40% | | 20% | 40% |
| Razvoj klepetalnice | | 50% | | | 50% |
| Testiranje klepetalnice | 20% |20% |20% |20% |20% |
| Razvoj sistema komentarjev |5%| 40% |5% |10% | 40% |
| Testiranje sistema komentarjev | 30% |15% |30% |10% |15% |
| Priprava na integracijo | | | | 100% | |
| Integracijo | |15% | | 70% |15% |
| Celotno testiranje sistema | 20% |20% |20% |20% |20% |
| Dokumentacija | 30%| 10% |30% | 20% | 10% |
| Namestitev | 20% |20% |20% |20% |20% |
| Predstavitev | 20% |20% |20% |20% |20% |
| Projektno vodenje | | | |100% | |
## 5. Predstavitev skupine
**Tine Črnugelj**
Starost 22, zanima ga izdelovanje lepih in uporabniku prijaznih spletnih aplikacij, zato bi rad poglobil znanje tehnologij HTML, CSS (Bootstrap), JavaScript. Izdelane strani pa bo potrebno povezati z zalednim delom. Sodeloval bo še z drugim razvijalcem čelnega dela, Jašo.
**Rok Caserman**
Starost 22, univerzitetni študent na Fakulteti za računalništvo in informatiko, Univerze v Ljubljani. Ima izkušnje s celotnim MEAN stackom, Java EE, SQL in Python. Rad bere dokumentacije in se tako poglobi v podrobnosti. Zaradi zanimanja, veščin in preteklega dela na zalednih sistemih, bo odgovoren za zaledni sistem spletne rešitve. Sodeloval bo s članom, ki prav bo prav tako razvijal zaledje (Urh).
**Jernej Ulčakar**
Starost 21, univerzitetni študent na Fakulteti za računalništvo in informatiko, Univerze v Ljubljani. Najbolj mu ležijo jeziki Java, Python, C++, MATLAB, JavaScript, HTML in CSS. Zainteresira se za oblikovanje in grafično uprizoritev spletne strani, zaradi česar je idealen kandidat za delo na čelnem delu aplikacije. Sodeluje skupaj z Matevžem Andolšekom Peklajom.
**Jakob Udovič**
Starost 21, univerzitetni študent na Fakulteti za računalništvo in informatiko, Univerze v Ljubljani. Pozna delo s HTML, CSS, JavaScript in SQL, vendar bi znanje rad še poglobil. Zanima ga podatkovno rudarjenje in LED lučke. Je zelo kreativen, rad bi se naučil uporabljati najnovejše tehnologije za razvoj programske opreme, kar predstavlja idealne karakteristike za glavnega (in edinega) povezovalca čelnega dela aplikacije z zaledjem.
**Urh Vovk**
Starost 21, univerzitetni študent na Fakulteti za računalništvo in informatiko, Univerze v Ljubljani. Ima izkušnje z MongoDB, Javascript, Typescript, Angular, Express.js, Node.js in HTML ter si želi pridobiti še več znanja na tem področju. Zaradi prej omenjenih izkušenj bo na zalednem delu sodeloval z drugim članom, ki bo razvijal zaledje (Rok).
## 6. Finančni načrt - COCOMO II ocena
### Funkcijske točke
| Tip | Naziv | Obseg | Utež |
| :------ | :------ | :------ | :------ |
| EI | Objava teme | L | 3 |
| EI | Prijava v sistem | L | 3 |
| EI | Kreiranje komentarja | L | 3 |
| EI | Iskanje in filtriranje | L | 3 |
| EI | Klepetalnica | A | 4 |
| EQ | Prikaz profila | L | 3 |
| EQ | Prikaz seznama tem | L | 3 |
| EQ | Prikaz podrobnosti tem |L | 3 |
| EQ | Prikaz mednarodnih člankov | L | 4 |
| EO| Prikaz zaključenih tem s časom| L | 4 |
| EIF | Globalno raziskovalno področje API | L | 5 |
| ILF | Podatkovna baza 1 | L | 7 |
| ILF | Podatkovna baza 2 | L | 7 |
Skupno število funkcijskih točk znaša 51. Če bomo aplikacijo razvijali v JavaScript-u, je predvideno število vrstic 2397.
Za končanje enačbe napor, sta potrebna še parametra B in M, ki smo jih sprva razporedili sami, nato pa še s pomočjo orodja.
### Parameter B
| Naziv | Utež |
| :---- | :--- |
| PREC | 3 |
| FLEX | 4 |
| RESL | 5 |
| TEAM | 4 |
| PMAT | 4 |
S formulo dobimo vrednost parametra B = 1,21.
### Parameter M
| Naziv | Utež |
| :--- | :---|
| PERS | 0,8 |
| PREX | 0,7 |
| RCPX | 1,1 |
| RUSE | 0,7 |
| PDIF | 0,9 |
| SCED | 1 |
| FCIL | 1,2 |
S formulo dobimo vrednost parametra M = 0,47.
### Končni izračun časovne zahtevnosti
Z izračunanimi parametri dobimo oceno Napor = 3,94 ČM in normaliziramo za 70h delavnik na mesec, tako da dobimo 9 ŠM (= 160/70 * 3,94).
Enake podatke smo po najboljših močeh vnesli tudi v orodje [COCOMO II orodja](http://softwarecost.org/tools/COCOMO/) in dobili enake podatke 3.9 ČM = 8,9 ČM. Cena projekta na sliki ne odraža realne cene, ker ni normalizirana.

### Stroški
Stroške dela smo izračunali ob predpostavki, da bomo na projektu delovali sami, delali povprečno 70h na mesec = 1ČM (skladno z navodili LP1, 7.2.2) in si plačali 6€/h. To nas kot podjetje stane 10€ na uro ([Študentski servis](https://www.studentski-servis.com/podjetja/izracun-stroskov)), oziroma 700€ na mesec na osebo. Skupen strošek dela za zaključek projekta je tako 9 * 700€ = 6300€.
Zaradi motečih dejavnikov in timskega duha smo se odločili za najem pisarne. Ta prav tako nudi hiter internet in neomejene prigrizke. Najem coworking pisarne stane 945€ na mesec (cena vsebje prispevek za sedež podjetja). Poleg tega potrebujemo všteti tudi stroške prevoza treh članov do pisarne, ki znaša 88km/dan oziroma 240€ na mesec. Skupni stroški in manjši stroški so navedeni v spodnji tabeli (predpostavimo, da projekt traja 2 meseca), s klikom na naziv lahko pridobite vir za cene.
| Naziv | Cena |
| :--- | :--- |
| Delo | 6300€ |
| Potni stroški | 430€ |
| [Pisarna](https://mladipodjetnik.si/mp-storitve/coworking) | 1908€ |
| [Heroku](https://www.heroku.com/pricing) | 50€ |
| [MongoDB](https://www.mongodb.com/pricing) | 114€ |
| **Skupno** | 8802€ |
#### Ocena stroškov po aktivnostih
| **Oznaka aktivnosti** | A1 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 1.2ČM |
| **Predvideni stroški dela** | 840€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 100€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A2 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.5ČM |
| **Predvideni stroški dela** | 350€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 40€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A3 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.8ČM |
| **Predvideni stroški dela** | 560€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 60€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A4 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.6ČM |
| **Predvideni stroški dela** | 420€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 70€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A5 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.4ČM |
| **Predvideni stroški dela** | 280€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 40€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A6 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.2ČM |
| **Predvideni stroški dela** | 140€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 20€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A7 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.1ČM |
| **Predvideni stroški dela** | 70€ |
| **Predvideni stroški investicij** | 50€ (gostovanje na heroku za 2 meseca)|
| **Predvideni potni stroški** | 10€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A8 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.8ČM |
| **Predvideni stroški dela** | 560€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 60€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A9 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.2ČM |
| **Predvideni stroški dela** | 140€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 20€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A10 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.1ČM |
| **Predvideni stroški dela** | 70€ |
| **Predvideni stroški investicij** | 114€ (gostovanje MongoDB-ja za 2 meseca) |
| **Predvideni potni stroški** | 10€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A11 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.5ČM |
| **Predvideni stroški dela** | 350€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 40€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A12 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.1ČM |
| **Predvideni stroški dela** | 70€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 10€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A13 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.3ČM |
| **Predvideni stroški dela** | 210€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 30€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A14 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.1ČM |
| **Predvideni stroški dela** | 70€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 10€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A15 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.1ČM |
| **Predvideni stroški dela** | 70€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 10€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A16 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.5ČM |
| **Predvideni stroški dela** | 350€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 40€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A17 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.3ČM |
| **Predvideni stroški dela** | 210€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 20€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A18 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.3ČM |
| **Predvideni stroški dela** | 210€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 30€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A19 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.3ČM |
| **Predvideni stroški dela** | 210€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 30€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A20 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.2ČM |
| **Predvideni stroški dela** | 140€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 20€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | A21 |
| :-------------------- | :------------------------------- |
| **Obseg v človek-mesecih** | 0.3ČM |
| **Predvideni stroški dela** | 700€ |
| **Predvideni stroški investicij** | 0€ |
| **Predvideni potni stroški** | 430€ |
| **Predvideni posredni stroški** | 0€ |
| **Oznaka aktivnosti** | **Stroški** |
| :-------------------- | :------------------------------- |
| **A1** | 940€ |
| **A2** | 390€ |
| **A3** | 620€ |
| **A4** | 490€ |
| **A5** | 320€ |
| **A6** | 160€ |
| **A7** | 130€ |
| **A8** | 620€ |
| **A9** | 160€ |
| **A10** | 194€ |
| **A11** | 390€ |
| **A12** | 80€ |
| **A13** | 240€ |
| **A14** | 80€ |
| **A15** | 80€ |
| **A16** | 390€ |
| **A17** | 230€ |
| **A18** | 240€ |
| **A19** | 240€ |
| **A20** | 160€ |
| **A21** | 1130€ |
| | |
| **SKUPAJ** | 7284€ |
To so vsi stroški brez pisarne saj se ta najame na začetku projekta in traja dva meseca, je neodvisna od aktivnosti. Da dobimo končne stroške prištejemo še ceno pisarne (1908€), in dobimo 9192€.
Do odstopanja pride, ker nekatere aktivnosti potekajo sočasno, tako da je bolj pravilna ocena glede na delovne dni(43 delovnih dni * 10€/dan za prevozne stroške). Tako je končna bolj podobna prvotni oceni.
## Reference
[1]: R. H. Thayer, E. Yourdon, **Software Engineering Project**, IEEE Computer Society, Los Alamitos, 2001.
[2]: Boehm, Barry, C. Abts, B. Clark, S. D.-C. E. Horowitz, R. Madachy, D. Reifer, R. Selby, B. Steece, **COCOMO II Model Definition Manual**, 2000.
[3]: P. Barnes, **Software Costs Estimation In Agile Project Management**, https://www.toptal.com/agile/software-costs-estimation-in-agile-project-management, 9.3.2021
#### Načrtovalski vzorci
Načrtovalski vzorci, ki smo jih uporabili:
##### Singleton
- *Problem*
Naš sistem bo podpiral donacije, ki predstavljajo ranljiv del aplikacije (napadi na sistem). Potrebujemo nek statični objekt.
- *Rešitev*
Za kontroler K-Donacije bi uporabili **[Singleton](https://refactoring.guru/design-patterns/singleton)** načrtovalski vzorec s konstruktorjem privatnega tipa. Singleton skrbi, da imamo vedno največ eno instanco razreda. Te instance ne moremo "povoziti".
##### Mediator
- *Problem*
Ko se gost uspešno registrira, se mora za tem še prijaviti in tako ponovno vnesti podatke, kar pa je zamudno in nezaželeno za uporabnika.
- *Rešitev*
Uporabimo načrtovalski vzorec **[Mediator](https://refactoring.guru/design-patterns/mediator)**, ki reši problem prenašanja podatkov med zaslonskimi maskami. Uporabnik najprej vnese podatke za registracijo, nato pa ga kontroli razred K-PrijavaRegistracija preusmeri na stran za prijavo, kjer samo še potrdi, da bi se rad prijavil v sistem.
##### Facade
- *Problem*
V aplikaciji imamo veliko tipov uporabnikov: Občan (potrjen, nepotrjen), Admin, Upravitelj občine, Gost oz. obiskovalec. Pametno bi bilo imeti poenostavljen razred (uporabnika), ki posplošuje vse zgoraj navedene uporabniške vloge.
- *Rešitev*
Problem rešimo s pomočjo načrtovalskega vzorca **[Facade](https://refactoring.guru/design-patterns/facade)**. Razred Oseba uporabimo kot vmesnik kompleksnejšim, ki podpira osnovne funkcionalnosti uporabiških vlog.
##### Strategy
- *Problem*
V sistemu imamo možnost nalaganja slik, ko ustvarjamo nov predlog. Ker imamo dva načina nalaganja slik (direktno fotografiranje in nalaganje slik iz naprave) se lahko pojavijo težave pri implementaciji in nadaljnem vzdrževanju.
- *Rešitev*
Uporabimo načrtovalski vzorec **[Strategy](https://refactoring.guru/design-patterns/strategy)** oz. abstrakcijo razredov in dobimo 2 podrazreda (2 strategiji) znotraj kontrolerja K-Predlog, tako sta strategiji zdaj neodvisni. S tako neodvisnim kontekstnom lahko pri nadalnjem razvoju aplikacije lažje dodajamo nove strategije nalaganja slik.
### Dodatni diagrami za uporabniške vloge
<details>
<summary>Potrjen obcan</summary>
![DS]
(https://www.google.com/)
</details>