Skip to main content

O que é engenharia de requisitos?

Grandes sistemas de hardware ou software, como uma espaçonave, têm requisitos complexos. Os requisitos são uma especificação do que deve ser construído, como o sistema deve se comportar ou restrições no processo de construção do sistema. Engenharia de requisitos é o uso de boas práticas de engenharia para entender os requisitos antes da construção de um sistema. Assume importância porque os próprios stakeholders do sistema não são claros sobre suas necessidades e têm necessidades divergentes.

Um sistema complexo pode ter muitas partes interessadas, como as pessoas que encomendam o sistema, usuários que usam um ou mais aspectos do sistema e pessoas que se beneficiam do sistema. Também é possível que as partes interessadas incluam membros do público afetados por certas peculiaridades do sistema. As partes interessadas têm suas próprias necessidades especiais. Por outro lado, as pessoas que desenvolvem o sistema podem ser tecnicamente capazes, mas podem não entender completamente o ponto de vista das partes interessadas. A engenharia de requisitos é a capacidade essencial que conecta esses lados.

Formalmente, a atividade de engenharia de requisitos é dividida em desenvolvimento e gerenciamento de requisitos. O desenvolvimento de requisitos é composto por elicitação, análise, especificação e verificação. O gerenciamento de requisitos é o controle de todo o processo de requisitos, especialmente, o tratamento de qualquer alteração nos requisitos. Alguns profissionais, ao contrário, apenas chamam toda a atividade de análise de requisitos.

A elicitação de requisitos das partes interessadas torna-se necessária porque as partes interessadas geralmente não especificam completamente suas necessidades e não entendem as implicações do novo sistema. As partes interessadas podem não se abrir, pois podem temer o impacto em seus empregos atuais. A elicitação, portanto, é um processo cuidadoso e, possivelmente, longo, em que é necessária empatia e psicologia sutil. É preciso ter cuidado para que as diferenças culturais entre diferentes partes interessadas e os desenvolvedores sejam superadas.

Várias técnicas são usadas para obter requisitos. Os requisitos podem ser obtidos através de entrevistas individuais, reuniões de grupo e observação de pessoas em suas tarefas. As técnicas que podem gerar requisitos incluem grupos de foco, criação de listas priorizadas, prototipagem e comparação com outros sistemas em operação. Os requisitos para obter incluem as necessidades de negócios do sistema, os processos de negócios dos usuários à medida que eles usam o sistema e os recursos funcionais do sistema. Além disso, os requisitos não funcionais, como tempo de resposta, disponibilidade do sistema e facilidade de uso, precisam ser elicitados.

A etapa de análise na engenharia de requisitos forma requisitos de baixo nível que atenderão aos requisitos originais de alto nível. Isso inclui a criação de modelos conceituais e protótipos para verificar a integridade dos requisitos. Conflitos nas necessidades de diferentes partes interessadas são mais frequentemente encontrados por modelos e protótipos do que por uma mera lista de requisitos. Características desejáveis ​​do sistema, como segurança, flexibilidade e capacidade de manutenção, precisam ser adicionadas aos requisitos pelos analistas.

Os requisitos são especificados em um documento para facilitar a compreensão de todas as partes interessadas. No campo de software, o documento é chamado de SRS, que significa Especificação de Requisitos de Software. Os requisitos são verificados pelas principais partes interessadas. Isso ocorre principalmente por meio de apresentações e do documento de especificação, mas também às vezes com casos de teste que correspondem aos requisitos.

A engenharia de requisitos é principalmente uma atividade de comunicação, e não técnica. Precisa de habilidades multidisciplinares. A engenharia de requisitos ajuda as partes interessadas e os desenvolvedores a resolver conflitos e os une em seus objetivos; Isso leva a um sistema robusto.