ENGENHARIA DE REQUISITOS Isac Aguiar isacaguiar.com.br [email protected] Objetivo • Apresentar a importância da Engenharia de Requisitos no processo de projeto de software • Apresentar as atividades da Análise de Requisitos • Apresentar os tipos de requisitos e suas particularidades • Apresentar as técnicas da Engenharia de Requisitos • Permitir uma melhor compreensão dos requisitos, por ser essencial no processo de desenvolvimento de software Contexto • Influência dos requisitos no custo do projeto • Menor impacto negativo no projeto com a descoberta prévia do projeto • Má identificação de requisitos, tornando-os a correção mais custosa • Detecção de erros nos requisitos antes do desenvolvimento Custo de Correção • Aumenta com o tempo de descoberta do erro • Custo de reparo • Custo de perda de oportunidades • Custo de perda de clientes • O problema é considerado 200% maior se corrigido após a implantação • Os mais caros são cometidos na Análise de Requisitos e descobertos pelo usuário Requisitos de Software • Expressam as necessidades dos clientes e condicionam a qualidade do software. • Responsável por coletar dados indispensáveis, necessários, e exigências as quais o usuário necessite para solucionar um problema e alcance os seus objetivos • Determinam as expectativas de um usuário para determinado produto Análise de Requisitos • Processo que engloba o estudo das necessidades do usuário para encontrar uma definição adequada e completa do sistema ou requisito de software • É vital para o desenvolvimento de um software • Determina o sucesso ou fracasso do projeto • Compostos por requisitos colhidos de forma quantitativa, detalhada e relevantes para o projeto • Servem de referência para validação do produto • Estabelecem acordos entre o cliente e fornecedor, sobre o comportamento do software • Podem reduzir o custo de desenvolvimento • Podem implicar na necessidade de retrabalho, caso sejam mal definidos Atividades da Analise de Requisitos 1. Reconhecimento do Problema 2. Avaliação e síntese da solução 3. Modelagem 4. Especificação 5. Revisão 1 2 3 4 5 Reconhecimento do Problema • Especificação do sistema, planejamento, contato do analista com o cliente • Entendimento da visão do cliente com relação ao problema a ser solucionado Avaliação do Problema e Síntese da Solução • Realizada com base no entendimento do problema • Identifica as informações necessárias para o usuário • Identifica as informações necessárias para o sistema • Escolha da melhor solução dentro das soluções propostas Modelagem • Suporte a síntese da solução • Apresenta ferramentas que facilitam o entendimento do sistema, como as funcionalidades, informações e comportamentos do sistema Especificação dos Requisitos • Funções • Interfaces • Desempenho • Contexto e as restrições do sistema Revisão • Realizada em conjunto com cliente e analista • Avaliação do objetivo do projeto, de maneira a evitar redundâncias, inconsistências e omissões do sistema, obtendo uma melhor compreensão Tipos de Requisitos • Requisitos do projeto • Condições que satisfazem o negócio, gerenciamento e entrega do produto • Requisitos do produto • Condições que satisfaçam as necessidades técnicas, de segurança e de desempenho • Requisitos Funcionais • Estabelecem como o sistema irá se comportar, e o que devem fazer, as funcionalidades e serviços do sistema • Ex.: MER, Modelos de Casos de Uso, Fluxogramas • Requisitos não-funcionais • Definem as propriedades do sistema e suas restrições. • Ex.: Confiabilidade do sistema, tempo de resposta, espaço em disco Exemplos Tipos de Requisitos • O sistema deve prover um formulário de entrada para a entrada dos resultados dos testes clínicos de um paciente. (RF) • O sistema deve emitir um recibo para o cliente, com o tempo máximo de 8 segundos após a transação. (RF, RNF de performance). Técnicas de Análise de Requisitos • Entrevistas • Investigação direta com os clientes e usuários, com finalidade de coletar suas expectativas • Brainstorming (Tempestade de ideias) • Coleta de ideias sem descartar ou desprezar qualquer tipo de ideia que apareça durante o processo, seleciona a melhor ideia ou uma combinação destas • Questionários e pesquisas • Permitindo a descrição por parte do usuário de suas atividades e possíveis problemas, levando em consideração as suas opiniões • Observação • O analista observa as atividades do usuário, como utilização do sistema e comportamento diante de situação problemática • Outras técnicas • Workshops, mapas mentais, protótipos e etc. Engenharia de Requisitos “Estabelece o processo de definição de requisitos como um processo no qual o que deve ser feito deve ser elicitado, modelado e analisado. Este processo deve lidar com diferentes pontos de vista, e usar uma combinação de métodos, ferramentas e pessoal. O produto desse processo é um modelo, do qual um documento chamado requisitos é produzido. Este processo é perene e acontece num contexto previamente definido a que chamamos de Universo de Informações.” Júlio Cesar Leite Engenharia de Requisitos • Elicitação • Entender o problema através das técnicas de análise de requisitos • Modelagem • Representação do entendimento do problema • Ex: DFD, DER, Casos de Uso e etc • Análise • Validar e Verificar a informação colhida Processo Elicitação Modelagem Análise V & V Elicitação Mundo real Mundo Computacional GAP SEMÂNTICO Problemas Elicitação de Requisitos Soluções GAP SEMÂNTICO: diferença existente entre duas descrições de objetos feitas por diferentes representações linguísticas. Elicitação • Identificação das fontes de informação • Stakeholders (partes interessadas no projeto) • Documentos • Livros • Sistemas de software • Coleta de fatos • Leitura de documentos • Observação • Entrevistas • Reuniões • Questionários • Antropologia • Participação ativa dos atores • Bases de Requisitos não funcionais • Engenharia Reversa • Reutilização Informações importantes • Fonte de Requisitos • Quais são as partes interessadas no produto/serviço • Quais são as principais necessidades do usuário • Definimos as fronteiras do sistema • Quais são as premissas e restrições do sistema ou do ambiente Modelagem Mundo real Mundo Computacional GAP SEMÂNTICO Problemas GAP SEMÂNTICO: diferença existente entre duas descrições de objetos feitas por diferentes representações linguísticas. Soluções Modelagem dos Requisitos Importância dos modelos • Representar • Organizar • Armazenar • Comunicar Abstração • Nomeia objetos compostos para lidar como se fossem entidades únicas • Utilizada na racionalização de software • Ignora detalhes incovenientes • Possibilita o mesmo tratamento a entidades diferentes • Simplifica a análise • Não resolve o problema, mais simplifica Decomposição • • • • Dividir o problemas em subproblemas Possuir mesmo níveis de detalhes para subproblemas Permitir a solução independente de subproblemas Resolver o problema a partir da combinação dos subproblemas • Vantagens: • Pessoas diferentes podem trabalhar nos subproblemas • Paralelização das soluções • Simplificação da manutenção • Desvantagens • As soluções dos subproblemas podem não combinar de modo a resolver o problema original • Problemas de difícil compreensão são difíceis de decompor Análise Mundo real Mundo Computacional GAP SEMÂNTICO Problemas Soluções Análise dos Requisitos Análise V & V Verificação • Estamos construindo o produto de maneira certa? Validação • Estamos construindo o produto certo? • Correlacionados à • Correlacionados aos produtos intenção dos clientes Resumindo • A análise de requisitos compreende o processo utilizado para determinar as necessidades e interesses dos steakholders para atingir seus objetivos. Dúvidas Referências Bibliografias • CRAIG, Larman. Utilizando UML e Padrões • SOMMERVILLE, I. Engenharia de Software. São Paulo: • • • • Addison Wesley, 2003. Capitulo 3. ISBN: 85-88639-07-6. PRESSMAN, R.S. Engenharia de Software. São Paulo: Makron Books, 1995. Capitulo 2. ISBN: 85-346-0237-9. FOWLER, Martin. UML Essencial. 3 ed. Porto Alegre: Bookman, 2005. Leite, J.C.S.; "Engenharia de Requisitos". Notas de aula, DI/PUC-Rio. Pádua F.,W. P. "Engenharia de Software: Fundamentos, Métodos e Padrões".