produtividade em desenvolvimento de software e geração automática de código
TRANSCRIPT
![Page 1: Produtividade em Desenvolvimento de Software e Geração Automática de Código](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/8.jpg)
Processo de Desenvolvimento de Software
![Page 9: Produtividade em Desenvolvimento de Software e Geração Automática de Código](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/23.jpg)
Geração de Código
![Page 24: Produtividade em Desenvolvimento de Software e Geração Automática de Código](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/24.jpg)
Demonstração
Vídeo
![Page 25: Produtividade em Desenvolvimento de Software e Geração Automática de Código](https://reader036.vdocuments.pub/reader036/viewer/2022062514/55bded37bb61eb8a3c8b4609/html5/thumbnails/25.jpg)
Perguntas