Grails latinoware

828 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Grails latinoware

  1. 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. 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. 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. 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. 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. 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. 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. 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
  9. 9. Arquitetura Grails 9
  10. 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. 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. 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. 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. 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. 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. 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. 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. 18. E para relatórios? Este foi outro ponto onde tivemos que melhorar a produtividade da equipe. 18
  19. 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. 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. 21. Interface do usuário Report Designer JasperServer Library Elements palette Formatting tools Report Inspector Property sheet Styles library Problems list 21
  22. 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
  23. 23. Um relatório 23
  24. 24. A interface dos sistemas 24
  25. 25. Tela inicial 25
  26. 26. SISACAD-Listagem de acadêmicos 26
  27. 27. SISACAD-Listagem de departamentos 27
  28. 28. SISACAD-Visualização de departamentos Hiperlink para o cadastro de setores 28
  29. 29. SISACAD-Edição de departamentos 29
  30. 30. SISACAD-Outro cadastro Parecido com os outros cadastros? Sim. 30
  31. 31. Professor online 31
  32. 32. Visualização de lançamentos Diário de Classe 32
  33. 33. Diário de classe Este programa não é gerado automaticamente. Tem que programar também. 33
  34. 34. Academico online 1 34
  35. 35. Academico online 2 35
  36. 36. Academico online 3 36
  37. 37. Academico online 4 37
  38. 38. Academico online 5 38
  39. 39. Academico online 6 39
  40. 40. Visualização dos relatórios Como controlar a segurança no acesso aos relatórios? 40
  41. 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
  42. 42. OpenReports 1 42
  43. 43. OpenReports 2 - Grupos 43
  44. 44. OpenReports 3 - Relatórios 44
  45. 45. OpenReports 4 - Argumentos 45
  46. 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. 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. 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. 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. 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. 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. 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. 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
  54. 54. Mudando a interface 54
  55. 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. 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
  57. 57. Contato Obrigado a todos! Marcos Vinicius Fidelis mvfidelis@uepg.br - fidelis@utfpr.edu.br 57

×