DEV Community

Higor Diego
Higor Diego

Posted on

Projetando Arquitetura de Software: Attribute Driven Design (ADD)

Pattern ADD

A origem do Attribute Driven Design (ADD) pode ser rastreada até a década de 90, quando foi desenvolvido pelo Software Engineering Institute (SEI) do Carnegie Mellon University. Ele foi criado como uma abordagem para o projeto de software que se concentra em identificar e modelar atributos (características) de um sistema que são importantes para seus usuários e stakeholders, com o objetivo de criar sistemas que sejam altamente adaptáveis, fáceis de manter e escaláveis, e que atendam às necessidades dos usuários e stakeholders.

O Attribute Driven Design (ADD) foi originalmente desenvolvido para aplicações de software de missão crítica, como sistemas de controle de tráfego aéreo e sistemas de gerenciamento de energia, mas tem sido utilizado em uma variedade de outros tipos de projetos de software desde então. Ele tem sido amplamente utilizado e pesquisado no setor aeroespacial, militar e de defesa, mas também tem aplicações em outros setores, incluindo transporte, saúde, finanças e tecnologia da informação.

Antes de iniciar o esboço da arquitetura, deve-se avaliar os atributos de qualidade como: escopo do sistema, interfaces internas/externas, objetivo do projeto, requisitos funcionais, cenários de qualidade, restrições e preocupações.

Segue abaixo etapas do Attribute Driven Design (ADD) e a forma que é feita suas iterações.

Modelagem

Passo 1: Revisão de entradas

Antes de iniciar uma implementação do primeiro passo as etapas de finalidade de projeto, requisitos funcionais, cenários de atributos de qualidade, restrições e preocupações anteriores deverão ser analisadas para garantir a iteratividade das etapas 2 a 7.

Passo 2: Filtro de elemento para sistema

Neste passo você escolhe qual elemento do sistema será o foco do projeto para iteração das etapas subsequentes.

Passo 3: Escolha de um ou mais elemento para refinamento.

Neste passo analisamos o elemento escolhido para decompor e listar as prioridades de requisitos dos stakeholders que afetam o elemento. Eles podem colocar como prioridade Alta, Média ou baixa de cada requisito enumerado.

Passo 4: Escolha de um ou mais conceito de design.

Neste passo, precisamos escolher nosso conceito de design, o que sifnifica escolher os principais tipos de elementos e seus relacionamentos.

Você pode identificar as preocupações associadas ao seu design e os componentes de arquitetura que tendem a resolver a problemática.

Passo 5: Lista de elementos de arquitetura.

Neste passo, você tem em mãos vários tipos de elementos de software escolhido no passo anterior. Este elementos são atribuídas responsabilidades de acordo com o seu tipo.
A responsabilidade dos elementos enumerados são derividados por cada requisito funcional associado a ele.

Passo 6: Visualização do esboço.

Neste passo, os serviços e propriedades necessários e fornecidos para cada elemento são chamados de interface e não simplesmenete uma lista de componente de operação. As interfaces pode incluir qualuqer um dos seguintes pontos:

  • sintaxe das operações (por exemplo, assinatura)
  • semântica de operações (por exemplo, descrição, pré e pós-condições, restrições)
  • informações trocadas (por exemplo, eventos sinalizados, dados globais)
  • requisitos de atributo de qualidade de elementos ou operações individuais
  • Manipulação de erros.

Passo 7: Analise de perfomance

Nesta passo, será analisado o trabalho que foi realizado nas etapas anteriores com intuito de não ter um retrabalho. Nesta etapa o arquiteto poderá voltar para etapa 2 e começar tudo de novo caso algo saia fora do contexto. Se tudo ocorrer conforme esperado o próximo passo é fornecer um novo elemento para uma nova iteração para que o passo 1 seja iniciada.

No modelo Attribute Driven Design (ADD) existem várias vantagens, que são:

  • Foco no usuário: O ADD se concentra em identificar e modelar os atributos que são importantes para os usuários e stakeholders, garantindo que o sistema atenda às suas necessidades e expectativas.

  • Arquitetura flexível: Ao modelar os atributos do sistema, o ADD permite uma arquitetura flexível e adaptável, que pode ser facilmente modificada e escalada conforme as necessidades do sistema mudam.

  • Manutenção fácil: Como o ADD se concentra em atributos importantes e relevantes, os sistemas projetados com essa abordagem tendem a ser mais fáceis de manter e escalar.

  • Comunicação eficaz: O ADD ajuda a criar uma comunicação eficaz entre os desenvolvedores, usuários e stakeholders, tornando mais fácil alinhar expectativas e garantir que o sistema atenda às necessidades de todos os envolvidos.

  • Redução de custos: Ao projetar sistemas com arquitetura flexível, fácil de manter e escalar, o ADD pode ajudar a reduzir custos de manutenção e desenvolvimento a longo prazo.

O Attribute Driven Design (ADD) pode ser utilizado em uma variedade de projetos de software, incluindo:

  • Sistemas de missão crítica: ADD foi originalmente desenvolvido para aplicações de software de missão crítica, como sistemas de controle de tráfego aéreo e sistemas de gerenciamento de energia.

  • Sistemas embarcados: ADD é uma abordagem popular para o projeto de sistemas embarcados, como dispositivos móveis, sistemas de automação industrial e veículos autônomos.

  • Sistemas de gerenciamento de dados: ADD pode ser usado para projetar sistemas de gerenciamento de dados, como bancos de dados distribuídos, sistemas de gerenciamento de armazenamento e sistemas de gerenciamento de big data.

  • Sistemas de segurança: ADD pode ser usado para projetar sistemas de segurança, como sistemas de detecção de intrusão, sistemas de gerenciamento de acesso e sistemas de proteção de dados.

  • Sistemas de tempo real: ADD é uma abordagem popular para o projeto de sistemas de tempo real, como sistemas de controle de processos, sistemas de gerenciamento de tráfego e sistemas de gerenciamento de operações.

  • Sistemas distribuidos: ADD pode ser usado para projetar sistemas distribuídos, como sistemas de gerenciamento de nuvem, sistemas de gerenciamento de borda e sistemas de Internet das coisas (IoT).

  • Além disso, ADD pode ser aplicado em outros tipos de projetos de software, dependendo da necessidade.

Conclusão

O ADD pode ser aplicado em uma variedade de projetos de software, incluindo sistemas de missão crítica, embarcados, gerenciamento de dados, segurança, tempo real e distribuidos. Ele é uma abordagem útil para o projeto de software, pois permite que os desenvolvedores criem sistemas que sejam altamente adaptáveis, fáceis de manter e escaláveis, e que
atendam às necessidades dos usuários e stakeholders.

Espero ter ajudado, até a próxima.

Top comments (0)