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.
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)