Design no nível do sistema. Parte 1. Da ideia ao sistema

Olá a todos. Costumo aplicar os princípios de engenharia de sistemas em meu trabalho e gostaria de compartilhar essa abordagem com a comunidade.

Engenharia de sistemas - sem padrões, mas de uma maneira simples, esse é o processo de desenvolver um sistema como um componente bastante abstrato, sem referência a modelos específicos de dispositivos. Durante esse processo, as propriedades dos componentes do sistema e os relacionamentos entre eles são estabelecidos. Além disso, é necessário tornar o sistema consistente e ideal e que o sistema atenda aos requisitos. Neste tutorial, mostrarei as técnicas de engenharia de sistemas usando o exemplo de design de um sistema de controle de acesso bastante simples (ACS).

Formamos a arquitetura inicial


Quando um sistema, não importa qual, está apenas começando a ser desenvolvido, retângulos com setas aparecem em nossas cabeças ou no papel. Esses retângulos são os componentes do sistema. E setas são conexões entre componentes. E muitas vezes não temos tempo para sentar e pensar em como todos os componentes que determinamos funcionarão entre si e, no final, começamos a criar um monte de muletas, inventando designs redundantes.

É importante lembrar que, do ponto de vista do sistema e de sua arquitetura, um componente é algo bastante abstrato. Por exemplo, se houver um microcontrolador em nosso sistema, no nível da arquitetura, apenas é importante para nós que seja um microcontrolador, e não que seja um STM32, Arduino ou Milander. Além disso, muitas vezes nem sequer entendemos o que exatamente estará no sistema e recorremos à engenharia de sistemas para desenvolver requisitos para equipamentos, software etc.

Para o nosso exemplo com o ACS, tentaremos formular seu objetivo. Isso nos ajudará a identificar seus componentes. Portanto, a tarefa dos sistemas de controle de acesso é deixar um círculo limitado de pessoas entrar na sala. Ou seja, é um bloqueio inteligente. Portanto, temos o primeiro componente - um tipo de dispositivo que trava e destranca a porta! Vamos chamá-lo DoorLock

E como sabemos que uma pessoa pode entrar? Não queremos colocar guarda e verificar passaportes? Vamos dar às pessoas cartões especiais com etiquetas RFID, nas quais escreveremos IDs únicos ou outros dados que nos permitam identificar com precisão uma pessoa. Então, precisamos de algum dispositivo que possa ler essas tags. Ótimo, temos outro componente, o RFIDReader.

Vamos analisar novamente o que conseguimos. O RFIDReader lê alguns dados, o sistema ACS faz algo com eles e, com base nisso, o DoorLock é controlado. Fazemos a seguinte pergunta - onde armazenar a lista de pessoas com direitos de acesso? Melhor em um banco de dados. Portanto, nosso sistema deve poder enviar solicitações e processar respostas do banco de dados. Portanto, temos outro componente - DBHandler . Portanto, obtivemos um resumo extremamente abstrato, mas suficiente para começar com uma descrição do sistema. Entendemos o que ela deve fazer e como funciona.

Em vez de um pedaço de papel, uso o System Composer, uma ferramenta especial para modelar arquiteturas de sistema em um ambiente Simulink e criar 3 componentes. Acima, descrevi os relacionamentos entre esses componentes, então conecte-os imediatamente:



Arquitetura em expansão


Vamos olhar para o nosso diagrama. Tudo parece estar bem, mas não realmente. Olhe para este sistema do ponto de vista do usuário - o usuário traz o cartão para o leitor e ...? Como o usuário sabe que tem acesso permitido ou negado? É necessário informá-lo de alguma forma! Portanto, adicionamos outro componente - a notificação do usuário, UserNotify :



E agora descemos para o nível de abstração mais baixo. Vamos tentar pintar alguns componentes um pouco mais detalhadamente. Vamos começar com o componente RFIDReader. Em nosso sistema, este componente é responsável pela leitura da etiqueta RFID. Sua saída deve conter alguns dados (UID, dados do usuário ...). Mas espere, RFID, como NFC, é principalmente hardware, não software! Portanto, podemos assumir que temos separadamente o chip para o próprio RFID, que transfere os dados brutos para um determinado pré-processador. No total, temos um pedaço abstrato de ferro que pode ler etiquetas RFID e um software abstrato que pode converter dados para o formato que precisamos. Nós os chamaremos de RFIDSensor e RFIDParser, respectivamente. Como exibir isso no System Composer? Você pode remover o componente RFIDReadere colocar dois componentes em seu lugar, mas é melhor não fazer isso, pois perderemos a legibilidade da arquitetura. Em vez disso, vamos entrar no RFIDReader e adicionar 2 novos componentes:



Ótimo, agora vamos notificar o usuário. Como o sistema notificará o usuário que lhe foi negado ou permitido o acesso às instalações? Uma pessoa percebe sons e algo piscando melhor. Portanto, você pode emitir um determinado sinal sonoro, para que o usuário preste atenção e pisque o LED. Adicione os componentes apropriados ao UserNotify :



Criamos a arquitetura do nosso sistema, mas algo está errado com ele. O que? Vamos dar uma olhada nos nomes das conexões. InBus e OutBus não são nomes normais que ajudariam o desenvolvedor. Eles devem ser renomeados:



Então, vimos como os métodos de engenharia de sistemas são aplicados na aproximação mais grosseira. A questão surge - por que aplicá-los? O sistema é primitivo e parece que o trabalho realizado é supérfluo. Você pode escrever código imediatamente, criar um banco de dados, escrever consultas ou soldar. O problema é que, se você não pensar no sistema, não entender como os componentes estão relacionados, a integração dos componentes do sistema continuará por um longo período de tempo e com muita dor.

A principal conclusão desta parte é a seguinte: A

aplicação de métodos de engenharia de sistemas e modelagem de arquitetura no design de sistemas permite reduzir o custo de integração de componentes e melhorar a qualidade do sistema desenvolvido.

All Articles