1. Grails Framework - 4 anos e vários sistemas
Marcos Vinicius Fidelis
Analista de Informática – Universidade Estadual de Ponta Grossa
Professor – Universidade Tecnológica Federal do Paraná
fidelis@utfpr.edu.br - mvfidelis@uepg.br
1
2. Agenda
●
Apresentação
●
Dados do sistema
●
Sistemas Legados
●
Contribuição
●
Grails
●
Para refletir...
●
O que já fizemos?
●
–
SGA e outros sistemas
Relevância para o
interesse público
●
Relatórios
●
Equipe
●
Interface
●
Mais informações ...
●
BD
●
Encerramento
2
3. Universidade Estadual de Ponta Grossa
A Universidade Estadual de Ponta Grossa (UEPG) é uma
instituição pública de ensino superior mantida pelo Governo do
Estado do Paraná, com sede em Ponta Grossa fundada em 1969
pela fusão de várias faculdades. A UEPG oferta atualmente 44
cursos de graduação, além da pós-graduação.
www.uepg.br
O Estado do Paraná possui leis estaduais específicas que
incentivam a utilização: Lei 14.058/2003, Lei 14.195/2003 e a Lei
15.742/2007.
Desde 2006 o Centro de Processamento de Dados (CPD)
pesquisa e incentiva soluções baseadas em Software Livre.
O CPD é Responsável pelos sistemas administrativos da
universidade.
O Núcleo de Tecnologia e Educação Aberta e a Distância da UEPG
(NUTEAD), é um Órgão Suplementar diretamente vinculado a Reitoria,
que fornece suporte para todos os cursos e programas semipresenciais e a
distância existentes na UEPG
www.nutead.org
Responsável pela parte pedagógica do Ensino à Distância.
3
4. Universidade Tecnológica Federal do Paraná
A Universidade Tecnológica Federal do Paraná (UTFPR) é a
primeira assim denominada no Brasil e, por isso, tem uma
história um pouco diferente das outras universidades. A
Instituição não foi criada e, sim, transformada a partir do
Centro Federal de Educação Tecnológica do Paraná (CefetPR). Como a origem deste centro é a Escola de Aprendizes
Artífices, fundada em 1909, a UTFPR herdou uma longa e
expressiva trajetória na educação profissional.
http://dainf.pg.utfpr.edu.br
A UTFPR é constituída por doze câmpus, localizados
em: Apucarana, Campo Mourão, Cornélio Procópio,
Curitiba, Dois Vizinhos, Francisco Beltrão,
Guarapuava, Londrina, Medianeira, Pato Branco, Ponta
Grossa e Toledo, todos no Estado do Paraná.
O DAINF (Departamento Acadêmico de Informática) tem três cursos na UTFPR - Câmpus
Ponta Grossa: Técnico em Informática (modalidade EaD), Tecnologia em Análise e
Desenvolvimento de Sistemas e Bacharelado em Ciência da Computação.
4
5. Sistemas Legados
●
●
Mas o que é um sistema legado? Alguns dizem que é um sistema antigo,
outros que é um sistema recebido de terceiros e há quem diga que é um
sistema que não pode ser alterado. Na verdade, não existe uma definição
única do que é um sistema legado, mas existe um conjunto de indicadores
que devemos analisar.
Motivos
–
Tempo de vida
–
Utilidade
–
Tecnologia e Hardware obsoletos
–
Dificuldade de manutenção
–
Documentação
5
6. Problemas comuns em projetos
●
●
●
●
Em geral se perde muito tempo para configurar
ambientes de programação
Gasta-se muito tempo para aprender uma
linguagem de programação nova
É difícil disciplinar o processo de
desenvolvimento
Leva-se muito tempo no desenvolvimento de
cadastros.
6
7. Grails
●
●
●
●
O principal objetivo do Grails é ser um framework web de alta produtividade para
a plataforma Java.
Para isso ele utiliza tecnologias consideradas maduras do mundo Java, como os
frameworks Hibernate e Spring, através de uma interface que busca ser simples e
consistente. Isola o desenvolvedor dos detalhes complexos da persistência de
dados e incorpora o padrão de desenvolvimento MVC de maneira natural.
Ele também fornece templates web para fácil implementação da interface com o
usuário e suporte para programação em Ajax.
Lançado em mar/2006
7
8. Características
●
É guiado pelas práticas
–
CoC (convention over configuration) e
●
●
●
–
DRY (don't repeat yourself);
●
●
●
–
Programar seguindo as convenções do framework
Se não quiser configurar nada, siga o que foi convencionado
As convenções definem o padrão de funcionamento do framework
Boa parte do trabalho de desenvolvimento é repetitiva
Deixe por conta do framework
O código fica mais enxuto e limpo.
É full stack, após instalado vem com todos os componentes para
iniciar o trabalho funcionando. É construído sobre tecnologias
maduras como: Groovy, ANT, Log4J, Sitemesh, Spring Framework
e Hibernate, entre outras;
●
8
10. Por que Grails?
●
Dispõe de ampla variedade de plugins (já implementados e
testados) para a realização das mais diferentes tarefas;
●
É compatível com a especificação JEE;
●
Permite a migração incremental de outras aplicações “legado”;
●
Dispõe de scaffolding dinâmico ou estático para operações
CRUD (Create, Read, Update and Delete);
–
É uma evolução dos antigos geradores de código, uma
técnica suportada por frameworks MVC.
–
Com apenas alguns comandos é gerado todo o CRUD
10
11. Na prática ...
●
Em questão de minutos você cria toda a
estrutura de banco de dados, as telas HTML e
CSS, tudo já funcionando.
Foco na Produtividade do Desenvolvedor
11
12. Diretórios de uma aplicação
●
grails-app - diretório base para os artefatos Grails
–
conf – possui os arquivos de configuração da aplicação
–
controllers - web controllers (C) – tratam de requisições
web
–
domain - classes de domínio (M) – classes onde serão
mapeados os objetos e propriedades do mundo OO para o
mundo relacional (tabelas x colunas)
–
services - camada de serviço
–
views - .jsp, .gsp, .ftl (V) – mostram o retorno das
requisições do navegador
●
lib - bibliotecas de suporte (.jar)
●
src - classes Groovy e Java de suporte para a aplicação
●
scripts - Gant scripts
●
test - testes unitários e integrados
12
13. Exemplo de uma classe de domínio
class Livro {
String titulo
String autor
String descricao
Date dataPublicacao
static hasMany = [comentarios: Comentario]
static constraints = {
titulo nullable: false, blank: false, size: 1..1024
autor nullable: false, blank: false, size: 2..255
descricao nullable:true, blank: true, maxSize: 1000000
dataPublicacao nullable: true
}
}
13
14. O que já fizemos?
●
●
A utilização de Grails começou em 2009
Desafio: projetar e implementar um novo sistema de
gestão acadêmica para a UEPG
–
Problemas?
●
–
Falta de recursos para investimentos em TI, falta de mão de
obra, investe-se em HW e não em SW, e etc.
Alguma instituição pública tem problemas parecidos?
14
15. SGA-Sistema de Gestão Acadêmica
●
●
●
●
O SGA constitui o conjunto de ferramentas que atendem todo o
controle administrativo da atividade acadêmica dos alunos dos
cursos de graduação presenciais e à distância.
É o primeiro dos grandes sistemas da UEPG 100% WEB.
Gerencia desde as chamadas do vestibular até a emissão do Diploma
de Graduação.
É composto basicamente pelos módulos: Acadêmico, Professoronline, Acadêmico-online, Calouro, Vestibular e Registro de
Diplomas, além de uma interface especializada para relatórios.
15
16. Outros sistemas
●
Acadêmico online
●
Professor online
●
Sistema acadêmico – (Módulo administrativo principal)
●
Espaço Físico
●
Registro de Diplomas
●
Sistema de Seguros
●
Sistema de Isenção do Vestibular
●
Sistema de Chamadas do Vestibular
●
Sistema de Matrícula
●
Sistema de Currículos
16
17. Difícil falar em sistemas sem falar em
relatórios ...
●
Diário de classe completo e online
●
Certidões de matrícula, de registro, de conclusão, etc.
●
Várias opções de Histórico Escolar e de visualizações de rendimento acadêmico
●
Emissão do Diploma
●
Extrato de Matrícula
●
Visualização de currículos
●
Ocupação de salas
●
Professores/turmas/horários
●
Perfil de matrícula (regime seriado anual)
●
Protocolos diversos
●
Plano de matrícula
●
Relatórios de visualização de cadastros
●
Entre outros
17
18. E para relatórios?
Este foi outro ponto onde
tivemos que melhorar a
produtividade da equipe.
18
19. O complemento é JasperReports!
O JasperReports é um framework para a geração de
relatórios. É uma ferramenta totalmente open source
e gratuita, e a mais utilizada com esse propósito
atualmente.
Funcionalidades:
● exporta
relatórios para diversos formatos
diferentes, tais como PDF, HTML, XML, XLS,
etc.
● aceita diversas formas de entrada de dados, tais
como um arquivo XML ou CSV, conexão com o
banco de dados, uma sessão do Hibernate, uma
coleção de objetos em memória, etc.
● permite o uso de diagramas, gráficos e códigos de
barras.
● recursos como crosstab, subreports, gráficos e
tabelas
19
20. IDE: iReport
O iReport é um aplicativo gráfico, que permite que você “desenhe”
um relatório, utilizando uma palheta, e arrastando e soltando
componentes, de forma bem parecida com a criação de interfaces e
janelas para programas. Ao salvar, automaticamente será gerado um
JRXML que você poderá utilizar na aplicação que estiver
desenvolvendo. A vantagem é que não é necessário que você conheça
a fundo o XML a ser editado, economizando tempo de
desenvolvimento. Ele também traz um conjunto pronto de templates
que você já pode utilizar diretamente, ou então, escrever seus
próprios templates e reaproveitá-los sempre que precisar criar um
novo tipo de relatório.
20
21. Interface do usuário
Report Designer
JasperServer Library
Elements palette
Formatting tools
Report Inspector
Property sheet
Styles library
Problems list
21
22. Seções de um relatório
Um relatório JasperReport é dividido nas seções:
1. Title: como o nome o indica, esta seção contém o título do relatório;
2. Page Header: esta seção aparece no topo de cada página (como esperado).
É um bom lugar para colocar datas, numeração de páginas, etc.;
3. Column Header: esta seção aparece no topo de cada coluna;
4. Detail: nesta área serão colocadas as informações para cada item de registro.
O JasperReports gera uma seção de detalhe para todo e cada registro
processado;
5. Column Footer: esta seção aparece ao final de cada coluna;
6. Page Footer: esta seção aparece ao final de cada página;
7. Last Page Footer: esta seção aparece ao final da última página;
8. Summary: esta seção aparece ao término do relatório, logo após o último
registro.
22
41. OpenReports
●
●
●
●
É um front-end para JasperReports
Oferece várias funcionalidades que você teria que programar para
executar relatórios na WEB (usuários, senhas e grupos de relatórios)
Você define os usuários que executam cada relatório e pode
adicionar parâmetros que serão atribuídos a um relatório
Permite exportar um relatório para um arquivo PDF, HTML, CSV,
XLS ou PNG
●
Definição de parâmetros como queries, obrigatório/opcional, datas
●
Log de relatórios, scheduling
●
Open Source / customizável
41
46. E o Banco de Dados?
●
Utilização intensa de
–
Constraints
–
Views
–
User defined functions (UDF)
–
Stored Procedures
–
Triggers
Lógica do Negócio no BD
46
47. Volume armazenado
Cadastro
em 2012
Total (até jun/2013)
12.691 (2.032)
54.148
Cursos
44
75
Currículos
59
440
Departamentos
37
40
Disciplinas
1.939
4.674
Turmas
6.400
76.333
Acadêmicos x turmas
119.689
1.447.582
Acadêmico x nota
306.441
4.924.059
Campi presenciais e a distância
13
53
Professores
893
2.789
Acadêmicos
●
Em 2012 foram 44 coordenadores de curso que fiscalizam a atividade de 893 docentes,
acompanhando o rendimento de 12.691 discentes em 6.400 turmas em 13 campi
47
48. Outros dados do sistema
●
Mais de 270 cadastros utilizando Grails, onde as principais operações (incluir, alterar, excluir e
consultar) foram construídas automaticamente, ou seja, sem elaboração de programas por
programadores. A quantidade de cadastros se justifica, pois toda a informação/decisão realizada pelo
sistema vem de informações cadastradas no BD.
●
Mais de 450 arquivos de relatórios (utilizando JasperReports).
●
Perfil dos usuários em 2012
–
Navegadores utilizados
●
●
IE-29%
●
Firefox-26%
●
–
Chrome-41%
Outros-4% (Android 0,47%)
Sistema Operacional
●
Windows-95%
●
Linux-3%
●
Outros-2%
48
49. Contribuição
●
●
A informatização na área acadêmica não é novidade, mas a utilização de
frameworks e a abordagem do projeto do sistema foi o que garantiu a
velocidade necessária na construção do sistema.
A utilização de frameworks de desenvolvimento de software ainda é pouco
difundida em empresas privadas e principalmente no setor público pela
ausência de investimentos em Tecnologia da Informação. Um exemplo
brasileiro que demonstra a importância do tema é o Framework Demoiselle
do SERPRO
49
50. Para refletir...
●
Frameworks não são bala de prata
–
Sempre existe código para ser desenvolvido
–
Reforçando: Não se desenvolve o sistema inteiro com scaffolding
–
Conhecimento de linguagem de programação (pelos programadores) é
essencial
–
Conhecer a plataforma java é obrigatório
–
Use a ferramenta certa para cada tarefa – o desafio é o equilíbrio entre o
que desenvolver com cada ferramenta
–
Conhecer banco de dados e programação em BD facilita muito o
trabalho com frameworks
–
Característica deste projeto foi utilizar frameworks como camada de
apresentação (jasperReports) e acesso (Grails) de dados
50
51. Relevância para o interesse público
●
●
●
O atendimento às leis estaduais de incentivo ao SL e as próprias
diretrizes do Governo Federal são o principal aspecto desta
participação. Embora as políticas governamentais na área sejam
dinâmicas, o SL é indissociável da Administração Pública mesmo
que se considere apenas a economia com licenças de software,
sem levar em conta outras economias e vantagens.
A UEPG também é uma das maiores beneficiárias deste trabalho,
pois incrementou e modernizou o Processo de Desenvolvimento de
Software com baixo investimento. Aumentou a disponibilidade do
sistema que no caso do legado era em um número reduzido de
máquinas, e atualmente em qualquer equipamento ligado a
internet. A UEPG possui polos de ensino a distância em 13 cidades,
inclusive no estado de Santa Catarina.
E a comunidade universitária que consulta e altera dados
atualizados.
51
52. Relevância para o interesse público
Outros benefícios:
●
●
●
●
●
●
Produtividade e Qualidade. Um das principais diretrizes do projeto foi a busca e utilização de
ferramentas de desenvolvimento que estimulassem a produtividade e garantissem a qualidade dos
sistemas.
Padronizar para facilitar a manutenção. A padronização contribuiu nas tarefas de manutenção de
software.
Atualidade e sintonia com o mercado. Uma universidade que possui cursos de informática dispõe de
recursos humanos para construção de software, mas a baixa remuneração provoca uma alta
rotatividade nas equipes. Logo, não se dispõe de muito tempo para treinamento, e a utilização de
tecnologias ultrapassadas desmotiva qualquer equipe. Para contornar este problema foi necessária
a adoção de tecnologias ágeis de desenvolvimento com curvas de aprendizado menores.
Disponibilidade através da web com segurança. É cada vez maior a exigência por parte dos
usuários de que os sistemas sejam disponíveis pela internet. O desafio é a escolha de linguagens e
ferramentas que garantam o desenvolvimento de sistemas WEB seguros e protegidos de práticas
como “injeção de código externo” entre outras. Os frameworks utilizados fornecem estas garantias.
Bom e amplo projeto de Banco de Dados se tornou fundamental.
Executou a migração de um sistema legado obsoleto, para um sistema 100% WEB e com inúmeros
novos recursos.
52
53. Novos projetos
●
Matrícula Online (jan/2014)
–
●
●
Maior dificuldade = sistema seriado anual
Atualizar a interface de relatórios (OpenReports está com o projeto
estacionado pelo desenvolvedor) - JasperServer
Modernização da interface do sistema (visual) preservando os
benefícios de frameworks (em andamento)
●
Desenvolvimento para smartphones/tablets
●
Migração para um SGBD opensource
●
Estágio Online (atualmente em PHP)
53
55. Equipe
●
Coordenador
–
●
Analista de Informática
–
●
Marcelo Pontes
Programadores
–
●
Marcos Vinicius Fidelis
Evandro Raphaell Gura, Emanoély Fernanda Gura, Eunelson José
da Silva Júnior, Everton Rodrigo Horn, Fábio Stankievicz,
Fernando Luiz Wottrich, Iohan Gomes Pierdoná, Jessyca Kawana
Franquitto, Larissa Lourenço Nunes Benck, Michael Julian Bereza
Analistas de Informática colaboradores
–
Adriane Teresinha Caxambu, Carlos Alberto Volpi, Jonathan de
Matos, Luiz Gustavo Barros, Sandro Teixeira
55
56. Onde conseguir mais informações?
●
http://grails.org/
●
http://www.grailsbrasil.com.br/
●
https://twitter.com/grails_brasil
●
http://www.itexto.net/devkico/?page_id=220
–
Instalação, groovy, desenvolvimento de uma aplicação
–
Groovy: o Java que eu sempre quis
●
http://blog.aracomp.com.br/2010_09_01_archive.html
●
Youtube, etc.
–
●
Desenvolvendo uma aplicação em minutos.
Visite a UEPG para ver nossos sistemas em funcionamento.
56