• Nenhum resultado encontrado

Desenvolvimento de Software Orientado a Características e Dirigido por Modelos Revisitado

N/A
N/A
Protected

Academic year: 2021

Share "Desenvolvimento de Software Orientado a Características e Dirigido por Modelos Revisitado"

Copied!
11
0
0

Texto

(1)

Desenvolvimento de Software Orientado a Caracter´ısticas e

Dirigido por Modelos Revisitado

Autor: Rodrigo Reis Pereira1 Orientador: Marcelo Almeida Maia1

1Programa de P´os-Graduac¸˜ao em Ciˆencia da Computac¸˜ao Universidade Federal do Uberlˆandia (UFU)

Uberlˆandia – MG – Brasil

rreisp@gmail.com,marcmaia@facom.ufu.br N´ıvel: Mestrado

Ano de ingresso no programa: 2007 ´

Epoca esperada de conclus˜ao: Marc¸o / 2010 Etapa conclu´ıda: Defesa da proposta de dissertac¸˜ao

Resumo. O desenvolvimento de software orientado a caracter´ısticas e di-rigido por modelos (FOMDD - Feature Oriented Model Driven Development) [Trujillo et al. 2007] ´e uma abordagem que une FOP (Feature Oriented Program-ming - programac¸˜ao orientada a caracter´ısticas) [Batory et al. 2003] e MDD (Model Driven Development - desenvolvimento dirigido por modelos) [Kleppe et al. 2003]. MDD utiliza modelos para especificac¸˜ao de programas e transformac¸˜oes sobre mo-delos para s´ıntese de execut´aveis. FOP ´e um paradigma para linhas de produtos de software no qual programas s˜ao constru´ıdos atrav´es da composic¸˜ao de caracter´ıs-ticas. FOMDD prop˜oe que produtos de uma linha de produtos de software sejam constru´ıdos pela criac¸˜ao de modelos compostos por caracter´ısticas e que estes sejam transformados em execut´aveis. Este trabalho ´e uma proposta de generalizac¸˜ao para o m´etodo de FOMDD apresentado em [Trujillo et al. 2007].

Palavras-Chave. Desenvolvimento de software orientado a caracter´ısticas, mode-lagem de caracter´ısticas, arquiteturas dirigidas por modelos, metaprogramac¸˜ao, li-nhas de produto de software.

(2)

1. Introduc¸˜ao e Motivac¸˜ao

Um dos principais objetivos da Engenharia de Software ´e gerenciar e controlar a complexi-dade dos sistemas. Neste contexto, considerando o baixo n´ıvel de rastreabilicomplexi-dade entre os artefatos utilizados ao longo dos processos tradicionais de desenvolvimento, a crescente com-plexidade dos sistemas e, consequentemente, maior dificuldade na compreens˜ao das estruturas de implementac¸˜ao das funcionalidades dos sistemas, cada vez mais, t´ecnicas avanc¸adas de de-senvolvimento se fazem necess´arias para aux´ılio aos profissionais envolvidos tanto nas tarefas de modelagem quanto nas tarefas de codificac¸˜ao [Batory 2003].

No contexto de linha de produtos de software, i.e., um conjunto de produtos que pos-suem funcionalidades em comum, mas que no entanto apresentam outras diferenciadas, a utilizac¸˜ao de t´ecnicas capazes de expressar em c´odigo fonte a variabilidade de caracter´ısticas de forma modular, tal qual o racioc´ınio de projeto em alto n´ıvel de abstrac¸˜ao, ´e alternativa funda-mental, considerando principalmente a necessidade de refinamento gradual dos sistemas. Uma das alternativas poss´ıveis ´e o uso do ambiente AHEAD, apresentado em [Batory et al. 2003].

MDD ´e outro paradigma avanc¸ado de produc¸˜ao de software e baseia-se na utilizac¸˜ao de modelos e transformac¸˜oes sucessivas entre modelos para obtenc¸˜ao de c´odigo fonte. Estas duas abordagens em conjunto formam o n´ucleo conceitual deste trabalho e o resultado pretendido com esta fus˜ao ´e um alto grau de automac¸˜ao do processo de desenvolvimento de software.

