Introdução O levantamento e análise dos requisitos de um sistema é a primeira etapa no processo de desenvolvimento de um sistema computacional Os requisitos de um sistema compreendem: As funcionalidades que o sistema deve ter As restrições de funcionamento Engenharia de Requisitos Processo de descobrir, analisar, documentar e verificar os requisitos de um sistema Requisitos de Usuário e de Sistema Uma maneira de classificar os requisitos é dividindo-os em requisitos de usuário e requisitos de sistema Requisitos de usuário São requisitos abstratos e de alto-nível, normalmente descritos em linguagem natural e com diagramas Requisitos de sistema São uma descrição mais detalhada das funcionalidades do sistema. Ela normalmente define exatamente quais serviços serão implementados e quais suas restrições Requisitos Funcionais e Não-funcionais Os requisitos são normalmente classificados como: Funcionais: - Descrevem o que o sistema deve fazer. Isto é, são os serviços e funcionalidades que o sistema deve fornecer Não funcionais: - Correspondem às restrições sobre os serviços e funcionalidades, como o desempenho. Requisitos Funcionais Descrevem o que o sistema deve fazer. Isto é, são os serviços e funcionalidades que o sistema deve fornecer Exemplo: Loja Virtual de Eletrônicos Requisitos Funcionais: - O usuário deve ser capaz de realizar buscas pelo nome e pelo tipo de produto - Para cada produto, devem ser mostradas suas especificações técnicas - Os usuários devem ser capazes de opinar sobre os produtos e de ler as opiniões de outros usuários - Os usuários poderão fazer o pagamento com o uso de boleto bancário ou cartão de crédito, etc; Requisitos Funcionais Notem que as especificações apresentadas são de alto- nível e genéricas, apresentando ambiguidades para os desenvolvedores No caso da busca, o usuário deve fornecer o nome completo e exato do produto ou basta uma palavra-chave? O ideal neste caso é fornecer a maior quantidade possível de informação para que o cliente e desenvolvedores saibam exatamente o que deve ser implementado. Requisitos Não-Funcionais São os requisitos associados às propriedades do sistema como um todo. Exemplo: Loja Virtual de eletrônicos - Deve estar disponível durante 99,99% do tempo - Capacidade de atender 1000 usuários simultâneos - O tempo de resposta às requisições dos usuários dever de no máximo 1s. - A comunicação com o usuário deve ser criptografada Normalmente são mais importantes que funcionalidades individuais. Por exemplo, se o site de uma loja virtual não for seguro, o site será inútil, pois não poderá se usado. Requisitos Não-Funcionais Os requisitos funcionais podem ser de 3 tipos: 1) Requisitos do produto: Definem o comportamento do produto, como desempenho, confiabilidade, segurança e uso de recursos computacionais; 2) Requisitos organizacionais: Estão relacionados às políticas organizacionais internas do cliente e do desenvolvedor. Como exemplo, podemos citar o processo de desenvolvimento, as linguagens de programação, as formas de disponibilização da documentação, etc. 3) Requisitos externos: São os requisitos externos ao sistema, como requisitos legais e éticos e de interopera- bilidade com sistemas de outras empresas Requisitos de Usuário São requisitos abstratos e de alto-nível, direcionados aos usuários do sistema. Especificam apenas o comportamento externo do sistema, evitando descrever detalhes do projeto interno Descritos em linguagem natural e com diagramas Englobam tanto as características funcionais como não funcionais do projeto Requisitos de Usuário Exemplo: Na loja virtual de eletrônicos, poderíamos ter o seguinte requisito de usuário:
Para comprar um produto, o cliente deve clicar em
um botão Comprar. Neste caso, o produto é inserido no carrinho do cliente, junto com outros produtos que o cliente já tenha adquirido
Notem que esta descrição não cita detalhes internos, sobre
como a lista de itens do carrinho será armazenada ou quais módulos do sistema são responsáveis por qual função Requisitos de Sistema São uma descrição mais detalhada das funcionalidades do sistema descritas nos requisitos do usuário. Eles normalmente define exatamente quais serviços serão implementados e quais suas restrições Normalmente se utiliza linguagem natural nestas especificações, mas deve-se tomar cuidado com as ambiguidades inerentes da linguagem, como em: “Uma professora de arte francesa”, onde francesa pode se referir à professora ou à arte Requisitos de Sistema Exemplo: Na loja virtual de eletrônicos, poderíamos ter o seguinte requisito de sistema:
Módulo Carrinho de Compras: armazena a lista de
itens (identificador e quantidade) que um usuário selecionou para comprar. Sua interface permite a adição de um novo item, a exclusão de um item inserido anteriormente e a listagens dos items
Notem que esta descrição cita detalhes internos sobre o
módulo que gerencia os itens do carrinho de compras Documento de Requisitos A lista de requisitos levantados para um sistema de software dá origem a um documento de requisitos, ou SRS (Software Requirements Specification)
Este documento contém o que os desenvolvedores devem
implementar e inclui os requisitos de usuário e de sistema, tanto os funcionais quanto os não-funcionais.
Normalmente é um documento formal, que é utilizado como
parte do contrato de desenvolvimento da empresa com o cliente. Referências A principal referência para esta atividade são os capítulos 6 e 7 do livro Engenharia de Software, Ian Sommerville, 8a edição. Recomendamos sua leitura aos que quiserem aprender mais sobre análise de requisitos.