Produtividade em Desenvolvimento de Software e Geração Automática de Código

1.595 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.595
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
23
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Produtividade em Desenvolvimento de Software e Geração Automática de Código

  1. 1. Produtividade em Desenvolvimento de Software e Geração Automática de Código Fabíola Guerra Nakamura Vitor Alcântara Batista
  2. 2. Agenda <ul><li>Motivação </li></ul><ul><li>Aumento de Produtividade no Desenvolvimento de Software </li></ul><ul><li>Teoria da Geração de Código </li></ul><ul><li>Vantagens e Desvantagens </li></ul><ul><li>Demonstração </li></ul>
  3. 3. Motivação <ul><li>A Lei de Acumulação Capitalista – Karl Marx </li></ul><ul><ul><li>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. </li></ul></ul>
  4. 4. Motivação <ul><li>A Lei de Acumulação Capitalista – Karl Marx </li></ul><ul><ul><li>O acréscimo de capital devido à mais valia faz crescer na mesma proporção a demanda por força de Trabalho; </li></ul></ul><ul><ul><li>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. </li></ul></ul>
  5. 5. Motivação <ul><li>A Lei de Acumulação Capitalista – Karl Marx </li></ul><ul><ul><li>Portanto, a produtividade do trabalho social se torna a mais relevante alavanca da acumulação capitalista. </li></ul></ul>
  6. 6. Motivação <ul><li>Economia de Escala </li></ul>Unidades fabricadas Custo Unitário + Produtividade
  7. 7. Aumento da produtividade no desenvolvimento de SW <ul><li>Alguns meios de aumentar a produtividade: </li></ul><ul><ul><li>Processo de Desenvolvimento de Software </li></ul></ul><ul><ul><li>Clima Organizacional adequado </li></ul></ul><ul><ul><li>Sistema de Recompensas </li></ul></ul><ul><ul><li>Uso de Ferramentas Case </li></ul></ul><ul><ul><li>Reutilização de Bibliotecas </li></ul></ul><ul><ul><li>Uso de geração de código </li></ul></ul>
  8. 8. Processo de Desenvolvimento de Software
  9. 9. Clima Organizacional Adequado <ul><li>Empresas precisam de pessoas capacitadas e motivadas </li></ul><ul><li>Recomendações: </li></ul><ul><ul><li>Manter equipes pequenas (< 10) </li></ul></ul><ul><ul><li>Líderes das equipes devem ser admirados pela qualificação técnica </li></ul></ul><ul><ul><li>As equipes devem conter membros que tenham skills complementares </li></ul></ul>
  10. 10. Sistema de Recompensa <ul><li>Recomendações: </li></ul><ul><ul><li>Utilização de critérios objetivos </li></ul></ul><ul><ul><li>Recompensas individuais, por equipes e para toda a organização </li></ul></ul><ul><ul><li>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 </li></ul></ul>
  11. 11. Uso de Ferramentas Case <ul><li>Facilidade de modelagem </li></ul><ul><li>Validação semântica dos modelos </li></ul><ul><li>Automação de testes </li></ul><ul><li>Documentação automática </li></ul><ul><li>Geração de parte do código da aplicação </li></ul>
  12. 12. Geração de Código <ul><li>Técnica de con s truir códigos utilizando programas </li></ul><ul><li>Vão scripts simples até programas complexos que transformam modelos lógicos em aplicações completas </li></ul><ul><li>Saída é um código que seria escrito a mão </li></ul>
  13. 13. Geração de Código <ul><li>Geradores Ativos </li></ul><ul><ul><li>G eram códigos que não são modificados o u são modificados em locais especiais que são preservados quando o código é re-criado </li></ul></ul><ul><ul><li>São rodados m ú ltiplas vezes no mesmo código de saída conforme o desenho de entrada ou o gerador muda. </li></ul></ul>
  14. 14. Geração de Código <ul><li>Geradores Passivos </li></ul><ul><ul><li>G eram códigos uma vez </li></ul></ul><ul><ul><li>Os códigos gerados são modificados pelo desenvolvedor </li></ul></ul><ul><ul><li>Provêm um aumento de produtividade inicial </li></ul></ul>
  15. 15. Geração de Código <ul><li>Fluxo Convencional </li></ul><ul><ul><li>Editar -> compilar -> testar </li></ul></ul><ul><li>Fluxo de geradores ativos: </li></ul><ul><ul><li>Rodar o gerador -> compilar -> testar </li></ul></ul><ul><ul><li>Se encontrar problema modifica r modelo ou código de entrada do gerador e gera r novamente </li></ul></ul><ul><li>Fluxo de geradores passivos </li></ul><ul><ul><li>Rodar gerador -> editar -> compilar -> testar </li></ul></ul><ul><ul><li>Se encontrar problema seguir fluxo convencional </li></ul></ul>
  16. 16. Geração de Código <ul><li>Aplicações mais comuns: </li></ul><ul><ul><li>A cesso a banco de dados </li></ul></ul><ul><ul><li>I nterface com usuário </li></ul></ul><ul><li>A geração automática reduz erros. </li></ul><ul><li>Para estas aplicações um gerador pode prover código para várias plataformas. </li></ul>
  17. 17. Geração de Código <ul><li>Vantagens </li></ul><ul><ul><li>Qualidade </li></ul></ul><ul><ul><li>Consistência </li></ul></ul><ul><ul><li>Produtividade </li></ul></ul><ul><ul><li>Abstração </li></ul></ul>
  18. 18. Geração de Código <ul><li>Desvantagens </li></ul><ul><ul><li>Documentação </li></ul></ul><ul><ul><li>Educação </li></ul></ul><ul><ul><li>Manutenção </li></ul></ul><ul><ul><li>Complexidade </li></ul></ul>
  19. 19. Geração de Código <ul><li>Caracterização de geradores </li></ul><ul><ul><li>Tipos de Entrada </li></ul></ul><ul><ul><ul><li>Códigos </li></ul></ul></ul><ul><ul><ul><li>Modelos abstratos </li></ul></ul></ul><ul><ul><li>Tipos de Saída </li></ul></ul><ul><ul><ul><li>Código de entrada com código adicional </li></ul></ul></ul><ul><ul><ul><li>Código novo que implementa parcialmente o desenho e que necessita ser estendido </li></ul></ul></ul><ul><ul><ul><li>Código completo </li></ul></ul></ul>
  20. 20. Geração de Código <ul><li>Preocupações </li></ul><ul><ul><li>Experiências anteriores sem sucesso </li></ul></ul><ul><ul><li>Geradores tentam fazer coisas demais </li></ul></ul><ul><ul><li>A qualidade do código de saída pode ser ruim </li></ul></ul><ul><ul><li>Substituir desenvolvedores </li></ul></ul><ul><ul><li>M u ito complexos </li></ul></ul><ul><ul><li>Não tem manutenção </li></ul></ul>
  21. 21. Geração de Código <ul><li>Verificar condições favoráveis de utilização </li></ul><ul><li>Não deve substituir um desenho sólido de orientação a objetos </li></ul>
  22. 22. Geração de Código <ul><li>Verificar se é possível utilizar um gerador de código </li></ul><ul><li>Definir como automatizar o processo </li></ul><ul><li>Procurar o gerador que cumpra os requisitos necessários. </li></ul>
  23. 23. Geração de Código
  24. 24. Demonstração <ul><li>Vídeo </li></ul>
  25. 25. Perguntas

×