Фон :
Молодший інженер з науково-дослідної роботи та електроніки ( єдиний EE в компанії ) - апаратне забезпечення та кодування не є проблемою. Моє найбільше питання - це правильний огляд проекту та з чого почати.
Поки я робив лише незначні програмні проекти (під 500 рядків коду), але не можу передбачити себе робити більші проекти, не втрачаючи огляду функціональності або відсутності функціональності.
Як ви найкраще структуруєте / які інструменти використовуєте для структури великих вбудованих програмних систем?
Що я зараз роблю :
Я, як правило, починаю, замальовуючи функціональність проекту. Це може бути одна з багатьох багатошарових діаграм потоку або пов'язаних з ними діаграм (блок-діаграм тощо) та проведення деяких досліджень компонентів / мікросхем. Тоді я стрибаю прямо в кодування (я думаю, що не вдалося швидко), посилаючись на таблиці / Інтернет, кодуючи одну функціональність за один раз і тестуючи її за допомогою фіктивних даних або подібний тест. Це може записувати дані в мікросхему MEM, і тоді, якщо це працює, то це може бути драйвер SPI між основним і мікросхемою MEM.
Яку відповідь я шукаю :
Все, що насправді. Я розберуся, що вважаю розумним. Це може бути книга, стаття, особистий досвід, рекомендації тощо.
Мені дуже цікаво знати, як старші люди вирішують це.
Редагувати
По-перше, дякую за те, що ви поділилися багаторічним досвідом! Усі відповіді високо оцінені. Моє взяти з цього є;
- Створіть чіткий і точний специфікаційний документ.
- Створіть проект програмного документа. (Щось зараз я додам) Шаблони doc для дизайну
- Подумайте в модулях, як це може здатися зайвим. (Щось мені потрібно більше зосередитись)
- Дотримуйтесь стандарт кодування для структурування файлів заголовків / вихідних файлів. (Ніколи цього не робив) Стандарт Barr Group C
- Спершу зупиніться на створенні низькорівневих реалізацій. (Спілкування тощо)
- Застосовуйте дизайнерські зразки, коли це можливо / розумно. Шаблони дизайну
- Налаштуйте щось для контролю версій (Github тощо - ніколи не використовувався так багато)
- Дослідження безперервної інтеграції / постійного розгортання (щось нове, на що я натрапив) основи CI та CD