• Nenhum resultado encontrado

Criação do modelo de contextos, para criar os modelos de

contexto deve-se realizar a seguinte regra:

Regra 9 - criar o modelo de contextos através da modelagem da árvore de fatos, declarações e decomposições.

Exemplo: analisando a especificação de requisitos da LPS foi identificado o

verdadeiro se a declaração S1: O usuário deseja realizar o salvamento de suas fotos de maneira manual for suportada pelo fato F1: O sistema disponibiliza função para salvamento manual.

Figura 6. Contexto C1 - Salvar Manualmente

Fonte: LIMA (2011)

Passo 2 - Enriquecendo o modelo i*-Ortogonal Intencional com informações contextuais. Para anotar os contextos no modelo i*-ortogonal

intencional, as seguintes regras devem ser seguidas:

Regra 10 – caso o dependee/subelemento de um relacionamento (meio-fim, dependência ou contribuição) dependa de algum contexto, então o contexto deve ser associado ao respectivo relacionamento.

Exemplo: o modelo i*-ortogonal com a representação do contexto é

apresentado na Figura 7. Para executar a tarefa Salvar pelo Usuário é necessário que o contexto C1 seja verdadeiro, assim é inserido o contexto C1 na ligação meio-fim entre o objetivo Salvar Foto e a tarefa Salvar Pelo Usuário.

Atividade 3 - Representar a variabilidade

Esta atividade tem por objetivo documentar a variabilidade da LPS no modelo de objetivos i*-ortogonal contextual. Como saída dessa atividade é gerado o modelo i*-ortogonal.

Passo 1 - Definição das cardinalidades, nesta etapa o modelo i*-ortogonal

contextual é enriquecido com a cardinalidade. Para esse fim, as seguintes regras devem ser seguidas:

Regra 11 - inserir cardinalidade nos objetivos que são pontos de variação externos ao ator. O objetivo pode possuir cardinalidade obrigatória (1..1) ou opcional (0..1);

Regra 12 - inserir cardinalidade nos objetivos que são pontos de variação internos ao ator. O objetivo pode possuir cardinalidade obrigatória (1..1) ou opcional (0..1);

Regra 13 - inserir cardinalidade nos elementos do tipo Tarefa e Recurso que são internos ou externos ao ator. A cardinalidade pode ser obrigatória (1..1) ou opcional (0..1);

Regra 14 - modelar a cardinalidade nos agrupamentos internos ao ator. A cardinalidade pode ser obrigatória – cardinalidade [1..1],[1..n], opcional – cardinalidade [0..1],[0..n] ou alternativa – cardinalidade [m..n].

Regra 15 - modelar a cardinalidade nos agrupamentos externos ao ator. A cardinalidade pode ser obrigatória – cardinalidade [1..1],[1..n], opcional – cardinalidade [0..1],[0..n] ou alternativa – cardinalidade [m..n]).

Exemplo: na Figura 7 é apresentado o modelo i*-ortogonal com a

cardinalidade representada. Aplicando a regra 11, é inserida a cardinalidade obrigatória no objetivo Adição de Foto. Aplicando a regra 12, é inserida cardinalidade opcional nos objetivos, Atualização de Lista de Fotos e Álbum Selecionado. Já os objetivos Gerenciamento de Mídia e Salvar Foto possuem cardinalidade obrigatória. Aplicando a regra 13, é inserida cardinalidade obrigatória nas tarefas Gerenciamento de Mídia, Adicionar Foto e Armazenar Foto. Aplicando a regra 14, as tarefas Salvar Automaticamente e Salvar pelo Usuário são colocadas em um grupamento com cardinalidade [1..1].

Passo 2 - Definição das restrições, para modelar as restrições requires e excludes entre os elementos, as seguintes regras devem ser seguidas:

Regra 16 - caso um elemento requeiram a presença de outro elemento, então deve ser criado um relacionamento do tipo requires entre esses elementos;

Regra 17 - caso dois elementos sejam conflitantes, então deve ser criado um relacionamento do tipo excludes entre os mesmos.

Exemplo: Esse exemplo não contém restrições.

Figura 7. Modelo i*-Ortogonal para o Mobile Media

Fonte: LIMA (2011)

Engenharia de Aplicação (AE)

Esse subprocesso tem como objetivo configurar o modelo i*-wiki para uma determinada aplicação. Para realizar a configuração do modelo i*-wiki, primeiramente é criado uma ou mais variantes. Em LIMA (2011), o termo ‘variante’ é utilizado para se referir a uma possível configuração. A elaboração das variantes pode ser realizada de maneira ad-hoc ou através da utilização de contextos. Quando a elaboração das variantes é realizada através da utilização do contexto, também é realizada a priorização de variantes.

Atividade 4 - Escolher a configuração específica contextual (opcional)

A criação de uma variante levando em consideração os contextos pode ser obtida a partir do uso da técnica de enunciação de predicados de ALI, DALPIAZ e GIORGINI (2009). Essa técnica propõe que uma variante seja definida por V, a qual é composta por um conjunto de elementos avaliados em blocos (delimitados por parênteses) e relacionados através de sentenças lógicas de primeira ordem “e”, “ou”, “negação” – ou seja, and (˄), or (˅), not (¬), a fim de definir uma variante elegível para a etapa de configuração do modelo i*-Wiki. Assim sendo, a variante é composta de contextos (Context), isolados ou agrupados em sentenças lógicas (and, or, not), como apresentado na equação 4:

