Arquitetura de fluxo de dados
Na arquitetura de fluxo de dados, todo o sistema de software é visto como uma série de transformações em partes consecutivas ou conjunto de dados de entrada, onde os dados e as operações são independentes uns dos outros. Nesta abordagem, os dados entram no sistema e então fluem pelos módulos um por vez até que sejam atribuídos a algum destino final (saída ou armazenamento de dados).
As conexões entre os componentes ou módulos podem ser implementadas como fluxo de E / S, buffers de E / S, tubulações ou outros tipos de conexões. Os dados podem ser voados na topologia de grafo com ciclos, em uma estrutura linear sem ciclos, ou em uma estrutura do tipo árvore.
O principal objetivo desta abordagem é atingir as qualidades de reutilização e modificabilidade. É adequado para aplicativos que envolvem uma série bem definida de transformações de dados independentes ou cálculos em entradas e saídas definidas de maneira ordenada, como compiladores e aplicativos de processamento de dados de negócios. Existem três tipos de sequências de execução entre os módulos -
- Sequencial em lote
- Modo de tubulação e filtro ou pipeline não sequencial
- Controle do processo
Sequencial em lote
Sequencial em lote é um modelo clássico de processamento de dados, no qual um subsistema de transformação de dados pode iniciar seu processo somente depois que seu subsistema anterior está completamente concluído -
O fluxo de dados transporta um lote de dados como um todo de um subsistema para outro.
As comunicações entre os módulos são realizadas através de arquivos intermediários temporários que podem ser removidos por subsistemas sucessivos.
É aplicável para os aplicativos em que os dados são agrupados e cada subsistema lê arquivos de entrada relacionados e grava arquivos de saída.
A aplicação típica dessa arquitetura inclui processamento de dados de negócios, como cobrança bancária e de serviços públicos.
Vantagens
Fornece divisões mais simples em subsistemas.
Cada subsistema pode ser um programa independente trabalhando em dados de entrada e produzindo dados de saída.
Desvantagens
Fornece alta latência e baixa taxa de transferência.
Não fornece simultaneidade e interface interativa.
O controle externo é necessário para a implementação.
Arquitetura de tubulação e filtro
Essa abordagem enfatiza a transformação incremental de dados por componentes sucessivos. Nessa abordagem, o fluxo de dados é orientado por dados e todo o sistema é decomposto em componentes de fonte de dados, filtros, tubos e coletores de dados.
As conexões entre os módulos são fluxos de dados que são o buffer first-in / first-out que pode ser um fluxo de bytes, caracteres ou qualquer outro tipo desse tipo. A principal característica desta arquitetura é sua execução simultânea e incrementada.
Filtro
Um filtro é um transformador de fluxo de dados independente ou transdutores de fluxo. Ele transforma os dados do fluxo de dados de entrada, os processa e grava o fluxo de dados transformado em um tubo para o próximo filtro processar. Funciona em modo incremental, no qual começa a funcionar assim que os dados chegam pelo tubo conectado. Existem dois tipos de filtros -active filter e passive filter.
Active filter
O filtro ativo permite que os tubos conectados puxem e eliminem os dados transformados. Ele opera com tubo passivo, que fornece mecanismos de leitura / gravação para puxar e empurrar. Este modo é usado no canal UNIX e mecanismo de filtro.
Passive filter
O filtro passivo permite que os tubos conectados enviem e retirem dados. Ele opera com um canal ativo, que extrai dados de um filtro e os envia para o próximo filtro. Deve fornecer mecanismo de leitura / gravação.
Vantagens
Fornece simultaneidade e alto rendimento para processamento excessivo de dados.
Oferece capacidade de reutilização e simplifica a manutenção do sistema.
Fornece modificabilidade e baixo acoplamento entre filtros.
Oferece simplicidade, oferecendo divisões claras entre quaisquer dois filtros conectados por tubo.
Oferece flexibilidade ao suportar execução sequencial e paralela.
Desvantagens
Não é adequado para interações dinâmicas.
Um baixo denominador comum é necessário para a transmissão de dados em formatos ASCII.
Sobrecarga da transformação de dados entre filtros.
Não fornece uma maneira de os filtros interagirem cooperativamente para resolver um problema.
É difícil configurar essa arquitetura dinamicamente.
Tubo
Pipes não têm estado e carregam fluxos binários ou de caracteres que existem entre dois filtros. Ele pode mover um fluxo de dados de um filtro para outro. Pipes usam poucas informações contextuais e não retêm informações de estado entre as instanciações.
Arquitetura de Controle de Processo
É um tipo de arquitetura de fluxo de dados em que os dados não são sequenciais em lote nem fluxo em pipeline. O fluxo de dados vem de um conjunto de variáveis, que controla a execução do processo. Ele decompõe todo o sistema em subsistemas ou módulos e os conecta.
Tipos de subsistemas
Uma arquitetura de controle de processo teria um processing unit para alterar as variáveis de controle do processo e um controller unit para calcular a quantidade de mudanças.
Uma unidade controladora deve ter os seguintes elementos -
Controlled Variable- Variável controlada fornece valores para o sistema subjacente e deve ser medida por sensores. Por exemplo, velocidade no sistema de controle de cruzeiro.
Input Variable- Mede uma entrada para o processo. Por exemplo, a temperatura do ar de retorno no sistema de controle de temperatura
Manipulated Variable - O valor da variável manipulada é ajustado ou alterado pelo controlador.
Process Definition - Inclui mecanismos para manipulação de algumas variáveis de processo.
Sensor - Obtém valores de variáveis de processo pertinentes ao controle e pode ser usado como referência de feedback para recalcular variáveis manipuladas.
Set Point - É o valor desejado para uma variável controlada.
Control Algorithm - É usado para decidir como manipular variáveis de processo.
Áreas de aplicação
A arquitetura de controle de processo é adequada nos seguintes domínios -
Projeto de software de sistema embutido, onde o sistema é manipulado por dados variáveis de controle de processo.
Aplicações, cujo objetivo é manter as propriedades especificadas das saídas do processo em determinados valores de referência.
Aplicável para controle de cruzeiro de carro e sistemas de controle de temperatura de edifícios.
Software de sistema em tempo real para controlar freios antibloqueio de automóveis, usinas nucleares, etc.