Edocti
Training tehnic avansat pentru inginerul software de mâine
Edocti Training

Embedded Software Architecture & Design

Avansat
21 h
4.6 (53 recenzii)
Embedded Software Architecture & Design

Arhitectură software embedded: proiectezi sisteme embedded fiabile, modulare și scalabile.

Hands‑on cu arhitecturi stratificate, design de componente și modelare UML.

Aplici practici moderne C++ la constrângeri embedded și sisteme real‑time.

Dobândești experiență practică prin ~70% laboratoare de construire a designului embedded.

Cum te ajută: îmbunătățești mentenabilitatea, testabilitatea și performanța software‑ului embedded.

Cui i se adresează: conceput pentru persoane cu experiență C/C++ în proiecte embedded.

Include opțional pattern‑uri avansate și compromisuri de arhitectură.

Curriculum

Ziua 1 — De la cerințe la arhitectură (realități embedded)
  • Înțelegerea problemei și stakeholderilor; atribute de calitate (safety, performanță, disponibilitate, energie)
  • Capturarea cerințelor și trasabilitate (use cases, non‑funcționale, contracte de interfață)
  • Context, constrângeri HW, bugete de memorie/CPU/energie; riscuri timpurii și ADR‑uri
  • Vederi de arhitectură: context, containere/componente, deployment; mapare pe țintă
Ziua 1 — Modelare structurală pentru sisteme embedded
  • UML cu Enterprise Architect: packages, components, deployment și class diagrams
  • Straturi și frontiere: aplicație, servicii, drivere; patternuri HAL/SAL; puncte de portabilitate
  • Dataflow și model de concurență (event‑driven vs time‑triggered; task graph)
  • Interfețe și contracte: API‑uri, coduri de eroare, pre/postcondiții
Ziua 2 — Comportament, timming și proiectare real‑time
  • State machines corect implementate (ierarhie, Mealy/Moore, mode management, reentrancy)
  • Diagrame de secvență/activitate/timp pentru fluxuri și bugete de timp
  • Scheduling: task‑uri periodice/sporadice, rate‑monotonic vs. EDF, cooperativ vs. preemptiv
  • Priority inversion și ceilings; partitionare pe nuclee; estimarea WCET
Ziua 2 — Tehnici C/C++ pentru embedded
  • Ownership și RAII; smart pointers vs. stocare statică; pimpl și interfețe
  • Polimorfism static vs. dinamic; CRTP; constexpr și configurație la compile time
  • Aritmetică fixed‑point; memory pools, ring buffers și pipe‑uri zero‑copy
  • Cod sigur pentru ISR și patternuri DMA; volatile, atomics, aliniere și endianness
Ziua 3 — Acces la hardware, portabilitate și startup
  • Memory‑mapped I/O și patternuri de acces la registre; bitfields și măști în siguranță
  • Drivere vs. servicii; headere în stil CMSIS; device trees (overview unde e relevant)
  • Secvență de boot și inițializare; noțiuni de secure boot; elemente de linker script (overview)
Ziua 3 — Fiabilitate, diagnoză și testare
  • Strategii de tratare a erorilor; watchdogs și brown‑out; degradare grațioasă
  • Logging/tracing; jurnale de evenimente și contoare de performanță; hook‑uri de telemetrie
  • Analiză statică și MISRA C/C++; teste unitare/integrare; SIL/HIL și fault injection
Ziua 3 — Din model în schelet de cod
  • Maparea modelului pe module și directoare; reguli de dependențe; headere publice vs. private
  • Sistem de build (CMake) și integrare toolchain; feature flags și variante
  • Generarea unui schelet de aplicație; implementarea primului use case și teste CI

Module opționale

Opțional — Safety & security
  • Aliniere ISO 26262 (gândire ASIL, safety mechanisms) — overview
  • Comunicare și flashing securizate; checklist de hardening

Structura zilei de curs

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30