Ir para o conteúdo

NFR Framework

Introdução

De acordo com Chung et al1, o NFR Framework auxilia os desenvolvedores na abordagem dos requisitos não funcionais, permitindo sua expressão explícita, tratamento sistemático e utilização como diretrizes para conduzir o processo de desenvolvimento de forma racional. O NFR Framework emprega requisitos não funcionais (RNFs) para orientar o processo de design geral, dando prioridade aos requisitos não funcionais. Seu principal propósito é fornecer uma estrutura de representação para armazenar o design e a lógica por trás do desenvolvimento de requisitos.

O que é um softgoal?

Os softgoals consistem em objetivos que não possuem uma definição clara nem prcisão nos critérios de satisfação. Eles são utilizados para representar os requisitos não funcionais e podem apresentar uma inter-relação, expressando como um softgoal influencia em outro2.

Tipos de Softgoals

Existem três categorias de softgoals conhecidas como: Softgoals NFR, Softgoals de Operacionalização e Softgoals de Afirmação. Cada uma delas é explicada a seguir:

Figura 1: Tipos de Softgoals (Fonte: CHUNG et al, 2000)

Softgoals NFR: representam os Requisitos Não-Funcionais e podem ser interconectados. Eles são organizados em catálogos e apresentados de forma hierárquica durante o desenvolvimento do projeto (CHUNG et al., 2000).

Softgoals de Operacionalização: representações de soluções de implementação destinadas a atender aos softgoals NFR ou a outros softgoals de operacionalização. Essas soluções englobam operações, processos, representações de dados, estruturação e restrições no sistema-alvo, com o objetivo de atender às necessidades indicadas pelos softgoals NFR e de operacionalização (CHUNG et al., 2000).

Softgoals de Afirmação: permitem que as características do domínio, como prioridades e carga de trabalho, sejam consideradas e adequadamente incorporadas ao processo de tomada de decisão. Eles servem como justificativas para apoiar ou contestar a forma como os softgoals são priorizados, refinados e os componentes são selecionados. Os softgoals de afirmação oferecem razões para as decisões de desenvolvimento, tornando mais fácil a revisão, a justificação e a modificação do sistema, bem como a melhoria da rastreabilidade (CHUNG et al., 2000).

Softgoal Interdependency Graph (SIG)

O NFR framework envolve a criação de um diagrama chamado "Softgoal Interdependency Graph (SIG)" para registrar as interdependências entre softgoals. Esse gráfico contém informações sobre as decisões de desenvolvimento, incluindo Requisitos Não-Funcionais, alternativas e justificativas. Ele permite verificar se os requisitos de alto nível estão sendo atendidos por meio de um procedimento de avaliação.

Interdependências

Figura 2: Decomposição de Softgoals (Fonte: CHUNG et al, 2000)

As interdependências estabelecem as relações entre os softgoals. São dividas em:

Refinamentos: no NFR framework, os refinamentos são usados para estabelecer relações entre softgoals, sendo de quatro tipos: decomposição NFR, operacionalização, afirmação e priorização. A decomposição divide softgoals principais em mais específicos, a operacionalização define técnicas para atingir requisitos não funcionais, a afirmação apoia ou nega justificativas específicas do projeto e a priorização refina um softgoal em outro de mesmo tipo e tópico, poŕem com uma prioridade associada. Esses refinamentos ajudam a estruturar e analisar requisitos não funcionais em projetos.

Contribuições: os softgoals passam por refinamentos durante o projeto, onde softgoals descendentes podem influenciar os ascendentes de várias maneiras, como positiva, negativa ou parcialmente. Isso significa que a satisfação de um softgoal não é necessariamente absoluta, mas dentro de limites aceitáveis. Esse refinamento são especificações dos softgoals e são contribuições e existem dez tipos. Esses são:

Contribuição Descrição Notação
MAKE FILHO com contribuição tão positiva a ponto de satisfazer o PAI sob a perspectiva dos envolvidos. ++
HELP FILHO com contribuição positiva parcial, que sozinho não chega a satisfazer o PAI sob a perspectiva dos envolvidos. +
UNKNOWN FILHO não afeta o PAI. ?
HURT FILHO com contribuição negativa parcial, que sozinho não chega a negar o PAI sob a perspectiva dos envolvidos. -
BREAK FILHO com contribuição tão negativa a ponto de negar o PAI sob a perspectiva dos envolvidos --
SOME + FILHO com contribuição positiva, cuja intensidade não se pode determinar. SOME +
SOME - FILHO com contribuição negativa, cuja intensidade não se pode determinar SOME -
AND “Pai” é satisfeito se_somente_se todos os “filhos” forem satisfeitos sob a perspectiva dos envolvidos AND
OR “Pai” é satisfeito se_somente_se um dos “filhos” é satisfeito sob a perspectiva dos envolvidos OR
EQUAL Ambos compartilham o mesmo label =
Tabela 1: Refinamento, Fonte: BARBOSA. Gabriel

Requisitos não-funcionais

De acordo com Sommerville 3 (2011, p. 63), "Os requisitos não funcionais descrevem como o sistema faz algo, em oposição ao quê ele faz. Eles incluem critérios de desempenho, segurança, confiabilidade, usabilidade e outros aspectos que impactam a qualidade do sistema, mas não estão diretamente ligados às funcionalidades específicas do software."

Os requisitos não funcionais são originados a partir das necessidades dos usuários, restrições orçamentárias, políticas organizacionais, necessidade de interoperabilidade com outros sistemas de software ou hardware, bem como de influências externas, como regulamentos de segurança e legislações de privacidade.

Antes de aplicar o framework NFR, é necessário contextualizar o leitor acerca do que são requisitos não funcionais e quais foram elicitados no projeto. Abaixo, a tabela com esses requisitos:

ID Requisito Fonte
RNF01 Oferecer uma instalação e uso do aplicativo intuitivos e de fácil compreensão. Brainstorming
RNF02 Apresentar uma interface de usuário amigável e intuitiva para facilitar a navegação. Brainstorming
RNF03 Fornecer informações ao usuário sobre a recarga e outras interações relevantes. Brainstorming
RNF04 Deve fornecer informações quanto a obtenção do cartão Brainstorming
RNF05 O aplicativo deve fornecer ao usuário o feedback de suas ações em tempo real e rapidamente Observação
RNF06 Deve ser possível filtrar o extrato ao longo do tempo Observação
RNF07 Deve ser possível fazer solicitações triviais com 3 cliques Observação
RNF08 Deve ser possível acompanhar a rota e o trajeto do ônibus num período de tempo e data selecionado Observação
RNF09 Deve apresentar uma interface que facilita a prevenção de erros Observação
RNF10 Garantir compatibilidade com sistemas operacionais Android e iOS. Introspecção
RNF11 Implementar medidas de segurança robustas para proteger a privacidade dos usuários durante as interações no aplicativo. Introspecção
RNF12 O aplicativo deve fornecer segurança ao usuário com dados cadastrados. Questionário
RNF13 O aplicativo deve rastrear os ônibus via GPS. Questionário
RNF14 O aplicativo deve ser otimizado. Questionário
RNF15 O aplicativo deve ter atualização imediata de saldo. Questionário
RNF16 O aplicativo deve possuir meios de acessibilidade para pessoas que possuam deficiências visuais, físicas ou auditivas Questionário
RNF17 RNF06 - Deve ser de código aberto e gratuito. Introspecção
Tabela 2: Contribuições - Fonte: BARBOSA, Gabriel. DE FRIAS, Miguel

Após analisar os requisitos elicitados, épossível perceber que os requisitos encaixam nas seguintes categorias:

  • Confiabilidade
  • Performance
  • Portabilidade
  • Usabilidade

Estes requisitos servirão como base para o uso do framework NFR.

Legenda

Rótulos

Figura 6: Rótulos - Fonte: CHUNG et al, 2000

Confiabilidade

Sem Propagação

Figura 7: Confiabilidade sem Propagação - Fonte: BRAGA, Caio. DE FRIAS, Miguel

Com Propagação

Figura 8: Confiabilidade com Propagação - Fonte: BRAGA, Caio. DE FRIAS, Miguel

Cartão de Especificação

Classificação Confiabilidade
Descrição Este softgoal refere-se à capacidade do sistema de fornecer um aparato de prevenção e sup te de erros e providenciar privacidade
Justificativa A confiabilidade é fundamental para o devido funncionamento do aplicativo, uma vez que sem ela o usuário não é capaz de utilizar o software com segurança, suporte e transparência
Origem do requisito RNF11, RNF12
Critério de aceitação Nenhum
Prioridade Alta prioridade
Conflito Nenhum
Historia 06 de nov. 2023
Tabela 3: Cartão de especificação "Confiabilidade" - Fonte: BRAGA, Caio. DE FRIAS, Miguel

