Все время, сколько доводилось иметь дело с разработкой встроенных систем (а первый опыт имел место почти 30 лет назад, в 1983-м), меня не оставляло ощущение какой-то ущербности процесса их программирования.
Сначала это относилось к языкам программирования для микропроцессоров. Нормальной практикой считалось программирование в кодах, и те, кто помнил коды машинных инструкций наизусть, весьма гордились этим. Программирование на ассемблере было уже комфортом, а умеющие грамотно использовать макросы приравнивались к богам.
Со временем ситуация улучшилась - появилась возможность писать встроенные программы на С (и даже с некоторыми ограничениями - на С++), на диалектах Бейсика и т.д. Однако каждый разработчик ПО знает, что процесс разработки не ограничивается только кодированием.
При проектировании компьютерных программ в последнее время широко применяются так называемые "гибкие" (agile) технологии, позволяющие существенно поднять качество продукта. В их основе лежит несколько приемов, в общем полезных сами по себе, но в совокупности их мощность умножается: разработка через тестирование (Test Driven Design, TDD), непрерывная интерграция, регрессионное тестирование, рефакторинг и т.п.). Однако в сферу проектирования программ для встроенных систем эти технологии явно не торопятся.
Впрочем, некоторые сдвиги есть и в данном направлении. Их пока очень немного, тем ценнее становится каждая найденная крупица информации. И вот одна из них: http://club.shelek.ru/viewart.php?id=335
Правда, статья ставит больше вопросов, чем дает ответов. И все же с чего-то начинать все равно нужно.
