Disciplina PCS 5704
Profa. Solange Souza
Aluno Sergio Martins Fernandes
28/11/2008

Desenvolvimento dirigido por modelos (MDD)

Vem abordar problemas da engenharia de software
 Complexidade das plataformas de desenvolvimento evolui
mais rapidamente que a habilidade das linguagens de
programação em mascará-la


MDD prega a elaboração de modelos gráficos do
ambiente de negócio e/ou do aplicativo
Tradução automática desses modelos em código
em linguagem de terceira geração


Vertente do MDD propõe o uso de Linguagens
Específicas de Domínio para modelagem (DSL)
DSLs são linguagens que oferecem poder de
expressividade focado num domínio do problema
específico

Ou seja, são baseadas apenas nos conceitos e
características relevantes de um domínio

Exemplo de DSL


Para que essa abordagem que agrega MDD
e DSLs possa ser utilizada em larga escala, é
importante, entre outros aspectos, que o
processo de desenvolvimento de DSLs seja
equacionado.
(Mernik, M.; Heering, J.; Sloane, A.; 2005)
esboça um processo em 4 fases

Decisão, análise, design e implementação.

Fase de Análise


O domínio do problema é identificado e
conhecimento sobre o domínio é adquirido.
Entradas
 Várias fontes de conhecimento explícito ou implícito
sobre o domínio, tais como documentação técnica,
conhecimento provido por especialistas no domínio,
código de linguagem de propósitos gerais existente, e
pesquisas em clientes.

Saída
 Varia bastante, mas consiste basicamente de
terminologia específica do domínio e semântica numa
forma mais ou menos abstrata.

Captura de conhecimento, representação do
conhecimento, e desenvolvimento de ontologias são
potencialmente úteis na fase de análise.



Efetuar um estudo sobre a modelagem de
features e o desenvolvimento de ontologias
Comparar ambas as abordagens para a análise
de domínios, identificando pontos fortes e
fracos de cada abordagem
Eventualmente, eleger uma delas como mais
apropriada à fase de análise, no
desenvolvimento de DSLs.

(Mernik, M.; Heering, J.; Sloane, A., 2005) considera
que tanto a modelagem de features quanto o
desenvolvimento de ontologias são abordagens válidas
para a análise de domínio, no contexto do
desenvolvimento de DSLs.


Entretanto, não apresenta justificativas para essa afirmativa,
nem a desenvolve.
Estudos relacionam as duas abordagens. Por exemplo:


(Czarnecki et al. ; 2006) relaciona ontologias e modelagem de
features. Em particular, apresenta a modelagem de features como
sendo uma vista sobre ontologias.
(Falbo, R.; Guizzardi, G.; Duarte, K.; 2002) apresenta uma visão
do uso de ontologias para a engenharia de domínio,
exatamente o ramo em que a modelagem de features se
desenvolveu.



Textos citados explicitamente discordam
quanto à abordagem mais adequada.
Tipicamente, porém, situam-se no contexto de
linhas de produto de software, não o
desenvolvimento de DSLs, que tem requisitos
distintos.
Para esse contexto específico, é importante
identificar diretrizes mais claras sobre como
capturar e representar conhecimento sobre o
domínio.
Ontologias

Em filosofia, significa a teoria da existência.



Tenta explicar o que é existir e como o mundo é
configurado através da introdução de um sistema de
categorias críticas para identificar as coisas e as
relações intrínsecas entre elas.
[Gruber, T.] “Uma especificação explícita da
conceituação“
[Mizoguchi, R.; 2003] Uma ontologia consiste
de conceitos, organização hierárquica desses
conceitos, relações entre eles, e axiomas para
formalizar as definições e relações.

Ontologia Superior (upper ontology)


Ontologia do ramo da filosofia, que discute a
natureza do ser, e classifica o que existe no mundo.
Aristóteles, por exemplo, definiu um conjunto de
dez categorias: matéria, quantidade, qualidade,
relação, localização, tempo, etc.

Ontologias de Tarefa versus Ontologias de
Domínio
Uma ontologia de tarefa caracteriza a arquitetura
computacional de um sistema baseado em
conhecimento que desempenha uma tarefa.
 Uma ontologia de domínio caracteriza
conhecimento sobre o domínio no qual a tarefa é
executada.


É comum que, inadequadamente, uma
ontologia seja uma mistura de ontologia de
tarefa e de domínio e, dessa forma, a ontologia
se torne muito pouco reutilizável.

Ontologia pesada versus ontologia leve

Ontologias leves consistem em hierarquias de tópicos,
com pouca consideração sobre definições rigorosas de
conceitos, ou distinção entre conceito e palavra, por
exemplo.
 Tipicamente, ontologias para mecanismos de busca na web
são ontologias leves.

