artigo transp sw

54
1 REQUISITOS NÃO FUNCIONAIS: DA ELICITAÇÃO AOS MODELOS CONCEITUAIS [email protected] PUC-RJ TRANSPARÊNCIA DE SOFTWARE

Upload: transparenciadesoftware

Post on 06-Jul-2015

439 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Artigo Transp Sw

1

REQUISITOS NÃO FUNCIONAIS:DA ELICITAÇÃO AOS MODELOS CONCEITUAIS

[email protected]

PUC-RJ

TRANSPARÊNCIA DE SOFTWARE

Page 2: Artigo Transp Sw

2

Introdução

Sistemas de Software devem se preocupar não somente com aspectos funcionais, mas também com aspectos não funcionais: Confiança Segurança Precisão Performance “Look and Feel” Requirements

Page 3: Artigo Transp Sw

3

Introdução

Esses Aspectos devem ser tratados como Requisitos Não-Funcionais (NFR)

Deve-se dedicar atenção aos NFRs durante todo o Processo de Desenvolvimento

Caso clássico de não conformidade dos NFRs: London Ambulance System

Page 4: Artigo Transp Sw

4

Introdução

NFRs tem recebido pouca atenção no desenvolvimento de software

A maioria dos trabalhos em NFRs usa uma abordagem orientada a produto

Essa abordagem orientada a produto está relacionada a medida do quanto o software está de acordo com o conjunto de NFRs que ele deveria satisfazer

Page 5: Artigo Transp Sw

5

Introdução

Existem trabalhos em NFRs que usam abordagem orientada a processo

A abordagem orientada a processo propõe o uso de técnicas para justificar decisões de design na inclusão ou exclusão dos requisitos

Page 6: Artigo Transp Sw

6

Introdução

O artigo propõe uma estratégia para elicitar NFRs e orientar o engenheiro de software a obter modelos conceituais que terão rastros explícitos para os NFRs e vice-versa

O processo de elicitação proposto é baseado no uso de léxico, que não servirá somente para unir modelos funcionais e não funcionas, mas também para guiar a elicitação de NFRs

Page 7: Artigo Transp Sw

7

Introdução

Por fim, a estratégia propões uma maneira sistemática de integrar os NFRs elicitados com casos de uso e cenários, bem como diagramas de classe, seqüência e colaboração

Page 8: Artigo Transp Sw

8

– Visão do desenvolvimento de software como 2 perspectivas independentes e evolutivas

– Uma perspectiva cuida dos aspectos funcionais e a outra de aspectos não-funcionais

– Mudanças nos requisitos são geralmente motivadas por aspectos funcionais e não funcionais, logo tratá-los separadamente facilita o aspecto evolutivo

Overview da Estratégia

Page 9: Artigo Transp Sw

9

Overview da Estratégia

Page 10: Artigo Transp Sw

10

– Formada por: BUILD LEL; BUILD FUNCTIONAL PERSPECTIVE; BUILD NON - FUNCTIONAL PERSPECTIVE; INTEGRATE BOTH PERSPECTIVES

– Perspectivas funcionais e não funcionais ligadas pelo LEL – vocabulário comum

– Inicialmente, constrói-se o léxico e em seguida, os modelos funcionais e não funcionais paralelamente. Posteriormente integra-se os 2 modelos preocupando-se com os diferentes feedbacks durante a evolução do processo (novos símbolos no LEL e discrepâncias)

Overview da Estratégia

Page 11: Artigo Transp Sw

11

1. Construção do Léxico

– O LEL registra o vocabulário de um Universo de Discurso

– Baseado na simples ideia: entender a linguagem do problema sem se preocupar em entender profundamente o problema

– Inicialmente, constrói-se o léxico e em seguida, os modelos funcionais e não funcionais paralelamente. Posteriormente integra-se os 2 modelos preocupando-se com os diferentes feedbacks durante a evolução do processo (novos símbolos no LEL e discrepâncias)

– Suas entradas são naturamente ligadas em um grafo

Overview da Estratégia

Page 12: Artigo Transp Sw

12

2. Construção da Perspectiva Funcional

– Após o LEL, inicia-se a construção do modelo funcional

