EVOLUÇÃO DE SOFTWARE

quinta-feira, 19 de abril de 2007

SimulES - Simulador de Engenharia de Software - Parte 1

Nesta aula, realizamos um trabalho em equipe para montagem do jogo SimulES. O jogo é baseado em uma versão chamada Problems and Programmers e possui objetivo educacional, fazendo com que o aluno assuma o papel de gerente no desenvolvimento de projeto de software.
O jogo possui partes interessantes, como cartas de problemas e cartas de conceito (com referências de leitura que caracterizam melhor o problema), Cartões de projeto, cartas de artefatos, entre outros.
Também foi lido o material que explica toda a dinâmica para jogar o SimulES. O objetivo para a equipe formada pelos alunos é realizar uma possível evolução do jogo.

Version Models for Software Configuration Management

O artigo escrito por Reidar Conradi e Bernhard Westfechtel [1] trata de um aspecto fundamental no desenvolvimento de software e que muitas vezes não recebe a atenção merecida: A Gerência de Configuração de Software (GCS).
Podemos definir GCS como metodologia para controlar e gerenciar um projeto de desenvolvimento de software. A importância dessa disciplina e reconhecida por padrões como CMM e ISO 9000, podendo servir basicamente para 2 propósitos: suporte ao gerenciamento e suporte ao desenvolvimento.
No primeiro caso, a GCS identifica produtos e suas versões, apoia o controle de mudanças, auditorias entre outras atividades. No suporte ao desenvolvimento, a GCS fornece aos desenvolvedores funcionalidades que auxiliam na execução de mudanças.
No debate em sala de aula, foi importante o entendimento de espaço de produto e espaço de versão dentro da GCS. Basicamente, um modelo de versão define os objetos a serem versionados, identificam e organizam versões, assim como operações de recuperação de versões existentes e construção de novas versões. O espaço de produto é constituído pelos objetos de software e seus relacionamentos. O espaço de versões organiza as versões desses objetos. Uma base de objetos versionados combina ambos os espaços.
Ao ler o artigo, pude perceber a complexidade da tarefa de GCS e o papel fundamental que ela exerce na evolução do software, principalmente no que tange a rastreabilidade dos artefatos produzidos. O artigo também introduz uma série de conceitos, como: versões, configurações, mudanças, Grafos and/or entre outros.
Por fim, realizou-se uma pesquisa por ferramentas para apoiar a Gerência de Configuração de Software.

Ferramentas de controle de versão:

ClearCase - Rational
http://www-306.ibm.com/software/awdtools/clearcase/

CVS - Open Source
http://ximbiot.com/cvs/cvshome/

Perforce Software
http://www.perforce.com/

StarTeam - Borland
http://www.borland.com/br/products/starteam/index.html

GnuArch - Open Source
http://www.gnuarch.org/revc/index.html


Ferramentas de Controle de Mudanças:

JIRA - Atlassian
http://www.atlassian.com/software/jira/

ClearQuest - Rational
http://www-306.ibm.com/software/awdtools/clearquest/index.html

Bugzilla - OpenSource
http://www.bugzilla.org/

Perforce Software
http://www.perforce.com/

Mantis - Open Source
http://www.mantisbt.org/


Ferramentas de Integração Contínua

Apache Ant Project - Open Source
http://ant.apache.org/

FinalBuilder - VSoft
http://www.finalbuilder.com/finalbuilder.aspx

BuildForge - Rational
http://www-306.ibm.com/software/awdtools/buildforge/enterprise/

Apache Maven Project - Open Source
http://maven.apache.org/

Apache Gump Project - Open Source
http://gump.apache.org/


As ferramentas comerciais apresentam em geral um maior número de funcionalidades, porém o custo da licença as torna uma realidade distante para pequenas organizações. Por outro lado, as soluções open source possuem diversas vantagens, como custo mais baixo, qualidade, independência de fornecedor, entre outras, tornando-se interessante não somente para pequenas e médias organizações.


Referência:

[1] CONRADI, R., WESTFECHTEL, B. " Version Models for Software Configuration Management". Trondheim - October 1995.

quarta-feira, 4 de abril de 2007

Who Should Fix This Bug ?

Este artigo mostra como são feitos os registros de problemas e sugestões dadas pelos usuários de software livre. Esses registros devem sofrer um processo de triagem, determinando se o problema registrado é pertinente e caso seja, deve ser selecionado um desenvolvedor para solucioná-lo.
Os autores propõem uma ferramenta para tornar o processo de seleção semi-automático, ajudando o responsável a selecionar o desenvolvedor mais indicado para solucionar o problema. Além disso, o texto provê ao leitor todo o suporte sobre repositórios de bugs para software livre e Machine Learning.
Por fim, é fundamental lembrar os aspectos evolucionários do software livre através do feedback dos colaboradores, baseado na teoria do Prof Lehman.