Grupo 9 Leone Mendonça de Sena Patrícia Lima de Souza e Silva

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Análise e Projeto Orientado a Objetos
Sistemas Distribuídos Baseados em Objetos
Desenvolvimento de Sistemas Baseado na Transformação de Modelos
Bruno Rafael de Oliveira Rodrigues
Sistemas Distribuídos Web Services
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Serviços Integrados RSVP
RSVP MPLS. Estratégias para Implantação de QoS Atualmente, duas estratégias de QoS sobre redes IP estão em desenvolvimento: –Serviços Integrados Baseado.
Comunicação Distribuída
Interação Cliente Servidor
Projeto de Software Orientado a Objetos
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
09/03/10 20:13 Claudio de Oliveira – 1/21.
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Mobilidade Cláudia Ribeiro.
Contratos Modelagem Funcional.
Projeto da Camada de Domínio
Classes e objetos Arrays e Sobrecarga
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática.
Diagrama de Classes e Colaboração
SGE Sistema de Gerenciamento de Estabelecimentos
P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº Marco AndradeNº
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
Tópicos de Sistemas de Informação A
SACADO Cobrança Caixa Instalação Cadastramento inicial Parâmetros Inicio Fim Acesso ao sistema Responsáveis Grupos de sacados Sacados Títulos Relatórios.
DHCP Trabalho Realizado por: Rui Runa Monteiro, nº14.
P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº Marco AndradeNº
Chamada Remota de Procedimentos
Desenvolvimento para Android Aula 7 - Services
Protocolo SMTP e POP O que é SMTP?
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
SigA Sistema Gestor de Alunos
Remote Method Invocation RMI
Concorrência e Java RMI
UNIDADE 2 UML MODELAGEM TEMPORAL
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 05.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
PROGRAMAÇÃO ORIENTADA A OBJETOS
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Processos.
Redes Sociais Colaborativas Patrícia Ramos | 22/05/2006.
Bancos de Dados Estrutura e Funcionamento de um SGBD
Sistema Virtual de Venda de Móveis
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Protocolo MODBUS [ Slide de Abertura com a presença de outras logomarcas ] A segunda opção é a mais apropriada para a presença de mais de duas marcas.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Tecnologias de Localização de Serviços Exame de Qualificação IME/USP Fev/2003.
26/10/10 Sistemas Distribuídos 1 DAS Sistemas Distribuídos para Automação Industrial Trabalho 2ª Semestre de 2010 Professor: Joni da Silva Fraga.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Expansão dos Casos de Uso
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Análise e Projeto de Sistemas
A linguagem unificada de modelagem
Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.
Cápsulas, Protocolos, portas e conexões em UML-RT.
Gerenciamento de Configuração de Software
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
CIn-UFPE1 UML Uma linguagem unificada de modelagem Visão Geral.
Protocolos de Comunicação e Passagem de Mensagens
Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.
Revisão Turma – WEB JavaScript.
Multi-Loja.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1 Análise e Projeto de Sistemas Modelagem de Requisitos com Casos de Uso.
Delegação  É uma maneira de tornar a composição tão poderosa para fins de reutilização como a herança. Na delegação, dois objetos são envolvidos no tratamento.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Sistemas Operacionais 2007/2 Trabalho 2 Servidor Remoto para Venda de Passagens Aéreas Grupo 9 Leone Mendonça de Sena Patrícia Lima de Souza e Silva Peter Peret Lupo Rafael Azevedo de Faria Ramon de Aguiar Campos

Funcionalidades Foi implementado um servidor remoto para venda de passagens aéreas que atende clientes através de uma rede TCP/IP. Os vôos domésticos são feitos pelo Boeing 737, ligando: Rio a São Paulo (100 assentos); Rio a Salvador (50 assentos); Rio a Belo Horizonte (30 assentos); Rio a Brasília (100 assentos); Rio a Manaus (20 assentos).

O projeto É feito totalmente em Java e tem interface gráfica tanto para o cliente quanto para o servidor. Foi utilizado o Subversion pra controle de versão concorrente, permitindo que os membros do grupo pudessem trabalhar distribuídos geograficamente e de forma assíncrona. Tem um site onde podem ser acessados os downloads, as distribuições, o código versionado, um Wiki, um sistema de bug tracking e a página principal, contendo a especificação do trabalho e melhorias futuras.

O projeto Módulo Servidor Módulo Cliente

Módulo Servidor Deve permitir leituras concorrentes para uma mesma aeronave. A reserva é um artifício para permitir ao cliente pensar antes de efetuar a compra. Uma reserva cai automaticamente após um tempo pré-fixado de 15s. Os assentos são distribuídos automaticamente (o cliente não escolhe). A compra requer reserva prévia. É política da empresa adotar um overbook de até 10% da lotação da aeronave

Módulo Servidor No pacote br.ufrj.dcc.sistemasoperacionais.passagensaereas.servidor.controle: A classe Servidor permanece escutando a porta 5000 e a solicitação recebida de cada cliente que acessa o servidor é executada por uma thread distinta. Os clientes têm suas funcionalidades atendidas no servidor pela implementação da classe ServicoPassagensServidor.

Módulo Cliente Ao abrir o programa Cliente, o mesmo reconhece o próprio IP, sugerindo pra fazer a conexão. Se não reconhecer, o IP é inicializado com o valor 127.0.0.1

Módulo Cliente Ao lado, um diagrama que ilustra como o programa cliente pode ser executado.

Módulo Cliente Funções da classe Collection<Trecho> obtemTrechos() Retorna um array contendo todos os trechos disponíveis int obtemVagasNoTrecho(int trecho) A partir do trecho desejado, retorna o número de vagas disponíveis no mesmo. boolean reservaTrecho(int numeroAssentos, int trecho) Retorna verdadeiro se a quantidade de assentos no trecho for reservada com sucesso, e falso, caso contrário. A reserva pode falhar quando o número de assentos disponiveis, mesmo com overbooking, é insuficiente para atender o pedido de reserva. boolean compraTrecho(int numeroAssentos, int trecho) Retorna verdadeiro se a quantidade de assentos no trecho for comprada com sucesso, e falso, caso contrário. int consultaReserva(int trecho) A partir do trecho desejado, retorna a quantidade de reservas realizadas no mesmo. int consultaCompras(int trecho) A partir do trecho desejado, retorna a quantidade de compras realizadas no mesmo. int obtemTotalCompras() A partir do trecho desejado, retorna o total de compras realizado no mesmo. int obtemTotalReservas() Retorna o total de reservas realizadas em todos os trechos.

Sincronização Foram utilizadas duas estratégias: Métodos synchronized na classe ServicoPassagensServidor impedem que duas threads estejam no método ao mesmo tempo; Um semáforo binário para cada trecho, controlando o acesso para alterações em cada um deles. Métodos bloqueiaTrecho e desbloqueiaTrecho da classe Trecho do pacote br.ufrj.dcc.sistemasoperacionais.passagensaereas.servidor.controle

Comunicação entre os módulos Cliente e Servidor A classe Comunicacao do pacote br.ufrj.dcc.sistemasoperacionais.passagensaereas.comunicacao é responsável por traduzir os protocolos das mensagens entre os módulos para as operações desejadas. static Protocolo getProtocolo (int comando) { switch (comando) { case 1: return OBTEM_TRECHOS; case 4: return COMPRA_TRECHO; case 3: return RESERVA_TRECHO; case 5: return CONSULTA_RESERVA; case 6: return CONSULTA_COMPRAS; case 2: return OBTEM_VAGAS_NO_TRECHO; case 7: return CONSULTA_TOTAL_RESERVAS; case 8: return CONSULTA_TOTAL_COMPRAS; default: return OBTEM_TRECHOS; }

Observações Toda vez que é efetuado um pedido de uma reserva de um trecho, o programa atualiza a informação de reservas desse trecho. Da mesma forma, toda vez que é realizada a compra de um trecho, o programa atualiza a informação de compras desse trecho.

Sugestões para trabalhos futuros em cima do mesmo tema Documentar o código com Javadoc. Gerar diagramas UML (pelo menos classe e seqüência). Remodelar o MVC fazendo com que a interface seja observadora dos trechos para refletir as mudanças no modelo. Implementar a persistência utilizando JPA e Hibernate. Mostrar automaticamente os reflexos das mudanças do servidor em todos os clientes. Unificar as classes "Trecho" do cliente e do servidor em uma classe Trecho apenas e fazer as instâncias desta classe serem enviadas pela rede ao invés de strings. Implementar a internacionalização dos textos da interface usando o mecanismo de Resource Bundle do Java. Rever o tratamento de exceções. Há lugares onde deveriam ser lançadas e são "tratadas" e vice-versa. Implementar no cliente uma área de mensages de erro/sucesso das operações solicitadas. Implementar na interface do servidor uma área de mensages das ações solicitadas pelos clientes com os resultados (como um log). Acrescentar na interface do cliente as compras efetuadas em cada trecho e as reservas efetuadas em cada trecho. Implementar um mecanismo de log no cliente e no servidor utilizando Log4J. Implementar testes automatizados com JUnit.