Design no nível do sistema. Parte 2. Arquitetura Detalhada

Na primeira parte do tutorial, obtive a arquitetura de um sistema de controle de acesso. O resultado alcançado já possui benefícios práticos, mas não suficientes, já que agora a arquitetura não leva em consideração os formatos e tipos de dados e a natureza dos componentes. Nesta parte do tutorial, mostrarei como projetar fluxos de dados em um sistema e trabalhar com componentes de várias naturezas.

Interfaces de componentes


Vejamos o sistema da primeira parte novamente. Vemos que os componentes estão conectados por setas. Essas conexões ainda são abstratas e representam conexões simples de informações. No entanto, podemos reduzir um pouco o nível de abstração. Considere a saída do componente DBHandler .



Este componente tem uma saída do AccessStatus. Vamos tentar descrevê-lo. Portanto, AccessStatus é um link que contém informações de status de acesso. O acesso pode ser concedido ou não. Ou seja, é uma variável booleana explícita! Vamos indicar o tipo desta saída. Para fazer isso no System Composer, você deve primeiro criar a interface apropriada :



E então indicamos que a interface criada está atribuída à porta AccessStatus:



Esta operação deve ser executada em todas as portas necessárias. Podemos resumir e deduzir a seguinte declaração:

Ao criar interfaces e atribuí-las às portas, damos aos desenvolvedores que implementarão o sistema instruções precisas sobre quais dados os componentes desenvolvidos usarão e quais são necessários na saída.

Outra vantagem do System Composer é sua capacidade de visualizar o fluxo de dados usando visualizações de arquitetura customizadas, Visualizações de Arquitetura . Podemos filtrar nossa arquitetura de acordo com certos critérios. Tome a interface criada anteriormente como exemplo. Crie uma exibição do fluxo de dados do AccessStatus.

Primeiro, clique em Modelagem -> Visualizações de Arquitetura . E, em seguida, crie um filtro:



Aqui, o nome da exibição é definido e um filtro é criado: selecione todos os componentes que possuem uma interface chamada AccessStatus . Depois de clicar no botão Aplicar, obtemos a seguinte imagem:


Portanto, o uso de tais representações é útil para o desenvolvimento, pois é possível encontrar rapidamente os componentes ou erros necessários no projeto ou no fluxo de dados.

Gerenciamento heterogêneo de componentes


Seria possível parar por aí, porque no momento temos uma bela arquitetura de sistema que ajuda na implementação. No entanto, há um problema muito grande - o sistema consiste em ferro, isto é, componentes físicos e software. O que isto significa? Isso significa que o sistema é heterogêneo e precisamos refletir de alguma forma essa heterogeneidade. O System Composer possui recursos especiais - são perfis e estereótipos. Para facilitar a compreensão, um estereótipo é uma descrição abstrata de uma classe de componentes com propriedades e um perfil é uma coleção de estereótipos. Um exemplo simples - digamos que temos um estereótipo que descreve um microcontrolador. Qualquer microcontrolador possui propriedades comuns - núcleo, TDP, tensão de alimentação, frequência etc. São essas propriedades que devem se refletir no estereótipo.

Crie um perfil e os estereótipos necessários:


Por exemplo, eu criei o estereótipo de GenericComponent. Aqui está o que parece:



Várias configurações são importantes aqui:

  1. Aplica-se a - ao que o estereótipo se aplica - a um componente, interface, porta ou conexão (sim, as próprias conexões, essas setas, também podem ser descritas usando o estereótipo)
  2. Estereótipo base é o estereótipo pai. Os estereótipos herdam as propriedades dos estereótipos principais
  3. Tabela de propriedades - propriedades personalizadas são definidas aqui. Por exemplo, minha propriedade se chama Carga de trabalho, ou seja, a mão de obra envolvida na implementação

2 outros estereótipos de HardwareComponent são baseados nesse estereótipo - para hardware e SoftwareComponent , para software.

Depois de criarmos o perfil e os estereótipos, os importamos para a arquitetura e podemos começar a dispersá-lo por seus elementos:



Como resultado, consegui esta imagem:


Para maior clareza, fiz a seguinte apresentação:


Vejamos o mecanismo de herdar as propriedades dos componentes em ação. Selecione o componente DoorLock e veja suas propriedades:


A propriedade Workload foi herdada do GenericComponent, mas a propriedade Cost é específica para o estereótipo HardwareComponent.

Para resumir esta parte:

A arquitetura detalhada permite uma descrição mais completa do sistema em desenvolvimento e evitar inconsistências nas interfaces e na interação dos componentes. O uso de estereótipos para detalhes ajuda a entender a natureza dos componentes e obter uma imagem mais completa do sistema que está sendo desenvolvido.

Na próxima parte do tutorial, falarei sobre a integração do System Composer ao MATLAB, Simulink e a ferramenta de gerenciamento de requisitos, Simulink Requierements.

All Articles