Akce
Specifikace požadavků¶
Minimální požadavky¶
- Implementace datových pump
- Aplikace musí obsahovat datové pumpy pro minimálně dva různé ALM nástroje, a to dle následujícího pořadí priorit:
- Jira + Git
- GitHub
- Redmine + GitLab
- Další ALM nástroje
- Pokud pumpa potřebuje stáhnout repozitář lokálně, po dokončení dolování by se měl smazat.
- Pumpa pro GitHub může být realizována spuštěním pumpy pro Git s následným doplněním potřebných dat.
- Pumpy by měly umožňovat zakomponovat různé
project_instance
(Redmine, GitLab) do již vydolovaného projektu- Tím se rozšíří sada lidí a identit (buďto se identity přiřadí k již existujícím lidem z vydolovaného
project_instance
, nebo se vytvoří nové) - Dále to umožní propojení mezi ticketama a commity.
- Při přidávání nové instance projektu je nutné identifikovat propojující dotazy a propojit je se stávajícími daty.
- Nutné projet všechny commit messages již uložených instancí -> nutné udělat manuálně zpětně
- Při spojování 4 ALM dohromady, u přidávání posledního se projdou commit messages všech 3 předchozích
- např. Git nepodporuje zmiňování commitů mezi sebou, GitHub ano.
- Tím se rozšíří sada lidí a identit (buďto se identity přiřadí k již existujícím lidem z vydolovaného
- Kvalitní implementace pump pro snadné rozšíření o další ALM nástroje.
- Vysoká úroveň abstrakce + využití rozhraní.
- Všechny části kódu musí být zdokumentovány (ekvivalent JavaDoc) v anglickém jazyce.
- Aplikace musí obsahovat datové pumpy pro minimálně dva různé ALM nástroje, a to dle následujícího pořadí priorit:
- Mapování dat do systému SPADe
- Data budou přenášena do databáze SPADe na základě definice poskytnuté zadavatelem.
- Tabulky databáze není možné jakkoliv upravovat.
- Systém musí umět řešit možné kolize mapování sloupců mezi různými ALM nástroji.
- U nástrojů jako Git a GitHub může docházet k rozdílům v interpretaci tagů a release, přičemž ve SPADe ne každý tag nutně znamená release.
- V těchto případech se použijí defaultní hodnoty dle uvážení vývojového týmu.
- Systém bude umožňovat sloučení více identit uživatele do jednoho člověka.
- Data budou přenášena do databáze SPADe na základě definice poskytnuté zadavatelem.
- Grafické uživatelské rozhraní (GUI)
- GUI umožní uživateli specifikovat repozitář a další parametry pro dolování dat z ALM nástrojů.
- Autentizace a autorizace pro dolování soukromých projektů (přihlašovací formulář nebo API klíč).
- Údaje budou patřičně zabezpečeny.
- Uživatel bude průběžně informován o stavu dolování dat, GUI nesmí "zamrznout".
- V ideálním případě by se měl zobrazit zbývající čas těžení (zatím není zcela jasné, jak se určí).
- Při probíhajícím těžení se zakáže pumpování dalšího projektu, tj. pumpy nemusí umět pracovat paralelně, pouze sekvenčně.
- GUI bude napsáno v angličtině.
- Před těžením se GUI zeptá, jestli bude těžit nový projekt nebo jestli bude přidávat data do existujícího projektu
- Implementace přes CheckBox (chci/nechci přidávat do exitujícího) + SelectBox (když chci, do jakého konkrétně)
- Další požadavky na GUI (nepovinné)
- Uživatel bude mít možnost přepnout jazyk do češtiny.
- V GUI bude možné zadat frontu repozitářů k sekvenčnímu dolování.
- Při zadání URL root se zobrazí všechny projekty, které lze těžit.
- Např. když
url/projects
obsahuje projektyurl/projects/aswi2024
aurl/projects/aswi2025
, GUI nabídne těženíaswi2024
aaswi2025
- Např. když
- Pseudonymizace citlivých údajů
- Aplikace bude umožňovat uložení citlivých údajů do databáze pod pseudonimizovaným názvem podle přepisovací tabulky.
- Mezi citlivé údaje patří:
- Název projektu
- Popisky ticketů
- Autoři
- Commit messages
- Názvy artefaktů
- Obsah artefaktů (pouze plaintext, ne PDF/Word)
- Aplikace na vyžádání vygeneruje přepisovací tabulku, která mapuje pseudonymizované texty na skutečné.
- Tabulka bude ve formátu XML nebo JSON.
- Podle této tabulky bude možné převést pseudonymizovaná data zpět do jejich původní podoby
- Dotahování nových dat musí s tabulkou také umět pracovat (např. přidání nového uživatele)
- Na konci těžícího procesu si uživatel bude moci vybrat, jestli data (a které konkrétně) chce pseudonimizovat
- Pro analýzy anti-patternů je u artefaktů důležité uchovat informaci o počtu znaků.
- V databázi není možné nahradit celý plaintext jedním číslem značící počet znaků.
- Místo konkrétního plaintextu může být do databáze uložen stejně dlouhý dummy text (Lorem Ipsum).
- Nutné důkladněji promyslet, současná databáze na pseudonimizaci obsahu artefaktů není stavěná.
- Uživatelsky mapovaná data
- Uživatel bude mít možnost změnit defaultní mapování údajů v MySQL databázi.
- Místo dolování všech dat projektu z ALM si bude moci uživatel zvolit libovolnou podmnožinu sloupců k dolování (např. pouze commity, commity + issues, main branch).
- GUI by mělo obsahovat několik scénářů, podle kterých by uživatel mohl chtít dolovat data.
- Uživatel bude moci specifikovat časové období, ze kterého chce data dolovat.
- Uživatel bude moci zvolit časové rozmezí na úrovni dnů, hodin a minut.
- Den bude povinný, hodiny a minuty nebudou povinné.
- Validní formáty:
- Od 19.2.2025 do 11.3.2025
- Od 19.2.2025 15:35 do 11.3.2025 10:40
- Pokud uživatel specifikuje pouze dny a v ALM bude několik záznamů k dolování, dolovat se bude vždy od nejstaršího záznamu (počátek) až po nejnovější záznam (konec).
- Další rozšíření bude umožňovat dolování dat od posledního data pumpování a od konkrétního milníku (např. release).
- CICD nasazení
- Pumpy by měly být snadno nasaditelné s využitím CICD na GitLab.
- Měla by být možnost připojení na vlastní reálnou databázi, nebo na databázi běžící v Dockeru.
- Na tuto reálnou databázi se následně mohou napojit i jiné nastroje
Mimofunkční požadavky¶
- Architektura projektu
- Datové pumpy a GUI budou navrženy tak, aby je bylo možné implementovat nezávisle na sobě.
- Mezi pumpami a GUI bude využito API.
- Technologie pro backend a frontend jsou volitelné, přičemž po domluvě se použije SpringBoot pro backend a React pro frontend.
- Systém musí používat databázi MySQL.
- Pro snadnou přenositelnost projektu je vhodné využít kontejnerizaci (Docker nebo Podman).
- Cílové prostředí není specifikováno.
- Možnosti nasazení zahrnují lokální spuštění nebo server na CIV.
- Projekt se bude skládat z následujících částí:
- Datové pumpy a GUI budou navrženy tak, aby je bylo možné implementovat nezávisle na sobě.
- Testování
- Testování bude primárně zaměřeno na funkčnost datových pump a GUI bude testováno pouze okrajově.
- Zatím není blíže specifikováno, co a jak konkrétně bude třeba testovat.
- Druhy testů:
- Jednotkové
- End-to-End
- Integrační
- Kód bude testován staticky přes CICD pipeline na GitLab
- Dokumentace
- Nedílnou součástí projektu je dokumentace, která bude zahrnovat následující dokumenty:
- Programátorská dokumentace (popis kódu, architektura, možnosti rozšíření)
- Instalační manuál včetně nastavení prostředí (Docker, MySQL)
- Uživatelský manuál (popis práce s pumpami, vysvětlení GUI)
- Use case návody (konkrétní scénáře použití aplikace)
- README na repozitáři GitLab (základní informace o projektu)
- Všechny zmíněné dokumenty budou psány v anglickém jazyce, protože se jedná o školní projekt s využitím na mezinárodní úrovni.
- Nedílnou součástí projektu je dokumentace, která bude zahrnovat následující dokumenty:
- Optimalizace rychlosti těžení
- V kódu by měla být snaha optimalizovat rychlost těžení.
- Na datové pumpy nejsou kladeny konkrétní požadavky na maximální dobu těžení.
- Hlavně z toho důvodu, že velikost a složitost dolovaných dat může být libovolná.
Use cases (TODO)¶
- UC1 Dolování dat z konkrétního ALM nástroje
- Na základě uživatelovo definice se provede dolování dat z vybraného ALM nástroje (např. Git, Jira, GitHub).
- UC2 Hard delete
- Smaže projekt z databáze včetně všech jeho náležitostí (veškerá data a metadata spojená s projektem budou trvale odstraněna).
- UC3 Soft delete
- Smaže projekt z databáze s uchováním některých metadat (např. URL), která mohou sloužit pro případnou obnovu projektu.
- UC4 Opětovné těžení smazaného projektu (platí pouze pro soft delete)
- Tato možnost je dostupná pouze pro soft delete. Pokud byl projekt smazán pouze částečně, bude možné opětovně provést dolování dat a obnovit projekt s jeho aktuálními údaji.
- UC5 Nahrání změn v projektu
- Aktualizuje stávající záznamy v databázi podle nových dat.
- Bude provedena aktualizace existujících záznamů a zároveň se přidají nové záznamy a odstraní se ty, které již neexistují.
- UC6 Uživatelské mapování
- Uživatel si bude moci přes GUI zvolit, jak mapovat nejednoznačné sloupce do SPADe databáze (tag se může namapovat na tag/release)
- UC7 Pseudonimizace dat
- Jaká políčka podporují pseudonimizaci, jak se vytváří přepisovací tabulka, jak je to zapojené do GUI, ...
Autor: Štěpán Faragula
Datum: 1.4.2025
Stav: aktualizováno podle poslední schůzky se zadavatelem
Aktualizováno uživatelem Štěpán Faragula před 9 dny(ů) · 9 revizí