Trabalhando com Engenharia de Requisitos

Neste artigo veremos as Boas e más medidas que podem auxiliar todo o processo de desenvolvimento de software a partir do momento em que essas práticas ajudam na compreensão dos requisitos de software.

Fique por dentro

Este artigo é útil para que desenvolvedores de software conheçam medidas importantes que podem auxiliar todo o processo de desenvolvimento de software a partir do momento em que essas práticas ajudam na compreensão dos requisitos de software, dos solicitantes destes requisitos, da alteração dos mesmos, e dos principais problemas aos quais os requisitos de software estão sujeitos.

Por fim, a maior utilidade está em prover a compressão sobre como se executar bem a fase de engenharia de requisitos.

A engenharia de requisitos é a disciplina que de fato tem a missão de ajudar a equipe de desenvolvimento a entender o software a ser elaborado. É a base sólida para se andar do projeto até a construção. Ela é constituída pelas fases apresentadas na Figura 1. São elas:

Figura 1. Engenharia de Requisitos.

Requisitos: O necessário para entendê-los

Um requisito é uma capacidade que o software deve possuir com a finalidade de resolver um problema do usuário. Os requisitos servem como especificação do que deve ser implementado no sistema.

Os requisitos devem descrever uma facilidade para o usuário, uma propriedade ou uma restrição do sistema, ou ainda, uma restrição do processo de desenvolvimento do sistema.

Os requisitos de software são de três tipos:

Os requisitos funcionais são de dois tipos:

Os requisitos ainda podem ser divididos em outra categoria, se vistos pelo aspecto da implementação:

Olhando por um aspecto mais ligado a gerência, outras duas classificações podem ser ofertadas aos requisitos, elas foram relatadas por Spence (2000), e são pontuadas a seguir:

Este entendimento sobre a classificação dos requisitos é importante, pois ao identificar os tipos de requisitos, as equipes podem organizá-los em grupos, e conhecê-los melhor, o que torna mais fácil o controle sobre as mudanças e, como consequência, o gerenciamento. Assim, como veremos, a classificação dos requisitos é a primeira boa prática a ser seguida logo no início do projeto.

O estabelecimento de tipos diferentes de requisitos em um projeto ajuda a equipe a classificar os pedidos de alterações e a se comunicar mais claramente e firmemente com os clientes, portanto, a classificação já proporciona um entendimento e planejamento mais consistente sobre o que será implementado e em qual ordem.

Os requisitos de um software são sistemáticos, ou seja, é algo em que suas propriedades são conhecidas, mas que também são suscetíveis às mudanças. O Rational Software Corporation (RUP) oferece bons esclarecimentos que justificam a complexidade dos requisitos de software, estes esclarecimentos foram pontuados a seguir, os mesmos auxiliam no exercício de más práticas:

Após a explanação anterior, é importante exibir as más práticas. Vale frisar que mais importante do que entender o que deve ser feito como boas práticas em um processo é entender o que não deve ser feito, bem como as armadilhas preparadas para provocar os erros.

Más práticas

De forma direta e objetiva, segue o que não deve ser adotado em processos de software na fase de engenharia de requisitos:

  1. Não corrigir erros e inconsistências em requisito durante sua análise, ou fase de elaboração;
  2. Não entender que os clientes e usuários finais do software costumam evoluir sua compreensão sobre o que desejam com o passar do tempo. Nem tão pouco se preparar para este fato;
  3. Provocar problemas técnicos e principalmente alterações bruscas de custo ou cronograma, isto acarreta mudança nos requisitos que podem ser impactantes para o produto;
  4. Não conhecer o cliente e o usuário final da aplicação;
  5. Não se preparar para as mudanças no ambiente em que o software será implementado;
  6. Ofertar as tarefas de requisitos para um profissional que não tem talento e principalmente apreço pela engenharia de requisitos;
  7. Desconhecer o negócio e a finalidade da instituição que está propondo o software a ser desenvolvido;
  8. Não fazer a modelagem de negócio (regras de negócio) antes de iniciar a engenharia de requisitos.
  9. Não adotar uma linguagem familiar com os clientes e solicitantes dos requisitos;
  10. Ofertar uma solução ao invés de se entender e registrar as necessidades e problemas dos solicitantes de requisitos;
  11. Não controlar a quantidade de requisitos solicitados, e nem dividir esses requisitos em grupos de implementação;
  12. Não relacionar os requisitos entre sim, e entre os produtos do processo de desenvolvimento de software;
  13. Estimar mal a quantidade de recursos humanos necessários para controlar as mudanças nos requisitos;
  14. Falta de habilidade para manter os documentos de requisitos consistentes;
  15. Ouvir muitos solicitantes de requisitos sem selecionar previamente os que mais entendem do negócio;
  16. Não exibir para os interessados os requisitos em prototipações gráficas.

