Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Objetivos
Posicionamentos
Objetivos práticos
Propósitos gerais
Evidenciação Empírica de um Processo para
Contribuição em Projetos de Software Livre e
Código Aberto
João Henrique Ferreira de Freitas1
1 Pós
Graduação em Desenvolvimento de Software
Universidade Federal de Lavras
Encontro Técnico UFLA, 2008
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Objetivos
Posicionamentos
Objetivos práticos
Propósitos pessoais
Responder a pergunta principal do trabalho: Como
colaborar efetivamente?
Três projetos iniciais:
Tikiwiki;
Pfsense;
Bacula;
Apenas um escolhido para as experiências.
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Objetivos
Posicionamentos
Objetivos práticos
Definição de termos
Aumentar o conhecimento em desenvolvimento de
software;
Colaborar com o desenvolvimento de um produto
internacional;
Implementar e resolver necessidades referentes as
funcionalidades desejadas do software escolhido.
João Henrique Ferreira de Freitas
Relatar, através de uma experiência, um processo e
prática para a contribuição e melhoramento em SL/CA;
Evidenciação de processo para contribuição em SL/CA
Colaboração submissão de patchs que são definidos como
mudanças, consertos ou melhoramentos
contendo código fonte, documentação e
processos;
Projeto de SL/CA é uma organização virtual centrada em torno
de um código fonte, com participação espontânea
e variável de pessoas.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Objetivos
Posicionamentos
Objetivos práticos
Ponto de observações
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Objetivos
Posicionamentos
Objetivos práticos
Objetivos práticos
Contribuir implementando um novo recurso de
interfaceamento com SGBDs para o projeto escolhido;
Referenciado no trabalho como patch libdbi;
Atravez da experiência, vivenciamos e capturamos o
processo utilizado durante o desenvolvimento do patch.
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Objetivos
Posicionamentos
Objetivos práticos
Projeto de SL/CA escolhido
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Objetivos
Posicionamentos
Objetivos práticos
Arquitetura geral do Bacula
Projeto Bacula (www.bacula.org) devido aos seguintes fatores:
Tempo de atividade: 10 anos;
Segmento da aplicação: meio corporativo e infraestrutura;
Documentação: completa, nivelada e atualizada;
Comunidade formada: usuário, desenvolvedores,
empresas;
Comprometimento.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Antes do patch libdbi
Vários tipos de SGBDs
podem ser suportados;
Modular sem
dependência de
implementação e API;
Modular mas
dependente de
implementação e API de
cada SGBD;
Ponto único para
manutenção e
refactoting.
Três códigos distintos
para manter.
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Coleta de dados
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia
Buscas no hyperespaço, Internet:
Websites;
Classificação dos artefatos levantados em três grupos:
Estrutural, como são desenvolvidos e organizados;
Listas de e-mail públicas;
Conteúdo, tipos de artefatos e conteúdos;
IRC chats;
Artefatos no repositório de controle de versão;
Documentação oficial do projeto.
João Henrique Ferreira de Freitas
Objetivos
Posicionamentos
Objetivos práticos
Após o patch libdbi
Somente três SGBDs
suportados (Mysql,
Postgresql, Sqlite);
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Objetivos
Posicionamentos
Objetivos práticos
Evidenciação de processo para contribuição em SL/CA
Padrões de utilização, interação do usuário,
desenvolvedores, atualização.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, site do projeto
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, projetos ativos
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, documentação
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, bugtrack
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, guia de desenvolvimento
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, análise dos testes
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, testes de regressão
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, listas de discussão
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, threads da lista
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Taxionomia, resumo
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Desenvolvimento
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Testar;
Utilizado uma
exploração arquitetural
do XP;
Documentar;
Utilizado um modelo de
programação
exploratória;
Analisar.
Feedback;
Explorar;
Implementação
Testes de regressão
para validações,
sempre.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Testes
Análise
João Henrique Ferreira de Freitas
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Evidenciação de processo para contribuição em SL/CA
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Submissão
Discussões
João Henrique Ferreira de Freitas
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Classificação
Ciclo de desenvolvimento
Timeline das atividades
Timeline
Aprendizado: Técnico
Timeline do desenvolvimento
Data
Submissões Data Integração
2007­12­07
Exploração Arquitetural
2008­01­11
2008­01­18
2008­02­01
2008­02­02
2008­02­12
2008­02­13
2008­02­19
2008­02­22
2008­02­21
2008­02­27
2008­02­25
2008­04­15
Desenvolvimento
2008­03­17
2008­04­15
2008­04­09
2008­04­09
2008­04­14
2008­04­15
2008­04­27
2008­04­27
2008­05­02
Exploração Arquitetural:
Desenvolvimento:
Orçadas
64h
168h
Revision
Aprofundamento em C/C++;
Atenção a refactoring;
6358
6413
6464
6498
6825
6826
6817
6818
6874
Leitura de código fonte aprimorado;
Entendimento do domínio do problema;
Conhecimento em ferramentas de suporte (autoconf,
automake, libtool, Makefiles).
Trabalhadas
59.89h
118h
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Página 1
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Aprendizado: Engenharia de Software
Aprendizado: Pessoal
Na prática:
Testes de regressão;
Escrita e leitura em inglês;
Construir para verificação;
Exposição de idéias em inglês;
Aderência a padrões;
Diálogos constantes com pessoas de outros países.
Modularidade;
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Processo geral de contribuição
1
2
3
4
5
6
7
Alguém reporta um bug ou solicita uma nova
funcionalidade;
O item se torna prioridade, muitos usuários comentam,
endoçam;
Há uma discussão sobre o item mais aprofundada;
Alguém posta um patch, levantando uma incerteza sobre o
mesmo;
Desenvolvedores testam e comentam o patch, caso ele
resolva o problema;
O patch é revisto e formalmente testado;
Quando o patch é considerado aceito, ele é integrado e
liberado na próxima versão.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Cada projeto de SL/CA estabelece seus próprios meios.
Mas existem similaridades entre eles:
Discussões em listas de email públicas;
Gerenciamento do código fonte e configuração;
Desenvolvimento próximo do usuário final.
Os portais dos projetos apresentam muito sobre suas
características e formas de organização;
Existe um caminho pré suposto no qual o usuário
necessita seguir para colaborar efetivamente.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Conclusões Pessoais
Dentro das comunidades de SL/CA
As contribuições são aceitas em projetos de SL/CA. Mas é
necessário bom senso, diálogo intenso, carisma,
entendimento do problema e pró-atividade;
Trabalhe sempre para não quebrar o código já funcional e
com certeza a sua contribuição será aceita.
João Henrique Ferreira de Freitas
Conclusões do Trabalho
Evidenciação de processo para contribuição em SL/CA
Suporte e manutenção do patch libdbi para o projeto
Bacula;
Contribuições no framework libdbi: casos de testes, novos
drivers, profiling e benchmarks;
Continuar pesquisas relacionado a busca de padrões em
projetos de SL/CA.
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Introdução
Exposição da Experiência
Aprendizados
Conclusão
Trabalhos Futuros
Contato
João Henrique Ferreira de Freitas
[email protected]
http://joaohff.pbwiki.com
http://joaohf.livejournal.com
João Henrique Ferreira de Freitas
Evidenciação de processo para contribuição em SL/CA
Download

Evidenciação Empírica de um Processo para Contribuição em