Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo:

Apresenta o gerenciamento de configuração de software como atividade crucial no desenvolvimento e manutenção de software e destaca aspectos técnicos e organizacionais observados em pesquisa realizada junto a empresas do setor. Neste contexto, este artigo serve para conscientizar o engenheiro de software da necessidade de se ter um processo de gerenciamento de configuração de software e componentes chave desse processo.

Em que situação o tema é útil:

O artigo identifica questões técnicas e organizacionais do gerenciamento de configuração de software, discute o grau de adoção dessas práticas em empresas do segmento de TI e, fortemente, recomenda a incorporação destas práticas em prol da evolução do software.

Resumo DevMan:

A gerência de configuração compreende o desenvolvimento e a aplicação de mecanismos e padrões para gerenciar artefatos de software durante sua evolução. Observe que qualquer mudança que se faça necessária no software será identificada, terá sua execução controlada, além de dispor de recursos de rastreamento. Neste contexto, este artigo destaca aspectos técnicos e organizacionais sobre a gerência de configuração observados em pesquisa realizada junto a empresas do setor.

Autores: Eduardo Jorge Vieira Rocha e Antonio Mendes da Silva Filho

Você já percebeu que o software está presente no seu cotidiano? Um exemplo simples ocorre quando você telefona para outra pessoa. O controle da operação das centrais telefônicas é todo feito por software. E, você já foi a alguma casa lotérica para efetuar um pagamento? Ou já arriscou jogar na loteria? Quando você vai à casa lotérica por qualquer um dos motivos acima, você está usando o sistema que tem todo seu controle feito por software. O mesmo acontece quando você utiliza o caixa eletrônico de um banco. Perceba que quase todos os sistemas hoje em dia têm seu controle operacional sendo feito por software. Observe que o software tem se tornado um companheiro e sido uma ferramenta fundamental de nosso dia-a-dia.

Agora, se você ‘olhar’ para trás, poderá perceber que há, aproximadamente cinco décadas atrás, software constituía uma pequena, senão ínfima, parcela dos sistemas computacionais quando comparado ao hardware. Naquela época, os custos de desenvolvimento e manutenção de software eram desprezíveis. Hoje, porém, software é responsável por significativa porção dos sistemas computacionais. Encontramos software nas mais diversas aplicações. Para obter qualquer software, há necessidade de um processo para guiar o desenvolvimento que é apoiado pelas ‘boas’ práticas da Engenharia de Software.

De acordo com o IEEE Std 610.12-1990, que contém o IEEE Standard Glossary of Software Engineering Terminology (http://standards.ieee.org/findstds/standard/ 610.12-1990.html), Engenharia de Software é definida como “The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

A engenharia compreende o uso de princípios e conhecimentos empírico e científico obtidos a partir de estudos, investigações e experiências visando o desenvolvimento de um produto, que dependendo da área pode ser um motor, um dispositivo eletrônico, um prédio ou um sistema de software. Para tanto, três aspectos essenciais devem ser considerados: custo (orçamento de desenvolvimento), tempo (cronograma de execução) e qualidade. Dentro deste contexto, a engenharia de software (a exemplo de outras engenharias) também visa o desenvolvimento de um produto (software) que pressupõe satisfazer aos requisitos de qualidade, dentro do prazo e sem estourar o orçamento.

Sabe-se que software não é uma entidade física e, portanto, não sofre qualquer tipo de desgaste (físico) como geralmente acontece com o hardware. Todavia, apesar de não sofrer desgaste (físico) como o hardware, o software está sujeito a modificações que ocorrem durante o ciclo de vida. Essas modificações podem acontecer devido à inserção de defeitos decorrentes do desenvolvimento os quais são geralmente corrigidos antes da entrega do produto. Mas, observe que novos defeitos ainda podem ser (e, geralmente, são) inseridos devido às modificações que o software sofre devido a sua evolução. Por exemplo, toda vez que uma nova funcionalidade é desejada ou solicitada pelo cliente, torna-se necessário adicionar e/ou modificar as instruções já existentes no software. Como resultado dessas mudanças, novos defeitos podem ser introduzidos e, portanto, pode também causar a deterioração na qualidade do software. Dentro desse contexto, pergunta-se: Afinal, qual o problema com o software?

Software é (quase) sempre modificado, resultando num produto quase sem garantia. Isso resulta na falibilidade de software (ou possibilidade de existência de falhas) e a consequente falta de confiabilidade. Observe que a única certeza que se tem é a de que o software será modificado e, portanto, a documentação do projeto é essencial para permitir a rastreabilidade e, mais importante, a manutenibilidade. Para lidar com essa demanda, tornam-se necessários mecanismos que auxiliem o engenheiro de software registrar, controlar e rastrear os artefatos produzidos no desenvolvimento de um sistema de software. Para tanto, a Engenharia de Software dispõe da Gerência de Configuração, ou Configuration Management (CM).

CM compreende o desenvolvimento e a aplicação de mecanismos e padrões para gerenciar artefatos de software durante sua evolução. Observe que qualquer mudança que se faça necessária no software será identificada, terá sua execução controlada, além de dispor de recursos de rastreamento.

Como há uma certeza de que o software sofrerá modificações, então os artefatos do projeto serão constantemente alterados durante o desenvolvimento e evolução do software. Consequentemente, há necessidade de controlar as versões do sistema e de estabelecer mecanismos para acompanhar a evolução do software. Essas atividades fazem parte da gerência de configuração ou CM. As seções seguintes destacam quão importante é o gerenciamento de configuração para o desenvolvimento e evolução do software e apresenta o grau de adoção desta prática em empresas do segmento para uma das metrópoles brasileira.

Importância do gerenciamento de configuração de software

Segundo Sommerville (2009), o gerenciamento de configuração é o desenvolvimento e aplicação de padrões e procedimentos para gerenciar um produto de sistema em desenvolvimento.

...
Quer ler esse conteúdo completo? Tenha acesso completo