Identificando requisitos Requisito: é uma característica do sistema ou a descrição de algo que o sistema é capaz de realizar para atingir seus objetivos Três categorias de requisitos: requisitos que devem ser totalmente satisfeitos requisitos que são altamente desejáveis, mas não necessários requisitos que são possíveis, mas poderiam ser eliminados Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Documentos de requisitos Definição dos requisitos: listagem completa de tudo que o cliente espera que o sistema proposto faça Especificação dos requisitos: redefine os requisitos em termos técnicos apropriados para o desenvolvimento do projeto do sistema Gerência de configuração: correspondência direta entre os dois requisitos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Gerência de configuração Conjunto de procedimentos que controlam os requisitos que definem o que o sistema deverá fazer os módulos de projeto gerados a partir dos requisitos o código do programa que implementa o projeto os testes que verificam a funcionalidade do sistema os documentos que descrevem o sistema Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Requisitos funcionais versus nãofuncionais Funcional: descreve uma interação entre o sistema e seu ambiente Exemplos: o sistema dever ter comunicação com um sistema ‘x’ externo Quais estados devem ser encontrados para uma mensagem ser enviada Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Não-funcional: descreve uma restrição do sistema que limita nossas opções para criar uma solução para o problema Exemplos: Contracheques distribuídos em não mais que quatro horas depois de os dados iniciais terem sido lidos Sistema limita o acesso a gerentes seniores Prentice Hall Tipos de requisitos Ambiente físico Interfaces Usuários e fatores humanos Funcionalidade Documentação Dados Recursos Segurança Garantia de qualidade Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Características dos requerimentos Estão corretos? São consistentes? Estão completos? São realistas? Cada requisito descreve algo necessário ao cliente? Podem ser verificados? Podem ser rastreados? Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Descrições estáticas dos requerimentos Referência indireta Relações de recorrência Exemplo: k equações em n variáveis Exemplo: F(0) = 1; F(1) = 1; F(n + 1) = F(n) + F(n – 1) Definição axiomática Expressão como uma linguagem Exemplo: BNF Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall <bool - t er m> | <bool - t er m> or <condi t i on> ::= <condi t i on> <bool - f act or > | <bool - f act or > and <bool ::= <bool - t er m> t er m> <expr > <r el op> <expr > | ( <condi t i on>) ::= <bool - f act or > < | < | = | > | > | < > ::= <r el op> <t er m> | <expr > <addop> <t er m> | <addop> ::= <expr > <expr > <f act or > | <t er m> <mpyop> <f act or > ::= <t er m> <scal ed- expr > | <pr i mar y> ::= <f act or > ( <expr >) <scal e> | <number > <scal e> ::= <scal ed- expr > ( <expr >) <r egname> | <number > | <f unc> ::= <pr i mar y> ( <expr >) <i nt eger > | <i nt eger >. | . <i nt eger > | ::= <number > <i nt eger >. <i nt eger > $ <r egchar > | <r egname> <r egchar > ::= <r egname> <di gi t > | <di gi t > <i nt eger > ::= <i nt eger > <di gi t > | <l et t er > | <under scor e> ::= <r egchar > + | ::= <addop> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= <di gi t > abs | t r unc ::= <f unc> A | a | B | b | C | c | D | d | E | e | ::= <l et t er > . . . | Y | y | Z | z * | / | mod ::= <myop> c | d | h | i | l | P | p | q | t | v ::= <scal e> _ ( ASCI I char act er 95) ::= <under scor e> Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Abstração de dados Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Descrições dinâmicas Tabelas de decisão Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Descrições dinâmicas (2) Descrição funcional e tabelas de transição f(Si, Cj) = Sk Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Descrições dinâmicas (3) Tabelas de eventos • Redes de Petri Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Abordagem orientada a objetos Cada entidade no sistema é um objeto. Um método ou uma operação é uma ação que pode ser realizada pelo objeto ou pode acontecer com o objeto Encapsulamento: maneira pela qual os métodos formam um limite de proteção em torno do objeto Hierarquias de classe de objetos estimulam a herança Polimorfismo: mesmo método para diferentes objetos, cada qual com diferentes comportamentos Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Notações de requisitos adicionais Técnicas hierárquicas diagramas de Warnier Diagramas de fluxo de dados Software Requirements Engineering Methodology — SREM Structured Analysis and Design Technique — SADT Z Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall R_NET: PROCESS_TRANSACTI ON STRUCTURE: I NPUT_I NTERFACE_ACCOUNT_REQUEST_RECORD EXTRACT_DATES DO ( REQUEST=TRANSACTI ON) RECORD_TRANSACTI ON TERMI NATE OTHERWI SE FI ND_ACCOUNT- RECORDS COMPUTE_SAVI NGS_BALANCE AND COMPUTE_CHECKI NG_BALANCE AND COMPUTE_MONEY- MARKET_BALANCE PRI NT_BALANCES TERMI NATE END END Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Etapas da SREM Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Exemplo Z ST = Key VAL I NI T st ’ : ST st ’ = { } I NSERT st , st ’ : ST k : KEY v : VAL k dom( st ) st ’ = st { k v} LOOKUP st , st ’ : ST k : KEY v : VAL k dom( st ) v’ = st ( k) st ’ = st DELETE st , st ’ : ST k : KEY k dom( st ) st ’ = { k} st Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Prototipação de requisitos Protótipo descartável Protótipo evolutivo Protótipo rápido Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Documentação de requisitos Documento de definição de requisitos: o que o cliente gostaria de ver: propósito geral fundamentos e objetivos de desenvolvimento do sistema descrição da abordagem características detalhadas ambiente operacional Documento de especificação de requisitos: o que o desenvolvedor precisa saber Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Exemplo Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Participantes no processo de requisitos Monitores do contrato Clientes e usuários Gerentes de negócios Projetistas Testadores Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Revisão dos requisitos Rever metas e objetivos estabelecidos para o sistema Comparar requisitos metas o objetivos Descrever o ambiente operacional Examinar interfaces fluxo de informações funções Verificar omissões, imperfeições e inconsistências Documentar riscos Discutir sobre como o sistema será testado Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Escolhendo uma técnica de especificação de requisitos Aplicabilidade Possibilidade de implementação Testabilidade/simulação Avaliabilidade Manutenibilidade Modularidade Nível de abstração/expressividade Solidez Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger • • • • • • • • Capítulo 4 Verificabilidade Segurança durante a execução Maturidade da ferramenta Imprecisão Curva de aprendizado Maturidade técnica Modelagem de dados Disciplina Prentice Hall Exemplo de sistema de informação Adver t i si ng Campai gn = * Ent i t y. Recor ds t he condi t i ons and ai ms f or a campai gn t o adver t i se a pr oduct . * Campai gn Number + Campai gn St ar t Dat e + Campai gn End Dat e + Tar get Audi ence + Tar get Rat i ng Per cent age + Campai gn Pr edi ct ed Rat i ng + Campai gn Budget Tot al + Pi ccadi l l y Budget Amount + Campai gn Dur at i on + { Requi r ed Spot Dur at i on} * Wor k necessar y t o r emove or j ust i f y t he r epeat i ng gr oup. * Tar get Audi ence = * Dat a el ement . The audi ence at whi ch a campai gn i s ai med. See Audi ence Type f or val ues. * Audi ence Type = * Dat a el ement . Used t o cl assi f y r at i ngs f i gur es. * [Homes | Homemakers | Adults | Men | Women | Children] Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall Exemplo em tempo real STATE SEL_WORKI NG; I NPUT Cl ear ( l i ne) ; DECI SI ON ( ( cond[ l i ne] == OOS) | | ( cond[ WORK] == OOS) ) ; ( TRUE) : TASK ‘ badi nput = 1’ ; NEXTSTATE- ’ ENDDECI SI ON; TASK ‘ cond[ l i ne] = NORMAL’ ; DECI SI ON ( ( l i ne == PROT) && ( cond[ WORK] > cond[ PROT] ) ) ; ( TRUE) : NEXTSTATE SEL_PROTECTI ON; ENDDECI SI ON; NEXTSTATE- ; ENDSTATE SEL_WORKI NG; CLAI M; ( ( APSENV FI RSTMSG Done) && ( env ms g == CONDSWI TCH) && ( s el ! = ps el ) ) I MPLI ES ( c ond[ s el ] <= pc ond[ ps el ] ) UNTI L ( s el == ps el ) ; ENDCLAI M; Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 4 Prentice Hall