Me estoy iniciando en la programación de software embebido usando un RTOS y, como ya soy desarrollador de aplicaciones de escritorio, no dejaba de preguntarme cómo es modelar software embebido usando diagramas UML, como Diagramas de Actividad, Diagramas de Secuencia, Casos de Uso, etc.
¿El software integrado está diseñado usando UML, de la misma manera que lo hacen las aplicaciones de escritorio? ¿Es la mejor opción o hay alguna mejor? ¿Puedo tener algunos ejemplos?
¿Hay alguna herramienta específica que haga esto?
Hay extensiones en tiempo real para UML que fueron popularizadas por una empresa cuyo nombre se me escapa en este momento. Recuerdo haber hecho un artículo sobre eso hace varios años. Bruce Powell Douglass escribió algunos libros sobre el tema del modelado de sistemas integrados mediante UML, pero su empresa no es en la que estoy pensando.
Dicho esto, para repetir Wouter, no hay nada especial en el software embebido per se. Escribo software integrado todos los días para un sistema que se ejecuta en procesadores de clase Pentium; UML es bastante aplicable. Además, recuerde que muchos aspectos del software de control se han agregado a UML a lo largo del tiempo: existe una sintaxis para especificar eventos síncronos o asíncronos junto con el tiempo de respuesta en los diagramas de secuencia, el comportamiento del tipo de red de Petri se puede encontrar en los diagramas de actividad, el comportamiento del modelo Statecharts es aún mejor que los diagramas de estado, etc.
OTOH, mucha gente prefiere modelar software integrado utilizando conceptos de diseño estructurado y flujo de datos. Se trata del tipo de sistema que está diseñando y qué funciona mejor.
Cuando recurrimos a un RTOS, generalmente nos enfrentamos a una aplicación que tiene muchas tareas simultáneas que deben programarse de manera óptima para que cada una de ellas cumpla con sus plazos a tiempo o comparta recursos de manera segura. El marco RTOS que elija implementa un programador de tareas y su trabajo (por lo general) es escribir estas tareas individuales con un determinado conjunto de propiedades (período, prioridad, etc.) y luego entregárselas al programador. Entonces, para la documentación, el enfoque que tomaría sería documentar cada tarea cuidadosamente.
La mayoría del software integrado y, hasta donde yo sé, la mayoría de los RTOS no están escritos en un lenguaje orientado a objetos y, por lo tanto, es posible que no se beneficien de muchas cosas que están orientadas a eso, como los diagramas de clase, por ejemplo.
Sin embargo, al documentar sus tareas de RTOS, cualquier diagrama que describa bien la tarea sería un gran beneficio. Me imagino que un diagrama de secuencia para cada tarea podría ser muy útil, por ejemplo. Junto con eso, puede especificar sus requisitos estrictos como su período/frecuencia, prioridad, cualquier recurso compartido que pueda usar, requisitos de prioridad, etc. También podría ser valioso documentar cómo configuró el RTOS y tal vez un estado- máquina de su algoritmo de programación.
Tome cualquiera de estos consejos como quiera, no me he metido con las cosas de RTOS desde mis días de universidad, y nunca "documenté" realmente el trabajo.
Modelar se trata de
saber qué aspecto es difícil y complejo en su aplicación,
encontrar una herramienta de modelado/lenguaje/abstracción/convención/notación apropiada para ese aspecto
diseñando ese aspecto
Por lo tanto, ninguna herramienta/enfoque/etc. de modelado es apropiado para todas las situaciones. Es probable que un satélite sea un sistema multitarea en tiempo real, probablemente con más de un procesador. Los diagramas de estructura de tareas, STD y diagramas de secuencia probablemente sean útiles (solo por nombrar algunos). Si el proyecto se realiza en C, es menos probable que un diagrama de clases sea útil (si resulta muy útil, la elección de C probablemente fue incorrecta). No soy muy aficionado a los UseCases, y un satélite an-sich no tiene usuario. Los casos de uso son más apropiados en una situación en la que desea analizar los requisitos de su sistema con un usuario no técnico. Si esa es la situación en la que se encuentra con un proyecto satelital, algo salió mal.
No he diseñado nada que esté calificado para el espacio. Pero trabajé para un subcontratista aeroespacial del Departamento de Defensa (DoD) y muchos de mis diseños estaban calificados para el vuelo. Requieren mucha documentación sobre sus diseños y proporcionan descripciones de elementos de datos (DID) que detallan exactamente lo que quieren ver.
Puede usar la búsqueda rápida de DoD ASSIST para ver todos los DID de los documentos que pueden ser necesarios si escribe "software" en el campo "Palabra(s) en el título" y hace clic en Enviar. (Me parece divertido que un sitio del Departamento de Defensa arroje una advertencia de seguridad de certificado, pero les aseguro que es seguro).
Dado que pregunta específicamente sobre un documento de diseño, aquí está el DID de descripción de diseño de software (SDD). Destacan el uso de palabras para describir cada parte del diseño. Pero si el uso de UML, diagramas de estado, diagramas de flujo, pseudocódigo, etc., puede mejorar la comprensión del diseño, entonces, por supuesto, les gustaría que lo incluyera.
El método de modelado que elija, como han dicho otros, depende de su diseño. Pero pensé que ver un DID para software aeroespacial podría ayudarlo a escribir su documento de diseño ya que su proyecto está relacionado con el espacio.
Wouter van Ooijen
HikeOnPast
Casio
drxzcl
Rocketmagnet
drxzcl
Casio
drxzcl
drxzcl