Prévia do material em texto
Arquitetura de Software Parte 1/3 – Introdução* Jorge H. C. Fernandes Junho 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, Paul Clements 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 desempenho Sincroniza 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ção Programa 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 Implementor operationImp() ConcreteImplementorA operationImp() ConcreteImplementorB operationImp() Abstraction operation() 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 Estilo Arquitetural Arquitetura de Referência Arquitetura de Software Arquitetura de 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. Fernandes Junho de 1999