Estou iniciando na programação de software embarcado usando um RTOS e, como já sou desenvolvedor de aplicativos de desktop, fiquei imaginando como é modelar software embarcado usando diagramas UML, como Diagramas de Atividades, Diagramas de Sequência, Casos de Uso etc.
O software incorporado é projetado usando UML, da mesma forma que os aplicativos de desktop? É a melhor opção ou existe uma melhor? Posso ter alguns exemplos?
Existe uma ferramenta específica que faz isso?
Respostas:
Existem extensões em tempo real da UML que foram popularizadas por uma empresa cujo nome me escapa no momento. Lembro-me de escrever um artigo sobre isso há vários anos. Bruce Powell Douglass escreveu alguns livros sobre modelagem de sistemas embarcados usando UML, mas não estou pensando em sua empresa.
Dito isto, para ecoar Wouter, não há nada de especial em software incorporado em si. Eu escrevo software incorporado todos os dias para um sistema que roda em processadores da classe Pentium; UML é bastante aplicável. Além disso, lembre-se de que muitos aspectos do software de controle foram adicionados à UML ao longo do tempo: existe uma sintaxe para especificar eventos síncronos ou assíncronos, juntamente com o tempo de resposta nos Diagramas de Sequência, o comportamento do tipo de rede Petri pode ser encontrado em Diagramas de Atividades, comportamento do modelo Statecharts ainda melhor que os Diagramas de Estado podem, etc.
OTOH, muitas pessoas preferem modelar software incorporado usando os conceitos de Projeto Estruturado e Fluxo de Dados. É tudo sobre o tipo de sistema que você está projetando e o que funciona melhor.
fonte
Ao migrar para um RTOS, geralmente lidamos com um aplicativo que possui muitas tarefas simultâneas que precisam ser agendadas de maneira ideal para que cada um cumpra seus prazos no prazo ou compartilhe recursos com segurança. A estrutura RTOS que você escolhe implementa um agendador de tarefas e seu trabalho (normalmente) é gravar essas tarefas individuais com um determinado conjunto de propriedades (período, prioridade, etc.) e depois entregá-lo ao agendador. Portanto, para a documentação, a abordagem que eu adotaria seria documentar cada tarefa cuidadosamente.
A maioria dos softwares incorporados e, até onde eu sei, a maioria dos RTOS não são escritos em uma linguagem orientada a objetos e, portanto, podem não se beneficiar de muitas coisas voltadas para isso, como diagramas de classes, por exemplo.
Ao documentar suas tarefas RTOS, no entanto, qualquer diagrama que descreva bem a tarefa seria um grande benefício. Eu imagino que um diagrama de sequência para cada tarefa possa ser muito útil, por exemplo. Junto com isso, você pode especificar seus requisitos rígidos, como período / frequência, prioridade, quaisquer recursos compartilhados que ele possa usar, requisitos de preferência, etc. Também vale a pena documentar como você configurou o RTOS e talvez um máquina de seu algoritmo de agendamento.
Aceite qualquer um desses conselhos da maneira que quiser, não mexo nas coisas do RTOS desde os meus dias de faculdade e nunca realmente "documentei" o trabalho.
fonte
Modelagem tem tudo a ver
sabendo qual aspecto é difícil e complexo em sua aplicação,
encontrar uma ferramenta de modelagem / linguagem / abstração / convenção / notação apropriada para esse aspecto
projetando que esse aspecto
Portanto, nenhuma ferramenta / abordagem de modelagem / etc é apropriada para todas as situações. Um satélite provavelmente será um sistema multitarefa em tempo real, provavelmente com mais de um processador. Diagramas de estrutura de tarefas, DSTs e diagramas de sequência são provavelmente úteis (apenas para citar alguns). Se o projeto é feito em C, um diagrama de classes é menos provável que seja útil (se for muito útil, a escolha para C provavelmente está errada). Não gosto muito de UseCases, e um satélite an-sich não tem usuário. Os casos de uso são mais apropriados em uma situação em que você deseja discutir os requisitos do seu sistema com um usuário não técnico. Se essa é a situação em que você está em um projeto de satélite, algo deu errado.
fonte
Não projetei nada com espaço qualificado. Mas eu trabalhei para um subcontratado aeroespacial do Departamento de Defesa (DoD) e muitos dos meus projetos eram qualificados para voos. Eles exigem muita documentação sobre seus projetos e fornecem DIDs (Descrições de Itens de Dados) que detalham exatamente o que eles querem ver.
Você pode usar a Pesquisa rápida do DoD ASSIST para ver todos os DIDs dos documentos que podem ser necessários se você digitar "software" no campo "Palavra (s) no título" e clicar em Enviar. (Acho engraçado que um site do DoD gere um aviso de segurança de certificado, mas garanto que é seguro).
Como você pergunta especificamente sobre um Documento de Design, aqui está o DID ( Descrição de Design de Software ). Eles enfatizam o uso de palavras para descrever cada parte do design. Mas se o uso de UML, diagramas de estado, fluxogramas, pseudo-código etc. etc. puder melhorar o entendimento do design, é claro que eles gostariam que você o incluísse.
Qual método de modelagem você escolhe, como outros já declararam, depende do seu design. Mas eu pensei que ver um DID para software aeroespacial poderia ajudá-lo a escrever seu Documento de Design, já que seu projeto está relacionado ao espaço.
fonte