Concurrency Architectures in the UML
Concurrency is a key aspect of almost any real-time and embedded system because it so directly influences its performance. This paper to focuses on the identification, characterization, selection, architecting, and implementation of efficient concurrency architectures. Of course, if concurrent tasks are actually independent, that's a straightforward problem, so, naturally, that's almost never the case. Concurrent tasks have to synchronize, rendezvous and share resources—and that's when it gets interesting—as in "arbitrarily complex."
UML provides strong modeling concepts around capturing concurrency aspects of systems, and some UML modeling tools can generate full behavioral code for creating and destroying threads, managing event queues, and adding semaphores when needed. In addition, the OMG provides two profiles to support the analysis of the schedulability and performance of concurrent systems.