Projekt

Obecné

Profil

Iterace 3 zadavatel dotazy 2 » Historie » Verze 6

Štěpán Faragula, 2025-04-01 14:25
doplnění požadavků

1 1 Štěpán Faragula
h1. 3. iterace - Schůzka se zadavatelem ohledně technických dotazů 2
2
3
----
4
5
h3. Informace o schůzce
6
7
* *Datum: 1.4.2025* 
8 5 Štěpán Faragula
* *Čas: 10:00 - 11:00*
9 1 Štěpán Faragula
* *Forma: online přes Teams*
10
11
h3. Účastníci:
12
13
* Bc. Jakub Pavlíček, jpvlck@students.zcu.cz
14
* Bc. Štěpán Faragula, farag844@students.zcu.cz
15
16
h3. Poznámky ze schůzky
17
18
Zeptali jsme se na dotazy:
19 3 Štěpán Faragula
# Jak máme uložit data do tabulky <code>project</code>? Je <code>startDate</code> datum prvního commitu?
20
** Ano, <code>startDate</code> je datum prvního commitu.
21
** Ne každé ALM má svůj vlastní koncept pro startdate, máme vzít jakékoliv první datum čehokoliv (první commit / první změna v projektu čehokoliv)
22
*** <code>startDate</code> máme uložit na konci dolování až po tom, co budeme znát všechny <code>work_item</code> a <code>configuration</code>
23
*** Na konci vybereme položku s nejnižší hodnotou
24
# V tabulce <code>work_unit</code> je atribut <code>progress</code> nastavený na NOT NULL, jakou hodnotu zde máme nastavit pro GitHub pumpu?
25
** Máme nastavit 0, tak jak děláme teď
26
# Máme dodržovat strukturu dat v ukázkových datech? Např. že URL GitHub projektu končí koncovkou <code>.git</code> či název <code>project_instance</code> obsahuje i datum.
27
** Je to jedno, ale u Git pumpy to dává smysl, u GitHub pumpy to může být jinak
28
*** Dříve bylo nutné zadat .git kvůli knihovně JGit, protože to procházelo Git pumpou, když se repository muselo stáhnout na lokál
29
** Datum u <code>project_instance</code> = datum těžení (nemusíme vyplňovat, sloužilo pro debug, můžeme ignorovat)
30
# Můžeme v tabulce <code>project_instance</code> do atributu <code>description</code> dát text z About na GitHubu? Tento text je uložen v atributu <code>description</code> tabulky <code>project</code>, takže bychom ho ukládali i zde (tj. <code>project_instance.description</code> by byl stejný jako <code>project.description</code>).
31
** Může být v obojím
32 6 Štěpán Faragula
** Otázka, jestli dávat podle délky (nejdelší popis je správný), nebo přidávat k existujícím -> víc detailnější
33 3 Štěpán Faragula
*** Na <code>description</code> nebude žádná analýza viset, jde spíš o orientační záznam a lepší vědět co nejvíce informací (appendování)
34 4 Štěpán Faragula
** <code>project_instance</code> může mít každá jiný název, u těch se vezme nejdelší možné jméno (dobrá heuristika, fungovalo dříve)
35 3 Štěpán Faragula
# V tabulce <code>role</code> jsou uloženy role (v případě GitHub repozitáře), které se nepoužívají, např. documenter, tester apod., máme je tedy také vždy vytvářet? Můžeme v GitHub pumpě mapovat roli <code>Contributor</code> na SPADe <code>Developer</code>?
36
** Ano, je to tam z důvodu, když se chtějí lidi po těžení přemapovat
37 6 Štěpán Faragula
*** Člověk reálně ví, jaké role zastává a měli bychom umožnit přemapování dat, když už budou v databázi a budou se nad nimi dělat analýzy
38
** I u ostatních enumů bychom měli vytvářet všechny
39 3 Štěpán Faragula
*** Dává smysl u stavů, resolutions
40
*** Priority nejspíše ne
41
** Contributor a developer dává smysl
42
# Máme počítat s tím, že Git pumpa se bude spouštět také na lokálním repozitáři, tj. bez zadaného URL?
43 6 Štěpán Faragula
** Není pro to rozumný usecase, i kdyby chtěl uživatel těžit na lokále, tak repozitář spíš zveřejní online a vytěží
44 3 Štěpán Faragula
*** Důvod: na lokále jsou necommitované změny a ty nás nezajímají
45 1 Štěpán Faragula
# U Git pumpy, do jaké tabulky máme ukládat změny souborů (tj. smazán, přidán, upraven)? Co všechno by měla Git pumpa umět? Naše zatím umí dolovat: <code>Identity</code>, <code>Person</code>, <code>Commit</code>, <code>Tag</code>, <code>Branch</code>, <code>Project</code>, <code>ProjectInstance</code> a <code>ToolInstance</code>.
46 3 Štěpán Faragula
** work_item_change -> atribut name
47 6 Štěpán Faragula
** U čistě gitové pumpy není nic jiného, co by se dalo těžit, takhle stačí
48 3 Štěpán Faragula
** Configuration person relation se dá najít přes parsování řádků na commit message
49
*** Lze se spoléhat na formát, kde je na konci commitu je "Reviewed by: ...", můžeme splitnout dvojtečkou a vzít člověka
50
# V GitHub pumpě, jak máme těžit tabulky <code>iteration</code>, <code>phase</code>, <code>milestone</code>? U <code>iteration</code> a <code>phase</code> jsou v ukázkových datech stejná data, proč? V <code>milestone</code> není nic, proč? Když GitHub milestone nemá žádný issues, máme milestone i tak těžit?
51
** Data u <code>phase</code> a <code>milestone</code> jsou stejné kvůli testům
52
** U těchto dvou položek je lepší je dávat do iterace, protože to více odpovídá skutečnému kontextu.
53
*** Vše dáme do iterace, zbytečné dávat data do obou
54
** Milestones neřešíme vůbec
55
*** Velmi zřídka se dá najít koncept v ALM který by jim odpovídal
56
*** Spíše odpovídá popisu na Wiki a to je moc složitý koncept těžení
57
*** Uživatel si dodefinuje sám
58 6 Štěpán Faragula
** Když GitHub nemá issues, i tak to máme těžit, je to zajímavá informace 
59 1 Štěpán Faragula
# Když ukládáme časy do tabulek, máme vždy používat časová pásma těch akcí, nebo naše? Tj. <code>issue.createdAt() = "Mon Jun 01 19:10:43 CEST 2020"</code> -> <code>“2020-06-01T19:10:43Z"</code> s Timezone, nebo <code>"2020-06-01T17:10:43Z"</code> bez Timezone (tj. -2 hodiny).
60
** Bez timezone a vše máme převést na UTC
61
** Lidé mohou commitovat z různých timezone, takže je potřeba standarzidovat
62
# Jaký význam má relace mezi <code>work_item</code> a <code>configuration</code>?
63
** id w_i = id configuration
64
*** Relace 1:1
65 6 Štěpán Faragula
** <code>configuration</code> je jeden z typů work itemu (speciální typ work_item)
66
*** <code>configuration</code> je rozšíření <code>work_item</code>, stejně jako <code>work_unit</code> je rozšíření <code>work_item</code>
67
** <code>configuration</code> = změna ticketů/artefaktů
68
** <code>commited_configuration</code> = worklog (nutné rozlišovat kdy se vytvořil záznam a kdy se strávil čas, může být i zpětně)
69
** ve SPADe PDF je hierarchická struktura mezi jednotlivými typy <code>configuration</code>
70
71
Dále jsme se bavili o schématu architektury systému
72
* High-level má dobré schéma, dále to chce lépe popsat systém uvnitř Docker kontejneru (udělat nové, detailnější schéma)
73
** Bude tam popis naší abstraktní třídy na pumpy
74
*** Popis jednotlivých tříd a rozhraní, pak jak jsou implementovány v jednotlivých pumpách
75
*** DAO vrstva
76
** Můžeme tam zanést i věci co se budou dělat v TSP2
77
*** Modul na pseudonimizaci, modul na čtení konfigurací a na těžení jednotlivých konceptů
78
* Se zadavatelem jsme se dohodli, že *dosavadní architektura je pro tuto iteraci dostačující*, detailnější pohled můžeme udělat v další iteraci
79
80
Poté nám přidal zadavatel nový požadavek týkající se způsobu pumpování a také GUI
81
* Pumpy by měly umožňovat zakomponovat různé <code>project_instance</code> (Redmine, GitLab) do již vydolovaného projektu
82
** Tím se rozšíří sada lidí a identit (buďto se identity přiřadí k již existujícím lidem z vydolovaného <code>project_instance</code>, nebo se vytvoří nové)
83
*** *Pozor*, lidé jsou připojeni k <code>project</code> a ne k <code>project_instance</code>
84
** Dále nám to i umožní propojení mezi ticketama a commitama
85
*** Když dotahujeme další instanci tak musíme dohledávat propojující dotazy
86
*** Nutné projet všechny commit messages již uložených instancí -> nutné udělat manuálně zpětně
87
**** Kdybychom spojovali 4 ALM dohromady, u přidávání posledního projdeme commit messages všech 3 předchozích
88
*** Odkazy na tickety se mohou vyskytovat např. u Redmine i v popisu a komentářích
89
**** Zachyceno v tabulce <code>work_item</code> odkazem sama na sebe (odkaz ticket -> ticket)
90
**** Vše se propojí v tabulce <code>project</code>
91
* GUI by mělo umožňovat 
92
** Před těžením se zeptá, jestli bude těžit *nový projekt* nebo jestli bude *přidávat do existujícího projektu*
93
*** Implementace přes CheckBox (chci/nechci přidávat do exitujícího) + SelectBox (když chci, do jakého konkrétně)
94
* Nové požadavky by bylo *vhodné zprovoznit do konce TSP1* v základní verzi, funkcionalitu *můžeme však přesunout do TSP2*
95
* Důležité je zdokumentovat, co všechno jsme zprovoznili do konce TSP1
96
97
Nakonec ještě přibyl požadavek na CICD
98
* Měla by být možnost připojení na vlastní reálnou databázi místo dockerizované
99
* Důvod: na tuto reálnou databázi se následně mohou napojit i jiné nástroje
100
* Tuto funkcionalitu máme naplánovat *až na TSP2*, zatím nedává smysl
101 2 Štěpán Faragula
102 1 Štěpán Faragula
----
103
104
Autor: Štěpán Faragula
105
Datum: 1.4.2025
106
Stav: hotový