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

Post on 09-Jun-2020

10 views 0 download

Transcript of Arquitetura de Software Parte 1/3 – Introdução* · Arquitetura de Software Parte 1/3 -...

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

Jorge H. C. FernandesJunho de 1999

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

Arquitetura de Software

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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.

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

O que é Arquitetura de Software?

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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.

Arquitetura versus Design

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Visões Arquiteturais

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Estilos, Modelos e Arquiteturas

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

Conceitos usados em Arquitetura e Design

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

Relacionamentos

Modelo de Referência

EstiloArquitetural

Arquiteturade Referência

Arquiteturade Software

Arquiteturade Sistema

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

Copyright © 1999, por Jorge H. C. Fernandes (jorge@dimap.ufrn.br)

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

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

Jorge H. C. FernandesJunho de 1999