Ir al contenido principal

Entradas

Modelos y frameworks en embedded software de manera simple - Parte III "Framework RKH"

La presente publicación es la tercera y última parte del artículo "Modelos y frameworks en embedded software de manera simple", que explora las características y los beneficios de utilizar modelos y frameworks para disminuir el costo, la complejidad y el tiempo de desarrollo del software de un embedded system. Esta última parte presenta y describe el framework RKH de Vortex , sus servicios, principales características, las ventajas de su uso y su estructura interna. Parte 1: "Modelos y frameworks en embedded software de manera simple - Usando modelos" Parte 2: "Modelos y frameworks en embedded software de manera simple - Usando frameworks" ¿Qué es RKH? Es un paquete de software multiplataforma que provee un conjunto de servicios comunes y fundamentales entre aplicaciones del mismo dominio, en especial los embedded systems, cuyo objetivo es facilitar el desarrollo de sistemas parcialmente o totalmente reactivos, en los cuales su comportamiento di...

Modelos y frameworks en embedded software de manera simple - Parte II "Usando Frameworks"

La presente publicación es la segunda parte del artículo Modelos y frameworks en embedded software de manera simple, que explora las características y los beneficios de utilizar modelos y frameworks para disminuir el costo, la complejidad y el tiempo de desarrollo del software de un embedded system. Específicamente, esta parte analiza el uso de los frameworks más tradicionales del mercado, para lograr que los conceptos expuestos en la primera parte se materialicen y se conviertan rápidamente en parte de nuestro software. Para que la codificación de los Statecharts concurrentes y colaborativos, no se convierta en un obstáculo, limite o impida su uso, existen paquetes de software disponibles, que proveen la manera y las reglas adecuadas para codificar el modelo de comportamiento diseñado, en un embedded system, dentro de un marco formal, simple, bien definido y estructurado, como ser el framework QP de Quantum Leaps , Rational Rhapsody de IBM , o el framework RKH . Al mismo tiem...

Modelos y frameworks en embedded software de manera simple - Parte I "Usando modelos"

El artículo, que se compone de tres partes, explora las características y los beneficios de utilizar modelos y frameworks para disminuir el costo, la complejidad y el tiempo de desarrollo del software de un embedded system. La primera parte aborda el modelo de comportamiento dinámico que define la funcionalidad del sistema y en donde frecuentemente se producen las mayores complicaciones. Por ser de los más utilizados en este tipo de sistemas, el artículo se enfoca en los diagramas de comportamiento del tipo máquinas de estados, en especial aquellas de estados anidados o Statecharts [11], como así también en el modelo de ejecución Objeto Activo [1,2], el cual permite la ejecución simultánea de múltiples máquinas, colaborando entre sí y con el resto del sistema, de manera segura y transportable. Adicionalmente presenta los tópicos actuales más importantes para lograr un desarrollo de software realmente efectivo. La segunda parte analiza el uso de los frameworks más tradicionales d...

Prueba de máquinas de estados planas y jerárquicas mediante casos de prueba

El artículo explora una serie de estrategias, como punto de partida, para probar software que representa máquinas de estados tanto tradicionales (o planas) como de estados anidados (o jerárquicas). Estas últimas también conocidas como Statecharts [5] o máquinas UML. Dichas estrategias se aplican bajo conceptos como el desacople de módulos, el uso de stub , spy y mock [1][6], los casos de prueba unitarios y sus fases , entre otros, los cuales permiten aplicar de manera inmediata el desarrollo de software dirigido por pruebas ( TDD ), en este caso para las máquinas de estados, con los beneficios que ello implica. Aunque lamentablemente poco explorado para la aplicación en software dirigido por eventos (reactivo). Cada una de las estrategias expuestas se respalda con ejemplos de código fuente, escritos en lenguaje C para el framework de prueba Unity y Cmock , aunque pueden extrapolarse fácilmente a otros similares.  Finalmente, el presente artículo muestra una estrateg...

Especificación de Máquinas de Estados UML y Compatibilidad en RKH

El presente artículo describe en detalle la semántica y notación de cada uno de los elementos que constituyen las máquinas de estados especificadas por UML, las cuales se basan en el modelo de comportamiento dinámico Statechart escrito por el profesor David Harel [1]. Adicionalmente, describe la compatibilidad y grado de cumplimiento de la versión 2.4.4 o superior del framework RKH [2] con la especificación de máquinas de estados definida por OMG, en la especificación “OMG Unified Modeling Language”, Version 2.5 , Capítulo 14 “StateMachine”, pág. 319 [3]. Si bien la especificación UML de OMG es libre y pública, dista bastante de ser fácil de leer e interpretar, por aquellas personas que no se dedican exclusivamente a estos temas, pero si requieren formalizar la manera en que desarrollan software, en especial aquel aplicado a los embedded systems . Por tal motivo, el objetivo fundamental del presente artículo, es acercar la especificación (semántica y notación) de U...

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...