35
Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama [email protected] Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio, Vinicius Garcia e Kiev Gama O autor permite o uso e a modificação dos slides para fins didáticos

Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos de Software

Centro de Informática - Universidade Federal de Pernambuco

Kiev Gama

[email protected]

Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio, Vinicius Garcia e Kiev Gama

O autor permite o uso e a modificação dos slides para fins didáticos

Page 2: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Engenharia de Requisitos

• Estabelece os serviços que o cliente requer de um sistema e as restrições sob as quais tal sistema operará e será desenvolvido.

– Tais serviços e restrições são chamados de requisitos

2 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 3: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

O que é um requisito?

• Pode ser uma descrição abstrata de alto nível de um serviço, uma restrição de sistema ou até uma especificação matemática, entre outras coisas

• O problema cujo desenvolvimento do sistema deve resolver

– O sistema tem que ser construído de modo a satisfazer todos os seus requisitos

3 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 4: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Abstração de requisitos (Davis)‏

“Se uma empresa deseja estabelecer um contrato para um projeto de desenvolvimento de software de grande porte, deve definir suas necessidades de forma suficientemente abstrata, para que uma solução não esteja pré-definida. Os requisitos devem ser escritos de tal forma que vários fornecedores possam apresentar propostas para o contrato, oferecendo, talvez, diferentes formas de atender às necessidades organizacionais do cliente. Uma vez que o contrato for aprovado, o fornecedor deve escrever uma definição de sistema para o cliente, em mais detalhes, tal que o cliente compreenda e possa validar o que o software irá fazer. Ambos os documentos podem ser chamados de documento de requisitos do sistema.”

4 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 5: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Tipos de requisitos

• Requisitos de usuário – Declarações de alto nível escritas em linguagem

natural

– Escritos para os clientes.

• Requisitos de sistema – Um documento estruturado estabelecendo

descrições detalhadas das funções, serviços e restrições operacionais do sistema.

– Define o que deve ser implementado e pode até ser parte de um contrato entre o cliente e o desenvolvedor.

5

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 6: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Definições e especificações

6

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 7: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos funcionais e não-funcionais

• Requisitos funcionais

– Serviços que o sistema deve fornecer

– Como o sistema deve reagir a entradas específicas

– Como o sistema deve se comportar em determinadas situações.

• Requisitos não-funcionais ou de qualidade

– Restrições sobre serviços ou funções oferecidos pelo sistema tais como restrições de timing, restrições sobre o processo de desenvolvimento, padrões, etc.

7 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 8: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

O sistema LIBSYS

• Um sistema de biblioteca que fornece uma interface única para uma série de banco de dados de artigos em bibliotecas diferentes.

• Os usuários podem pesquisar, baixar e imprimir estes artigos para estudo pessoal.

8 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 9: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Exemplos de requisitos funcionais

• O usuário deve ser capaz de pesquisar em todo o conjunto inicial de banco de dados ou selecionar um subconjunto a partir dele.

• Para todo pedido deve ser alocado um identificador único (ORDER_ID) que o usuário possa copiar para a área de armazenamento permanente da sua conta.

• O sistema deve fornecer telas apropriadas para o usuário ler os documentos no repositório de documentos.

9

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 10: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Imprecisão de requisitos

• Problemas surgem quando os requisitos não são precisamente definidos.

• Requisitos ambíguos podem ser interpretados de maneiras diferentes pelos desenvolvedores e usuários.

• Considere o termo ‘telas apropriadas’

– Intenção do usuário – tela de propósito especial para cada tipo diferente de documento;

– Interpretação do desenvolvedor – fornece uma tela de texto que mostra o conteúdo do documento.

10

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 11: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos completos e consistentes

• Em princípio, requisitos devem ser completos e consistentes.

• Completude

– Eles devem incluir descrições de todos os recursos requeridos.

• Consistência

– Não deve haver conflitos ou contradições nas descrições dos recursos de sistema.

• Na prática, é impossível produzir um documento de requisitos completo e consistente.

11

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 12: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos não-funcionais

• Definem propriedades e restrições de sistema

• Exemplos incluem confiabilidade, tempo de resposta e requisitos de armazenamento.

• Restrições são capacidade de dispositivos de E/S, representações de sistema, etc.

• Requisitos de processo podem também ser especificados, impondo uma linguagem de programação, IDE ou método de desenvolvimento particular

• Requisitos não-funcionais podem ser mais críticos do que os requisitos funcionais.

12 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 13: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Tipos de requisitos não-funcionais

13

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 14: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Exemplos de requisitos não-funcionais

14

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 15: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Metas e requisitos

• Requisitos não-funcionais podem ser difíceis de definir precisamente – Requisitos imprecisos podem ser difíceis de verificar.

• Meta – Uma intenção geral do usuário, tal como facilidade de

uso.

• Requisito não-funcional verificável – Uma declaração usando alguma medida que pode ser

objetivamente testada.

• Metas são úteis para desenvolvedores quando exprimem as intenções dos usuários do sistema.

15

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 16: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Exemplo

16

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 17: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Medidas de requisitos

17

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 18: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Padrões de Qualidade de Software

• ISO 9126 - Software engineering – Product Quality

• ISO 25000 - SQuaRe (Systems and software Quality Requirements)

• Definem diversos atributos de qualidade (requisitos não funcionais) – Confiabilidade, usabilidade, eficiência, “manutenabilididade”,

