quarta-feira, 25 de maio de 2011

Importância da classificação de requisitos

A classificação dos requisitos é de extrema importância para a definição de prioridades, para a separação por níveis de importância, riscos, custos, etc e para validação por diferentes pessoas envolvidas.

Um requisito não atendido pode, em casos mais graves, inviabilizar todo um projeto ou causar aumentos expressivos em prazos e custos.

Uma classificação clássica e bastante utilizada é a divisão dos requisitos como funcionais e não funcionais:

Requisitos funcionais são especificações sobre as funcionalidades que o sistema deve fornecer, características que ele deve ter e como deve se comportar em determinadas situações. Pode estabelecer características que não devem ser feitas.

Ex: um usuário pode informar que o software deverá pedir um ou dois vendedores em cada venda (é obrigatória a seleção de pelo menos um vendedor). A comissão para esses vendedores deve ser automaticamente calculada baseada numa tabela prévia e na situação de dois vendedores informados, a comissão deverá ser dividida entre os dois com os valores proporcionais.

O exemplo acima descreve uma regra de negócio do cliente envolvendo uma situação de venda. Encaixa-se como um requisito funcional por descrever uma característica que o sistema deverá ter em uma determinada situação.

Requisitos não funcionais são requisitos que não estão relacionados a funcionalidades específicas do sistema, mas a funções mais genéricas sobre o sistema como um todo. Esta categoria de requisitos inclui restrições de tempo de resposta, definições do processo de desenvolvimento do sistema, características da interface do sistema, ambiente do sistema, etc. Por definição não se aplicam às características individuais do sistema.
Os requisitos não funcionais surgem por diferentes razões, como necessidades do cliente, restrições de orçamento, políticas e características organizacionais, restrições técnicas do fornecedor, regulamentos de segurança, leis, entre outros.

Ex 1: um cliente poderá pedir que o software deva funcionar nos sistemas operacionais Windows e Linux e deverá utilizar um banco de dados gratuito.

No exemplo o cliente pediu características gerais que envolverão decisões sobre as ferramentas de desenvolvimento do sistema e o banco de dados a ser utilizado. São características que afetarão todo o software e não situações específicas.

Ex 2: o cliente quer que os relatórios diários do sistema comecem a imprimir em no máximo 3 segundos.

Essa necessidade envolve o tempo de resposta de uma parte do software (relatórios diários) e não de alguma funcionalidade específica.

O não atendimento de requisitos não funcionais pode inviabilizar projetos ou pode envolver custos bastante diferenciados de desenvolvimento. Ferramentas de desenvolvimento e softwares de banco de dados podem não funcionar em diferentes sistemas operacionais e empresas desenvolvedoras podem não ser especializadas em diferentes sistemas operacionais. Essas características podem resultar em orçamentos bastante diferenciados entre os fornecedores.

Estudo de um caso real:

Eu respondi a um questionário por e-mail para avaliação para participação em uma concorrência de compra de um software comercial. A empresa X (potencial cliente) apresentou uma séria de perguntas e necessidades à empresa Y (potencial fornecedor). O software em questão seria um básico sistema de controle de estoque/financeiro.

As necessidades do cliente eram comuns para a situação e não envolveriam custos diferenciados de um orçamento padrão. Ocorreu que uma das perguntas não se encaixava no contexto das outras, era sobre modelos de impressora compatíveis com um celular IPhone.

Perguntei diretamente ao potencial cliente sobre a pergunta em específico e descobri, embora não mencionado explicitamente, que o software deveria funcionar em celulares IPhone e não em computadores comuns. Ocorram contatos com o potencial cliente, a fim de refinar e entender as reais necessidades.

A conclusão foi que seria inviável para a empresa Y a realização do projeto dentro das expectativas do cliente em termos de prazo e custo final. Também foram levantadas, junto ao possível cliente, questões sérias se o ambiente operacional de um celular seria eficiente para a utilização do software desejado.

Nenhum comentário:

Postar um comentário