Nástroje/technologie pro návrh a vývoj hardwaru
Nástroje pro vývoj softwaru
Model Architektury
Než přejdeme k implementaci softwaru, připravíme architekturu v modelu UML. Pro takové modelování používáme různé nástroje.
Kdysi jsme začínali s Rational Rhapsody a nyní používáme PlantUML, Microsoft Visual Studio, Microsoft Visio, Lucid Chart a Enterprise Architect.
Architekturu vhodně přizpůsobíme, ať už stavíme na operačním systému - Linux nebo Windows - nebo na holém firmwaru.
Systémy řízení projektů
K realizaci vývoje softwaru používáme rodinu nástrojů od společnosti Atlassian. Ke sledování chyb používáme už dlouhá léta systém JIRA. Často v něm využíváme agilní procesní toky založené na Kanbanu nebo Scrumu.
Oceňujeme také hlavní výhodu systému JIRA – jeho úzké propojení s úložištěm Bitbucket.
Systémy řízení verzí
Pokud jde o systém správy revizí, začali jsme se systémem SVN, ale v posledních letech jsme přešli na řetězce nástrojů založené na systému Git. Ty oproti SVN přináší výhodu flexibilního větvení a slučování.
Data posíláme do vzdáleného úložiště Bitbucket, které nabízí výkonnou infrastrukturu a integraci s dalšími nástroji společnosti Atlassian.
Používáme technologie kontinuální integrace (CI), jako je Jenkins Server.
Nástroje pro kódování
Nikdo z týmu nemá dané, jaké konkrétní nástroje musí používat. Většina ráda používá VS Code nebo MS Visual Studio; někteří zase mají rádi Atom, Eclipse nebo jiné jednoduché editory založené na Linuxu.
Téměř všechny nástroje nabízejí plný výkon vzdáleného debuggeru a různé balíčky plug-inů.
Pro zdrojové soubory používáme nástroje statické analýzy kódu, jako je Clang.
Programovací jazyky
Většina programovacích jazyků, které používáme, poskytuje silnou podporu operačních systémů Linux i Windows.
Někteří z nás mají rádi Python pro jeho flexibilitu a absenci nutnosti kompilace, zejména pro rychlé softwarové prototypování nebo pro testovací skripty.
Pro webové aplikace máme dobré zkušenosti s JavaScriptem, TypeScriptem a různými webovými frameworky, jako jsou ReactJS a Express, které jsou podporovány runtimy jako jsou NodeJS a Electron.
Na druhou stranu kolegové, kteří se intenzivně zabývají programováním na low-level úrovni pro firmware ARM Cortex, jsou skvělí v C nebo C++.
Ovladače zařízení
Některé projekty vyžadují karty PCIe pro hostitelský počítač. Takové počítače většinou běží na systému Windows, proto podporujeme naše zákazníky vývojem ovladačů pro Windows.
Máme dost zkušeností se starší sadou ovladačů systému Windows (WDK) a novějším Kernel-Mode Driver Framework (KMDF).
Samozřejmě vytváříme ovladače i pro vestavěný Linux — ve většině případů pro periferie, které nejsou součástí jednotlivých SOM (system on module).
Přehled technologií a nástrojů