Antecedentes :
Ingeniero electrónico junior de I + D ( el único EE en la empresa ): el hardware y la codificación no son el problema. Mi mayor problema es obtener una visión general adecuada del proyecto y dónde comenzar.
Hasta ahora solo he realizado proyectos de software menores (menos de 500 líneas de código), pero no puedo imaginarme haciendo proyectos más grandes sin perder la visión general de la funcionalidad o la falta de funcionalidad.
¿Cómo estructura mejor / qué herramientas utiliza para estructurar grandes sistemas de software integrados?
Lo que estoy haciendo actualmente :
Por lo general, empiezo esbozando la funcionalidad del proyecto. Podría ser uno a muchos diagramas de flujo en capas o diagramas relacionados (diagramas de bloques, etc.) y hacer una investigación de los componentes / chips. Luego paso directamente a la codificación (supongo que falla rápidamente) mientras hago referencia a las hojas de datos / Internet, codificando una funcionalidad a la vez y probándola con datos ficticios o pruebas similares. Podría estar escribiendo datos en un chip MEM, y luego, si eso funciona, podría ser un controlador SPI entre el chip principal y el chip MEM.
Qué respuesta estoy buscando :
Cualquier cosa en realidad. Resolveré lo que considero sensato. Podría ser un libro, un artículo, experiencia personal, recomendaciones, etc.
Estoy muy interesado en saber cómo las personas mayores abordan esto.
Editar
En primer lugar, ¡gracias por compartir sus años de experiencia! Todas las respuestas son muy apreciadas. Mi toma de esto es;
- Cree un documento de especificación claro y preciso.
- Crea un documento de diseño de software. (Algo que ahora agregaré) Diseñar plantillas de documentos
- Piense en los módulos lo redundante que pueda parecer. (Algo en lo que necesito concentrarme más)
- Siga un estándar de codificación para estructurar archivos de cabecera / fuente. (Nunca hice esto) Barr Group C estándar
- Concéntrese primero en crear las implementaciones de bajo nivel. (Comunicación, etc.)
- Implemente patrones de diseño siempre que sea posible / sensato. Patrones de diseño
- Configure algo para el control de revisión (Github, etc., nunca se usó tanto)
- Investigue la integración continua / implementación continua (algo nuevo con lo que me topé) Conceptos básicos de CI y CD