arquitetura de software universidade federal de pernambuco centro de informática recife - brazil

77
Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Upload: internet

Post on 19-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Arquitetura de Software

Universidade Federal de Pernambuco Centro de InformáticaRecife - Brazil

Page 2: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Raízes da disciplina Dijkstra, 1968

particionamento

estruturação

não só a programação

Parnas, 1970 - 1972 estruturação

famílias de programas

– economia no desenvolvimento e na manutenção

Page 3: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Raízes da disciplina

DeRemmer, 1975

programming-in-the-large : programação da estrutura

comum em sistemas distribuídos

programming-in-the-small: programação das “funções” do

sistema

uso comum (C, Pascal)

Page 4: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Idéias fundamentais da Arquitetura de Software

Estrutura é o ponto chave

Reusabilidade de elementos de “grande escala”

A orientação a objetos reusa elementos de

“pequena escala”

Page 5: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Motivação problemas

aumento do tamanho dos softwares aumento na complexidade dos softwares

A importância da Arquitetura de Software para os projetistas de software nos anos 90 é comparável a importância das estruturas de dados para os programadores nos anos 60

Page 6: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Vantagens

sistemas podem ser construídos rapidamente

reusando-se ou gerando-se grandes componentes

desenvolvidos independentemente

predizer qualidades (desempenho,

mantenabilidadde) do sistema a partir de sua

arquitetura, sem um projeto ou um código detalhado

Page 7: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Introdução

Vantagens comunicação

decisões de projeto nas fases iniciais

restrições sobre a implementação

predizer atributos de qualidade

base para treinos de iniciantes

visão do sistema e das mudanças

transferência de conhecimento

linhas de produtos

Page 8: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Termo

Disciplina

área emergente da ES aborda as questões ligadas à estrutura do software Estrutura do software

várias definições nenhuma aceita como padrão semelhanças no núcleo das definições e diferenças nas características adicionais

Page 9: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Definição 1

“Uma arquitetura de software deve conter: a definição dos elementos de projeto que

compõe o software; a descrição das interações entre estes elementos; os padrões de

composição dos elementos; e um conjunto de restrições sobre

estes padrões.”

Page 10: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Definição 2

“A descrição da arquitetura de software é um passo intermediário

entre a análise de requisitos e o projeto. Esta descrição consiste de

elementos arquiteturais, as interações entre estes elementos, e as restrições sobre estes elementos

e sobre as suas interações.”

Page 11: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Definição 3

“Uma arquitetura de software é um conjunto de componentes

genéricos junto com uma descrição de propriedades, regras

de como estes componentes podem interagir, e estilo de

interação destes componentes.”

Page 12: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Definição 4

“Arquitetura de software é a estrutura de

um programa ou um sistema, seus relacionamentos e os princípios

que guiam o seu projeto e a sua

evolução no tempo.”

Page 13: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Modelos

Perry & Wolf, 1992

elementos

– processamento, armazenamento, interação

formas

– propriedades dos elementos

rationale

– restrições de composição dos elementos

Page 14: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Modelos

Shaw & Garlan, 1996

Componentes

Conectores

Configuração

Page 15: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Componentes

modela a computação e o armazenamento de informações

desenvolvido independentemente

exemplos de componentes

cliente

servidor

aplicação inteira

Page 16: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Conectores

modela as interações entre os componentes

desenvolvido independentemente

exemplos de conectores

protocolos de comunicação

Page 17: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Configuração

topologia

composição

conjunto de componentes combinados usando-se os

conectores

grafo de componentes e conectores ligados,

descrevendo uma estrutura arquitetural

Page 18: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Visão de uma Arquitetura de Software

C++Java

C

Componente

Conector

Configuração

Page 19: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Componentes e formas de interação

Módulos Chamada de procedimento Dados compartilhados Objetos Invocação de método Filtros Fluxo de dados ( pipe ) Processos Passagem de mensagem, RPC Arquivo de dados Leitura e escrita Base de dados Consulta