Performance

Sem Propagação

Figura 9: Performance sem Propagação - Fonte: BARBOSA, Gabriel

Com Propagação

Figura 10: Performance com Propagação - Fonte: BARBOSA, Gabriel

Cartão de Especificação

Classificação Performance
Descrição Este softgoal se refere a quão bem o sistema executa suas tarefas. Isso depende do hardware, software, carga de trabalho e outros fatores. Medimos a performance usando métricas específicas, como velocidade e latência. Otimizar a performance é importante para melhorar a eficiência e a experiência do usuário.
Justificativa A performance é essencial para o devido funcionamento do aplicativo, uma vez que isso influencia diretamente na experiência do usuário
Origem do requisito RNF05,RNF13, RNF14, RNF15
Critério de aceitação Nenhum
Prioridade Alta prioridade
Conflito Nenhum
Tabela 4: Cartão de especificação "Performance" - BARBOSA, Gabriel

Portabilidade

Sem Propagação

Figura 11: Portabilidade sem Propagação - Fonte: BRAGA, Caio

Com Propagação

Figura 12: Portabilidade com Propagação - Fonte: BRAGA, Caio

Cartão de Especificação

Classificação Portabilidade
Descrição Este softgoal refere-se à capacidade de executar ou mover o sistema de um ambiente ou plataforma para outro sem a necessidade de grandes modificações. Isso permite que o software seja utilizado em diferentes dispositivos ou sistemas operacionais, facilitando a adaptação e reutilização.
Justificativa A portabilidade é fundamental para a experiência dos usuários, uma vez que o aplicativo será utilizados nos mais diversos dispositivos
Origem do requisito RNF10 e RNF17
Critério de aceitação Nenhum
Prioridade Alta prioridade
Conflito Nenhum
Tabela 5: Cartão de especificação "Portabilidade" - BRAGA, Caio

Usabilidade

Sem Propagação

Figura 13: Usabilidade sem Propagação - Fonte: DE FRIAS, Miguel

Com Propagação

Figura 14: Usabilidade com Propagação - Fonte: DE FRIAS, Miguel

Cartão de Especificação

Classificação Usabilidade
Descrição Este softgoal refere-se à facilidade com que os usuários podem interagir e utilizar o sistema de forma eficaz e satisfatória. Envolve elementos como a intuitividade da interface, a eficiência na realização de tarefas e a satisfação geral do usuário. É importante para garantir que os usuários tenham uma experiência positiva ao usar o sistema.
Justificativa A usabilidade é fundamental para a experiência dos usuários, uma vez que o a interface ser intuitiva e de fácil aprendizado é muito importante para a aplicação
Origem do requisito RNF01, RNF02, RNF05,RNF09 e RNF16
Critério de aceitação Nenhum
Prioridade Alta prioridade
Conflito Nenhum
Tabela 6: Cartão de especificação "Usabilidade" - DE FRIAS, Miguel

Bibliografia

PAIM, F. R. S., CASTRO, J. F. B. Enhancing Data Warehouse Design with the NFR Framework. Centro de Informática UFPE, Recife, 2019. Disponível em: http://wer.inf.puc-rio.br/WERpapers/artigos/artigos_WER02/paim.pdf. Acesso em: 06/11/2023

Referência Bibliográfica

[1] Chung, Lawrence; A. Nixon, Brian; Mylopoulos, John. Non-Functional Requirements in Software Engineering. Acesso em: 03 de novembro de 2023

[2] SILVA, R. NFR4ES: Um Catálogo de Requisitos Não-Funcionais para Sistemas Embarcados. Tese (Mestrado em Engenharia de Software) - Centro de Informática, Universidade Federal de Pernambuco. Recife, p. 155. 2019. Acesso em: 03 de novembro de 2023

[3]SOMMERVILLE, Ian. Engenharia de Software. 9ª edição. São Paulo: Pearson, 2011. Acesso em 05 de novembro de 2023

Histórico de Versões

Versão Descrição Autor Data Revisor Data de revisão
1.0 Estrutura do documento Gabriel Barbosa 06/11/2023 Miguel de Frias 06/11/2023
1.1 Adiciona texto de SIG e Metodologia Caio Braga 06/11/2023 Miguel de Frias 06/11/2023
1.2 Completando documento Caio Braga, Gabriel Barbosa e Miguel de Frias 06/11/2023 Gabriel Barbosa 06/11/2023