Electronic – Designing Embedded Software


I am starting in embedded software programming using a RTOS and, since I am already a developer for desktop applications, I kept wondering what is it like to model embedded software using UML diagrams, like Activity Diagrams, Sequence Diagrams, Use Cases, etc.

Is embedded software designed using UML, the same way desktop applications do?
Is it the best option or is there a better one?
Can I have some examples?

Is there a specific tool that does this?

Best Answer

There are Real Time extensions to UML that were popularized by a company whose name escapes me at the moment. I remember doing a paper on it several years ago. Bruce Powell Douglass wrote a few books on the subject of modeling embedded systems using UML, but his company is not the one I'm thinking of.

That said, to echo Wouter, there is nothing special about embedded software per se. I write embedded software every day for a system that runs on Pentium-class processors; UML is quite applicable. Also, remember that many aspects of control software have been added to UML over time: there is syntax for specifying synchronous or asynchronous events along with response time in Sequence Diagrams, Petri net type behavior can be found in Activity Diagrams, Statecharts model behavior even better than State Diagrams can, etc.

OTOH, a lot of people prefer to model embedded software using Structured Design and Dataflow concepts. It's all about the type of system you're designing and what works best.