Projekt

Obecné

Profil

Vize » Historie » Verze 23

Petr Štěpánek, 2023-03-18 11:51

1 4 Petr Urban
h1. Popis a cíle frameworku SPADe
2 1 Petr Urban
3 4 Petr Urban
h2. Popis stávajícího SPADe frameworku
4 1 Petr Urban
5 4 Petr Urban
Během projektu vývoje softwaru se projektový manažer snaží vyhnout špatným praktikám a anti-vzorům, aby tak předešel případnému snížení pravděpodobnosti úspěšného dokončení projektu. Některé špatné praktiky však
6
na první pohled nemusí být zřejmé a k jejich odhalení může dojít až v případě, kdy už významně negativně ovlivnily průběh projektu. Tento problém
7
by mohla řešit automatická detekce špatných praktik a anti-vzorů už v jejich počáteční fázi. Díky tomu by měl projektový manažer prostor adekvátně
8
zareagovat. (Petr Štěpánek, 2022)
9 1 Petr Urban
10 4 Petr Urban
V současné době neexistuje komerční nástroj, který by v projektových
11
datech prováděl automatickou detekci špatných praktik nebo anti-vzorů nezávisle na použitém ALM nástroji. Tento problém je předmětem projektu
12
Katedry informatiky a výpočetní techniky (KIV) Fakulty aplikovaných věd
13
(FAV) Západočeské univerzity v Plzni (ZČU), kde je vyvíjen framework
14
Software Anti-pattern Detector (SPADe).
15
Hlavní funkčností frameworku SPADe je těžba dat ze softwarových projektů uložených v různých ALM nástrojích a jejich transformace do unifikované struktury v datovém skladu. Nad naplněným datovým skladem je
16
následně umožněno provádět datové analýzy zjišťující přítomnost událostí,
17
vzorců chování, konceptů a metod. Zvláštní pozornost je věnována zejména
18
přítomnosti špatných praktik a anti-vzorů.
19 1 Petr Urban
20 23 Petr Štěpánek
!clipboard-202303181251-do5zh.png!
21
22
23 4 Petr Urban
h2. Cíle
24 1 Petr Urban
25 4 Petr Urban
!clipboard-202303071647-yhpvy.png!
26
[obr. 1]
27
28
Cílem je rozšířit framework SPADe, konkrétně: detektor, webové rozhraní a databázi, o několik dalších aplikací, přičemž každá by měla na starost konkrétní věc. Konkrétně detektor a webová aplikace jsou v současné době spojeni do jedné aplikace (monolit), který vznikl v rychlosti pod vedením Ondřeje V. My tento monolit chceme rozdělit do MVC architektury, tzn. využít Java Spring Boot jako RestAPI a ReactJS na vývoj samotné webové aplikace, která by s Javou komunikovali pomocí RestAPI.
29
30 6 Petr Urban
Nadále aplikace nemá žádnou autentizaci. Cílem je připravit takovou (nejspíše) službu, která bude mít abstraktní rozhraní (mj. bridge), který by sloužil jako připojení pro jiné autentizační služby. Zatím by autentizační služba byla vcelku primitivní a fungovala by s daným rozhraním. Komplexnější framework typu Keycloak, google OAuth apod. by se řešilo na úrovni diplomové práci mimo ASWI/TSP.+.
31 4 Petr Urban
32
Při migraci detektoru pouze na RestAPI je cílem i zavést tkz. kontraktové testy. Jsou to jednotkové testy využívající několik knihoven přímo od springu, které vytvářejí stuby z daných předpisů (swagger) a poté se spouštějí s cílem otestovat, zda neproběhla žádná změna v žádném z kontrolerů, která by ovlivnila výstup endpointu(ů).
33
34
35 16 Václav Hrabík
V průběhu implementace by byla vize i taková, že bychom zkusili změnit databázi z MySQL na MS SQL Server, a to kvůli mnoha výhodám, které má oproti MySQL. Nicméně je nutné vůbec zjistit, zda s touto DB bude jednoduchý nasazení potom v CI/CD apod.
36 1 Petr Urban
37 16 Václav Hrabík
38
h1. Specifikace požadavků
39
40
# Změna současné architektury na MVC
41
# Přidání správy uživatelů 
42
# Zavedení kotraktového testování
43
# Přidání možnosti jednoduchého nasazení produktu
44
# Kompletní a ucelená dokumentace produktu
45
46 4 Petr Urban
h1. Hrubý plán projektu
47
48 7 Petr Urban
49 11 Petr Urban
h2. Iterace
50 7 Petr Urban
51
*Iterace vycházejí z pravidel definovaných v [[Interní_konvence]]*
52
53 8 Petr Urban
> h3. 1. iterace:
54 1 Petr Urban
>> * Schůzka se zadavatelem a mentorem, dosazení LCO milníku, příprava nástrojů pro vedení projektu, domlouvání technologií, rozdělení prací a diskuze nad interními konvencemi při vedení projektu, *rozchození současného projektu* a sepisování veškerých návodů do wiki.
55 22 Václav Hrabík
>> * Začátek: 27. 02. 2023
56 21 Václav Hrabík
>> * Konec:   13. 03. 2023
57 7 Petr Urban
58 8 Petr Urban
> h3. 2. iterace:
59 10 Petr Urban
>> * Upravit strukturu projektu na moduly. Každý modul bude představovat pod-aplikaci. 
60
>> * Vytvořit /v2/ strukturu aplikace tak, abychom mohli začít připravovat RestAPI pro front end aplikaci a došlo i k zachování původní funkcionality. Zároveň vytvořit strukturu aplikace, která se bude využívat poté dále provoláváním například z ReactJS aplikace (mít připravené alespoň nějaké základní endpointy)
61
>> * Připravit materiály (a důkladně je dokumentovat) na studium ReactJS aplikace. Pokusit se vytvořit pseudoprojekt, který by uměl komunikovat s připravenými endpointy. Alespoň je provolávat a získávat z toho pseudo-data
62
>> * Začít připravovat technickou dokumentaci. Nejlépe v AEP6 formátu.
63
>> * Ladit dokumenty, wiki, interní dokumenty a obecně všechny věci týkající se vedení projektu.
64 1 Petr Urban
>> * Upravovat technické návrhy, vymýšlení návrhů na možné změny infrastruktury a architektury.
65
>> * Dokončení vizí obecně (to znamená mít hotový seznam rizik, stakeholders apod.)
66 17 Václav Hrabík
>> * Začátek: 14. 03. 2023
67
>> * Konec:   27. 03. 2023
68 7 Petr Urban
69 8 Petr Urban
> h3. 3. iterace:
70 10 Petr Urban
>> * mít rozběhané všechny potřebné technologie, připravené prostředí a začít na vývoji.
71
>> * z technických návrhů začít připravovat službu na autentizaci. Připravit rozhraní (nejlépe bridge), alespoň template. Připravit DB strukturu pro uživatele, nejlépe i pro aktuální konfigurační .json soubory. 
72
>> * dosažení milníku LCA
73 1 Petr Urban
>> * připravit kontraktové testy, strukturu na ně, a naučit se technologii spring-cloud-contracts. To znamená: začít dokumentovat endpointy do swagger.yaml souboru (předpis pro služby) a připravit všechny potřebné struktury k tomu, aby byly testy (alespoň jejich základní kostry) spustitelné.
74
>> * lazení technické dokumentace
75 17 Václav Hrabík
>> * Začátek: 28. 03. 2023
76
>> * Konec:   10. 04. 2023
77 7 Petr Urban
78 8 Petr Urban
> h3. 4. iterace:
79 10 Petr Urban
>> * lazení technické dokumentace
80
>> * refaktor původního kódu, odstraňování přebytečných věcí a snaha dostat logické věci do databáze místo z konfiguračních souborů.
81
>> * dotažení kontraktových testů
82 1 Petr Urban
>>> * Mít dodělané potřebné endpointy v controlleru, které se budou využívat ve webové aplikaci.
83
>> * Rozmýšlení nad CI/CD, případně studium technologií
84 17 Václav Hrabík
>> * Začátek: 11. 04. 2023
85
>> * Konec:   24. 04. 2023
86 7 Petr Urban
87 8 Petr Urban
> h3. 5. iterace:
88 7 Petr Urban
>> * dotažení webového rozhraní
89 1 Petr Urban
>>> * Hotová stránka about, doplnit o metadata, povýšit verzi aplikace, hotová stránka main page a případně i další dle zvážení.
90
>> * Funkční (spustitelné) kontraktové testy, které budou procházet. Obecně vytváření jednotkových testů na nový vývoj a klikací testy na webové rozhraní.
91 17 Václav Hrabík
>> * Začátek: 25. 04. 2023
92
>> * Konec:   08. 05. 2023
93 10 Petr Urban
94
> h3. 6. iterace:
95 9 Petr Urban
>> * uživatelská příručka, 
96 15 Václav Hrabík
>> * funkční release,
97
>> * technická dokumentace alespoň z části hotová
98 1 Petr Urban
>> * dokončení administrativních záležitostí
99
>> * předání zákazníkovi.
100 17 Václav Hrabík
>> * Začátek: 09. 05. 2023
101
>> * Konec:   22. 05. 2023
102 1 Petr Urban
103
h1. Stakeholders
104 18 Václav Hrabík
105 16 Václav Hrabík
 * Petr Pícha (zákazník)
