fea/usp faculdade de economia, administração e contabilidade da universidade de são paulo...

36
FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos Prof.Dr. Antonio Geraldo da Rocha Vidal

Upload: agustina-carreira-borja

Post on 07-Apr-2016

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

FEA/USPFaculdade de Economia, Administração e Contabilidade da

Universidade de São Paulo

Tecnologia de Informática

Arquitetura deSistemas Aplicativos

Prof.Dr. Antonio Geraldo da Rocha Vidal

Page 2: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Arquitetura de uma Aplicação Web

Page 3: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Funções das Camadas naArquitetura do Sistema Aplicativo

Camada Responsabilidade Funções Ferramentas Aplicativo do usuário

Prover interface compreensível e eficiente.

Apresentação, entrada, navegação e análise de dados.

Ferramentas gráficas, linguagem de programação e componentes.

Regras de negócio Estabelecer a política dos negócios: regras e heurística. Preparar respostas para o usuário.

Tomada de decisões, imposição da política, cálculos, coordenação de recursos.

Linguagem de programação e componentes.

Banco de dados Manter dados consistentes, atualizados e seguros.

Manutenção, atualização, integridade e segurança de dados

Banco de dados, linguagem de banco de dados e XML.

Page 4: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Arquitetura em Camadas

A arquitetura em camadas é lógica e não física. Se preocupa com as funções do aplicativo e não com

sua implementação. Essa mesma arquitetura pode ser usada para elaborar

sistemas distribuídos ou centralizados, tradicionais, Cliente/Servidor ou para a Web.

Entretanto, a utilização dessa arquitetura facilita a distribuição dos componentes do aplicativo, quando for preciso por razões de negócios, tecnológicas ou ambas.

Page 5: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Benefícios daArquitetura em Camadas

Estrutura para elaboração de aplicativos flexíveis que possam ser alterados com facilidade para atender às necessidades de negócios em constante mudança.

Alto nível de reutilização de software. Desenvolvimento mais fácil de aplicativos grandes e

complexos em ambientes transacionais, Web e de suporte à decisão.

Desenvolvimento mais fácil de aplicativos distribuídos que dão suporte ao gerenciamento central, a equipes auto gerenciadas e ao atendimento externo.

Page 6: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Como DesenvolverSistemas Aplicativos Complexos?

Abstração:– É uma técnica analítica para dividir um sistema em

vários níveis de detalhes (níveis de abstração) ou camadas.

Encapsulamento:– É um processo de combinar informações (conjuntos

de dados) e comportamentos (funções ou métodos) em uma nova entidade, chamada componente (ou objeto).

Page 7: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Abstração

Usando a abstração, pode-se ocultar uma série de detalhes dos quais não se necessita num determinado nível do sistema aplicativo.

A redução da quantidade de detalhes visíveis é uma parte fundamental da descrição e do projeto de sistemas aplicativos complexos.

A principal técnica para ocultar detalhes é definir os níveis de abstração a serem utilizados.

Page 8: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Arquitetura Baseada emNíveis de Abstração

Uma arquitetura em camadas, baseadas em níveis abstração, possui três características principais:

1. Camadas claramente definidas;2. Interfaces formais e explícitas entre as camadas;3. Detalhes ocultos e protegidos dentro de cada

camada.

Page 9: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Benefícios da Abstração na Arquitetura em Camadas

Esconde deliberadamente de cada camada os detalhes contidos na camada abaixo dela:– Desenvolvimento simplificado do aplicativo: o

desenvolvedor de uma camada não precisa se preocupar com as outras.

– Maior segurança e proteção: o desenvolvedor de uma camada não pode controlar fisicamente outra camada em qualquer nível de detalhe.

Page 10: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Interface entre as Camadas

É a superfície entre os componentes adjacentes de um aplicativo e o dispositivo por meio do qual eles interagem através das seguintes funções:

1. Informa o que o outro componente deve fazer;

2. Pergunta o estado atual de outro componente;3. Recebe os resultados das operações

solicitadas.

Page 11: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Detalhamento da Interfaceentre as Camadas

Page 12: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Interface entre Componentes para Acesso a Banco de Dados

Page 13: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Implementação das Camadas com Componentes

Page 14: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Projeto de cada Camada na Arquitetura em CamadasCamada Interface Foco do Projeto

Aplicativo de usuário (desktop ou browser)

GUI ou WEB Objetos do aplicativo,

independentes de regras.

Processos de regras de negócios

Fluxo dos processos Solicitação de decisões

independentes da interface de usuário

e dos dados.

Gerenciamento de banco de dados

Transações e consultas

Dados independentes das

decisões.

Nenhuma camada deve realizar funções que sejam de responsabilidade de outra.

Page 15: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Camada de Interface

Apresentação:– Apresentação de informações– Metáforas visuais– Navegação e transição consistente entre

formulários/páginasEntrada:

– Coleta de informações (conjuntos de dados)– Coleta de decisões (execução de ações)– Interação (diálogo) com os usuários

Page 16: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Camada de Interface

Liberdade para os usuários:– Moldam a interface do sistema aplicativo de acordo com suas

necessidades específicas, sem afetar as regras de negócios e o banco de dados.

Liberdade para a organização:– O aplicativo de usuário envia solicitações de processo formais

para executar as regras de negócios e transações e consultas no banco de dados.

– As regras de negócio e o banco de dados ficam mais isolados das mudanças na interface do usuário.

– Podem ser facilmente implementadas várias visões para usuários diferentes, sem afetar as regras e os dados.

Page 17: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Camada de Regras de Negócios e Lógica do Aplicativo

Interoperabilidade:– Capacidade de compartilhar trabalho (regras),

compartilhar software (lógica) e fazer “coisas” de forma consistente por toda a organização.

Reutilização:– Um dos principais motivos para a impossibilidade

de alta reutilização de código é a falta da separação, num mesmo sistema aplicativo, entre a interface de usuário, as regras/lógica do negócio e o gerenciamento do banco de dados.

Page 18: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Camada de Regras de Negócios e Lógica do Aplicativo

Um único componente de software trata de uma tarefa específica.

Este componente deve ser independente do banco de dados e da interface do usuário.

Todos os aplicativos da organização sempre utilizam este mesmo componente de software (classe de objeto) para realizar esta mesma tarefa.

Page 19: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Camada de Dados

Transações:– Atualizações de dados consistentes;– Imposição de regras de negócios básicas;– Evitar mudanças não-autorizadas ou inválidas.

Consultas:– Simplificar uniões complexas de tabelas;– Assegurar consistência de resultados;– Assegurar direitos de acesso.

Dados proveniente de várias “fontes”.

Page 20: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Aplicativos Complexos ExigemDivisão do Trabalho

O desenvolvimento de um sistema aplicativo complexo normalmente exige especialização em:– Arquitetura de sistemas– Desenvolvimento de interface e design gráfico– Programação de negócios– Administração de dados– Administração de banco de dados– Programação componentes– Distribuição de aplicações e componentes– Administração de redes de comunicação– Gerenciamento de segurança

Formação de pequenas equipes, em geral de 3 a 6 pessoas por tipo de especialização.

Page 21: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Sistemas Distribuídos Complexos

Cliente em casa

do Banco

Internet

Servidor do Distribuidor

Rede do Distribuidor

Terminais de Caixa do Supermercado

Servidor da Loja

Mainframe Regional do Banco

Mainframe Principal

Rede do Banco

Servidor do FornecedorInternet

Servidor do Fornecedor

Cliente em casa

Page 22: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Empresas Digitais

Empresa AEmpresa A

Consumers, PartnersConsumers, Partners

MobileMobileEmployeesEmployees

Empresa BEmpresa B

Customers Customers Partners Partners SuppliersSuppliers

Consumers, PartnersConsumers, PartnersMobileMobile

EmployeesEmployees

Page 23: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Modelo para o Planejamento, Projeto e Desenvolvimento

Conceitual Lógico Físico Aplicativos de usuário

Fluxo de Trabalho

Seqüências de páginas e formulários

Páginas e Formulários

Regras de Negócios

Fluxo de processos de negócio

Modelo de processos e regras

Programas e Componentes

Banco de dados Modelo de dados Esquema de banco de dados

Tabelas, índices e Procedimentos

Segurança Pontos vulneráveis e tipos de ataque

Esquemas de defesa e autenticação

Firewall, controle de acesso e disciplina

Page 24: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Do Modelo Conceitual aoModelo Físico

Conceitual Modelo deNegócios

Fluxo deProcessos

Fluxo deTrabalho

Domínio do Problema:Domínio do Problema: modelo do negócio (REGRAS) modelo do negócio (REGRAS)

Domínio da Solução:Domínio da Solução: modelo do software (DESEMPENHO) modelo do software (DESEMPENHO)

Modelo deDados

Interação deProcessos

Seqüência deFormulários

Lógico

Banco deDados

Programas eComponentes

Formuláriose Páginas

Físico

Page 25: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Problema versus Solução

Quando a NASA iniciou o lançamento de astronautas, descobriram que as canetas não funcionariam com gravidade zero. Para resolver este problema, contrataram a Andersen Consulting (hoje Accenture).

Empregaram uma década e 12 milhões de dólares desenvolvendo uma caneta que escrevesse com gravidade zero, ao contrário, de ponta cabeça, debaixod'água, em praticamente qualquer superfície (incluindo cristal) e suportando variações de temperatura de abaixo de 0 até mais de 300 Celsius...

Qual foi a solução dos Russos para esse problema?

Page 26: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Evolução doDesenvolvimento de Aplicativos

Anterior Atual Arquitetura Monolítica Distribuída

Modelo de interação de objetos e componentes.

Aplicativos do usuário

Telas, teclas e relatórios

Interatividade, documentos, objetos e protótipos

Processos, comportamentos

Modelo funcional Objetos e componentes Modelo de classes

Banco de dados Modelo de dados Modelo de dados Modelo de documentos

Page 27: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Estrutura de Projeto de umSistema Aplicativo

Interface Web

Regras deNegóciosLógica doAplicativo

Fonte deDados

Page 28: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Estrutura x ModelosUML (Unified Modeling Language)

Modelos estáticos (definição de objetos)– Diagramas de Processos de Negócio– Diagramas de Dados (DER)– Diagrama de Classes de Objetos

Modelos dinâmicos (interação de objetos)– Diagramas de fluxos de trabalho ou rotas de navegação– Diagramas de respostas a eventos e mensagens.– Diagramas de estados (regras de negócios)– Diagramas de atividades (transações e consultas)

Protótipos– Interface do usuário

Page 29: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Modelo para Desenvolvimento de Sistemas Aplicativos para a Web

Serviços de Usuário (interface): páginas Web com formulários no navegador.

Serviços de Negócios (regras): serviços de acesso em Servidores Web e serviços de regras e lógica do negócio em Servidores de Aplicativos.

Serviços de Dados (informações): serviços de Servidores de Banco de Dados.

Page 30: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

O Modelo de Serviços

Page 31: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Aplicativo com Uma Camada Física

Page 32: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Aplicativo com Duas Camadas Físicas

Page 33: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Aplicativo com Três Camadas Físicas

Page 34: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Aplicativos com Múltiplas Camadas

Page 35: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Funcionamento de Aplicativos Web

Page 36: FEA/USP Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo Tecnologia de Informática Arquitetura de Sistemas Aplicativos

Ciclo de Vida de Aplicativos para a Web