Componentes Tipos de interação

Page 20: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Módulos

Módulo

Módulo

Módulo

Chamada de Procedimento

Page 21: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Objetos

Objeto

Objeto

Objeto

Invocação de método

Page 22: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Programas e funções

funções

ProgramaPrincipal

funções

funções

funções

Chamada de função

Page 23: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Software X Hardware

número pequeno de elementos de projeto mudança de escala com a replicação dos elementos de projeto ênfase na organização e configuração

Arquitetura de Hardware

grande número de elementos de projeto mudança de escala com a adição de novos elementos de projeto ênfase na organização e configuração

Arquitetura de Software

Page 24: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Software X Redes de Computadores

nós conexões poucas topologias

Arquitetura de Rede

componentes conectores muitas topologias

Arquitetura de Software

Page 25: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Software X Arquitetura de Construção

visões enfatizando diferentes aspectos da construção restrição sobre os elementos de projeto e a composição estreita relação entre o estilo arquitetural e os princípios de engenharia a relação entre o estilo e o material utilizado para a construção é fundamental

Arquitetura de Construção

visões para diferentes e usuários estilos arquiteturais

princípios de engenharia e estilo arquitetural

implementação ( algoritmos e estrutura de dados que satisfazem a arquitetura )

Arquitetura de Software

Page 26: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Sobre Arquitetura de Software

descrição mais abstrata no ciclo de vida do software

suprime detalhes da implementação

Arquitetura de Software sempre existiu, mas era implícita

Page 27: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Sobre Arquitetura de Software separação de interesses

funcionalidade interação

Arquitetura de Software separa claramente a funcionalidade (componentes) da interação (conectores)

Page 28: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Sobre Arquitetura de Software

Funcionalidade+interação

interaçãoFuncionalidade

Page 29: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Sobre Arquitetura de Software define aspectos estruturais importantes

fornece uma base para as outras fases de desenvolvimento do software

a arquitetura é normalmente descrita usando-se linhas e caixas de diagramas acompanhados por uma descrição textual

Page 30: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Desenvolvimento de software

Implementação Implementação

Desenvolvimento tradicional Desenvolvimento baseado em arquitetura

Arquitetura

Análise do domínio

Desenvolver / escolher a arquitetura

Representação da arquitetura

Análise e avaliação da arquitetura

Análise de requisitos Análise de requisitos

Projeto Projeto

Page 31: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Arquitetura X Projeto

componentes e conectores

restrições sobre componentes

e conectores

composição de componentes

Arquitetura

procedimentos e interfaces

algoritmos e estruturas de

dados

composição procedural

Projeto

Page 32: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Por que definir uma Arquitetura?

reuso de elementos de projeto permitindo maior

rapidez na construção do software

definindo-se uma arquitetura é possível predizer

algumas características do software

Page 33: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Por que definir uma Arquitetura?

facilita a comunicação entre os desenvolvedores do

software

permite um entendimento maior da evolução do

software

Page 34: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Princípios

Por que definir uma Arquitetura?

possibilidade de análise da descrição da arquitetura

nas fases iniciais do desenvolvimento

consistência da configuração, componentes e conectores

propriedades não funcionais

conformidade com um determinado estilo

Page 35: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Termo

padrão organizacional

padrão arquitetural

padrão idiomático

padrão de organização estrutural

idioma arquitetural

Page 36: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Termo

“Um estilo arquitetural consiste de um vocabulário de elementos de projeto, um conjunto de regras de configuração, uma

interpretação semântica da composição dos elementos, e um conjunto de análises que podem ser executadas sobre um sistema

construído em um determinado estilo.”

Page 37: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Termo

Vocabulário

idioma de projeto

restringe os elementos arquiteturais que podem ser

utilizados em uma descrição de arquitetura

elementos arquiteturais:

componentes , conectores

Page 38: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Regras de Configuração

restrições topólogicas

restrigem as composições dos elementos

arquiteturais

proibição de ciclos no estilo Fipe-filter

relacionamento n-para-1 no estilo Cliente-servidor

Page 39: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Análise

verificação de propriedades

ausência de impasses em um estilo Cliente-servidor

Page 40: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Sobre estilo arquitetural

uso ad hoc

“Camelot é baseado no modelo Cliente-servidor e usa

RPC para comunicação remota e local dos clientes e

servidores”

Page 41: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Sobre estilo arquitetural

define uma família e não apenas um sistema

explora os pontos comuns entre famílias de

sistemas e ignora detalhes específicos

a construção de compiladores é o primeiro exemplo

do uso de estilos

Page 42: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Sobre estilo arquitetural a descrição da arquitetura é uma instância de um estilo

exemplos Cliente-servidor

Pipe-filter

Objetos

Invocação implícita

Camadas, repositórios

Page 43: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Arquitetura de software

Servidor

Cliente

Cliente

Cliente

Request-reply

Estilo Cliente-servidor

Page 44: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Arquitetura de software

Pipe

Filtro

Filtro

Filtro

Estilo Pipe-Filter

Page 45: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Arquitetura de software

Pipe

Filtro

Filtro

Filtro

Estilo Pipe-Filter

Page 46: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Por que definir estilos

reuso de projetos

reuso de código

o uso de estruturas convencionais facilita o

entendimento da arquitetura

“cliente-servidor”

Page 47: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Estilos Arquiteturais

Por que definir estilos

a restrição do espaço de projeto permite análises

mais especializadas para os estilos

“menos é mais”

Page 48: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

ADL - Architecture Description Language

O que podemos esperar de uma linguagem para

descrição de arquitetura de software?

ênfase em estruturas de alto nível em oposição a

detalhes de implementação

Page 49: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Composição

divisão hierárquica de um sistema complexo em partes

menores

Abstração

explicitar a estrutura de mais alto nível

Reusabilidade

componentes, conectores e padrões de arquitetura

Page 50: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Configuração

separação da descrição de estruturas compostas da

descrição dos elementos dessas composições

Análise

permite verificar propriedades dos sistemas, especialmente

referentes a Arquiteturas Dinâmicas

Page 51: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Heterogeneidade

habilidade para combinar diferentes padrões arquiteturais

em um mesmo sistema

possibilidade de combinar componentes escritos em

linguagens diferentes

Page 52: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

habilidade para representar componentes (primitivos ou

compostos)

habilidade para representar conectores

abstração e encapsulamento

tipos e checagem de tipos

permitir a construção de ferramentas de análise

Page 53: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

abstração de componentes

abstração de comunicação

integridade de comunicação

a comunicação é limitada a componentes conectados

arquiteturalmente a outros

habilidade de modelar arquiteturas

Page 54: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de componentes

conceitos diferentes em cada ADL MetaH

– um programa

C2

– uma aplicação inteira (componentes hierárquicos)

Wright

– componente

Page 55: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de componentes

interfaces de componentes

pontos de interação com o ambiente externo

permitem a percepção da semântica dos componentes

– serviços oferecidos

– portas de comunicação

Page 56: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de componentes

componentes como tipos para serem reusados

uso explícito de parametrização

ACME, Darwin e Rapide

Page 57: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de componentes

restrições podem ser definidas por uma linguagem

específica

componentes podem evoluir

subtipagem de componentes

refinamento

Page 58: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de componentes

especificação de propriedades não-funcionais

permite simulação do comportamento em tempo de execução

análise dos componentes

verificação de restrições

auxilia no gerenciamento do projeto

Page 59: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de conectores

não necessariamente corresponde a uma unidade

de compilação em uma implementação

podem ser modelados explicitamente

possuem interface própria

Page 60: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de conectores

podem ser modelados como entidades de primeira