– O artigo não detalha o processo, sugerindo qualquer modelagem OO (por exemplo, RUP)

Overview da Estratégia

Page 13: Artigo Transp Sw

13

3. Construção da Perspectiva Não - Funcional

– É construida em paralelo a perspectiva funcional

– Nessa atividade, os NFRs desejados são inseridos no recém criado LEL

– Em seguida, os NFRs são representados por um conjunto de grafos, usando NFR framework de Chung

– O NFR framework propõe o uso de requisitos não funcionais para guiar o design do sistema

Overview da Estratégia

Page 14: Artigo Transp Sw

14

4. Integração das Perspectivas

– O processo de integração pode acontecer tanto na early phase, integrando os NFRs aos casos de usos e cenários, ou depois, integrando os NFRs aos diagramas de classes, sequência e colaboração

– É importante ressaltar que a integração é baseada na ideia que os grafos NFRs e o diagramas de classes, sequência e colaboração serão construídos utilizando símbolos do LEL.

Overview da Estratégia

Page 15: Artigo Transp Sw

15

Construção da Perspectiva Não - Funcional

Page 16: Artigo Transp Sw

16

– Para construir a perspectiva não funcional, utiliza-se o LEL existente, ou caso não exista, deve-se construir um novo

– Deve-se adicionar ao LEL os NFRs desejados pelos clientes

– Uma vez que se tem o léxico mostrando os NFRs desejados e algumas de suas operacionalizações, representa-se esses NFRs em um conjunto de grafos NFRs, de acordo com o framework NFR

– Em seguida, aplicam-se heurísticas na procura de possíveis interdependências

– Possíveis conflitos devem ser negociados com os Stakeholders

Construção da Perspectiva Não - Funcional

Page 17: Artigo Transp Sw

17

Três motivos para o uso de LEL:

– Linguagem natural de representação (cliente leigo não tem dificuldades em lidar com isto)

– É estruturado em grafos

– É usado como base para futuras representações, provendo uma rastreabilidade natural

Usando LEL Como Apoio na Elicitação dos NFRs

Page 18: Artigo Transp Sw

18

Construção do LEL:

– Deve ser orientada pelos princípios do vocabulário mínimo e da circularidade

– O princípio da circularidade prevê a maximização do uso de símbolos do LEL quando da descrição de entradas do LEL

– O princípio do vocabulário mínimo prevê a minimização do uso de símbolos externos ao LEL quando da descrição destes símbolos

Usando LEL Como Apoio na Elicitação dos NFRs

Page 19: Artigo Transp Sw

19

– Deve-se extender o LEL para ajudar na elicitação dos NFRs

– LEL está agora estruturado para expressar que um símbolo necessita de um ou mais NFRs

– Para cada NFR expresso deve-se recorrer a base de conhecimentos para tentar encontrar possíveis refinamentos e operacionalizações para este NFR

– Uma vez que a operacionalização é inserida, é necessário introduzir um link de rastreabilidade em notion ou behavioral response (impacto) apontando para o NFR que originou a operacionalização

Usando LEL Como Apoio na Elicitação dos NFRs

Page 20: Artigo Transp Sw

20

– Base de conhecimento em forma de catálogo. Disponível em: http://www.math.yorku.ca/~cysneiro/nfrs.htm

– Tanto o LEL quanto a extensão com suporte aos NFRs estão implementados na ferramenta OORNF

– Esta ferramenta possui uma variedade de NFRs e maneiras de os decompor.

– A ferramenta suporta cenários, LEL e class responsibility collaboration (CRC) cards

Usando LEL Como Apoio na Elicitação dos NFRs

Page 21: Artigo Transp Sw

21

Exemplo OORNF Tool:

– Laboratório de Análises Clínicas

– Para cada um dos símbolos representados no LEL, devemos nos perguntar e também aos clientes quais possíveis NFRs devem ser alcançados para que o símbolo seja completamente representado

– A figura ao lado mostra o símbolo Sample (amostra), com sua notion e behavioral response, além do catálogo de NFRs

Usando LEL Como Apoio na Elicitação dos NFRs

Page 22: Artigo Transp Sw

22

Exemplo OORNF Tool:

– Adição do NFR Traceability

