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:
- 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.
- 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:
- Semelhante à notação de classes, exibindo as operações com o estereótipo
<<interface>>. - 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".