The world is filled with different objects. We identify them by their attributes and in the way we interact with them. Software systems and especially Embedded Software systems must interact with these objects. Thus defining them, their attributes, and the actions that can be performed on them in the software is the most natural way to enhance the intelligence of the system. Not only is this a logical method, but it also increases the software's maintainability, extensibility, and reusability.
UML is the industry standard for modeling software intensive systems. It defines techniques to diagrammatically depict object-oriented software. Although C (which is used extensively in embedded system design) is not an object oriented language, the comprising modules of a design can be modeled as objects. Therefore, although instantiation and inheritance (and by implication polymorphism) are not possible, encapsulation, which is the most fundamental concept in object oriented design, is.
The ability to create visual models is an essential part of the engineering discipline. Just as a blueprint is required for the construction of a bridge, so should there be a fully defined software architectural model prior to writing code. UML provides both static and graphical models that capture both the structural and behavioral aspects of the system. This provides a "big picture" view of the software system and allows other engineers to quickly understand it.