Desenvolvimento de software orientado a características e dirigido por modelos Universidade Federal de Uberlândia Rodrigo Reis Pereira Prof. Dr. Marcelo Almeida Maia
Agenda Motivação Introdução Modelagem de Características Programação orientada a características Desenvolvimento dirigido por modelos Objetivos Desenvolvimento orientado a características e dirigido por modelos
Motivação Complexidade, custo e dificuldade de compreensão crescentes no desenvolvimento de sistemas Busca por métodos cada vez mais eficientes para especificação de programas Método apresentado por Trujillo, et al. em Feature Oriented Model Driven Development: A Case Study for Portlets (ICSE 2007)
Motivação Feature Oriented Model Driven Development: A Case Study for Portlets (ICSE 2007) Especificação de programas em alto nível de abstração através de modelos Desenvolvimento automatizado orientado a características Conformidade entre artefatos de projeto e código Linguagem não geral para especificações de alto nível Configurações intermediárias manuais e escritas em linguagem de domínio específico Código do sistema obtido por combinação entre códigos parciais
Introdução O desenvolvimento de software orientado a características e dirigido por modelos (FOMDD1) é uma abordagem que une FOP2 (programação orientada a características) e MDD 3 (desenvolvimento dirigido por modelos) FOP é um paradigma para linhas de produtos de software no qual programas são construídos através da composição de características MDD utiliza modelos para especificação de programas e transformações sobre modelos para síntese de executáveis 1. Feature Oriented Model Driven Development 2. Feature Oriented Programming 3. Model Driven Development
Características Características (ponto de vista de programação Don Batory) entidades de primeira classe do projeto encapsulam representações de programas estruturadas hierarquicamente descrevem em alto nível de abstração os requisitos de um sistema Ex.: e-commerce (gerência de produtos, gerência de clientes, gerência de pedidos, pagamento,etc) Abstrair programas em termos de características facilita o entendimento Possibilita pensarmos em construção de programas através da combinação de diferentes características
Modelagem de Características Especificação da variabilidade de propriedades dos conceitos e suas interdependências através de modelo Essencialmente, define uma linha de produtos
Programação Orientada a Características As instâncias de uma linha de produtos de software podem ser diferenciadas pelas capacidades (características) que cada um deles apresenta Diferentes composições de características levam a diferentes produtos
Programação Orientada a Características Necessário suporte ferramental para composição de artefatos (ex.: código, arquivos de configuração, etc) AHEAD (Don Batory, 2004) JAK, XML, etc Mixin Layers classes especialmente desenvolvidas para esquema de herança múltipla
Programação Orientada a Características - Exemplo Possibilidades: i1 = Iadd BigI Base i2 = Idiv BigI Base i3 = Idiv Iadd BigI Base d1 = Dadd BigD Base d2 = IDivd BigD Base d3 = Ddivd Dadd BigD Base
Programação Orientada a Características - Exemplo Exemplo: i3 = Idiv Iadd BigI Base jampack --target=i3 Base BigI Idiv Iadd
Desenvolvimento dirigido por modelos É uma metodologia que foca na especificação de sistemas de software através de modelos Visa a obtenção de código fonte através de transformações sucessivas dos modelos abstratos de entrada PIM Modelo independente de plataforma PSM Modelo específico de plataforma
Transformações de Modelos De acordo com o padrão QVT da OMG, a tradução de modelos em artefatos textuais como modelos conceituais e código deve seguir o esquema a seguir:
Objetivos Generalizar o método de FOMDD proposto por Trujillo et al Criar profile UML para metamodelo orientado a características Criar ferramenta de combinação baseada no profile UML definido Definir modelos adicionais de configuração Criar ferramenta de combinação de modelos adicionais Definir interface de transformação Criar módulos de transformação (cartuchos) Criar ferramenta de combinação baseada na linguagem de especificação de transformações
FOMDD Visão geral O desenvolvimento orientado a características e dirigido por modelos propõe que os produtos de uma linha de produtos de software sejam construídos pela criação de modelos que possam ser compostos (refinados) por características e que estes sejam transformados em executáveis
Abordagem FOMDD de Trujillo, et al. Modelos de alto nível expressos através de diagramas de estados, sendo cada estado a representação uma característica Modelos intermediários expressos em linguagem de domínio específico para portlets Modelos de configuração introduzidos manualmente na fase intermediária Código gerado: Portlets J2EE / Arquitetura MVC
Abordagem FOMDD de Trujillo, et al. Composição (refinamento) do modelo de características mostra como a adição de novos estados ao diagrama inicial é propagada ao longo das fases até a geração de código Síntese de código obtida pela combinação dos códigos relativos a cada uma das características
FOMDD Idealmente, a síntese deve ser feita pela transformação em código do modelo que representa a combinação das características (caminho B)
Nossa abordagem FOMDD Generalização da abordagem de Trujillo et al Modelos de alto nível expressos através de uma linguagem genérica de especificação de sistemas Profile UML do metamodelo para Modelagem de Características
Nossa abordagem FOMDD Generalização da abordagem de Trujillo et al Modelos de configuração expressos em alto nível através de linguagem declarativa OCL Código gerado: tecnologia/arquitetura de acordo com módulo escolhido
Abordagem Proposta Arquitetura da ferramenta para FOMDD
Abordagem Proposta
Avaliação Proposta Realização de estudo de caso envolvendo Implementação de sistema usando abordagem de Trujillo et al Implementação de sistema usando nossa abordagem Comparação das abordagens Complexidade dos artefatos desenvolvidos Rastreabilidade entre artefatos Grau de automação Qualidade do produto
Referências Trujillo, S., Batory, D., and Diaz, O.: Feature Oriented Model Driven Development: A Case Study for Portlets, 29th International Conference on Software Engineering (ICSE 2007),Minneapolis, Minnesota, USA, May 20-26, 2007 Batory, Don, Sarvela, Jacob Neal, and Rauschmayer, Axel: Scaling Step-Wise Refinement,IEEE Transactions on Software Engineering 30(6), IEEE Computer Society, 355-371, 2004 Czarnecki, Krzysztof, Eisenecker, Ulrich, and Czarnecki, Krzysztof: Generative Programming: Methods, Tools, and Applications, Addison-Wesley Professional, June 2000 Kleppe, Anneke, Warmer, Jos, and Bast, Win: MDA Explained: The Model Driven Architecture: Pratice and Promise, Addison Wesley, April 2003