Engenharia de Requisitos
Autor: Analistas de Sistema | Publicado: 2011-08-11T11:23:00-07:00

André Vinícius

&nbsp; &nbsp; &nbsp; &nbsp; O principal objetivo do desenvolvimento de um software é o atendimento das necessidades do usuário. Casos essas necessidades que satisfazem o usuário não seja atendidas, o software não alcançou o seu principal objetivo, que é ser útil. Podemos perceber então o quão importante é para o software o atendimento de requisitos, não requisitos de interesse do desenvolvedor, mas requisitos explícitos ou implícitos pelos usuários.&nbsp; &nbsp;Apesar de parecer uma tarefa simples, o levantamento de requisitos não caracteriza por simplesmente anotar a vontade do usuário, mas por ser uma garimpagem de informações relevantes ao correto desenvolvimento do software. O levantamento de requisitos é uma das fazes iniciais de qualquer projeto de desenvolvimento de software e se caracteriza pela adoção de um conjunto de técnicas de levantamento de requisitos e sua filtragem.Entre as técnicas de levantamento de requisitos, segundo a Prof.ª Mônica Massa, podemos citar:·&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Entrevista: É uma forma de comunicação entre duas pessoas (no mínimo), com o objetivo de obter informações.
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Questionário: É uma série de perguntas organizadas com o objetivo de levantar dados para uma pesquisa ou estudo, cujas respostas são fornecidas pelo informante sem a orientação direta do pesquisador.
 
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Revisão da Documentação: É o uso de diversas fontes de informação, tais como: manuais de procedimentos, documentação, manuais de projeto, relatórios, etc.
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Etnografia: Técnica de observação na qual o analista de insere no ambiente em que o software será utilizado a fim de extrair os requisitos sociais e organizacionais.
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Prototipação: É uma versão inicial do software usada para dar apoio essencialmente as fases de identificação, análise e validação de requisitos.
·&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Brainstorm: Técnica útil para obter rapidamente informações sobre a situação atual e os requisitos dos usuários.
·&nbsp; &nbsp; JAD (Joint Application Design): Técnica criada pela IBM, também baseada em sessões de dinâmica de grupo.

&nbsp; &nbsp;Cada uma dessas técnicas tem suas peculiaridades e para obter um maior benefício delas, o ideal é que elas sejam combinadas.Outro fator muito importante no momento do levantamento de requisitos é a sua filtragem, que seria a divisão destes requisitos em subgrupos, que tem por finalidade, facilitar a comunicação com o usuário, que poderá expressar as funcionalidades que deseja e facilitar a comunicação com a equipe de desenvolvimento, que poderá discutir aspectos mais técnicos e complexos entre si. Os requisitos que foram extraídos serão divididos entre requisitos funcionais, requisitos não funcionais e requisitos de domínio.
·&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Requisitos Funcionais: são descrições de funções que o sistema deve fornecer. Como o sistema deve reagir a entradas específicas e como deve se comportar em determinadas situações.
·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Requisitos Não Funcionais: são restrições sobre os serviços ou as funções oferecidas pelo sistema. Entre eles destacam-se restrições de tempo, restrições sobre o processo de desenvolvimento, etc.
·&nbsp; &nbsp;Requisitos de Domínio: são derivados do domínio da aplicação do sistema, em vez de serem obtidos a partir das necessidades específicas dos usuários do sistema.

&nbsp; &nbsp; &nbsp; Como podemos ver, esses são apenas algumas das técnicas e termos utilizados na Engenharia de Requisitos, que tem por objetivo principal, garantir a qualidade do software, a partir do momento em que consegue satisfazer ao máximo as necessidades do cliente. É válido lembrar também, que existem várias derivações e definições destes métodos e termos, mas todos com o mesmo objetivo. Portanto, cabe ao engenheiro de software, identificar os melhores métodos para extrair essas informações.