Fundamentos de Engenharia de Software Requisitos de Software Fases do Desenvolvimento de SW Viabilidade Requisitos Projeto Cod. Módulos Integração Entrega Manutenção Requisitos de Software A Software Requirements Specification (SRS) is a complete description of the behavior of the system to be developed. It includes a set of use cases that describe all of the interactions that the users will have with the software. Use cases are also known as functional requirements. In addition to use cases, the SRS also contains nonfunctional (or supplementary) requirements. Non-functional requirements are requirements which impose constraints on the design or implementation (such as performance engineering requirements, quality standards, or design constraints). (Wikipedia) Tipos de requisitos Funcionais tratamento da informação Não funcionais outras características Exemplos de categorias de requisitos (IEEE-830) Requisitos funcionais Tecnologia utilizada Processo de desenvolvimento Desempenho Operação Manutenção e portabilidade Backup e Recuperação Legais Treinamento Qualidades de um bom MR escalável legível funciona para modelos grandes linguagem do usuário robusto fácil de ser mantido Componentes do MR Modelo de Casos de Uso Maquete Modelo de Classes do Domínio Maquete Modelo de Classes de Domínio I- Requisitos de SW Característica do SW que: o usuário necessita para resolver um problema ou alcançar um objetivo satisfaz contrato, padrão, especificação ou outra formalidade Níveis de Requisitos Negócio: Mais abstratos, atendem aos interesses das partes interessadas no negócio Produto: Mais detalhados, atendem aos interesses dos desenvolvedores do SI Requisitos do Negócio Definem: escopo e os objetivos do projeto sua viabilidade financeira estimativa de seus benefícios Objetivo: ajudar o processo decisório Formato: Business Case (BC) Conteúdo de um BC 1. 2. 3. 4. 5. 6. 7. Nome da intervenção Descrever o problema ou oportunidade Porque é um problema ou oportunidade Qual a natureza da intervenção Qual o resultado da intervenção Quem serão os gestores/usuários Estimativa do prazo ( 1 página) Requisitos do Produto Definidos nos estágios iniciais do desenvolvimento de um Sistema de Informação Descrevem: Comportamentos do sistema Atributos Exemplos R1-O SI deve possuir comandos de correção de ortografia R2-O SI deve garantir o sigilo de todas informações pessoais R3-O Sensor de porta deve ser amostrado 10 vezes por segundo R4-O SI deve ser desenvolvido em .Net II – Requisitos e CMMI Capability Maturity Model Integration (CMMI) Recomendações de práticas específicas e genéricas Organizadas por Área de Processo (AP) Inclui práticas de planejamento, engenharia e gerência Organizado em níveis Objetivos e práticas Objetivos Genérico: características que devem estar presentes para satisfazer a institucionalização dos processo Específicos: características que devem estar presentes para satisfazer uma AP Práticas Genéricas:práticas que contribuem para a institucionalização dos processos Específicas: atividades que visam atingir um objetivo específico Requirements Management RM- Requirements Management Objetivos: gerenciar todos os requisitos recebidos ou gerados pelo projeto Identificar inconsistências entre os requisitos e os planos e produtos do projeto Requirements Development RD – Requirements Development Objetivo: produzir e verificar os requisitos de: clientes (SG-1) produtos e componentes (SG-2) analisar e validar requisitos (SG-3) RD - SG 1: Desenvolver Requisitos do Negócio 1.1-Elicitar necessidades das partes interessadas (identificar de forma pró-ativa requisitos necessidades, restrições e interfaces para todas fases do ciclo de vida) 1.2-Desenvolver os requisitos dos clientes (consolidar e resolver conflitos entre os desejos, expectativas das partes interessadas; colocar num documento único com os requisitos dos clientes) RD – SG 2: Desenvolver Requisitos do Produto 2.1-Estabelecer requisitos de produtos e componente 2.2-Alocar os requisitos ao produto 2.3-Identificar requisitos de interface do produto com sistemas externos III - Padrão IEEE-830 Documento com diretrizes para especificação de requisitos de software Composto de 3 partes Introdução Descrição geral Requisitos específicos Padrão IEEE-830 (2) Introdução Propósito Escopo Definições Referências Visão Geral Padrão IEEE-830 (3) Descrição geral Perspectiva do produto Funções do produto Característica do usuário Restrições Condições e dependências Padrão IEEE-830 (4) Requisitos específicos Interface externa Funções Desempenho Projeto IV - Qualidades dos requisitos Correto Sem ambigüidade Completo Consistente Priorizado Verificável Modificável Rastreável Correto Qualquer um dos requisitos representa algo que deve estar presente no sistema Os requisitos reais devem coincidir com os requisitos identificados para o sistema. Sem ambigüidade Tem uma única interpretação por todos os interessados Interessados devem incluir tanto responsáveis pelo negócio como os desenvolvedores Completo Reflete todas as necessidades de todas as partes interessadas. Necessidades incluem requisitos funcionais e nãofuncionais. Consistente Livre de assertivas contraditórias. Sentenças contraditórias: A deve ser verdadeira. A deve ser falsa. Priorizado Contém uma relação de ordem de importância entre os requisitos. Ordem de importância dos requisitos auxilia na definição da ordem de implementação. Verificável Existe uma forma efetiva de saber se a implementação cumpre o requisito. O requisito deve fornecer métricas e critérios que auxiliem a avaliação do requisito. Modificável Alterações podem ser feitas de maneira simples Também chamado de robustez do modelo Rastreável Requisitos podem ser associados aos artefatos produzidos pelo processo de desenvolvimento de software Processo de Requisitos Elicitar Modelar Verificar e validar V-Elicitação de requisitos Elicitar requisitos: “extrair” os requisitos das partes interessadas É um processo construtivo: os requisitos não “existem” antes da atividade Elicitar requisitos Elicitar requisitos é um problema inerentemente complexo devido a psicologia de expressar desejos incertos numa linguagem ambígua. Computerworld relata que 95% de todos os projetos de software não cumprem prazo e custo; 93% dos problemas advém de falhas de comunicação. Standish Group International relata que a falta de envolvimento das partes interessadas é o principal fator da falha dos projetos de SI. Formas de elicitação Entrevistas Questionários Prototipação Estudo de documentos JAD Exemplos de Sessão de Requisitos 1. 2. 3. 4. 5. Definir as maneira com que os usuários irão interagir com o novo sistema (Casos de Uso). Coletar amostras das entradas e saídas desejadas pelos usuários. Primeiramente mantenha-se nos processos de negócio para depois detalhar os dados necessários. Priorizar os Casos de Uso. Por exemplo, utilizando a técnica Delphi. Validar e rever os cenários dos Casos de Uso. Especificar, usando técnicas de prototipagem, as interfaces (telas e relatórios) do sistema. Organizar os Casos de Uso, restrições, premissas e outros requisitos num Documento de Especificação de Requisitos de Software (DERS). Processo de Requisitos Elicitar Modelar Verificar e validar V-Requisitos do Sistema Funcionais Comportamento do Sistema Como o sistema age e reage, ou seja, a sua atividade externamente observável e que pode ser validada. Descrito na forma de Casos de Uso de Sistema (“system use cases”). Não-Funcionais Segurança Desempenho Tecnologia Caso de uso Uma seqüência de passos Executado por um (ou mais) ator(es) Durante a interação com o sistema Atende um objetivo (goal) Conteúdo padrão de um Caso de Uso Nome do caso Atores Pré e pós condições Fluxo normal Fluxos alternativos Fluxos de Exceção Nome do caso Escolher nomes que expressem o processo Nomes no infinitivo emprestar devolver manter Atores Ator Atores primários quem interage com o sistema humano ou máquina para quem o sistema foi desenvolvido Atores secundários suportam a operação Exemplo de atores Exemplo de Diagrama de Caso de Uso Pré-condição Aquilo que deve ser verdadeiro antes do caso ser iniciado Exemplos: Ao alugar um carro existirem veículos na filial Ao inscrever em disciplina ser aluno matriculado Pós-condição Aquilo que se espera que seja o estado do mundo ao fim do caso Ao descontar cheque saldo da conta corrente atualizada Ao inscrever em disciplina aluno esteja na lista da turma Fluxos de casos de uso descrevem caminhos que podem ser seguidos durante o uso do do sistema. A) Venda normal B) Produto não está disponível C) Cancelamento de Item D) Cancelamento da Venda Fluxo normal Fluxo Fluxo: seqüência de passos Cada passo tem um número Cada passo descreve: envio de informação do ator para o sistema resultado de um processamento pelo sistema atualização realizada na memória interna informação enviada pelo sistema ao ator Elementos de um fluxo Como e quando o caso de uso é iniciado O caso de uso se inicia quando …… acontece. A sequência de interações entre ator e sistema (Ação do ator x Resposta interna ou externa) Informações/eventos que são trocados entre um ator e o sistema Cliente informa o número da agência e da conta corrente. (Ação do ator) Sistema apresenta o saldo atual da conta. (Resposta externa) Armazenamento/Atualização de informações no sistema Sistema cria um novo pedido contendo o nome do criador, data de criação e coloca o pedido na situação ‘Pendente’. (Resposta interna) Indicação de validações realizadas pelo sistema O Sistema verifica se o sócio pode fazer empréstimos Como e quando o caso de uso termina Quando ….. acontece, o caso de uso é encerrado Exemplo de Fluxo Normal 1. Cliente informa período de locação; 2. Executar Caso de Uso "Verificar Disponibilidade"; 3. Cliente seleciona o modelo desejado; 4. Executar Caso de Uso "Identificar Cliente"; 5. Cliente seleciona forma de pagamento; 6. Executa Caso de Uso "Verificar Crédito"; 7. Cliente informa dados do Motorista; 8. Sistema produz contrato; 9. Cliente assina contrato; 10. Cliente recebe chave do carro. Dicas de escrita (1) Voz ativa e com o tempo presente. Cliente informa produto desejado e quantidade Sistema inclui item no carrinho de compras do cliente. Indicar quem realiza a ação. Cliente informa produto desejado e quantidade Uso consistente de termos (Rapdis). Evitar adjetivos e advérbios. Cuidado com pronomes (seu, sua, dele, ...) Estilo consistente e padronizado de descrição. Independente de tecnologia Dicas de escrita (2) Explicitar informações enviadas, recebidas e armazenadas: Evite “sistema apresenta dados do produto”. Evitar o detalhamento de dados e regras de negócio nos fluxos. Use documentos anexos devidamente referenciados. Fluxos Alternativos (1) Conjunto de caminhos que podem ser seguidos durante o uso do sistema. A) Venda normal B) Cancelamento da venda C) Cancelamento do item Curso normal Fluxos Alternativos (2) Cada fluxo alternativo é descrito na seção fluxos alternativos do caso de uso. Defina o título do fluxo alternativo com uma frase que denote o sub-objetivo que o usuário deseja com esse fluxo. Defina onde esse fluxo pode acontecer (em relação ao fluxo normal). Detalhe as interações entre o ator e o sistema, seguindo as mesmas diretrizes do detalhamento do fluxo normal. Defina o que ocorre ao final da execução do fluxo alternativo. Fluxos Alternativos (3) Remover cópia do aluguel Durante a Identificação das Cópias: Atendente seleciona uma ou mais cópias, e solicita a retirada das cópias selecionadas do aluguel. Sistema remove as cópias selecionadas do aluguel, atualizando o valor total do aluguel. Caso de uso volta ao fluxo normal com o atendente podendo informar novas cópias. Cancelar o aluguel: Enquanto o Pagamento não foi realizado Atendente solicita o cancelamento do aluguel Sistema cancela o aluguel, e o caso de uso se encerra. Fluxos de Exceção (1) Cada passo de um caso de uso tem um objetivo Quando o objetivo não pode ser alcançado diz-se que o caso falha Toda falha deve ser recuperada A recuperação envolve ações alternativas Fluxos de Exceção (2) Falhas são anotadas fora do roteiro Notação: <passo><letra> : <evento> <ação> <passo> passo do caso <letra> seqüencial para as exceções <evento> causa da exceção <ação> atividade de recuperação Regras de Negócio (RN) Regras Foco do detalhamento dos casos de uso está nas interações. Existem regras que regem estas interações. As regras são descritas em uma seção à parte. As regras são capturadas na modelagem de negócio ou no levantamento de requisitos do sistema. Ex: R2: Cálculo do Preço de Aluguel de uma Cópia: lançamento (…), normal (…), promoção (…) Definições de RN Sentença que define ou restringe algum aspecto do negócio. Sua intenção é afirmar a estrutura do negócio ou controlar ou influenciar o comportamento do negócio. (BRG, 1995) Diretiva que tenciona influenciar ou conduzir o comportamento do negócio. Tais diretivas existem em suporte a política do negócio, a qual é formulada em resposta aos riscos, ameaças ou oportunidades (BRG, 1998) Sentença explícita de uma restrição que existe na ontologia do negócio (Appleton D., 1984) Condições que governam os eventos do negócio de tal forma que eles ocorram numa forma aceitável para o negócio (von Halle, 2002) Políticas recomendadas e obrigatórias que governam a interação entre empregados, clientes, fornecedores e sistemas automatizados (von Halle, 2002) As regras são as decisões ... (von Halle) ...é uma sentença compacta a respeito de um aspecto do negócio. É uma restrição, no sentido de que ela estabelece o que tem de ser o caso ou o que tem de não ser o caso (Morgan, 2002) Processo de Requisitos Elicitar Modelar Verificar e validar VI-Verificação / Validação Verificação / Validação Validação: Estamos construindo o produto correto? Verificação: Estamos construindo o produto de forma correta? Técnicas de validação Storyboard: Passivo: esboços de telas, relatórios (em papel ou eletrônico), onde o usuário narra o cenário. Ativo: animação (apresentação com slides ou outro software), onde o software narra o cenário. Interativo: permite a simulação da forma mais realista possível, onde o usuário participa da execução do cenário. Protótipo: Mostra as informações essenciais e a navegação Descartável Sem preocupação com implementação Check List Todas as necessidades estão sendo cobertas pelos macro-requisitos? Todo macro-requisito atende pelo menos uma necessidade? Todos os atores foram identificados e corretamente definidos na perspectiva do sistema? Todo ator está associado a pelo menos um caso de uso? Todos os casos de uso foram capturados? Existe uma definição sucinta para cada caso de uso? Todo caso de uso está associado a pelo menos um macro-requisito? Todo macro-requisito está associado a pelo menos um caso de uso? Todas as entradas e saídas estão especificadas? O comportamento do sistema em todas as situações eventuais ou de exceção está especificado? Todas as regras envolvidas estão especificadas? Todas as transformações de dados estão especificadas? Todos os dados e suas regras de validação estão especificados? Os critérios de especificação de casos de uso estão sendo corretamente seguidos?