Requisitos são as bases para todo projeto, definindo o que as partes interessadas de um novo sistema necessitam e também o que o sistema deve fazer para satisfazer as suas necessidades. Os requisitos guiam as atividades do projeto e normalmente são expressos em linguagem natural para que todos possam obter o entendimento.

Além dos requisitos definirem os problemas e soluções também devemos definir os riscos e prover soluções satisfatórias casos esses riscos venham a falhar. Dessa forma, os requisitos definem as bases para:

  • Planejamento do Projeto
  • Gerenciamento de Riscos
  • Testes de Aceitação
  • Controle de Mudanças

Os requisitos são tão importantes que normalmente eles possuem um grande impacto nas falhas dos projetos de software. Abaixo destacamos os três principais problemas para falhas em projetos de software:

  • Requisitos: requisitos pobremente organizados, muito mal expressados, probremente relatados para as partes interessadas, mudanças muito rápidas ou desnecessárias, expectativas não realistas.
  • Gerenciamento de Problemas de Recursos: incapacidade de ter dinheiro suficiente e falta de apoio ou fracasso para impor disciplina e planejamento. Muitas delas surgem pela falta de controle de requisitos.
  • Politicas: Contribui para o primeiro e segundo problema.

O mais interessante é que todos esses problemas podem ser resolvidos com pouco dinheiro.

Dessa forma, podemos afirmar que a engenharia de requisitos é um processo que engloba todas as atividades que contribuem para a produção de um documento de requisitos e sua manutenção ao longo do tempo.

Ao longo do artigo veremos mais o que é engenharia de requisitos, como se dá o processo de engenharia de requisitos e quais são as suas principais atividades.

1. Processo de Engenharia de Requisitos

Portanto, a engenharia de requisitos é o processo pelo qual os requisitos de um produto de software são coletados, analisados, documentados e gerenciados ao longo de todo o ciclo de vida do software.

Entendido o que é a engenharia de requisitos, podemos partir para conhecer como funciona o processo de engenharia de requisitos. Fazendo um paralelo com o processo de desenvolvimento de software, tem-se que um processo de software envolve diversas atividades que podem ser classificadas em: Atividades de Desenvolvimento onde temos atividades que contribuem para o desenvolvimento do produto de software como levantamento e análise de requisitos, projeto e implementação; Atividades de Gerência que envolvem atividades de planejamento e acompanhamento gerencial do projeto; e Atividades de Controle da Qualidade que estão relacionadas com a avaliação da qualidade do produto.

De uma forma geral os requisitos possuem um papel fundamental para o desenvolvimento de software. Os requisitos de software são uma das principais medidas de sucesso de um software, visto que se eles atendem aos objetivos e requisitos para os quais foi construído o software e está totalmente de acordo com as necessidades dos clientes. Requisitos são a base para estimativas, modelagem, projeto, implementação, testes e até mesmo para a manutenção. Assim, os requisitos estão presentes ao longo de todo o ciclo de vida de um software.

Já no inicio de um projeto temos que levantar os requisitos, entende-los e documentá-los. Como os requisitos são extremamente importantes para o sucesso de um projeto, devemos também realizar atividades de controle da qualidade para verificar, validar e garantir a qualidade dos requisitos. Outra medida fundamental é gerenciarmos a evolução dos requisitos, visto que os negócios são dinâmicos e não temos como garantir que esses requisitos não sofrerão alterações. Dessa forma devemos manter a rastreabilidade entre os requisitos e os demais artefatos produzidos no projeto.

Portanto, podemos constatar que os requisitos envolvem atividades de desenvolvimento através do Levantamento e Análise e Documentação de Requisitos, gerência através da Gerência de Requisitos e por fim o controle da qualidade através da Verificação, Validação e Garantia da Qualidade de Requisitos. Todas essas atividades que são relacionadas a requisitos é o Processo de Engenharia de Requisitos.

No restante do artigo veremos um pouco mais o que são cada uma das dessas atividades que fazem parte do processo de engenharia de requisitos.

2. Levantamento de Requisitos