Boas práticas

Para se conhecer e definir quais as boas práticas a serem aplicadas na engenharia de requisitos é interessante formular uma política de engenharia de requisitos.

Tal política deve explicar os objetivos dos processos definidos para engenharia de requisitos de forma clara aos envolvidos no projeto.

Além disso, deve levar em conta os padrões organizacionais, as regras de negócio da organização, e as características de cada projeto, além das aptidões de cada profissional da equipe. Por si só, tal política já se caracteriza como uma boa prática.

Uma forte recomendação dentro da engenharia de requisitos é passar a ideia de que requisitos nunca podem ser congelados, e dificilmente serão em algum projeto.

Sendo assim, outra boa prática é aplicar o gerenciamento de requisitos com o protocolo que deve ser seguido neste gerenciamento, pois a tarefa de se gerenciar requisitos pode ser extremamente burocrática, sem necessariamente agregar valor à engenharia de requisitos e ao processo de software.

Outras boas práticas são:

  1. Concordar com um vocabulário comum para o projeto;
  2. Descreve de forma clara e objetiva o problema a ser resolvido pelo sistema, bem como de seus recursos principais;
  3. Fazer o levantamento das necessidades dos envolvidos em pelo menos cinco áreas importantes para o sistema: funcionalidade, usabilidade, confiabilidade, desempenho e suportabilidade;
  4. Identificar membros da equipe que serão coautores e contribuirão para a formulação de um ou mais tipos de requisitos;
  5. Decidir qual rastreabilidade de requisitos será necessária. A rastreabilidade de requisitos é o mecanismo mais eficiente de auxílio à gerência de requisitos, ela é responsável pela manutenção das modificações nos relacionamentos entre objetos e requisitos.

    Tal rastreabilidade pode ser feita por meio de uma matriz. Com a rastreabilidade é possível ter visibilidade das consequências da alteração de um requisito;

  6. Desenvolver uma Matriz de Rastreabilidade de Requisitos. A matriz é uma das formas mais usuais de se apresentar e estabelecer a rastreabilidade de requisitos, é ela que provê a visualização dos relacionamentos entre os objetos, ou artefatos de um projeto de software.

    A Matriz de Rastreabilidade é um recurso útil dentro da gerência de requisitos, seu uso é extremamente recomendado pelos programas de melhoria de desenvolvimento de software. Um modelo de matriz é representado na Tabela 1;

  7. Criar relatórios de progresso e ‘status’ da matriz de rastreabilidade e dos requisitos, para que a equipe desenvolvedora entenda o impacto da alteração de um requisito;
  8. Tabela 1. Exemplo de Matriz de Rastreabilidade.
  9. A equipe responsável pela engenharia de requisitos deve receber todas as solicitações de alteração nos requisitos por um formulário próprio, ou por um sistema automatizado, bem como as solicitações de adição de novos requisitos;
  10. Aprovar os requisitos com o cliente, usuários e demais solicitantes, isto dará oportunidade de conhecer requisitos errôneos e corrigi-los prematuramente;
  11. Efetuar revisões em planos e produtos de trabalho visando identificar e corrigir inconsistências em relação aos requisitos;
  12. Deve-se eleger um gerente de requisitos que deve avaliar o impacto das modificações solicitadas nos requisitos, e em tudo que está relacionado a eles;
  13. Deve ser mantido um histórico de alterações para cada requisito;
  14. Toda modificação em requisito deve ser comunicada aos envolvidos, devido aos impactos em potencial;
  15. Uma coleta periódica das métricas deve ser feita para melhor acompanhamento da gerência de requisitos. As métricas darão visibilidade da quantidade de alterações feitas e de que natureza elas são. Isto contribui para que a equipe saiba o que esperar em projetos futuros com requisitos semelhantes.

