Antecedentes:
Junior I + D, ingeniero en electrónica (sólo EE en la empresa) - el hardware y la programación no es el problema. Mi mayor problema es conseguir una adecuada visión de conjunto del proyecto, y por dónde empezar.
Hasta ahora sólo he hecho menor proyectos de software (sub 500 líneas de código), pero me puedo imaginar a mí mismo haciendo proyectos más grandes, sin perder la visión general de la funcionalidad o la falta de funcionalidad.
Cómo hacer el mejor estructura / ¿qué herramientas se utilizan para estructurar grandes sistemas de software embebido?
Lo que estoy haciendo actualmente:
Me suelen empezar, con el esbozo de la funcionalidad del proyecto. Podría ser de una a muchas capas de diagramas de flujo o relacionados con los diagramas de bloque, diagramas, etc.) y hacer un poco de investigación de los componentes/chips. Entonces me salta directamente a la codificación (fail fast supongo) haciendo referencia a las hojas de datos / Internet, Codificación de una funcionalidad en el tiempo y hacer las pruebas con datos ficticios, o una prueba similar. Podría ser la escritura de datos en el MEM chip, y entonces si que funciona, a continuación, podría ser un SPI conductor entre el chip y la memoria del chip.
¿Qué respuesta que estoy buscando:
De nada realmente. Voy a ordenar lo que me parece sensato. Podría ser un libro, un artículo, una experiencia personal, recomendaciones, etc.
Estoy muy interesado en saber cómo los adultos mayores frente a este.
Editar
En primer lugar, gracias por compartir sus años de experiencia! Todas las respuestas son muy apreciadas. Mi opinión de esto es;
- Crear un claro y preciso en el documento de especificación.
- Crear un documento de diseño de software. (Algo que ahora he de añadir) Diseño de plantillas doc
- Pensar en los módulos de cómo cada vez redundante que parezca. (Tengo algo para centrarse más en)
- Seguir un estándar de codificación para la estructuración de encabezado/archivos de origen. (Nunca hizo esto) Barr Grupo C estándar
- Centrarse en la creación, el bajo nivel de las implementaciones de primera. (Comunicación etc.)
- Implementar patrones de diseño siempre que sea posible/sensible. Patrones de diseño
- Configurar algo para control de revisión (Github, etc. - nunca utilizado tanto)
- La investigación de integración continua / continua implementación (Algo nuevo que me tropecé) CI & CD fundamentos