Skip to content

INTRODUÇÃO A ARQUITETURA DE SOFTWARE

Arquitetura é uma representação das visões de objetos, coisas ou ideias, seja de forma gráfica ou textual, em seus diferentes níveis de abstração

Abstrair é a capacidade de transformar ideias ou solicitações em representações que sejam aplicáveis para a construção de um software.

NÍVEIS DE ABSTRAÇÃO E PADRÕES ARQUITETÔNICOS

A abstração para a criação da arquitetura de um software pode ser feita em diferentes níveis, e em diferentes estilos partindo de pontos de representação do projeto.

Existem dois estilos de abstração de arquitetura:

ARQUITETURA DE ESPECIALIZAÇÃO

Parte de abstração de uma requisição a fim de obter os conceitos técnicos de forma mais concreta possível para que seja realizado o desenvolvimento do software.

  • 1º Nível: Muito abstrato, nível genérico
  • 2º Nível: Abstrato, nível intermediário
  • 3º Nível: Concreto, nível específico

ARQUITETURA DE GENERALIZAÇÃO

Parte da abstração de um conceito técnico bastante concreto para algo mais generalizado a fim de explorar novas ideias e soluções que possam ser aplicadas no software.

  • 1º Nível: Concreto, nível específico
  • 2º Nível: Abstrato, nível intermediário
  • 3º Nível: Muito abstrato, nível genérico

MODELO DE PROJETO

O modelo de um projeto de software é proveniente do modelo de análise realizado sobre a descrição do sistema que se quer desenvolver (requisitos de um software).

O modelo de análise dos requisitos de um software englobam:

  • MODELOS BASEADOS EM CENÁRIOS: Casos de uso e diagrama, histórias de usuários.

  • MODELOS DE CLASSES: Diagramas de classes, diagramas de colaboração.

  • MODELOS DE FLUXO: DFDs, modelos e dados.

  • MODELOS COMPORTAMENTAIS: Diagramas de estados, diagramas de sequências.

O modelo de análise dos requisitos serve como porta de entrada para a prototipação do modelo de projeto de software a ser desenvolvido:

  • ELEMENTOS BASEADOS EM CENÁRIOS: Casos de uso, diagramas de casos de uso, diagramas de atividades.
  • ELEMENTOS BASEADOS EM CLASSES: Diagramas de classes, pacotes de análise, modelos CRC, diagramas de colaboração.
  • ELEMENTOS DE FLUXO DE DADOS: Diagramas de fluxo de dados e de fluxo de controle, narrativa de processamento.
  • ELEMENTOS COMPORTAMENTAIS: Diagramas de estados, diagramas de sequência.

Sendo que cada um desses elementos formam as camadas do modelo do projeto:

PROJETO DE COMPONENTES: Engloba todos os elementos. PROJETO DE INTERFACES: Engloba os elementos de fluxos de dados e comportamentais. PROJETO ARQUITETURAL: Engloba os elementos de fluxo de dados e baseados em classes. PROJETO DE DADOS/CLASSES: Engloba os elementos baseados em classes.

TÉCNICAS DE ARQUITETURA

ITERATIVA

Ajuda a produzir uma solução candidata que pode ser refinada posteriormente pela repetição dos mesmos 5 passos principais, criando finalmente a arquitetura que melhor define a aplicação.

  • 1º Passo: Identificar os objetivos da arquitetura

    Identificar os objetivos de arquitetura no início, sendo que a quantidade de tempo gasto em cada fase da arquitetura e design dependerá desses objetivos.

    Identificar quem consumirá a arquitetura, que pode ser utilizado por outros arquitetos ou por desenvolvedores e testadores, equipes de operações ou gerenciamento, a finalidade é tornar o design da arquitetura o mais acessível para o público, isso inclui interatividade e necessidades do público em relação a arquitetura.

    Identificar restrições, seja de tecnologia, restrições de uso e restrições de implementação, a fim de não perder tempo no futuro durante o processo de desenvolvimento do software.

    Definição do escopo e tempo, baseando-se nos objetivos da arquitetura, entre as atividades que ajudam a definir o escopo e tempo temos: criação do design completo do sistema, construção de um protótipo, identificação dos principais riscos técnicos, testar opções possíveis e construção de modelos compartilhados para entendimento do sistema por parte dos colaboradores.

  • 2º Passo: Identificar os cenários mais importantes

    Os principais cenários são aqueles considerados os cenários mais importantes para o sucesso do sistema a ser desenvolvido, ou sejam os cenários que entregam valor ao cliente.

    Evitar riscos.

    Identificar se a arquitetura escolhida tem um peso significativo do projeto.

  • 3º Passo: Criar uma visão geral do sistema

    Rascunho das principais relações do sistema, como por exemplo: client -> web server -> data server.

  • 4º Passo: Identificar as questões/problemas mais importantes

    Identificar as necessidades do sistema como um todo, como por exemplo: desempenho, segurança, escalabilidade, capacidade de manutenção, reutilização e usabilidade.

  • 5º Passo: Definir as hipóteses de solução (criação da solução candidata)

    Criação do protótipo de arquitetura baseando-se nos principais cenários

PADRÃO ARQUITETURAL

É uma solução genérica e reutilizável para um tipo comum de problema na estrutura de um sistema de software estando mais voltado para a organização interna de um único sistema, sobre como os componentes se comunicam dentro de uma aplicação. Ou seja, são formas de estruturar o código dentro de um sistema.

Exemplos:

* Arquitetura em camadas (Apresentação → Negócio → Dados)
* MVC (Model-View-Controller)

MODELO ARQUITETURAL

Um modelo arquitetural descreve um estilo de organização de todo o sistema, incluindo como os módulos (ou serviços) se dividem, se comunicam e são implantados, estando mais voltado para o sistema como um todo gerenciando a distribuição, independência, escalabilidade e a comunicação entre as partes que compõem o sistema. Ou seja, são formas de estruturar e distribuir o sistema inteiro (não só o código, mas também a forma como ele roda e interage com outros sistemas).

Exemplos:

* Microsserviços
* Arquitetura orientada a serviços (SOA)

CONCLUSÃO

O modelo arquitetural é o tipo de construção: prédio comercial, prédio residencial, condomínio de casas, e o padrão arquitetural é como os cômodos de cada unidade são organizados: sala na frente, quartos nos fundos, cozinha no meio, etc, sendo que o melhor modelo e padrão são definidos através da abstração do projeto de software, dispondo das técnicas de definição de arquitetura.