The Apache Success Story Exploring an Open Source Development Process

Slides:



Advertisements
Apresentações semelhantes
Alex de Magalhães Machado
Advertisements

APRESENTAÇÃO DE ESTÁGIO
O que é ? Subversion (ou svn) é um sistema de controle de versão criado para substituir o CVS. Ele permite que você recupere versões antigas de seus arquivos,
Tecnologia da Informação Orientação a Aspectos
Threads.
FDD.
Gerenciamento de Requisitos com Casos de Uso
Competência: Compreender as métricas de Software
Gerência de Configuração
Uma visão geral Grupo: Alexandre Henrique Vieira Soares
Configuração de manutenção
Gerência de Configuração de Software
GESTÃO DE PROJETOS Aula 7 1.
Trabalho de FES PERT/CPM Alunas: - Debora Theodoro A. da Silva
ANÁLISE DE REQUISITOS DE ENGENHARIA DE SOFTWARE
RUPinho Qualidade de Software
UNIVERSIDADE FEDERAL DE ITAJUBÁ Groupware Departamento de Suporte a Informática.
Visão Geral PRO.NET.
Ana Sofia; Diogo Morgado; Fábio Prata; Patrícia Carvalho
C&L: Um Ambiente para Edição e Visualização de Cenários e Léxicos
Concurrent Versions System Leandro Augusto de Oliveira
Linguagem de Programação IV
Gerenciamento de Dados
União dos Escoteiros do Brasil
Cluster Beowulf.
MapReduce Conceitos e Aplicações
Prototipagem rápida de gameplay
Engenharia de Software
Caro aluno, Estas orientações foram elaboradas para auxiliar você em seu processo de tornar-se um aluno na modalidade a distância.
Métodos Quantitativos
Gerência de Configuração - GC
Software engineering, the software process and their support M.M. Lehman Apresentadora: Tarciana Dias da Silva.
Programação Orientada à Objetos
Gestão por Competências
Estratégia Organizacional
A abordagem de banco de dados para gerenciamento de dados
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Como estimular o Desenvolvimento dos Colaboradores
Processos.
Software Livre.
S ISTEMA DE C ONTROLE DE V ERSÃO : B AZAAR Carolina Ramalho Priscilla Gonçalves.
Gerência de comunicação
Gestão de defeitos.
Fundamentos Teóricos da Gestão Pública, Estratégica e Social
Gabriel Bastos Machado
Informações sobre o Teleduc O TelEduc é um ambiente para a criação, participação e administração de cursos na Web. Ele foi concebido tendo como alvo o.
Gestão de Projetos de Software
Hukarz Open Source Process D01 Alan Kelon, Silvio Meira Recife, 01/12/2006.
A Comunicação na Gestão de RH
Engenharia de Software
ADS – 5º Semestre Trabalho de Conclusão de Curso
Aguilar Figueira Dias Orientador Prof. Dr. João Bosco da Mota Alves
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Ferramentas/Recursos do TelEduc. Os recursos do ambiente são distribuídos da seguinte forma: Estrutura do Ambiente: contém as informações sobre o funcionamento.
Metodologias e Técnicas Fornece suporte não apenas à “ponte” de comunicação, mas:  Alocação de trabalho Minimizar a complexidade de coordenação e integração.
Capítulo 6: SAD – Arquitetura e aspectos de rede e segurança
Diferenças entre as Técnicas de Estimativa: Análise por Ponto de Função e Stories Points Aluna: Fabiana Leonel Professores: Alexandre.
Gerenciamento dos Recursos Humanos
Controle de Versão com SubVersion
Planejamento da Movimentação de Mercadorias: Estratégia Logística
CVS – Gerenciamento de Versões
• Manejo – Formação – Professor.
Linguagem Técnica II SCM Software Configuration Management Aula 03 Prof. Renato Novais
NFR Framework (Non-Functional Requirements)
Sistemas Aplicativos para Usuários Finais USABILIDADE DE SOFTWARE.
MAPS: Um Modelo de Adaptação de Processos de Software Ciro Carneiro Coelho Orientador Prof. Hermano Perrelli de Moura.
Gerenciamento de riscos
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Métodos Quantitativos Prof. Edson Nemer Site:
CMMI Capability Maturity Model Integration
Transcrição da apresentação:

