Professional Documents
Culture Documents
Aula 1
2/45
Objetivo
Demonstrar o uso do ambiente de FSW (Fbrica de Software) que ser utilizado ao longo deste curso
Obter especificaes via Redmine Trabalhar no Eclipse com projetos vinculados ao Subversion (SVN) Utilizar testes JUnit para validar o cdigo Verificar a configurao do aceite do cdigo, gerada pelo ambiente de integrao contnua, via Redmine
3/45
J est com o seu ambiente de trabalho pronto para usar? JDK e Ant no prompt de comandos Eclipse com suporte a Subversion VOC FOI AVISADO NA AMBIENTAO ;-)
4/45
A resposta em ambos os casos tem que ser 1.6.0_xx Se no funcionar, ou o seu PATH est errado, ou voc instalou um JRE (em vez de um JDK) ou voc deve baixar e instalar uma nova verso do Java Procure resolver sem atrapalhar o fluxo da aula sncrona!
5/45
Deve ir at o final sem erros Se no funcionar, ou o seu PATH est errado, ou voc deve baixar e instalar uma nova verso do Ant Pode deixar para resolver depois da aula sncrona, no vamos usar o ant hoje.
6/45
Inicie o Eclipse usando o cone / atalho no seu desktop, ou se preferir a linha de comando Entre no menu Ajuda > Sobre Plataforma Eclipse
Deve responder com a verso 3.5.0 ou mais recente Clique no primeiro cone com o logotipo do Eclipse, com tooltip eclipse.org Procure na janela o recurso Ferramentas de Desenvolvimento Java (org.eclipse.jdt)
Se no aparecer, voc instalou um Eclipse que no est habilitado para desenvolvimento Java
7/45
Clique no cone com fundo azul claro e um S branco, com tooltip tigris.org A janela deve exibir pelo menos trs recursos: Subversion Client Adapter, SVN Team Provider Core e SVNKit Client Adapter
Se faltar um deles, seu Eclipse no est configurado para integrao com o Subversion, consulte as instrues para instalao do IDE apresentados no bloco INFRAESTRUTURA JAVA no final da pgina deste curso no Netclass
8/45
Entre no item Equipe > SVN Confirme que SVN Interface esteja selecionado como SVNKit (Pure Java)
A outra opo pode exigir software adicional instalado em seu computador e no ser utilizada neste curso
9/45
Prontos para comear... Voc leu, na seo Contedo Obrigatrio, a descrio do exemplo do Jogo da Velha?
10/45
http://redmine.4linux.com.br/projects/daj001/issues? query_id=3
Esta URL cai direto dentro do projeto correspondente a este curso, e filtrando para exibir apenas as tarefas atribudas ao prprio aluno O login (seu e-mail) e senha devem ser os mesmos usados para o Netclass Salve a consulta como um marcador em seu navegador
11/45
Jogo da Velha
Vamos atacar neste momento a tarefa chamada apenas Velha. Conforme a descrio no Redmine, ela consiste em criar uma interface com o usurio grfica para um programa de Jogo da Velha
Este no um curso sobre GUI, mas assim fica um exemplo mais interessante ;-)
12/45
O cdigo oficial da aplicao fica no repositrio do SCV (sistema de controle de verses) no caso o Subversion O cdigo na rea de Trabalho do Eclipse apenas uma cpia de trabalho, que o programador pode alterar (e at descartar) em interferir com outros membros da equipe Quando o programador considerar que fez mudanas (na sua cpia de trabalho) que sero teis para o restante da equipe, ele deve confirmar estas mudanas no repositrio
13/45
Inicie o seu IDE Eclipse Entre na perspectiva Java (se no estiver) Selecione no menu Arquivo a opo Novo > Outras... Role at encontrar a categoria SVN e a expanda Selecione Checkout projets from SVN e clique em Avanar Agora sim iremos conectar ao servidor Subversion do ambiente de EaD da 4Linux!
14/45
Selecione a opo Create a new repository location e clique Avanar Digite como URL: Clique Avanar Na tela seguinte, selecione a pasta (folder) Velha
https://svn.4linux.com.br/svn/DAJ001/aluno/seu_email
15/45
O Projeto Velha
Expanda na pasta src o pacote br.com.fourlinux.aula01 Examine as classes PartidaVelha e TabuleiroVelha e se necessrio reveja a descrio das duas dentro da tarefa no Redmine Elas fornecem toda a lgica para o jogo, falta apenas a interface com o usurio Voc vai cri-la, usando um modelo j pronto dentro da aula no Netclass
16/45
Crie uma nova classe no mesmo pacote que as classes j existentes no projeto: Selecione no Explorador de Pacotes o pacote br.com.fourlinux.java474.aula01 dentro da pasta src Clique com o boto direito e escolha Novo > Classe Fornea como nome da classe IUJogoDaVelha e clique em Concluir Baixe o cdigo da classe no Netclass e copie para a classe recm-criada
17/45
Observe que a nova classe tem um sinal de interrogao junto ao seu cone no Explorador de Pacotes As demais classes do projeto tem um cone de tambor que indica que elas esto sincronizadas em relao ao repositrio de cdigo, no nosso caso o Subversion
18/45
19/45
Verifique que o cdigo da nova classe esteja completo e salvo, e que no aparea nenhum cone de x vermelho, que indicaria erro de compilao Selecione no Explorador de Pacotes a classe IUJogoDaVelha, dentro do pacote br.com.fourlinux.java474.aula01 na pasta src Execute a classe Brinque com ela. Observe que os jogadores se alternam conforme esperado, mas o jogo no encerrado nem na vitria nem no empate, e no possvel iniciar um novo jogo
20/45
O X j ganhou na diagonal
21/45
Procure na classe PartidaVelha Afinal, a especificao (no Redmine) afirma que ela a responsvel pelo andamento do jogo
O mtodo isJogoTerminado est vazio! Parece que a lgica de negcios do Jogo da Velha ainda no est completa... Mas uma coisa de cada vez. Primeiro, salvar no repositrio o cdigo da interface com o usurio
22/45
Clique com o boto direito na classe IUJogoDaVelha e selecione Equipe > Add to Version Control Observe que agora o cone da classe inclui um cone de + Ele avisa que a nova classe foi marcada para adio ao repositrio Mas a adio s acontecer de verdade quando forem confirmadas para o repositrio as alteraes na cpia de trabalho
23/45
cone de +
24/45
Clique com o boto direito no projeto e selecione Equipe > Commit Digite como comentrio (comment for the commit operation) um texto que descreva as alteraes sendo salvas no SVN
25/45
26/45
Trabalho em Equipe
Em um sistema real, vrios programadores iro trabalhar ao mesmo tempo em partes diferentes da aplicao Ento vamos simular isso. O instrutor ir acrescentar ao repositrio o cdigo que falta na classe PartidaVelha Depois os alunos iro atualizar suas cpias de trabalho, trazendo modificaes para a rea de trabalho do Eclipse Enquanto um programador trabalha na interface com o usurio, outro trabalha na lgica de negcios!
27/45
Se voc no pde acompanhar este roteiro durante a aula sncrona, voc pode continuar sozinho, sem executar o prximo passo (fazer o Update do HEAD com o SVN) Ou ento, voc pode dar uma parada, pedir ao instrutor que faa a atualizao no seu projeto, e prosseguir mais tarde.
28/45
Clique com o boto direito no cone do projeto (Velha) no Explorador de Pacotes Selecione Equipe > Update to HEAD Verifique o novo contedo do mtodo isJogoTerminado Depois execute novamente a classe UIJogoDaVelha Desta vez o jogo indica corretamente a vitria do jogador X ou o empate:deu velha (NO tente corrigir pra indicar tambm a vitria do O! Faremos isso mais adiante)
29/45
30/45
Voc experimentou a aplicao executando-a como se fosse um usurio, mas isto seria sempre vivel em um projeto real?
Pode ser gasto um tempo considervel operando a aplicao at atingir o ponto desejado O programador que escreve a lgica tem que esperar pelo programador que escreve as telas Na hora de testar, voc vai lembrar de refazer sempre todos os passos, e testar sempre todas as possibilidades?
31/45
Depender da interface com o usurio, para testar, limita a produtividade do projeto, pois limita o paralelismo entre os programadores! Programar as telas junto com a lgica acaba gerando cdigo fortemente acoplado
Alterar as telas altera a lgica e vice-versa Pode ficar complicado adaptar o mesmo programa a diferentes dispositivos, ex: PC e Smartphone
32/45
Testes automatizados
prtica recomendada hoje o uso de testes automatizados, e a aplicao j traz estes testes prontos para uso Expanda o pacote br.com.fourlinux.java474.aula01 na pasta test Selecione e execute a classe AllTests Observe que o Eclipse reconhece esta classe como um teste JUnit e exibe graficamente o resultado da execuo dos testes
33/45
Testes falhos
Observe que a maioria dos testes teve sucesso (cone de rubrica verde) Mas o teste que verifica a vitria do O falha
Vamos fingir que encontramos um bug na aplicao Alguns alunos j devero ter notado este bug executando o jogo
Voc conseguir entender a lgica dos testes, mesmo que nunca tenha visto JUnit antes E tambm ser capaz de deduzir a correo
34/45
JUnit no Eclipse
35/45
Completando a aplicao
Agora, nova execuo dos testes JUnit no deve indicar nenhum teste falho!
36/45
Observe que o cone da classe PartidaVelha e tambm o do projeto mudam para indicar que eles esto alterados em relao ao repositrio Ento temos que salvar as alteraes, isto , nossa correo de bug, no repositrio
37/45
38/45
Clique com o boto direito no projeto e selecione Equipe > Commit Digite como comentrio (comment for the commit operation) um texto que descreva as alteraes sendo salvas no SVN
39/45
Volte para a sua tarefa no Redmine e faa o reload da pgina no seu navegador Ela ter sido acrescida de um comentrio gerado pelo sistema de Integrao Continua, informando a ocorrncia de um commit no repositrio e o resultado dos testes Se os testes foram OK (Testada Ok) a tarefa est concluda Os testes JUnit so executados pelo servidor em resposta ao commit, e um relatrio HTML gerado e linkado tarefa no Redmine
40/45
41/45
42/45
43/45
Especificao no Redmine Baixar do Subversion Fazer funcionar Commit no Subversion Confirmar Ok no redmine Geralmente no ser necessrio fazer update nem adicionar / remover arquivos do projeto Eclipse ou cpia de trabalho
44/45
Exerccio Obrigatrio
Nesta aula no teremos um exerccio obrigatrio O exemplo Velha valer como exerccio obrigatrio, portanto quem faltou aula sncrona (ou no conseguiu completar o roteiro durante a aula) deve se certificar de PELO MENOS fazer o commit de um projeto Velha que passe em todos os testes Nas prximas aulas, o exerccio obrigatrio poder ser uma tarefa / programa diferente do utilizado durante a aula sncrona
45/45
FIM DA AULA 01