PDF Completo, 1700K
Total Page:16
File Type:pdf, Size:1020Kb
Caracterizac¸ao˜ de um Processo de Software para Projetos de Software Livre Christian Robottom Reis [email protected] Orientac¸ao:˜ Profa. Dra. Renata Pontin de Mattos Fortes [email protected] Dissertac¸ao˜ apresentada ao Instituto de Cienciasˆ Matematicas´ e de Computac¸ao˜ da Universidade de Sao˜ Paulo para a obtenc¸ao˜ do t´ıtulo de Mestre em Cienciasˆ da Computac¸ao˜ e Matematica´ Computacional. Sao˜ Carlos, Sao˜ Paulo Fevereiro de 2003 ii Resumo Software Livre e´ software fornecido com codigo´ fonte, e que pode ser livremente usado, modifica- do e redistribu´ıdo. Projetos de Software Livre sao˜ organizac¸oes˜ virtuais formadas por indiv´ıduos que trabalham juntos no desenvolvimento de um software livre espec´ıfico. Estes indiv´ıduos trabalham geo- graficamente dispersos, utilizando ferramentas simples para coordenar e comunicar seu trabalho atraves´ da Internet. Este trabalho analisa esses projetos do ponto de vista de seu processo de software; em outras pala- vras, analisa as atividades que realizam para produzir, gerenciar e garantir a qualidade do seu software. Na parte inicial do trabalho e´ feita uma extensa revisao˜ bibliografica,´ comentando os principais traba- lhos na area,´ e sao˜ detalhadas as caracter´ısticas principais dos projetos de software livre. O conteudo´ principal deste trabalho resulta de dois anos de participac¸ao˜ ativa na comunidade, e de um levantamento realizado atraves´ de questionario,´ detalhando mais de quinhentos projetos diferentes. Sao˜ apresenta- das treze hipoteses´ experimentais, e os resultados do questionario´ sao˜ discutidos no contexto destas hipoteses.´ Dos projetos avaliados nesse levantamento, algumas caracter´ısticas comuns foram avaliadas. As equipes da grande maioria dos projetos sao˜ pequenas, tendo menos de cinco participantes. Alem´ disso, existe uma distribuic¸ao˜ equilibrada entre algumas formas de organizac¸ao˜ descritas na literatura, incluin- do o ‘ditador benevolente’ de Eric S. Raymond e o ‘comite’ˆ exemplificado pelo projeto Apache. Dentre um conjunto de dom´ınios de aplicac¸ao˜ determinados, os projetos de software livre se concentram nas areas´ de engenharia e desenvolvimento de software, redes e seguranc¸a, e aplicac¸oes˜ multim´ıdia. Com relac¸ao˜ as` atividades do processo de software, pode-se dizer que a maioria dos projetos tem requisitos fundamentalmente definidos pelos seus autores, e que a base de usuarios´ de grande parte dos softwares e´ composta dos seus desenvolvedores e da comunidade de software livre. Uma parcela signifi- cativa dos projetos baseia-se em outros softwares pre-existentes,´ e em padroes˜ publicados previamente. Pouca enfaseˆ e´ dada a` usabilidade, assim como as` atividades de garantia de qualidade convencionais. Surpreendentemente, tambem´ recebem pouca atenc¸ao˜ as atividades de revisao˜ de codigo´ e teste sis- tematico.´ Entre as ferramentas que os projetos utilizam, se destacam as listas de discussao˜ e os sistemas de controle de versao.˜ Foi estabelecida uma correlac¸ao˜ entre a dimensao˜ da equipe do projeto e as atividades de engenharia de software que realiza, mas nao˜ se confirmou um v´ınculo entre estas atividades e a idade do projeto. Foram tambem´ estabelecidas relac¸oes˜ entre o numero´ de linhas de codigo´ do software do projeto e a sua idade, tamanho e dom´ınio de aplicac¸ao.˜ Estes resultados sao˜ exibidos neste trabalho, e estarao˜ publicamente dispon´ıveis no site Web do projeto. O trabalho conclui descrevendo partes essenciais do processo de software em projetos de software livre, e oferecendo sugestoes˜ para trabalhos posteriores. Palavras-Chave: Software Livre, Open Source, Processo de Software, Ciclo de Vida, Modelo de Pro- cesso de Software, Engenharia de Software, Desenvolvimento de Software Descentralizado. iii iv Abstract Free Software (or Open Source) is software provided with source code that may be freely used, modified and redistributed. Free Software Projects are virtual communities of developers that work on a specific free software product. These developers work geographically dispersed, using simple tools to communicate and coordinate their actions over the Internet. This work analyzes these projects with respect to their software process; in other words, the activiti- es they do to produce, manage and ensure the quality of their software. In the initial sections, I perform a large review of related work in this field, and provide an overview of the main characteristics of free software projects. The main contents of this dissertation is based on two years of participation in free software projects, and on a survey based on a questionnaire that describes over five hundred different free software projects. I present thirteen initial hypothesis, using them as a framework to analyze the results of the survey. Among the projects evaluated in this survey, some common aspects were observed. For instance, most projects have a small team, with less than five developers. I also found a balanced distribution of leadership systems described in other works, including Eric Raymond’s ‘benevolent dictator’ and the committee exemplified by the Apache project. The domains in which these projects tend to concentrate are software engineering and development, networks and security, and multimedia applications. Concerning the software process activities, most projects have their functional requirements esta- blished by their authors: the user base for most of the projects includes the development team and the free software community. A large proportion of the projects surveyed are based on pre-existing soft- ware, or on previously published standards. Little emphasis is placed on usability and conventional forms of quality assurance. Remarkably, this lack of emphasis on conventional process includes activi- ties like review and testing. Among the tools used by the projects, mailing lists and versioning systems such as CVS come out ahead by a strong margin. A correlation was identified between the size of the project’s team and the software engineering activities that it realizes, but I could not establish a link between the age of the project and these activities. Other correlations were established between the size of the project’s codebase (in terms of lines of code) and its age, size and application domain. The dissertation concludes describing essential parts of the software process in free software projects, and offering suggestions for future work. Keywords: Free Software, Open Source, Software Process, Software Lifecycle, Software Process Mo- del, Software Engineering, Distributed Software Development. v vi CONTEUDO´ CONTEUDO´ Conteudo´ 1 Introduc¸ao˜ 1 1.1 Motivac¸ao˜ ......................................... 2 1.2 Problema de Pesquisa ................................... 2 1.3 Organizac¸ao˜ da Dissertac¸ao˜ ................................ 3 1.4 Convenc¸oes˜ de Formato .................................. 3 2 Processo de Software 5 2.1 Definic¸ao˜ ......................................... 5 2.2 Atividades Essenciais ................................... 6 2.3 Atividades Auxiliares ................................... 7 2.4 Garantia de Qualidade de Software ............................ 8 2.5 Modelos de Processo de Software ............................ 9 3 Software Livre e Open Source 11 3.1 Propriedade Intelectual .................................. 11 3.2 Licenc¸as de Software ................................... 12 3.2.1 Graus de Restric¸ao˜ em Licenc¸as de Software .................. 13 3.2.2 Licenc¸as de Software Livre ............................ 13 3.3 Software Livre e Open Source .............................. 14 3.3.1 Open Source ................................... 16 3.4 Historico´ ......................................... 16 3.4.1 GNU e a Free Software Foundation ....................... 16 3.4.2 O nucleo´ Linux .................................. 17 3.4.3 Outros pacotes de software livre ......................... 17 3.4.4 As distribuic¸oes˜ Linux .............................. 18 3.4.5 Projetos de Software Livre ............................ 20 vii CONTEUDO´ CONTEUDO´ 4 Projetos de Software Livre 21 4.1 Definic¸ao˜ ......................................... 21 4.2 Organizac¸oes˜ Alternativas ................................ 22 4.3 Aspectos de um Projeto de Software Livre ........................ 23 4.3.1 Software ..................................... 23 4.3.2 Comunidade ................................... 24 4.3.3 Comunicac¸ao˜ escrita ............................... 25 4.3.4 Gerenciaˆ do Codigo-fonte´ ............................ 26 4.3.5 Apoio ao Processo de Desenvolvimento ..................... 30 4.3.6 Servic¸os de Hospedagem de Projetos ...................... 32 4.4 Exemplos de Projetos de Software Livre ......................... 33 4.4.1 Nucleo´ de Sistema Operacional: Linux ..................... 33 4.4.2 Servidor Web: Apache .............................. 34 4.4.3 Navegador Web: Mozilla ............................. 34 5 Trabalhos Relacionados 37 5.1 Literatura Essencial .................................... 37 5.1.1 A Catedral e o Bazar de Eric Raymond ..................... 37 5.1.2 Desenvolvimento Distribu´ıdo: Herbsleb e Grinter ................ 39 5.1.3 A avaliac¸ao˜ emp´ırica de Sandeep Krishnamurthy ................ 39 5.1.4 Detratores Iniciais ................................ 40 5.2 Estudos sobre Projetos Espec´ıficos ............................ 41 5.2.1 O Servidor Apache ................................ 41 5.2.2 O Nucleo´ Linux .................................. 42 5.2.3 O Projeto Mozilla ................................