The Apache Success Story Exploring an Open Source Development Process By Jim Jagielski Mestrado em Informática – UFCG Cesar Rocha – cesar@dsc.ufpb.br Na última vez eu havia falado sobre o ESCOT; Agora vamos falar sobre um outro estudo de caso: Apache;

Estrutura de Tópicos Introdução; O Processo de desenvolvimento; Estrutura da equipe; Ferramentas; Infra-estrutura de comunicação utilizada; O Processo Apache; Especificidades; Síntese das principais condutas; O Futuro do processo Apache; Conclusões;

Introdução O movimento Open Source Tecnology (OST) tem se desenvolvido ao longo do tempo; Reuniu-se um grande número de desenvolvedores geograficamente dispersos em todo o globo; Um dos projetos mais conhecidos pela comunidade acadêmica: Linux; O servidor Web Apache também é um projeto Open Source de sucesso: O servidor Apache está presente em cerca de 60% de todos os Web sites na Internet; Hoje, junto com o Linux, o Apache denota um dos mais populares “pacotes OST”; A gente sabe que hj o movimento open source tem um apelo muito forte no cenário de desenvolvimento de software; muitos desenvolvedores em todo o mundo tem unido suas forcas para propor sistemas alternativos aqueles que estao inseridos

Introdução O sucesso do Apache Group ( Apache Software Foundation – ASF ) não está relacionado somente ao uso ou mesmo a qualidade do Apache em todo o mundo, mas, sobretudo, pelas regras e métodos que foram usados para controlar a forma de como o produto foi desenvolvido;

O Processo de Desenvolvimento Basicamente, como o projeto é Open Source, o processo deve ser claramente definido e prover liberdade e flexibilidade aos “colaboradores”; Os riscos de fracasso nos projetos Open Source estão apoiados principalmente na motivação, coordenação, integração e comunicação entre os colaboradores; Em grandes projetos, com várias linhas de código como o Apache, essas dificuldades foram tratadas com medidas relativamente simples;

Estrutura da Equipe O Apache Group é formado principalmente por um pequeno grupo de “core developers”, os quais decidem a direção global do projeto; e noncore members; Aqueles que vem contribuindo com o Apache de maneira expressiva, eleitos e admitidos ao “core team”; A maior parte reside nos U.S., mas na Europa e também em outras partes do mundo residem uma parcela significante da equipe global; Coordenar patches submetidos por “noncore members”, relatórios de bugs, etc...

Ferramentas Concurrent Versions System (CVS) é usado como ferramenta de apoio no gerenciamento das versões emanadas pelos desenvolvedores; Provê uma coleção de arquivos dispostos em uma estrutura de diretórios; a ferramenta permite ainda rastrear, atualizar, enfim, gerenciar esse repositório de maneira concorrente; Trabalhos realizados nos “repositórios locais” (visões) são aplicados no repositório central (servidor); Cvs commit; cvs update, etc...

Ferramentas O pacote CVS foi usado para minimizar conflitos entre os patches com as constantes atualizações que iam sendo geradas; No início do projeto Apache, isso era feito manualmente! Os desenvolvedores deveriam estar totalmente livres para programar em vez de rastrear mudanças; Apenas o core team possui o privilégio cvs commit; FreeBSB e PHP utilizam CVS; Cvs commit; cvs update, etc...

Infra-estrutura de Comunicação A comunicação entre os desenvolvedores se dá através de uma lista de discussão: new-httpd@apache.org Essa lista inclui core members, desenvolvedores e demais pessoas que simplesmente seguem o desenvolvimento do Apache; Existe também uma segunda lista apenas de core members; Pacotes de software relacionados à lista de e-mail como Majordomo e Ezmlm foram analisados;

O Processo Apache Inicialmente, core members elegiam os patches submetidos pelos desenvolvedores; Voto positivo = +1 e Voto negativo = -1; Para que um patch fosse aprovado, eram necessários 3 votos positivos e nenhum negativo; No caso de pelo menos 1 voto negativo, o patch inteiro era vetado; A pessoa que emitiu o voto negativo tinha o compromisso de justificar sua posição em relação ao patch; (precisava ter uma boa razão para isso...); Todos entendiam o poder do veto e não abusavam dele; Os votos eram registrados em um log;

