Arquitetura de Software: Modelagem, Visões e Componentes UML

Classificado em Computação

Escrito em em português com um tamanho de 6,29 KB

Modelagem da Arquitetura: Visões do Projeto

A modelagem da arquitetura de software abrange diversas visões:

  • Visão do Projeto (Lógica): Inclui Diagrama de Estado, Diagrama de Classes e Diagrama de Interação.
  • Visão Implementação: Utiliza Diagramas de Componentes.
  • Visão Processo: Representada pelo Diagrama de Processos.
  • Visão Implantação: Utiliza o Diagrama de Implantação.
  • Visão de Casos de Uso: Envolve Diagramas de Casos de Uso e Sequência.

Projeto de Software: Níveis de Detalhamento

O projeto de software é composto por duas atividades principais:

  1. Projeto de Arquitetura de Software: É de alto nível, com granularidade macro, definindo componentes e suas interfaces de comunicação. O objetivo é satisfazer os requisitos de qualidade.
  2. Projeto Detalhado do Software: É de nível mais baixo, com granularidade micro, definindo objetos e sua colaboração para realizar as funções do sistema. O objetivo é satisfazer os requisitos funcionais.

A Arquitetura de Software está diretamente ligada aos atributos de qualidade.

Subsistemas em Orientação a Objetos (SOO)

Em um SOO, os objetos interagem enviando mensagens para executar tarefas. A arquitetura pode ser vista como um conjunto de subsistemas. A definição desses subsistemas ocorre no projeto arquitetural, que define a divisão do sistema em partes e as interfaces entre elas.

Vantagens de dividir um SOO em subsistemas:

  • Produzir unidades menores de desenvolvimento.
  • Maximizar o reuso no nível de subsistemas componentes.
  • Ajudar a gerenciar a complexidade no desenvolvimento.

Definição e Razões da Arquitetura

Arquitetura é o conjunto de decisões significativas sobre a organização de um sistema de software, incluindo a seleção dos elementos estruturais e suas interfaces.

Citação: "Arquitetura é a organização fundamental de um sistema que compreende seus componentes, seus relacionamentos uns com os outros e com o ambiente, e os princípios que guiam seu desenho e evolução."

Razões para projetar arquitetura:

  • Permitir uma avaliação da arquitetura antes da construção do produto.
  • Concentrar no problema em um nível adequado de abstração para isolar parte da sua complexidade.
  • Apoiar o planejamento da construção do produto, possibilitando estimativas de custo, esforço, prazo e a definição de partes reutilizáveis.

Padrões de arquitetura se diferenciam pelo tipo de componentes, tipo de conectores e forma de conexão.

Modelagem da Arquitetura de Software na UML

Na UML, conceitos são usados para modelar a arquitetura:

  • Visão Lógica (Projeto): Pacotes, Subsistemas, Componentes, Interfaces, Camadas.
  • Visão Implementação: Diagramas de Componentes.
  • Visão Implantação: Diagramas de Implantação.

Diagramas básicos incluem Diagramas de Pacotes e Classes.

Pacotes

Um mecanismo de agrupamento geral usado para agregar vários artefatos de um modelo. Sua notação é uma pasta com uma aba. Pode ser usado para organizar modelos em desenvolvimento e como unidade de gerenciamento de configuração. Pacotes podem formar hierarquias e ter relacionamentos de dependência entre si.

Classificador

Entidade de software que implementa os métodos dos serviços especificados em uma ou mais interfaces.

Subsistemas

Um subsistema é um classificador que corresponde a um agrupamento de classes. Realiza uma ou mais interfaces. Na UML, é representado como um pacote com o estereótipo <<subsistema>>. Subsistemas devem ser intimamente acoplados, maximamente coesivos, e dependências cíclicas devem ser evitadas.

Componentes

Além de subsistemas e classes, o componente é outro tipo de classificador.

Interfaces

Definição de Serviço: Uma tarefa que uma entidade de software realiza para outra, composta por sua especificação e método.

  • Especificação: Define o que o serviço realiza e as informações necessárias para sua execução.
  • Método: Corresponde ao modo de realizar o serviço. Dada uma especificação, podem existir diversos métodos.

Notações de Interface:

  1. Semelhante à notação de classes, exibindo as operações com o estereótipo <<interface>>.
  2. Através de um segmento de reta com um pequeno círculo em uma extremidade, ligado ao classificador que a realiza na outra. Classes clientes se conectam à interface via relacionamento de dependência.

Tipos de Interface:

  • Interface Fornecida: Uma interface provida por um componente, oferecendo um serviço a outros.
  • Interface Requerida: Uma interface à qual o componente se adapta ao solicitar serviços de outros componentes (Exemplo: cliente--()--Cep).

Camadas

Outra forma de organizar a arquitetura de sistemas complexos em partes menores. Uma camada de software é uma coleção de subsistemas. A UML não possui um elemento gráfico específico para camadas, mas pacotes podem ser utilizados para representá-las.

Visão Implementação: Componentes

A Visão Implementação expressa os componentes de uma aplicação.

Componentes (Detalhe)

Um componente é uma unidade configurável de software reutilizável em vários sistemas, substituível por outra unidade com a mesma funcionalidade. Sendo um classificador, pode prover serviços através de uma interface.

Diferenças Chave:

  • Classes representam abstrações lógicas; componentes representam coisas que vivem no mundo dos bits (conceitos físicos).

UML: "Um componente de software é um módulo, pacote ou subsistema que tem uma função e uma interface claramente definidas e pode ser integrado em um ou mais sistemas".

Entradas relacionadas: