• No results found

Om Constance Tenvik

In document Kunst som deling, delingens kunst (sider 78-83)

responder às questões do nível anterior. Esta informação pode ser objetiva, se depender apenas do objeto que está a ser medido; ou subjetiva, se depender do objeto e também do ponto de vista do stakeholder.

Objetivo 1 Objetivo 2 ConceptualNível

Q1 Q2 Q3 Q4 Q5 OperacionalNível M1 M2 M3 M4 M5 M6 QuantitativoNível De fini çã o Interpre taç ão

Figura 2.9: Estrutura do modelo QGM

A possibilidade de definir questões abstratas e responder com o auxílio de métricas, a fim de avaliar a qualidade, é relevante para a presente dissertação, uma vez que esta pretende controlar alguns atributos de qualidade, como a complexidade, a completude e a correção.

2.5

Especificação Formal de Métricas

No contexto desta dissertação, torna-se importante especificar as métricas propostas para a avaliação da qualidade dos modelos i*. Essa especificação, como referido anteri- ormente, é feita tanto em linguagem natural como em linguagem formal.

Uma linguagem natural, ou seja, uma linguagem desenvolvida naturalmente pelo ser humano, é mais simples e fácil de compreender do que uma linguagem formal. No entanto, é mais propensa a ambiguidades e omissões, fomentando implementações in- consistentes. Por sua vez, uma especificação formal é uma descrição matemática de soft- wareou de hardware que pode ser utilizada para desenvolver uma implementação dos mesmos. Assim, uma linguagem formal permite evitar eventuais ambiguidades que po- deriam resultar em implementações inconsistentes das métricas propostas [Shu+02], e possibilita a automatização do processo de identificação de métricas. A linguagem for- mal a ser utilizada para a especificação formal de métricas é a OCL.

A OCL (do inglês Object Constraint Language) [Obj14a], ou Linguagem para Especi- ficação de Restrições em Objetos, é uma linguagem declarativa utilizada para descrever expressões em modelos UML (do inglês Unified Modelling Language [Obj14b]). Essas ex- pressões normalmente especificam condições invariantes que devem ser garantidas no sistema a ser modelado, ou consultas sobre objetos descritos no modelo. Quando as ex- pressões em OCL são avaliadas, não têm qualquer efeito, ou seja, a sua avaliação não pode alterar o estado do sistema onde estão a ser executadas. No entanto, expressões

2. ENQUADRAMENTO 2.5. Especificação Formal de Métricas

em OCL podem ser utilizadas para especificar operações/ações que, quando executadas, alteram o estado do sistema [Obj14a].

Esta linguagem é uma linguagem de texto, precisa, que oferece expressões livres das ambiguidades das linguagens naturais, e que possibilita a expressão de restrições em um modelo orientado a objetos que não possam ser especificadas através dos diagramas. Pode ser utilizada com diferentes propósitos, tais como para especificar invariantes em classes e tipos no modelo da classe, para descrever pré e pós condições em operações e métodos, para especificar restrições em operações, entre outros. Apresenta as seguintes vantagens:

• Melhor documentação– restrições adicionam informações sobre os elementos dos modelos e as suas relações com os modelos UML;

• Maior precisão– restrições em OCL têm uma semântica formal, utilizada para re- duzir ambiguidades nos modelos UML;

• Comunicação sem mal-entendidos– utilizando restrições em OCL, os modelado- res (modelers) podem comunicar sem ambiguidades.

A OCL tem 4 (quatro) tipos primitivos de dados: booleanos, inteiros, reais e strings. Adicionalmente, tem operadores lógicos (>, <, =, >= e <=) e as declarações são construí- das em 4 (quatro) partes, sendo elas:

• Contexto– define a situação limita em que a afirmação é válida;

• Propriedade – representa algumas características do contexto (por exemplo, se o contexto é uma classe, a propriedade pode ser um atributo);

• Operação– podendo ser aritmética ou orientada a conjuntos, manipula ou qualifica uma propriedade;

• Palavras-chave – são utilizadas para especificar expressões condicionais (if, then, else, and, or, not, implies).

Para melhor se compreender estes conceitos, a figura 2.10ilustra um diagrama de classes, com as classes Person, Company, Job e Marriage.

2. ENQUADRAMENTO 2.5. Especificação Formal de Métricas

A este diagrama pretende-se acrescentar as seguintes restrições e operações: (i) o número de empregados na empresa tem que ser maior do que 50, (ii) o número de em- pregrados num determinados trabalho tem que ser maior do que 1 e a sua idade tem que ser superior a 18 anos, (iii) pretende-se saber quem é a mulher de determinada pessoa, e (iv) se uma pessoa estiver desempregada, o seu salário é inferior a 100, caso contrário é igual ou superior a 100.

A listagem2.1apresenta o código na linguagem OCL para a especificação das restri- ções e operações anteriores, pela ordem respetiva.

Listagem 2.1: Exemplo de linguagem OCL, adaptado de [WK99]

1 context Company inv: self.numberOfEmployees > 50 3 context Job 5 inv: self.employer.numberOfEmployees >= 1 inv: self.employee.age >= 18 7

context Person::getCurrentWife() : Person

9 pre: self.isMarried = true and self.gender = male

post: result = self.marriage.wife

11

context Person inv:

13 let income : Integer = self.job.salary -> sum() in

if isUnemployed then

15 income < 100

else

17 income >= 100

endif

Para além das vantagens apresentadas anteriormente, a OCL foi escolhida como a lin- guagem formal a ser utilizada nesta dissertação por diversas razões. A primeira prende- se com o facto de que é uma linguagem que oferece formalidade sem sacrificar a compre- ensão, uma vez que foi desenvolvida tendo em vista a usabilidade para os profissionais de UML. Para além da sua boa ligação com a UML, o facto de as definições serem execu- táveis, faz com que se evitem problemas de fidelidade na implementação das métricas, que ocorrem frequentemente com outras abordagens [Gou08]. Adicionalmente, é uma abordagem flexível, sendo que para adicionar uma nova métrica, é apenas necessária a definição de uma nova regra OCL que especifica como a métrica deve ser calculada. Por fim, conduz a uma integração direta com o meta-modelo, facilitando o processo de defini- ção de métricas [Abr01;BBA02], e permitindo recolher informação sobre o meta-modelo enquanto se navega sobre o mesmo.

In document Kunst som deling, delingens kunst (sider 78-83)