Objetivo da aula
- Sugerir passos para o levantamento de dados para construção do software
- Entender Requisitos Funcionais e Requisitos Não-Funcionais
- Avaliar métricas para Requisitos Não-Funcionais
Iniciando um projeto
- Seleção do projeto:
- Aquisição dos dados
- Requisitos Funcionais
- Requisitos Não-Funcionais
- Análise
- Discussão em grupo de todos os detalhes possíveis
- Projeto Lógico:
- Documentação e Desenho dos Diagramas
- Prototipagem:
- Transformação do projeto lógico em um projeto físico reduzido.
Requisitos
- Levantamento de requisitos é útil para:
- Identificar as necessidades dos usuários
- Verificar a viabilidade de implementar estas necessidades
- Distribuir as funções do sistema entre as pessoas, o hardware, o software e outros elementos do sistema
- Criar um modelo do sistema que será utilizado nas fases de desenvolvimento seguintes
- Técnicas para levantamento de dados
- O sucesso de um projeto depende diretamente do levantamento de dados
- O levantamento de dados é tão importante no desenvolvimento do projeto que seu resultado pode colaborar ou comprometer o desempenho do projeto
- Para realizá-lo em um sistema de informação, existem diversas técnicas de levantamento de dados
- Dependendo das características do projeto, essas técnicas podem ser aplicadas de forma isolada ou em conjunto
- Abaixo, algumas dessas técnicas:
- Entrevistas: Identificar as pessoas que serão entrevistadas buscando especialistas no assunto.
- Questionários: Gerar perguntas organizadas com o objetivo de levantar dados para uma pesquisa ou estudo, cujas respostas são fornecidas pelo informante sem a orientação direta do pesquisador;
- Revisão de documentação: Utilizar várias fontes de informação como:manuais de procedimentos, documentação, manuais de projeto, relatórios, diagramas e outros;
- Análise de observação: Observar os usuários em seu ambiente de trabalho enquanto eles executam suas atividades. Pode ser usada para confirmar os resultados de uma entrevista, identificar documentos que devem ser analisados etc.
- Brainstorm: Termo do Inglês que significa “tempestade de ideias”. É uma metodologia que objetiva explorar as ideias de um grupo de pessoas a fim de obter as melhores soluções. Não há julgamento ou autocrítica. Todas as idéias são aceitas, mesmo aquelas que parecem ser absurdas. Tem-se como objetivo principal fazer com que o grupo libere o seu conhecimento e criatividade. O resultado da técnica Brainstorm tem o seu mérito distribuído porque foi obtido usando as ideias de todo o grupo envolvido.
- JAD: Join Application Design é uma metodologia criada pela IBM e baseada em sessões de dinâmicade grupo. Define o ponto de vista dos usuários sobre o sistema, incluindo objetivos e as aplicações do sistema até a geração de telas e relatórios. Diferente da técnica Brainstorm, é refinada, organizada e com uma abordagem mais estruturada;
Classificação dos requisitos
Requisitos funcionais
- Especificam ações que um sistema deve executar, sem levar em consideração restrições físicas
- Melhor descrito quando são usados casos de uso
- Descrevem a funcionalidade ou os serviços do sistema
- Depende do tipo de software, possíveis usuários e o tipode sistema em que o software é usado
- Requisitos funcionais dos usuários podem ser declaraçõesde alto nível a respeito do que o sistema deve fazer
- Devem descrever detalhadamente os serviços do sistema
- Exemplos:
- Um sistema acadêmico fictício deve:
- Matricular os alunos
- Montar uma turma para cada grupo de alunos
- Alocar a turma em salas
- Gerar Diário
- Controlar frequência e faltas
- Calcular pontuação do aluno
- Gerar relatório de aprovados e reprovados
- Um sistema acadêmico fictício deve:
Requisitos não-funcionais
- Descrevem qualidades do sistema (como ele é) ao invés de suas funcionalidades (o que ele faz)
- Definem as propriedades e as restriçõesvdo sistema, por exemplo:
- confiabilidade
- tempo de resposta
- ocupação de área
- As restrições são capacidades de dispositivos de E/S, as representações do sistema, etc
- Os requisitos de processo também podem ser especificados impondo um IDE particular, linguagem de programação ou método de desenvolvimento
- Podem ser mais críticos do que os requisitos funcionais. Se esses não forem atendidos,o sistema pode ser inútil
- Exemplos:
- O sistema:
- não poderá ficar parado por mais de 15 minutos [Robusto]
- tem que ser restaurado imediatamente caso haja corrupção dos dados [Disponível]
- será inibido o acesso para mais de 3 tentativas com falha [Seguro]
- deve ter baixo tempo de resposta [Ágil]
- precisa ser Orientado a Objeto - 3
- necessita usar o Banco de Dados Oracle - 10
- deverá estar hospedado na nuvem - 32
- tem que ser desenvolvido em Java - 24
- requer utilização de sensores - 28
- necessita de ferramentas específicas - 2
- precisa ter segurança contra acessos indevidos - 5
- exige uso de interfaces de entrada específicas - 23
- deve rodar no Android e IoS - 29, 33
- será embarcado dentro de um equipamento - 40
- terá que suportar exabytes de dados - 34
- deverá ter interface intuitiva - 26
- obrigatória o uso de solução open source - 41
- requer redundância na comunicação - 22
- O sistema:
Algumas métricas para requisitos não-funcionais
| Propriedade | Medida |
|---|---|
| Velocidade | Transações processadas/segundo |
| Tempo de resposta de usuário/evento | |
| Tempo de atualização de tela | |
| Tamanho | MegaBytes |
| Número de processadores | |
| Área disponível em cm | |
| Facilidade de uso | Tempo de treinamento do usuário |
| Número de telas/campos de entrada | |
| Confiabilidade | Tempo médio para falha |
| Probabilidade de indisponibilidade | |
| Taxa de ocorrência de falhas | |
| Disponibilidade | |
| Robustez | Tempo de reinício após falha |
| Percentual de eventos que causam falhas | |
| Probabilidade de corrupção de dados em caso de falha | |
| Segurança | Número de tentativas erradas de autenticação |
| Número máximo de invasões | |
| Interfaces | Tipo do dispositivo |
| Comunicação | Tipo de tecnologia |