Proceduralnie, obiektowo, funkcyjnie. Zależy to od klasy i zastosowania danego systemu. Zresztą obiektowość to tylko jeden z objawów hermetyzacji. Dla małych systemów podejście proceduralne (głównie C) będzie wystarczające, dla większych (C++, Ada) będzie utrudniało utrzymanie więc bywa wybierane wtedy podejście obiektowe. A w DSP często występuje mix podejścia proceduralnego i funkcyjnego.
Pytałeś jakie paradygmaty są używane (na dziś). Co do jednak proporcji, w mały systemach głównie C i w mniejszym stopniu C++. W większych (adaptive embedded), coraz częściej C++ i inne technologie (Python, Lua, Rust...).