Estoy comenzando en la programación de software embebido usando un RTOS y, dado que ya soy desarrollador de aplicaciones de escritorio, me preguntaba 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 con UML, de la misma manera que las aplicaciones de escritorio? ¿Es la mejor opción o hay una mejor? ¿Puedo tener algunos ejemplos?
¿Hay alguna herramienta específica que haga esto?
Respuestas:
Hay extensiones en tiempo real para UML que fueron popularizadas por una compañía cuyo nombre se me escapa en este momento. Recuerdo haber escrito un artículo hace varios años. Bruce Powell Douglass escribió algunos libros sobre el tema del modelado de sistemas embebidos usando UML, pero su compañía no es en la que estoy pensando.
Dicho esto, para hacer eco a Wouter, no hay nada especial en el software integrado per se. Escribo software incorporado todos los días para un sistema que se ejecuta en procesadores de clase Pentium; UML es bastante aplicable. Además, recuerde que a lo largo del tiempo se han agregado muchos aspectos del software de control a UML: existe una sintaxis para especificar eventos síncronos o asíncronos junto con el tiempo de respuesta en diagramas de secuencia, el comportamiento del tipo de red de Petri se puede encontrar en diagramas de actividad, el comportamiento del modelo de gráficos de estado aún mejor que los diagramas de estado, etc.
OTOH, mucha gente prefiere modelar software embebido utilizando conceptos de diseño estructurado y flujo de datos. Se trata del tipo de sistema que está diseñando y lo que funciona mejor.
fuente
Cuando recurrimos a un RTOS, usualmente tratamos con una aplicación que tiene muchas tareas concurrentes que deben programarse de manera óptima para que cada uno de ellos cumpla con sus plazos de entrega a tiempo o comparta recursos de manera segura. El marco RTOS que elija implementa un programador de tareas, y su trabajo (típicamente) es escribir estas tareas individuales con un cierto conjunto de propiedades (período, prioridad, etc.) y luego entregarlo 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, pueden no beneficiarse de muchas cosas que están orientadas hacia diagramas de clase similares, por ejemplo.
Sin embargo, al documentar sus tareas 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, podría especificar sus requisitos estrictos, como su período / frecuencia, prioridad, cualquier recurso compartido que pueda usar, requisitos preventivos, etc. También podría ser valioso documentar cómo ha configurado el RTOS y tal vez un estado. máquina de su algoritmo de programación.
Sigue cualquiera de estos consejos como quieras, no me he metido con cosas RTOS desde mis días de universidad, y nunca "documenté" realmente el trabajo.
fuente
El modelado se trata
sabiendo 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 de modelado / enfoque / etc. 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, las ETS y los diagramas de secuencia son probablemente útiles (solo por nombrar algunos). Si el proyecto se realiza en C, es menos probable que un diagrama de clases sea útil (si resulta ser muy útil, la elección de C probablemente fue incorrecta). No soy muy aficionado a 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.
fuente
No he diseñado nada calificado para el espacio. Pero he trabajado para un subcontratista aeroespacial del Departamento de Defensa (DoD) y muchos de mis diseños fueron calificados para 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 curioso que un sitio del Departamento de Defensa arroje una advertencia de seguridad de certificado, pero te aseguro que es seguro).
Como usted pregunta específicamente sobre un documento de diseño, aquí está el DID de descripción de diseño de software (SDD). Enfatizan 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.
fuente