Comparto con ustedes un artículo que explora los conceptos de modularidad, encapsulamiento y abstracción aplicados al
construcción de
embedded software en lenguaje C. Está claro que estos fomentan la producción de software reutilizable, escalable, flexible,
transportable y sumamente legible. Generando sistemas de software
óptimos respecto del uso de memoria de datos y programa, menos
complejos, fáciles de mantener y escalar.
El artículo aborda
estos principios y los aplica a un ejemplo concreto muy tradicional en
el común de los
embedded systems, proveyendo diversas técnicas de
programación para la construcción de módulos de software flexibles y
escalables, desde la definición de su interfaz hasta su implementación
en C. Lo que implica analizar, generalizar, parametrizar e
instanciar una solución general a un problema específico, logrando un
módulo que concentre sus características. Por lo general, estos son
independientes del resto del sistema, poseen funcionalidades y
características acotadas y específicas, las cuales se concentran en una
única entidad lógica.
Adicionalmente, el artículo describe la implementación de varios
patrones, para instanciar la entidad que encapsula los atributos del
módulo y así lograr que estos manipulen múltiples entidades. También
explora la aplicación de punteros opacos, desmitificando su uso en la programación.
Si bien el artículo es algo extenso, los temas que aborda están dividos en las secciones:
1.- Generalización
2.- Identificando de instancias
2.1.- Por referencia
2.2.- Por descriptores
3.- Creando instancias
3.1.- Patrón de asignación dinámica de memoria
3.2. - Patrón de asignación estática de memoria
3.3. - Patrón de asignación de objetos desde un pool
4.- Aún más abstracción con punteros opacos
4.1. - Método: definición privada
4.2. - Método: definición pública y privada