2. Caracterizac¸˜ao do Problema

As instˆancias de uma linha de produtos de software podem ser diferenciadas pelas carac-ter´ısticas (capacidades) que cada um deles apresenta. Diferentes composic¸˜oes de caraccarac-ter´ısticas levam a diferentes produtos. A modelagem de caracter´ısticas ´e a atividade de especificar a variabilidade de propriedades dos conceitos e suas interdependˆencias atrav´es de um modelo [Czarnecki et al. 2000].

FOP ´e um paradigma para linhas de produtos de software no qual programas s˜ao cons-tru´ıdos atrav´es da composic¸˜ao de caracter´ısticas. Uma linha de produtos ´e especificada em func¸˜ao de um dom´ınio de aplicac¸˜ao e considera-se a existˆencia de uma caracter´ıstica base, que representa a estrutura inicial para a aplicac¸˜ao de refinamentos. Por exemplo, considerando uma linha de produtos simplificada para a construc¸˜ao de carros. Considerando que carros fossem obrigatoriamente constitu´ıdos por Motor e Transmiss˜ao e opcionalmente por Som. Poder´ıamos obter dois tipos de modelos de carro: Base (Base=Trasmiss˜ao •Motor) e um outro refinado, composto por Base e Som: (BaseSom=Base •Som).

FOMDD envolve modelagem e composic¸˜ao de caracter´ısticas bem como a transformac¸˜ao destes modelos com o objetivo final de obtenc¸˜ao do c´odigo execut´avel. O estudo de caso apresentado em [Trujillo et al. 2007], mostra uma forma de se obter portlets (compo-nentes de portais web) [D´ıaz et al. 2007] atrav´es da utilizac¸˜ao de diagramas de estados a serem transformados em modelos intermedi´arios refin´aveis que antecedem o processo de gerac¸˜ao de c´odigo. Naquele estudo, o processo de desenvolvimento inicia com a especificac¸˜ao de um di-agrama de estados que representa o fluxo de computac¸˜ao do componente (sendo cada estado a representac¸˜ao abstrata de uma caracter´ıstica), e que ´e posteriormente transformado em mode-los intermedi´arios, em conformidade com uma linguagem de dom´ınio espec´ıfico para portlets, definindo a estrutura b´asica de implementac¸˜ao de cada um dos estados, segundo arquitetura de c´odigo previamente definida. Estes modelos intermedi´arios s˜ao refinados pela combinac¸˜ao com modelos de configurac¸˜ao espec´ıficos de plataforma escritos manualmente, completando a especificac¸˜ao e possibilitando a gerac¸˜ao de c´odigo funcionalmente completo.

(3)

Figure 1. Adordagem FOMDD de Trujillo, et al.

Este trabalho pretende generalizar o m´etodo de FOMDD apresentado em [Trujillo et al. 2007](Figura 1) atrav´es da especificac¸˜ao de linhas de produtos de software pelo uso de modelos independentes de plataforma descritos em UML1, DSLs para especificac¸˜ao dos metamodelos a serem usados nos passos intermedi´arios de transformac¸˜ao, modelos adi-cionais de entrada como de entrelac¸amento e layout, al´em de transformac¸˜oes de modelo para combinac¸˜ao (i.e., transformac¸˜oes end´ogenas) e traduc¸˜ao entre modelos de diferentes tipos (i.e., transformac¸˜oes ex´ogenas), como s´ıntese de c´odigo.

3. Metamodelos Propostos

Nossa abordagem utiliza os seguintes modelos abstratos de entrada mostrados na Figura 2 a seguir: Modelo de Dados do Dom´ınio (MD), Modelo de Estados do Dom´ınio (ME), Mode-los de Caracter´ısticas Independentes de Plataforma para o Dom´ınio (DPIM2) e para o Produto (PPIM3) e Modelos de Caracter´ısticas Espec´ıficas de Plataforma para Dom´ınio (DPSM4) e para o Produto (PPSM5). Os modelos PPIM e PPSM cont´em a selec¸˜ao de caracter´ısticas para um produto espec´ıfico escolhido a partir das caracter´ısticas do dom´ınio de aplicac¸˜ao presentes em DPIM e DPSM, respectivamente.

MD ´e caracterizado por tabelas e vis˜oes, que cont´em campos e m´etodos, al´em de rela-cionamentos entre as entidades. Sua func¸˜ao ´e descrever a representac¸˜ao dos dados persistentes do dom´ınio de aplicac¸˜ao possibilitando gerar esquemas de bancos de dados, bem como dirigir a gerac¸˜ao de entidades de c´odigo para manipulac¸˜ao destes dados. ME ´e constitu´ıdo por esta-dos que representam telas para interac¸˜ao com o usu´ario, elementos componentes esta-dos estaesta-dos que representam os widgets que comp˜oe a tela, sub-estados que determinam a configurac¸˜ao de widgets das telas e transic¸˜oes que descrevem o fluxo de navegac¸˜ao entre as telas do sistema (dom´ınio), incluindo comportamento em resposta a eventos.

Os modelos de dados e estados n˜ao s˜ao orientados por caracter´ısticas. Para possibili-tar a selec¸˜ao de elementos destes modelos com base na selec¸˜ao de caracter´ısticas, ´e necess´ario relacion´a-los `as caracter´ısticas do dom´ınio. O modelo de caracter´ısticas DPIM define as car-acter´ısticas independentes de plataforma presentes na linha de produtos e ´e utilizado como referˆencia para a representac¸˜ao do entrelac¸amento entre caracter´ısticas e os elementos dos mo-delos de dados e estados. Esta representac¸˜ao ´e feita atrav´es de momo-delos extras de entrada, que descrevem a relac¸˜ao entre os nomes das caracter´ısticas e os nomes dos elementos dos modelos.

1http://www.uml.org/ 2

Do inglˆes, Domain’s Platform Independent Model

3

Do inglˆes, Product’s Platform Independent Model

4

Do inglˆes, Domain’s Platform Specific Model

(4)

Figure 2. Nossa abordagem FOMDD

A partir dos modelos de dados e estados anotados com caracter´ısticas, obtemos atrav´es de transformac¸˜oes espec´ıficas uma representac¸˜ao abstrata da arquitetura do sistema, a partir da qual ´e poss´ıvel iniciar a gerac¸˜ao de produtos.

Neste ponto, considera-se inicialmente o modelo de caracter´ısticas PPIM, que descreve a constituic¸˜ao funcional do produto, ou seja, quais s˜ao as caracter´ısticas necess´arias para a sua realizac¸˜ao. Em func¸˜ao destas caracter´ısticas, os elementos descritos na representac¸˜ao abstrata intermedi´aria ser˜ao selecionados para traduc¸˜ao em artefatos espec´ıficos de plataforma.

O modelo de caracter´ısticas espec´ıficas de plataforma PPSM (expresso em conformi-dade com DPSM) define o componente de traduc¸˜ao a ser usado para a transformac¸˜ao da especificac¸˜ao abstrata em c´odigo fonte orientado por caracter´ısticas.

(5)

4. Transformac¸˜oes

A transic¸˜ao entre cada etapa do processo de gerac¸˜ao envolve transformac¸˜oes de modelos. Uma transformac¸˜ao no contexto de MDD ´e definida como o processo de gerac¸˜ao de um modelo des-tino a partir de um ou mais modelos fonte [Kleppe et al. 2003] e podem ser implementadas atrav´es de diversos mecanismos como programas execut´aveis ou linguagens espec´ıficas para definic¸˜ao de transformac¸˜oes como XSLT6, ATL [Jouault et al. 2008], SmartQVT 7, JET tem-plates8, etc. Os passos de transformac¸˜ao definidos por nossa abordagem s˜ao descritos a seguir. 4.1. Passo 1: Simplificac¸˜ao dos Modelos de Dados e Estados

Os modelos de dados e estados s˜ao entradas para o processo e s˜ao definidos atrav´es da utilizac¸˜ao de diagramas UML estendidos (UML profiles), descritos em XMI. Este passo consiste em simplificar a notac¸˜ao destes modelos, com objetivo de manter apenas informac¸˜oes relevantes ao processo de gerac¸˜ao. Ao final desta fase, obtemos os modelos de dados e estado simplificados. A seguir apresenta-se as equac¸˜oes de transformac¸˜ao correspondentes a este passo, onde MD e ME s˜ao os modelos de dados e estados, respectivamente e TSimplif yDataM odel e TSimplif yStateM odels˜ao as func¸˜oes de simplificac¸˜ao.

SimpleDataModel = TSimplif yDataM odel (MD) SimpleStateModel = TSimplif yStateM odel(ME)

4.2. Passo 2: Gerac¸˜ao de Templates de Entrelac¸amento

A informac¸˜ao de entrelac¸amento entre dados e caracter´ısticas, ´e definida como uma relac¸˜ao entre os nomes das caracter´ısticas e os nomes dos membros (campos e m´etodos) das entidades. Da mesma forma, o entrelac¸amento entre estados e caracter´ısticas ´e definido como uma relac¸˜ao entre os nomes das caracter´ısticas e os nomes dos elementos constituintes deste modelo, ou seja, telas, sub-estados, widgets e transic¸˜oes. ´E esperado que todas as caracter´ısticas se relacionem com um ou mais membros/elementos dos modelos, bem como que cada membro e elemento esteja relacionado com uma ou mais caracter´ısticas.

O objetivo desta fase ´e gerar templates para facilitar a declarac¸˜ao manual dos pares da relac¸˜ao entre membros/elementos e caracter´ısticas. Abaixo seguem as equac¸˜oes de transformac¸˜ao usando os resultados do Passo 1.

DataModelAnnotationTemplate = TGenerateDataM odelAnnotationT emplate(SimpleDataModel) StateModelAnnotationTemplate = TGenerateStateM odelAnnotationT emplate(SimpleStateModel)

4.3. Passo 3: Entrelac¸amento de Caracter´ısticas com Modelos de Dados e Estados

As relac¸˜oes entre DPIM com MD e ME, declaradas no passo anterior, devem ser incorporadas `a estrutura dos modelos de dados e estados simplificados. O resultado ao final desta fase s˜ao os modelos orientados por caracter´ısticas.

AnnotatedDataModel = TAnnotateDataM odel(SimpleDataModel,DataModelAnnotations) AnnotatedStateModel = TAnnotateStateM odel(SimpleStateModel,StateModelAnnotations)

6 http : //www.w3.org/T R/xslt 7 http://smartqvt.elibel.tm.fr 8http : //www.eclipse.org/articles/Article − J ET /jet tutorial1.html

(6)

4.4. Passo 4: Gerac¸˜ao do Template de Layout

Os modelos de dados e estados orientados por caracter´ısticas cont´em informac¸˜ao que possibilita a gerac¸˜ao de estruturas espec´ıficas de plataforma, faltando apenas a l´ogica para os m´etodos da aplicac¸˜ao e a l´ogica para estruturac¸˜ao visual de cada uma das telas (vis˜ao).

A l´ogica dos m´etodos a serem gerados dever´a ser adicionada em passos finais do processo, j´a em notac¸˜ao espec´ıfica de plataforma. No entanto, a l´ogica de estruturac¸˜ao visual ´e associada neste passo a cada uma das telas atrav´es de um modelo abstrato de layout, que possui nome e um conjunto de elementos identificados, que configuram os containers dispon´ıveis para organizac¸˜ao da informac¸˜ao (i.e., widgets). No Passo 6, estes modelos de organizac¸˜ao visual ser˜ao substu´ıdos por implementac¸˜oes espec´ıficas que devem estar em conformidade com a especificac¸˜ao abstrata.

LayoutTemplate = TState2LayoutT emplate(AnnotatedStateModel)

4.5. Passo 5: Gerac¸˜ao de Modelo da Arquitetura Independente de Plataforma

A partir dos modelos de dados e estados orientados por caracter´ısticas e do modelo com-plementar de layout, ´e gerado um modelo de arquitetura independente de plataforma. Para esta gerac¸˜ao deve ser escolhida uma transformac¸˜ao que define um estilo arquitetural es-pec´ıfico, por exemplo, Model-View-Control [Gamma et al. 1995], Presentation-Abstraction-Control [Buschmann et al. 1996], dentre outros.

