Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra...

25
Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista

Transcript of Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra...

Page 1: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Produtividade em Desenvolvimento de Software e Geração

Automática de Código

Fabíola Guerra NakamuraVitor Alcântara Batista

Page 2: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Agenda

Motivação Aumento de Produtividade no

Desenvolvimento de Software Teoria da Geração de Código Vantagens e Desvantagens Demonstração

Page 3: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Motivação

A Lei de Acumulação Capitalista – Karl Marx Mais Valia (ou lucro): é a diferença

entre o que o trabalhador agrega ao processo produtivo pelo valor que é pago a ele. O lucro só é obtido através da exploração do trabalhador pelos proprietários dos meios de produção.

Page 4: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Motivação A Lei de Acumulação Capitalista –

Karl Marx O acréscimo de capital devido à mais

valia faz crescer na mesma proporção a demanda por força de Trabalho;

Se a força de trabalho não aumenta junto com a demanda, os salários são aumentados, o que causa a redução da mais valia e conseqüentemente a redução da acumulação de capital.

Page 5: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Motivação

A Lei de Acumulação Capitalista – Karl Marx Portanto, a produtividade do trabalho

social se torna a mais relevante alavanca da acumulação capitalista.

Page 6: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Motivação

Economia de Escala

Unidades fabricadas

Custo Unitário

+ Produtividade

Page 7: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Aumento da produtividade no desenvolvimento de SW Alguns meios de aumentar a

produtividade: Processo de Desenvolvimento de

Software Clima Organizacional adequado Sistema de Recompensas Uso de Ferramentas Case Reutilização de Bibliotecas Uso de geração de código

Page 8: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Processo de Desenvolvimento de Software

Page 9: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Clima Organizacional Adequado

Empresas precisam de pessoas capacitadas e motivadas

Recomendações: Manter equipes pequenas (< 10) Líderes das equipes devem ser

admirados pela qualificação técnica As equipes devem conter membros

que tenham skills complementares

Page 10: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Sistema de Recompensa

Recomendações: Utilização de critérios objetivos Recompensas individuais, por equipes

e para toda a organização Recompensar não só a produtividade

em si, mas também a aplicação de novas tecnologias e melhorias na infra-estrutura e no processo

Page 11: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Uso de Ferramentas Case

Facilidade de modelagem Validação semântica dos modelos Automação de testes Documentação automática Geração de parte do código da

aplicação

Page 12: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Técnica de construir códigos utilizando

programas

Vão scripts simples até programas complexos que transformam modelos lógicos em aplicações completas

Saída é um código que seria escrito a mão

Page 13: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Geradores Ativos

Geram códigos que não são modificados ou são modificados em locais especiais que são preservados quando o código é re-criado

São rodados múltiplas vezes no mesmo código de saída conforme o desenho de entrada ou o gerador muda.

Page 14: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código

Geradores Passivos Geram códigos uma vez

Os códigos gerados são modificados pelo desenvolvedor

Provêm um aumento de produtividade inicial

Page 15: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Fluxo Convencional

Editar -> compilar -> testar

Fluxo de geradores ativos: Rodar o gerador -> compilar -> testar Se encontrar problema modificar modelo ou

código de entrada do gerador e gerar novamente

Fluxo de geradores passivos Rodar gerador -> editar -> compilar -> testar Se encontrar problema seguir fluxo convencional

Page 16: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Aplicações mais comuns:

Acesso a banco de dados Interface com usuário

A geração automática reduz erros.

Para estas aplicações um gerador pode prover código para várias plataformas.

Page 17: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Vantagens

Qualidade

Consistência

Produtividade

Abstração

Page 18: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Desvantagens

Documentação

Educação

Manutenção

Complexidade

Page 19: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código Caracterização de geradores

Tipos de Entrada Códigos Modelos abstratos

Tipos de Saída Código de entrada com código adicional Código novo que implementa

parcialmente o desenho e que necessita ser estendido

Código completo

Page 20: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código

Preocupações Experiências anteriores sem sucesso Geradores tentam fazer coisas demais A qualidade do código de saída pode

ser ruim Substituir desenvolvedores Muito complexos Não tem manutenção

Page 21: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código

Verificar condições favoráveis de utilização

Não deve substituir um desenho sólido de orientação a objetos

Page 22: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código

Verificar se é possível utilizar um gerador de código

Definir como automatizar o processo

Procurar o gerador que cumpra os requisitos necessários.

Page 23: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Geração de Código

Page 24: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Demonstração

Vídeo

Page 25: Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista.

Perguntas