50
Fernando Castor e Paulo Borba Fernando Castor e Paulo Borba Documentação de Arquiteturas de Software

Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fernando Castor e Paulo BorbaFernando Castor e Paulo Borba

Documentação de Arquiteturas de Software

Page 2: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: http://www.recife.pe.gov.br/cidade/projetos/mapas/mapa0.jpg

Page 3: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new
Page 4: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fontes: http://banco.agenciaoglobo.com.br/Imagens/Preview/ 200803/d0a553a0-ce18-4dc4-97e7-79c058db89c9.jpg e http://imagens.portaisdamoda.com.br/gal83_13146lis.jpg

Page 5: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: http://www.recife.pe.gov.br/cidade/projetos/mapas/index.html

Page 6: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: http://www.transportes.gov.br/bit/estados/port/pe.htm

Page 7: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: http://www.pebodycount.com.br/ocorrencia/ocorrenciaGrafico.php

Page 8: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

http://docs.google.com/Doc?docid=0Aeq-cxjLYT32ZGRicGpuYl8zM3d0cDI0NmRr&hl=en

Page 9: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

É difcil entender um sistema complexo em sua totalidade!

Fonte: http://www.learningwonders.com/cart/images/T/humanbody04.jpg

Page 10: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Sistemas de sofware modernos são extremamente complexos

As arquiteturas de tais sistemas refetem essa complexidade

Como documentá-las?

Page 11: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Documentação de Arquiteturas

• Documenta-se visões– Não se documenta a arquitetura “inteira”

• A escolha das visões a documentar depende– Da informação que se deseja

documentar/comunicar– Das análises que serão feitas– Do público alvo

Page 12: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: Philippe Kruchten: The 4+1 View Model of Architecture. IEEE Software 12(6): 42-50 (1995)

Page 13: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Por que Documentar a Arquitetura?

Engenheiros de Requisitos

Projetstas dos Módulos

Testadores

Gerentes

Clientes

Novos arquitetos

Responsáveis por manutenção

Desenvolvedores de outros sistemas

Page 14: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

O que Documentar?

• Visões– Forças/Requisitos/Restrições

– Decisões de projeto

– Informação estrutural

– Comportamento (interações em tempo de execução)

– Interfaces

• Relacionamentos entre visões

Page 15: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new
Page 16: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Existem vários tpos de visões!

Quais usar? E por quê?

Page 17: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Módulos

Fonte: http://www.heydaycreative.com/_images/portfolio/port-cad.jpg

Page 18: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Módulos

• Mostram o sistema em termos de unidades de desenvolvimento– E dependências entre elas

• Camadas, Uso, Decomposição, Generalização

• Evidenciam diversas característcas importantes

Page 19: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de módulos evidenciam...

• facilidade de manutenção/extensão

• facilidade de compreensão

• facilidade de substtuição

• reuso

• portabilidade

• divisão de esforço de desenvolvimento

Page 20: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Módulos na UML

Fonte: Software Architecture in Practice, 2ª ed.

Page 21: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Diagramas Esquemátcos

Fonte: http://www.eclipse.org/proposals/subversive/architecture.GIF

Page 22: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Fonte: “Trading Obliviousness for Modularity with Cooperative Aspect-oriented Programming”, de Kevin Hoffman e Patrick Eugster. Submetido para publicação.

Matrizes de Estrutura de Projeto

Page 23: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Verifcando Habilidades• Para representar sua arquitetura do

Google Wave, foram usadas visões de módulos?–O que foi representado (ou poderia

ser)?–Qual notação foi empregada?

Page 24: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Componentes e Conectores

Fonte: http://img386.imageshack.us/i/devastatorvj6.jpg/#q=devastator%20transformers

Page 25: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Componentes e Conectores

• Estrutura do sistema em tempo de execução• Conectores (interações) representados de

forma explícita• Comunicação (adaptadores distribuídos)

• Coordenação (mediadores)

• Conversão (adaptadores)

• Facilitação (balanceamento de carga)

Page 26: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Úteis para Analisar...

• Desempenho• vazão, latência e uso de recursos

• Confabilidade • Disponibilidade• Protocolos de interação• Escalabilidade

Page 27: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Documentando Componentes e Conectores

• UML– Apenas a partr da versão 2.0

• Diagramas de blocos

• Notações formais

Page 28: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Um exemplo usando UML

http://docs.google.com/Doc?docid=0Aeq-cxjLYT32ZGRicGpuYl8zM3d0cDI0NmRr&hl=en

Page 29: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Um exemplo usando UML

http://docs.google.com/Doc?docid=0Aeq-cxjLYT32ZGRicGpuYl8zM3d0cDI0NmRr&hl=en

Page 30: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Arquitetura Filtros e Canos na UML

Page 31: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Diagrama de Blocos do AcmeStudio

Devem ter pelo menos uma sintaxe bem definida(idealmente uma semântica também)

Page 32: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Comportamento dos Elementos

Page 33: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

import families\AlteredLayeredFam.acme;System Normal-Bank : AlteredLayeredFam = new AlteredLayeredFam extended with { Component MySql : layerT = new layerT extended with { Property handlesAsynchRequests : boolean = false; Property layerLevel : int = 10; Property multThreaded : boolean = false; Port lowerPort : sendRequestT = new sendRequestT extended with { Property protocol : requestProtocolT = PC << default : requestProtocolT = PC; >>; ... }; ... }; Connector connMySqlPersistence = { Role r = { ... }; ... }; ...}

Especifcação Parcial em ACME

Page 34: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Alocação

Page 35: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visões de Alocação

• Relacionam elementos do sistema a elementos externos (não-sofware)

– Muito diferentes entre si

• Clarifcam questões como:

– Alocação dos componentes de sofware aos de hardware

– Alocação das tarefas de desenvolvimento aos membros da equipe

– Alocação de módulos ao ambiente de desenvolvimento• Relacionado com gerenciamento de confguração

• Infuenciam vários atributos de qualidade

Page 36: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Há problemas nesta visão de implantação?(ou é algum outro tpo de visão?)

http://www.cin.ufpe.br/~fcf3/apresentacoes/Arquitetura-Google-Wave-Parte2.ppt

Page 37: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

E nesta?

Fonte: http://my-svn.assembla.com/svn/google_wave_architecture/GoogleWave_appr2.ppt

Page 38: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visão de Implantação

Fonte: http://www.agilemodeling.com/artifacts/deploymentDiagram.htm

Notação padrão::Diagramas de implantação da UML

Alternativa:Diagramas de blocos/caixas/íconesmais simples

Page 39: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Visão de Atribuição de Trabalho

• Arquitetura auxiliando o gerenciamento do projeto

– Objetvo do desenvolvimento modular

– Útl para gerenciamento de recursos e realização de estmatvas

• Mapeamento de módulos do sistema a humanos

• Útl mesmo quando se adota componentes OTS

Page 40: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Um Exemplo de Visão de Atribuição de Trabalho

Segment Module Coordinator

WaveProvider

WaveServerCore José Dihego

MessageUpdater Ademir

WaveClient Javascript Client Davi

Communication Subsystem

Host and Remote API Provider Adauto

WaveletProcessor

Conflict Manager Rafael

Transformation Engine Paulo

Page 41: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Verifcando HabilidadesSua descrição da arquitetura do Google Wave inclui visões de alocação?

- Caso a resposta seja ``não'', por que não?

•O que você quis mostrar com elas? - Auxiliam na análise de algum atributo de

qualidade do sistema?

Page 42: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Interfaces

Page 43: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Interfaces na Arquitetura (1)

• Conceito mais amplo que nas LPs– Indicam pontos de interação direta com um

elemento– Não necessariamente

procedimentos/métodos/funções– Que tpo de coisa uma interface assim

poderia especifcar?

• Fenômenos e eventos visíveis externamente

Page 44: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Interfaces na Arquitetura (2)

• Funcionam em duas direções– Interfaces providas– Interfaces requeridas

• As requeridas especifcam– Recursos dos quais um elemento depende

• Ex. A API JDBC

– Suposições que faz sobre outros elementos• Exs. Esquema de banco de dados, sequência de

operações, modelo de interação

Page 45: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Representando Interfaces Grafcamente

• Em geral, dêem preferência às Opções 1 e 2

Fonte: Sofware Architecture in Practce, 2nd ed, 2003.

Page 46: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

1. Identificação da Interface

2. Recursos providos• Sintaxe• Semântica/restrições (pré- e pós-condições)

3. Tipos de dados usados• Principalmente os definidos internamente

4. Erros sinalizados

5. Recursos requeridos e Suposições• Erros tratados

6. Escolhas de projeto e justificativas

7. Guia de uso

Adaptado do modelo proposto em Documenting Software Architectures, Addison-Wesley, 2003.

Page 47: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Documentando Entre Visões

Page 48: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Três Elementos Cruciais (da documentação entre visões)

• Como a documentação está organizada

• O que é a arquitetura

• Por que a arquitetura é assim

Page 49: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Modelo para Documentação Entre Visões

Page 50: Documentação de Arquiteturas de Softwarefcf3/Arquitetura de Software/Documentacao_Arqui… · import families\AlteredLayeredFam.acme; System Normal-Bank : AlteredLayeredFam = new

Obrigado!Obrigado!Dúvidas e comentários:Dúvidas e comentários: [email protected]@[email protected]@cin.ufpe.br