produtividade em desenvolvimento de software e geração automática de código
TRANSCRIPT
Produtividade em Desenvolvimento de Software e Geração
Automática de Código
Fabíola Guerra NakamuraVitor 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
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.
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.
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.
Motivação
Economia de Escala
Unidades fabricadas
Custo Unitário
+ Produtividade
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
Processo de Desenvolvimento de Software
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
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
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
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
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.
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
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
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.
Geração de Código Vantagens
Qualidade
Consistência
Produtividade
Abstração
Geração de Código Desvantagens
Documentação
Educação
Manutenção
Complexidade
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
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
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
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.
Geração de Código
Demonstração
Vídeo
Perguntas