Criado por recomendação do professor Júlio Leite, como parte da disciplina Evolução de Software.

4.04.2006

Rapida análise da Evolução de Software

A dissertação de Christoph[1] trata da dificuldade de inclussão de novos participantes em projetos de software livre aberto, devido a precária documentação decorrente da informalidade do processo de desenvolvimento. O trabalho procura relacionar com as questões da Evolução de Software com objetivo de minimizar o problema.

Christoph trata da dificuldade que o projeto de software livre tem de chegar ao fim, decorrente da grande quantidade de integrantes no projeto tende a atingir e seus respectivos graus de satisfação. Mesmo que o projeto esteja em nível bom para alguns integrantes, outros estarão esperando por novas funcionalidades.

As mudanças decorrentes do mundo que vivemos devem ser refletidas nos softwares, e isso causa seu envelhecimento. Acredito esse envelhecimento está relacionado com o grau de satisfação do usuário. Um software envelhecido é aquele que deixa o usuário final com lacunas em seu trabalho, e é inevitável. O afastamento da chegada desse processo é que pode ser obtido seguindo alguns cuidados como:

1. Estruturar o software para evolução. Que nem sempre é tarefa fácil. Aqui é necessária a experiência dos projetistas para mensurar de forma adequada o grau de evolução que se deseja em determinado momento. Problemas conhecidos que aconteceram, mas num futuro distante, podem ser deixados pra tratar depois.

2. Documentar adequadamente. É importante que toda a equipe envolvida tenha uma clara importância da documentação. E os aspectos qualitativos e quantitativos precisam ser considerados.

3. Revisar a estrutura. Esse ponto não ficou muito claro para mim. Acredito que se deve revisar, revisar e revisar antes de implementar. Outro ponto que deve ser levado em consideração a experiência da equipe.

No processo de construção de software existe uma certeza: ele vai ser modificado e com isso envelhecido. Nesse processo de evolução é necessária a compreensão das oito “Leis de Lehman” [2]. Porém, Christoph verificou que as leis não eram perfeitamente aplicáveis a algumas Evoluções de Softwares Livres.

Medidas verificadas no Linux como o número de módulos, arquivos fontes e outras não possuem crescimento linear, mas superlinear, o que contradiz Lehman que mostra o crescimento evolutivo de um software diminuindo ao longo do tempo. Esse crescimento é devido ao acréscimo de novas funcionalidades e suporte a novas arquiteturas. Se considerarmos isso como "novo software" as leis de Lehman continuam valendo.

A observação de Godfrey [3] mostra que o Linux não parece obedecer à terceira Lei de Lehman, pois há uma grande variação no esforço incremental gasto nas novas versões. Porém essa variação é decorrente da necessidade de se atender novos requisitos, inclusive de drivers para novos equipamentos e, portanto, podem ser percebidas mesmo em sistemas não abertos. Como exemplo, pense na evolução MS-DOS, Win95, Win98, Win2k e WinXP. Existe essa variação?

O estudo das leis de evolução, depois de 30 anos do nascimento, ainda não insuficientes. Em minha opinião é difícil afirmar que elas se encaixam a todos os processos de software, mas estou convencendo-me que existe uma forte convergência nessa direção.


[1] CHRISTOPH, Roberto de Holanda; orientador: Leite, Julio César Sampaio do Prado. “Engenharia de software para software livre”. Dissertação de Mestrado, Rio de Janeiro: PUC, Departamento de Informática, 2004.

[2] LEHMAN, M. “Laws of Software Evolution Revisited”. EWSPT 1996, LNCS 1149, Springer Verlag, p. 108-124, 1997.

[3] Michael W. Godfrey and Qiang Tu. “Evolution in Open Source Software: A Case Study”. ICSM 2000. pp 131-142.