Análise comparativa de produtividade entre Groovy e Java, aplicado no desenvolvimento web



Documentos relacionados
ANÁLISE COMPARATIVA ENTRE GROOVY E JAVA, APLICADO NO DESENVOLVIMENTO WEB

Breve introdução. Uma breve introdução. Simplicidade e Poder. Rápido Dinâmico Robusto

Frameworks - Grails. Aécio Costa

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Qualidade de Software. Profa. Cátia dos Reis Machado

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Normas ISO para Usabilidade

Auditoria e Qualidade de Software ISO/IEC 9126 Engenharia de Software Qualidade de Produto

Qualidade de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

Allisson Barros 12/ Daniel Luz 13/ Leandro Bergmann 14/ Luiz Fernando Vieira 13/ Uriel Silva 12/

WebApps em Java com uso de Frameworks

Linguagens de Programação. Introdução. Carlos Bazilio

Sumário. Prefácio Capítulo 1 O que é qualidade? Capítulo 2 Normas e organismos normativos Capítulo 3 Métricas: visão geral...

TESTE-PLAN: FERRAMENTA DE APOIO AO PLANEJAMENTO E CONTROLE DAS

Qualidade de Produto de Software

APLICATIVO PARA CÁLCULO DE MÉTRICA DE SOFTWARE EM CÓDIGO-FONTE PL/SQL

Ferramenta de indexação e recuperação de documentos eletrônicos utilizando Oracle InterMedia


Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Produtividade na web com Groovy e Grails

Universidade Regional de Blumenau - FURB

Qualidade de Software

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

DESENVOLVIMENTO DE SISTEMAS COM GRAILS + IREPORT

QUALIDADE DO SOFTWARE (PRODUTO)

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Ambiente Virtual de Avaliações Utilizando Certificados Digitais. Fernando Gevard Acadêmico Paulo Fernando da Silva - Orientador

Aspectos de Segurança em Programação com Java

Atividade da gerência da qualidade

Paradigmas de Linguagens de Programação

Documento de Arquitetura

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA

Em direção à portabilidade entre plataformas de Computação em Nuvem usando MDE. Elias Adriano - UFSCar Daniel Lucrédio - UFSCar

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Grails: o que isso quer dizer? Gilliard Cordeiro

IC-UNICAMP IC-UNICAMP

Introdução à Engenharia de Software

Genio desafios. O Genio entre os novos paradigmas da engenharia do software. quidgest@quidgest.com

FERRAMENTA WEB PARA MODELAGEM LÓGICA EM PROJETOS DE BANCOS DE DADOS RELACIONAIS

DESENVOLVIMENTO DE SOFTWARE II. Aula 07 A linguagem de programação C# e sua sintaxe

INTEGRAÇÃO DE TÉCNICAS DE SISTEMAS DISTRIBUÍDOS APLICADA AO DESENVOLVIMENTO DE UM AMBIENTE PARA O JOGO DE XADREZ

Groovy & Grails. Arian Pasquali. quarta-feira, 12 de outubro de 11

Introdução à Linguagem Java

SISTEMA PARA CONTROLE DE ESTOQUE DOS ALMOXARIFADOS DE AGÊNCIAS DE CORREIOS NO ESTADO DE SANTA CATARINA

PLANIFICAÇÃO MODULAR

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Projeto Arquitetural do IEmbedded

Gerador de aplicativos Oracle PL/SQL WEB baseado na estrutura das tabelas do. Wagner da Silva Orientando Prof. Alexander Roberto Valdameri Orientador

Teste e Depuração de Sistemas Web. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

AMBIENTE WEB PARA GERÊNCIA DE PROCESSO DE SOFTWARE BASEADO NO SCRUM

Modelagem de Sistemas Web. Ferramentas e metodologias para projeto de sistemas web

Qualidade de software

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Ferramentas para Desenvolvimento de Software Livre: Ferramentas Gráficas para CVS

O uso do gestor de conteúdos plone no suporte a processos de software

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

