Checklist: Audit projektu

Abychom mohli držet co nejvyšší možnou kvalitu našich projektů, vytvořili jsme tento checklist, který zajistí, že se projekt nepotýká s nějakým zapomenutým nedostatkem, jako například chybějící části dokumentace, nebo bezpečností nedostatky.
Checklist je součástí každé wiki dokumentace a všichni členové týmu do něj můžou průběžně nahlížet a aktualizovat ho. Samozřejmě každý projekt je specifický a ne každá položka na checklistu musí být relevantní pro všechny projekty, ale to už je na týmu, aby tak rozhodl.
Obecně se checklist bude aktualizovat s každým odevzdaným taskem, stejně tak jako udržujeme dokumentaci. Čili když odevzdám task, tak zkontroluji, jestli je potřeba doplnit dokumentaci/checklist, pokud ano, tak doplním/”zaškrtnu”. Při intenzivnějších fázích vývoje (např. na začátku projektu) se checklist bude kontrolovat pravidelně, např. na konci každého sprintu.
Udržováním tohoto checklistu dle stavu projektu se zajistí, že tým má přehled o tom, které nedostatky ještě projekt má a může pomoct k lepšímu plánování vývoje. Za ideální stav se tedy dá považovat, že před dokončením vývoje je celý checklist zelený , případně označené nerelevantní položky s odůvodněním v poznámce.
Definice hodnocení
✅ – ano
⛔ – ne
😶 – není relevantní
Checklist
Kategorie | Hodnocení |
Architektura | |
Existuje aktuální high level diagram, který popisuje interní a externí komponenty systému? interní (vyvíjené TF) – backend, frontend, cloud functions, …, externí (vyvíjené externími týmy) – 3rd party služby, cloud services, … | |
Je architektura v souladu s aktuálními softwarovými požadavky? | |
Je architektura v souladu se softwarovými požadavky za 3-5 roky podle roadmapy? | |
Jsou všechny softwarové komponenty zdokumentované? | |
Bezpečnost | |
Jsou aplikační nastavení (secrets) bezpečně uložené v bezpečném úložišti (key vault)? | |
Je zakázané přistupovat k produkční databázi z Internetu? | |
Je zajištěné použití HTTPS a TLS? | |
Má backendová aplikace správně nastavené CORS (domain whitelist)? | |
Jsou autentizační mechanismy nastavené na vhodnou délku platnosti (jwt expiration time)? | |
Dokumentace | |
Má projekt wiki dokumentaci v souladu se vzorovou dokumentací? (případně odůvodněno proč ne) | |
Jsou v dokumentaci odkazy na všechny externí zdroje? (Figma designy, roadmapy, mindmapy, …) | |
Má projekt definované podporované prohlížeče? (.browserslistrc) | |
Je ve wiki dostatečně popsáno, jaké sw a hw požadavky aplikace má? | |
Je ve wiki dostatečně popsáno, jak spustit lokální dev prostředí? | |
Je v repozitáři nahrán vzorový .env soubor? (.env, appsettings.json) | |
Jsou v .gitignore zahrnuty nerelevantní soubory (produkční konfigurační soubory, temp soubory)? | |
Jsou zdokumentované všechny technické dluhy? Zapisují se pravidelně? Je definován jejich dopad a náročnost na opravu? | |
Licence | |
Má projekt správně nastavenou licenci? | |
Jsou všechny balíčky zkontrolovány, zde jsou použité v souladu s jejich licencí? (GitHub - TechFides/tf-licence-checker) | |
Verzování, CI/CD a kvalita kódu | |
Jsou v kódu vyřešeny všechny TODO komentáře? | |
Je kód vyčištěn od nerelevantních komentářů? | |
Má projekt nastavené CI/CD, které zahrnuje spuštění lintu, testů a deploymentu? | |
Reportuje pipeline selhání do emailu/slacku? | |
Je kontrola licencí zahrnuta v pipelině? | |
Je npm audit zahrnut v pipelině? | |
Jsou všechny známé “nedodělky” zanesené do backlogu? | |
Závislosti | |
Jsou zkontrolované závislosti (dependencies) pro možné zranitelnosti? (npm audit, dependency tracker, …) | |
Jsou všechny definované závislosti (package.json, NuGet) použité/nutné? | |
Jsou všechny balíčky aktualizované a nastaven proces pravidelné aktualizace? | |
Jsou všechny assety (fonty, ext. styly, …) stahované ze serveru projektu? (bez "free" CDN, GoogleFont, …) | |
Automatizované testy | |
Má projekt nastavené a definované unit testy? | |
Má projekt nastavené a definované integration testy? | |
Má projekt nastavené a definované e2e testy? | |
Existují odhady (nebo požadavky) na zátěž v delším časovém horizontu? Je aplikace na tuto zátěž testovaná? (performance testy) | |
Spouští se testy v pipelině? | |
Je nastavené code coverage reportování? | |
Jsou v .gitignore zahrnuty složky/soubory s výsledky testů? | |
Konvence | |
Má projekt definované konvence pomocí nástrojů jako ESList, Prettier, StyleLint, EditorConfig | |
Má projekt v repozitáři nahrané config soubory všech nástrojů pro dodržování konvencí? | |
Dodržuje všechen kód projektu definované konvence a je psán jednotným stylem? | |
Instance | |
Existuje TEST prostředí s automatickým nasazováním změn? | |
Existuje STAGING prostředí, které datově odpovídá produkci? | |
Existuje DEV prostředí s dokumentací jak ho lokálně spustit? | |
Monitoring | |
Má backendová část aplikace zprovozněný monitoring, který notifikuje při problémech? | |
Má frontendová část aplikace zprovozněný monitoring, který notifikuje při problémech? | |
Má infrastruktura využívaná aplikací nastavený monitoring a reportování problémů? (CPU & RAM usage, …) | |
Má aplikace nastavené logování? Je možné zpětně dohledat logy (nejen) chyb? | |
Pokud aplikace využívá cloud služby, má nastavený billing limit a notifikace? | |
Má infrastruktura IaaC kód, který je konzistentní s nasazenou infrastrukturou? |
Zaujal Tě náš tým?
Rádi se s Tebou osobně a nezávazně setkáme, napiš nám – pošli nám, co umíš a co bys rád/a u nás dělal/a na email chcidotymu@techfides.cz
Další info o tom, proč je TechFides místo šité vývojářům na míru, se dočteš v našem článku proč do TF. Nebo se rovnou podívej na otevřené pozice a napiš nám, rádi Tě poznáme. Přečti si také, jak probíhá výběr našich nových členů týmu a jak probíhá onboarding.