Este modelo cont´em abstrac¸˜oes de elementos de projeto que permitem a gerac¸˜ao de artefatos espec´ıficos de plataforma e ´e a ´ultima representac¸˜ao independente de plataforma utilizada no processo.

ArchitecturalArtifacts = THighLevelM odels2Architecture(AnnotatedDataModel, AnnotatedStateModel, LayoutTemplate)

4.6. Passo 6: Aplicac¸˜ao dos Componentes de Traduc¸˜ao PSM

O objetivo desta fase ´e transformar a notac¸˜ao abstrata em c´odigo fonte orientado por carac-ter´ısticas. Para isto o componente, utiliza como entradas as representac¸˜oes de arquitetura ge-radas do Passo 5 e os modelos de caracter´ısticas DPIM e DPSM, que identificam as carac-ter´ısticas do dom´ınio de aplicac¸˜ao e as propriedades dos componentes de traduc¸˜ao dispon´ıveis (Figura 3), respectivamente. Estas propriedades definem especifidades do projeto de c´odigo como mostrado no exemplo da Figura 4.

As transformac¸˜oes definidas pelo componente de traduc¸˜ao encapsulam templates descritos em linguagens espec´ıficas de plataforma, para cada tipo de artefato existente na arquitetura, que mapeiam os elementos da representac¸˜ao abstrata de arquitetura (APIM) em elementos de implementac¸˜ao representados atrav´es de arquivos JAK e XAK, dispon´ıveis no ambiente AHEAD. A equac¸˜ao a seguir define este passo transformac¸˜ao.

(7)

Figure 3. Modelo de Caracter´ısticas PSM do Dom´ınio

Figure 4. Modelo de Caracter´ısticas PSM do Produto

4.7. Passo 7: Gerac¸˜ao do Template de Produto

Neste passo de gerac¸˜ao, a estrutura de arquivos resultante do Passo 6, ´e combinada atrav´es dos mecanismos de programac¸˜ao orientada por caracter´ısticas. Basicamente, consiste na invocac¸˜ao de ferramentas espec´ıficas de combinac¸˜ao para cada tipo de artefato, que ir˜ao efetuar a junc¸˜ao de todas as ocorrˆencias de um artefato espec´ıfico, considerando o componenente de traduc¸˜ao selecionado pelo modelo de caracter´ısticas PPSM e sua estrutura de implementac¸˜ao, seguindo ordem pr´e-definida pelo modelo de caracter´ısticas do produto PPIM.

ProductTemplateArtifacts= TM ergeF OArtif acts(FOTemplateArtifacts,PPIM,PPSM)

4.8. Passo 8: Transformac¸˜oes Finais

Ap´os a combinac¸˜ao das caracter´ısticas espec´ıficas de um produto, pode ser necess´ario a utilizac¸˜ao de transformac¸˜oes extras. No estudo de caso apresentado na sec¸˜ao 5, os arquivos de script(Javascript) gerados, n˜ao s˜ao diretamente suportados pelo ambiente de programac¸˜ao orientada por caracter´ısticas AHEAD. Dessa forma, foi necess´ario definir uma notac¸˜ao de representac¸˜ao intermedi´aria XML, para que estes artefatos pudessem ser combinados atrav´es da ferramenta XAK. Assim, ao final do processo de combinac¸˜ao, ´e preciso retornar os artefatos resultantes deste tipo `a notac¸˜ao original.

FinalProductTemplateArtifacts = TIntermediateN otation2OriginalN otation (ProductTem-plateArtifacts)

(8)

4.9. Passo 9: Definic¸˜ao e Preenchimentos Manuais

Neste passo final, a l´ogica dos m´etodos gerados nas representac¸˜oes espec´ıficas de plataforma deve ser preenchida manualmente.

FinalArtifacts = TM anualM ethodBodyF ill(FinalProductTemplateArtifacts)

5. Estudo de Caso

Para a validac¸˜ao do nosso trabalho est´a sendo realizado um estudo de caso envolvendo a gerac¸˜ao do sistema JavaPetStore9, com o objetivo de comparar nossa abordagem e a abordagem apresen-tada em [Trujillo et al. 2007] com relac¸˜ao aos pontos positivos e negativos, tomando-se como parˆametros de an´alise a complexidade dos artefatos desenvolvidos, a rastreabilidade entre os artefatos e o grau de automac¸˜ao no processo. Para tal, devem ser desenvolvidos os modelos de caracter´ısticas PIM e PSM para o dom´ınio de aplicac¸˜ao WebStore (Figuras 5 e 3) e para o produto JavaPetStore (que cont´em a selec¸˜ao de caracter´ısticas dos modelos de dom´ınio que caracteriza o produto espec´ıfico), os diagramas de dados (Figura 6) e estados (Figura 7) que representam a aplicac¸˜ao (dom´ınio), as definic¸˜oes de entrelac¸amento entre dados/estados e cara-cter´ısticas, os modelos complementares de layout e as transformac¸˜oes que definem a transic¸˜ao entre cada passo de gerac¸˜ao.

Figure 5. Fragmento do Modelo de Caracter´ısticas PIM do Dom´ınio

O sistema alvo a ser gerado neste estudo ´e uma aplicac¸˜ao exemplo usada para ilustrar como a plataforma JavaEE pode ser utilizada para o desenvolvimento de aplicac¸˜oes. Mais especificamente, este sistema ´e implementado seguindo a arquitetura definida pelo framework para aplicac¸˜oes web JSF10, estruturado segundo o padr˜ao MVC [Gamma et al. 1995]. Neste caso, a representac¸˜ao abstrata da arquitetura do Passo 5 ´e composta por trˆes modelos: Modelo Abstrato (MA), Vis˜ao Abstrata (VA) e Controlador Abstrato (CA), que constituem a entrada principal para o Passo 6, onde as abstrac¸˜oes dos elementos de projeto s˜ao efetivamente trans-formadas em notac¸˜ao espec´ıfica de plataforma.

O componente de traduc¸˜ao criado para o estudo de caso, ´e composto por transformac¸˜oes que mapeiam os elementos de uma representac¸˜ao independente de plataforma MVC em e-lementos de c´odigo como classes Java (modelo e controlador), JSPs (vis˜ao) e Javascripts (controlador), al´em de arquivos de configurac¸˜ao XML espec´ıficos de JSF. Estas transformac¸˜oes

9

http://java.sun.com/developer/technicalArticles/J2EE/petstore

(9)

Figure 6. Fragmento do Modelo de Dados do Dom´ınio

Figure 7. Fragmento do Modelo de Estados do Dom´ınio

foram implementadas atrav´es de templates JET, que definem a estrutura base e de refinamento para cada tipo de artefato, a serem utilizadas de acordo com a ordem de caracter´ısticas do dom´ınio (DPIM) e a intersecc¸˜ao entre caracter´ısticas e elementos dos modelos de dados e estados, presente na abstrac¸˜ao de arquitetura por transitividade. As equac¸˜oes seguintes detalham o processo de gerac¸˜ao do Passo 6 realizado no estudo de caso, uma vez que as transformac¸˜oes a seguir s˜ao espec´ıficas para o estilo arquitetural MVC.

FOModels = TArchitectureM odels2F OM odels (ArchitecturalModel,PPIM,PPSM) FOViews = TArchitecturalV iews2F OV iews (ArchitecturalView,PPIM,PPSM)

FOControllers = TArchitecturalControllers2F OControllers(ArchitecturalController,PPIM,PPSM) FOConfigurations = TArchitecturalArtif acts2F OConf igurations

(ArchitecturalModel,ArchitecturalView,ArchitecturalController,PPIM,PPSM)

6. Discuss˜ao e Trabalhos Relacionados

Refatorac¸˜ao de programas, s´ıntese de software baseada em caracter´ısticas e/ou aspectos, e MDD s˜ao ´areas disjuntas. Entretanto, todas elas s˜ao tecnologias de metaprogramac¸˜ao arquitetural por

(10)

tratarem programas como valores e usarem func¸˜oes (transformac¸˜oes) para mapear programas para outros programas [Batory 2007].

Uma abordagem similar, baseada em templates, ´e proposta em [Czarnecki 2005]. Uma fam´ılia de produtos ´e representada pelo modelo de caracter´ısticas e um template do modelo. O modelo de caracter´ısticas define a hierarquia de caracter´ısticas bem como as restric¸˜oes em suas poss´ıveis configurac¸˜oes. O template cont´em a uni˜ao dos elementos do modelo em todas as instˆancias v´alidas do template (i.e., esqueletos expressos na notac¸˜ao destino para cada uma das poss´ıveis combinac¸˜oes de caracter´ısticas v´alidas). Uma instˆancia do modelo de caracter´ısticas pode ser especificada pela criac¸˜ao de uma configurac¸˜ao baseada no modelo de caracter´ısticas. De acordo com a configurac¸˜ao de caracter´ısticas, o template do modelo ´e instanciado auto-maticamente. O processo de instanciac¸˜ao ´e uma transformac¸˜ao entre modelos de mesma DSL, expressos na notac¸˜ao destino espec´ıfica de plataforma. Em contraste com abordagens baseadas em variabilidade em que modelos distintos correspondentes a diferentes caracter´ısticas s˜ao com-postos, a abordagem [Czarnecki 2005] utiliza um modelo que representa a superimposic¸˜ao de todos os variantes cujos elementos est˜ao relacionados a caracter´ısticas atrav´es de anotac¸˜oes (i.e., um grande modelo anotado que cont´em conjuntamente as diferentes possibilidades).

Em [Trujillo et al. 2007] ´e mostrado um estudo de caso onde modelos especificados por diagramas de estados s˜ao combinados pela transformac¸˜ao dos modelos iniciais em modelos in-termedi´arios espec´ıficos de plataforma que s˜ao combinados a refinamentos manuais e posterior-mente transformados em c´odigo que representa a uni˜ao entre os modelos descritos pelos diagra-mas de estados. Nossa abordagem difere da abordagem apresentada em [Trujillo et al. 2007] pela utilizac¸˜ao de modelos extras de entrada (dados, estados e layout - expressos atrav´es de UML e DSLs) para a gerac¸˜ao de um modelo de arquitetura independente de plataforma a ser traduzido em c´odigo por componentes de traduc¸˜ao PSM descritos a partir de um modelo de caracter´ısticas espec´ıficas de plataforma, que define propriedades do projeto de c´odigo como mostrado no modelo da Figura 3. Atualmente, a abordagem proposta neste trabalho n˜ao avaliou a composic¸˜ao dos modelos de dados e estados, ou seja, n˜ao foi avaliado o caminho B mostrado na Figura 2. Ao inv´es disso, a composic¸˜ao baseada em caracter´ısticas destes modelos ´e descri-ta pela selec¸˜ao de elementos, de acordo com o entrelac¸amento de caracter´ısticas definido por anotac¸˜oes nos elementos que constituem cada um destes modelos. Assim, a composic¸˜ao de um conjunto de caracter´ısticas espec´ıfico ´e configurada pela selec¸˜ao dos elementos anotados referentes a cada uma destas caracter´ısticas.

Independentemente da abordagem utilizada para combinac¸˜ao dos modelos de alto n´ıvel, a principal diferenc¸a entre nossa abordagem e a de [Trujillo et al. 2007], ´e que a informac¸˜ao que comp˜oe os modelos de entrada no primeiro n´ıvel de transformac¸˜ao, ´e mais consistente com a caracterizac¸˜ao de elementos de implementac¸˜ao, o que mant´em alto o n´ıvel de rastreabilidade entre os artefatos do in´ıcio ao fim dos passos de transformac¸˜ao e que possibilita a obtenc¸˜ao de elementos espec´ıficos de plataforma atrav´es de transformac¸˜oes MDD, ao inv´es de refinamentos manuais descritos em linguagens espec´ıficas, diminuindo assim, o grau de intervenc¸˜ao humana no processo de gerac¸˜ao. Tamb´em, a criac¸˜ao de uma representac¸˜ao abstrata intermedi´aria de arquitetura, possibilita a gerac¸˜ao de implementac¸˜oes distintas (i.e., diferentes plataformas) a partir de um projeto ´unico de caracter´ısticas para linha de produtos de software e tradutores espec´ıficos de plataforma.

7. Perspectivas

Neste trabalho apresentamos uma abordagem para generalizac¸˜ao da proposta de FOMDD a-presentada em [Trujillo et al. 2007], que utiliza modelos complementares associados aos

(11)

mo-delos de caracter´ısticas utilizados para expressar a variabilidade de propriedades do dom´ınio de aplicac¸˜ao.

Como complemento a este trabalho, pretende-se ainda avaliar o processo de gerac¸˜ao utilizando composic¸˜ao de caracter´ısticas em alto n´ıvel de abstrac¸˜ao (caminho B, Figura 2) e ge-neralizar os modelos de entrada utilizados na abordagem para a aplicac¸˜ao da mesma na gerac¸˜ao de linhas de produtos que n˜ao sejam caracterizados por interac¸˜ao com o usu´ario atrav´es de interfaces gr´aficas como, por exemplo, servidores de aplicac¸˜ao. Ainda, pretende-se comparar a abordagem desenvolvida com outras abordagens para controle de variabilidade em linhas de produtos de software.

Como trabalho futuro podemos citar o estudo dos benef´ıcios da estruturac¸˜ao dos gera-dores PSM atrav´es da composic¸˜ao gradual de caracter´ısticas independentes de plataforma.

References

Batory, D. (2003). A tutorial on feature oriented programming and product-lines. In ICSE ’03: Proceedings of the 25th International Conference on Software Engineering, pages 753–754, Washington, DC, USA. IEEE Computer Society.

Batory, D. (2007). Program refactoring, program synthesis, and model-driven development. pages 156–171.

Batory, D., Sarvela, J. N., and Rauschmayer, A. (2003). Scaling step-wise refinement. In Software Engineering, 2003. Proceedings. 25th International Conference on, pages 187– 197.

Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., Sommerlad, P., and Stal, M. (1996). Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons.

Czarnecki, K. (2005). Mapping features to models: A template approach based on superim-posed variants. In GPCE’05, volume 3676 of LNCS, pages 422–437.

Czarnecki, K., Eisenecker, U., and Czarnecki, K. (2000). Generative Programming: Methods, Tools, and Applications. Addison-Wesley Professional.

D´ıaz, O., Trujillo, S., and P´erez, S. (2007). Turning portlets into services: the consumer profile. In WWW ’07: Proceedings of the 16th international conference on World Wide Web, pages 913–922, New York, NY, USA. ACM.

Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional.

Jouault, F., Allilaire, F., B´ezivin, J., and Kurtev, I. (2008). Atl: A model transformation tool. Science of Computer Programming, 72(1-2):31–39.

Kleppe, A. G., Warmer, J., and Bast, W. (2003). MDA Explained: The Model Driven Architec-ture: Practice and Promise. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.

Trujillo, S., Batory, D., and Diaz, O. (2007). Feature oriented model driven development: A case study for portlets. In ICSE ’07: Proceedings of the 29th international conference on Software Engineering, pages 44–53, Washington, DC, USA. IEEE Computer Society.

Referências

Documentos relacionados

Wick, Pollock & Jefferson (2011, p.4) afirmam que “A extensão a qual organizações estão dispostas a custear o aprendizado, e o cuidado com que isso é

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27

● O SW-CMM (Capability Maturity Model for Software) é um modelo de capacitação de processos de software, desenvolvido pelo SEI (Software Engineering Institute) e patrocinado

Nesta reunião, o ScrumMaster trabalha junto com o Proprietário do Produto e a Equipe de Desenvolvimento para definir qual a carga de tempo que cada funcionalidade do Product

Esse conjunto de função consiste naquelas funções não diretamente relacionada à definição, ao gerenciamento, ao desenvolvimento e ao teste de software, mas que não

Processo de Desenvolvimento de Software: Analises iniciais, ciclo de vida de um processo, modelos de processos de desenvolvimento, padrões de processos, processo unificado;

• Gerar nos alunos de Análise e desenvolvimento de software a capacidade de analisa, documentar e especificar sistemas computacionais de informação.. Estes devem fazer uso

• O ciclo de vida iterativo e incremental pode ser visto como uma generalização da abordagem em cascata: o software é desenvolvimento em incrementos e cada incremento é desenvolvido