Gerência de Configuração de Software com Subversion – Parte I
Nesta primeira parte de uma seqüencia de três artigos que irei abordar sobre o tema, explano inicialmente os conceitos sobre gerência de configuração, como deve ser aplicada dentro das organizações e a importância da mesma na construção de software.
Motivação
Acompanhamos ao longo dos anos muitas evoluções e alterações nas formas de conceber e construir software. Percebemos que a cada inovação tecnológica as empresas tentavam se adaptar as novas soluções e paradigmas computacionais a fim de obterem o sucesso frente aos concorrentes e buscavam a cada projeto uma nova metodologia de trabalho capaz de garantir resultados e redução de custos, principalmente quando se tratava de projetos que envolviam um grande número de profissionais de desenvolvimento. Mas esta busca por garantir o sucesso do projeto percorre muitos caminhos que devem ser trilhados cuidadosamente ao passo que cada empresa deve estar munida e preparada para tal.
Durante os anos de desenvolvimento de software, percebi que muitas empresas de desenvolvimento de software sofrem de um mal que aflige as empresas de software e que considero o ponto chave, se bem controlado e planejado, para a obtenção do sucesso em projetos de software que é a mudança nos requisitos de software antes, durante e pós-implantação. Como contornar este problema? De que forma pode-se melhorar a produtividade de software sem sofrer com os impactos das mudanças de requisitos?
Nota-se que o usuário de software, nunca expressa ou sabe ao certo o que está dizendo sobre os requisitos, apenas demonstra seu interesse emergencial e cabe a nós, profissionais de TI, desvendá-lo e transpor para o sistema os anseios do usuário da melhor forma possível a fim de atender as suas aspirações quanto ao utilizar determinado recurso do software. Em vista disso, hoje a indústria de tecnologia em desenvolvimento de software dispõe de um recurso capaz de controlar e gerenciar este cenário sem causar dores de cabeça no futuro. Trata-se da Gerência de Configuração de Software – GCS, ou Software Configuration Management - SCM. Portanto, pretendo aqui esclarecer e explicar o que é a Gerência de Configuração e como podemos usufruir deste recurso em projetos de software e também demonstrarei o uso de uma ferramenta de aplicabilidade real deste conceito.
Conceitos fundamentais sobre GCS
Roger Pressman (2002) em seu livro “Engenharia de Software”, afirma que mudanças em software são inevitáveis e que tais mudanças quando não são analisadas antes de serem realizadas ou mesmo registradas antes de serem implementadas provocam um verdadeiro caos entre os engenheiros de software.
É fato que as mudanças durante o ciclo de atividades que envolvem os processos de software são realmente inevitáveis, mas há como contornar esta situação de tal forma que garanta resultados com ganhos de produtividade e redução no percentual de retrabalho e garantindo principalmente a qualidade do software produzido.
Dentro das fábricas de software, este é um papel que é desempenhado pela Gerência de Configuração de Software. O GCS é uma atividade abrangente que é aplicada em todo o processo de desenvolvimento de software. Pois, estando ciente de que as mudanças no software poderão vir a ocorrer a qualquer momento, as responsabilidades do GCS envolvem:
- Identificar permanentemente as mudanças;
- Realizar o controle acurado das mudanças;
- Dar garantia da implementação correta da mudança; e
- Comunicar a mudança a outras pessoas que sejam de interesse ou as envolvam direta ou indiretamente.
Hoje, ainda existe certa confusão sobre a função da gerência de configuração, pois muitos acabam confundindo com as tarefas de manutenção do software. São atividades que denotam muitas diferenças. A manutenção de software envolve um ciclo de atividades de desenvolvimento que serão realizadas pós-implantação. Por sua vez, a gerência de configuração de software é um conjunto de atividades que visam controlar e rastrear desde o inicio do projeto de desenvolvimento até quando o software for retirado de operação.
Portanto, a função principal da GCS é estabelecer medidas e atividades que possam controlar com facilidade e segurança as ocorrências de mudanças que possivelmente geram atrasos no cronograma das atividades de desenvolvimento a fim de garantir a confiabilidade do cliente e reduzir ao máximo os esforços que serão necessários para implementar tais mudanças no software.
O Cenário da Gerência de Configuração de Software
Dentre os processos que compõe todo o ciclo de vida de projetos de desenvolvimento de software passam ou envolvem atividades de gerência de configuração, mesmo que de uma maneira empírica. O resultado de cada ciclo nos processos de engenharia de software são (1) os programas (executável e fonte), (2) os documentos que relatam as regras de negócio sobre cada requisito implementado (tanto documentação técnica e de usuário final), (3) e estruturas de dados que fazem parte direta ou indiretamente do software. Sendo assim, podemos dizer que tudo que fora produzido como parte do processo de engenharia de software forma um conjunto que podemos denominar de configuração de software.
Todos os artefatos (os quais compõem o produto de software) que são produzidos e controlados neste processo são chamados de itens de configuração de software (Software Configuration Itens – SCI). Neste processo, cada um dos artefatos existentes para que sejam modificados ou alterados deverão seguir normas que são definidas pela gerência de configuração,
Sendo a gerência de configuração de software (GCS) um conjunto de atividades projetadas para controlar as mudanças pela identificação dos itens de configuração de software em desenvolvimento e que poderão sofrer alterações durante o projeto de desenvolvimento, estes itens devem estar relacionados e controlados de tal forma que seja definido um mecanismo para o gerenciamento de diferentes versões destes, controlando as mudanças inerentes e impostas no ciclo de vida do sistema, e auditando e relatando as mudanças realizadas.
O processo de Gerência de Configuração de Software surge como uma solução para que se evite ou mesmo perca-se o controle do projeto em virtude da inúmera quantidade de itens que são produzidos e podem ser modificados a qualquer momento no projeto. De um modo geral, este processo visa evitar a criação de inconsistências entre os itens.
Atualmente o GCS é considerado um processo crucial no campo de pesquisa em engenharia de software, sendo adotado de forma mais ampla a cada dia e podendo ser definido como uma abordagem disciplinada para gerenciar a evolução do desenvolvimento de software, práticas de manutenção e os produtos de software.
Olhando sob a ótica de gerência do projeto, a GCS é fundamental recurso porque controla a evolução e a integridade de um produto ao identificar seus elementos, gerenciar e controlar mudanças, e ao registrar e informar tais mudanças. Do ponto de vista dos programadores de software, tal processo facilita a implementação das atividades de mudança e desenvolvimento.
À luz da engenharia de software, e considerando os conceitos cobre GCS, para que se alcance tal requisito faz-se necessário o uso de ferramentas apropriadas para esta finalidade. Hoje, dispomos de muitas ferramentas que são capazes de realizar este trabalho sem causar dores de cabeça aos investidores do projeto nem mesmo transtornos à equipe de desenvolvimento. Uma delas é o Subversion, um projeto sob a licença GPL que visa preencher as lacunas da engenharia de software no que tange a gerência de configuração de software.
Dentre esses aspectos, muitos dos conceitos que envolvem a gerência de configuração de software também possuêm forte ligação às atividades de garantia da qualidade, cuja missão é monitorar o produto e os processos, e garantir que estejam em conformidade com os requisitos levantados na especificação e nos planos estabelecidos. As atividades deste processo ajudam as empresas a alcançarem os objetivos reduzindo os esforços e retrabalhos em itens que compôem os processos mencionados, sendo, portanto um elemento de suma importância na garantia da qualidade do software.
Bem pessoal, chegamos ao final desta primeira parte deste artigo. Aguardem na próxima parte onde explicaremos com mais detalhes sobre questões da GCS e daremos inicio a nossa viagem ao conhecimento e uso da ferramenta Subversion.
Até a próxima! Aguardem a próxima edição!
Um abraço a todos!
Referências
PRESSMAN, Roger S. Engenharia de software. 5.ed. – Rio de Janeiro: McGraw-Hill, 2002.
http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_Configura%C3%A7%C3%A3o_de_Software
wdbc.dc.ufscar.br/artigosaceitos/cristine-gerenciaeconfiguracaodesoftware.pdf