– Padrão do link de rastreabilidade: “NocaoOrg[“+ Simbolo_LEL + “&”+ NFR+ “&”+ numero_interno]

– Uma amostra deve ser rastreável. Temos que entender como alcançar então esse NFR (perguntar ao cliente)

Usando LEL Como Apoio na Elicitação dos NFRs

Page 23: Artigo Transp Sw

23

Exemplo OORNF Tool:

– Toda vez que uma amostra for dividida, ou passar de um recipiente para outro, deve ficar gravado para que qualquer um saiba a amostra original

– Criado novo símbolo Aliquote Sample

Usando LEL Como Apoio na Elicitação dos NFRs

Page 24: Artigo Transp Sw

24

Usando LEL Como Apoio na Elicitação dos NFRs

Page 25: Artigo Transp Sw

25

– Goal satisficing sugere que uma solução espera ser satisfeita com limites aceitáveis

– Utiliza-se o NFR Framework

– O NFR framework vê os NFRs como objetivos que são conflitantes entre sí

– Esses objetivos são representados por softgoals para serem satisfeitos

– Cada softgoal será decomposto em subgoals representado por uma estrutura de grafo inspirado em árvores and/or

Representando NFRs

Page 26: Artigo Transp Sw

26

– Extensão do NFR Framework: operacionalização estática e dinâmica

– Operacionalizações Dinâmicas são aquelas que chamam por ações a serem executadas (círculo pontilhado)

– Operacionalização Estática geralmente expressa a necessidade do uso de algum dado no design do software para armazenar a informação que é necessária para satisfazer o NFR (círculo em negrito)

Representando NFRs

Page 27: Artigo Transp Sw

27

Exemplo símbolo Room:

– Has NFR Safety

– O sistema deve manter um caminho seguro através de uma determinada quantidade de luz no ambiente

Construindo Grafos NFR

Page 28: Artigo Transp Sw

28

– Após representar o nó raiz do grafo NFR, deve-se buscar por operacionalizações

Construindo Grafos NFR

Page 29: Artigo Transp Sw

29

– Usando o behavioral responses presente no LEL, são representadas possíveis operacionalizações

Construindo Grafos NFR

Page 30: Artigo Transp Sw

30

– Em seguida, deve-se verificar se existe possíveis subgoals. Se existirem, devem ser representados como um passo intermediário.

– Deve-se proceder de 2 maneiras distintas:

1. Decompondo a raíz usando abordagem top-down

1. Pode-se continuar a avaliação usando uma abordagem bottom-up

– No fim, para cada símbolo do LEL teremos um conjunto de grafos NFR, modelando a perspectiva não-funcional

– Deve-se checar cada grafo verificando possíveis conflitos

Construindo Grafos NFR

Page 31: Artigo Transp Sw

31

Representando NFRs

Page 32: Artigo Transp Sw

32

– Uma vez feito os grafos NFRs, deve-se procurar por possíveis interdependências entre NFRs

– Por exemplo, um software que precisa ter um alto nível de segurança irá impactar negativamente em outro NFR, como a usabilidade

– 3 Heurísticas:

1. Comparar todos os grafos do mesmo tipo, procurando por possíveis interdependências. Ex: todos os NFRs sobre Safety

3. Comparar todos os grafos que são classificados na base de conhecimentos com NFRs possivelmente conflitantes. Ex: Segurança x Usabilidade

5. Comparar par a par todos os grafos que não foram comparados aplicando-se as heurísticas anteriores.

Identificando e Resolvendo Conflitos

Page 33: Artigo Transp Sw

33

Identificando e Resolvendo Conflitos

Page 34: Artigo Transp Sw

34

– Os subgoals parcialmente satisfeitos devem ser negociados com os stakeholders

– Importante:

– Essas heurísticas tornam-se inapropriadas para uso quando se trata de sistemas com um número muito grande de NFRs

– A sugestão seria automatizar o processo

Identificando e Resolvendo Conflitos

Page 35: Artigo Transp Sw

35

– A estratégia permite a integração dos NFRs aos casos de uso, cenários, modelos de classes e diagramas de classes, sequência e colaboração

