Unindad 2
Unindad 2
ENGENHARIA DE REQUISITOS
Unidade 2
Classificação de Requisitos de Software
Aula 1
Especificação de requisitos
Introdução
Olá, estudante!
Nesta aula, você aprenderá como realizar a especificação dos requisitos de software,
classificando os requisitos em funcionais e não funcionais e identificando-os de forma correta.
Apresentaremos métodos de levantamento destes requisitos e como você poderá definir os
requisitos necessários para a sua aplicação de forma assertiva. É preciso ter em mente que esta
fase é a mais importante em todo processo de desenvolvimento de uma aplicação, de modo que
um requisito não especificado corretamente poderá levar a graves consequências para o seu
projeto, até mesmo podendo não satisfazer corretamente às necessidades dos patrocinadores
(clientes), culminando no fracasso do produto criado.
Bons estudos!
Disciplina
ENGENHARIA DE REQUISITOS
ENGENHARIA DE REQUISITOS
ENGENHARIA DE REQUISITOS
Requisitos funcionais
Disciplina
ENGENHARIA DE REQUISITOS
Os requisitos funcionais representam as ações do sistema que serão utilizadas pelo usuário final,
ou seja, como o sistema (ou aplicação) deverá reagir às interações do usuário. Em suma, será
toda função disponível ao usuário final e que se espera que o sistema forneça (seu propósito).
É importante que, ao realizar o mapeamento das funcionalidades que o sistema deve prover, a
escrita englobe apenas um único requisito por vez. Além de facilitar o desenvolvimento pela
equipe de programação, facilitará o entendimento do usuário final e a validação dos requisitos
com as reais necessidades das partes interessadas (stakeholders).
Estes requisitos precisam estar mapeados no documento de especificação de requisitos,
elaborado pela equipe de levantamento das especificações do produto, e precisam estar em
linguagem clara e com o detalhamento adequado para que os desenvolvedores possam realizar
a codificação.
Disciplina
ENGENHARIA DE REQUISITOS
Quando os requisitos de um sistema são mapeados, é fundamental que o cliente defina quais
devem ser priorizados, ou seja, quais agregarão mais valor ao produto que será entregue ao final
do projeto. Essa priorização, caso o time esteja trabalhando em cima de metodologias ágeis para
desenvolvimento de sistemas, poderá ser alterada ao longo do projeto. Para metodologias
tradicionais, como a cascata, é fundamental que todo o processo de especificação de requisitos
seja totalmente definido antes do projeto começar de fato, sem a possibilidade de alteração após
o início da construção.
Alguns exemplos de requisitos funcionais são:
Muitas vezes, o cliente que está auxiliando a equipe de desenvolvimento a mapear os requisitos
funcionais não tem total clareza sobre como a funcionalidade deve ser provida pelo sistema,
deixando dubiedades ou até detalhes técnicos do negócio (como as regras de validação) ocultos
até o momento da implementação.
Para sanar qualquer eventual dúvida ou falta de clareza na especificação de requisitos, é
importante a utilização de recursos que auxiliem a parte interessada na validação deles, como a
prototipação. Protótipos funcionais, que apresentarão o layout da tela e uma funcionalidade
simulada através de linguagens voltadas para a camada de apresentação (como a Javascript),
darão uma maior clareza ao usuário final, o qual, por sua vez, poderá realizar ajustes para atender
às suas expectativas.
Todos os protótipos construídos na fase do levantamento de requisitos e da validação dos
requisitos funcionais serão reaproveitados na fase de implementação do sistema pela equipe de
desenvolvedores.
Uma questão importante, quando se trata de requisitos funcionais, é que eles precisam estar
definidos de forma completa e consistente, ou seja, o usuário precisa definir todas as
funcionalidades necessárias para o sistema, e estas funcionalidades não podem ter critérios
contraditórios. Como critérios contraditórios, entende-se que uma funcionalidade não pode ter
um critério que é desfeito por outra funcionalidade.
ENGENHARIA DE REQUISITOS
Requisitos não funcionais, por sua vez, são aqueles que servem como suporte aos funcionais,
mas que não são percebidos (ou visíveis) ao usuário final. Exemplo desta categoria de requisito
são os requisitos de performance, segurança, auditoria de informações (logs) e os demais
requisitos que servem de suporte para o correto funcionamento dos requisitos visíveis
(funcionais).
Esta categoria de requisitos é mais crítica para o sistema que os requisitos funcionais, tendo em
vista que, caso aconteça alguma ação indevida do usuário final, como conseguir entrar no
sistema sem ter passado pelas etapas de validação de autenticação, todo o sistema estará
comprometido, podendo até mesmo ser invalidado.
É comum que requisitos não funcionais estejam espalhados por várias partes do sistema,
englobando, inclusive, mais de um requisito funcional, até mesmo pela sua natureza
(performance, segurança etc.).
O mapeamento dos requisitos não funcionais acontece através do entendimento de quais são as
necessidades de restrição das partes interessadas, como restrição de segurança, orçamento,
interoperabilidade com outros sistemas, políticas organizacionais, legislação de privacidade e
segurança ou normas de segurança interna.
Conforme apresentado por Sommerville (2011) e Pressman e Maxim (2021), a origem dos
requisitos não funcionais podem ser:
ENGENHARIA DE REQUISITOS
A Figura 2 apresenta um resumo dos tipos de requisitos não funcionais, de acordo com as
categorias anteriormente apresentadas.
É relativamente comum que as partes interessadas ditem os requisitos não funcionais como
metas ou objetivos do sistema, como a facilidade de uso ou performance. Um ponto importante
é que, caso sejam especificados desta forma, os requisitos não funcionais podem ser difíceis de
serem testados, tornando-se um ponto subjetivo do sistema e abrindo brechas para diversos
entendimentos.
A forma ideal para que um requisito não funcional seja especificado é quantitativamente, ou seja,
da forma mais objetiva possível (de preferência com números), a fim de que possam ser
validados ou mensurados. Porém, nem todo requisito não funcional poderá ser medido
quantitativamente, o que indica que métricas precisam ser adotadas para justificar ou validar a
implementação correta destes requisitos.
Outro ponto importante de ser destacado é que, no documento de especificação de requisitos, é
difícil realizar a separação entre os requisitos funcionais dos não funcionais, tendo em vista que,
em muitos casos, requisitos não funcionais podem englobar um ou mais dos requisitos
funcionais. Caso não se deixe clara a delimitação entre a funcionalidade provida pelo sistema e
os requisitos não funcionais que estão envolvidos nesta funcionalidade, o entendimento poderá
ficar confuso para a equipe de desenvolvimento. Portanto, quando se tem um requisito não
funcional interligado a um requisito funcional, você deverá fazer o destaque na parte que engloba
o requisito não funcional.
Disciplina
ENGENHARIA DE REQUISITOS
Olá, estudante! Neste vídeo, você aprenderá técnicas para levantamento e especificação de
requisitos funcionais e não funcionais, como montar o documento de especificação de requisitos
e um modelo de como escrever histórias de usuário. Por ser a fase mais importante para o
desenvolvimento de um software, é muito importante que você entenda e conheça as diversas
abordagens para escrita e apresentação de requisitos, que serão importantes para os mais
diversos stakeholders (ou seja, partes interessadas no projeto).
Saiba mais
O artigo Como escrever requisitos de software de forma simples e garantir o mínimo de erros no
sistema/app?? apresenta como especificar requisitos de uma aplicação de forma simplificada,
minimizando os erros.
A ferramenta OpenReq é gratuita e voltada para o gerenciamento de requisitos.
Disciplina
ENGENHARIA DE REQUISITOS
Referências
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. 9. ed. Nova Iorque: Mc Graw Hill
Education, 2021.
SOMMERVILLE, I. Engenharia de Software. 9. ed. São Paulo, SP: Pearson, 2011.
Aula 2
Atividades da engenharia de requisitos
Introdução
Disciplina
ENGENHARIA DE REQUISITOS
Olá, estudante!
Nesta aula, você aprenderá quais critérios podem ser levados em consideração no momento de
priorizar os requisitos de uma aplicação para seu desenvolvimento, assim como as técnicas que
podem ser utilizadas para auxiliar o processo de priorização e as ferramentas que podem auxiliar
no processo de priorização.
A priorização dos requisitos especificados é fundamental para que as funcionalidades mais
importantes, ou seja, aquelas que agregam mais valor ao negócio do cliente e,
consequentemente, ao produto construído, sejam antecipadas em relação àquelas menos
prioritárias (que agregam menos valor ao produto).
Lembre-se de que o seu conhecimento só dependerá de você, então não se limite apenas ao
visto na aula, mas esteja sempre buscando novas formas de se atualizar.
Bons estudos!
ENGENHARIA DE REQUISITOS
Após a fase de entrevistas para o levantamento de requisitos junto ao cliente, é preciso priorizar
os requisitos, de modo a começar a construção do produto pelos requisitos que agregam mais
valor ao produto, ou seja, que sejam mais importantes ao usuário final.
Esta priorização dos requisitos levantados deve acontecer após os requisitos terem sido
agrupados em grupos com requisitos similares. A conclusão desta etapa resulta num modelo de
arquitetura do produto que será desenvolvido, apresentando onde cada requisito se encaixa no
modelo.
Quando um produto envolve diferentes áreas e, consequentemente, possui diferentes
patrocinadores, cada qual com seus respectivos requisitos, é comum ocorrerem conflitos de
interesses. Estes conflitos podem ser resolvidos com a priorização dos requisitos, após reuniões
de alinhamento entre estas diferentes partes interessadas e analisando a relação entre benefício
do desenvolvimento versus custo para implementação.
Muitas vezes, algumas funcionalidades dependem da implementação de outras, o que ocasiona
na priorização destes pré-requisitos, para que as demais funções dependentes possam ser
codificadas.
Quando um consenso não é alcançado, através de reuniões com os stakeholders (partes
interessadas), fica muito difícil para o analista de requisitos ou o líder de projetos indicar para a
equipe de desenvolvimento quais funcionalidades agregam mais valor, tendo em vista que isso
dependerá do negócio do cliente e de todas as questões que envolvem o projeto, como prazo e
limitação de orçamento.
Quando nos referimos às metodologias tradicionais de desenvolvimento de projetos, como a
cascata, a priorização dos requisitos deverá estar concluída antes que a fase de implementação
Disciplina
ENGENHARIA DE REQUISITOS
do produto seja iniciada e não poderá ser alterada após este início. Sendo assim, um erro no
planejamento desta priorização poderá ocasionar em invalidação do produto pelo cliente, no
momento da entrega e validação, causando prejuízo tanto para o cliente quanto para a empresa
que desenvolveu o produto.
Em equipes que seguem as metodologias de desenvolvimento ágeis, como a SCRUM, para cada
ciclo de entrega deverá ser feita a priorização dos requisitos que serão detalhados e
implementados pela equipe. Estes requisitos detalhados são provenientes de uma lista com os
requisitos macros, priorizados de acordo com a necessidade do cliente. Ao longo do processo de
desenvolvimento, é possível alterar a prioridade dos requisitos, conforme as necessidades forem
mudando, de modo a sempre adequar o que será entregue ao cliente com a sua real necessidade
do momento.
A priorização não dependerá do detalhamento dos requisitos para acontecer, de modo que tornar
o processo mais simples, até mesmo ainda utilizando o nível macro de especificação, poderá
facilitar o entendimento das partes interessadas e, consequentemente, o processo como um
todo.
Uma outra questão importante a ser levada em consideração no momento da priorização dos
requisitos é a complexidade técnica e a dificuldade de implementação. Esta percepção é tida
pela equipe de desenvolvimento, que pode, junto ao cliente, auxiliar a resolução de conflitos de
interesses das partes interessadas e definir quais funcionalidades estarão presentes na próxima
entrega do produto.
ENGENHARIA DE REQUISITOS
ENGENHARIA DE REQUISITOS
ENGENHARIA DE REQUISITOS
O Quadro 2 apresenta uma classificação por obrigatoriedade dos requisitos para o produto, de
modo que se tem como essencial aquele requisito obrigatório no sistema/aplicação; condicional
para os requisitos que agregam melhorias, mas que a falta não implica invalidação do produto;
por último, os requisitos tidos como opcionais, que podem ou não ser implementados, não
fazendo falta caso não estejam presentes.
Uma técnica amplamente utilizada para priorização dos requisitos junto aos stakeholders se
baseia na quantidade de dependências de uma funcionalidade em relação às demais e na
preferência das partes interessadas em termos do que pode estar agregando mais valor ao
produto. Essa técnica depende muito do fator humano para sua aplicação, tendo em vista que as
dependências são informadas pela equipe de desenvolvimento, com base em experiências
anteriores dos membros da equipe.
A técnica Ordinal Scale, por sua vez, realiza a comparação entre dois requisitos para avaliar qual
dos dois será mais importante ao produto. O objetivo será montar uma lista ordenada com as
funcionalidades listadas por ordem de implementação.
Existe também a técnica Ratio Scale, que utiliza uma escala de decisão para decidir pela
priorização dos requisitos de forma mais precisa que as outras duas técnicas (ordinal e nominal),
já que identifica a diferença relativa entre os requisitos. As técnicas ordinal e nominal auxiliarão
apenas na classificação dos requisitos.
ENGENHARIA DE REQUISITOS
Não somente técnicas de priorização de requisitos são importantes para ordenar, de forma
coerente com as necessidades do usuário final, as funcionalidades especificadas para o produto.
Existem também ferramentas que podem auxiliar no processo de priorização.
Com as ferramentas, é possível enxergar com mais precisão os relacionamentos entre os
requisitos, assim como fatores que podem classificá-los como mais ou menos prioritários, em
relação às outras funcionalidades.
A primeira ferramenta que apresentaremos é a Matriz de Priorização. Com ela, é possível
estabelecer quais funcionalidades precisam ser implementadas em qual ordem, de acordo com
critérios claros e bem definidos, evitando descumprimento de prazos e garantindo foco naquilo
que realmente precisa estar pronto. Ela é construída em formato de tabela, gráfico ou quadrante,
ficando a cargo da equipe qual a melhor forma de representação.
Disciplina
ENGENHARIA DE REQUISITOS
Matrizes de Priorização podem ser, conforme apresenta Justo (2019), dos seguintes tipos:
ENGENHARIA DE REQUISITOS
Olá, estudante! Neste vídeo, você aprenderá a importância da priorização dos requisitos
especificados para uma aplicação, como utilizar técnicas de negociação de conflitos de
interesses, por parte dos stakeholders envolvidos, além de quais as técnicas mais adequadas
para a realização desta priorização, tão importante ao produto que será construído. Aprenderá
também quais ferramentas poderão ser utilizadas para auxiliar este processo.
Saiba mais
Referências
Disciplina
ENGENHARIA DE REQUISITOS
Aula 3
Análise de requisitos
Introdução
Disciplina
ENGENHARIA DE REQUISITOS
Olá, estudante!
Nesta aula, você aprenderá como um requisito é mantido e gerenciado ao longo do ciclo de vida
de um projeto, assim como sobre os cenários de uso dos requisitos e como elaborar casos de
uso para os requisitos elucidados.
Você verá exemplos práticos de elaboração do diagrama de casos de uso e o nível de abordagem
que deverá adotar para escrever seus requisitos funcionais e não funcionais.
Lembre-se de que o seu conhecimento só dependerá de você, então não se limite apenas ao
visto na aula, mas esteja sempre buscando novas formas de se atualizar.
Bons estudos!
ENGENHARIA DE REQUISITOS
Após a fase de coleta inicial dos requisitos funcionais e não funcionais de um sistema, do
processo de validação dos requisitos junto ao cliente e, por fim, da priorização conforme a
necessidade das partes interessadas, é chegada a hora da implementação do produto.
Ao dar início à fase de codificação, a equipe de desenvolvimento poderá ter dúvidas quanto ao
que está escrito no documento de especificação de requisitos, ou história de usuário, sendo
necessário perguntar ao analista que realizou as entrevistas com o cliente, evitando retrabalhos e
codificação errada pela falha no entendimento.
Muitas vezes, durante o processo de construção da aplicação, o cliente se dá conta de que o que
está sendo desenvolvido não irá, de fato, satisfazer suas expectativas com o produto, solicitando
mudanças nos requisitos previamente levantados. Em metodologia tradicional de
desenvolvimento, como a cascata, que os requisitos precisam estar totalmente levantados e
validados antes do início da fase de construção da aplicação, uma alteração posterior de
qualquer requisito pode representar a invalidação do projeto ou, em casos menos drásticos,
causar atraso no prazo de entrega acordado, com reflexos no orçamento, que será maior.
Já para projetos que utilizem metodologias ágeis ou que permitam modificações após a fase de
especificação de requisitos inicial, é possível alterar o documento de especificação e/ou história
de usuário, para que se adeque às novas necessidades apontadas pelo cliente. O time de
desenvolvedores, por sua vez, precisará adequar a aplicação que está sendo construída ao que
foi solicitado como ajustes, garantindo que a entrega de valor ao usuário será feita.
A priorização dos requisitos é um outro fator que também pode ser alterado a qualquer momento
do ciclo de vida do projeto, sempre buscando respeitar o nível de importância de cada requisito,
definido pelas partes interessadas.
Disciplina
ENGENHARIA DE REQUISITOS
Durante as fases de testes e entrega, após a apresentação ao cliente do que foi construído, ainda
podem ser solicitados ajustes, que precisarão ser negociados com o analista de requisitos (ou
product owner, em caso de utilização da metodologia ágil SCRUM), para que o time de
desenvolvedores possa fazer o melhor para atender às solicitações, respeitando o orçamento e o
prazo acordados.
Uma vez que a aplicação seja entregue ao cliente final, novos requisitos e necessidades ainda
podem surgir, o que precisará realizar um gerenciamento de mudanças, por parte do analista
responsável pela fase de levantamento de requisitos iniciais, para garantir que, mesmo após a
solicitação das alterações nos requisitos já levantados (e, muitas vezes, até já implementados), o
histórico das alterações possa ser mantido.
Garantir que o documento de requisitos esteja de acordo com a realidade do código construído
auxiliará o entendimento de novos integrantes da equipe de desenvolvedores, da mesma forma
que dirimir eventuais dúvidas futuras sobre as regras de negócio pelos membros da equipe de
desenvolvimento e/ou manutenção (sustentação).
Alguns fatores podem desencadear alterações ou surgimento de novas funcionalidades.
Sommerville (2011) e Pressman e Maxim (2021) destacam, como sendo os principais, os
seguintes:
ENGENHARIA DE REQUISITOS
A especificação de um requisito se inicia pela sua forma macro, ou seja, pela descrição simples
da funcionalidade que deve ser provida pela aplicação. Deste modo, em um primeiro momento, o
cliente não especificará detalhes de quais regras de negócio a funcionalidade implementará, nem
quais os tipos de campos existentes que serão manipulados ou até quais os perfis que terão
acesso e quais não terão.
Para garantir que a equipe de desenvolvimento possa entender, de forma técnica, o que está
sendo solicitado pelo cliente, é preciso que ocorra um detalhamento de como o requisito deverá
funcionar, com suas regras de negócio, interações com outras telas (ou módulos do sistema e
até de outros sistemas, caso ocorra), permissões de acesso ou utilização da funcionalidade,
mensagens de erro que devem ser apresentadas, em caso de alguma inconsistência na entrada
de dados, entre outras questões técnicas.
A este detalhamento de um requisito damos o nome de cenários de caso de uso. Os tipos de
cenários de caso de uso existentes podem ser classificados como:
ENGENHARIA DE REQUISITOS
Os cenários de caso de uso se aplicam somente aos requisitos funcionais do sistema, já que
estes representam as ações que devem ser implementadas e providas ao usuário final. Os
requisitos não funcionais acabam fazendo parte do detalhamento dos casos de uso funcionais,
tendo em vista que são considerados transversais e acabam englobando uma ou mais
funcionalidades do sistema.
Quanto mais fluxos alternativos forem levantados e documentados, assim como as possíveis
exceções que podem acontecer, melhor será a resposta do sistema ao comportamento do
usuário e mais “blindada” sua aplicação estará contra os mais variados tipos de comportamento
de seus usuários finais. As exceções serão úteis para apresentar mensagens amigáveis ao
usuário final, em caso de alguma falha acontecer.
Um fluxo alternativo aparece no diagrama de caso de uso como uma ação estendida, utilizando a
indicação <<extend>>. Um exemplo está apresentado na Figura 1
ENGENHARIA DE REQUISITOS
Para escrever um requisito, de forma que seja validado pelo cliente e possa, posteriormente, ser
implementado pela equipe de desenvolvimento, é preciso que haja uma concordância em relação
a como o sistema deve se comportar entre todos os envolvidos (stakeholders) como
patrocinadores.
É preciso, para que a validação do requisito possa ocorrer, que várias visões de um mesmo
requisito sejam elaboradas, iniciando-se pela especificação em linguagem natural, que se
converterá em diagramas de casos de uso, para traduzir, visualmente, as interações entre os
diferentes papéis na aplicação e as funcionalidades por ela providas.
Um diagrama de caso de uso apresentará, segundo Larman (2000), de forma visual e clara, todas
as interações entre um determinado ator (usuário final, por exemplo) e as funções por ele
usadas, conforme apresentado na Figura 2.
Disciplina
ENGENHARIA DE REQUISITOS
A Figura 2 apresenta um exemplo de diagrama de caso de uso para uma aplicação de cadastro
de alunos. Neste caso, o ator (usuário do RH) poderá executar as funções de cadastrar aluno,
alterar cadastro de aluno e desativar cadastro de aluno. Para outros atores, outras
funcionalidades podem ser associadas, deixando claro para os stakeholders envolvidos quais
papéis de usuário poderão fazer que tipo de ação no sistema.
Um caso de uso possui alguns elementos visuais básicos para sua construção:
Um ator pode ser também um outro sistema ou módulo, que possua algum tipo de interação com
a aplicação que será construída. Um bom exemplo é a integração entre diferentes sistemas, em
uma mesma organização, para compartilhamento de informações e/ou utilização de APIs, tanto
para realização de consultas como cadastros de dados.
Após a construção de todos os casos de uso, mapeando a interação entre os diferentes atores e
as funcionalidades providas pela aplicação, será necessário detalhar os casos de uso mapeados,
ou seja, especificar os fluxos do caso de uso, seja um fluxo principal (entradas e respostas
esperadas) ou fluxos alternativos (entradas faltantes, com caracteres não permitidos, sequência
de comandos inadequada etc.).
Disciplina
ENGENHARIA DE REQUISITOS
Olá, estudante! Neste vídeo, você aprenderá a importância do gerenciamento dos requisitos ao
longo de um projeto, como escrever um caso de uso e qual o nível de abordagem adequado para
as visões macro e detalhada de um requisito, seja ele funcional ou não funcional. Serão
apresentados exemplos práticos, para que você possa compreender toda a teoria abordada.
Bons estudos!
Saiba mais
Disciplina
ENGENHARIA DE REQUISITOS
Referências
Disciplina
ENGENHARIA DE REQUISITOS
Aula 4
Modelagem de requisitos
Introdução
Disciplina
ENGENHARIA DE REQUISITOS
Olá, estudante!
Nesta aula, você aprenderá quais são os artefatos gerados no processo de levantamento de
requisitos, além da forma como o levantamento de requisitos acontece com metodologias ágeis
e quais artefatos são construídos e mantidos com estas metodologias. Abordaremos também os
requisitos voltados para sistemas autoadaptativos, voltados para sistemas que podem alterar
seu comportamento em tempo de execução, conforme sua necessidade, refletida pelo ambiente
no qual estão inseridos, sem nenhuma intervenção humana.
Lembre-se de que o seu conhecimento só dependerá de você, então não se limite apenas ao
visto na aula, mas esteja sempre buscando novas formas de se atualizar.
Bons estudos!
ENGENHARIA DE REQUISITOS
Artefatos são produtos gerados como resultados de uma fase (ou processo). Quando nos
referimos à fase da especificação de requisitos, os artefatos gerados são elaborados como
resultado das entrevistas com o cliente, para levantamento das funcionalidades da aplicação que
será desenvolvida, assim como do refinamento destes requisitos e das eventuais mudanças que,
eventualmente, podem ocorrer nos requisitos já especificados.
O documento de especificação de requisitos é tido como o principal documento que conterá os
requisitos (funcionais e não funcionais) necessários para que a equipe de desenvolvimento
possa construir a aplicação. Este documento precisa ser criado e mantido, com as devidas
atualizações, ao longo de todo projeto, tendo em vista que é por ele que os desenvolvedores se
basearão e, em caso de dúvidas em regras de negócio, consultar.
Ainda neste documento, é importante constar os diagramas que foram construídos para as
diferentes visões dos requisitos, facilitando o processo de validação pelo cliente (e demais
partes interessadas). Então, diagramas de caso de uso e diagramas de sequência podem fazer
parte do texto que precede os requisitos especificados.
A Figura 1 apresenta um exemplo de um diagrama de sequência para o cadastro de um paciente
no sistema.
Disciplina
ENGENHARIA DE REQUISITOS
Conforme apresentado na Figura 1, o ator usuário interagirá com a tela de cadastro de pacientes
para que um paciente seja inserido no banco de dados da aplicação. O objetivo deste diagrama é
apresentar uma sequência de passos que serão executados e/ou retornados pelo/ao cliente. O
cliente, então, iniciará a interação com o sistema a partir do preenchimento dos dados da tela do
cadastro de paciente que terão os dados validados (ou não) pela classe paciente. Caso os dados
não sejam validados corretamente, seguindo as regras de negócio, mensagens de dados
inválidos ou paciente já cadastrado poderão ser retornadas ao ator (usuário), interrompendo o
fluxo. Se o processo de validação for concluído com sucesso, então os dados serão inseridos no
banco de dados e uma mensagem de paciente cadastrado com sucesso será retornada ao
usuário que criou a requisição.
Os diagramas de caso de uso apresentarão as interações entre os atores e as funcionalidades do
sistema, enquanto os diagramas de sequência apresentarão a sequência de passos para uma
determinada funcionalidade, desde a criação da requisição pelo usuário final até a resposta
entregue pelo sistema, após o processamento da requisição, numerando a ordem dos passos.
Outro artefato importante são as requisições de mudança, geradas sempre que um requisito já
especificado precisa sofrer alterações (apenas para se adequar à necessidade do usuário final)
ou quando uma nova funcionalidade será implementada no sistema (caracterizando a
manutenção evolutiva).
Quando se utiliza a prototipação como ferramenta auxiliar para validação das funcionalidades
pelo cliente, os protótipos construídos também são considerados artefatos de saída desta fase,
já que serão repassados à equipe de desenvolvimento para que o design já acordado para o
sistema possa ser mantido.
A Figura 2 apresenta um exemplo de diagrama de caso de uso para o cenário apresentado na
Figura 1.
Disciplina
ENGENHARIA DE REQUISITOS
Conforme apresentado na Figura 2, a visão do caso de uso tende a ser mais macro que a visão
apresentada no diagrama de sequência, que detalhará, para cada item de caso de uso, os passos
necessários para executar a ação. Sendo assim, o diagrama de caso de uso visa apresentar, de
forma resumida, todas as interações possíveis de um ator no sistema.
Outro ponto importante, que também gera um artefato da fase de especificação de requisitos, é o
documento contendo o glossário dos termos do negócio, que serão aplicados ao longo da
construção do sistema. Muitas vezes, um mesmo termo pode ter diferentes significados,
dependendo do contexto no qual é utilizado. O glossário servirá como nivelamento para que
todos, independentemente de qual setor pertençam, possam ter o mesmo entendimento a
respeito dos conceitos utilizados pelo negócio.
Após o acordo a respeito do design do sistema e dos demais documentos já mencionados, é
importante que você especifique o modelo de arquitetura que servirá de base para a construção
do sistema, com os elementos de rede que serão utilizados, suas interconexões, a conexão com
outros sistemas (caso ocorra), entre outros pontos importantes para que, tanto os componentes
de hardware sejam visíveis quanto, em termos de sistema, a disposição das camadas da
aplicação e suas respectivas classes possam ser especificadas. O modelo de arquitetura de
classes do sistema servirá como base para a equipe de desenvolvimento, enquanto o modelo de
arquitetura de hardware poderá ser apresentado e validado pelos stakeholders.
ENGENHARIA DE REQUISITOS
ENGENHARIA DE REQUISITOS
Backlog do produto: nesta fase, os requisitos estão especificados em sua forma macro,
sem nenhum tipo de detalhamento, ainda não se encontrando prontos para que a equipe de
desenvolvimento possa codificá-los. Antes do início do projeto, os requisitos levantados se
encontram nesse estágio, podendo ser inseridos novos requisitos à medida que se dá o
andamento do projeto.
Backlog da sprint: nesta fase, um conjunto de requisitos macro, retirados do conjunto que
compõe o backlog do produto, serão refinados junto ao cliente e, após todos os detalhes de
suas regras de negócio, serão julgados pela equipe de desenvolvedores, conforme suas
experiências passadas e o tempo disponível para o próximo ciclo de desenvolvimento
(sprint), que definirão quais tarefas serão entregues ao final da próxima sprint. Tudo que
tiver definido como compondo o conjunto do backlog da sprint deverá ser entregue ao
cliente para homologação ao final do ciclo.
Requisitos autoadaptativos
Disciplina
ENGENHARIA DE REQUISITOS
Conforme Batista (2022), aplicações autoadaptáveis são aquelas capazes de moldar seu
comportamento, alterando-o conforme necessário, para se adequar ao meio que está inserido.
Sendo assim, é possível realizar avaliações que, como resultado, podem acarretar melhoria de
desempenho da aplicação ou até modificar um comportamento tido como errado (ou que
estejam causando falhas), sem que ocorra intervenção humana para esta adaptação.
O intuito pelo qual existem aplicações autoadaptáveis é a necessidade de se gerenciar
aplicações complexas, necessidade de tratamento de condições inesperadas e, inclusive, a
incerteza acerca dos requisitos da aplicação.
Aplicações com as características de adaptação possuem propriedades, dentro de conjuntos
bem definidos e conhecidos, caracterizadas por self-*. Cada categoria de propriedade self-*
definirá um tipo de comportamento adaptável, como apresenta Batista (2022):
ENGENHARIA DE REQUISITOS
Requisitos autoadaptáveis, por comporem aplicações que podem ajustar seu comportamento
em tempo de execução, conforme as diversas variáveis que são analisadas, passam a ser
analisadas em tempo de execução.
Quando nos referimos ao processo de levantamento de requisitos para aplicações
autoadaptáveis, é importante mencionar o nível de incerteza destes requisitos, o que torna o
processo de elucidação das funcionalidades parcialmente incompleto. Em uma aplicação
tradicional, sem a característica de adaptação, as funcionalidades precisam ser mapeadas logo
no princípio do projeto, com um alto grau de certeza, ou seja, para cada requisição de entrada,
uma resposta esperada já é conhecida ainda na fase de especificação.
Uma forma apresentada por Batista (2022) para a elucidação de requisitos para aplicações
autoadaptáveis é a utilização do método de perguntas para os requisitos essenciais de
autoadaptação:
Olá, estudante! Neste vídeo, você aprenderá, de forma prática, exemplos de artefatos resultantes
da fase de levantamento de requisitos utilizando metodologia tradicional em cascata, assim
como um exemplo de escrita de uma história de usuário na metodologia ágil. Por último, você
verá os requisitos voltados para aplicações autoadaptativas e como podem ser especificados.
Bons estudos!
Disciplina
ENGENHARIA DE REQUISITOS
Saiba mais
O guia para o SCRUM foi atualizado em 2020. Para conferir as atualizações e conhecer mais
sobre o framework ágil SCRUM, acesse O Guia Definitivo para o Scrum: As Regras do Jogo
Uma ferramenta gratuita para auxiliar na escrita de histórias de usuário é a Miro. Você poderá
também contar com a ferramenta Trello, gratuita, para a escrita das histórias de usuário e o
acompanhamento do progresso do time de desenvolvimento.
Referências
Disciplina
ENGENHARIA DE REQUISITOS
Aula 5
Revisão da unidade
ENGENHARIA DE REQUISITOS
Nesta unidade, você aprendeu que a fase de especificação de requisitos é considerada a mais
importante para o processo de desenvolvimento de uma nova aplicação. É nesta fase, a partir
das entrevistas feitas com o cliente, que as funcionalidades da aplicação serão levantadas em
sua forma inicial.
Após a necessidade das partes interessadas no produto (stakeholders) ser mapeada em
requisitos funcionais (que representam as ações que, de fato, o sistema proverá) e não
funcionais (que representam as necessidades secundárias, como segurança, autenticação,
auditorias etc.), o documento de especificação de requisitos será criado e repassado para a
equipe de desenvolvedores, que dará início à fase de codificação da aplicação.
Ao longo do ciclo de vida do projeto, é possível que os requisitos mapeados, inicialmente, sofram
alterações, que deverão ser refletidas no documento de especificação de requisitos, mantendo-o
sempre atualizado. Essas alterações podem surgir oriundas da percepção do cliente que alguma
regra importante faltou ou está incompleta, até mesmo após a validação dos artefatos gerados
como resultado da fase de levantamento de requisitos.
Artefatos são os produtos gerados como resultado de uma fase, que servirão de subsídios para a
próxima fase do projeto. Para a fase da especificação de requisitos, os artefatos resultantes
mais comuns são:
ENGENHARIA DE REQUISITOS
Olá, estudante! Neste vídeo, faremos um resumo de todo o conteúdo abordado a respeito da fase
de especificação de requisitos, utilizando tanto a metodologia tradicional (em cascata) quanto a
metodologia ágil SCRUM. Abordaremos os artefatos, fazendo um comparativo entre as duas
metodologias, a forma de trabalho com SCRUM e as diferenças na priorização dos requisitos
entre as duas metodologias.
Bons estudos!
Estudo de caso
Disciplina
ENGENHARIA DE REQUISITOS
Você é funcionário de uma grande organização, que foi contratada para desenvolver uma nova
aplicação WEB com o objetivo de realizar agendamento de consultas on-line em uma clínica
médica.
Foi definido que você, por já ter conhecimento em análise de requisitos, participaria do processo
de especificação dos requisitos junto ao cliente, envolvendo-se no processo de entrevistas e
escrevendo os documentos de especificação de requisitos e/ou histórias de usuário.
Um outro analista de requisitos da sua empresa, anteriormente, já tinha feito algumas entrevistas
iniciais de levantamento de requisitos, com participação do cliente, que culminaram com a
elucidação dos principais requisitos funcionais e não funcionais da aplicação.
Para a aplicação, algumas ações básicas já foram especificadas em reuniões com o cliente, tais
quais:
Autenticação baseada em usuário e senha. Senha precisa ter um padrão forte, com, no
mínimo, oito caracteres, sendo pelo menos uma letra maiúscula, uma minúscula, um
caractere especial e dois números.
Somente será possível acessar as funcionalidades de cadastramento de usuário, cadastro
de perfil e associação de perfil ao usuário para usuários com perfil administrador no
Disciplina
ENGENHARIA DE REQUISITOS
sistema.
Somente será possível acessar o agendamento de consultas caso o usuário esteja logado
no sistema.
Para resolver o estudo de caso, será preciso, inicialmente, criar os diagramas de caso de uso do
documento de especificação de requisitos. Para isso, você poderá utilizar as sugestões de
ferramentas on-line mencionadas ao longo das aulas, especificando o ator como o perfil do
usuário que realizará a ação (funcionalidade) no sistema.
Crie uma seção do documento para apresentar os diagramas criados (um diagrama por ator, ou
seja, por perfil no sistema). Após isso, elabore o detalhamento dos requisitos, conforme a tabela
apresentada em aula, nomeando conforme a ordem de prioridade para o requisito, seguindo-se
da descrição da funcionalidade e dos fluxos alternativos. Elabore os fluxos alternativos como
Disciplina
ENGENHARIA DE REQUISITOS
“caminhos” que desviem do fluxo padrão definido (para isso, é preciso que você defina qual será
o fluxo padrão para cada requisito). Caso a funcionalidade possa apresentar algum tipo de erro,
que precise ser tratado para ser apresentado ao usuário final, elabore os fluxos de exceção. Caso
nenhum fluxo de exceção seja definido, não terá problemas.
Após a escrita detalhada de cada requisito, que estará presente no documento de especificação
de requisitos em formato de tabela (com cada requisito representando uma tabela diferente, com
seu detalhamento e fluxos alternativos), está na hora de partir para a escrita das histórias de
usuário.
Para a escolha de quais dos requisitos serão escritos em formato de história de usuário, é
preciso definir quais deles agregarão maior valor ao usuário final, priorizando-os. Desta forma,
escreva as histórias de usuário, considerando sempre a “persona”, isto é, o perfil de usuário que
utilizará a função no sistema, definindo a ação que será executada e qual o objetivo que ele
atingirá ao realizar tal ação.
As histórias de usuário precisarão ficar escritas em um documento à parte do de especificação
de requisitos.
Lembre-se de que é preciso especificar, como critério de validação, os requisitos não funcionais
em cada história que necessite. Por exemplo: se o usuário só poderá acessar a funcionalidade
caso esteja devidamente autenticado no sistema, o critério de validação para a funcionalidade
especificará que o acesso só poderá acontecer caso o usuário esteja logado no sistema e tenha
perfil com a devida permissão de acesso.
Resumo visual
Disciplina
ENGENHARIA DE REQUISITOS
Referências
Disciplina
ENGENHARIA DE REQUISITOS
AGUIAR, F. Product Backlog Building: um guia prático para criação e refinamento de backlog para
produtos de sucesso. Porto Alegre, RS: Caroli, 2021.
PRESSMAN, R. S. Engenharia de Software: uma abordagem profissional. 9. ed. São Paulo, SP:
AMGH, 2021