etc

• Dá noções de métricas e orientações de alto nível sobre como avaliar tais atributos em um sistema

18 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 19: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Interação de requisitos

• Conflitos entre os diferentes requisitos não-funcionais são comuns em sistemas complexos.

• Sistema de aeronave

– Para minimizar o peso, o número de chips separados no sistema deve ser minimizado.

– Para minimizar o consumo de energia, chips de baixa potência devem ser usados.

• E o desempenho pode ser impactado!

– Contudo, o uso de chips de baixa potência pode significar que mais chips devem ser usados . Qual é o requisito mais crítico?

19 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 20: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos de usuário

• Requisitos funcionais e não-funcionais descritos de modo a ser compreensíveis por usuários que não têm conhecimento técnico detalhado.

• São definidos usando uma linguagem simples, tabelas e diagramas quando estes podem ser compreendidos por todos os usuários.

• Histórias de usuários são similares a requisitos de usuários

20

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 21: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisito de grade de editor

21

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 22: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Diretrizes para escrever requisitos

• Usar um formato padrão para todos os requisitos.

• Usar a linguagem de uma forma consistente.

– ‘deve’ para requisitos obrigatórios, e

– ‘deveria’ para requisitos desejáveis.

• Realçar o texto para identificar as partes principais do requisito.

• Evitar o uso de jargões de computação.

22 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 23: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos de sistema

• Especificações mais detalhadas das funções do sistema, dos serviços e das restrições

• Visam forneer ser uma base para o desenvolvimento do sistema – Em XP: histórias de usuário + tarefas de desenv

– Nosso caso: casos de uso (estilo casual) + especificação detalhada

• Eles podem ser incorporados no contrato de sistema.

• Requisitos de sistema podem ser definidos ou ilustrados usando notações gráficas

23

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 24: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Requisitos e Projeto

• Requisitos devem definir o que o sistema deve fazer e o projeto deve descrever como ele faz isto. – Requisitos => problema – Projeto => solução

• Na prática, requisitos e projeto são inseparáveis – Uma arquitetura de sistema pode ser projetada para

estruturar os requisitos; – O sistema pode ter que interoperar com outros

sistemas que geram novos requisitos; – O uso de uma solução de projeto específica pode ser

um requisito de domínio.

24

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 25: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Problemas com linguagem natural • Falta de clareza

– É difícil atingir uma precisão sem tornar o documento difícil de ler e ambíguo

• Confusão de requisitos – Requisitos funcionais e não-funcionais tendem a

estar misturados.

• Fusão de requisitos – Vários requisitos diferentes podem ser expressos

juntos

• Dificuldade de estruturar a especificação

25

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 26: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Alternativas à especificação em linguagem natural

26

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 27: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Especificações em linguagem estruturada • A liberdade do elaborador de requisitos é

limitada por um template pré-definido para requisitos.

• Todos os requisitos são escritos de maneira padronizada.

• A terminologia usada na descrição pode ser limitada.

• A vantagem é que a maior parte da expressividade da linguagem natural é mantida – Mas o grau de uniformidade é imposto na

especificação.

27

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 28: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Apresentação estruturada

28

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 29: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Especificação baseada em formulário

29

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 30: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Especificação tabular

• Usada para suplementar a linguagem natural.

• Particularmente útil quando você tem de definir uma série de possíveis cursos alternativos de ação.

30 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 31: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Especificação tabular

31

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 32: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

O documento de requisitos

• O documento de requisitos é a declaração oficial do que é requisitado pelos desenvolvedores do sistema.

– Em XP é um pouco diferente

• Deve incluir ambos, uma definição dos requisitos de usuário e uma especificação dos requisitos de sistema.

• NÃO É um documento de projeto.

– Logo que possível, será preciso definir como o sistema deve fazer, ao invés de o que deve ser feito.

32

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 33: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Padrão IEEE 830 – Recommendation Software Requirements Specifications 1. Introdução

– 1.1 Propósito do documento de requisitos

– 1.2 Escopo do produto

– 1.3 Definições, acrônimos e abreviações

– 1.4 Referências

– 1.5 Visão geral do documento de requisitos

2. Descrição Geral – 2.1 Perspectiva do Produto

– 2.2 Funções do Produto

– 2.3 Características do Usuário

– 2.4 Restrições

– 2.5 Suposições e Dependências

3. Requisitos Específicos – 3.1 Interfaces Externas

– 3.2 Requisitos Funcionais

– 3.3 Requisitos de Desempenho

– 3.4 Requisitos Lógicos de Banco de Dados

– 3.5 Restrições de Projeto

– 3.6 Atributos do Sistema de Software

– 3.7 Organização

4. Informações de Apoio – 4.1 Índice

– 4.2 Apêndices

33 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE

Page 34: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Usuários de um documento de requisitos

34

Ian Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Page 35: Requisitos de Software - UFPEIan Sommerville, Engenharia de Software, 8ª. edição. Capítulo 6 [if682] Engenharia de Software e Sistemas - EC - CIn - UFPE Leituras recomendadas •SOMMERVILLE,

Leituras recomendadas

• SOMMERVILLE, I. Engenharia de Software. 9ª. Ed. São Paulo: Pearson Education, 2011

– Capítulo 6

• ISO 9126 e 25000

• IEEE 830

35 [if682] Engenharia de Software e Sistemas - EC -

CIn - UFPE