Фон :
Младший инженер-электронщик R & D ( единственный EE в компании ) - аппаратное обеспечение и кодирование не проблема. Моя самая большая проблема - получить правильный обзор проекта и с чего начать.
До сих пор я занимался только небольшими программными проектами (менее 500 строк кода), но я не могу представить себе, что я делаю большие проекты, не теряя обзора функциональности или отсутствия функциональности.
Как вы лучше всего структурируете / какие инструменты вы используете для структурирования больших встроенных программных систем?
Что я сейчас делаю :
Я обычно начинаю с набросков функциональности проекта. Это может быть многоуровневая блок-схема или связанные схемы (блок-схемы и т. Д.) И некоторые исследования компонентов / микросхем. Затем я сразу перехожу к кодированию (я думаю, что это быстро проваливается), ссылаясь на таблицы данных / Интернет, кодируя по одной функциональности за раз и проверяя их с помощью фиктивных данных или аналогичного теста. Это может быть запись данных в микросхему MEM, а затем, если это сработает, это может быть драйвер SPI между основным чипом и микросхемой MEM.
Какой ответ я ищу :
Ничего действительно. Я разберусь, что я считаю разумным. Это может быть книга, статья, личный опыт, рекомендации и т. Д.
Мне очень интересно знать, как пожилые люди справляются с этим.
редактировать
Прежде всего, спасибо, что поделились своим многолетним опытом! Все ответы очень ценятся. Мой вывод из этого есть;
- Создайте четкий и точный документ спецификации.
- Создать документ о разработке программного обеспечения. (Кое-что я сейчас добавлю) Дизайн шаблонов документов
- Подумайте в модулях, насколько это может показаться излишним. (Что-то, на чем мне нужно больше сосредоточиться)
- Следуйте стандарту кодирования для структурирования заголовочных / исходных файлов. (Никогда этого не делал) Barr Group C стандарт
- Сосредоточьтесь на создании низкоуровневых реализаций в первую очередь. (Общение и т. Д.)
- Реализуйте шаблоны проектирования там, где это возможно / разумно. Шаблоны проектирования
- Настроить что-нибудь для контроля версий (Github и т. Д. - никогда не использовал это много)
- Исследования непрерывной интеграции / непрерывного развертывания (что-то новое, на что я наткнулся) Основы CI и CD