– Ao integrar os NFRs aos casos de uso e cenários na early fase do desenvolvimento do software, os artefatos produzidos posteriormente irão naturalmente refletir os NFRs

Integrando Perspectivas Funcionais e Não-Funcionais

Page 36: Artigo Transp Sw

36

– Para cada diagrama de caso de uso na perspectiva funcional, identificar se algum símbolo do LEL aparece no nome do diagrama

– Também deve-se identificar se algum símbolo do LEL aparece em algum caso de uso ou ator desse diagrama

– Para cada símbolo encontrado, deve-se procurar o conjunto de grafos NFRs para identificar onde o símbolo aparece

– Pega-se cada grafo onde o símbolo aparece e verifica-se o diagrama de caso de uso para saber se ele realiza a operacionalização dinâmica no grafo

Integrando NFRs nos Casos de Uso

Page 37: Artigo Transp Sw

37

– Cada caso de uso ou ator incluído para satisfazer um determinado NFR deve ser seguido pela expressão seguindo o padrão: {NFR_Type[NFR_topic]}

– O uso dessa expressão ajuda a reatreabilidade

– Os NFRs tem uma natureza muito vaga, em oposição aos requisitos funcionais, e não é muito usual tê-los claramente na mente do engenheiro de software

– A rastreabilidade ajuda ao engenheiro de software na revisão e mudança dos modelos

– Pode ser necessário estabelecer condições especiais como pré e pós condições para satisfazer algum NFR

Integrando NFRs nos Casos de Uso

Page 38: Artigo Transp Sw

38

Integrando NFRs nos Casos de Uso

Page 39: Artigo Transp Sw

39

– O processo de integração também será baseado no uso do LEL

– Cada cenário será analisado, procurando-se símbolos do LEL no título do cenário, na descrição de recursos, na desrição de atores, ou na descrição de objetivos

– Para cada símbolo encontrado, observa-se o conjunto de grafos NFRs procurando este símbolo

– Uma vez encotrado um ou mais grafos NFRs, deve-se checar se as operacionalizações em cada grafo já são satisfeitas na descrição dos cenários

– Caso não forem satisfeitas, deve-se atualizar os cenários para satisfazer essa condição

– Esse processo continua até todos os cenários serem analisados

Integrando NFRs em Cenários

Page 40: Artigo Transp Sw

40

Integrando NFRs em Cenários

Page 41: Artigo Transp Sw

41

– Assim como nos casos de uso, caso não seja encontrado pelo menos um símbolo do LEL no título do cenário, deve-se atualizar o LEL

– Também como nos casos de uso, a informação inserida nos cenários para satisfazer um NFR deve estar no padrão: Constraint{NFR_Type[NFR_topic]}

Integrando NFRs em Cenários

Page 42: Artigo Transp Sw

42

Integrando NFRs em Cenários

Page 43: Artigo Transp Sw

43

– O processo de integração também será baseado no uso do LEL

– Cada classe pertencente ao diagrama de classes deve ser nomeada usando símbolos do LEL

– Caso não se encontre símbolos do LEL no nome das classes, pode se considerar que algum símbolo não foi considerado ou o LEL precisa ser atualizado

– O processo de integração é centrado na procura dos símbolos que aparecem em ambos os modelos, e analisando os impactos de adicionar a operacionalização dos NFRs no diagrama de classes

Integrando NFRs em Diagramas de Classes

Page 44: Artigo Transp Sw

44

Integrando NFRs em Diagramas de Classes

Page 45: Artigo Transp Sw

45

– Inicialmente, pega-se uma classe do diagrama, em qualquer ordem

– Em seguida, procura-se em todos os grafos NFRs a ocorrência desse símbolo

– Em cada grafo que o símbolo apareça, deve-se identificar as operacionalizações estáticas e dinâmicas para este grafo

– Para operacionalizações dinâmicas encontradas, deve-se verificar se as operações pertencentes as classes preenchem as necessidades expressas na operacionalização do grafo

– Caso não esteja, deve-se adicionar novas operações e atributos a classe

– A inserção de novas operações e atributos muitas vezes requer uma nova análise

Integrando NFRs em Diagramas de Classes

Page 46: Artigo Transp Sw

46