classe

tipos ou instâncias

estabelecer restrições de uso via interface

suportar evolução

Page 61: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações

a estrutura de um sistema deve, idealmente,

permitir que a especificação da configuração seja

compreendida sem se conhecer detalhes internos

dos componentes e os conectores

Page 62: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações

descrição de configurações permite estimar

aspectos concorrentes e distribuídos de uma

arquitetura

ADLs podem modelar evolução e dinamismo das

configurações

Page 63: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações

suporte à composição hierárquica é fundamental em

uma ADL

em algumas ADLs uma configuração é modelada

simplesmente como um componente composto

Darwin, UniCon, CL

Page 64: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações

heterogeneidade

uma configuração deve idealmente lidar com componentes

e conectores programados em diversas linguagens

Page 65: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações

a especificação de restrições é fundamental para

descrever dependências entre componentes e

conectores

Uma ADL deve permitir refinamento da arquitetura

Page 66: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Modelagem de configurações devem suportar especificação e desenvolvimento de

sistemas que possam sofrer alterações durante sua execução.

C2

Darwin

Rapide

ZCL

Wright

Page 67: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - Sistema de Monitoramento de Pacientes

O sistema de monitoramento de pacientes consiste

de medições periódicas ou por solicitação de pulso, temperatura e pressão através de

sensores colocados no paciente. Tais sensores disparam um alarme sempre que

qualquer das medições atingirem valores não adequados.

Page 68: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo

Paciente

estado

alarmealarme

estado

Enfermeira

Hospital

Page 69: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - CL

system hospital

begin

use task enfermeira, paciente;

create cama from paciente;

create cuidado from enfermeira ;

link cama.alarme to cuidado.alarme;

link cuidado.estado to cama.estado;

activate cuidado, cama;

end.

Page 70: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Wright Componentes

interface (portas)

computação (comportamento)

Conectores Role (comportamento de um único participante)

Glue (comportamento completo)

Configuração componentes + conectores

Page 71: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - pipe-filter

Este sistema lê um conjunto caracteres e transforma-os em caracteres maiúsculos

Page 72: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - pipe-filter

UpperCaseinput output

Mergeleft

right

Split

left

right

Page 73: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - pipe-filter

Component SplitFilter port input [entrada de dados] port left [porta de saída para o UpperCase] port right [porta de saída para o Merge] computation [lê dados e envia-os para as portas de saída]

Splitleft right

Page 74: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - pipe-filter

Connector Pipe role Source [envia dados repetidamente] role Sink [recebe dados repetidamente] glue right [Sink recebe dados na mesma ordem

que foram enviados por Source]

UpperCaseinput output

Page 75: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Configuration CapitaliseComponent UpperCase ...Component MergeFilter ...Component SplitFilter ...Connector Pipe ...Instances

Split : SplitFilterUpper: UpperCaseMarge: MergeFilterP1, P2, P3 : Pipe

Attachments Split.left as P1.Source

Upper.input as P1.SinkSplit.right as P2.SourceMerge.right as P2.SinkUpper.output as P3.SourceMerge.left as P3.Sink

End Capitalise.

Componentes

Conector

Instanciação

Configuração

Page 76: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Exemplo - incluindo comportamento

A Bout in

C

A||C||B

{a} {a,c} {b,c}

Page 77: Arquitetura de Software Universidade Federal de Pernambuco Centro de Informática Recife - Brazil

Linguagem de Descrição de Arquitetura

Configuration ABCComponent A-Type

Port Out =a Out � Computation = Out.a Computation �

Component B-Type Port In = c In � Computation = In.c b Computation �

Connector C-TypeRole Origin = a Origin � Role Target = c Target � Glue Origin = Origin.a Target.c Glue �

InstancesA : A-TypeB : B-TypeC : C-Type

AttachmentsA.Out as C.OriginB.In as C.Target

End ABC.