Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Programming

Modularidad, abstracción y múltiples instancias en C para Embedded Software

Está claro que la modularidad, el encapsulamiento y la abstracción 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 presente artículo aborda estos principios y los aplica a un ejemplo concreto muy tradicional en los embedded systems , específicamente la estructura de datos queue , proveyendo diversas técnicas de programación no sólo para la construcción de este tipo de estructuras, sino también para la construcción de todo tipo de módulos de software genéricos, flexibles y escalables, desde la definición de su interfaz hasta su implementación en lenguaje C. Lo que implica generalizar, parametrizar e instanciar una solución general a un problema específico. Adicionalmente, el artículo describe la implementación de varios patrones para instanciar la entidad que encapsula los atributos del módu...

Principios de OOP aplicados en C para Embedded Systems

Los principios del diseño orientado a objetos [1,2] aplicados a la programación, no son propios de un lenguaje o herramienta particular, sino más bien, son una manera disciplinada de organizar, diseñar y codificar software. Estos son: el encapsulamiento, la herencia y el polimorfismo. Su aplicación, en sistemas de software, incluyendo los embedded systems , tiene grandes beneficios, ya que fomenta la producción de software modular, reutilizable, flexible, transportable y sumamente legible. Además, facilita y naturaliza, el uso de lenguajes de modelado de software como UML [1,2]. Este nos ayuda a describir y diseñar el sistema, por medio de una serie de notaciones gráficas estandarizadas, como los diagramas de estados Statecharts [3], los diagramas de secuencia, entre otros. Fundamentalmente, UML nos proporciona un conjunto herramientas conceptuales para representar o modelar el sistema.

Statecharts implementados mediante tablas de estados

El presente artículo tiene por objetivo mostrar las bases de una implementación de máquina de estados Statechart [2,3,5,6] en lenguaje C (compatible con C++), cuyo objetivo fundamental es lograr una representación en código fuente simple, directa, transparente, legible, flexible y compacta, que permita determinar de un sólo vistazo la topología del diagrama que representa, y así lograr una implementación sencilla de modificar, mantener e interpretar. Incluso que facilite la generalización, la reutilización, la transportabilidad, como así también la generación de código automático. Si bien dicha implementación busca maximizar la legibilidad, no descuida ni la eficiencia en el uso de recursos ni la velocidad de ejecución.

Optimice su código

Incorporar ciertas técnicas de optimización durante la escritura de un programa, especialmente en el mundo embedded, es realmente una gran ventaja. Me refiero a "programar optimizando". Por supuesto, sin que esto arruine la legibilidad y simplicidad del programa o altere su comportamiento. Para ello se requieren sólidos conocimientos del lenguaje y del compilador en uso. Hace algunos años, he asistido a varias clases en las cuales el profesor Eduardo A. Martinez transmitió estas y otras prácticas, útiles al momento de escribir un buen programa en lenguaje C. Por suerte, él mismo ha resumido parte de sus clases en los siguientes artículos: Optimece su código - Parte 1 Optimece su código - Parte 2