Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Arquitetura de Software Parte 1/3 – Introdução*
Jorge H. C. FernandesJunho de 1999
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.
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.
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
O que é Arquitetura de Software?
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
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
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.
Arquitetura versus Design
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
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
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
Visões Arquiteturais
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
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
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
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
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
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
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
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
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
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
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
Estilos, Modelos e Arquiteturas
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
Copyright © 1999, por Jorge H. C. Fernandes ([email protected])
Relacionamentos
Modelo de Referência
EstiloArquitetural
Arquiteturade Referência
Arquiteturade Software
Arquiteturade Sistema
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
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
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
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
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
Arquitetura de Software Parte 1/3 - Introdução
Jorge H. C. FernandesJunho de 1999