Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CLEYTON V. C. MAGALHÃES
CLEYTON V. C. MAGALHÃES
ENGENHARIA DE REQUISITOS
1.ª EDIÇÃO
RECIFE
FACULDADE SÃO MIGUEL
2019
Copyright © 2019 Faculdade São Miguel. Todos os direitos reservados.
Direção geral
Maria Antonieta Alves Chiappetta
Direção editorial
George Bento Catunda
Revisão
Annara Mariane Perboire da Silva
Cleyton Vanut C. de Magalhães
Editora responsável
Faculdade São Miguel
1.ª Edição – 2019
M188e
Magalhães, Cleyton V.C.
Engenharia de requisitos / Cleyton V.C. Magalhães. Recife: Faculdade São
Miguel, 2019.
33 p.: il.
CDU – 004.414.22
1.1Introdução ................................................................................................................................ 7
1.2 Os requisitos no processo de desenvolvimento ...................................................................... 9
1.3 Tipos de requisitos ................................................................................................................ 12
CONCLUSÃO ................................................................................................................................ 31
REFERÊNCIAS ............................................................................................................................. 32
APRESENTAÇÃO
Olá! Suponho que você já tenha ouvido falar um pouco sobre o processo de desenvolvimento de
software, certo? Não?! Deixaeu te explicar então: esse processo define o conjunto de atividades que
serão executadas por uma equipe de desenvolvimento de software na construção de um sistema. No
contexto das empresas de desenvolvimento de software, em que muitas possuem vários projetos de
software ao mesmo tempo e grandes equipes de desenvolvimento, definir um processo para determinar e
organizar como, quando e por quem as atividades vão ser feitas é muito importante. Por exemplo: alguém
precisa se reunir com o cliente para entender quais as funcionalidades que ele precisa no sistema, além
disso, é necessário que uma equipe desenvolva o sistema em uma linguagem de programação, e mais
ainda: o sistema precisa ser testado. Tantas atividades, feitas por diferentes pessoas precisam ser
planejadas, coordenadas, executadas e validadas, e por isso é necessário um processo bem definido para
que as coisas sejam feitas e entregues no prazo e com qualidade. As diferentes formas de organizar como
um software vai ser construído são estudadas pela Engenharia de Software, uma disciplina da
computação que se preocupa com a especificação, o desenvolvimento e a manutenção de um sistema
computacional.
Em resumo, o caderno está organizado da seguinte forma: o capítulo 1 uma introdução à etapa de
Engenharia de requisitos e onde ela se encaixa no processo de desenvolvimento de software. O capítulo 2
mostra as atividades realizadas na Engenharia de requisitos. No capítulo 3, você encontrará um modelo e
exemplos de um documento de requisitos, que é utilizado para detalhar todas as informações de um
sistema de informação.
6
1.CONTEXTUALIZANDO OS REQUISITOS DE SOFTWARE
1.1Introdução
Você já visitou alguma empresa de desenvolvimento de software? Já chegou a ver alguma matéria na TV
ou na internet sobre como é uma empresa desse tipo? Caso não conheça tão bem o mercado de software,
vamos entender um pouco esse contexto. As empresas de software são organizações formadas por
pessoas com habilidades técnicas para construir e comercializar sistemas computacionais. Como qualquer
outro tipo empresa, as empresas de software podem variar em relação à quantidade de funcionários, ao
tipo de tecnologias usadas (linguagens de programação, ferramentas) e também em relação aos
processos que ela usa no dia a dia. Por exemplo, uma empresa pode adotar um processo de
desenvolvimento mais tradicional, em que as entregas realizadas ao cliente podem demorar um
determinado tempo, enquanto outra empresa pode preferir práticas ágeis, como o Scrum, que possui
partes do software entregáveis em um prazo mais curto. Seja qual for o modelo de processo usado, a
etapa de coleta de requisitos é uma das mais importantes. Vamos entender essa importância analisando
alguns cenários:
No cenário 2, o dono dessa loja precisaria procurar uma empresa de desenvolvimento de software que
pudesse criar esse sistema para ele. No Brasil o mercado de software tem crescido bastante, e existem
diversas empresas que poderiam ser contratadas pelo dono dessa loja, e ele teria que levar em
consideração muitas coisas para escolher a empresa que o ajudaria a desenvolver o seu sistema, como o
custo e o prazo de entrega do sistema.
7
EXERCÍCIO 1:
Para entender um pouco do mercado de software e saber alguns serviços oferecidos por empresas
desenvolvedoras, imagine que você é o dono da loja de camisetas que mencionei acima e que você quer
vender essas camisetas no Brasil (ou em outros países também, caso você seja mais visionário). Para
isso você precisaria de um sistema online.
No mercado de software quando se tem projetos de escopo grande e que envolvem contratos de alto
custo é preciso definir diversos fatores que possam garantir que ao fim do processo de desenvolvimento, o
software possua um alto nível de qualidade e que principalmente atenda todas às expectativas das
pessoas que vão usá-lo.
Mas por que essas tais "expectativas" precisam ser atendidas? Vamos a um exemplo: você não gostaria
que alguém fizesse um saque em sua conta bancária com uma autenticação falsa, não é mesmo? Outro
caso: usar aquele sistema que trava de 15 em 15 segundos é muito chato, concorda? Pior que isso: os
controladores de um avião no qual você está voando passam por uma pane. Tenso! né? Por isso,
pensando em evitar problemas como esses, que às vezes envolvem um alto risco caso essas falhas
aconteçam, aspectos como segurança, performance, usabilidade e muitos outros relacionados ao bom
funcionamento de um software devem ser muito bem discutidos por todos os stakeholders (pessoas
envolvidas no desenvolvimento) do projeto para garantir que o software faça o que deve fazer. Mas onde
isso tudo começa? Isso mesmo: na produção dos requisitos.
Pesquise por "requisitos de software" na internet, como na figura 1. Você pode encontrar definições para
requisitos como as seguintes: "requisitos são descrições do que o sistema deve fazer", ou como
"necessidades do software do cliente" ou ainda "requisitos são as funcionalidades de um determinado
sistema". E a internet está certa. Requisitos são, de fato, o conjunto de solicitações (demandas ou
especificações) que um cliente deseja que um software que vai ser construído possua.
8
Figura 1. Definição de requisitos de software. Fonte: Google
Vejamos mais um exemplo: o dono de um hotel quer um sistema online para gerenciar as reservas de
seus hóspedes. Então, um dos requisitos desse sistema seria "Realização de reservas". Neste contexto, o
hóspede poderia também desejar cancelar a reserva, ou alterar a data de sua reserva. Estas ações que o
sistema deve possuir também são requisitos. Os critérios de realização desta reserva, como por exemplo,
se o cliente precisa ter feito login antes de realizar a reserva ou se ele precisa de um código de
confirmação via mensagem SMS para finalizar sua solicitação também são detalhes que precisam ser bem
esclarecidos na definição dos requisitos. Em resumo, os requisitos detalham como um negócio funciona no
mundo real para garantir que o um software que será construído para ser utilizado neste negócio reflita as
atividades e ações realizadas no negócio.
Definir os requisitos de um software é apenas o começo de um processo bem maior que envolve várias
fases e atividades. Existem diversas formas de organizar estas fases e as atividades que compõem cada
fase (figura 2). Para isso, são usados alguns modelos que definem como a equipe e as atividades devem
ser organizadas para realizar o desenvolvimento. Existem modelos com uma estrutura mais rígida,
chamados tradicionais (como o modelo cascata, por exemplo) e metodologias ágeis, que buscam deixar o
processo mais dinâmico com práticas que visam acelerar o processo de construção do software.
O modelo cascata, citado anteriormente, define que as fases do desenvolvimento devem ser sequenciais,
sendo que uma nova fase é iniciada apenas quando a anterior foi finalizada. Por exemplo, todos os
requisitos do sistema devem ser definidos no começo do projeto e ao finalizar esta fase, passa-se para a
fase de projeto/design. Usando esse método, não é possível retornar para a fase anterior. Isso significa
9
que não é possível retornar à fase anterior caso um requisito precise mudar. Quando um problema é
encontrado na etapa de testes, por exemplo, é preciso retornar à etapa inicial e passar pelas demais fases
novamente. Portanto, é preciso definir muito bem os requisitos no início do projeto. Nesse modelo, o
projeto é entregue ao cliente apenas quando é finalizado. Vale lembrar que o modelo cascata não é o
único modelo tradicional, os modelos iterativo-incremental e evolucionário, por exemplo, surgiram com
base no cascata e também são considerados tradicionais.
Já os métodos ágeis são baseados em práticas iterativas que garantem entregas mais frequentes de
pequenos "pedaços do software" ao cliente. No caso do Scrum, uma das metodologias ágeis mais
utilizadas no mundo, o desenvolvimento é dividido em Sprints, que são espaços de tempo (normalmente
duas semanas) em que determinadas features (requisitos ou funcionalidades) são planejadas,
desenvolvidas, testadas e apresentadas ao cliente. Dessa forma, caso haja problemas ou erros no
desenvolvimento, elas podem ser corrigidas na sprint seguinte. XP, Crystal e FDD também são
considerados métodos ágeis.
EXERCÍCIO 2:
Pesquise sobre modelos de processo de software tradicionais e metodologias ágeis. Considerando o
sistema do cenário 2 do início do capítulo, também usado no exercício 1, qual o modelo de processo você
acredita que seria adequado?
Requisitos - Esta é a etapa em que os requisitos são levantados. O analista responsável por esta tarefa
reúne-se com o cliente para entender quais os requisitos que ele deseja que existam no software que vai
ser construído. O responsável por esta atividade pode realizar as seguintes tarefas (que serão mais bem
especificadas mais adiante):
10
● Elicitação de requisitos;
● Identificação das fontes de informação;
● Conhecer técnicas de levantamento de requisitos;
● Modelagem;
● Análise de requisitos;
● Validação e verificação;
● Gerência de requisitos.
Projeto/Design:
A fase de projeto e design serve para definir como o sistema será estruturado, de forma a ter
documentações claras que permitam um bom desenvolvimento aos programadores. Aspectos como a
arquitetura do sistema, linguagem de programação que será utilizada, sistema gerenciador de banco de
dados, e outros são definidos nesta fase. Também são criados artefatos (como diagramas UML) que
permitam ter visões gerais e mais específicas do sistema. O diagrama de caso de uso, por exemplo, ajuda
a ter uma visão dos requisitos funcionais de um sistema e os atores responsáveis pela realização destes
requisitos (figura 3).
Implementação:
Nesta etapa os requisitos que foram levantados, ou seja, as funcionalidades que o software terá, serão
codificados em uma linguagem de programação para que o sistema possa ser executado.
Testes
A etapa de testes busca a garantia de que o software construído possui qualidade. Neste momento, uma
série de testes é criada e executada de forma a garantir que o sistema funcione de acordo com os
requisitos identificados no começo do processo. Uma série de testes de diversos tipos são projetados e
executados. Se os testes passam, significa que a qualidade do software está adequada e caso falhem, os
bugs encontrados precisam ser resolvidos antes que o software seja entregue ao cliente.
Existem várias categorias de teste, ou seja, maneiras de agrupar casos testes a serem executados no
sistema. Por exemplo: testes funcionais, testes de segurança, testes de performance, testes de carga,
testes de usabilidade, testes de instalação são algumas dessas categorias.
11
Um bom exemplo de um conjunto de testes de segurança pode ser relacionado a um sistema bancário.
Nesse caso seriam necessários testes como apresentados abaixo:
Quanto à forma de execução dos testes, estes podem ser feitos das seguintes maneiras:
- manual : o testador executa manualmente os testes. Por exemplo, o testador acessa um website,
faz login na página com credenciais válidas e verifica se o acesso foi liberado.
- automáticos : scripts são criados de forma a realizar os testes automaticamente e seus resultados
validados através de uma ferramenta de automação. O mesmo exemplo de realizar login pode ser
executado automaticamente por um script, que irá preencher automaticamente os campos de
usuário e senha, além de validar se o acesso foi liberado.
A etapa de testes é muito importante para garantir um alto nível de qualidade ao produto, evitar que erros
que tenham sido incluídos em alguma das etapas anteriores persistam no sistema e sejam encontrados
pelo seu usuário final.
Implantação
É a fase em que o software é implantado no ambiente em que ele será executado. Dentre as atividades
que acontecem nesta fase pode-se incluir a liberação, instalação e ativação do produto.
Agora que você sabe o que são requisitos e onde eles se encaixam no processo de desenvolvimento de
software vamos entender um pouco mais sobre eles? Como vimos anteriormente, o levantamento (ou seja,
a identificação) dos requisitos de um software acontece logo no início do processo de desenvolvimento,
antes dos programadores começarem a criar o sistema usando uma linguagem de programação. Mas por
onde começar essa identificação? Se você quer ter uma documentação clara, é importante saber que os
requisitos podem ser classificados como:
Requisitos Funcionais: Os requisitos funcionais definem como o sistema deve reagir a determinadas
entradas e como deve se comportar em determinadas condições. Como o próprio nome diz, está
relacionado às funcionalidades do sistema. De acordo com Sommerville (2008), eles podem ainda definir o
12
que o sistema não deve fazer. Os requisitos funcionais vão depender muito do tipo de negócio e de
usuários que utilizarão software, por isso, precisam ser muito bem detalhados. Veja o exemplo abaixo de
requisito funcional de um sistema de vendas online (Considere o código RF01 como "Requisito Funcional
01"):
Os requisitos não funcionais não estão diretamente ligados às funcionalidades de um sistema. Restrições,
ou propriedades relacionadas a tempo, de resposta, desempenho, etc. A figura 4 apresenta um gráfico
com os requisitos não funcionais definidos por Sommerville (2008), que estão detalhados logo abaixo:
13
Figura 4. Requisitos funcionais segundo Sommerville (2008). Fonte: DevMedia
(https://www.devmedia.com.br/artigo-engenharia-de-software-3-requisitos-nao-funcionais/9525)
Requisitos de Domínio: Estes requisitos são relacionados ao domínio da aplicação e podem refletir
cálculos específicos, por exemplo, em um determinado negócio um supervisor não pode receber um
salário inferior a um funcionário supervisionado por ele.
Outro exemplo seria, no caso de um sistema que possua documentos com restrições de direitos autorais:
14
RD01 - Todos os relatórios com base em arquivos com direitos autorais devem exigir uma chave de
acesso antes de serem abertos.
Requisitos do Usuário: Os requisitos do usuário podem ser considerados como uma forma mais
simplificada de escrever os requisitos funcionais e não funcionais. Requisitos do usuário são importantes
para stakeholders que não tem conhecimento técnico suficiente para compreender todos os detalhes
técnicos presentes nos requisitos funcionais e não funcionais.
Entretanto, Sommerville (2008) alerta para alguns problemas que podem ocorrer ao escrever requisitos de
usuário, como por exemplo, a falta de clareza pelo fato de usar linguagem natural.
Requisitos de Sistema:
Os requisitos do sistema são descrições bem mais detalhadas do que os requisitos do usuário e precisam
definir muito claramente o sistema, pois serão usados na fase de projeto do sistema. Juntamente com os
artefatos que são criados na fase seguinte (projeto), os requisitos são usados para estruturar o sistema e
são muito importantes para a etapa de desenvolvimento.
Exercício 3:
Para o sistema do cenário do do início do capítulo, crie:
a) uma breve descrição do sistema (que pode ser fictício ou você pode visitar algum negócio real
para inspirar seu processo de elicitação de requisitos).
b) Uma lista de alguns requisitos funcionais (funcionalidades) do sistema.
15
2. O PROCESSO DA ENGENHARIA DE REQUISITOS
A Engenharia de requisitos é um processo que possui todas as atividades relacionadas à identificação das
necessidades de um software. É um processo que começa com a comunicação com o cliente, passa por
etapas de análise e modelagem dos requisitos e é finalizada com a entrega de um documento com o
detalhamento dos requisitos do sistema. É importante lembrar que assim o processo de software como um
todo pode variar, a depender de vários aspectos já apresentados (tamanho da empresa, escopo do
sistema, etc.). Entretanto, existem algumas etapas básicas que compõem o processo da engenharia de
requisitos, são elas:
Antes de iniciar de fato a elicitação dos requisitos, é importante realizar um estudo da viabilidade do
projeto, para verificar se a realização do projeto é viável tanto do ponto de vista organizacional, quanto do
tecnológico. Portanto, nesta etapa, os stakeholders (envolvidos) do projeto realizam reuniões para
determinar questões como:
16
Veja outra questão que pode ser verificada em um estudo de viabilidade de um projeto:
Vamos imaginar novamente a loja de venda de camisetas estampadas e outros produtos personalizados.
Desta vez, a loja pretende vender os produtos no Brasil e também em outros países. Além disso, o cliente
(dono da loja de camisetas) exige que os desenvolvedores usem uma determinada linguagem de
programação na construção do seu sistema, porém, a equipe desenvolvedora desconhece esta
linguagem. Neste caso, também é inviável prosseguir como projeto, uma vez que a equipe
desenvolvedora não possui habilidades tecnológicas suficientes para desenvolver o projeto.
Entretanto, se a equipe de desenvolvimento estiver familiarizada com a linguagem que o cliente deseja
que seja usada no desenvolvimento do sistema, então o processo poderia seguir para a fase seguinte: a
elicitação dos requisitos.
EXERCÍCIO 4:
Pense naquele cenário 2 da loja de camisetas apresentado lá do capítulo 1. Que aspectos poderiam
INVIABILIZAR O PROJETO?
Após verificar se o projeto é viável, o processo segue para a fase de elicitação de requisitos, também
chamada de levantamento ou identificação dos requisitos. Esta fase busca obter o máximo de informação
possível sobre o negócio em questão para que o sistema criado atenda aos objetivos deste negócio. Você
deve lembrar que os requisitos precisam ser muito bem definidos, para evitar que as funcionalidades
sejam construídas e executem errada. Quando um requisito é mal definido, ele acaba sendo mal
interpretado pelos desenvolvedores, consequentemente implementado de forma errada. Quanto mais
tarde este erro for descoberto, maior o custo associado ao retrabalho para consertá-lo.
17
Figura 6. Atividades realizadas na elicitação de requisitos. Fonte: próprio autor.
Existem algumas técnicas para a elicitação de requisitos, de forma a obter o máximo de informação
importante para a definição dos requisitos. Como apresentado na figura 5, na etapa de coleta de fatos, é
possível realizar entrevistas e aplicar questionários para identificar os requisitos, e estas técnicas podem
ser usadas dependendo da situação. Vejamos quando usá-las.
Técnica 1 - Entrevistas: São úteis na fase inicial de coleta de dados e consideradas simples de se
realizar. Entretanto, deve-se estar atento à alguns fatores ao realizar estes tipos de coleta e tentar evitar
situações que possam dificultar a coleta. Veja alguns exemplos desses casos:
● O entrevistador deve evitar induzir respostas do entrevistado, pois isso pode direcionar as ideias do
entrevistado para respostas que não refletem de fato os requisitos.
● A relação pessoal entre o entrevistador e o entrevistado pode influir nas respostas, por exemplo,
caso o entrevistado não se sinta confortável com a pessoa que realizará as entrevistas, pode dar
respostas rápidas que para que o tempo da entrevista seja reduzido.
● Caso um novo sistema venha a dificultar a atuação de um colaborador no seu trabalho, ele pode
dificultar propositalmente o fornecimento de informações.
EXERCÍCIO 5:
Monte um pequeno ROTEIRO DE ENTREVISTA, com algumas perguntas para coletar sistemas para o
sistema de vendas de camisetas do cenário 2 do capítulo 1.
Relembre o cenário: uma loja que deseja vender suas camisetas online, fazendo entregas para todo o
Brasil, ou seja: um alto fluxo de vendas diárias, processamentos de compras em cartão de crédito,
geração de boletos, agendamento de entregas, sistema de trocas, e muitas outras necessidades que a
loja possa vir a ter.
18
Técnica 2 - Questionários: O uso de questionários também é considerado ideal para o início da coleta de
dados. No caso de uso deste instrumento de coleta, deve-se preocupar com a formulação das perguntas.
Para obter informações claras é importante que os respondentes compreendam bem as questões. Neste
caso, pode-se usar questionários piloto antes da aplicação real para que sejam propostas melhorias no
questionário. Além disso, questionários muito longos podem fazer com que as pessoas respondam o
questionário sem muito comprometimento para não levar tanto tempo.
Ele pode ser usado como uma forma de complementar as perguntas da entrevista. O uso de um
questionário após a análise da entrevista, poderia servir para complementar perguntas que foram pouco
exploradas na entrevista.
EXERCÍCIO 6:
Monte um pequeno questionário para esclarecer melhor perguntas que podem ter sido respondidas pelo
cliente de forma vaga na entrevista.
Técnica 3 - Cenários: Pensar como o sistema irá se comportar em determinadas condições é uma das
maneiras de levantar os requisitos. Através de cenários é possível fazer com que as pessoas imaginem as
funcionalidades de um sistema e como será a interação com elas de forma mais clara. Veja um exemplo
de um cenário:
Técnica 4 - Workshop de requisitos: Esta técnica trata-se de uma reunião mais estruturada com a
participação de uma equipe de analistas e representantes do cliente para definir os requisitos. Neste tipo
de técnica busca-se usar processos bem definidos de negociação e promover alguns momentos mais
dinâmicos para deixar um clima mais descontraído entre os envolvidos.
Classificação de requisitos: Trata de agrupar os requisitos semelhantes em conjuntos para que se tenha
uma visão melhor do comportamento do sistema. Voltemos ao exemplo do sistema de caixa bancário. Vamos
agrupar os requisitos que são relacionados a transferências e pagamentos.
19
Requisitos funcionais de transferência bancária
No exemplo acima, considere que podem existir n requisitos relacionados a transferências, por isso os
requisitos foram codificados como RF11, RF12 e RFn, ou seja, poderiam haver os requisitos RF14, RF15, até
RFN. O mesmo acontece nos exemplos a seguir, referente a pagamentos.
Priorização dos requisitos: Esta atividade define um nível de prioridade para cada um dos requisitos.
Esse nível pode ser definido de diferentes formas (1 a 5, ou alta/média/baixa). Essa priorização serve para
definir o quão importante é uma funcionalidade e se ela deve receber atenção no desenvolvimento antes
das outras.
Veja no exemplo abaixo a priorização de alguns requisitos. A tabela 1 mostra que os requisitos 11 e 12
possuem alta prioridade. A prioridade pode definir que estes requisitos demandam mais esforço que os
demais e precisam ser desenvolvidos antes, por exemplo.
Requisito Prioridade
RF11 - Realizar uma transferência de uma conta corrente para poupança Alta
RFn - Realizar uma transferência de uma conta corrente para uma conta Média
corrente em outro banco
20
relacionado justamente à priorização. As pessoas envolvidas no processo podem considerar níveis
diferentes de priorização.
Exemplo de conflito: Imagine que o cliente gostaria que o requisito: "Gerar taxa" em um sistema de Hotel
gerasse uma taxa de 10% para cada reserva, porém os analistas entenderam que essa taxa seria de 20%
em cima do valor da reserva. Claramente trata-se de um conflito que precisa ser resolvido antes do início
da construção do sistema.
EXERCÍCIO 7:
Crie uma lista de requisitos funcionais e não funcionais para o sistema de vendas de camisetas online.
Lembre de numerá-los com um código e agrupar requisitos semelhantes caso seja necessário.
Etapa 4. Modelagem.
A etapa de modelagem tem o objetivo de representar de forma estática e dinâmica o que o sistema deve
fazer através de determinados modelos e técnicas. Os modelos criados nesta etapa representam os
requisitos detalhados no documento de requisitos, fornecem uma visão do domínio do sistema, e ajudam
a estruturar os requisitos de forma que os programadores possam entender vários aspectos do sistema.
A técnica de modelagem de software mais utilizada é a UML (Unified Modeling Language), que possui
diversos tipos de diagramas com diferentes propósitos (Diagrama de caso de uso, Diagrama de classe,
Diagrama de sequência, etc.). O diagrama de caso de uso é utilizado para representar os requisitos
funcionais de um software. É um artefato comumente usado para comunicação interna da equipe de
desenvolvimento e também para comunicação com o cliente.
Este diagrama define as funcionalidades do sistema do ponto de vista do usuário. Por exemplo: o usuário
do nosso exemplo do sistema bancário pode realizar saques, depósitos, etc. Neste caso, o diagrama
representa essas ações que o usuário pode realizar no sistema, de forma direta. Detalhes de como as
funcionalidades são executadas não são incluídos neste diagrama. Trata-se de um diagrama simples que
possui basicamente os seguintes elementos:
21
Cenário: Este diagrama representa uma modelagem simplificada de um software de caixa bancário. Neste
sistema, o usuário pode realizar saques, depósitos, transferências e pagamentos. Quando efetuadas,
todas essas operações precisam ser registradas na conta do cliente obrigatoriamente. O cliente pode
solicitar um empréstimo, que precisa ser liberado pelo gerente da agência.
Atores: Cliente e Gerente
Figura 7. Diagrama de caso de uso de um sistema bancário básico. Fonte: Próprio autor.
Note que o existem alguns relacionamentos marcados com a palavra <<include>>. Este tipo de
relacionamento define que a um caso de uso deve ser obrigatoriamente executado após outro. Ou seja,
sempre que um empréstimo é solicitado, é preciso que uma liberação seja feita pelo gerente. Ou ainda,
sempre que uma transferência for feita, a movimentação na conta deve ser registrada.
Bem, esse diagrama está longe de representar um sistema bancário em sua totalidade. Vamos então
colocar mais algumas funcionalidades no diagrama? Serão incluídos agora no cenário a funcionalidade de
ver o saldo da conta, ver o extrato, e realizar recargas de celular. Ao fazer a recarga, o usuário terá a
opção (não obrigatória) de repetir a recarga no mesmo telefone com o mesmo valor.
22
Figura 8. Diagrama de caso de uso com incrementos no cenário anterior. Fonte: Próprio autor.
Nesse novo diagrama, podemos ver agora um relacionamento representado com a palavra <<extend>>.
Este relacionamento representa uma ação opcional, ou seja, repetir a recarga de celular, nesse caso, é
uma ação opcional após realizar uma primeira recarga.
Obs.: Você pode criar diagramas de caso de uso utilizando a ferramentas de modelagem UML Astah
Community. Disponível em: http://astah.net/editions/community
Esta etapa é responsável pela verificação da qualidade dos requisitos: sua consistência, precisão e
rastreabilidade. Essa fase garante que inconsistências nos requisitos sejam removidas antes de prosseguir
para a fase de projeto, garantindo que requisitos mal elicitados sejam descobertos apenas em fases mais
adiante no processo. A validação de requisitos pode corrigir problemas como:
23
resolvê-los. Nessa revisão pode-se usar um checklist com questões que avaliam a qualidade dos
requisitos. Um exemplo desse checklist pode ser encontrado na tabela 2:
Estas são algumas das questões que podem ser utilizadas para validar a qualidade de um documento de
requisitos. O atributo compreensibilidade possui questões relacionadas ao entendimento dos requisitos
pelas partes envolvidas no desenvolvimento. Ambiguidade possui questões de inconsistências, por
exemplo no uso de terminologias. Questões de rastreabilidade ajudam no processo de identificação dos
requisitos e sua associação com outros itens de outros artefatos do processo.
EXERCÍCIO 8:
Crie um checklist de validação para analisar os requisitos gerados no exercício 7.
24
3. DOCUMENTO DE REQUISITOS
O documento em si pode ser criado em um editor de textos, por exemplo, que irá agrupar todas as
informações sobre os requisitos. Porém, algumas ferramentas mais específicas podem ser usadas para
cada atividade, por exemplo:
Vamos ver agora um exemplo de documento de alguns itens que podem compor o documento de
requisitos.
1 - Informações Gerais
a) Visão Geral
<Nesta seção você deve apresentar uma visão geral de como o documento está organizado.>
Obs.: Note que todos os exemplos mencionados abaixo, estão relacionados com o diagrama de
caso de uso apresentado na descrição da etapa de modelagem de requisitos na seção 2 deste
caderno de estudo que refere-se a um sistema bancário. Evidentemente, um sistema bancário seria
muito mais complexo, teria mais funcionalidades e usuários. Porém, por fins didáticos, o sistema
foi simplificado de forma a não deixar os exemplos complexos demais.
Exemplo:
Seção 1: Apresenta as informações gerais do documento e termos e abreviações usadas.
Seção 2: Apresenta uma descrição geral do sistema, define a abrangência do sistema e detalha os
usuários.
Seção 3: Detalha os requisitos funcionais.
25
Seção 4: Descreve os requisitos não-funcionais.
b) Termos e abreviações
<Caso o sistema proposto possua qualquer termo específico ou abreviação que será usada no restante do
documento, eles devem ser adicionados aqui.>
<Aqui devem ser inseridas as definições de prioridade que serão usadas para classificar os requisitos.
Caso seja 1 - 5, deve-se deixar explícito o que cada um dos números representa. Caso seja alta, média ou
baixa, deve-se descrever o que cada um deles representa. Também pode-se adotar a classificação do
exemplo abaixo>
Essencial requisitos classificados como essenciais são aqueles que sem eles o sistema não funcionaria.
Requisitos com essa prioridade precisam ser implementados obrigatoriamente.
Importante requisitos importantes são aqueles que permitem que o sistema funcione, porém sem eles, o
sistema não funciona de forma adequada. Este tipo de requisito precisa ser implementado, mas caso não
seja possível, o sistema pode ser implantado mesmo assim.
Desejável requisitos classificados como desejáveis são requisitos mais básicos e que não comprometem
o funcionamento do sistema caso não sejam implementados.
<Aqui deve ser descrito o que o sistema deverá fazer de maneira ampla. caso o sistema tenha relação
com algum outro sistema, deve-se mencionar nesta seção>
O BankOnline é um sistema para uso em caixas eletrônicos do Banco "Bank" que atua nas capitais São
Paulo, Rio de Janeiro, Salvador, Recife e Fortaleza. O sistema deve permitir que os clientes do banco
26
realizem saques, depósitos, pagamentos de boletos, convênios, e solicitação de empréstimos. O sistema
BankOnline é conectado com ao sistema de serviço de proteção ao crédito (SPC) para que possa liberar
ou não empréstimos.
Exemplo:
Administrador: No BankOnline, o administrador é o responsável por liberar empréstimos solicitados pelos
clientes. Um administrador também pode ser cliente do banco.
Cliente: O cliente é o usuário que pode realizar saques, depósitos, pagamentos de boletos e convênios, e
solicitação de empréstimos.
3 - Requisitos funcionais
<Aqui você deve colocar os requisitos da forma mais detalhada possível. Os requisitos devem estar
associados aos casos de uso. Você o incluir o diagrama nesta seção para facilitar a associação entre os
casos de uso e os requisitos. Em sistemas maiores, que possuem muitos casos de uso, lembre-se de
agrupá-los>
Modelo:
27
Lembre-se que você pode agrupar os requisitos. Por exemplo, no sistema bancário, os requisitos
referentes a Saque podem ser agrupados em uma subseção chamada "requisitos referentes à função
Saque". Outro grupo pode ter requisitos sobre depósito ,etc.
Exemplo:
Vejamos agora um outro exemplo. Considere o diagrama de caso de uso apresentado na seção 2.
_______________________________________________________________________
28
Atores envolvidos: Cliente
Prioridade: X Essencial ⬜ Importante ⬜Desejável
Requisitos associados: (RFXXX) Registrar movimentação na conta.
Entradas: Valor do saque // Autenticar novamente com o cartão e senha (ou digital).
Pré-condições: O cliente precisa ter sido autenticado no sistema usando o cartão e senha.
Saídas e pós-condições: A saída é o valor requisitado para o saque.
Fluxo Principal
1. Após autenticado no sistema, no menu principal, o cliente deve clicar na função "Saque".
2. O sistema solicita o valor do saque. O usuário digita o valor e clica em "Confirmar".
[FluxoSecundario001] (a partir daqui, o sistema pode levar para o FluxoSecundario001, caso não
haja saldo disponível).
3. O sistema libera o valor solicitado.
4. O sistema registra a movimentação na conta.
Fluxo secundário
[FluxoSecundario001] Valor solicitado para o saque maior que o indisponível na conta.
1. O sistema apresenta a seguinte mensagem: "O saldo na conta é insuficiente para o valor solicitado".
4 - Requisitos não-funcionais
<Aqui devem ser descritos os requisitos não funcionais do sistema. Evidentemente, estes requisitos
dependem do software que está sendo desenvolvido. Você pode descrever requisitos dos tipos:
Usabilidade, Confiabilidade, Segurança, Hardware, Portabilidade, etc.>
Modelo:
Exemplo:
29
Requisitos não-funcionais de Portabilidade
EXERCÍCIO 9:
Crie um documento de requisitos, usando o modelo apresentado acima, para o sistema do cenário 2,
usado nos demais exercícios do caderno.
30
CONCLUSÃO
Terminamos! Neste caderno você viu aspectos gerais sobre Engenharia de Software, vimos como o
processo de desenvolvimento de software pode ser organizado dependendo de vários aspectos, como o
contexto da empresa ou dos projetos e por fim, vimos com detalhe como definir os requisitos de um
sistema. Como mencionado várias vezes neste caderno, as atividades e documentos gerados no processo
de desenvolvimento podem mudar, portanto, sinta-se livre para pesquisar outros modelos de documentos
de requisitos.
31
REFERÊNCIAS
SOMMERVILLE, Ian. Engenharia de Software. 9.ed. São Paulo: Ed. Pearson, 2011.
32