El SW en sistemas de tiempo real

Al igual que ocurre con el HW de un sistema de tiempo real, el SW debe estar optimizado para minimizar la aleatoriedad que introduce en el sistema: su ejecución debe ser lo más determinista posible para que se pueda garantizar que se cumplen los plazos del sistema. Además se debe garantizar una mínima ejecución de recursos. Por eso deben evitarse ciertos lenguajes de programación, herramientas y prácticas en el desarrollo de aplicaciones de tiempo real, por lo menos en las que se ejecutan en sistemas de tipo hard real time con plazos de tiempo muy estrictos.

El SW programado para sistemas de tiempo real está casi siempre descompuesto en tareas que se ejecutan concurrentemente. Algunas decisiones importantes que deben tomarse al respecto son:
  • Arquitectura del SW: Módulos que componen esa arquitectura (descomposición en tareas) y Comunicación entre módulos.
  • Diseño de los módulos: Funcional e Implementación.
  • Mecanismos de tolerancia a fallos.
Aunque este tema es muy extenso y daría para un blog en exclusiva, me gustaría terminar esta entrada con un resumen de "mejores prácticas" en el diseño de SW para tiempo real:
  • Aprovechar la experiencia de otros diseñadores pero sin reutilizar su código a no ser que estemos seguros de que el problema es exactamente el mismo.
  • Estudiar con detalle el HW y el Sistema Operativo del sistema.
  • Basar la selección de tecnología y herramientas en un análisis exhaustivo de las necesidades técnicas del sistema.
  • Utilizar estándares siempre que sea posible.
  • Invertir muchos esfuerzos en los programas de test (siempre worst-case).
  • Utilizar simulación siempre que sea posible ya que la verificación formal suele ser complicada.

No hay comentarios: