arquitetura de software parte 1/3 – introdução* · arquitetura de software parte 1/3 -...

33
Arquitetura de Software Parte 1/3 – Introdução* Jorge H. C. Fernandes Junho de 1999

Upload: others

Post on 09-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Arquitetura de Software Parte 1/3 – Introdução*

Jorge H. C. FernandesJunho de 1999

Page 2: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura de Software

?Este curso é baseado no livro Software Architecture in Practice, de Len Bass, PaulClements and Rick Kazman. Addison-Wesley, 1998.

Page 3: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Bibliografia

?Software Architecture in Practice. Len Bass, Paul Clements and Rick Kazman. Addison-Wesley, 1998.?Software Architecture: Perspectives on an

Emerging Discipline. Mary Shaw and David Garlan. Prentice-Hall, 1996.

Page 4: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Conteúdo

?O que é Arquitetura de Software??Arquitetura versus Design

?Visões Arquiteturais?Estilos, Modelos e Arquiteturas de

Software? Estilos Arquiteturais? Indicações de Uso de Estilos Arquiteturais

Page 5: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

O que é Arquitetura de Software?

Page 6: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura de Software (de um Programa ou Sistema Computacional)

É a estrutura, ou as estruturas, do sistema composta por:?Seus componentes de software;?As propriedades externamente visíveis

destes componentes;?Os relacionamentos entre estes?Dependem da natureza dos componentes

Page 7: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Componentes são Abstrações

?Objetos? Processos? Processadores? Bibliotecas? Bases de Dados? Produtos Comerciais??São OMITIDAS as informações sobre

componentes que NÃO são pertinentes às interações entre eles?Detalhes privados dos componentes NÃO

pertencem à arquitetura

Page 8: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Propriedades Externamente Visíveis

Dependem da abstração que se está observando, como:?Métodos que provê (objetos, classes);?Características de desempenho (processador,

rede);?Tratamento de erros (módulos);?Uso de recursos compartilhados (funções);?etc.

Page 9: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Arquitetura versus Design

Page 10: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura versus Design?Design?Objetiva a realização do sistema como uma

entidade funcional?Faz parte do software life-cycle ?Resulta dos requisitos técnicos que o sistema

deve satisfazer.?Arquitetura?Considera um maior escopo de requisitos ?confiabilidade, baixo custo, modificabilidade, segurança,

turnover de pessoal, time-to-market?horizonte de tempo que extrapola a vida de um sistema

em particular

?Representa a organização que a co-produz

Page 11: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Todo Sistema de Software Possui uma Arquitetura

?Que pode não ser conhecida pelos usuários do sistema, pelos responsáveis pela sua operação?O comportamento externo de cada

componente é parte integrante da arquitetura

Page 12: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura de Software:Primeiras Decisões de Projeto

?Restringe a implementação?Direciona estrutura organizacional?Inibe e estimula atributos de qualidade do

sistema?Permitem predições sobre qualidade dos

sistemas?Facilita análise e gerência de mudanças?Auxilia prototipagem evolucionária

Page 13: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Visões Arquiteturais

Page 14: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Sistemas possuem mais de uma Estrutura

?Diversos pontos de vista?Times e sub-times de programação? Processos e sincronizações?Módulos e processos? Subdivisão e sincronização?Desenvolvimento versus runtime

Page 15: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Visões (ou estruturas) Arquiteturais mais Comuns

?Estrutura de Módulos?Estrutura Lógica ou Conceitual?Estrutura de Processo ou de Coordenação?Estrutura Física?Estrutura de Usos?Estrutura de Chamadas?Fluxo de Dados?Fluxo de Controle?Estrutura de Classes

Unidade

Unidade

Unidade

Relação

Relação

Relação

Page 16: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura de Módulos

? Unidades são atribuições de tarefas, associadas a especificações de interfaces, código, planos de teste

? Se ligam pela relação “é-sub-módulo”, “compartilha-segredos-com”

? São usadas para alocação de recursos, planejamento e estruturação do desenvolvimento, encapsulamento, controle de configuração

Módulo A

Módulo C

Sub-Módulo

Importa Módulo B

Page 17: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura Lógica ou Conceitual

? Abstração dos requisitos funcionais de um sistema? Unidades são funções? Se interligam através da relação “compartilham-dados-

com”? Facilitam compreensão do espaço de problemas?Modelos de referência em geral são estruturas lógicas

Função A

função C

Compartilha dados

Compartilha dados Função B

Page 18: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura de Processo ou de Coordenação

? Trata de aspectos dinâmicos de um sistema em execução

? As unidades são processos ou threads? Se ligam através de relações “sincronizam-com”, “não-

podem-executar-sem”, “não-podem-executar-com”, e outras relações tratando de sincronização e concorrência

? Permitem análise de escalonamento e de desempenhoSincroniza

Compete com

Depende

Processo A

Processo C

Processo B

Page 19: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura Física

?Mapeamento do software no hardware? Unidades são processadores? Se ligam através da relação “comunica-se com”? Permitem avaliação de performance, disponibilidade e

segurança

Processador

Bridge

ProcessadorProcessador

Page 20: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura de Usos

? Unidades são procedimentos ou módulos? Se ligam através da relação “necessitam-da-presença-

de”? Facilitam a construção de sub-conjuntos de

desenvolvimento

Módulo A

Módulo C

Usa

Usa

Usa Módulo B

Page 21: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura de Chamadas

? Unidades são programas ou sub-procedimentos? Interagem pela relação “chama” ou “invoca-com-

parâmetros”? Permite rastrear o fluxo de execução de um programa e

eliminação de gargalos

Programa A

Programa C

Invoca (parâmetros)

Invoca (parâmetros)

Invoca (parâmetros) Programa B

Page 22: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Fluxo de Dados

? Unidades são programas ou módulos ? Ligam-se através da relação “pode-enviar-dados-para”? Útil para rastrear requisitos funcionais

Módulo A

Módulo C

Dados

Dados

Dados Módulo B

Page 23: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Fluxo de Controle

? Unidades são programas, módulos ou estados do sistema

? Ligam-se pela relação “se-tornam-ativos-após”? Útil para verificar o comportamento funcional do sistema

e temporização? Pode ser idêntico à estrutura de chamada quando o

controle se dá exclusivamente pela invocaçãoPrograma A

Programa C

Ativa

Precede

Ativa Módulo B

Page 24: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estrutura de Classes

? Unidades são objetos e classes.? As relações são “herda-de”, “é-uma-instância-de”? Facilitam o projeto de sistemas orientados a objetos

ImplementoroperationImp()

ConcreteImplementorAoperationImp()

ConcreteImplementorBoperationImp()

Abstractionoperation()

imp

imp.operationImpl();

RefinedAbstraction

Client

Page 25: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Estilos, Modelos e Arquiteturas

Page 26: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Conceitos usados em Arquitetura e Design

?Estilos Arquiteturais?Modelos de Referência?Arquiteturas de Referência?Arquitetura de Software?Arquitetura de Sistema

Page 27: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Relacionamentos

Modelo de Referência

EstiloArquitetural

Arquiteturade Referência

Arquiteturade Software

Arquiteturade Sistema

Page 28: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estilos Arquiteturais

?Descrição dos tipos de componentes?Padrões de ?Controle de execução?Transferência de dados

?Restrições sobre uma arquitetura? cliente-servidor, pipes-e-filtros, camadas, etc

Page 29: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Modelo de Referência

?Divisão de funcionalidade em partes, juntamente com o fluxo de dados entre estas?Características de domínios amadurecidos?Compiladores, DBMS, WWW, j2ee, etc

Page 30: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura de Referência

Modelo de referência mapeado em:?Componentes de software (os quais irão

cooperativamente implementar a funcionalidade definida no modelo de referência)? Fluxos de dados entre os componentes

Page 31: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Arquitetura de sistema

É o que está sendo executado? Processos? Processadores?CPU?Memória

?Configuração atual da rede (backbone, routers, bridges, etc)?Mapeamento de processos para servidores

Page 32: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Copyright © 1999, por Jorge H. C. Fernandes ([email protected])

Estilos Arquiteturais mais Comuns (Mary Shaw, 96)

? Data flow? Batch? Pipes e filtros

? Chamada e retorno? Programa principal e

subrotinas? Remote Procedure Call?Orientado a objetos/TAD? Camadas

? Componentes Independentes? Processos comunicantes?Cliente/Servidor

? Sistemas de eventos ? Invocação Implícita

? Centrado em Dados? Repositório? Blackboard

?Máquina virtual? Interpretador

Page 33: Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 - Introdução Jorge H. C. Fernandes Junho de 1999. Title: ArquiteturaSoftware1De3.PDF Author:

Arquitetura de Software Parte 1/3 - Introdução

Jorge H. C. FernandesJunho de 1999