106
 * Petr Urban, Petr Štěpánek, Jiří Trefil a Václav Hrabík (vývojářský tým)
107
 * Adam Šmucr (bakalářská práce)
108
 * manažeři, výzkumníci v SW vývoji, sami vývojáři (potencionální uživatelé)
109 1 Petr Urban
110
h1. Seznam rizik
111
112
h2. Technická rizika
113 18 Václav Hrabík
114 16 Václav Hrabík
 * Neznalost původní architektury
115
 * Neznalost používaných frameworků
116 15 Václav Hrabík
117
h3. Řešení technických riziky
118 18 Václav Hrabík
119 16 Václav Hrabík
 * Řádné zaškolení a prostudování architektury
120
 * Řádné zaškolení a prostudování manuálů a vyzkoušení si principů na testovém projektu
121 15 Václav Hrabík
122
h2. Časová rizika
123 18 Václav Hrabík
124 16 Václav Hrabík
 * Velká vytíženost vývojářského týmu v ostatních předmětech
125
 * Nemoci, lékařské zákroky
126
 * Velikonoce
127 15 Václav Hrabík
128
h3. Řešení časových rizik
129 18 Václav Hrabík
130 16 Václav Hrabík
 * Pracovat postupně, průběžně a časově efektivně
131
 * Ihned po zjištění události oznámit týmu, aby se na to mohlo ihned reagovat
132
 * neslavit velikonoce :D