Pular para conteúdo

NFR Framework

Histórico de Versão

Data Data Prevista de Revisão Versão Descrição Autor Revisor
27/12/2022 27/12/2022 1.0 Criação do documento Ana Luiza João Lucas
28/12/2022 28/12/2022 1.1 Criação e adição dos SIG João Lucas Ana Luiza

Introdução

O NFR Framework utiliza requisitos não funcionais (Non Functional Requirements) para conduzir o processo geral de design, colocando esses requisitos em primeiro lugar na mente do desenvolvedor. Esse framework tem o objetivo de possibilitar que o desenvolvedor recorra ao conhecimento disponível relevante para a(s) etapa(s) na qual(is) ele esteja envolvido.

Esse framework oferece uma estrutura feita para representar e/ou registrar o processo de design em SIGs, Softgoal Interdependency Graphs, além de promover a catalogação de requisitos não funcionais, designs e técnicas de desenvolvimento. [1]

Softgoal, um termo muito mencionado no framework em questão, é um objetivo sem uma definição clara nem critérios de satisfação precisos. Eles são utilizados para representar NFRs, podendo estar interligados e exercer influência sobre outros.

Os softgoals podem ser separados em três tipos, são eles:

  • Softgoals NFR: são requisitos não funcionais, como critérios e atributos de qualidade, que desejam encontrar na análise a determinação de sua implementação ou não implementação;

  • Softgoals de Operacionalização: são funcionalidades, representam uma forma concreta de viabilizar (ou não) características abstratas;

  • Softgoals de Afirmação: são notações, feitas em linguagem natural, que podem ser acrescentadas ao modelo para argumentar sobre um ponto específico de modelagem.

Cada um dos softgoals apresentados podem ser decompostos, seguindo os tipos de decomposição abaixo:

  • Decomposição de Softgoal NFR: refina/divide um softgoal NFR em outros. Ajuda a dividir problemas em partes menores, sendo útil para lidar com ambiguidades e prioridades;

  • Decomposição de Operacionalização: subdivide um softgoal de operacionalização em outros mais específicos, sendo útil para definir soluções gerais e transformá-las em soluções mais específicas;

  • Decomposição de Afirmação (claims): refina um softgoal de afirmação em outros. É útil para apoiar ou não justificativas de projeto;

  • Priorização: refina um softgoal em outro, com o mesmo tipo e tópicos, junto a uma prioridade associada. [2]

Contribuições

As alterações no estado de um softgoal filho geram alterações no softgoal pai. Esse aspecto é chamado de contribuição, e seus tipos estão apresentados na tabela 1 abaixo.

Contribuição Representação Descrição
AND AND PAI é satisfeito se somente se todos os FILHOS forem satisfeitos sob a perspectiva dos envolvidos.
OR OR PAI é satisfeito se somente se um dos FILHOS é satisfeito sob a perspectiva dos envolvidos.
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.
BREAK -- FILHO com contribuição tão negativa a ponto de negar o PAI sob a perspectiva dos envolvidos.
HURT - FILHO com contribuição negativa parcial, que sozinho não chega a negar o PAI sob a perspectiva dos envolvidos.
UNKNOWN ? FILHO não afeta o PAI.
EQUALS = Ambos compartilham o mesmo label.
SOME SOME - FILHO com contribuição negativa, cuja intensidade não se pode determinar.
SOME SOME + FILHO com contribuição positiva, cuja intensidade não se pode determinar.

Tabela 1 - Contribuições

Legenda

Para entender as figuras apresentadas mais abaixo nesse documento, faz-se necessário o uso da legenda apresentada na tabela 2 a seguir, com as imagens da dissertação de Reinaldo Antônio da Silva [3].

Desenho Descrição
Softgoal NFR
Softgoal de operacionalização
Softgoal de afirmação
Satisfeito
Negado
Indeterminado

Tabela 2 - Legenda

NFRs

As figuras a seguir apresentam os SIG elaborados sobre Usabilidade, Confiabilidade, Desempenho e Suportabilidade.

Usabilidade

Sem Propagação

Figura 1 - SIG Usabilidade

Propagação de erros

Figura 2 - SIG Usabilidade Com Propagação de erros

Confiabilidade

Sem Propagação

Figura 3 - SIG Confiabilidade

Propagação de erros

Figura 4 - SIG Confiabilidade Com Propagação de erros

Desempenho

Sem Propagação

Figura 5 - SIG Desempenho

Propagação de erros

Figura 6 - SIG Desempenho Com Propagação de erros

Suportabilidade

Sem Propagação

Figura 7 - SIG Suportabilidade

Propagação de erros

Figura 8 - SIG Suportabilidade Com Propagação de erros

Bibliografia

[1] Chung, Lawrence; A. Nixon, Brian; Mylopoulos, John. Non-Functional Requirements in Software Engineering. Acesso em 26 de Dezembro de 2022

[2] 2020.1-GuardioesdaSaude. Disponível em: https://requisitos-de-software.github.io/2020.1-GuardioesdaSaude/modelagem/NFR/. Acesso em: 27 de Dezembro de 2022

[3] 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: 25 de Dezembro de 2022