𝑉 = 𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜| (𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜)˄(𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜)| (𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜)˅(𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜)|¬(𝐶𝑜𝑛𝑡𝑒𝑥𝑡𝑜) (4)

Exemplo: para o exemplo aqui apresentado foram elaboradas as variantes V1

e V2. A variante V1 diz que o contexto C1 é verdadeiro (V1 = C1) e a variante V2 diz que o contexto C1 é falso (V2 = ¬C1).

Atividade 5 – Escolher a configuração específica ad-hoc (opcional)

Esta atividade tem como intuito escolher os elementos de forma manual, ou seja, o stakeholder/analista apenas escolhe os elementos que o mesmo deseja que estejam contidos na aplicação gerada.

Exemplo: Esta atividade não será exemplificada, pois a mesma consiste em

apenas escolher os elementos de maneira manual.

Atividade 6 - Priorização de Variantes

A priorização de variantes serve para estimar qual a variante que melhor atende a satisfação dos RNFs. A priorização é realizada através da análise de softgoals. Para o cálculo da prioridade das variantes, foi adaptada a fórmula de priorização proposta por ALI, DALPIAZ e GIORGINI (2009). A adaptação ocorreu no cálculo do valor de percentPos e percentNeg. Em E-SPL foi adicionado ao cálculo desses valores o fator percentual tipoDeContPos/tipoDeContNeg. Os novos cálculos de percentPos e percentNeg são apresentado nas fórmulas 6 e 7. A fórmula do

cálculo da prioridade (fórmula 5) é apresentada novamente apenas para facilitar o entendimento.

priority(v) = ∑ percentPos(v, sg) × priority(sg) sg ∈ v − ∑ percentNeg(v, sg) × priority(sg) sg∈v (5) Onde: 𝑝𝑒𝑟𝑐𝑒𝑛𝑡𝑃𝑜𝑠(𝑣, 𝑠𝑔) = 𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑃𝑜𝑠(𝑠𝑔) 𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑃𝑜𝑠𝑇𝑜𝑡𝑎𝑙× 𝑡𝑖𝑝𝑜𝐷𝑒𝐶𝑜𝑛𝑡𝑃𝑜𝑠(𝑠𝑔) (6) 𝑝𝑒𝑟𝑐𝑒𝑛𝑡𝑁𝑒𝑔(𝑣, 𝑠𝑔) = 𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑁𝑒𝑔(𝑠𝑔) 𝑛𝑢𝑛𝐶𝑜𝑛𝑡𝑁𝑒𝑔𝑇𝑜𝑡𝑎𝑙× 𝑡𝑖𝑝𝑜𝐷𝑒𝐶𝑜𝑛𝑡𝑁𝑒𝑔(𝑠𝑔) (7)

A variável percentPos(v,sg), refere-se ao percentual de contribuições positivas de uma variante v a um determinado softgoal (sg). Por outro lado, a variável percentNeg(v,sg), refere-se ao percentual de contribuições negativas de uma variante v a um determinado softgoal (sg).

O numContPosTotal e o numContNegTotal referem-se, respectivamente, ao número de contribuições positivas e negativas no modelo de objetivos. O numContPos(sg) é o número de contribuições positivas e o tipoDeContPos(sg) leva em consideração um fator percentual para os tipos de contribuição positivas, o valor do fator percentual é definido na Tabela 3. Analogamente, numContNeg(sg) é o número de contribuições negativas e o tipoDeContINeg(sg) leva em consideração um fator percentual para os tipos de contribuição negativas definidas, o valor do fator percentual é definido na Tabela 3.

Tabela 3. Valor percentual dos links de contribuição

Contribuição Make Break Help Hurt Some + Some - Unknown

Valor 1,00 0,75 0,50 0,25

Exemplo: primeiramente é necessário definir o valor de priority. O valor de priority para o RNF Rapidez [Armazenamento] (RA) é igual a 10, assim o valor das prioridades são os seguintes:

Valor da prioridade da variante V1:

priority(v1) = −𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑁𝑒𝑔(𝑠𝑔)

𝑛𝑢𝑛𝐶𝑜𝑛𝑡𝑁𝑒𝑔𝑇𝑜𝑡𝑎𝑙×𝑡𝑖𝑝𝑜𝐷𝑒𝐶𝑜𝑛𝑡𝑁𝑒𝑔(𝑠𝑔) ×𝑝𝑟𝑖𝑜𝑟𝑖𝑡𝑦(𝑅𝐴)

priority(v) = 0 − 1

1× 0,75 × 10 = 0 − 7,5 = −7,5 Valor da prioridade da variante V2:

priority(v2) = 𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑃𝑜𝑠(𝑅𝐴)

𝑛𝑢𝑚𝐶𝑜𝑛𝑡𝑃𝑜𝑠𝑇𝑜𝑡𝑎𝑙×𝑡𝑖𝑝𝑜𝐷𝑒𝐶𝑜𝑛𝑡𝑃𝑜𝑠(𝑠𝑔)× priority(RA)

priority(v) = 1

1× 0,75 × 10 = 7,5

Analisando o valor das prioridades, nota-se que a variante V2 possui o maior valor e consequentemente, essa é a variante que melhor irá satisfazer os requisitos não funcionais desejados pelo stakeholders.

Atividade 7 - Selecionar a configuração específica

Esta atividade tem como intuito configurar o modelo i*-ortogonal da variante selecionada. Após realizar a configuração é obtido o modelo i*-Wiki. Isso é possível realizando as seguintes ações: