Paula M. Donegan donegan@icmc.usp.br Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Linha de Produtos de Software de controle de Bilhetes Eletrônicos de Transporte (LPS-BET) Paula M. Donegan donegan@icmc.usp.br
Tópicos LPS-BET Arquitetura Detalhamento dos Componentes Implementação da LPS-BET Demo
LPS-BET Controle de Bilhetes Eletrônicos para Transporte municipal Gerência de dados de passageiros, cartões, linhas, ônibus e viagens Validador no ônibus lê um cartão e se comunica com o sistema central para debitar a passagem Pode haver um sistema de integração de ônibus para o passageiro pagar uma única passagem fazendo várias viagens Análise de 3 sistemas BET: Fortaleza (CE) São Carlos (SP) Campo Grande (MS)
Diagrama de Features da LPS-BET
Features Adicionais dos sistemas BET Fortaleza Campo Grande São Carlos Acesso Adicional Autent. Passageiro Forma de Integração - Terminal - Integração * Tempo * Linha de Integração * Número de Viagens de Integração Pagamento de Cartão Restrição de Cartões - Número de Cartões - Combinação de Cartões Empresas Usuárias Limite de Viagens
Arquitetura Geral da LPS-BET
Componentes do BET Componentes de Negócio Componentes de Sistema
Componentes de Sistema
Classes da LPS-BET
Classes da LPS-BET
Componentes e Interfaces
Especificação de Interfaces
Especificação das Interfaces
Implementação da LPS-BET
Plataforma de Implementação Java (linguagem de programação) Eclipse (ambiente de desenvolvimento) AspectJ (programação orientada a aspectos) Hibernate (persistência) Spring (injeção de dependência e inversão de controle) Maven HTML + Velocity + Javascript + Spring Web MVC PostgreSQL (banco de dados)
Elementos da Arquitetura na Prática Cliente Ônibus ..\java\lps\bet\basico\onibus Servidor do Ônibus ..\java\lps\bet\basico\controlValidadorServidor Componentes de Sistema: ..\java\lps\bet\basico\controlarCorrida ..\java\lps\bet\basico\controlarViagem Interface de Usuario ..\webapp\WEB-INF\html Servidor Web ..\java\lps\bet\basico\web Domínio BET (Componentes de Negócio) ..\java\lps\bet\basico\linhaMgr ..\java\lps\bet\basico\cartaoMgr ..\java\lps\bet\basico\passageiroMgr ..\java\lps\bet\basico\viacaoMgr ..\java\lps\bet\basico\funcionarioMgr Persistência DAOs dos componentes de negócio do domínio BET ..\java\lps\bet\basico\tiposDados ..\resources\hibernate-mappings Banco de Dados
Spring Beans Nome do Componente Principal classe do componente Interfaces requeridas Componentes das interfaces
Estrutura dos Componentes Previsto: Resultado:
Estrutura dos Componentes Previsto: Resultado:
Estrutura dos Componentes Previsto:
Estrutura dos Componentes Resultado (I):
Estrutura dos Componentes Resultado (II):
Comunicação entre Ônibus e Servidor Ônibus-context.xml: BET-servlet.xml: Spring HTTP Invokers: mecanismo padrão de serialização do Java
Comunicação entre Ônibus e Servidor
Persistência – DAO (Data Access Object)
Persistência - Classe
Persistência – Mapeamento
Banco de Dados
Variabilidades na LPS-BET
Feature: Terminal Nova classe requerida Parte do diagrama de features Parte do modelo de classes Devo colocar texto nas figuras do exemplo? Nova classe requerida
Componente Caixa Preta Sem acesso interno à implementação dos componentes desenvolvidos LinhaMgr é reusado sem alteração Versão de Fortaleza: Componente composto LinhaTerminalMgr
Componente Caixa Branca
Feature: Pagamento Cartão Parte do diagrama de features Pontos de variação nas classes TipoPassageiro e Pagamento Cartão Alterando atributos e operações dessas classes (não necessário inserir uma nova classe no modelo)
Componente Caixa-Preta Parte do modelo de classes Ambas as classes permanecem em um componente pois possuem o mesmo interesse e são sempre usadas juntas Novos atributos requeridos
Features: Pagamento Cartão CartaoMgr é reusado sem alteração Versão de Fortaleza: Componente composto CartaoPgtoCartaoMgr
Componente Caixa-Branca
Componentes e Interfaces Versão de Fortaleza:
Preparação do ambiente - Ferramentas PostgreSQL (http://www.postgresql.org/download/) Instalar o PostgreSQL Eclipse (http://www.eclipse.org/downloads/) Maven2 (http://maven.apache.org/download.html) Plugin do Maven para o Eclipse Eclipse: Help -> Software Updates -> Find and Install -> New Remote Site URL: http://m2eclipse.codehaus.org/update/ Tortoise SVN (http://tortoisesvn.net/downloads)
Preparação do ambiente – Projeto BET (I) Acessar o repositório com seu login google (http://code.google.com/p/bet/) Clicar no seu nome em Project Member, verificar o seu “username” Clicar na aba Settings, verificar a sua senha Criar um diretório local no seu computador para o projeto Exemplo -> “C:\svn” Clicar no botão da direita e escolher a opção “SVN Checkout” URL of repository: https://bet.googlecode.com/svn/ Preencher os dados do membro do projeto no repositório google na janela que aparece após o passo 3 (username e password) A última versão do projeto será baixada do repositório Acessar o diretório no explorer do windows e verificar se está com uma marca verde, que significa que o diretório está sincronizado com o repositório Acessar o diretório pelo DOS Entra em “trunk” e depois em “bet” Se estiver usando o exemplo, estará em “C:\svn\trunk\bet” Colocar o comando maven: mvn eclipse:clean Colocar o comando maven: mvn eclipse:eclipse Todas as dependências existentes no POM.xml que não forem encontradas no repositório local do maven serão baixadas pela web
Preparação do ambiente – Projeto BET (II) Importar o projeto no eclipse: File -> Import -> Existing Projects into Workspace -> Select root directory Selecionar o diretório local em que o projeto se encontra, até a parte bet No exemplo seria “C:\svn\trunk\bet” Habilitar o Maven no projeto: Clicar com o botão da direita sobre o projeto “bet” Opção: Maven2 -> Enable As dependências declaradas no POM.xml serão reconhecidas pelo Eclipse Criar o Banco de Dados BET no PostgreSQL Usar o script de backup do banco de dados disponibilizado no repositório google do projeto para criar o banco de dados bet O arquivo filter.properties encontra-se configurado com username = root e password = root, manter essas informações consistentes Para rodar o servidor, deve-se ir no diretório do projeto e usar o comando maven “mvn jetty:run” O diretório no exemplo seria o “C:\svn\trunk\bet” “Starting scanner at internal of 10 seconds” (rodando com sucesso) Para rodar o cliente do ônibus, deve-se executar a classe “ValidadorGUI” do componente GUI. Para rodar a parte web, usar “http://localhost:8080/bet/controlGerencia.html”
Material Didático Maven: Spring: TortoiseSVN Tutorial: “Better Build With Maven” Spring: http://www.springframework.org/docs/reference/index.html “Professional Java Development with the Spring Framework” TortoiseSVN Tutorial: http://www.mind.ilstu.edu/research/robots/iris4/developers/svntutorial/
DEMO
FIM Dúvidas? Paula Donegan: donegan@icmc.usp.br msn: pauladonegan@yahoo.com.br google-talk: pauladonegan@gmail.com