O Processo Apache O processo do voto evoluiu para fazer um melhor uso do tempo dos colaboradores core; O conceito do “lazy voting” ou “silent gives consent”; Isso, no entanto, vale apenas para os patches submetidos por core members; Submissões realizadas por desenvolvedores são votadas pela abordagem anterior; Outra evolução foi o conceito do “commit and review”; Reduz o tempo de submissão e commit para zero;

O Processo Apache Continuação: Supõe-se que o core team sabe o que está fazendo, de maneira que votar em “patches core” não mais seria necessário; Se após ser aprovado um determinado patch despertar suspeitas ou mesmo preocupações, duas opções serão apresentadas: reverter a atualização; o core member que submeteu deve corrigir o erro; Se por acaso uma submissão trouxer a reboque mudanças drásticas, faz-se necessário o uso de uma votação comum;

O Processo Apache Conceito de Group Ideal; Ao contrário de outros projetos Open Source (Linux), o Apache Group não possui um Líder; Nem mesmo entre os Core members – todos são considerados iguais; Escalonamento de atividades e Entrega Não há um momento definido para a disponibilização dos releases; Os releases acontecem quando o grupo sente que é a hora – grande quantidade de mudanças ou mesmo “mudanças especiais”;

O Processo Apache Escalonamento e Entrega (cont.): Entretanto, se bugs relacionados a segurança forem encontrados, novo(s) release(s) serão disponibilizados mesmo antes do desejado; Não há um conjunto de pessoas no grupo responsável por coordenar o release; Normalmente, existem voluntários a “Release Manager”; O Release Manager executa tarefas como: rotular o release, criar o arquivo de distribuição (tarball), assinar digitalmente o tarball, distribuição do tarball no site principal do Apache como também em seus “mirrors”

O Processo Apache Divisão do trabalho: Os desenvolvedores trabalham nas seções de código e áreas nas quais eles têm um maior interesse; As pessoas estão livres para escolher e trabalhar em outras seções que desejarem; Nenhum desenvolvedor em especial é o único responsável por uma determinada funcionalidade; Em contraste com outros projetos Open Source, como FreeBSB, que atribui a conclusão de aspectos do projeto a uma única pessoa;

Características do Processo Em síntese: CVS Commit Privileges: O Apache Group é um pouco conservador em prover esses privilégios por merecimento. Um problema é que atualmente existem novos noncore members que fornecem submissões altamente consistentes, mas que não podem “commitá-las” no repositório – desmotivando-os; Diferentes classes de desenvolvedores: Core Team e Noncore Members; Não há Divisão do Trabalho;

Características do Processo Continuação: Release Schedules: Apesar de alguns desenvolvedores produzirem mais sob pressão, é sabido que em projetos open source a maior parte dos desenvolvedores despedem seus esforços apenas quando possuem um tempo livre; Prazos inadequados podem vir a limitar severamente a criatividade e, sobretudo, a qualidade final do código; Alta Flexibilidade: Projetos altamente rígidos e inflexíveis tendem a dificultar a execução do projeto e sua compreensão;

O Futuro do Processo Apache Já existem alguns projetos usando o processo Apache: Projetos Jakarta; Java Apache; Embora sejam famílias ligadas ao Apache Software Foundation (ASF), em cada projeto os seus desenvolvedores decidem o que funciona melhor para eles; Outros projetos não open source já utilizam uma derivação do processo Apache: OneStopSite – uma firma de Web design;

Conclusão do Artigo O projeto Apache mostrou sucesso com o qual o desenvolvimento de código aberto está adquirindo a cada dia em grandes projetos. O compartilhamento de visões e de metas comuns e a alta flexibilidade denotam o combustível que faz com que todos os outros fatores inerentes ao processo trabalhem suavemente; Novos projetos se beneficiam desse tipo de experiência, de modo que o reuso das atividades pode ser empregado;

Conclusão Pessoal Acredito que o processo Apache não está limitado apenas a ambientes distribuídos open source, mas também em projetos de software convencionais; Aspectos como alta flexibilidade: seja na divisão do trabalho ou mesmo no escalonamento de atividades devem ser tratados com cuidado; Não limitam criatividade e qualidade; Funcionam principalmente pela cultura e equipes com uma quantidade razoável de pessoas;