Ebook Requisitos de Software Plinio Ventura
Ebook Requisitos de Software Plinio Ventura
Ebook Requisitos de Software Plinio Ventura
REQUISITOS
DE SOFTWARE
Uma viso sobre detalhada sobre Requisitos
Funcionais, Requisitos No-Funcionais e Regras
de Negcio
Essa imagem (no sei o autor da que inseri acima, mas j de domnio
pblico por ter inmeras verses e variantes feitas por diversas pessoas) reflete
perfeitamente a nossa realidade nos projetos de software. E tudo comea nos
Requisitos...
Requisitos de Software
Achar uma definio objetiva e exata para a palavra requisito difcil. A
palavra possui alguns significados (conforme os dicionrios), mas chega a ser
um pouco abstrata. Mas basicamente, quando falamos de requisito, estamos
falando de necessidade, exigncia, desejo, solicitao. Levando esta palavra
para o contexto de um software, estamos falando de necessidades de um
usurio, exigncias do negcio, desejos da empresa, solicitao da
empresa, tudo isso devendo ser realizado por um sistema, ou seja, o software
dever atender estas necessidades, exigncias, desejos e solicitaes, e
materializar isso em um sistema.
Acho legal pensarmos no software como uma caixa de ferramentas, onde
cada ferramenta contida dentro desta caixa uma funcionalidade, que atende
um ou mais requisitos do sistema.
https://pt.wikipedia.org/wiki/Mtodo_cientfico
Requisito Funcional
Como vimos no captulo anterior, requisito uma exigncia, solicitao,
desejo, necessidade. Quando falamos de um Requisito Funcional estamos nos
referindo requisio de uma funcionalidade que um software dever
atender/realizar. Ou seja, exigncia, solicitao, desejo, necessidade, que um
software dever materializar.
comum os profissionais de engenharia de software associarem a ideia de
um Requisito Funcional a uma tela, uma rotina, que no fim sero as
funcionalidades de fato de um sistema. Mas necessrio entender que uma
funcionalidade no necessariamente realizar apenas um Requisito
Funcional, podendo realizar vrios requisitos funcionais significa que em
uma funcionalidade um ou mais requisitos funcionais podem ser atendidos, no
necessariamente apenas um. Se pensarmos em multiplicidade2, uma
funcionalidade pode realizar um ou muitos requisitos funcionais (1.. *).
A figura abaixo ilustra esta relao.
possvel
2
http://www.ibm.com/support/knowledgecenter/SS5JSH_9.5.0/com.ibm.xtools.petal.ui.doc/topics/rkeydifmulti
plicity.html?lang=pt-br
Referente a
Unidade
Completude
4 http://www.ateomomento.com.br/sintaxe-semantica-software/
Atributo
Referente a
da estria. Para ser completo deveria ser algo como Pagar
fatura com carto de crdito para cliente pessoa fsica.
Consistncia
Atomicidade
NoAmbiguidade
Verificvel
Rastrevel
Prioridade5
5 http://www.ateomomento.com.br/priorizacao-de-requisitos/
10
Atributo
Referente a
O RF deve possuir sua prioridade, isso interfere diretamente
no projeto do software.
<<Numero>>
Nome
<<Texto>>
Mdulo
<<Texto>>
Data de
criao
<<Data>>
Autor
<<Texto>>
Data da ltima
alterao
<<Data>>
Autor
<<Texto>>
Verso
Descrio
<<Texto>>
https://pt.wikipedia.org/wiki/Ferramenta_CASE
11
Campo
Descrio
Identificador
Nome
Mdulo
Data de criao
Autor
Data da ltima
alterao
Autor
Verso
Prioridade7
Descrio
Exemplos de requisitos
requisitos funcionais especificados
Vejamos alguns exemplos de requisitos funcionais especificados:
7 http://www.ateomomento.com.br/priorizacao-de-requisitos/
12
Identificador
RF0001
Nome
Mdulo
Cadastro
Data de
criao
31/01/2016 Autor
Arquitas de Tarento
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Desejvel
RF0002
Nome
Mdulo
Segurana
Data de
criao
31/01/2016 Autor
Nelson Goodman
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
13
RF0003
Nome
Mdulo
Cobrana
Hpias de Elis
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
14
Identificador
RF0004
Nome
Mdulo
Contribuies
Data de
criao
31/01/2016 Autor
Lucrcio
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Importante
Descrio
15
RF0019
Nome
Mdulo
Editor de Texto
Eckhart
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
16
Este um sub menu que exibido aps o clique no item de menu Ajuda.
Temos diversos comandos no sub menu e vamos analisar o comando Verificar
por atualizaes.
Quando o usurio executa este comando o aplicativo exibe uma janela
onde o resultado da verificao da atualizao exibido.
RF0087
Nome
Mdulo
Editor de Texto
17
Data de
criao
25/02/2016 Autor
Eraststenes
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Desejvel
Descrio
18
RF0096
Nome
Mdulo
Perfil do usurio
Plotino
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
19
Descrio
20
Requisito No Funcional
Requisito No Funcional, como o prprio nome diz, uma no
funcionalidade, ou seja, trata-se de algo que no uma funcionalidade, mas
que precisa ser realizado para que o software atenda seu propsito.
Existe uma definio propagada na literatura de Engenharia de Software
que afirma que um Requisito Funcional define o que o sistema far, e o
requisito no funcional define como o sistema far. Alguns afirmam que um
requisito no funcional especifica como um Requisito Funcional ser
implementado; tambm no uma boa definio, pois uma funcionalidade
teoricamente pode ser implementada sem nenhum requisito no funcional no
projeto e isso no gerar nus nenhum.
Acho que nenhuma dessas definies suficiente, no d para entender
muito bem; tem outra que diz que requisitos No Funcionais so atributos de
qualidade para o sistema, essa eu j acho melhor, mas ainda um pouco
subjetiva.
Um RNF tem como objetivo atender a requisitos do sistema que no so
requisitos funcionais (no se referem a funcionalidades do negcio), mas que
fazem parte do escopo do sistema.
Um RNF pode ou no estar associado a um Requisito Funcional (essa
associao muito comum em requisitos No Funcionais de integrao de
sistemas, por exemplo, pois para cada integrao existe uma necessidade do
negcio de faz-la, necessidade que est descrita em um Requisito Funcional).
Toda necessidade que for realizada atravs de funcionalidades
resultado de um ou mais requisitos funcionais (pois uma funcionalidade pode
realizar vrios requisitos funcionais, no necessariamente apenas um) e toda
necessidade que no puder ser atendida desta forma, um requisito no
funcional geralmente trata-se de premissas e restries tcnicas aplicadas ao
projeto. Acho que essa definio, aparentemente simples, define bem um RNF.
21
22
23
Estrutura
Estrutura de um Requisito No Funcional
Como no caso dos requisitos funcionais e regras de negcio, no h um
padro estabelecido sobre a estrutura de um RNF. Mas a maioria das empresas
utiliza um formato semelhante, contendo campos especficos. O modelo a
seguir contempla os campos mais relevantes, com posterior descrio de cada
um.
Como citado para a modelagem de requisitos funcionais, o modelo abaixo
aplicvel em especificaes produzidas em Editores de Texto como o
Microsoft Word, por exemplo. recomendado que se utilize, sempre que
possvel, alguma ferramenta Case8 que d suporte a Engenharia de Requisitos,
para melhorar a produtividade na modelagem e a gesto dos requisitos.
https://pt.wikipedia.org/wiki/Ferramenta_CASE
24
Identificador
Nome
<<Texto>>
Data de
criao
<<Data>>
Autor
<<Texto>>
Data da ltima
alterao
<<Data>>
Autor
<<Texto>>
Verso
Descrio
<<Texto>>
Campo
Descrio
Nome
Data de
criao
Autor
Data da
ltima
alterao
Autor
Verso
Prioridade9
Descrio
9 http://www.ateomomento.com.br/priorizacao-de-requisitos/
25
Referente a
Desempenho
Disponibilidade
Segurana
Usabilidade
Compatibilidade
10http://www.ateomomento.com.br/o-que-e-api/
26
Categoria
Referente a
Confiabilidade
Padres
Legais
RNF01
Categoria Desempenho
Nome
Data de
criao
18/01/2016 Autor
Alexandre de Afrodsias
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
27
RNF02
Categoria Disponibilidade
Nome
Data de
criao
25/01/2015 Autor
Aristarco de Samos
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Importante
Descrio
28
29
Identificador
RNF03
Categoria Segurana
Nome
Data de
criao
30/01/2016 Autor
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
11
http://www.ateomomento.com.br/o-que-e-api/
30
RNF04
Categoria Interoperabilidade
Nome
Data de
criao
30/01/2016 Autor
Ren Descartes
Data da ltima
N/A
alterao
Autor
Verso
Prioridade Essencial
N/A
Descrio
31
RNF05
Categoria Usabilidade
Nome
Data de
criao
30/01/2016 Autor
Digenes de Apolnia
Data da
ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Importante
Descrio
32
RNF06
Categoria Compatibilidade
Nome
Data de
criao
30/01/2016 Autor
Friedrich Engels
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
Identificador
RNF07
Categoria Padres
Nome
33
Data de
criao
30/01/2016 Autor
Empdocles
Data da ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
34
Identificador
RNF08
Categoria
Legais
Nome
Data de
criao
30/01/2016 Autor
Hipcrates
Data da
ltima
alterao
N/A
Autor
N/A
Verso
Prioridade Essencial
Descrio
DTHRATE
ND
NMMEDIC
O
CRMMEDI
CO
Descrio
Tipo
Obrigatrio
Sim
Sim
35
Regra de Negcio
Deduzo que antes do lanamento do microcomputador o termo Regra de
Negcio era algo interpretado totalmente isolado dos softwares empresariais,
ou talvez nem fosse um termo conhecido pelas pessoas.
Nos tempos atuais difcil encontrar algum que entende Regra de Negcio
como algo isolado do software. Quando se fala Regra de Negcio,
praticamente sempre no contexto de um sistema. possvel uma empresa
mais arcaica viver sem software, mas no consegue viver sem regras de
negcio.
Para ilustrar isso, imaginemos uma empresa que possui um departamento
de expedio de materiais, mas que no possui software para automatizar as
atividades deste departamento. Vejamos o cenrio abaixo:
Sempre que uma pessoa se dirigir ao departamento de expedio para
solicitar uma mercadoria esta pessoa deve se identificar com seu
documento de identidade. O profissional do departamento de expedio
deve certificar-se que o documento vlido.
Aps checar que o documento vlido, o profissional dever pegar o
documento de protocolo de entrega com a pessoa, e neste documento
conter a seo e caixa onde se encontra a mercadoria.
Dever ento dirigir-se seo, na caixa identificada, pegar o material e
levar ao guich para entrega pessoa que o solicitou. Antes de realizar
a entrega, dever solicitar que a pessoa assine o livro de entregas,
incluindo seu documento e dados de endereo. No livro tambm devem
ser escritos os dados da mercadoria (nome, categoria, marca e modelo),
nome do profissional que fez a entrega, e data e hora da entrega.
Se a mercadoria solicitada no estiver na seo e caixa onde deveria
estar, o profissional do departamento dever entrar em contato com a
gerncia para reportar o problema. O mesmo deve ser feito caso
identifique-se que o documento da pessoa que est buscando o material
no vlido.
36
http://www.ateomomento.com.br/o-debito-tecnico/
37
Referente a
Unidade
Completude
Consistncia
Atomicidade
NoAmbiguidade
38
Atributo
Referente a
Critrios para processamento de faturas de mensalidades de
qualquer aluno impendente de srie.
Verificvel
Rastrevel
<<Numero>>
Nome
<<Texto>>
Data de
criao
<<Data>>
Autor
<<Texto>>
Data da ltima
alterao
<<Data>>
Autor
<<Texto>>
Verso
<<Numero>>
Dependncias <<Texto>>
39
Descrio
<<Texto>>
Campo
Descrio
Identificador
Nome
Data de
criao
Autor
Data da
ltima
alterao
Autor
Verso
Dependncias
Descrio
Exemplos
Vejamos alguns exemplos de RN. Para os exemplos utilizei o cenrio
descrito anteriormente para a empresa que possui o departamento de
expedio de materiais (entregas). Os RFs que dependem destas RNs no
esto especificados, so fictcios. Utilizaremos apenas o identificador dos RFs
(RF0099 Realizar entrega presencial de material no departamento de
expedio e RF0002 Informar por e-mail o gerente do departamento de
expedio sobre ausncia de material no almoxarifado).
40
Identificador
RN0001
Nome
Data de
criao
31/01/2016 Autor
Nagarjuna
Data da ltima
N/A
alterao
Autor
Verso
Dependncia RF0099
N/A
Identificador
RN0002
Nome
Data de
criao
31/01/2016 Autor
Nicolau de Cusa
Data da ltima
N/A
alterao
Autor
Verso
Dependncia RF0099
Descrio
N/A
41
RN0003
Nome
Data de
criao
31/01/2016 Autor
Parmnides
Data da ltima
N/A
alterao
Autor
Verso
N/A
Descrio
42
43
Exemplo
Exemplo num negcio real
44
45
46
13
http://www.ateomomento.com.br/s-o-l-i-d-srp-single-responsibility-principle/
47
Requisito Funcional
Digerir os alimentos inseridos atravs da boca e transportados pelo tubo
digestivo.
Regra de Negcio
Expelir alimentos pelo tubo digestivo quando houver o preenchimento de 100
por cento do espao do estmago.
Consideremos ainda outro contexto presente no corpo humano, ainda no
mundo do comer. Quando engolimos o alimento de maneira errada, ou
tentamos engolir algo que no passa pela traqueia, ocorre o engasgo. Vejamos
um Requisito Funcional e uma Regra de Negcio neste contexto.
Requisito Funcional
Absorver ar pelas vias areas a partir de inalao pelo nariz.
Regra de Negcio
Viabilizar um engasgo quando houver bloqueio das vias reas por entupimento.
14
https://pt.wikipedia.org/wiki/Observao
48
Requisito Funcional
Enviar pacotes ICMP para o host destino e monitorar o retorno do envio.
Requisito Funcional
Exibir estatsticas do envio dos pacotes ICMP ao trmino da execuo do
programa.
E, para cada contexto representado pelas imagens, algumas regras de
negcio tambm.
15
https://pt.wikipedia.org/wiki/Ping
https://pt.wikipedia.org/wiki/Internet_Control_Message_Protocol
17
https://www.vivaolinux.com.br/dica/Entendendo-o-campo-TTL-do-Ping
16
49
Regra de Negcio
O envio dos pacotes ICMP dever se repetido quatro vezes por cada execuo
do programa. Mesmo que o TTL dos pacotes ICMP do primeiro envie esgote,
as trs tentativas de envio restantes devero ser executadas.
Regra de Negcio
Interromper execuo quando no for possvel realizar a traduo do nome do
domnio para um endereo IP.
Regra de Negcio
Interromper a execuo quando o tempo de vida (TTL) dos pacotes ICMP
enviados expirar.
18
https://pt.wikipedia.org/wiki/Domain_Name_System
50
Concluindo
Vimos que os dois conceitos citados so coisas diferentes, e no sutilmente
bem diferentes, so muito diferentes.
51
Priorizao de Requisitos
Quando falamos em Escopo do Sistema (no Escopo do Projeto),
estamos falando de requisitos (tanto funcionais quanto No Funcionais, e
tambm regras de negcio)
A grosso modo, vamos entender como requisito tudo aquilo que deve
ser feito no sistema, que compe o escopo do sistema (o que j vimos
anteriormente neste eBook).
Escopo do projeto algo diferente de escopo do sistema, em projetos de
desenvolvimento de software. No escopo do projeto geralmente temos
mais coisas alm do sistema em si atividades de infraestrutura, gesto,
configurao etc., por exemplo. No escopo do sistema, que parte do
escopo do projeto, como citado no pargrafo inicial deste post, o que
temos so requisitos, basicamente. Na literatura de gesto de projeto, o
escopo do sistema chamado Escopo do Produto.
O Cone da Incerteza19 nos explica isso melhor, mas outros fatores
tambm contribuem para a problemtica do escopo; abaixo alguns para
exemplo.
Informaes faltantes
Durante a especificao a equipe faz reunio com os usurios, obtm
leis, normas, e-mails etc. Aps a concluso da especificao, ocorre
a validao, e aps algumas idas e vindas, o escopo validado. Na hora da
materializao dos requisitos (leia-se projeto, construo, testes etc.) comea
19
http://www.ateomomento.com.br/o-problema-da-descoberta-do-escopo-o-cone-da-incerteza/
52
o puxa, esqueci, tinha isso tambm e o puxa, isso aqui um pouco diferente
do que tnhamos pensado.
www.ateomomento.com.br/relacao-com-o-usuario/
53
Essencial
Realmente fundamental para o sistema, sem o qual o sistema no pode
ser dado como completo, ou apto para produo. So requisitos que se no
so implementados impedem uma implantao ou a concluso do sistema.
So compulsrios, no sendo possvel aplicar solues de contorno ou
paliativos para eles.
Importante
Deve ser parte do escopo, mas no bloqueia o sistema a entrar em
produo. como se o sistema ficasse com uma pendncia de
escopo criando dbito tcnico21 que ser atendido em momento oportuno.
Sem um requisito importante, o sistema poder rodar, funcionar, ser
21
http://www.ateomomento.com.br/o-debito-tecnico/
54
Desejvel
No indispensvel para o sistema estar completo, para entrar em
produo. Tambm no algo que, mesmo postergado, dever ser feito
obrigatoriamente.
Sem um requisito desejvel o sistema deve funcionar de maneira
satisfatria, atendendo completamente seu objetivo. Por ser algo que no
precisa ser feito para que o sistema esteja completo, a menor das prioridades,
e deve ser postergado para, se possvel ser viabilizado no futuro.
55
56