Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03
Agenda 1. Arquitetura de Software 1.1.Introdução 1.2.Vantagens da Arquitetura de Software 1.3.Estilos de Arquiteturas 1.3.1. 2
Arquitetura de Software 3
Introdução O que é ARQUITETURA? Arte de projetar e construir prédios, edifícios ou outras estruturas; arquitetônica. Projeto de um sistema de computador em camadas, de acordo com a função ou prioridade. 4
Introdução O que é ARQUITETURA DE SOFTWARE? Em An Introduction to Software Architecture, David Garlan e Mary Shaw sugerem que a arquitetura de software é um nível de design voltado para questões que vão: "além dos algoritmos e das estruturas de dados da computação. A projeção e a especificação da estrutura geral do sistema emergem como um novo tipo de problema. As questões estruturais incluem organização total e estrutura de controle global; protocolos de comunicação, sincronização e acesso a dados; atribuição de funcionalidade a elementos de design; distribuição física; composição de elementos de design; escalonamento e desempenho; e seleção entre as alternativas de design." 5
Introdução O que é ARQUITETURA DE SOFTWARE? Há mais a arquiteturar do que apenas a estruturar. O artigo Working Group on Architecture da IEEE define a arquitetura como "o conceito de nível mais alto de um sistema em seu ambiente" [IEEE98]. Ele também abrange a "adequação" à integridade do sistema, às restrições econômicas, às preocupações estéticas e ao estilo. Ele não se limita a um enfoque interno, mas leva em consideração o sistema como um todo em seu ambiente de usuário e de desenvolvimento, ou seja, um enfoque externo. 6
Introdução O que é ARQUITETURA DE SOFTWARE? Casos de uso sozinhos não são suficientes para levar de requisitos a um sistema computacional. Há um algo mais necessário. Este algo mais é a arquitetura do sistema. A arquitetura são as visões comuns que todos os papéis do desenvolvimento utilizam como referência. Visão macro do sistema a ser construído. 7
Introdução Em um projeto de edificação Vários papéis: carpinteiros, pedreiros, mestres-de-obra, eletricistas, encanadores, etc. Precisam cada um de um projeto para construir sua parte. Os desenhos precisam ser consistentes entre si. Os tubos de ventilação e os canos de água não podem estar no mesmo espaço físico, por exemplo. O papel do arquiteto é criar as visões dos aspectos significantes de forma que tudo funcione junto adequadamente - visão macro. Elevadores, água, rede elétrica, ar-condicionado, saneamento, etc. Durante a construção, vários trabalhadores utilizam os desenhos do arquiteto para entender como conduzir o seu trabalho. 8
Introdução Em um projeto de software Assim como o edifício, o software é uma entidade única. O arquiteto deve apresentar esta entidade sobre várias perspectivas diferentes. Essas perspectivas são as diferentes visões: Visão de módulos Visão de execução Visão de instalação Visão de dados A arquitetura deve, em primeiro lugar, garantir os requisitos nãofuncionais! 9
Introdução O papel do arquiteto Filosofar sobre os problemas a serem resolvidos para o projeto Gerenciar os requisitos não-funcionais Definir a arquitetura Selecionar as tecnologias Avaliar a arquitetura Arquitetura colaborativa Dono da visão macro Liderança Coaching e mentoring Garantia da qualidade Projetar, desenvolver e testar 10
Introdução O papel do arquiteto Filosofar sobre os problemas a serem resolvidos para o projeto Gerenciar os requisitos não-funcionais Definir a arquitetura Selecionar as tecnologias Avaliar a arquitetura Arquitetura colaborativa Dono da visão macro Liderança Coaching e mentoring Garantia da qualidade Projetar, desenvolver e testar Não existem soluções completas e prontas para o seu projeto 10
Vantagens da Arquitetura de Software Facilita a combinação de abordagens de reuso de software (ex. Estilos, Padrões de Projeto, Componentes, etc) Possibilita análise da descrição da arquitetura nas fases iniciais do desenvolvimento (ex. propridades não funcionais ou conformidade com um estilo) Facilita a evolução do software Permite uma melhor comunicação entre os stakeholders Facilita a comunicação dos padrões adotados para o projeto e suas razões Permite uma execução estruturada e padronizada das funcionalidades do sistema 11
Estilos de Arquiteturas Um estilo arquitetural consiste de um vocabulário de elementos de projeto e um conjunto de regras de configuração que governam a combinação desses elementos Elementos Arquiteturais (de Projeto) Componentes Conectores Exemplo de regras de configuração Uma camada pode somente se comunicar com a camada adjacente no estilo Camadas 12
Estilos de Arquiteturas Definem uma família e não apenas um sistema Exemplos de Estilos A descrição da arquitetura é uma instância de um estilo Cliente-servidor Pipe-filter Camadas (Layered) 13
Conceitos É uma arquitetura onde o processamento da informação é dividido em módulos ou processos distintos. Um processo é responsável pela manutenção da informação (Servidor), Enquanto que outro é responsável pela obtenção dos dados (Cliente). BATTISTI, (2001, pág. 38). 14
Conceitos É uma abordagem da computação que separa os processos em plataformas independentes que interagem, permitindo que os recursos sejam compartilhados enquanto se obtém o máximo de benefício de cada dispositivo diferente, ou seja, Cliente/Servidor é um modelo lógico. VASKEVITCH, (1995, pág. 375). 15
Conceitos Sistema inovador surgido nos anos 90 e muito utilizado no meio corporativo, baseado em três componentes principais: gerenciamento de banco de dados, que funcionam como servidores; redes, que funcionam como meio de transporte de dados e, finalmente, softwares para acesso aos dados: Clientes. BATTISTI, (2001, pág 39). 16
Estrutura Básica Em uma rede de computadores existem uma ou mais máquinas que atuam como servidores, disponibilizando recursos para as demais máquinas, as quais atuam como clientes. 17
Estrutura Básica Temos servidores para arquivos, banco de dados, e outras funções, tais como: servidores de impressão, servidores web, etc. Servidor WEB Servidor Arquivos Servidor Impressão Servidor BD Clientes 18
Servidores: são equipamentos com maior poder de processamento e armazenamento Clientes: geralmente microcomputadores PCs ligados em rede. 19
Cliente - Principais Características Ativo; Inicia e termina as conversações com os Servidores, solicitando serviços distribuídos; Não se comunica com outros Clientes; Normalmente responsável pela entrada e saída de dados e comunicação com o usuário; Torna a rede transparente ao usuário; Hardware: pode ser um micro simples; Software: tem início e fim definido. 20
Servidor - Principais Características Reativo; Execução contínua; Recebe e responde a solicitações dos Clientes; Não se comunica com outros Servidores; Presta serviços distribuídos; Atende a diversos Clientes simultaneamente; Hardware: exige máquinas mais robustas, com grande capacidade de processamento; Software: processo sempre em execução, aguardando ser chamado pelo Cliente. 21
Aplicações em Duas Camadas Servidor Banco de Dados Clientes 22
Aplicações em Duas Camadas Foram utilizadas no início da implantação do modelo Cliente/ Servidor. Aqui, a aplicação Cliente responde pelas seguintes funções: Apresentação: O código que gera a interface visível do programa faz parte da aplicação Cliente. Todos os formulários, menus e demais elementos visuais nele estão contidos. Então uma alteração na interface do programa requer a geração de uma nova versão para todos os computadores; Lógica do Negócio: São as regras que definem como os dados serão acessados e processados. Toda a Lógica do Negócio fica no Cliente. Quando o programa Cliente é instalado, são instaladas todas as regras de acesso ao banco de dados. É necessária uma nova versão do programa cada vez que alterações ocorrerem e as regras mudarem. Também é necessário que todos os computadores que estejam com a versão anterior recebam a nova, mesmo que sejam centenas ou milhares de micros. 23
Aplicações em Duas Camadas Contribuições: Avanços para as empresas; Limitações: Dificuldade de Manutenção e gerenciamento. 24
Aplicações em Três Camadas Servidor de Aplicações Servidor Banco de Dados Clientes 25
Aplicações em Três Camadas Retira as Regras do Negócio do cliente e as centraliza em um determinado ponto, o qual é chamado de servidor de aplicações: Servidor de Aplicações Servidor Banco de Dados O acesso ao Banco de Dados é feito através das regras contidas no Servidor de Aplicações Tem-se uma maior facilidade de atualização dessas regras, pois estão centralizadas em um único ponto. 26
Aplicações em Três Camadas Características: As Regras do Negócio (lógica) foram deslocadas para o Servidor de Aplicações, então ali será determinada a maneira como os dados serão utilizados. Todo o acesso do cliente ao Banco de Dados é feito de acordo com as regras contidas no Servidor de Aplicações. Não é possível o acesso ao B. de Dados sem primeiramente passar pelo Servidor de Aplicações. No Servidor de B. de Dados reside toda informação necessária para o funcionamento da aplicação. 27
Aplicações em Três Camadas Melhoramentos: Atualização mais fácil das Regras do Negócio; Aumento da flexibilidade, conseqüentemente; Maior segurança e controle do acesso aos dados; Torna-se mais fácil manter a aplicação atualizada e garantir que todos os usuários terão acesso às alterações; Falha: Continua o problema de atualização da interface de aplicação, cada vez que sejam necessárias mudanças na interface. Porém, alterações nela são menos freqüentes do que as que ocorrem nas Regras do Negócio. 28
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Requisita página http://192.168.1.1/app/relatorio.jsp Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Solicita a execução de uma regra de negócio especifica para a geração do relatório Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Realiza consulta de todos os dados necessários para a geração do relatório Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Retorna todos os dados para o processamento do relatório Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Retorna todos o relatório processado, com as informações consolidadas Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Retorna o relatório formatado, conforme padrão de visualização, visualização amigável dos dados e com navegabilidade Clientes InternetExplorer 29
Aplicações em Quatro Camadas Servidor WEB TomCat Servidor de Aplicações JBoss Servidor de Banco de Dados SQLServer Clientes InternetExplorer Servidor WEB TomCat Servidor WEB TomCat Servidor de Aplicações JBoss 30
Aplicações em Quatro Camadas Cliente: Navegador; Apresentação: Servidor Web, onde serão feitas as alterações de interface; Lógica (Regras do Negócio): Servidor de Aplicações, onde serão feitas as alterações nas regras do negócio, quando necessárias; Dados: Servidor de Banco de Dados, com todas as informações necessárias. 31
Aplicações em Quatro Camadas Vantagens Serviços Recursos Protocolos Localização Descentralização Escalabilidade Disponibilidade Integridade Desvantagens Complexidade Comunicação 32
Contatos Rodrigo Videschi +55 34 3221-7782 rodrigo.videschi@wpmo.com.br http://www.wpmo.com.br 33