GeCA: Uma Ferramenta de Engenharia Reversa e Geração Automática de Código

SyncEasy Aplicativo para sincronização de arquivos entre dispositivos móveis e computadores utilizando metadados

Rede de Laboratórios de Produtividade de Software

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Orientação a Objetos

Manutenção desoftware. SCE 186- Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestrede2002

Conteúdo Programático de PHP

Gerenciador de Log. Documento Visão. Projeto Integrador 2015/2. Engenharia de Software. Versão 2.0. Engenharia de Software

Modelo para Documento de. Especificação de Requisitos de Software

PIM. CST em Análise e Desenvolvimento de Sistemas. Projeto Integrado Multidisciplinar. 4º/3º Períodos 2010/2 UNIVERSIDADE PAULISTA CURSO

Roteiro 2 Conceitos Gerais

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

UFG - Instituto de Informática

` Bacharelado em Ciências da Computação. AVALIAÇÃO DA QUALIDADE DE SITES ACADÊMICOS BASEADO NA NORMA NBR Trabalho de Conclusão de Curso

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

Sistema para Reservas de Veículos de uma Cooperativa de Saúde. Ricardo Hoffmann Orientador: Wilson Pedro Carli

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

Aluna: Vanessa de Mello Orientador: Everaldo Artur Grahl

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

SISTEMA DE APOIO GERENCIAL COM FOCO NA PRÁTICA DE TREINAMENTO ORGANIZACIONAL BASEADO NO MODELO CMMI. Werinton Ferrari Orientador: Wilson Pedro Carli

2.0. Uma Nova Geração de Ferramentas para Gestão de Processos de Software. Coordenação Carla Alessandra Lima Reis Rodrigo Quites Reis

Tecnologia e Sistemas de Informações

VISEDU-CG 3.0: Aplicação didática para visualizar material educacional Módulo de Computação Gráfica

UNIVASF - Universidade Federal do Vale do São Francisco Manutenção de Software

EDITOR GRÁFICO PARA SEQUENCIAMENTO E NAVEGAÇÃO USANDO REDES DE PETRI. Maicon Mueller prof. Dalton S. dos Reis

= PF &ODXGLD+D]DQ06F. &HQiULR $JHQGD 3URGXWLYLGDGHGH6RIWZDUH. BFPUG Brazilian Function Point Users Group.

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

XX SEMINCO - SEMINÁRIO DE COMPUTAÇÃO { { SEMINCO SEMINÁRIO DE COMPUTAÇÃO ANAIS FURB - BLUMENAU - SC

Conecta Gerenciador de Computadores em Rede

Engenharia de software para desenvolvimento com LabVIEW: Validação

sendo bastante acessível e compreendido pelos usuários que o utilizarem.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Testes de Software. Por quê testar? 3/28/2011. Andrew Diniz da Costa. Manter alta qualidade. Prevenir e encontrar defeitos

Transcrição:

Análise comparativa de produtividade entre Groovy e Java, aplicado no desenvolvimento web Vandir Fernando Rezende Orientado por Marcel Hugo

Roteiro Introdução Objetivos Fundamentação Teórica Desenvolvimento Resultados Conclusão Extensões

Introdução Linguagem A é mais produtiva que linguagem B. Como comprovar que uma linguagem é mais produtiva que outra? A afirmação está baseada no que? Em qual segmento de software? Quais os critérios de avaliação?

Objetivos Comparar a produtividade, no desenvolvimento web, entre as linguagens Groovy e Java Definir os critérios de avaliação Analisar o aplicativo, estudo de caso Verificar as diferenças entre Groovy e Java Implementar o estudo de caso em ambas as linguagens Estabelecer os resultados da comparação

Fundamentação Teórica NBR-13596 Funcionalidade Confiabilidade Usabilidade Eficiência Manutenibilidade Portabilidade Características das linguagens Ortogonalidade Abstração Simplicidade Global Expressividade Legibilidade Confiabilidade Tipos de Dados e Estrutura Verificação de Tipos Sintaxe Tratamento de Exceção Capacidade de Escrita

Fundamentação Teórica Groovy Grails Java JCompany

Trabalhos Correlatos NBR-13596 Avaliação da qualidade de sites acadêmicos (Rossi, 2002) Groovy RunGroovy: extensão do BlueJ (Müller, 2007) Scrum PRONTO! Software para gestão de projetos ágeis (Gomes, 2009) Ambiente web para gestão de processo de software (Pereira, 2005)

Desenvolvimento Aplicação da NBR-13596 nos critérios de avaliação Correlação entre as características das linguagens com a norma Meio de avaliação dos critérios Especificação dos casos de uso Cálculo dos UCPs Diferenças entre Groovy e Java

Desenvolvimento Implementação do aplicativo em Groovy Implementação do aplicativo em Java Resultado do questionário de avaliação Produtividade por UCP Comparação de desempenho dos aplicativos

NBR-13596 Produtividade Usabilidade Inteligibilidade Apreensibilidade Eficiência Tempo Recurso Manutenibilidade Analisabilidade Modificabilidade Confiabilidade

Correlação Custo Usabilidade Eficiência Manutenibilidade Confiabilidade Ortogonalidade X X X X Simplicidade global X X Legibilidade X X X Tipo de dados e estrutura X Sintaxe X Capacidade de escrita X X X Abstração X X X X Expressividade X X X Verificação de tipos X X Tratamento de exceção X X X

Meio de Avaliação Estático Usabilidade Manutenibilidade Confiabilidade Dinâmico Produtividade Eficiência

Casos de Uso

Diagrama de Classes

Cálculo dos UCPs CASO DE USO UCP UC001 - Manter sprint 13,6 UC002 - Manter fase 13,6 UC003 - Manter tarefa 19,7 UC004 - Manter usuário 19,7 UC005 - Extrair relatório 25,9 UC006 - Manter trâmite 19,7 UC007 - Manter lançamento 25,9

Diferenças Objetos Tipagem dinâmica / Duck typing Ponto-e-vírgula Return Igualdade Conceito de verdade Concatenação de String

Diferenças

Diferenças Laços de repetição

Diferenças Groovy Beans

Diferenças GORM (Groovy Object Relational Mapping)

Implementação (Java) JCompany Struts Tiles Hibernate Log4j XML Wizards

Implementação (Java) JCompany Wizard

Implementação (Java) JCompany classe de modelo

Implementação (Groovy) Grails Spring SiteMesh JUnit GORM Configuração por convenção

Implementação (Groovy) Grails (instalação) Download em grails.org Descompactar em pasta base GRAILS_HOME PATH

Implementação (Groovy) Grails (criação de projeto) grails create-app nome_projeto

Implementação (Groovy) Grails (criação de rotina) cd nome_projeto grails create-domain-class br.furb.nomeclasse Definir atributos grails create-controller br.furb.nomeclasse grails generate-views br.furb.nomeclasse grails run-app http://localhost:8080/nome_projeto

Resultados Características estáticas CARACTERÍSTICA GROOVY JAVA Ortogonalidade X Simplicidade global X Legibilidade X Tipos de dados e estrutura Sintaxe X X Capacidade de escrita X Abstração X Expressividade X Confiabilidade X Verificação de tipos X Tratamento de exceção X

Resultados Características dinâmicas

Resultados Características dinâmicas

Resultados Características dinâmicas

Conclusão Groovy é 35% mais produtivo Java é 10% performático Java consome 50% menos memória Groovy aloca 2500 classes a mais Groovy possui características para produtividade Java destacam-se características para maturidade

Conclusão Produtividade X Performance

Extensões Analisar a arquitetura (performance) Profilers (memória) Comparar Groovy com demais linguagens Usar Groovy/Grails em futuros trabalhos Integrar o estudo de caso com o PRONTO! (Gomes, 2009)

Obrigado! FIM.