Em relação ao último tópico, a importância de se ter uma métrica se deve ao fato do gerente de requisitos poder ter o percentual de requisitos alterados, incluídos ou excluídos, dentro de um determinado período de tempo.

Isto poderá dar maior poder estratégico para os próximos projetos de software, onde o gerente poderá saber exatamente em que período ocorre maior modificação nos requisitos.

É importante salientar que muitos dos tópicos acima estão relacionados à alteração de requisitos.

Assim é relativamente fácil notar que a fase de gerência de requisitos é uma das mais importantes dentro da engenharia. Para a gerência de requisitos todas as mudanças precisam ser identificadas, avaliadas, documentadas, comunicadas e acompanhadas até sua finalização. É o que defende o CMMI.

Quando uma mudança ocorre, primeiramente deve-se analisar o requisito que está ligado àquela mudança, verificar a prioridade dele, as quais outros artefatos o requisito está ligado, verificar o impacto sobre estes artefatos; deve-se verificar também se o requisito é próprio do cliente ou do sistema, se é volátil, ou seja, se já se esperava esta solicitação de mudança, e qual a situação atual do requisito dentro do processo, enfim, deve-se tratar esta mudança a começar do reconhecimento do requisito.

Oberg (2002) escreveu que uma indústria americana formulou um estudo publicado na conferência internacional de requisitos, este estudo apontava que 76% de um total de 500 gerentes de TI nos Estados Unidos e no Reino Unido entrevistados, já tinham tido falhas em projetos inteiros durante suas carreiras. A causa mais frequentemente apontada como falha dos projetos foi a alteração de requisitos.

Atualmente, este percentual deve ter pelo menos duplicado, não só pelo aumento no número de sistemas implementados, mas também pelo aumento da complexidade nas relações e regras de negócios.

A gerência de requisitos é fundamental para o controle de mudanças dos requisitos, pois estes seguem evoluindo com o passar do tempo, já que estão inseridos em um ambiente real que muda com o tempo.

A rastreabilidade de requisitos contribui para a previsão do impacto que as mudanças dos requisitos causarão no projeto de software, sendo assim, a gerência de requisitos pode contribuir para a garantia da qualidade do sistema. A gerência de requisitos se restringe aos seguintes aspectos:

Para que a gerência desenvolva seu papel de forma satisfatória, é necessário de antemão, definir novamente um conjunto de políticas. Estas políticas devem explicar os objetivos dos processos definidos de forma clara aos envolvidos no projeto.

E deve levar em conta os padrões organizacionais, as regras de negócio da organização, e as características de cada projeto, além das aptidões de cada profissional da equipe.

Tudo na gerência de requisitos parte da ideia de que requisitos nunca podem ser congelados, e dificilmente serão em algum projeto. Sendo assim, para que a gerência de requisitos cumpra sua missão é necessário que ela desenvolva algumas boas práticas, como: ter um modelo para rastrear requisitos, inclusive com a utilização de ferramentas que façam rastreabilidade.

Definir um modelo de rastreabilidade de requisitos para um projeto depende de muitos fatores, o primeiro deles é o software que está sendo construído. Projetos com relativa estabilidade costumam ter os requisitos alterados na ordem de 1% ao mês. Portanto, observar as características do sistema é algo que não se pode omitir (mais uma boa prática agregada). Deste modo, fica evidente que um modelo de rastreabilidade sempre é único e distinto de qualquer outro.

Um modelo de rastreabilidade inicia suas boas práticas selecionando os requisitos que devem ser rastreados. Rastrear muitos requisitos é uma tarefa burocrática e difícil, que pode agregar atrasos e erros ao analista de requisitos. Ademais, nem todo requisito, depende da sua classificação, necessita ser rastreado.

