Процесс разработки ПО на основе проектной документации не способен более обеспечить предсказуемое создание ПО для встраиваемых устройств и своевременный вывод на рынок новых продуктов. Современный подход к проектированию программного обеспечения критических приложений таких как, например, система управления автомобилем, аэро-космической системой, ядерным реактором и т.п. основывается на проектировании системы по моделям, написанных на языке UML (Model-Driven Development Using UML 2.1). Модель на языке UML и код на языке программирования в современной системе разработки являются лишь двумя различными представлениями одного и того же проекта. Следствием этого является возможность автоматизации тестирования программных средств.