Ontologias pesadas são desenvolvidas com muita atenção
ao significado preciso de cada conceito, princípios
organizacionais desenvolvidos em filosofia, e relações
semanticamente rigorosas entre conceitos.
 Requerem uma conceituação cuidadosa do mundo para
garantir consistência e fidelidade ao modelo.
 É comum que ontologias superiores sejam também pesadas.

Ontologia como vocabulário comum


Aplicação mais direta de ontologias, e o primeiro
passo pra a sistematização de conhecimento sobre
um domínio.
Ontologias para auxiliar o acesso a informações

A internet é uma imensa fonte de informação, e
ontologias podem propiciar o acesso a mais
informações e de forma mais inteligente.

Ontologias como uma forma de mútua
compreensão

Para comunicação entre seres humanos, entre seres
humanos e máquinas, e entre máquinas.
 Por exemplo, para ambientes de bancos de dados
distribuídos.
 [Park, J.; Ram, S.; 2004] advoga o uso de ontologias para a
integração de dados corporativos, capturando conflitos
semânticos entre dados de bases de dados distintas.

Ontologia como especificação


Por exemplo, na área de linhas de produto de software.
Ontologias como base para a sistematização de
conhecimento


Ontologias pesadas precisam ser representadas
de maneira mais formal que ontologias leves
[Mizoguchi, R.; 2003] cita diversas linguagens
formais, especializadas em representar
ontologias. Dentre elas



Ontolingua, criada pela Universidade de Stanford;
RDF (Resource Description Framework), desenvolvida
pelo consórcio W3C;
OWL (Web Ontology Language), também
desenvolvida pelo W3C.
(define-class Tutoring-objective (?t-obj)
"Attributes are also represented as slots.”
:def (and (individual ?t-obj)
(value-type ?t-obj Tutoring.policy Policy))
:axiom-def
(subclass-partition
Tutoring-objective
(setof Transfer-of-knowledge Remedy)))

Outros autores propõem a representação de
ontologias através de modelos orientados a
objetos.

[Asikainen, T.; Mannisto, T; Soininen, T.; 2007],
propõe uma ontologia denominada Kumbang
expressa utilizando um perfil (profile) UML
 Diagramas de classes com estereótipos específicos e
restrições utilizando a linguagem OCL (Object
Constraint Language).
Modelagem de features

Feature



Propriedade importante de uma instância de um conceito
Permite identificar diferenças e aspectos comuns entre
instâncias de um conceito
Conceito
Representa um elemento ou estrutura no domínio de
interesse.
 O foco de interesse não são conceitos matemáticos, que
possuem definição precisa, mas conceitos utilizados em
nossa comunicação cotidiana utilizando linguagem
natural, como cão, mesa, mobília, cliente, conta bancária


A modelagem de features é a atividade de modelar as
propriedades comuns e variáveis de conceitos, e das
interdependências entre essas propriedades,
organizando-as num modelo coerente denominado
modelo de features.
Diagrama de features e algumas informações
adicionais



Tais como descrições semânticas de cada feature,
justificativa para a inclusão de cada feature e restrições
Entre outras informações que podem ser relevantes num
determinado contexto.
Um diagrama de features consiste num conjunto
de nós, um conjunto de segmentos direcionais e
decorações nesses segmentos.



A raiz de um diagrama de features representa um
conceito.
Há features mandatórias, alternativas e opcionais.


Os conceitos de feature e de modelagem de
features foram introduzidos pelo método
Feature-Oriented Domain Analysis, criado pelo
Software Engineering Institute (SEI) para a
modelagem de domínio.
O propósito da modelagem de domínio é
selecionar e definir o domínio em foco, e
coletar informação relevante sobre o domínio e
integrar essa informação num Modelo de
Domínio.

A comunidade de linha de produto de software
incorporou a modelagem de features ao
processo de construção de linhas de produtos

Por considerar que modelos de domínio expressos
como diagramas de features destacam muito
convenientemente a variabilidade do domínio, ou
seja, quais features são mandatórias e quais são
opcionais.
C
f1
f2
f3
Diagrama de features com três
features

Diagrama com features
mandatórias

Diagrama com features
opcionais
C
f1
f3
C
f2
f4
A feature é incluída na
descrição da
instância, desde que o
pai dela também o
seja
f1
f2
f3
A feature pode ou não
ser incluída na
descrição da
instância, se o pai
dela o for

Dois conjuntos de
features alternativas
Dois conjuntos de orfeatures

C
C
f1

f2
f3
f4
f1
f5
Apenas uma feature de
cada conjunto é
incluída na descrição
da instância

