DEV Community

Higor Diego
Higor Diego

Posted on

2

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.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay