-
Notifications
You must be signed in to change notification settings - Fork 11
Time: SSL
- Repositório com todos os documentos essenciais para a realização do trabalho:
- Filipe Ramalho
- Caio Rodrigues
- Henrique Fernandes
- Giovani Oliveira
- Níkolas Pimentel
Inspirados pela Sociedade do Anel (de O Senhor dos Anéis) e pela movimento do software livre e aberto, o time SSL é composto por cinco improváveis membros que com muita garra e perseverança, tentam jogar o anel no vulcão, ou seja, ter sucesso alcançando um objetivo, uma meta.
Nossa equipe não foi criada, ela simplesmente nasceu. Não tínhamos a mínima intenção de formar um grupo, alguns de nós nem sequer se conheciam. Porém, com tudo para dar errado por falta de entrosamento, nós demos super certo. Temos não apenas um grupo mas um time, um clã. Estamos sempre dando apoio e nos motivando, para que os objetivos sejam cumpridos. Todos do Time são muito focados e cada um tem habilidades importantes que juntas tornam nosso Clã imbatível.
"[...] E quando a gente atingir a meta, nós dobramos a meta." - Rousseff, Dilma.
O objetivo principal da equipe é construir uma aplicação de customização e geração de relatório para o software i-Educar, porém, como estudantes temos outros objetivos decorrentes do objetivo principal que acabam por nos motivar a alcançar tal Meta. Esses objetivos são:
- Obtenção de boa Nota
- Aprender na prática as técnicas de Engenharia de Software para que tenhamos a capacidade e segurança de aplicá-las sem receio em nossas carreiras.
- Entendimento da relação com o cliente e aproveitamento da comunicação com vários especialistas.
- Primeira Entrega:
- Reação: Métodos Ágeis
O crescimento da demanda por tecnologia de ponta e, consequentemente, aperfeiçoamento dos softwares sendo vendidos no mercado, ocasionou também no desenvolvimento das técnicas de programação e engenharia de software. As metodologias Ágeis aparentam ser uma maravilhosa ferramenta para integrar diferentes habilidades em um projeto, de forma a construir um software de maneira ágil e objetiva, visando ter respostas rápidas para imprevistos e mudanças, e contato direto e colaborativo do cliente. Além disso, não sendo necessário se preocupar com contratos e documentações extensas, toda a equipe de desenvolvimento se torna mais independente, aumentando a produtividade ao mesmo tempo em que a comunicação encontra melhorias num ritmo mais organizado e direto, onde o trabalho conjunto se dá de forma bem dividida. Como se não fosse suficiente, as metodologias se mostram extremamente simples, destoando das metodologias clássicas cuja efetividade se encontrava de forma muito complexa à todos os envolvidos. E finalmente, é um modelo que visa o senso comum, ao invés do senso de uma única pessoa, algo que parece extremamente positivo para todos os envolvidos e que com certeza é uma das razões do seu sucesso.
- Segunda Entrega:
- Terceira Entrega:
- Reação: Canvas GitHub e Trello
As ferramentas apresentadas em sala(trello e github) se mostraram imediatamente recursos maravilhosos para o projeto a ser entregue ao fim do período. O trello oferece a possibilidade de organizar um projeto com o grupo de forma fácil e rápida, criando listas que são apresentadas lado a lado, sendo tudo muito bem visível, e com o conteúdo que se desejar, permitindo assim que cada grupo crie sua própria "linguagem" de maneira customizada, além de permitir a criação de um quadro estilo Kanban para estruturação do fluxo de desenvolvimento com tudo disponível online de forma que todo o grupo pode visualizar e editar contribuindo. De maneira complementar, o GitHub se mostra como ferramenta imprescindível para o desenvolvimento, possibilitando que cada desenvolvedor tenha sua própria cópia do código fonte e possa subir isso ao projeto ao fim da tarefa, adicionando àquela parte e "fechando o pacote". No git, também, a ideia de fazer um tipo de wiki para cada grupo acendeu uma lâmpada na luz de todos, já que além de ter uma parte personalizada para evoluir junto ao projeto, serve de apoio à todos durante tarefas mal entendidas ou difíceis, tornando o cooperativismo uma prioridade, e o aprendizado uma consequência natural. E finalmente, as correções feitas ao Canvas clarearam todas as dúvidas restantes da semana anterior, e o projeto parece cada vez mais palpável.
* Mapa Mental- Quarta Entrega:
- Reação: Sociedade dos Programadores Mortos
Nós, como grupo estávamos bastante entrosados e animados com o projeto, tínhamos todo um plano a seguir com a aplicação I-educar, já tínhamos feito o canvas, mapa mental… na nossa mente estava tudo certo para iniciar o projeto. Até que tivemos a última reunião com a Polyana e a Sandra. Nosso entendimento sobre qual era a necessidade do nosso cliente foi rapidamente ficando clara naquela reunião, mas de maneira igualmente rápida foi criando um sentimento de desânimo, justamente por entendermos quais tecnologias teríamos que utilizar e quais problemas surgir.
Naquela reunião tomamos conhecimento que a prefeitura de caxias não necessitava de uma aplicação local, pois como a Polyana bem disse, eles não poderiam em hipótese alguma fazer com que as escolas fossem obrigadas a colocar programas adicionais nos seus computadores. Portanto, nesse caso, entendemos que ela precisava de uma aplicação web.
Sabendo da necessidade de construir uma aplicação em java (Exigência do Professor Eber) e que fosse Web (Exigência da prefeitura de caixas) ficamos com a única opção de trabalhar com Java Web (Java EE), o que deixou a equipe apreensiva, pois, além de java web não ter boa fama em termos de complexidade e também o fato de não conhecermos tão bem esta tecnologia, não temos um prazo de cumprimento de projeto tão grande.
Com todos esses percalços resolvemos conversar com o professor para mudar o projeto, porém tivemos uma falha de comunicação e acabamos por seguir uma linha diferente da definida pelo professor, e isto ficou claro durante a apresentação das ideias feita no laboratório.
Então, também preocupados com o prazo, refizemos o planejamento de forma que contemplasse as restrições impostas e apesar de nos ser apresentado outra opção de projeto (O projeto das merendas), resolvemos continuar no projeto de relatórios para o I-educar.
- GitK - Mostra os commits dados.
- GitAware - Mostra path + branch.
- GitDiff - Vê a diferença entre arquivos no terminal.
- GitBranch - Visualiza branchs.
- GitBranch <> - Cria uma nova branch.
- Git Merge dev - faz "merge" da branch dada no argumento com a branch ativa.
- Git remote -v - Visualiza repositório remoto.
- Checkout <<código do commit>> - Vai para o commit informado.
** Como evitar conflito**
- Tentar trabalhar em funcionalidades o mais diferentes possíveis.
- Não colocar muitas funcionalidades parecidas na sprint.
- Padronizar escrita do código.
https://trello.com/b/ALrCvTKp/i-educar
- Banco de dados fictício
- Consultas geradas para teste e preenchimento de combobox:
Para auxiliar o processo de testes na geração de relatórios, o grupo optou por criar um banco de dados fictício que simularia o i-educar(utilizando, da mesma forma, o postgresql). O resultado dos testes será postado no repositório assim que os mesmos forem realizados.
- Consultadas padronizadas:
-
Select distinct nome_turma as turmas from tutma t join escola e one.id_escola=t.fk_escola and e.nome_escola like '%{filtroEscola}%'
-
select ano from turma t where Lower(t.nome_turma) like Lower('%{filtroNomeTurma}%')
-
Os filtros entre chaves deverão ser substituídos por um parâmetro enviado pela página.
- Categorizado por Planning poker
- SSL : https://drive.google.com/open?id=1yUChthOPbwxyO9OUv4GfvkpYo_udPsmz
- Canvas, GitHub e Trello : https://drive.google.com/open?id=1XzYt4g5k0Bq7I5qItOW3xaVmJsW-KUSx
- Métodos Ágeis : https://drive.google.com/open?id=1K-yI59eH8BABLswNHZjO0mM-Js-NFFVy
- Testes unitários : https://drive.google.com/file/d/1q0ExklgBgaI_c3QFjfdzfAbcoPhYJ7aF/view?usp=sharing
9:15 - 9:45 -
* Prós : Situação do repositório analisada; Verificadas as atividades de modo geral e feitas alterações na wiki.
* Contras : O tempo não permitiu mais avanços e alterações.
10:00 - 10:30 -
* Prós : Nova Sprint organizada; Levantamento e discussão sobre os próximos conteúdos
14:30 - 14:45 -
* Prós : Reparo de um erro simples; Análise breve do código.
* Contras : Alguns problemas de comunicação.
15:00 - 15:30 -
* Prós : Debate sobre os testes e dúvidas sobre o mesmo.
* Contras : Não tínhamos algo pronto para ter maior base.
15:30 - 15:45 -
* Prós : Conseguimos maior contato com outros times.
* Contras : Alguns problemas técnicos impediram maior aproveitamento.
A utilização do JUnit pode ser compreendida de maneira simples, e a sua utilização vai se aperfeiçoando conforme o domínio do desenvolvedor. Utilizarei um caso de exemplo para que o entendimento se dê de maneira simples.
- Classe a ser testada: No nosso exemplo, a classe a ser testada soma dois números.
Para realizar um teste dessa classe, o que vamos fazer consiste em chamar a função numa nova classe, teste. Criamos uma nova classe, e extendemos "testcase", que vem da biblioteca "junit.framework.testcase".
- Classe teste:
Depois disso, apenas rodamos a classe teste, que chamará a função de calculo e retornará o valor, que será comparado ao esperado.
- Docker instalado (https://docs.docker.com/install/#server);
- docker-compose instalado (https://docs.docker.com/compose/install/);
- Dump do banco fornecido pelo professor;
- hash da senha padrão do usuário administrador (21232f297a57a5a743894a0e4a801fc3);
- Software PgAdmin3;
sudo apt-get install postgresql pgadmin3
-
Baixe o ieducar ( https://github.com/portabilis/i-educar/tree/version-1/ieducar ) e descompacte-o em alguma pasta de seu computador (exemplo: na pasta documentos)
-
Vá até a pasta do i-Educar em sua máquina (exemplo abaixo no terminal do linux);
cd ~/Documents/i-educar
- Abra o arquivo phinx.yml e garanta que ele contenha o conteúdo abaixo.
paths:
migrations: %%PHINX_CONFIG_DIR%%/ieducar/misc/database/migrations
environments:
default_migration_table: phinxlog
default_database: development
development:
adapter: pgsql
host: localhost
name: ieducar
user: ieducar
pass: 'ieducar'
port: 5430
charset: utf8
-
Configurar ieducar.ini:
- Supondo que você já esteja na pasta raíz do projeto, entre na pasta configuration pelo comando abaixo.
cd ieducar/configuration
- Abra o arquivo ieducar.ini e garanta que o seguinte conteúdo esteja configurado como abaixo no seu arquivo;
[production]
; Configurações de banco de dados
app.database.dbname = ieducar
app.database.username = ieducar
app.database.hostname = postgres95
app.database.password = ieducar
app.database.port = 5432
- Depois de salvar o arquivo ieducar.ini, volte para a pasta raíz do projeto
cd ../../
-
Rodar o comando para baixar as dependencias do projeto;
sudo docker-compose build
-
Subir os containers
sudo docker-compose up
-
Abra o PgAdmin (usando seu menu iniciar por exemplo), e crie uma nova conexão com o banco como na imagem abaixo (Password: postgres).
- Após conectar no banco, acesse a base padrão do postgres chamada "postgres" e clique no botão para abrir o console SQL, conforme imagem abaixo:
- depois de Abrir o console SQL do PGAdmin, execute separadamente os comandos abaixo:
-
Criar o usuário ieducar:
CREATE ROLE ieducar LOGIN ENCRYPTED PASSWORD 'md5d2db8ddcfc6534176fdd0d01ac5cee01' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
-
Criar Base de dados do I-Educar:
CREATE DATABASE ieducar WITH OWNER = ieducar;
-
Setar os esquemas:
ALTER DATABASE ieducar SET search_path = "$user", public, portal, cadastro, acesso, alimentos, consistenciacao, historico, pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano, modules;
-
- Depois de terminado os comandos acima, clique uma vez no nome da Base do ieducar(como na figura abaixo) e depois, no menu superior, clique em plugins e depois em "PSQL Console". Deverá abrir um terminal.
-
No terminal do PSQL execute o comando abaixo (supondo que seu arquivo ieducar.dump esteja na pasta Downloads) e aguarde o término da execução;
\i /home/<<SuaPastaDeUsuario>>/Downloads/ieducar.dump
-
Depois que o dump terminar, feche o terminal do PSQL e volte para o PGAdmin.
-
Selecione Novamente a base de dados ieducar, abra novamente o console SQL, cole o comando abaixo e execute.
UPDATE portal.funcionario SET senha='21232f297a57a5a743894a0e4a801fc3', email='' WHERE matricula='admin'
-
Após instalar a base, você pode acessar o i-Educar através da porta 8080 (conforme abaixo), com usuário "admin" e senha "admin";
http://localhost:8080
-
Para subir o docker-compose você pode usar o comando:
sudo docker-compose start
-
Para parar o docker-compose você pode usar o comando:
sudo docker-compose stop
-
Para reiniciar o docker-compose você pode usar o comando:
sudo docker-compose restart
- Geralmente dá erro ao iniciar o docker do ieducar (por motivos que desconheço), eu geralmente faço mais de uma tentativa desligando o meu apache (sudo service apache2 stop) e depois realizando os comandos do docker-compose em sequencia: build, up e start.
- Quando eu dou o "up" do docker-compose, ele inicializa mas não finaliza o comando. Se o I-Educar não iniciar quando um "up" for executado, dê um ctrl+c no terminal. Caso contrário não dê ctrl-c, ao invés disso, apenas feche o terminal e abra outro para realizar os próximos comandos.
- Eu, além do docker-compose stop, também dou um
sudo docker-compose kill
para garantir. - A não ser que você queira apagar tudo o que você fez até aqui, não execute o comando
sudo docker-compose down
.
https://softwarepublico.gov.br/gitlab/i-educar/i-educar/wikis/instalando-ieducar-com-docker
https://www.postgresql.org/docs/9.2/static/sql-syntax.html
Summary | Story Points |
Criar página no i-educar para emitir parametros | xl |
Produzir saida em HTML e formatos alternativos | l |
Integras módulos de RS, SQL e DOM | xxl |
Criar exemplo de consultas SQL | m |
Criar exemplo de modelo HTML | m |
Criar exemplo de replacement specifier | m |
Definir módulo de leitura e alteração da arvore DOM | xxl |
Definir módulo de leitura e execução das consultas SQL | xl |
Definir módulo de leitura e interpretação para o replacement specifier | xl |
Configurar conexão com o BD do I-educar | xl |
Criar aplicação Java rodando no tomcat | l |