Engenharia de Software Engenharia de Requisitos Cap. 06 e 07 Sommerville 8 ed. Engenharia de Software • REQUISITOS DE SOFTWARE » Requisitos são descrições de serviços fornecidos pelo sistema e suas restrições operacionais. – REQUISITOS DE USUÁRIOS: • São declarações, em linguagem natural, sobre os serviços esperados pelo sistema e restrições. – REQUISITOS DE SISTEMA: • Definem detalhadamente as funções, serviços e restriçõeoperacionais. Engenharia de Software Exemplo Didático: • REQUISITOS DE USUÁRIO: – O sistema deve manter a temperatura em 20 graus. • REQUISITOS DO SISTEMA: – O sistema deve verificar a temperatura ambiente a cada 1 minuto; – Se a temperatura estiver acima de 20 graus, ligar o ar-condicionado; – Se a temperatura estiver abaixo de 20 graus, ligar o aquecedor; Engenharia de Software • A quem interessa os requisitos: – Requisitos de Usuários: • Clientes, • Arquitetos do sistema. » Ideal para especificar uma necessidade. – Requisitos de Sistemas: • Usuários finais, • Arquitetos de sistemas, • Desenvolvedores de software. » Ideal para especificar uma proposta de sistema. Engenharia de Software • Requisitos de Sistema: – Normalmente podem ser classificados como: Requisitos Funcionais: Declarações de serviços que o sistema pode oferecer, como ele pode reagir e como se comportar. Requisitos Não-Funcionais: São restrições ao serviço ou funções oferecidas ao sistema. Requisitos de domínio: São requisitos provenientes do domínio da aplicação. Engenharia de Software • Requisitos Funcionais: – Descrevem o que o software deve fazer. Ex.: - O usuário pode alterar o valor da temperatura média do sistema. Problemas: 1. Imprecisão; 2. Ambigüidade; 3. Má especificação (não ficou claro). Engenharia de Software • Requisitos Não-Funcionais: – São restrições a funcionalidades do software. Ex.: - O sistema deve registrar a nova temperatura e adequar-se a ela no tempo máximo de 5 minutos. Problemas: 1. Não estão ligadas a características individuais do sistema; 2. Podem ser mais importantes que os requisitos de sistema; 3. Podem anular um sistema; 4. Podem restringir o processo de desenvolvimento de um software; 5. Originam-se de diversas fontes, como: Orçamento, politicas organizacionais, necessidade de interoperabilidade... Engenharia de Software • Requisitos Não-Funcionais: – Podem ser classificados como: • Requisitos de produtos: – Desempenho, confiabilidade, portabilidade, usabilidade. • Requisitos Organizacionais: – Padrões de processos, implementação, prazos. • Requisitos Externos: – Interoperabilidade, legais, éticos. – As vezes é de difícil verificação e vagos(ex. tempo de resposta) – Sempre devem ser escritos de forma quantitativa. • Ex.: Velocidade (tempo de resposta), Tamanho (KB), confiabilidade (média de falhas)... Engenharia de Software • Requisitos de Domínio: – São derivados do domínio da aplicação em vez de necessidades específicas dos usuários do sistema. – Fazem referências a conceitos do domínio. – Podem restringir os requisitos funcionais ou estabelecer cálculos específicos a serem realizados. Ex.: Normas específicas do domínio, cálculos específicos... Engenharia de Software • Requisitos de Usuário: – Descrevem os requisitos funcionais e não funcionais do sistema. São redigidos em linguagem natural em forma de texto ou gráficos. • Falta de clareza • Confusão de requisitos • Fusão de requisitos – Muitas informações (Restrição da liberdade de desenvolvimento) – Ideal que: • Estejam em um formato padrão; • Com uma escrita consistente; • Partes importantes do texto destacadas; Engenharia de Software • Requisitos de Sistema: – São Versões expandidas dos requisitos de usuário. Devem descrever simplesmente o comportamento do sistema e suas restrições operacionais. – Pode ser escritos em linguagem natural : • Pode causar ambigüidade na interpretação; • Muito flexível; • Difícil padronização. – Ideal que sejam escritas em: • • • • Linguagem estruturada; Linguagem de descrição de projetos; Notações gráficas; Especificações matemáticas. Engenharia de Software • Requisitos de Sistema – Linguagens Estruturadas: – É uma forma de escrever requisitos em linguagem natural. – Faz uso de formulário padrão (templates). – Deve descrever: • • • • • • Descrição da função ou entidade padrão; Descrição das entradas e saídas; Indicações de uso de outras partes do sistema; Descrição das ações a serem tomadas; Pré-condição e pós-condição; Descrição de efeitos colaterais, caso existam. Engenharia de Software Exemplo de especificação de requisitos com formulário padrão Monitoramento da temperatura Função: Monitorar a temperatura ambiente a cada 1 minuto Descrição: A temperatura deve estar no valor padrão do sistema Entradas: Valor padrão temperatura( ), Valor da temperatura (). Origem: Saídas: Sistema (Valor padrão temperatura), Sensor temperatura (Valor da temperatura) Ajuste ar-condicionado(), Ajuste aquecedor(). Destino: Ar-condicionado, Aquecedor. Ação: Caso a temperatura esteja abaixo do valor padrão da temperatura, o aquecedor deve ser ligado com para a adequação da temperatura e receberá um valor X para sua potência. Caso a temperatura esteja acima do valor padrão de temperatura o ar-condicionado deve ser ligado, recebendo um valor Y para sua potência. Os valores devem ser re-calculados a cada 1 minuto, para re-calculo dos valores fornecidos, com o prazo máximo de adequação da temperatura em 5 minutos. Engenharia de Software • Especificação de Interfaces: – São usadas para permitirem que novos sistemas se adéquem a outros sistemas. – Devem ser especificadas em apêndices no documento de requisitos. – Podem ser: • Interfaces de Procedimento ( Sistema possui API ´s) • Estruturas de dados (Ex. SGBD) • Estrutura de dados com ordenação de bit´s (Comum em sistemas de tempo real). – Para essas especificações deve ser utilizado modelos formais e diagramas. Engenharia de Software • Documento de Requisitos: – É a declaração oficial dos requisitos que serão implementados pelo sistema. – Deve incluir os requisitos de usuário e os requisitos do sistema (detalhados). – Modelo IEEE/ANSI 830-1998 sugere a seguinte estrutura para o documento: Engenharia de Software 1 Introdução 1.1 Propósito do documento de requisitos; 1.2 Escopo do produto; 1.3 Definições, Acrônimos e Abreviaturas; 1.4 Referências; 1.5 Visão geral do restante do documento. 2 Descrição geral 2.1 Perspectiva do produto; 2.2 Funções do produto; 2.3 Característica dos usuários; 2.4 Restrições gerais; 2.5 Suposições e dependências. 3 Requisitos específicos 4 Apêndice 5 Índice Ver documento exemplo (Volere) ! Engenharia de Software Possíveis usuários do documento de requisitos: Engenharia de Software ENGENHARIA DE REQUISITOS • O Objetivo geral da engenharia de requisitos e criar e manter o documento de requisitos do sistema. – É composto por 4 sub-processos de alto nível: • • • • 1. 2. 3. 4. Estudo de viabilidade; Elicitação e análise; Especificação; Validação. Engenharia de Software Estudo de Viabilidade Relatório de Viabilidade Elicitação e análise de requisitos Modelos de Sistema Especificação de requisitos Requisitos de usuários e sistema Validação de requisitos Engenharia de Software • Estudo de viabilidade: – Estudo preliminar que apontará se vale apena os não o desenvolvimento do sistema. – É necessário o levantamento inicial dos requisitos. – Deve responder as seguintes questões: • 1. O sistema contribuirá para os objetivos da organização? • 2. O sistema poderá ser implementado com tecnologia atual no prazo e custo desejado? • 3. O sistema poderá ser integrado a outros Engenharia de Software • Elicitação e análise dos requisitos: – Os engenheiros de software trabalham com os stakeholders para aprender o domínio da aplicação e os serviços que o sistema deverá fornecer. – O processo de elicitação é dificil por razões como: • Os stakeholders normalmente não sabem o que querem do sistema; • Os requisitos serão expressos naturalmente, com conhecimento necessário implícito; Engenharia de Software • Elicitação – Obtenção dos requisitos: – É o processo que reúne informações sobre o sistema a ser proposto. – Podem ser provenientes de documentos, análise do domínio do problema, stakeholders ou especificações de sistemas similares. – Podem ser provenientes de: • Pontos de Vista (Interação, Indiretos e de domínio) Refere-se a como stakeholders vêem o sistema • Entrevistas (Fechadas ou abertas) • Cenários (Forma de interagir com o sistema) • Casos de Uso (Atores e casos de uso) • Etnográfia (Observações) Engenharia de Software • Validação de Requisitos: – Processo que dedica-se a mostrar que os requisitos realmente definem o sistema que o usuário deseja. – Pode-se validar os requisitos pelas seguintes técnicas: • Revisões de requisitos; – – – – Facilidade de verificação (testável); Facilidade de compreensão; Rastreabilidade ; Adaptabilidade (Mudança). • Prototipação; • Geração de casos de testes. Engenharia de Software • Gerenciamento de Requisitos: – Os requisitos de sistemas grandes estão em constantes mudanças. • Sistemas grandes possuem vários usuários, com diferentes requisitos e prioridades; • Requisitos impostos devido a restrições organizacionais; • Mudanças no ambiente. – Mesmo o sistema pronto, pode haver mudanças nos requisitos. – A mudança deve ser controlada. Engenharia de Software • Gerenciamento de Requisitos: – Requisitos Permanentes • Requisitos estáveis, normalmente são referentes a atividade central da organização e se relacionam diretamente ao domínio da aplicação. – Requisitos Voláteis • Requisitos que poderão mudar durante o processo de desenvolvimento ou após a entrega do sistema. Engenharia de Software • Planejamento de Gerenciamento de Requisitos: – Estabelece o nível de detalhamento necessário para o gerenciamento de requisitos. – Durante o estágio de gerenciamento de requisitos é necessário decidir sobre: • Identificação dos requisitos (únicos) • Processo de gerenciamento de mudanças (viabilidade) • Política de rastreabilidade (relacionamento entre requisitos) Engenharia de Software • Planejamento de Gerenciamento de Requisitos: – A Rastreabilidade é a propriedade de uma especificação de requisitos que reflete a facilidade de encontrar requisitos relacionados. – Podem informar sobre: • Origem (Requisitos aos stakeholders); • Requisitos (Ligam aos requisitos dependentes); • Projeto (ligam a módulos de projetos implementados). Engenharia de Software • Planejamento de Gerenciamento de Requisitos: – As ferramentas case podem: • Armazenar requisitos; • Gerenciar mudanças; • Facilitarem a rastreabilidade. – Exemplos: RequisitePro e DOOR. Engenharia de Software • Planejamento de Gerenciamento de Requisitos: – O gerenciamento de mudanças de requisitos deve ser aplicado a todas as mudanças propostas aos requisitos. – Pode seguir o seguinte fluxo: • Análise do problema e especificação da mudança; • Análise da mudança e estimativa de custos; • Implementação da mudança. Engenharia de Software • FIM... » Dúvidas, comentários ??? Bom dia a Todos!