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

Preview:

Citation preview

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

Recommended