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.