INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa [email protected] 2 Clayton Maciel Costa – [email protected] Requisitos de Software Requisitos de Software • Introdução: • Introdução (continuação): Os requisitos de um sistema são descrições dos serviços fornecidos pelo sistema e as suas restrições operacionais. Eles refletem, portanto, as necessidades dos clientes e o que eles esperam de um sistema computacional. De acordo com Boehm, a Engenharia de Requisitos é uma “disciplina para desenvolver uma especificação completa, consistente e não ambígua do software; um acordo entre as partes descrevendo o que o produto de software irá fazer.” Segundo IEEE, engenharia de requisitos é: B. Meyer acrescenta que “especificar o documento de requisitos de um software é definir, de uma forma completa e não ambígua, as características externas do software oferecidas aos usuários.” “Processo de aquisição, refinamento e verificação das necessidades do cliente, com o objetivo de obter uma especificação correta e completa dos requisitos” Clayton Maciel Costa – [email protected] 3 Requisitos de Software Requisitos de Software • Níveis de descrição: • Leitores de diferentes tipos de especificação: 1. Requisitos de usuário: são declarações, em uma linguagem natural, de quais serviços são esperados do sistema e as restrições sob as quais ele deve operar. 2. Requisitos de sistema: definem, detalhadamente, as funções, os serviços e as restrições operacionais do sistema de forma precisa. Ele deve definir exatamente o que será implementado. Clayton Maciel Costa – [email protected] 4 Clayton Maciel Costa – [email protected] 5 Requisitos de usuário •Gerente de clientes •Usuários finais de sistemas •Gerentes de fornecedores •Arquitetos de sistemas Requisitos de sistema •Usuários finais de sistemas •Arquitetos de sistemas •Desenvolvedores de software Clayton Maciel Costa – [email protected] 6 1 Requisitos de Software Requisitos de Software • Exemplos de tipos de especificação: • Tipos de requisitos: 1. Requisitos de usuário: 1. Requisitos funcionais: são as declarações de serviços que o sistema deve fornecer, como o sistema deve reagir a entradas específicas e como o sistema deve se comportar em determinadas situações. Em alguns casos também se diz o que o sistema não deve fazer. 2. Requisitos não funcionais: são restrições sobre os serviços ou as funções oferecidas pelo sistema. Aplicam-se geralmente ao sistema como um todo e podem ser requisitos de produto, organizacionais ou externos. LIBSYS deve ter o acervo de livros sempre atualizado. 2. Requisitos de sistema: 1.1 – Ao solicitar um documento ao LIBSYS, deve ser apresentado ao solicitante um formulário que registra os detalhes do usuário e da solicitação feita. 1.2 – Os formulários de solicitação do LIBSYS devem ser armazenados no sistema durante cinco anos, a partir da data de solicitação. ( ... ) 7 Clayton Maciel Costa – [email protected] Requisitos de Software • Qualidade dos requisitos: 1. Requisitos de produto: especificam o comportamento do produto. Exemplos: rapidez com que o sistema deve operar e quanto de memória ele requer, requisitos de confiabilidade que definem a taxa aceitável de falhas, portabilidade e usabilidade. 2. Requisitos organizacionais: são derivados das políticas e procedimentos da organização do cliente e do desenvolvedor. Exemplos: padrões de processos que devem ser usados, requisitos de implementação como a linguagem de programação ou o método de projeto usado. Os requisitos de software devem possuir um alto grau de qualidade, visto que os processos posteriores, do ciclo de desenvolvimento de sistemas, dependem deles. Para alcançar esta qualidade exigida os requisitos devem possuir algumas características: • claros • completos • sem ambiguidades • implementáveis • testáveis Requisitos externos: abrange os requisitos derivados de fatores externos ao sistema e seu processo de desenvolvimento. Exemplos: interoperabilidade, requisitos legais e éticos. 9 Clayton Maciel Costa – [email protected] Requisitos de Software 10 • Estudo de viabilidade: É um estudo breve e focalizado que procura responder a uma série de questões, e a partir destas construir um relatório que recomenda se vale a pena ou não prosseguir com os processos de engenharia de requisitos e de desenvolvimento do sistema. Abaixo temos estas questões: Elicitação e análise de requisitos Especificação de requisitos Relatório de viabilidade Clayton Maciel Costa – [email protected] Requisitos de Software • Processo de engenharia de requisitos: Estudo de viabilidade 8 Requisitos de Software • Tipos de requisitos não funcionais: 3. Clayton Maciel Costa – [email protected] 1. Modelos de sistema Validação de requisitos 2. Requisitos de usuário e de sistemas 3. O sistema contribui para os objetivos gerais da organização? O sistema pode ser implementado com tecnologia atual e dentro das restrições definidas de custo e prazo? O sistema pode ser integrado a outros sistemas já implantados? Documento de requisitos Clayton Maciel Costa – [email protected] 11 Clayton Maciel Costa – [email protected] 12 2 Requisitos de Software Requisitos de Software • Estudo de viabilidade (continuação): • Elicitação e análise de requisitos: Para responder as três questões anteriores é preciso falar com gerentes de departamentos em que o sistema será usado, engenheiros de software familiarizados com o tipo de sistemas, especialistas em tecnologia e usuários finais do sistema. Este estudo leva de duas a três semanas. 1. 2. 3. 4. 5. 6. Nesta atividade, os engenheiros de software trabalham com os clientes e os usuários finais do sistema para aprender sobre o domínio da aplicação, quais serviços o sistema deve fornecer, o desempenho esperado pelo sistema, restrições de hardware, etc. Como a organização se comportaria se esse sistema não fosse implementado? Quais são os problemas com os processos atuais e como o novo sistema ajudaria a reduzir esses problemas? Qual será a contribuição direta do sistema para os objetivos e requisitos da empresa? As informações podem ser transferidas e recebidas de outros sistemas da organização? O sistema requer tecnologia que ainda não foi usada na organização? O que deve ser apoiado pelo sistema e o que não precisa ser apoiado? 13 Clayton Maciel Costa – [email protected] Requisitos de Software 14 Clayton Maciel Costa – [email protected] Requisitos de Software • Elicitação e análise de requisitos (continuação): • Processo de elicitação e análise de requisitos: A elicitação e a compreensão dos requisitos dos stakeholders são difíceis devido a várias razões: 1. 2. 3. 4. 5. Os stakeholders frequentemente não sabem o que querem do sistema de computador a não ser em termos gerais. Os stakeholders expressam os requisitos naturalmente em seus próprios termos e com o conhecimento implícito de seu trabalho. Diferentes stakeholders possuem diferentes requisitos, expressos de diferentes formas. Fatores políticos podem influenciar os requisitos do sistema. O ambiente econômico e de negócios sobre o qual a análise é realizada é dinâmico. Classificação e organização de requisitos Priorização e negociação de requisitos Obtenção de requisitos Documentação de requisitos Modelo genérico 15 Clayton Maciel Costa – [email protected] Requisitos de Software 16 Requisitos de Software • Obtenção de requisitos: • Obtenção de requisitos: entrevista É uma técnica simples e direta. É o processo de interação com os stakeholders do sistema para coletar seus requisitos. Os requisitos de domínio são também descobertos durante essa atividade, provenientes dos stakeholders e da documentação. Precisamos saber: • Quem são os usuários? • Quem são os clientes? • As necessidades deles são diferentes? • Onde a solução desse problema pode ser encontrada? Algumas técnicas para obtenção desses requisitos são: Entrevistas Brainstorm Storyboards Casos de uso Role playing Prototipagem Clayton Maciel Costa – [email protected] Clayton Maciel Costa – [email protected] Resultado: repositório de requisitos. IMPORTANTE: Questionário não substitui uma entrevista. 17 Clayton Maciel Costa – [email protected] 18 3 Requisitos de Software Requisitos de Software • Obtenção de requisitos: entrevista com gerente 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. • Obtenção de requisitos: entrevista com o usuário Qual é sua visão do problema? Quais são as mudanças desejadas com a solução do problema? Em que ambiente essa solução deverá funcionar? Qual é a abrangência geográfica e número de usuários que estarão utilizando a solução? Como é o parque tecnológico existente (Servidores, Desktops, Topologia da Rede, Internet)? Quais são os ambientes existentes na empresa (Desenvolvimento, Testes, Produção, etc...); Como serão as integrações entre os sistemas? Haverá migração de dados ? Em que estrutura estão esses dados? Existe alguma padronização a ser seguida e/ou algum artefato de sua metodologia que deverá ser gerado e entregue? Como está estruturada a equipe de TI? 19 Clayton Maciel Costa – [email protected] Requisitos de Software 5. 6. 7. 8. Qual é sua visão do problema? Quais são as mudanças desejadas com a solução do problema? Que facilidades você espera do sistema? Qual informação do negócio é a mais difícil de processar (trabalho braçal, formato do dado, baixa navegabilidade em sistemas existentes)? Quais são as macro funcionalidades necessárias para os sistema? Quais são as pessoas que se relacionam com o sistema? Como são as telas imaginadas para o sistema (esboços de telas)? Quais são as importações e exportações de dados necessárias para o funcionamento do sistema (detalhar layout dos arquivos / fontes de dados)? Clayton Maciel Costa – [email protected] 20 Requisitos de Software • Obtenção de requisitos: entrevista com outros • Obtenção de requisitos: brainstorm É uma técnica em que as pessoas colocam tudo que vier na cabeça com relação ao projeto. Manutenções: 1. 2. 3. 4. 5. Quais são as dificuldades de manutenção do sistema? Qual é a qualidade das estruturas do banco de dados? Qual é a qualidade do código fonte do aplicativo? A documentação do sistema é suficiente e compreensível? Como é a demanda (freqüência) de manutenção (corretiva, melhorias, legal)? 6. Quais são os pontos de “gargalo” do sistema atual? Clayton Maciel Costa – [email protected] 1. 2. 3. 4. Ela é muito útil quando existem diversos interessados no projeto. 21 Requisitos de Software Clayton Maciel Costa – [email protected] 22 Requisitos de Software • Obtenção de requisitos: storyboarding • Obtenção de requisitos: brainstorm Corresponde a qualquer técnica que expressa o comportamento do sistema, projeto ou intenção de implementação pela perspectiva do usuário. É dividido em duas etapas: Na primeira: anota-se todas as idéias que surgirem, sem que sejam questionadas. Neste momento o que importa mais é a quantidade, não deixe de anotar nada. Esta técnica foi utilizada inicialmente no cinema e desenhos animados, representando um esboço dos personagens e da história. Na segunda: debate-se com o grupo para ir refinando as idéias apresentadas anteriormente. Deixe as regras bem claras, e defina uma pessoa (facilitador) para “comandar” a reunião, para garantir que as regras sejam respeitadas. Pode ser efetiva no desenvolvimento de um novo projeto, na fase inicial, para identificar requisitos de alto nível, aqueles mais macros. Clayton Maciel Costa – [email protected] 23 Clayton Maciel Costa – [email protected] 24 4 Requisitos de Software Requisitos de Software • Obtenção de requisitos: casos de uso • Obtenção de requisitos: role playing Descreve a funcionalidade proposta para o novo sistema. Ele representa uma unidade discreta da interação entre um usuário (humano ou máquina) e o sistema. Esta técnica, conhecida também como etnografia, consiste em observar o usuário executando determinada tarefa, no dia-a-dia do seu trabalho, ou, até mesmo, você fazendo o trabalho deste usuário, para identificar suas dificuldades e necessidades, sentindo na pele como é realizar a tarefa. É uma unidade de um trabalho significante. Ex: o "login para o sistema", "registrar no sistema" e "criar pedidos". Muito útil quando o usuário não consegue identificar ou transmitir as informações necessárias para a identificação dos requisitos. ATENÇÃO: um caso de uso tem uma descrição ao qual descreve a funcionalidade que irá ser construída no sistema proposto. Clayton Maciel Costa – [email protected] 25 Requisitos de Software • Obtenção de requisitos: prototipagem Criação, apresentação e debate de modelos de interação não funcionais que ajudem a ilustrar como o sistema se deverá comportar, permitindo assim obter feedback mais detalhado dos stakeholders sobre o sistema. Um processo que propõe a criação de um protótipo de software objetiva apoiar a fase levantamento de requisitos a fim de prevenir as possíveis falhas no sistema. Um protótipo simula a aparência e funcionalidade do software permitindo que os clientes, analistas, desenvolvedores e gerentes percebam os requisitos do sistema podendo interagir, avaliar, alterar e aprovar as características mais marcantes na interface e funções. É a atividade de desenvolvimento de uma versão inicial do sistema baseada no atendimento dos requisitos ainda pouco definidos, permitindo a descoberta de falhas difíceis de serem encontradas na comunicação verbal. IMPORTANTE: os protótipos podem ser evolutivos ou descartáveis. 27 Requisitos de Software Clayton Maciel Costa – [email protected] 28 Requisitos de Software • Validação de requisitos: • Validação de requisitos (continuação): Dedica-se a mostrar que os requisitos realmente definem o sistema que o usuário deseja. A validação de requisitos se sobrepõe à análise; está relacionada à descoberta de problemas com os requisitos. Durante o processo de validação de requisitos, devem ser realizadas verificações nos requisitos do documento de requisitos. Essas verificações incluem: Verificações de validade Verificações de consistência Verificações de completeza Verificações de realismo Lembrando que a descoberta tardia de erros relacionados aos requisitos geram um alto custo em qualquer projeto de software. Clayton Maciel Costa – [email protected] 26 Requisitos de Software • Obtenção de requisitos: prototipagem Clayton Maciel Costa – [email protected] Clayton Maciel Costa – [email protected] 29 Clayton Maciel Costa – [email protected] 30 5