Outra boa prática dentro da rastreabilidade de requisitos estabelece que é necessário verificar (selecionar) as ferramentas de rastreabilidade que apoiarão de forma mais eficaz o processo de rastreabilidade de requisitos, é necessário ainda treinar a equipe para o uso da ferramenta.

É sadio ainda definir os momentos de registro e de controle da rastreabilidade, isto pode ocorrer no momento de fechamento de fases, por exemplo: efetuar rastreabilidade na finalização da etapa de análise e projeto, e na finalização da etapa de codificação. Não se pode esquecer que requisitos mudam a todo o momento e podem impactar mudanças em todos os artefatos de software.

Os pontos citados nos três parágrafos acima são os mais relevantes, sendo que o primeiro é mais ainda, visto que não é todo requisito que é passível de rastrear.

Deve-se fazer um catálogo, e observar através das questões a seguir, se no requisito elicitado pode-se descobrir as informações exigidas nas questões. Se o requisito atender a todas, possivelmente ele será candidato à rastreabilidade. As questões são pontuadas a seguir:

Após obter respostas a essas questões, em relação aos requisitos, devem-se saber os objetos a serem monitorados, bem como, os tipos de rastreabilidade que serão efetuadas, além de estabelecer corretamente o tipo de ligação que será gerenciada nesta matriz, isto dependerá exclusivamente da característica dos objetos (produtos de software), dos processos de software utilizados pela organização, e dos prazos e custos do projeto em questão.

Executando essas ações, é mais fácil fazer da rastreabilidade, uma tarefa que demande um trabalho pouco oneroso e com garantias na finalização.

Também é importante saber o grau de instabilidade dos requisitos. Ou seja, se são requisitos voláteis. Deve-se saber, ou pelo menos deduzir, com que frequência eles podem vir a se modificar.

Conhecer a instabilidade dos requisitos do software a ser desenvolvido é algo que também facilita o estabelecimento de uma matriz de rastreabilidade, visto que, alguns sistemas possuem requisitos funcionais que são pouco voláteis, onde os fatores que podem ocasionar mudanças existem, mas não são constantes, não provocam muitas variações.

Esses sistemas desenvolvem uma matriz relativamente simples, com poucos requisitos, ou com requisitos que não são tão voláteis. Neste caso, o gerenciamento é facilitado e pode-se usar até mesmo uma planilha eletrônica como ferramenta.

Vale salientar que se faz necessário a determinação de um modelo de matriz de rastreabilidade para todo software que será construído. Aliás, todo sistema deve fazer uso da rastreabilidade de requisitos, mesmo os mais estáveis. Os sistemas que necessitam de mais atenção na elaboração da matriz possuem o seguinte perfil:

Após a definição do modelo, alguns outros aspectos, em relação ao desenvolvimento da rastreabilidade devem ser levados em consideração:

Após os conceitos que já foram repassados sobre a técnica de rastreabilidade, é possível notar que a gerência de requisitos contribui muito para o tratamento de riscos do projeto de software.

80% dos riscos em projetos de software são oriundos da evolução dos requisitos.

Tal gerência é um processo chave ao processo de gerência de software, pois a sua correta execução pode mostrar ao gerente de projetos os problemas que o desenvolvimento de software poderá enfrentar futuramente.

Percebeu-se até agora, que a gerência de requisitos, ao contrário de outros processos que podem ser gerenciados dentro de um único grupo de negócios, pode envolver qualquer variável, ambiente, grupo de pessoas, ou processo, que possam contribuir com o seu desenvolvimento.

Este gerenciamento inclui as pessoas envolvidas com a elicitação de requisitos, e também com a definição dos testes pelo qual o sistema irá passar.

Gerentes de desenvolvimento, de qualidade, analistas, engenheiros, clientes, podem e devem participar do processo de gerência de requisitos.

Apesar da importância discutida neste artigo, a engenharia de requisitos na prática ainda é pouco utilizada em muitos ciclos de desenvolvimento.

Isto se deve ao fato de muito dos processos que compõem esta engenharia serem feitos de forma burocratizada. Um desafio para os executores dos processos e tarefas relacionados aos requisitos é prover soluções práticas e técnicas ágeis a tais processos.

Referências

Confira também

Artigos relacionados