Inspeção, Especificação e Analise de Requisitos
Inspeção, Especificação e Analise de Requisitos
Inspeção, Especificação e Analise de Requisitos
Gerenciamento de Requisitos
SENAI – DEPARTAMENTO REGIONAL
DE SANTA CATARINA
MANTENEDORA
Para Iniciar.........................................................................................5
Para Concluir.....................................................................................99
Referências........................................................................................103
PARA INICIAR
5
Por meio de conceitos, análises críticas e exemplos concretos, você
desenvolverá as capacidades essenciais para o sucesso em projetos de
desenvolvimento de software. Assim, você estará preparado para enfrentar
desafios reais no mundo profissional com confiança.
Estamos empolgados para compartilhar esse conhecimento com você e
acompanhá-lo nessa jornada rumo ao sucesso!
Vamos em frente!
6
ESTUDO E PRÁTICA I
CLASSIFICAÇÃO E ESPECIFICAÇÕES DE REQUISITOS
E-book I
7
Classificação de requisitos
CLASSIFICAÇÃO DE REQUISITOS
Os requisitos desempenham um papel fundamental no sucesso do
desenvolvimento de software. Portanto, é crucial aprofundar o conhecimento
sobre requisitos para assegurar que eles atendam às necessidades das partes
interessadas no projeto. Isso engloba a compreensão da categorização
dos requisitos e das várias maneiras de descrevê-las, a fim de obter uma
compreensão mais precisa das demandas dos usuários, clientes e outras
partes envolvidas. Com uma abordagem cuidadosa e estruturada na gestão de
requisitos, é possível criar um software que satisfaça todas as expectativas e
exigências, resultando em um produto final de elevada qualidade.
Por essa razão, a compreensão dos requisitos é um elemento-chave para o
sucesso no desenvolvimento de software e pode ser alcançada por meio de uma
análise aprofundada, de refinamento constante e de envolvimento das partes
interessadas no processo. De acordo com Sommerville (2018, p. 85), os “[...]
requisitos de um sistema são as descrições dos serviços que o sistema deve
prestar e as restrições a sua operação.”
Veja que o autor se refere à necessidade de expressar tanto o que o sistema
deve fazer quanto o que ele não deve fazer. Além disso, o autor complementa
essa ideia ao diferenciar os requisitos em duas categorias: requisitos de usuário,
que são requisitos abstratos, declarados em linguagem natural e alto nível e os
requisitos de sistema, que devem conter uma descrição detalhada do que o
sistema deve oferecer ao usuário.
Outros autores acrescentam que os requisitos de usuário representam as
necessidades e as expectativas do usuário final do sistema ou software.
10 Classificação de requisitos
Esses requisitos podem ser obtidos através das mais diversas técnicas de
levantamento de requisitos e eles descrevem o que o usuário precisa que o
sistema faça e como ele deve se comportar para atender às suas necessidades
(WIEGERS; BEATTY, 2013). Essa abordagem permite considerar a diversidade de
usuários finais e suas demandas específicas.
Por outro lado, os requisitos de sistema são as características e
funcionalidades que o sistema deve ter para atender aos requisitos de usuário
e atingir seus objetivos. Eles são elaborados a partir dos requisitos de usuário e
levam em consideração as limitações tecnológicas, orçamentárias e de recursos
humanos. Os requisitos de sistema são, portanto, especificações técnicas, como
desempenho, confiabilidade, segurança e escalabilidade, que o sistema deve ter
para cumprir os requisitos de usuário (VALENTE, 2020). Os requisitos de sistema
são as peças que se juntam para criar um software coeso e operacional.
Classificação de requisitos 11
Para exemplificar melhor do que se trata essa diferença, serão
utilizados exemplos de requisitos relacionados a uma loja de
vestuário:
• Requisito de usuário: Os clientes devem ter a opção de escolher a
forma de pagamento mais conveniente para eles, incluindo cartão de
crédito, débito ou pagamento em dinheiro.
12 Classificação de requisitos
Essa relação permite que os desenvolvedores compreendam com precisão o que
é esperado do sistema e ajuda a garantir que ele seja desenvolvido de acordo
com as expectativas das partes interessadas.
Além disso, a classificação dos requisitos em categorias ajuda a assegurar que
todas as necessidades importantes sejam consideradas e atendidas, evitando
confusões e ambiguidades em relação às expectativas do sistema. Com isso, é
possível aumentar a qualidade do software desenvolvido e evitar retrabalhos ou
insatisfações por parte dos usuários. Veja, na sequência, cada uma visão mais
detalhada de cada uma dessas categorias.
Requisitos funcionais
Os requisitos funcionais, conforme Sommerville (2018, p. 88), consistem
em “[...] declarações dos serviços que o sistema deve fornecer, do modo
como o sistema deve reagir a determinadas entradas e de como deve se
comportar em determinadas situações.” Durante o processo de definição dos
requisitos de um sistema, as necessidades específicas dos usuários devem ser
levadas em consideração, visando solucionar os problemas de negócio que os
usuários enfrentam.
De acordo com o autor, além de estabelecer os serviços a serem oferecidos,
um requisito funcional deve apresentar o comportamento esperado do sistema
em situações específicas, bem como explicitar o que o sistema não deve fazer.
Classificação de requisitos 13
Essa abordagem assegura que o sistema atenda às expectativas dos usuários e
ofereça a funcionalidade necessária para solucionar os problemas de negócio de
forma eficiente.
É de suma importância que os requisitos funcionais sejam rastreáveis e
testáveis, de modo a assegurar que o sistema seja desenvolvido conforme as
especificações e que suas funcionalidades operem adequadamente. Segundo o
IEEE (2017), a rastreabilidade dos requisitos desempenha um papel fundamental
no gerenciamento de mudanças e na garantia da qualidade do software.
“
A rastreabilidade de requisitos é a habilidade de identificar e registrar as
conexões entre diferentes requisitos, bem como entre requisitos e outros
elementos do projeto de software, como testes, casos de uso e código-fonte.
Segundo o IEEE (2017), a rastreabilidade de requisitos é definida como:
14 Classificação de requisitos
Isso auxilia os engenheiros de requisitos e a equipe de desenvolvimento a
garantir a consistência e o atendimento de todas as necessidades dos usuários
durante o processo de desenvolvimento. Uma forma simples de elaborar uma
matriz de rastreabilidade de requisitos é montar uma tabela em que as linhas
são os requisitos e as colunas também o são. Os requisitos que têm alguma
dependência, estarão marcados na célula correspondente, facilitando a análise e
o acompanhamento das inter-relações entre os requisitos. Veja o exemplo:
Classificação de requisitos 15
5. O veículo deve possuir um porta-malas espaçoso, para acomodar as
bagagens da família em viagens.
6. O veículo deve ter um sistema de entretenimento que permita conectar
dispositivos móveis, para ouvir música ou assistir a vídeos.
7. O veículo deve ter um consumo de combustível razoável, para minimizar
os custos com abastecimento.
8. O veículo deve ser fácil de estacionar e manobrar em locais apertados,
como estacionamentos de supermercados.
Veja que, na lista, os requisitos foram especificados de acordo com as
necessidades repassadas pelas partes interessadas (neste caso a família),
apresentando um determinado nível de detalhe. Em alguns casos, há mais
especificidades, características, enquanto, em outros, as definições permanecem
mais abertas, como no segundo requisito, que determina a necessidade dos
airbags, mas não entra em detalhes sobre a sua posição ou quantidade.
O quinto requisito fala que precisa ter um porta-malas espaçoso. O que é
espaçoso para uma pessoa, é para outra também? Então, por que não detalhar?
Parece um pouco exagerado ter que detalhar tudo isso? Se não o fizer, podem
haver muitas dúvidas. Observe também que fica difícil referenciar cada requisito
mencionando apenas sua posição na lista, como primeiro, segundo, terceiro.
“
Wiegers e Beatty (2013) enfatizam a importância de documentar todos os
requisitos, mesmo aqueles que parecem óbvios, para garantir que eles sejam
compreendidos por todas as partes envolvidas no projeto. Eles afirmam que:
16 Classificação de requisitos
Para ter um detalhamento melhor e uma melhor forma de identificação, é
apresentado uma reescrita dos requisitos do veículo.
RF03 - O veículo deve possuir sistema de freios com ABS e EBD, para
garantir a estabilidade do carro em situações de frenagem brusca.
Classificação de requisitos 17
Note que, na lista, os requisitos foram especificados de acordo com as
necessidades relatadas pelas partes interessadas (a família), oferecendo um
determinado nível de detalhamento. Da mesma forma, as listas de requisitos
funcionais de sistemas a serem construídos também devem seguir esse padrão.
A lista inicial de requisitos é baseada no levantamento de informações e deve
ser continuamente refinada e revisada pelos engenheiros de requisitos e pelas
partes interessadas envolvidas.
Nesta nova lista de requisitos, um aspecto adicional foi incorporado: a
atribuição de uma identificação única para cada requisito, composta pela
sigla “RF” (para requisito funcional) e um número. Isso permite que os
requisitos sejam facilmente referenciados em reuniões, e-mails ou documentos
de alteração de escopo. A numeração também torna mais simples a classificação
dos requisitos por ordem de importância. Por exemplo, o engenheiro de
requisitos pode descrever facilmente que foi necessário alterar o RF21 para
incluir os detalhes discutidos na última reunião, e todos serão capazes de
identificar rapidamente o requisito em questão.
Agora que você compreendeu que os requisitos funcionais estão ligados
essencialmente à funcionalidade do veículo, acompanhe os requisitos funcionais
de um sistema de loja de conveniência em um posto de gasolina. Esses requisitos
descrevem as funcionalidades essenciais do sistema a serem desenvolvidos.
18 Classificação de requisitos
RF01: O sistema deve permitir o cadastro de produtos disponíveis na
loja de conveniência, incluindo descrição, preço e foto.
Classificação de requisitos 19
“
A qualidade dos requisitos de software é crítica para o sucesso do projeto,
conforme destacado por Pressman e Maxim (2021), que afirmam que
20 Classificação de requisitos
Para ilustrar a importância dos requisitos de software em uma situação real,
imagine um cenário em que uma empresa de desenvolvimento de software foi
contratada por uma grande rede de supermercados para criar um sistema de
gerenciamento de estoque A equipe de desenvolvimento recebeu a tarefa de
criar um sistema que pudesse gerenciar o estoque dos produtos em todas as
lojas da rede e fornecer informações precisas em tempo real.
Classificação de requisitos 21
O sistema também não considerou a complexidade do estoque de
produtos sazonais, levando a problemas na época de feriados ou eventos
especiais, quando a demanda por produtos específicos aumentava
significativamente.
Consequentemente, os gerentes de lojas estavam insatisfeitos com
o sistema de gerenciamento de estoque e a rede de supermercados
perdeu vendas e clientes por não ter produtos disponíveis nas
prateleiras. Após uma análise dos resultados do sistema, foi constatado
que muitos requisitos importantes foram mal definidos, incompletos ou
inconsistentes. A equipe de desenvolvimento percebeu que o fracasso
do projeto ocorreu, em grande parte, devido a falhas no processo de
definição de requisitos.
Por fim, a rede de supermercados precisou cancelar o projeto e buscar
outra empresa de desenvolvimento de software para criar um sistema de
gerenciamento de estoque mais eficiente e preciso.
Esse cenário mostra como requisitos bem definidos, claros e precisos são
fundamentais para o sucesso de projetos de software. A comunicação efetiva
entre a equipe de desenvolvimento e os stakeholders é essencial para garantir
que as necessidades e as expectativas sejam compreendidas e incorporadas
aos requisitos.
Uma maneira eficaz de realizar essa tarefa é revisar e atualizar os requisitos
de forma contínua, conforme o projeto avança. É importante envolver todas
as partes interessadas e os membros da equipe de desenvolvimento nesse
processo, a fim de garantir que as perspectivas e necessidades de todos sejam
consideradas e incorporadas aos requisitos. Dessa forma, é possível manter
a relevância dos requisitos funcionais e garantir que o software desenvolvido
atenda às expectativas do projeto.
22 Classificação de requisitos
Requisitos não funcionais
De acordo com Vazquez e Simões (2016), os requisitos não funcionais são
fundamentais para complementar a especificação do software. Enquanto
os requisitos funcionais definem o que o software deve fazer, os requisitos
não funcionais estabelecem os critérios para que ele funcione bem, ou seja,
desempenhe adequadamente suas funções. Ao determinar esses critérios, os
requisitos não funcionais estabelecem os níveis de serviço esperados para o
software.
Segundo o IEEE (2014), esses requisitos têm como objetivo restringir as
soluções a serem desenvolvidas. Essas restrições podem incluir requisitos
de desempenho, manutenção, segurança, confiabilidade, interoperabilidade,
entre outros tipos que estejam relacionados ao sistema como um todo e não a
uma funcionalidade específica. Esses requisitos também são conhecidos como
requisitos de qualidade.
Por sua vez, o IIBA (2011) define que os requisitos não funcionais estão
relacionados ao ambiente no qual o software deve operar. Esses requisitos
abrangem aspectos como desempenho, usabilidade, segurança, confiabilidade
e outros, e devem ser considerados para garantir que o sistema atenda às
expectativas dos usuários e do ambiente em que será utilizado. Em resumo,
os requisitos não funcionais são fundamentais para garantir a qualidade do
software desenvolvido e sua adequação ao ambiente no qual será utilizado.
Os requisitos não funcionais frequentemente possuem uma importância maior
em comparação aos requisitos funcionais (KERR, 2015). Destaca-se a importância
dos requisitos não funcionais para o bom funcionamento do software. Embora
um usuário comum possa, em muitos casos, lidar com falhas em requisitos
funcionais, a falta de um requisito não funcional essencial pode tornar o
sistema inoperável para o usuário. Portanto, é fundamental que os requisitos
não funcionais sejam considerados e atendidos durante o desenvolvimento do
software, garantindo sua eficácia e usabilidade para os usuários.
Classificação de requisitos 23
Um exemplo de requisito funcional que, se estiver inoperante, pode
permitir que o usuário realize o trabalho de outra forma. Por exemplo,
é a possibilidade de realizar a busca por um produto em uma loja
virtual. Se essa funcionalidade não estiver funcionando corretamente, o
usuário ainda pode navegar pelas categorias de produtos ou usar outras
ferramentas de pesquisa para encontrar o que deseja.
Já um exemplo de requisito não funcional que impede qualquer
atividade do usuário seria a disponibilidade do sistema. Se o sistema
não estiver disponível, o usuário não poderá realizar nenhuma atividade,
mesmo que seja capaz de contornar falhas em requisitos funcionais.
Por exemplo, se um site de comércio eletrônico estiver fora do ar, o
usuário não poderá navegar pelo site, fazer compras, visualizar produtos
ou realizar qualquer outra atividade. A indisponibilidade do sistema,
nesse caso, é um requisito não funcional crítico e que impede qualquer
atividade do usuário.
“
do que os requisitos funcionais, especialmente para iniciantes em tecnologia. Isso
ocorre porque os requisitos não funcionais estão relacionados a aspectos como
desempenho, segurança, confiabilidade, usabilidade e outros fatores que podem
ser subjetivos e difíceis de quantificar. Vazquez e Simões (2016) afirmam que:
24 Classificação de requisitos
Além disso, os requisitos não funcionais podem ser mais técnicos e exigir
conhecimentos específicos, como arquitetura de sistemas, bancos de dados e
redes de computadores. Isso pode tornar difícil para um iniciante em tecnologia
compreender completamente esses requisitos.
Para ajudar a superar essa dificuldade, é importante que os iniciantes em
tecnologia estudem e se familiarizem com os diferentes tipos de requisitos não
funcionais e suas implicações no desenvolvimento do software. Eles também
podem buscar orientação e apoio de profissionais mais experientes, além de
utilizar ferramentas e recursos de gerenciamento de requisitos para facilitar a
identificação e a especificação desses requisitos.
Beatty and Wiegers (2013) destacam a importância dos requisitos não
funcionais, enfatizando a tendência de negligenciá-los devido à ênfase natural
na funcionalidade do produto. Eles ressaltam a necessidade de consultar os
clientes sobre as características de qualidade, como desempenho, usabilidade,
segurança e confiabilidade, além de documentar esses requisitos não funcionais
e seus critérios de aceitação com a máxima precisão possível.
De acordo com Sommerville (2018), os requisitos não funcionais podem ser
difíceis de serem identificados pelos clientes e usuários diretos de um sistema,
devido à necessidade de conhecimentos técnicos específicos. Alguns requisitos
não funcionais podem ser complexos e difíceis de entender, especialmente
para aqueles sem experiência em tecnologia. Nesse sentido, é recomendável
que o analista de requisitos envolva pessoal técnico da área de tecnologia da
organização demandante do software, que conheça a realidade da organização e
possa ajudar a identificar ou até mesmo determinar os requisitos não funcionais.
Classificação de requisitos 25
Atenção
Eles podem estar relacionados a diversas necessidades dos usuários,
tais como desempenho, segurança, usabilidade, confiabilidade,
escalabilidade, entre outros. Além disso, os requisitos não funcionais
podem estar associados a restrições orçamentárias, políticas
organizacionais e regulamentações externas, como a Lei Geral
de Proteção de Dados (LGPD) ou outras normas de segurança de
informação aplicáveis (SOMMERVILLE, 2018).
26 Classificação de requisitos
Agora que você percebeu que os requisitos não funcionais estão ligados a
questões gerais, de confiabilidade e de características gerais de um software,
acompanhe exemplos de requisitos não funcionais de um sistema de informação.
São exemplos de requisitos não funcionais de um sistema de uma conveniência
de um posto de gasolina:
RNF03 - Usabilidade: O sistema deve ser fácil de usar e ser intuitivo para
os usuários, independentemente de sua experiência com tecnologia.
Classificação de requisitos 27
Ao analisar esta lista de requisitos não funcionais, é preciso ponderar que
muitos deles não são testáveis. O que é uma alta disponibilidade? O que é alto
para um contexto é alto para outro? Como ele deve interoperar com outros
sistemas? A seguir, será discutida e apresentada uma descrição mais detalhada
dos requisitos RNF02, RNF03, RNF04, RNF05 e RNF07, que permitam sua
testabilidade e mensurabilidade.
RNF02 - Desempenho: o sistema deve ser capaz de lidar com até 1.000
transações simultâneas, sem prejudicar o desempenho, que deve ser de
no máximo 2 segundos por transação.
28 Classificação de requisitos
Os requisitos não funcionais possuem igual importância em relação aos
requisitos funcionais em um projeto de software, pois definem as características
do sistema, como sua performance, segurança, usabilidade, escalabilidade
e outros aspectos que afetam diretamente a experiência do usuário final.
Identificá-los e documentá-los desde o início do projeto é essencial para que
sejam incorporados na arquitetura e no design do sistema, garantindo sua
qualidade e a satisfação do usuário.
Atenção
Não entender direito os requisitos não funcionais podem causar muitos
problemas e consequências ruins para o projeto de software. Alguns desses
problemas incluem: o sistema não ter uma boa performance, não ser
seguro o suficiente, não ser fácil de usar, não conseguir crescer conforme o
número de usuários aumenta e ter dificuldades para manutenção.
Por isso, é importante que os requisitos não funcionais sejam bem definidos
desde o começo do projeto para garantir que o sistema tenha qualidade e
satisfaça as necessidades do usuário.
A inclusão dos requisitos não funcionais é crucial para prevenir problemas
futuros, como o aumento dos custos para correção de falhas ou a perda de
clientes devido a problemas de desempenho. Portanto, é essencial considerar
esses requisitos desde a fase de planejamento e monitorá-los durante todo o
processo de desenvolvimento, garantindo assim que o sistema final atenda
tanto às necessidades funcionais quanto às não funcionais. Em última análise, a
consideração dos requisitos não funcionais desempenha um papel fundamental
para o sucesso de um projeto de software.
Classificação de requisitos 29
Requisitos inversos ou restrições
Os requisitos inversos, também conhecidos como restrições, são condições
declaradas que impõem limitações a certos aspectos do sistema. Essas
restrições podem estar relacionadas tanto a aspectos funcionais quanto não
funcionais do software. Uma regra de negócio restritiva estabelece que certas
ações devem ser realizadas ou evitadas, ou que apenas determinadas pessoas
ou perfis têm permissão para executar tais ações. Em vez de descrever o que
o sistema deve fazer, os requisitos inversos, ou restrições, especificam o que o
sistema não pode fazer ou que limitações ele deve respeitar. Esses requisitos
são importantes para garantir que o sistema esteja em conformidade com as
políticas e normas relevantes, bem como para evitar problemas de desempenho
ou segurança que possam surgir se não houver restrições adequadas (WIEGERS;
BEATTY, 2013).
Um exemplo de restrição que pode ser vinculada a um requisito funcional é
o cenário de um aplicativo para facilitar a compra de passagens e a consulta
de horários e rotas. O requisito funcional seria permitir que os usuários
comprassem suas passagens através do aplicativo, enquanto a restrição para esse
requisito funcional poderia ser a necessidade de integração com um sistema de
processamento de pagamentos já existente na empresa que não permite o uso de
determinadas formas de pagamento (como o PIX, por exemplo).
30 Classificação de requisitos
Quando declaramos restrições vinculadas a requisitos não funcionais,
geralmente eles estão vinculados a aspectos de performance ou tecnologias,
como os exemplos a seguir:
• O tamanho do aplicativo não deve exceder 50 MB;
Atenção
É essencial destacar que a atividade de identificação, definição e
especificação de requisitos é uma tarefa intelectualmente desafiadora,
que requer uma abordagem disciplinada e sistemática. Para lidar
com esses desafios, a revisão de requisitos é uma atividade crucial no
processo de engenharia de requisitos. Ela envolve a análise sistemática
dos requisitos para identificar e corrigir possíveis problemas. A revisão
de requisitos ajuda a garantir que os requisitos sejam compreendidos
corretamente, que sejam consistentes e completos e que atendam às
necessidades do cliente.
Classificação de requisitos 31
clientes e usuários finais. A revisão de requisitos deve ser conduzida em várias
etapas do processo de desenvolvimento, incluindo a elicitação de requisitos, a
análise e a especificação de requisitos e a validação de requisitos.
Durante a revisão, a equipe deve avaliar os requisitos quanto à sua clareza,
consistência, completude, verificabilidade e rastreabilidade. Isso envolve analisar
cada requisito para garantir que ele seja compreendido corretamente, que não
haja conflitos ou redundâncias com outros requisitos, além de ser verificado e
rastreado ao longo do processo de desenvolvimento do projeto.
A classificação de requisitos em funcionais e não funcionais é um processo
essencial na elaboração de um projeto de software. Como resultado dos
processos de elicitação de requisitos, eles precisam ser documentados de forma
adequada. Enquanto os requisitos funcionais descrevem as funcionalidades e
ações que o sistema deve realizar, os requisitos não funcionais especificam como
essas ações devem ser realizadas.
A distinção entre esses dois tipos de requisitos é muito importante, pois,
embora ambos sejam essenciais para o sucesso do projeto, as falhas nos
requisitos não funcionais podem ser mais graves e difíceis de corrigir, pois
englobarão o projeto como um todo. Os requisitos funcionais têm uma
tendência de serem mais fáceis de medir e testar, enquanto os requisitos não
funcionais tendem a ser mais subjetivos e difíceis de definir claramente. Por isso,
é fundamental que a equipe de desenvolvimento esteja atenta à definição e à
validação desses requisitos.
Atenção
A classificação de requisitos auxilia a equipe de desenvolvimento
a priorizar as funcionalidades do sistema, estabelecer metas de
desempenho e segurança, além de planejar os testes. Além disso, a
classificação de requisitos contribui para garantir que os objetivos do
projeto estejam alinhados às necessidades do cliente ou usuário final,
resultando em um produto final mais satisfatório e que atenda às
expectativas das partes interessadas.
32 Classificação de requisitos
Os requisitos funcionais definem o que o sistema deve fazer. Já os requisitos
não funcionais especificam como o sistema deve se comportar em termos
de estrutura, qualidade e desempenho. E, os requisitos inversos estabelecem
as restrições e limitações que o sistema deve obedecer. Ao considerar e
descrever adequadamente esses diferentes tipos de requisitos, as equipes de
desenvolvimento podem construir softwares que atendam às necessidades dos
usuários, cumpram os padrões de qualidade e garantam a conformidade com as
restrições estabelecidas.
Classificação de requisitos 33
REFERÊNCIAS
34 Classificação de requisitos
E-book II
37
Modelagem e especificação de requisitos
MODELAGEM E ESPECIFICAÇÃO DE REQUISITOS
A documentação de software desempenha um papel essencial ao estabelecer
um contrato claro entre a equipe de desenvolvimento e as partes interessadas.
Nela são descritas as funcionalidades, as limitações, os requisitos e as
expectativas do software, permitindo que as partes concordem com o produto
final. Existem diferentes técnicas para especificar os requisitos. E, discutiremos
aqui como esses métodos podem contribuir para a qualidade do software.
De acordo com Sommerville (2018), a especificação de requisitos é o processo
formal de documentar os requisitos de usuário e de converter o sistema em um
documento, conhecido como “documento de requisitos”. Embora seja desejável
que esses requisitos sejam claros, precisos, completos e consistentes, alcançar
a perfeição é quase impossível na prática devido a diferentes interpretações dos
stakeholders e possíveis conflitos ou inconsistências entre os próprios requisitos.
Ao redigir uma especificação de requisitos, é importante garantir que todas as
partes interessadas tenham conhecimento do software, evitando o uso de jargões
e sem incluir detalhes da arquitetura. A especificação deve ser independente de
tecnologia, com foco nos aspectos de negócio (SOMMERVILLE, 2018).
• O software deve ser rápido: este requisito pode ser mais específico,
definindo quais funções do software precisam ser rápidas, como a resposta a
consultas de banco de dados ou a abertura de arquivos grandes.
• O software deve ser fácil de instalar: este requisito pode ser mais
rastreável se especificar quais etapas do processo de instalação devem
ser simplificadas, como a configuração de parâmetros ou a escolha de
componentes opcionais.
• O sistema deve ser amigável para os usuários finais: este requisito pode
ser mais claro se especificar as características de amigabilidade mais
importantes para os usuários, como a disponibilidade de ajuda contextual
ou a personalização de menus.
• O software deve ser fácil de atualizar e manter: este requisito pode ser
mais coeso se especificar quais funções do software precisam ser atualizadas
com mais frequência, quais ferramentas serão usadas para manter o software
e quais são as expectativas para a rapidez da manutenção.
1 Requisitos de negócio
2 Escopo e limitações
3 Contexto de negócios
1. Requisitos de negócio
3.Contexto de negócios
A Locadora de Veículos atende uma variedade de clientes, incluindo
turistas, executivos em viagem de negócios e clientes locais que precisam
de um veículo temporariamente.
Perfis das partes interessadas: Clientes da locadora: pessoas físicas ou
jurídicas que desejam alugar um veículo para fins diversos, como viagens
de lazer ou trabalho.
• Funcionários das lojas: equipe responsável por gerenciar a frota de
veículos e realizar o atendimento ao cliente nas 20 lojas da locadora.
• Objetivos do sistema:
• Requisitos funcionais:
• Restrições:
• Prioridades:
• Prazos:
• Usuários:
Quem serão os usuários finais do sistema e como eles interagirão com ele.
• Ambiente:
Objetivos do sistema:
Requisitos funcionais:
Prioridades:
As prioridades das funcionalidades do sistema são as seguintes:
• Cadastro de veículos: o sistema deve permitir o cadastro de novos
veículos, incluindo informações como modelo, ano, placa e categoria.
Alta prioridade.
Ambiente:
Registrar paciente
Recepcionista
Transferir dados
Contatar paciente
https://player.vimeo.com/
video/860951808?h=55c9a76bac
https://player.vimeo.com/
video/860952607?h=1e650d029d
https://player.vimeo.com/
video/860954892?h=49914741c7
61
Infocast
63
Definition of Ready e
Definition of Done
Olá! Neste podcast, vamos falar sobre duas práticas muito importantes
utilizadas em projetos ágeis de desenvolvimento de software: Definition of
Ready e Definition of Done.
Antes de começarmos, é importante destacar que o objetivo do
desenvolvimento ágil é entregar um software de alta qualidade em um curto
espaço de tempo. Para alcançar esse objetivo, é necessário garantir que todos os
membros da equipe tenham uma compreensão clara do que é esperado deles e
quando cada tarefa será concluída.
É aí que entram as definições de prontidão (Definition of Ready) e de
conclusão (Definition of Done).
A Definição de Prontidão é um conjunto de critérios que uma tarefa ou
requisito precisa atender antes de ser considerado pronto para ser incluído
em uma iteração ou sprint e ser desenvolvido. Esses critérios podem abranger
aspectos como o detalhamento completo do requisito, validação com o cliente,
definição dos critérios de aceitação, entre outros.
Ao definir critérios claros para a prontidão de uma tarefa, a equipe garante
que todos os requisitos estejam completos e prontos para serem implementados
antes do início de uma iteração ou sprint. Isso evita interrupções no
desenvolvimento e permite que a equipe possa focar na implementação e na
entrega de valor ao cliente.
Já a Definição de Conclusão é um conjunto de critérios que uma tarefa ou
requisito deve atender para ser considerado concluído e entregue ao cliente.
Esses critérios podem incluir, por exemplo, testes automatizados, validação do
cliente, documentação completa, entre outros.
65
A Definição de Conclusão é essencial para garantir que o software entregue
atenda aos requisitos e às expectativas do cliente. Ao definir claramente os
critérios de conclusão, a equipe evita entregas incompletas ou com problemas,
garantindo a qualidade do produto final.
É importante destacar que tanto a Definição de Prontidão quanto a
Definição de Conclusão são revisadas e atualizadas continuamente durante
todo o processo de desenvolvimento. Elas são essenciais para o sucesso do
desenvolvimento ágil, pois garantem que todos na equipe trabalhem de forma
alinhada em busca do objetivo comum.
Concluindo, as Definições de Prontidão e de Conclusão são práticas
fundamentais para a entrega de software de alta qualidade em um curto espaço
de tempo. Ao definir critérios claros para a prontidão e a conclusão de cada
tarefa, a equipe garante que todos os requisitos sejam completos e entregues
ao cliente com qualidade. Lembre-se de revisar e atualizar essas definições
continuamente durante todo o processo de desenvolvimento para garantir que
todos estejam alinhados e trabalhando juntos em busca do sucesso do projeto.
Espero que este episódio tenha sido esclarecedor e útil para você.
Até a próxima!
66
INVEST: construa histórias de
usuário eficazes
Olá, você já ouviu falar do conceito INVEST em histórias de usuário? Se
não, prepare-se para descobrir como aplicar esse princípio para criar histórias
eficazes e impactantes. INVEST é um acrônimo apresentado por Wake (2003) e
que representa seis características essenciais que as histórias de usuário devem
possuir. Vamos conhecer cada uma delas e entender como podem melhorar o
processo de desenvolvimento de software.
A letra I faz referência à palavra independente. Uma história de usuário deve ser
independente, ou seja, ela deve ser autônoma e não depender de outras histórias
para ser implementada. Isso permite que a equipe de desenvolvimento trabalhe em
paralelo e priorize as histórias de acordo com o valor que cada uma entrega.
A letra N vem de negociável. As histórias de usuário devem ser negociáveis, ou
seja, flexíveis o suficiente para permitir discussões e ajustes entre a equipe e os
stakeholders. Essa negociação é fundamental para garantir que as necessidades
e expectativas de todos sejam atendidas.
A letra V vem de valiosa . Uma história de usuário deve agregar valor ao cliente
ou usuário final. Ela deve representar uma funcionalidade ou melhoria que seja
relevante e traga benefícios reais para o negócio. Ao manter o foco na entrega de
valor, podemos direcionar nossos esforços para aquilo que realmente importa.
A letra E de estimável. É importante que as histórias de usuário sejam
estimáveis, ou seja, seja possível estimar o tempo necessário para sua
implementação. Isso ajuda na definição de prazos, alocação de recursos e no
planejamento do projeto como um todo.
A letra S vem da palavra inglesa small, ou seja, pequena. Histórias de usuário
devem ser pequenas o suficiente para serem concluídas em um curto período de
tempo, geralmente em uma ou algumas iterações. Ao dividir as funcionalidades
em histórias menores, torna-se mais fácil acompanhar o progresso, obter
feedback e realizar ajustes conforme necessário.
67
A letra T vem de testável. Por fim, as histórias de usuário devem ser testáveis.
Isso significa que deve ser possível definir critérios claros de aceitação e criar
testes que comprovem que a funcionalidade foi implementada corretamente.
Testar as histórias é fundamental para garantir a qualidade do software e a
satisfação dos usuários.
Agora que você compreendeu o conceito INVEST, pode aplicá-lo ao criar
suas histórias de usuário. Lembre-se de torná-las independentes, negociáveis,
valiosas, estimáveis, pequenas e testáveis. Isso ajudará sua equipe a criar um
produto de alta qualidade, focado nas necessidades dos usuários e com um
processo de desenvolvimento mais eficiente.
Espero que esse conhecimento o inspire a aprimorar suas histórias de usuário
e a alcançar resultados ainda mais impactantes em seus projetos.
Até a próxima!
68
Quero saber +
https://youtu.be/WDNrLH7vwgQ
https://youtu.be/VgTBe0-kYz4
69
Artigo Engenharia de Software 3: requisitos não funcionais
Este artigo, da Dev Media, apresenta uma visão sobre a importância dos
Requisitos Não Funcionais na construção da arquitetura de um software.
https://www.devmedia.com.br/artigo-engenharia-de-
software-3-requisitos-nao-funcionais/9525
https://www.atlassian.com/br/agile/project-
management/user-stories
https://www.devmedia.com.br/personas-e-user-story-
mapping-identificando-o-seu-verdadeiro-publico-
alvo/31699
70
Resumindo
71
ESTUDO E PRÁTICA II
GERENCIAMENTO DE REQUISITOS
E-book I
73
Gerenciamento de requisitos
CONCEITOS DE GERENCIAMENTO DE REQUISITOS
O gerenciamento de requisitos é uma atividade essencial que percorre todo
o ciclo de vida do software, desde sua concepção até sua utilização contínua
em produção. À medida que o software é desenvolvido e disponibilizado aos
usuários, é natural que surjam necessidades de modificação e evolução. Nesse
contexto, o gerenciamento de requisitos desempenha um papel fundamental,
assegurando que as demandas dos usuários sejam atendidas e que o software
permaneça relevante e eficaz ao longo do tempo.
No decorrer deste material, exploraremos detalhadamente o que é o
gerenciamento de requisitos e sua importância. Durante a fase de levantamento
de necessidades e requisitos, lidamos com um sistema em seu estágio inicial,
em que ainda não existe um software implementado. No entanto, é importante
considerar que um software tem uma vida útil significativa, sendo utilizado
em produção por muitos anos, inclusive décadas. Essa longevidade ressalta a
importância de se lidar com as mudanças e alterações ao longo do ciclo de vida
do software, garantindo a eficiência e a eficácia das demandas da empresa por
meio do gerenciamento de requisitos.
Para Pressman e Maxim (2021), o gerenciamento de requisitos é um
conjunto de atividades que auxilia a equipe do projeto a identificar, controlar e
acompanhar as necessidades e suas mudanças à medida que o projeto acontece.
O SOFTEX (2016) apresenta em seu modelo de processo para desenvolvimento
de software, o MPS.BR, que os processos de engenharia de requisitos precisam
oferecer os seguintes resultados:
• O entendimento dos requisitos é obtido junto aos fornecedores.
76 Gerenciamento de requisitos
Os requisitos não são tão estáveis quanto gostaríamos, pois, os softwares
devem mudar na mesma medida que as organizações evoluem, ou, muitas
vezes, as evoluções das organizações são sustentadas por mudanças nos
softwares. Uma das características mais desejáveis em projetos de software
é que hajam componentes reutilizáveis. Construir sistemas que possam ter
partes reaproveitáveis é um grande fator competitivo na indústria de software.
É essencial entender que o retorno do investimento em software com partes
reutilizáveis pode não ser imediato. O custo para projetar um software que tenha
partes mais adaptáveis é maior e será absorvido conforme estas partes forem
sendo utilizadas (PRESSMAN; MAXIM, 2021).
Outro aspecto muito importante na construção de sistemas modernos é a
integração. Os sistemas precisam cobrir as operações das empresas de ponta
a ponta, além de ter sistemas que se integram facilmente é um dos desafios
que o gerenciamento de requisitos pode auxiliar. O gerenciamento de requisitos
permite que se conheça como cada requisito interage com o outro, facilitando a
construção de sistemas integrados (LAUDON; LAUDON, 2023).
Sommerville (2018) apresenta o conceito de compreensão modificada do
problema, que tem origem numa compreensão inicial do problema, que é
detalhada em requisitos iniciais e que gera requisitos modificados à medida que
o projeto evolui. Essa ideia pode ser visualizada na figura, a seguir.
Requisitos Requisitos
iniciais modificados
Tempo
Gerenciamento de requisitos 77
A plataforma permite que os usuários comprem uma variedade de
produtos de diferentes lojas parceiras. Um requisito importante do sistema
é fornecer aos usuários a opção de filtrar os produtos por faixa de preço.
No entanto, após o lançamento da plataforma e à medida que o número
de lojas e produtos aumenta, a equipe de desenvolvimento percebe que o
filtro de faixa de preço atual não é suficientemente flexível para atender
às necessidades dos usuários. Os usuários expressaram frustração por não
poderem especificar intervalos de preço personalizados e por não terem
opções de filtro mais precisas.
Levando em consideração esse feedback, a equipe de desenvolvimento
decide revisar o requisito de sistema relacionado ao filtro de faixa de
preço. Eles planejam fazer a seguinte alteração:
78 Gerenciamento de requisitos
Nesse exemplo, um requisito de sistema é modificado com o objetivo de
melhorar a precisão e a flexibilidade do filtro de faixa de preço, proporcionando
aos usuários maior controle sobre suas preferências de compra.
Gerenciamento de requisitos 79
Atenção
Para lidar com mudança ou exclusão de requisitos, é fundamental
manter versões da documentação.
80 Gerenciamento de requisitos
Uma identificação única de cada requisito, um processo definido
de gerenciamento de mudanças, que envolve avaliação do custo e
impacto das mudanças, uma política de rastreabilidade, que define o
relacionamento entre requisitos e artefatos do sistema, e também que
ferramentas apoiarão esse processo.
Problema Requisitos
idenficado revisados
Análise do problema e Análise da mudança e Implementação
especificação da mudança estimativa de custo da mudança
Gerenciamento de requisitos 81
Num processo de gestão de mudança em que é necessário determinar
uma modificação em um requisito, é simples dizer: “estamos analisando a
alteração que foi solicitada, e o RF 003 será impactado devido à legislação X
que foi publicada nesse mês e tem vigência a partir de mês de agosto”, todos
conseguirão facilmente identificar de que requisito está se tratando.
Outro aspecto crucial é a rastreabilidade de requisitos, uma prática essencial
no processo de engenharia de requisitos. Ela permite que a avaliação do impacto
e dos custos das mudanças seja realizada de forma adequada. Essa prática
envolve o registro e o acompanhamento das inter-relações entre os requisitos
do sistema ao longo de todo o ciclo de vida do projeto. Visa a estabelecer uma
trilha auditável, que permite compreender como cada requisito foi originado,
evoluiu e foi implementado, fornecendo uma base sólida para o gerenciamento
de mudanças.
Uma das principais implicações da rastreabilidade de requisitos no processo
de gerenciamento de mudanças é fornecer uma visão clara das consequências
de uma alteração proposta nos requisitos.
82 Classificação de requisitos
Atenção
Quando um requisito é modificado, faz-se necessário identificar todos os
artefatos relacionados a ele, como documentos de especificação, casos
de teste, código-fonte e documentação do sistema. Essa identificação é
facilitada pela rastreabilidade de requisitos, pois permite a localização
rápida e precisa dos artefatos relacionados a um requisito específico.
Gerenciamento de requisitos 83
Além disso, o gerenciamento de requisitos contribui para a rastreabilidade,
permitindo acompanhar as mudanças e o impacto dos requisitos ao longo do
tempo. Isso facilita o controle de versões, a gestão de mudanças e a tomada de
decisões informadas durante o desenvolvimento do software. A rastreabilidade
também é fundamental para garantir a conformidade com padrões,
regulamentações e requisitos legais aplicáveis.
O gerenciamento de requisitos é uma parte essencial do desenvolvimento de
software, garantindo que as necessidades dos usuários sejam adequadamente
identificadas, documentadas e atendidas. Ao longo do processo de
desenvolvimento, é essencial acompanhar e controlar as mudanças nos
requisitos, garantindo que o software final esteja alinhado com as expectativas
e objetivos do projeto. A rastreabilidade dos requisitos desempenha um papel
fundamental na compreensão das interdependências e no monitoramento do
progresso. Um gerenciamento eficaz de requisitos resulta em softwares de alta
qualidade, que atendem às necessidades dos usuários e proporcionam satisfação
e sucesso ao projeto como um todo.
84 Gerenciamento de requisitos
REFERÊNCIAS
Gerenciamento de requisitos 85
Videoflix
https://player.vimeo.com/
video/860953236?h=5f0702ac68
https://player.vimeo.com/
video/860954056?h=78c3fd1413
87
Infocast
89
Conflitos entre partes interessadas: um
desafio para a engenharia de requisitos
Olá, seja bem-vindo ao nosso podcast sobre conflitos entre partes
interessadas na Engenharia de Requisitos. Aqui vamos explorar os desafios
comuns que surgem quando diferentes partes interessadas estão envolvidas
no processo de engenharia de requisitos e como as habilidades do analista de
requisitos podem desempenhar um papel fundamental na resolução desses
conflitos. Vamos começar!
A engenharia de requisitos é um processo complexo que envolve a
identificação, a análise e a documentação das necessidades e das expectativas
das partes interessadas para o desenvolvimento de um software. No entanto,
nem sempre é fácil lidar com as diferentes perspectivas e prioridades das partes
envolvidas. Nesse cenário, o analista de requisitos desempenha um papel crucial
como facilitador e mediador. Suas habilidades técnicas e interpessoais são
fundamentais para lidar com conflitos e encontrar soluções que atendam aos
interesses de todas as partes envolvidas.
A primeira habilidade importante do analista de requisitos é a capacidade de
comunicação eficaz. Ele deve ser capaz de ouvir atentamente as preocupações
e necessidades de cada parte interessada, garantindo que todas as vozes sejam
ouvidas. Ao entender as diferentes perspectivas, o analista pode buscar pontos
de convergência e desenvolver requisitos que atendam às expectativas gerais.
Além disso, o analista de requisitos deve possuir habilidades de negociação.
Ele deve ser capaz de encontrar um equilíbrio entre as diversas demandas e os
interesses conflitantes, buscando soluções viáveis e aceitáveis para todas as
partes envolvidas. A capacidade de encontrar compromissos e facilitar acordos
é essencial para superar os obstáculos que surgem durante o processo de
engenharia de requisitos.
91
Outra habilidade-chave do analista de requisitos é a capacidade de
gerenciamento de conflitos. Conflitos são inevitáveis quando diferentes partes
interessadas têm prioridades e objetivos diferentes. O analista deve ser capaz
de identificar os conflitos, analisar suas causas e trabalhar junto com as
partes envolvidas para encontrar soluções satisfatórias. Isso pode envolver a
realização de reuniões de negociação, facilitação de discussões construtivas e
mediação de disputas.
Por fim, o analista de requisitos precisa ter uma visão abrangente do contexto
do projeto e das restrições envolvidas. Ele deve entender as limitações técnicas,
os prazos, o orçamento e outras restrições que possam impactar as decisões
relacionadas aos requisitos. Essa visão holística permite que o analista tome
decisões informadas, considerando não apenas as necessidades das partes
interessadas, mas também os objetivos do projeto como um todo.
Lembre-se de que a colaboração e o entendimento mútuo são essenciais para
superar os desafios e alcançar requisitos sólidos e eficazes. Ao desenvolver essas
habilidades, o analista de requisitos estará preparado para enfrentar os conflitos
de forma construtiva, promovendo uma melhor compreensão e o alinhamento
entre as partes interessadas.
E, assim, encerramos este tópico com a certeza de que compreender os
conflitos entre as partes interessadas na engenharia de requisitos é um passo
crucial para um desenvolvimento de software bem-sucedido. Esperamos que
você tenha encontrado insights valiosos e consiga aplicá-los em sua jornada
profissional. Até logo!
92
Desenvolvimento de sistemas e
legislação: a responsabilidade dos
profissionais de tecnologia
Olá! Aqui vamos discutir a importância de desenvolver sistemas em
conformidade com a legislação aplicável e destacar a responsabilidade dos
profissionais de TI, mais especificamente o analista de requisitos nesse aspecto.
Quando se trata do desenvolvimento de sistemas, é essencial ter em mente
que a legislação desempenha um papel fundamental. A legislação estabelece
regras e regulamentos que visam a proteger os direitos, os interesses e a
segurança das pessoas e das organizações envolvidas.
Nesse contexto, o profissional de tecnologia assume uma grande
responsabilidade. Ele é o responsável por desenvolver e implementar os
sistemas em conformidade com as leis e regulamentos pertinentes. Isso requer
atenção às legislações aplicáveis, bem como o compromisso de garantir que o
sistema atenda a esses requisitos legais.
A responsabilidade dos profissionais de TI vai além de simplesmente conhecer
as leis. Ele deve estar constantemente atualizado em relação às mudanças nas
regulamentações e garantir que os sistemas sejam adaptados e atualizados de
acordo. Essa responsabilidade exige um compromisso com a educação contínua
e o desenvolvimento profissional.
É importante abordar a questão de quando uma parte interessada solicita
algo que é ilegal em um sistema. Nesse cenário, o profissional enfrenta um
desafio ético e profissional.
Diante de uma solicitação ilegal por parte de um interessado, os profissionais
envolvidos devem agir com integridade e responsabilidade. Em primeiro lugar, é
importante compreender a natureza ilegal da solicitação e avaliar seu potencial
impacto. Isso pode envolver uma consulta a especialistas jurídicos ou buscar
orientação em relação à legislação pertinente.
93
O analista de requisitos deve comunicar claramente à parte interessada que
a solicitação é ilegal e não pode ser implementada no sistema. É importante
explicar as razões legais e éticas por trás dessa decisão, destacando os riscos
associados à não conformidade com a legislação. Em alguns casos, pode ser
necessário buscar o envolvimento da alta administração ou dos responsáveis
pela governança do projeto para resolver o conflito.
O analista de requisitos pode propor alternativas legais e éticas que atendam
aos interesses da parte interessada, mas dentro dos limites legais. É essencial
que o analista de requisitos mantenha registros claros e documente as
discussões e decisões relacionadas à solicitação ilegal. Essa documentação pode
ser necessária para fins de auditoria, conformidade legal e transparência nas
ações tomadas.
Em última análise, o analista de requisitos deve agir em conformidade com os
valores éticos e profissionais, colocando a legalidade e a integridade acima das
demandas individuais de uma parte interessada. A responsabilidade de garantir
a conformidade com a legislação recai sobre toda a equipe de desenvolvimento,
mas o analista de requisitos desempenha um papel fundamental ao identificar,
comunicar e buscar soluções dentro dos limites legais.
A ética profissional e o cumprimento da legislação são pilares essenciais
no trabalho do analista de requisitos. Ao tomar decisões difíceis em relação
a solicitações ilegais, o analista de requisitos contribui para a construção de
sistemas responsáveis e confiáveis.
Lembre-se sempre da importância de agir dentro dos limites legais e éticos
em seus projetos de desenvolvimento de sistemas. Até mais!
94
Quero saber +
https://youtu.be/jajQyzOpLaE
https://doi.org/10.5753/cbsoft_estendido.2021.17287
95
GenNormas: um processo genérico para a Conformidade Legal de
Requisitos na Engenharia de Requisitos
https://sol.sbc.org.br/journals/index.php/isys/article/
view/321
https://plataforma.bvirtual.com.br/Leitor/
Loader/160193/epub
96
Resumindo
97
PARA CONCLUIR
99
Classificação, Especificação e Gerenciamento
de Requisitos
Confira agora um resumo dos principais conceitos abordados e retome sempre que
sentir necessidade.
Requisitos funcionais
Descrição dos comportamentos e
funcionalidades que o sistema deve possuir.
Requisitos inversos
Restrições e limitações
impostas ao sistema.
Histórias de usuário
Narrativas que descrevem as
funcionalidades desejadas do
sistema sob a perspectiva do usuário.
Gerenciamento de requisitos
Processo de identificação, documentação, verificação e
controle de requisitos durante todo o ciclo de vida do software.
101
Classificação, Especificação e Gerenciamento
de Requisitos
Confira agora um resumo dos principais conceitos abordados e retome sempre que
sentir necessidade.
Gerenciamento de requisitos
Processo de identificação, documentação,
verificação e controle de requisitos durante
todo o ciclo de vida do software.
Rastreabilidade de requisitos
Capacidade de acompanhar e documentar
as origens, a evolução e as inter-relações
dos requisitos ao longo do processo de
desenvolvimento do software.
102
REFERÊNCIAS
103