Aula 8 Especificação de Requisitos Alessandro Garcia Abril 2017 Recados Enunciado do trabalho prático (T2) já está disponível no sítio da disciplina: http://www.inf.puc-rio.br/~inf1301/ Enviem mensagem com a lista de membros da equipe afgarcia@inf.puc-rio.br Alessandro Garcia 2 /35 1
Especificação Objetivos dessa aula Apresentar a importância e o que são especificações de requisitos, bem como conceitos relacionados Referência básica: Capítulo 10 Seção 8.3 Capítulo 9.4 Apêndice 2 Slides adaptados de: Staa, A.v. Notas de Aula em Programação Modular; 2008. 3 /36 Sumário Retrabalho inútil Por que especificar? Especificação de requisitos requisitos funcionais requisitos não-funcionais Como identificar requisitos? 4 /36 2
Visão do Desenvolvedor Mágico" Requisitos Descrição abstrata do problema Aqui o Milagre acontece Código Muitos membros envolvidos não estão interessados em tais decisões de baixo nível 5 /36 Como eliminar causas de retrabalho inútil? O que fazer para reduzir ou evitar de vez esse risco? produzir uma boa especificação do que se deseja que seja feito modelar o problema a resolver especificação de requisitos por exemplo: saber/descobrir antes quais são as funcionalidades básicas de um jogo de Xadrez tornar o projeto e implementação do jogo mais manutenível e reutilizável possível produzir uma arquitetura organização da solução adequada ao problema a resolver modelar a solução modelagem da arquitetura e modelagem física Set 2009 6 /36 3
Uma Visão Profissional Descrição explícita de requisitos para evitar retrabalho inútil Requisitos Documentação das decisões de projeto arquitetural Boas práticas de projeto modular Decisões relacionadas as estratégias organizacionais e do que implementar primeiro Arquitetura Código 7 /36 O que é uma especificação? Especificação é um documento ou fragmento que: Determina o que deve ser feito, sem dizer como fazê-lo Especificações de um artefato são veículos de comunicação entre as diversas pessoas interessadas (stakeholders) neste artefato desenvolvedores do artefato e mantenedores do artefato desenvolvedores cliente que pretendem localizar e utilizar artefatos servidores já existentes (reuso) usuários que utilizarão um programa contendo o artefato os gerentes de desenvolvimento e manutenção Nem sempre sabemos exatamente o que desejamos precisamos ver para saber se está bom ou não dificuldade - exemplo: abrangência da solução Set 2009 8 /36 4
Por que especificar? Precisa-se saber, com precisão, o que o sistema deve implementar... Requisitos são funções, condições, atributos, propriedades ou características a serem satisfeitas pelo software Requisitos funcionais e não-funcionais antes de começar a escrever código precisa-se saber o que este código deve fazer requisito funcional: mapeado para função(ões) do programa existindo condicionantes ou restrições, estas devem ser explicitadas antes requisito não-funcional usualmente chamado de requisito de qualidade» manutenibilidade» reusabilidade» confiabilidade: robustez, corretude, etc..» desempenho» segurança»... 9 /36 Requisitos funcionais ou não-funcionais?? Outros exemplos: o sistema deve gerar um relatório com a descrição dos empréstimos diários o tempo de resposta deverá ser menor do que 10 ms o módulo deverá ser portátil melhor é enumerar os sistemas operacionais explicitamente deve ser possível fazer uma consulta as reclamações dos usuários nos últimos 5 dias o sistema deve ser robusto quanto os dados obtidos através de janelas de diálogos, i.e. devem ser validados 10 /36 5
Jogo de Damas Requisitos Funcionais? 11 /36 Jogo de Damas Requisitos Funcionais? Exemplos Jogo: o programa deve possibilitar o jogo entre duas pessoas, num tabuleiro de 8 x 8 casas alternadamente claras e escuras cada jogador deve possuir 12 peças (pretas ou brancas) e ter como objetivo capturar ("comer") as peças do adversário ganha aquele que "comer" todas ou a maior quantidade de peças do adversário o programa deve permitir que cada jogador movimente apenas uma peça por vez Peças: o programa deve permitir somente dois tipos de peças, a peça comum, que são as peças que os jogadores possuem no início do jogo e as damas se uma peça comum do jogador terminar uma rodada na última fileira de casas do lado oposto do tabuleiro, esta é substituída por uma dama etc... 12 /36 6
Jogo de Damas Requisitos Não-Funcionais? 13 /36 Jogo de Damas Requisitos Não-Funcionais? Exemplos Robustez: todos os dados de entradas (ex. movimentos) serão validados pelo jogo caso alguma entrada não seja válida, uma mensagem será exibida ao jogador informando dado inválido; ele terá nova oportunidade de digitar Corretude: todos os módulos devem ser testados individualmente, onde cada função dos módulos é testada em diferentes circunstâncias Reuso: restrição: deve-se reusar o Arcabouço de teste automatizado de forma a acelerar o processo de reutilização de projeto e implementação (e teste), deve-se maximizar a reutilização de módulos restrição: em particular, deve-se reusar o módulo LISTA do Arcabouço Manutenibilidade: todas funções e módulos deverão ser desenvolvidos utilizando padrões de documentação, garantindo assim que o programa seja de fácil manutenção restrição: usar catálogos do livro "Programação Modular (Staa, Arndt von) 14 /36 7
Como requisitos (F/NFs) são descobertos? Diretamente em entrevistas ou discussões com o cliente do sistema Mas eles pouco sabe o que querem mais tarde: elaboração de protótipos Busca de documentação disponível sobre sistemas semelhantes Alguns são requeridos pelo próprio gerente de projetos ou por membros do time p.e. reusabilidade de certos módulos, tais como definir módulos que encapsulem estruturas de dados genéricas p.e. manutenibilidade: evitar gastos com interfaces de módulos má projetadas, levando a instabilidades futuras no software Produtos novos de software: análise de mercado identificar necessidades de uma gama de potenciais clientes Ex.: algum tempo atrás... jogos em dispositivos móveis identificar características e deficiências de produtos dos competidores Ex.: inclusão de sons em jogos de dispositivos móveis trends futuros: novas tecnologias, p.e. aumento de capacidade de memória em dispositivos móveis Set 2009 15 /36 Como descobrir requisitos? Um exemplo simplório Desenvolver um programa que computa raiz quadrada dá para começar sem nenhuma informação a mais? Veja algumas perguntas que podem surgir raiz quadrada de que? inteiros, reais, complexos? qual é a precisão requerida? float, double, múltipla? quantos algarismos significativos? existe alguma exigência de desempenho? tempo de resposta versus precisão deve-se verificar se o argumento fornecido é válido? x >= 0.? como responder se não for válido? condição de retorno ou cancelamento? 16 /36 8
Descobrir novos requisitos Forma de se descobrir novos requisitos identifique as abstrações principais quais são as propriedades ou regras associadas com tais abstrações elabore e responda perguntas do tipo: Qual(is)? Onde? Quando? existem restrições e hipóteses? Alessandro Garcia 17 /35 Jogo de Damas Requisitos Funcionais? Exemplos Jogo: (quais são as regras?) como e onde é praticado o jogo? é praticado ente duas pessoas, num tabuleiro de 8 x 8 casas alternadamente claras e escuras qual é a dinâmica do jogo? cada jogador possui 12 peças (pretas ou brancas) e tem como objetivo capturar ("comer") as peças do adversário quem ganha? ganha aquele que "comer" todas ou a maior quantidade de peças do adversário quando pode ser feito o movimento de peças? cada jogador movimenta uma peça por vez Peças: (quais são as regras?) existem dois tipos de peças, a peça comum, que são as peças que os jogadores possuem no início do jogo e as damas se uma peça comum do jogador terminar uma rodada na última fileira de casas do lado oposto do tabuleiro, esta é substituída por uma dama etc... 18 /36 9
Trabalho T2 Explicação do enunciado Para a próxima aula: se familiarizem com o programa FreeCell comecem a elicitar os requisitos do programa exercício prático na próxima aula Alessandro Garcia 19 /35 Exercício Faça a especificação de requisitos com base no que foi apresentado hoje: não somente requisitos funcionais mas também: não-funcionais, hipóteses e restrições A especificação deve ser feita com seu grupo do trabalho Lembrete Regras básicas do jogo incluem: mão de onze, mão de ferro, esconder carta, situações de empate Alessandro Garcia 20 /35 10
Dúvidas - Trabalho Passos 1) Elicite os requisitos Quais as funcionalidades do programa do jogo FreeCell? Os requisitos serão importantes para que vocês descubram: Módulos, interfaces e dependências Quais outras características (estrutura/funções) dos módulos Lista? 21 /28 Não esquecer... Preencher tabela de atividades ao longo do processo. NÃO DEIXE PARA ÚLTIMA HORA, POIS VOCÊ NÃO SE LEMBRARÁ DO QUE FEZ TAL DIA, TAL HORA. Com relatórios similares a esse você aprende a planejar o seu trabalho. O relatório é INDIVIDUAL Ferramentas como gmake e batches de apoio deve ser utilizados 22 / 30 LES/DI/PU C-Rio 11
Dicas para o Trabalho Não esqueça de rever cuidadosamente: critérios de avaliação procedimentos para entrega do trabalho Certifique-se que seu trabalho atende os seguintes pontos: estruturação: contém tanto o fonte dos módulos de implementação quanto módulos definição (interface) siga princípios de modularidade: interfaces simples e documentadas,... obediência a padrões de programação não esqueçam de produzir arquivos LEIAME.TXT e RELATOR.TXT 23 / 30 LES/DI/PU C-Rio Aula 8 Especificação de Requisitos Alessandro Garcia Abril 2017 12