f2
f3
f4
f5
Um subconjunto não
vazio de cada
conjunto é incluído na
descrição da instância
Operação
Financeira
Comprador
Liquidação
futura
Liquidação
à Vista
Ativo
Objeto
Negociado
em balcão
Futuro
Derivativos versus mercado à vista
Vendedor
Negociado
em bolsa
Opção
Futuro
Contrato
Padronizado
Critério
Ajuste
Diário
Data
Vencimento
Valor inicial
da cota
Unidade de
Negociação
Qtde.
Cotas
Ajuste
Diário
Valor Ajuste
Diário
Liquidação do
contrato
No
vencimento
Por entrega
física
Por
Reversão
Financeira
Valor.
Cota
Valor.
Cota
Opção
Preço de
Exercício
Exercício
Opção de
Compra
Titular da
Call1
Paga
prêmio
Direito de
comprar
Recebe
prêmio
Obrigação
de comprar
Lançador da
Call2
Paga
prêmio
Opção de
Venda
Titular da
Put3
Lançador da
Put4
Direito de
Vender
Recebe
prêmio
Obrigação
de comprar
1. Comprador de uma opção de compra
2. Vendedor de uma opção de compra
3. Comprador de uma opção de venda
4. Vendedor de uma opção de venda

A referencia mais relevante sobre modelagem de
features é o texto de [Czarnecki, K.; Eisenecker, U.;
2000]



Analisa diversos métodos de modelagem de features e sintetiza
uma notação e um método próprios, a partir das referências.
Apresenta uma argumentação detalhada sobre as vantagens da
construção de diagramas de features para expressar
conhecimento sobro um domínio.
Os principais argumentos a favor da utilização de modelagem
de features são:
 Simplicidade do processo de construção dos modelos e dos
modelos propriamente ditos;
 O fato de que um modelo de features representa apenas um
conjunto de assertivas sobre um domínio, não impondo
nenhuma definição da estrutura dos elementos desse domínio.

[Czarnecki, K. et al.; 2006] faz uma comparação
direta entre a modelagem de features e a
definição de ontologias de domínio.
Argumenta que as vantagens da modelagem de
features são sua simplicidade e intuitividade e que,
por outro lado, ontologias têm um poder descritivo
mais rico.
 Considera que o espectro semântico entre elas não é
vazio
 Propõe algumas extensões à notação incial proposta
para a modelagem de features que aproximaria essa
técnica da construção de ontologias.


[Asikainen, T.; Mannisto, T; Soininen, T.; 2007]
propõe uma ontologia específica, denominada
Kumbang, para expressar variabilidade em linhas
de produto de software.
Argumenta que falta a métodos baseados em modelagem
de features uma fundação conceitual bem definida.
 Em particular, faltaria rigor ao especificar os conceitos de
modelagem, as inter-relações entre eles, e a semântica
correspondente.


A ontologia proposta é, segundo os autores,
descrita de forma rigorosa utilizando tanto
linguagem natural quanto um perfil UML.

[Falbo, R.; Guizzardi, G.; Duarte, K.; 2002] também
propõe o uso de ontologias para modelagem de
domínio.
Critica os métodos nos quais [Czarnecki, K. et al.; 2006] se
baseou para construir sua abordagem de modelagem de
features
 Alega que a semântica das features não é definida de
forma precisa, e não fica formalmente claro o que se
denomina feature.
 Propõe uma notação formal para representar ontologias, e
uma técnica para a derivação de modelos orientados a
objetos a partir da representação da ontologia.


Os pontos chave são, por um lado, a simplicidade da
construção de modelos de features e, por outro lado, a
falta de formalismo desses modelos


Para os objetivos deste texto, esse formalismo é algo
importante


Em contraposição ao formalismo propiciado por ontologias
pesadas.
Porque as linguagens específicas de domínio que se deseja
construir são linguagens formais, no sentido que terão que ser
processadas por computador.
Seria possível construir uma DSL formal tendo como
referência um modelo de domínio informal, expresso
através de diagramas de features

Mas o esforço seria maior, bem como a possibilidade de falhas.

Além disso, ontologias podem ser expressas de
maneira formal utilizando notações como a a
Kumbang, apresentada na seção 2.4, que utiliza
num substrato formal da UML.


Isso pode ser uma oportunidade para efetuar a
transição entre o modelo de domínio e o design da
DSL, já que tipicamente a DSL é expressa utilizando
uma metalinguagem que é um substrato formal da
UML.
Isso pode contribuir para resolver um problema
chave da construção de DSLs, a transição do modelo
de domínio para o design da UML.



Foi encontrada referencia bibliográfica
relativamente rica sobre a questão, ainda que
num contexto diferente daquele almejado por
esse texto.
A revisão bibliográfica permitiu obter
conclusões relativamente sólidas sobre a
questão proposta pelo artigo.
Seria interessante fazer algum experimento
para comparar o uso de diagramas de features
com a construção de ontologias.
Download

modelagem de features