Quando falamos de Controle de Versão de Requisitos de Software muitos profissionais “estranham” um pouco, pois na nossa cultura de produção de software, o controle de versão geralmente é mais aplicado ao modelo de código fonte e ao software executável produzido a partir deste modelo.
Produzir software é um processo de refinamento contínuo, que se dá através da produção de modelos em diferentes níveis de abstração. Obs.: sobre refinamento contínuo podemos ver um pouco mais aqui.
Então, produzimos um modelo em um nível de abstração específico, para algum outro profissional produzir outro modelo a partir deste, em um nível de abstração mais “próximo” do que o software será “de fato” (“de fato” = software executável).
Por exemplo: um Analista produz um diagrama de classes e outro constrói estas classes no modelo de código fonte. Neste exemplo, o modelo de classes (diagrama por exemplo) está num nível de abstração menos “próximo” do software executável que as classes implementadas, que já estão “dentro” do código fonte e com os devidos ajustes para funcionarem na estrutura do sistema.
Controle de Versão e Processo de Desenvolvimento
O que irá definir quais os modelos que serão produzidos durante a produção do software será o processo de desenvolvimento adotado pela empresa que fará o trabalho.
Os processos de desenvolvimento variam ao infinito: ainda temos muitas empresas que a partir de um telefonema já parte para a construção (loucura total \0/), e também ainda temos muitas empresas que fazem dezenas de cerimônias antes de especificarem os requisitos, e depois fazem duas mil coisas até chegar no software executável (quanto chegam – loucura total também \0/).
Mas independente dos modelos produzidos no projeto, conforme o que o processo de desenvolvimento utilizado pela empresa define, todos os modelos devem ser versionados, possuir gestão de suas mudanças, e isso é feito através do controle de suas versões.
Sem controlar a versão do que se produz as confusões e retrabalho serão apenas uma questão de tempo.
E como fazer com os Requisitos de Software?
Requisitos de Software são a base de todo software. Tudo em um escopo tem um propósito de negócio, senão não teria razão de existir. Este propósito são os requisitos, que precisam ser atendidos, e materializados no software executável.
E como qualquer outro modelo, os requisitos sofrem mudanças ao longo do tempo. Alguns requisitos vão para fora do escopo, outros entram no escopo, e outros se mantém mas sofrem alterações. Todo software é dinâmico, seu escopo sofre alterações constantes durante seu ciclo de vida.
E neste contexto, controlar a “vida” dos requisitos é fundamental; isso é controlar o escopo do software. Sem este controle, fatalmente haverão problemas, pois perde-se a referência do “objeto” do sistema.
No vídeo abaixo temos um breve papo com nossos alunos do curso de Engenharia de Requisitos, onde abordo um pouco sobre o controle de versão de requisitos de software.
Espero que o conteúdo tenha sido útil, e fico à disposição para falarmos a respeito!
Grande abraço!