Esta é a fase inicial do processo de engenharia de requisitos. Nessa atividade levam-se em conta as necessidades dos usuários e clientes, informações de domínio, sistemas já existentes na organização, regulamentos vigentes, leis, etc.

O objetivo nessa fase é entendermos a organização como um todo, seus processos, necessidades, possibilidades de melhorias e restrições existente. Dessa forma, nos preocupamos na descoberta dos requisitos.

Essa fase é bastante complexa e também exige obtermos informações dos interessados, consultar documentos, obter conhecimentos do domínio e estudar o negócio da organização.

No levantamento de requisitos devemos atentar para quatro entendimentos que devemos possuir: Entendimento do Domínio da Aplicação onde se entende, de uma maneira geral, a área na qual o sistema será aplicado; Entendimento do Problema onde entendemos os detalhes do problema específico a ser resolvido com o auxilio do sistema a ser desenvolvido; Entendimento do Negócio onde entendemos como o sistema afetará a organização e como contribuirá para que os objetivos do negócio e os objetivos gerais da organização sejam atingidos; e por fim o Entendimento das Necessidades e das Restrições dos Interessados onde entende-se as demandas de apoio para a realização do trabalho de cada um dos interessados no sistema, entende-se os processos de trabalho a serem apoiados pelo sistema e o papel de eventuais sistemas existentes na execução e condução dos processos de trabalho.

Para o levantamento de requisitos temos diversas técnicas úteis que podem ser empregadas para ajudar o levantamento desses requisitos, são elas: entrevistas, questionários, observação do ambiente e dos indivíduos nas suas tarefas cotidianas na organização, análise de documentos existentes na organização, cenário de interação entre o usuário final e o sistema onde o usuário pode simular a sua interação com o sistema explicando para o analista o que ele está fazendo e de que informações ele precisa para realizar a tarefa, prototipagem onde uma versão preliminar do sistema, muitas vezes não operacional e descartável, é apresentada ao usuário para capturar informações específicas sobre seus requisitos de informação, observação reações, dinâmica de grupo, e diversas outras técnicas que também podem ser empregadas.

3. Análise de Requisitos

Após a atividade de Levantamento de Requisitos inicia-se a atividade de Análise de Requisitos, que é onde os requisitos levantados são usados como base para a modelagem do sistema.

Os requisitos são escritos tipicamente em linguagem natural, no entanto, é útil expressarmos requisitos mais detalhados do sistema de maneira mais técnica através de diversos tipos de modelos que podem ser utilizados. Esses modelos são representações gráficas que descrevem processos de negócio, o problema a ser resolvido e o sistema a ser desenvolvido. Representações gráficas são muito mais compreensíveis do que descrições detalhadas em linguagem natural e por isso são utilizados.

Dessa forma, a análise é uma atividade de modelagem. Vale ressaltar que essa modelagem é conceitual, pois estamos preocupados com o domínio do problema e não com soluções técnicas. Portanto, os modelos de análise são elaborados a fim de obtermos uma compreensão maior do sistema a ser desenvolvido e para especificá-lo.

Na análise de requisitos buscam-se principalmente duas perspectivas, a primeira delas é a estrutural onde se busca modelar os conceitos, propriedades e relações do domínio que são consideradas relevantes para o sistema em desenvolvimento. A segunda perspectiva é a comportamental onde se busca modelar o comportamento geral do sistema, de uma de suas funcionalidades ou de uma entidade.

Os diagramas da UML provê suporte a todos os diagramas necessários nessa fase de análise.

4. Documentação de Requisitos

Os requisitos e modelos capturados nas etapas de Levantamento de Requisitos e Análise de Requisitos devem ser descritos e apresentados em documentos. A documentação é uma atividade de registro e oficialização dos resultados da engenharia de requisitos. Como resultado, um ou mais documentos devem ser produzidos.

Essa documentação escrita de uma boa forma apresenta diversos benefícios como facilidade na comunicação dos requisitos, redução no esforço de desenvolvimento, fornece uma base realista para estimativas, boa base para verificação e validação, entre outros benefícios.

A documentação produzida também possui diversos interessados que usam a documentação para diferentes propósitos. Os clientes, Usuários e Especialistas de Domínio atuam na especificação, avaliação e alteração dos requisitos. Gerentes de Cliente utilizam a documentação para planejar uma proposta para o sistema e para planejar e acompanhar o processo de desenvolvimento. Os desenvolvedores utilizam a documentação para compreender o sistema e a relação entre as suas partes. Os Testadores utilizam a documentação para projetar casos de teste.

O Documento de Requisitos deve conter uma descrição do propósito do sistema, uma breve descrição do domínio do problema e listas de requisitos funcionais, não funcionais e regras de negócio, tudo descrito em linguagem natural. Desenvolvedores, clientes, usuários e gerentes utilizam esse documento. Outro documento que pode ser produzido é o Documento de Especificação de Requisitos que deve conter os requisitos escritos a partir da perspectiva do desenvolvedor, contendo inclusive uma correspondência direta com os requisitos no Documento de Requisitos. Os modelos produzidos na fase anterior devem ficar dentro deste documento de especificação de requisitos.

5. Verificação, Validação e Garantia da Qualidade de Requisitos

Essa fase deve ser iniciada o quanto antes no processo de desenvolvimento de software. Os requisitos são a base para o desenvolvimento, dessa forma é fundamental que eles sejam cuidadosamente avaliados. Portanto, os documentos produzidos durante a fase anterior devem ser submetidos à verificação e validação de requisitos.

A diferença entre verificação e validação é que verificação assegura que o software esteja sendo construído de forma correta. Por sua vez a validação assegura que o software que está sendo desenvolvido é o software correto. Portanto, a verificação assegura que os artefatos produzidos atendem aos requisitos e a validação assegura que os requisitos e o software que foi derivado desses requisitos atendem ao uso proposto.

A validação envolve a participação do usuário e do cliente, pois apenas eles possuem condições de confirmar que os requisitos atendem aos propósitos do sistema.

Nessa fase examinam-se os documentos de requisitos para garantir que todos os requisitos tenham sido declarados de modo não ambíguo, que as inconsistências, conflitos, omissões e erros tenham sido detectados e corrigidos, que os documentos estão em conformidade com os padrões estabelecidos, que os requisitos realmente satisfazem às necessidades dos clientes e usuários.

Portanto, os requisitos devem ser completos, corretos, consistentes, realistas, necessário, passível de ser priorizado, verificável e rastreável.

6. Gerência de Requisitos

Mudanças nos requisitos ocorrem durante todo o processo de software, desde o levantamento de requisitos até durante a operação do sistema em produção. Isso ocorre devido à descoberta de erros, omissões, conflitos, inconsistência nos requisitos, melhor entendimento dos usuários sobre as suas necessidades, problemas técnicos, mudanças de prioridades do cliente, mudanças no negócio, concorrentes, mudanças econômicas, mudanças no ambiente de software, mudanças organizacionais, etc.

Para minimizar os problemas causados por essas mudanças é necessário gerenciar requisitos. O Processo de Gerencia de Requisitos envolve atividades que ajudam a equipe a identificar, controlar e rastrear requisitos e gerenciar mudanças de requisitos em qualquer momento ao longo do ciclo de vida do software.

Portanto, os objetivos do processo são gerenciar alterações nos requisitos acordados, gerenciar relacionamentos entre requisitos, gerenciar dependências entre requisitos e outros documentos produzidos durante o processo de software. Dessa forma, a gerência de requisitos possui as seguintes atividades: controle de mudanças, controle de versão, acompanhamento do estado dos requisitos e rastreamento de requisitos.

A definição de um processo apropriado para uma organização é muito importante e traz diversos benefícios, pois uma boa descrição de um processo fornece orientações e reduz a probabilidade de erros ou esquecimentos. O mais importante é saber que não existe um processo ideal, portanto adaptar um processo para as necessidades internas é sempre a melhor escolha ao invés de impor um processo à organização.


Bibliografia