1. Classes criadas para satisfazer um NFR deve ter seu nome seguido de um link para rastreabilidade, no padrão: {NFR [LEL symbol]}

– A classe FMCP foi criada observando-se a classe Control Panel

– Procurou-se nos grafos NFRs pelo símbolo

– Observou-se duas operacionalizações dinâmicas – Set Password e Ask Password

– Como não foi encontrado nada na classe Control Panel para satisfazer esses NFRs, criou-se a subclasse Facility Manager Control Panel - FMCP

Heurísticas de Como Usar Didagramas de Classes para Tratar NFRs

Page 47: Artigo Transp Sw

47

2. Adjacente a cada operação incluída para satisfazer um NFR, deve-se adicionar um link para a perspectiva não-funcional

– Como na primeira heurística, esse procedimento reforça a rastreabilidade do modelo

3. Se um NFR necessita de pré ou pós condições para aplicar uma operação, deve-se adicionar essas pré e pós condições a essas respectivas operações

– Essa heurística é usada para tratar restrições operacionais que alguns NFRs impõem

4. Adjacente a cada atributo que foi adicionado para satisfazer um NFR, deve-se usar a mesma expressão usada nas operações para manter um link para as perspectivas não-funcionais

Heurísticas de Como Usar Didagramas de Classes para Tratar NFRs

Page 48: Artigo Transp Sw

48

Heurísticas de Como Usar Didagramas de Classes para Tratar NFRs

Page 49: Artigo Transp Sw

49

– A integração de NFRs no diagrama de sequência e colaboração é feita examinado cada classe do diagrama de classes

– Para cada operação incluída para satisfazer um NFR, deve-se procurar os diagramas de sequência e colaboração em que essas classes aparecem

– Para cada diagrama encontrado, deve-se verificar se as novas operações adicionadas estão de acordo com os NFRs e se isso irá resultar em alguma alteração ou adição de classes e/ou mensagens nos diagramas

– Deve-se representar as novas mensagens juntas as prés e pós condições nos diagramas onde foram adicionadas para tratar os NFRs

– As mensagens também devem conter os links de rastreabilidade, como visto anteriormente

Integrando NFRs em Diagramas de Sequência e Colaboração

Page 50: Artigo Transp Sw

50

Integrando NFRs em Diagramas de Sequência e Colaboração

Page 51: Artigo Transp Sw

51

– Para comprovar o uso da estratégia, foram realizados 3 estudos de casos

– O estudo de caso I foi conduzido usando os modelos conceituais criado por Breitman como parte de sua tese de PhD. Trata-se da implementação de um Light Control System, para a Universidade de Kaiserslautern

– O estudo de caso II foi conduzido utilizando os modelos conceituais criado por um grupo de alunos de graduação da PUC-Rio durante um projeto de software

– O estudo de caso III foi conduzido junto a uma software house especializada em construir softwares para laboratórios de análises clínicas. Eles eram responsáveis pelo desenvolvimento de um novo sistema de informação para um laboratório

Usando a Estratégia

Page 52: Artigo Transp Sw

52

Usando a Estratégia

– É fácil observar que todos os 3 estudos de caso apresentaram um número considerável de mudanças nos modelos conceituais analisados

Page 53: Artigo Transp Sw

53

– Erros ao tratar os NFRs são os mais caros e difíceis de corrigir

– A maioria dos métodos na engenharia de software não tratam os NFRs de uma maneira explicita

– O trabalho apresentado mostra um forte e mais sistemático processo de elicitação, extendendo o LEL para ajudar a elicitar NFRs, usando heurísticas para solução de conflitos e um importante processo de integração de perspectivas funcionais e não funcionais

– Por fim, comprovou-se a estratégia realizando 3 estudos de caso. Os resultados sugerem que o uso da estratégia ajuda a melhorar a qualidade do modelo conceitual final, além de tornar o processo de desenvolvimento de software mais produtivo

Conclusões

Page 54: Artigo Transp Sw

54

CYSNEIROS, Luiz Marcio; LEITE, Julio Cesar Sampaio do Prado. Nonfunctional Requirements: From Elicitation to Conceptual Models. IEEE Transactions on Software Engineering, Maio 2004 (Vol 30, n 05)

Referência