Requisitos de Software Capítulo 5 Ian Sommerville Tópicos Requisitos funcionais e não funcionais Requisitos do usuário Requisitos do Sistema O Documento de requisitos do Software Engenharia de requisitos Engenharia de requisitos é o processo de descobrir, analisar, documentar e verificar as funções e restrições que o usuário requer para o sistema. Os requisitos são a descrição do sistema, funções e restrições que são gerados durante o processo de engenharia de requisitos. O que é um requisito? Um requisito pode ser visto como uma declaração abstrata de alto-nível, uma função que o sistema deve fornecer ou uma restrição do sistema. No outro extremo ele pode ser visto como uma especificação detalhada, matematicamente formal de uma função do sistema.. REQUISITOS: Você entendeu??? REQUISITOS ???? Abstração de Requisitos (Davis, 1993) "Se uma empresa deseja estabelecer um contrato para desenvolvimento de um grande projeto de software, ela tem de definir suas necessidades de maneira suficientemente abstrata para que uma solução não seja pré-definida. Os requisitos devem ser redigidos de modo que os diversos fornecedores possam apresentar propostas, oferecendo, talvez, diferentes maneiras de atender às necessidades organizacionais do cliente. Uma vez estabelecido um contrato, o fornecedor precisa preparar uma definição do sistema para o cliente, com mais detalhes, de modo que o cliente compreenda e possa validar o que o software fará. Estes dois documentos podem ser chamados de documentos de requisitos do sistema." Tipos de Requisitos Requisitos do usuário – São declarações em linguagem natural e também em diagramas, sobre as funções que o sistema deve fornecer e as restrições sobre as quais deve operar. Requisitos de Sistema – Estabelecem detalhadamente as funções e as restrições de sistema. O documento de requisitos de sistema, algumas vezes chamado de especificação funcional, deve ser preciso. Ele pode servir como um contrato entre o comprador do sistema e o desenvolvedor do software. Especificação de Projeto de Software – É uma descrição abstrata do projeto de software, que é uma base para o projeto e a implementação mais detalhados.acrescenta mais detalhes à especificação de requisitos do sistema Definição e Especificação (exemplo) Definição dos requisitos do usuário 1. O Software deve oferecer um meio de representar e acessar arquivos externos criados por outras ferramentas. Especificação dos requisitos do sistema 1.1 O usuário deve dispor de recursos para definir o tipo de arquivos externos. 1.2 Cada tipo de arquivo externo pode ter uma ferramenta associada que pode ser aplicada a ele. 1.3 Cada tipo de arquivo externo pode ser representado como um ícone específico na tela do usuário. 1.4 Devem ser fornecidos recursos para o ícone que representa um arquivo externo, a ser definido pelo usuário Leitores dos Requisitos User requirements Client managers System end-users Client engineers Contractor managers System architects System requirements System end-users Client engineers System architects Software developers Software design specification Client engineers (perhaps) System architects Software developers Requisitos Funcionais e Não-Funcionais Os requisitos de sistema de software podem ser vistos como: – Requisitos Funcionais São declaraçõ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. Em alguns casos, os requisitos funcionais podem também explicitamente declarar o que o sistema não deve fazer. – 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,padrões, entre outros. – Requisitos de domínio São requisitos que se originam do domínio de aplicação do sistema e que refletem características desse domínio. Podem ser requisitos funcionais e não funcionais. Requisitos funcionais Descrevem a funcionalidade ou os serviços que se espera que o sistema forneça. Dependem do tipo de software que está sendo desenvolvido, dos usuários de software e do tipo de sistema. Quando expressos como requisitos de usuário eles são descritos de um modo geral Quando expressos como requisitos do sistema descrevem a função de sistema detalhadamente, suas entradas, saídas, exceções etc Exemplos de requisitos funcionais para um sistema de biblioteca de universidade 1. O usuário deve ser capaz de buscar todo o conjunto inicial de banco de dados ou selecionar um subconjunto a partir dele. 2. O sistema fornecerá telas apropriadas para o usuário ler documentos no repositório de documentos 3. Cada pedido será alocado a um único identificador (orderid), que o usuário poderá copiar para a área de armazenagem permanente da conta. Imprecisão de requisitos Problemas podem se originar da imprecisão na especificação de requisitos. Requisitos ambíguos podem ser interpretados de diferentes maneiras por desenvolvedores e usuários. Considere o termo ‘telas apropriadas’ – Intenção do usuário - Telas especiais para cada tipo de documento (texto, imagens, mapas, etc). – Interpretação do desenvolvedor - Fornecer uma tela de texto que mostra o conteúdo de um documento. => ambiguidade Completeza e Consistência Em princípio, os requisitos devem ser completos e consistentes. Completo – Todas as funções requeridas pelo usuário devem estar definidas. Consistente – Não devem existir conflitos ou contradições nas definições dos requisitos. ==> na prática, para sistemas grandes e complexos é quase impossível atingir a completeza e consistência requeridos. Requisitos Não-Funcionais São aqueles que não dizem respeito, diretamente às funções específicas fornecidas pelo sistema. Eles estão relacionados a propriedades como confiabilidade, tempo de resposta e espaço em disco. Requisitos não funcionais de processo podem solicitar o uso de uma determinada ferramenta CASE, linguagem de programação ou método de desenvolvimento. Requisitos não funcionais podem ser mais importantes que requisitos funcionais individuais pois a falha em não cumprir um requisito não funcional pode tornar o sistema inútil. Classificação dos Requisitos Não-Funcionais Requisitos de Produto – São os requisitos que especificam o comportamento do produto. entre os exemplos estão os requisitos de desempenho sobre com que rapidez o sistema deve operar e quanta memória ele requer, os requisitos de confiabilidade, que estabelecem a taxa aceitável de falhas, os requisitos de portabilidade e os reuisitos de facilidade de uso. Requisitos Organizacionais – São procedentes de políticas e procedimentos nas organizações do cliente e do desenvolvedor. Entre os exemplos estão os padrões de processo que devem ser utilizados, os requisitos de implementação, como a linguagem de programação ou o método de projeto utilizado, e os requisitos de fornecimento(quando o produto e seus documentos devem ser entregues. Requisitos Externos – requisitos procedentes de fatores externos tais como interoperabilidade, requisitos legais e éticos. Non-functional requirement types Non-functional requir ements Product requir ements Ef ficiency requir ements Reliability requir ements Usability requirements Performance requirements Or ganizational requir ements Portability requirements Delivery requirements Space requir ements External requirements Interoperability requirements Implementation requir ements Ethical requirements Standards requirements Legislative requirements Privacy requirements Safety requirements Requisitos Não-Funcionais - exemplos Requisitos de Produto – Toda entrada de dados deve ser padrão TXT Requisitos Organizacionais – O processo de desenvolvimento e a documentação de todo o sistema devem ser entregues conforme norma padrão xxx.yyyy. Requisitos Externos – O sistema não deve revelar aos operadores nenhuma informação pessoal sobre os clientes além do nome e número de referência. 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 Eles podem ser novos requisitos funcionais em si, podem restringir os requisitos funcionais existentes Podem também estabelecer como devem ser realizados cálculos específicos Exemplos – Requisitos de Domínio 1. Deve haver uma interface-padrão como usuário para todos os banco de dados, que terá como base o padrão Z39.50. 2. Em razão das restrições referentes a direitos autorais, alguns documentos devem ser excluídos imediatamente ao serem fornecidos. Dependendo dos requisitos dos usuários, esses documentos serão impressos localmente no servidor do sistema para serem encaminhados manualmente ao usuário ou direcionados para uma impressora de rede. Exemplos – Requisitos de Domínio A desacerelação do trem será computada como: Dtrem = Dcontrole + Dgradiente Onde Dgradiente é 9,81 ms2 * gradiente compensado/alfa e onde os valores de 9,81 ms²/alfa são conhecidos para diferentes tipos de trens. Requisitos de Usuário Descrevem os requisitos funcionais e não funcionais de modo compreensível pelos usuários do sistema que não têm conhecimentos técnicos detalhados Devem especificar somente o comportamento externo do sistema Deve-se evitar as características do projeto do sistema Podem ser escritos com o uso de linguagem natural, formulários e diagramas intuitivos simples Exemplos – Requisitos de usuário 2.6 Recursos de grade. 2.7 O editor deverá fornecer um recurso de grade, em que uma matriz de linhas horizontais e verticais constitua um fundo da janela do editor. Essa grade deverá ser uma tela passiva em que o alinhamento de entidades é de responsabilidade do usuário. Lógica: uma grade ajuda o usuário a criar um diagrama ‘limpo’, com entidades bem espaçadas. Embora uma grade ativa, em que as entidades saltam as linhas de grade, possa ser útil, o posicionamento é impreciso. O usuário é a melhor pessoa para decidir onde as entidades devem ser posicionadas. Especificação: ECLIPSE/WS/ Ferramentas/DE/FS. Seção 5.6 Diretrizes para redação dos requisitos do usuário Invente um formato padrão e certifique-se de que todas as definições de requisitos estejam conforme este formato Utilize a linguagem de modo consistente Faça distinção entre o requisitos obrigatórios e os desejáveis Utilize destaque no texto(negrito ou itálico) para ressaltar partes importants Evite o uso de jargões de informática 3.5.1 Adicionando nós a um desenho 3.5.1.1 O editor deve fornecer um recurso aos usuários para adicionar nós de um tipo especificado a seu desenho. 3.5.1.2 A seqüência de ações para acrescentar um nó deve ser como se segue: 1. O usuário deve selecionar o tipo de nó a ser acrescentado. 2. O usuário deve mover o cursor para a posição aproximada do nó no diagrama e indicar que o símbolo do nó deve ser adicionado naquele ponto. 3. O usuário deve então arrastar o símbolo do nó para sua posição final. Lógica: o usuário é a melhor pessoa para decidir onde posicionar um nó no diagrama. Essa abordagem dá ao usuário o controle direto sobre a seleção do tipo de nó e seu posicionamento. Requisitos de sistema São descrições mais detalhadas dos requisitos de usuário. Serve como base para projetar o sistema. Pode ser usado como base para o contrato. Pode ser expresso usando um modelo de dados, funcional ou de objetos Função: Adicionar nós. Descrição: Adiciona um nó em um desenho existente. O usuário seleciona o tipo de nó e seu posicionamento. Quando adicionado ao desenho, o nó se torna a seleção atual. O usuário escolhe a posição do nó movimentando o cursor para a área em que o nó será adicionado. Entradas: Tipo de nó, Posição do nó, Identificador do desenho. Origem: Tipo de nó e Posição do nó são entradas fornecidas pelo usuário; Identificador de desenho se origina na base de dados. Saídas: Identificador do desenho. Destino: O banco de dados do desenho. O desenho é designado para a base de dados, no término da operação. Requer: Gráfico do desenho associado ao identificador de desenho de entrada. Pré-condição: O desenho é aberto e exibido na tabela do usuário. Pós-condição: O desenho é imutável, a não ser pela adição de um nó do tipo especificado em dada posição Efeitos colaterais: Nenhum. Especificação de Requisitos de Software A ERS é descrita no Padrão IEEE 830-1993 e é descrita na seqüência: – Índice Analítico; – Introdução: Propósito do documento de requisito; Escopo; Definições, acrônimos, abreviações; Referências; Visão Geral do restante do documento; Na introdução: – Comentários sobre o objetivo da ERS; – Objetivo, público-alvo da ERS; – Especificar produto, função, benefícios, objetivos; – Termos necessários para interpretar a ERS; – Documentos mencionados na ERS; – O que a ERS contém, sua organização; Descrição Geral: – Perspectiva do produto; – Funções do produto; – Características do usuário; – Restrições; – Suposições e dependências; Na Descrição geral: – – – – – – – Descrever os fatores que afetam o produto; Contexto (produtos relacionados) do produto; Funções principais que o software desempenha; Usuários-alvo do produto; Itens que limitam as opções de desenvolvimento; Alterações que afetam os requisitos; Itens adiados até versões futuras do software; Requisitos Específicos: – Requisitos de interface; – Requisitos funcionais; – Requisitos de desempenho; – Requisitos do banco de dados lógico; – Restrições de projeto; – Atributos do sistema de software; – Organização dos requisitos específicos; – Características de qualidade Nos Requisitos Específicos: Forneça detalhes suficientes para permitir que os projetistas projetem um sistema que satisfaça os requisitos; – Usuários, hardware, software, comunicação; – Identificar ações de processamento básicas do – – – – – sistema; Requisitos estáticos, requisitos numéricos; Especificar qualquer informação incluída no banco de dados; Restrições impostas por padrões; Atributos do software que servem como requisitos; Como organizar os requisitos específicos; Informações de Suporte: – Índice analítico e remissivo; – Apêndices; Nas Informações de Suporte – Fornecer instruções detalhadas para os leitores da ERS; – Identificar as localizações de itens da ERS; – Fornecer amostras de formatos de E/S, descrição de estudos de análise de custos, resultados de pesquisas dos usuários, dados de suporte ou background para ajudar os leitores a compreenderem a ERS, instruções de empacotamento do código para atender à segurança, exportação, carta inicial e outros requisitos;