Arquitetura em Camadas Disciplina: Engenharia de Software I Professora: Eliane Martins Camila R. Rocha RA: 022247 Sílvia C. M. Soares RA: 012895 Agenda           Introdução Características do Modelo Notação Ferramentas Decomposição Passo a Passo Domínio de Aplicação Variações do Modelo Estudo de Caso Conclusões Bibliografia Junho/2003 Arquitetura em Camadas Introdução  Inicialmente proposto por Dijkstra, em 1968  Divisão do sistema hierarquicamente em camadas  Exemplos PROTOCOLO OSI SGBD Aplicação Apresentação Sessão Transporte Enlace Físico Sist. Controle de Versões Junho/2003 Sist. Controle de Objetos Banco de Dados Sistema Operacional Arquitetura em Camadas Características do Modelo  Cada camada é um subsistema  Oferece serviços à camada imediatamente superior  Serve de cliente para a camada imediatamente inferior  Composta por componentes que tenham o mesmo nível de abstração  O acesso aos serviços pode ser realizado de duas maneiras:  Direto (componentes chamam componentes de outras camadas)  Através de uma interface única para toda a camada  Controle centralizado  Hierárquico (call return)  Decomposição modular  Suporte a ambos os modelos: orientado a objetos e funcional Junho/2003 Arquitetura em Camadas Notação  Pilha  Anel A B A  UML - Pacotes B Junho/2003 Arquitetura em Camadas Ferramentas  Ferramentas para Análise Estruturada  Exemplos: Sybase PowerBuilder SmartDraw  Ferramentas OO  Exemplos: Rational Rose Microsoft Visio Junho/2003 Arquitetura em Camadas Decomposição Passo a Passo 1. Definir o critério de abstração para o agrupamento de tarefas em uma mesma camada 2. Determinar o número de camadas 3. Nomear e definir as responsabilidades de cada camada 4. Especificar os serviços 5. Refinar as camadas 6. Especificar a interface de cada camada 7. Estruturar internamente as camadas 8. Especificar uma estratégia de tratamento de erros Junho/2003 Arquitetura em Camadas Domínio de aplicação  Aplicações que podem ser decompostas em grupos de subtarefas, onde cada grupo pertence a um nível particular de abstração. Protocolos de rede são os melhores exemplos;  Máquinas Virtuais;  APIs (Application Programming Interface);  Sistemas com acesso a banco de dados:  Cliente Servidor, Três Camadas, Web. Junho/2003 Arquitetura em Camadas Variações do Modelo  Sistema de Camadas Relaxadas  Cada camada pode usar os serviços de todas as camadas abaixo dela  Camadas Através de Herança  Algumas camadas são implementadas como classes base  As camadas mais altas herdam a implementação das camadas mais baixas  Comum em sistemas orientados a objetos Junho/2003 Arquitetura em Camadas Estudo de Caso Interface com Usuário Aplicação Base de Dados Física Junho/2003 Botões Chamada em algum andar (sobe/desce)  Solicita movimentação para algum andar  Processamento Controle Central  Tomada de decisão:  subir, descer, abrir a porta, ...  Armazena dados: Base de Dados  onde está cada elevador, andares com chamadas, chamadas por elevador  Sistema Operacional Física  Movimento elevadores Arquitetura em Camadas Estudo de Caso Botões Andar Botões Elevador Botão Andar Botão Elevador I_CC Controle Central Controle Central I_BD Base de Dados Andar Local Elev I_Física Física Elev1 ... Elevn Junho/2003 Arquitetura em Camadas Chamada em algum andar (sobe/desce)  Solicita movimentação para algum andar  Processamento  Decisão: subir, descer, abrir a porta, ...  Andar(andar, sobe, desce)  Local(elev, andar)  Elev(elev, chama_andar) Interface única (fachada) Sistema Operacional  Movimento elevadores Estudo de Caso Botão Andar Botão Elevador I_CC Controle Central I_BD Andar Local Botão Andar 7: descer Botão Elev. 3: chamada p/ andar 6 Consulta BD: onde está cada elevador, onde está elevador 3. Tomada de decisão (movimentação, atualização BD) Andar(7, 0, 1) Andar(7, 0, 1) Andar(0, 0, 0) Local(3, 4) Local(3, 6) Local(3, 7) Elev(3, 6) Elev(3, 0) Elev(3, 0) Elev I_Física Elev1 ... Elevn Junho/2003 Movimentação elev. 3 para o andar 6 Abertura / Fechamento da porta Movimentação elev. 3 para o andar 7 Abertura / Fechamento da porta Arquitetura em Camadas Conclusões  Facilidade da divisão do trabalho  Suporte ao desenvolvimento e testes incrementais  Reutilização de camadas  Possibilidade de padronização de interfaces  Manutenibilidade  Portabilidade  Algumas mudanças se propagam para as outras camadas  Menor eficiência  Nem todos os sistemas são facilmente divididos em camadas  Difícil encontrar níveis de abstração corretos  Testabilidade Junho/2003 Arquitetura em Camadas Bibliografia  DIJKSTRA, E. The structure of the “the”-multiprogramming system. Proc. ACM symposium on Operating System Principles, January 1967  BUCHSMANN, F. et. al. A System of Patterns – Pattern-Oriented Software Architecture. 1996. p. 31-51.  MARTINS, E. Projeto Arqutitetural. Transparências do curso MO409, IC-Unicamp, 2003.  KAZMAN, R., KLEIN, M. Attribute-Based Architectural Styles. 2000. Disponível em: http://www.sei.cmu.edu/ata/symposium00/Symposium_ABAS/index.ht m. Acesso em 21 mai. 2003.  CLEMENTS, P., NORTHROP, L. Software Architecture: An Executive Overview. Relatório Técnico CMU/SEI-96-TR-003, fev/1996. Junho/2003 Arquitetura em Camadas Bibliografia  BREDEMEYER CONSULTING. Introducion to Software Architecture. 2002. Disponível em: http://www.bredemeyer.com/pdf_files/ArchitectureIntroduction.PDF. Acesso em 19 mai. 2003.  BACHMAN, F., et. al. Software Architecture Documentation in Practice: Documenting Architectural Layers. Relatório Especial CMU/SEI-2000-SR-004, mar/2000.  SOMMERVILLE, I. Engenharia de Software – 6a Edição – Addison Wesley, 2003. p. 188-189.  SMARTDRAW. SmartDraw. http://www.smartdraw.com/specials/ softdesign.asp?id=15390. Acesso em jun. 2003 Junho/2003 Arquitetura em Camadas