Documente Academic
Documente Profesional
Documente Cultură
USP So Carlos SP
Junho de 2009
Daniel Lucrdio
Orientadora:
Profa
Dra
USP So Carlos SP
Junho de 2009
Agradecimentos
Agradeo minha orientadora, Renata, que me acolheu e orientou durante todos estes
anos. Alm dos diversos papis que lhe cabem oficialmente, sendo uma orientadora dedicada,
interessada e competente, ela me ajudou muito dentro e fora do doutorado.
Agradeo tambm s instituies que fizeram com que esta trajetria fosse possvel. Estas
incluem o ICMC-USP, por ter sido a minha casa durante estes anos. Tambm agradeo
FAPESP, CAPES e CNPq, que em diversos momentos me ajudaram financeiramente. Espero
ter correspondido e continuar correspondendo altura este investimento em mim realizado.
Agradeo ao grupo RiSE (Reuse in Software Engineering), e as suas instituies de apoio,
UFPE e C.E.S.A.R. em Recife-PE. Tenho orgulho em ter participado do comeo desta iniciativa,
junto com Eduardo Santana de Almeida, Vinicius Cardoso Garcia e Alexandre Alvaro, sob a
orientao de Silvio Meira. Se hoje o RiSE est entre os principais grupos de reutilizao do
mundo, porque realmente compreendemos o verdadeiro significado da palavra colaborao.
Durante o doutorado, passei seis meses na George Mason University, em Fairfax, VA,
Estados Unidos, sob a orientao de Jon Whittle, onde aprendi muitas coisas, somente algumas
delas contidas nesta tese de uma forma ou de outra. Foram tambm trs meses em Redmond,
WA, Estados Unidos, na Microsoft Research, sob a orientao de Ethan Jackson e Wolfram
Schulte, em outro grupo RiSE, esse chamado Research in Software Engineering. Este estgio
foi parte de um prmio que recebi, o Latin American Fellowship Award 2008-2009, oferecido
pela Microsoft Research. Posso seguramente dizer que essa experincia deixou marcas e
aprendizados que foram alm de todas as minhas expectativas, e impossvel no ficar grato
pelo reconhecimento de meu trabalho. Agradeo tambm a Jaime Puente, Juliana Salles, e toda
a equipe da Microsoft responsvel por essa tima iniciativa.
Obrigado Aptor Software, por acreditar neste projeto, cedendo parte de seu tempo e seus
funcionrios para a realizao de um dos estudos empricos.
Agradeo tambm aos colegas e amigos que encontrei pelo caminho, pois foram muito
importantes durante essa trajetria: no ICMC, Dbora, Daniel, Thiago, Andr, Silvana,
Amrico, Adalberto, Willian, David, Eduardo e Prazeres; em Recife-PE, Eduardo, Vinicius,
Alexandre, Fred, Bart, Liana, Vanilson, Kellyton, e demais membros do RiSE; Em Fairfax,
EUA, Marcos, Rodrigo, William, Aline e Cristiane; e finalmente Leo, Renan, Alexandre,
Alexandro, Matko, e os outros estagirios da MSR.
Durante o doutorado, foi tambm importante o perodo de dois anos e meio trabalhando em
tempo parcial na 3WT, empresa aqui de So Carlos. No existe um vnculo oficial entre o que
fiz na empresa e o que fiz na universidade, mas a vivncia prtica na indstria foi sem dvida
relevante para esta tese, e agradeo empresa e aos amigos que nela fiz: Dugnani, Evandro,
Cristiano, Escovar, Danilo, Vital, Ricardo, Rodrigo, Mateus, Renan, Cris, Maria e muitos outros
com quem convivi neste perodo.
Agradeo tambm aos amigos Cassandra, Marcelo, Bianca, Amandinha, Ivan e Amanda,
pela amizade e pelas noites de descontrao.
Por fim, agradeo minha amada esposa Alessandra e minha filha Julia, por todo o amor
e carinho que me fazem lembrar que a vida no podia ser melhor. E tambm pelo apoio, fora
e compreenso nos (muitos) momentos difceis. A todos interessados em iniciar uma jornada
como a de um doutorado, recomendo fortemente a presena da famlia. Tambm agradeo a
meus pais Horcio e Dalila, meus irmos e cunhados, Rafael e Amanda, Maurcio e Andra,
Fbio e Andra, meus sogros Vivaldo e Ivani e meus sobrinhos, Gabriel, Leo, Dudu e Giovanna.
E tambm a Guiza, minha companheira fiel durante grande parte do desenvolvimento e escrita
da tese.
E obrigado DEUS, pela minha vida.
James M. Neighbors
Resumo
A reutilizao de software busca aumentar a qualidade e produtividade no desenvolvimento
de software, evitando a duplicao do esforo e reaproveitando o mximo possvel das
experincias de projetos passados. Apesar de simples, esta idia no facilmente colocada em
prtica, principalmente de maneira sistemtica e controlada. Tcnicas de engenharia de domnio
e linhas de produtos de software buscam facilitar esta tarefa, porm ainda existem outros fatores
que dificultam a adoo da prtica da reutilizao. Entre estes, destacam-se os problemas
inerentes ao desenvolvimento de software da maneira como conduzido atualmente, baseado
em cdigo-fonte. Estes problemas tm suas origens na crescente demanda por software cada vez
mais complexo e afetam negativamente a capacidade de reutilizar software. O desenvolvimento
orientado a modelos surge como uma alternativa atraente neste cenrio, elevando a importncia
de modelos dentro do ciclo de vida do software, incorporando-os como parte integrante do
produto final por meio de tcnicas de modelagem e gerao de cdigo. Com isto, parte da
complexidade do software fica escondida dentro dos geradores, protegendo os desenvolvedores,
reduzindo a incidncia de erros, aumentando a produtividade, qualidade, interoperabilidade
e manutenibilidade dos artefatos produzidos. Nesta dissertao defende-se a tese de que o
desenvolvimento orientado a modelos pode efetivamente aumentar e/ou melhorar a reutilizao
de software, e que para isso ela deve ser tratada de forma consistente dentro de um processo
de engenharia de domnio. Para demonstrar esta tese, apresentada uma abordagem orientada
a modelos para reutilizao de software, com atividades que guiam o desenvolvedor durante a
anlise, projeto e implementao do domnio. So tambm apresentados os resultados de uma
avaliao envolvendo trs estudos empricos, realizados em ambiente acadmico e industrial,
que buscou determinar a viabilidade da abordagem e os benefcios que podem ser alcanados
com a combinao de tcnicas do desenvolvimento orientado a modelos e da reutilizao de
software. Os resultados mostram que a abordagem pode trazer diferentes benefcios para
organizaes de software, incluindo aumento da quantidade e qualidade da reutilizao, e
reduzindo a complexidade de desenvolvimento e configurao de produtos.
Palavras-chave: Reutilizao de software, Desenvolvimento Orientado a Modelos,
Engenharia de Domnio, Linhas de Produtos de Software, Linguagens Especficas de Domnio,
Programao Generativa.
Abstract
Software reuse aims at increasing quality and productivity in software development,
avoiding effort duplication and reusing all past experiences possible. Although it is a simple
idea, it is not easy to put reuse in practice, especially in a systematic and controlled way.
Domain engineering and software product lines techniques try to make this task easier, but
there are many other factors that difficult the reuse adoption. Among these factors are the
problems that are inherent to software development in the way it is conducted today, based on
source code. These problems arise from the growing demand for increasingly complex software,
negatively affecting the ability to reuse. Model-driven development is an attractive alternative
in this scenario, leveraging the importance of models in the software life cycle, incorporating
them as part of the final product through modeling and code generation techniques. As a result,
part of the software complexity becomes hidden inside the generators, shielding the developers,
reducing errors, increasing the productivity, quality, interoperability and maintainability of the
produced assets. In this dissertation is presented the thesis that model-driven development can
effectively increase and/or improve software reuse, and that to achieve this goal it must be
treated in a consistent way inside a domain engineering process. To demonstrate this thesis,
a model-driven software reuse approach is presented, with activities that guide the developer
during domain analysis, design and implementation. The results of an evaluation involving
three empirical studies are also presented. The studies were performed in both academic and
industrial environments, and aimed at determining the viability of the approach and the benefits
that can be achieved with the combination of model-driven development and software reuse
techniques. The results showed that the approach can bring different benefits to software
organizations, such as software reuse quantity and quality improvements, and complexity
reduction in product development and configuration tasks.
Keywords: Software Reuse, Model-Driven Development, Domain Engineering, Software
Product Lines, Domain-Specific Languages, Generative Programming.
Lista de Figuras
1
20
33
40
42
43
48
60
67
78
10
96
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Lista de Quadros
1
79
79
80
93
94
10
Dados sobre o estudo envolvendo o domnio de autoria de contedo para Web . 171
11
12
13
Lista de Acrnimos
ADD Attribute-Driven Design / Projeto Orientado a Atributos
AOP Aspect-Oriented Programming / Programao Orientada a Aspectos
AST Abstract Syntax Tree / rvore de Sintaxe Abstrata
ATL Atlas Transformation Language / Linguagem de Transformao Atlas
BNF Backus-Naur Form / Forma de Backus-Naur
DAO Data Access Object / Objeto de Acesso a Dados
DBC Desenvolvimento Baseado em Componentes
DBML DataBase Modeling Language / Linguagem de Modelagem de Banco de Dados
DSL Domain-Specific Language / Linguagem Especfica de Domnio
EMF Eclipse Modeling Framework / Framework de Modelagem do Eclipse
FBU Feature Binding Unit / Unidade de Agrupamento de Features
GME Generic Modeling Environment / Ambiente de Modelagem Genrico
GMF Graphical Modeling Framework / Framework de Modelagem Grfica
GMT Generative Modeling Tools / Ferramentas de Modelagem Generativas
GPL General Purpose Language / Linguagem de Propsito Geral
GQM Goal-Question Metric / Mtrica Objetivo-Questo
GUI Graphical User Interface / Interface Grfica com o Usurio
IDE Integrated Development Environment / Ambiente de Desenvolvimento Integrado
JET Java Emitter Templates / Modelos Emissores de Java
JMI Java Metadata Interface / Interface para Metadados em Java
recursivo
Sumrio
Introduo
19
1.1
A tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
1.2
Definio do escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
1.3
Estrutura da dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Conceitos envolvidos
27
2.1
Reutilizao de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.2
34
2.3
Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
51
3.1
Anlise SCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.2
Implementao da variabilidade . . . . . . . . . . . . . . . . . . . . . . . . .
57
3.3
Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
63
4.1
Objetivo da abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.2
Estrutura da abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
4.3
Abrangncia da abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.4
Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
71
5.1
72
5.2
73
5.3
Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
95
6.1
98
6.2
99
6.3
123
7.1
7.2
7.3
Modelo de processo
149
8.1
8.2
8.3
8.4
Avaliao
157
9.1
Definio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.2
Descrio dos projetos utilizados nos estudos empricos e sua execuo . . . . 170
9.3
9.4
9.5
9.6
9.7
10 Trabalhos relacionados
195
209
219
237
257
261
273
19
Introduo
1996).
2004). Fora da academia, diferentes relatos sobre fatores e prticas de sucesso podem
ser encontrados, em empresas como Motorola (JOOS, 1994) e Hewlett-Packard (GRISS, 1995).
1O
termo Engenharia de Software foi criado nesta conferncia como uma provocao, para ressaltar as
necessidades de se empregar, no desenvolvimento de software, os conceitos j consagrados em outras engenharias
(NAUR; RANDELL, 1968)
2 Famoso termo que tambm se originou nesta mesma conferncia, referente ao problema de se construir
sistemas de software grandes e confiveis de uma maneira controlvel e eficiente
20
Figura 1:
Foto do momento em que o mundo conhecia as primeiras
idias sobre desenvolvimento baseado em componentes,
durante palestra
de M.D. McIlroy em uma conferncia de 1968 organizada pela OTAN.
(http://homepages.cs.ncl.ac.uk/brian.randell/NATO/N1968/index.html)
Porm, mesmo aps dcadas de pesquisa, ainda no possvel afirmar que existe uma
abordagem voltada para reutilizao de software que seja amplamente utilizada e que permita
que uma organizao alcance os benefcios de qualidade e produtividade almejados por McIlroy
e muitos outros desde ento. Um estudo recente (ALMEIDA, 2007) identificou que a maioria das
abordagens originadas na academia focada em partes isoladas do problema, sem considerar a
relao existente entre elas, e que os casos de sucesso relatados por empresas se devem a fatores
muito especficos, no sendo genricos o bastante para serem aplicveis fora de seu contexto
original.
Deve ficar claro que reutilizao de software no envolve somente fatores tcnicos, como
a utilizao de mtodos, ferramentas ou mtricas. Envolve tambm fatores no-tcnicos, tais
como educao, treinamento, motivao, incentivos e comprometimento organizacional, alm
de um bom planejamento e o apoio gerencial (ALMEIDA et al., 2004).
Dentre os fatores tcnicos, destaca-se o papel do processo de software, que ajuda a incluir
no desenvolvimento uma maior capacidade de se lidar com as restries de tempo e esforo,
tornando-o mais parecido com engenharia e menos com arte (ROMBACH, 2000). Um processo
que possa ser observado, controlado e constantemente melhorado pode contribuir para que
os benefcios da reutilizao sejam alcanados, por meio de prticas eficientes de trabalho
disseminadas facilmente entre os indivduos de uma organizao, sem depender de talentos
individuais.
21
Todos esses
trabalhos mostraram que adotar um processo pode ser uma maneira efetiva de se alcanar os
benefcios da reutilizao de software.
Porm, os processos existentes atualmente apresentam algumas falhas e falta de
detalhes em atividades importantes, tais como o desenvolvimento para reutilizao e o
desenvolvimento com reutilizao, alm de nfase em atividades especficas (anlise, projeto
ou implementao), e no no processo todo. Mesmo as recentes idias de linhas de produto de
software ainda no produziram consenso com relao a quais atividades (incluindo entradas,
sadas e artefatos produzidos) e requisitos um processo efetivo de reutilizao deve possuir
(ALMEIDA et al., 2005). Este fato tambm pode ser verificado no cenrio brasileiro, onde
um estudo de levantamento realizado em empresas (LUCRDIO et al., 2008) verificou que a
maioria das organizaes investigadas (cerca de 65%) no se preocupa com reutilizao em
seus processos de software.
Neste ponto chega-se a uma primeira motivao importante: ns estamos precisando mais
de um processo sistemtico e mais completo de reutilizao, do que idias para resolver
partes mais especficas do problema. Neste sentido, a combinao de conceitos e tcnicas
existentes em uma forma nova e inexplorada pode oferecer melhores contribuies, tanto para
o mundo acadmico como para a indstria. Esta opinio j foi expressa por Jim Neighbors,
um dos pioneiros em reutilizao de software, dcadas atrs: organizaes acadmicas em
cincia da computao parecem preferir o trabalho em novas teorias. Porm, alguns dos mais
bem-sucedidos trabalhos acadmicos so uma fuso e formalizao de tcnicas de sucesso.
(NEIGHBORS, 1989).
Os problemas com o desenvolvimento de software como realizado atualmente
Talvez a maior mudana que se pode testemunhar desde o nascimento da cincia da
computao foi o grau com o qual computadores se tornaram essenciais em nossas vidas.
22
Apenas imagine como sua rotina diria seria afetada se voc no tivesse acesso a nenhum
tipo de dispositivo computacional, e voc poder perceber o quo incrivelmente pervasiva esta
tecnologia se tornou.
Neste sentido, o software - a alma de um computador, responsvel pela a operao destas
mquinas vitais - precisa sobreviver em tal cenrio de mudanas drsticas e constantes. A
histria mostrou que cientistas e profissionais da rea da computao, especialmente aqueles
envolvidos com desenvolvimento de software, so especialistas na arte da mudana. Novas
linguagens de programao e ambientes de desenvolvimento integrados sempre buscaram seguir
os avanos do hardware, e foram razoavelmente bem sucedidos at ento.
Mas chegou-se a um ponto onde o software no deve ser apenas confivel, mas tambm
operar em ambientes computacionais embarcados e distribudos, comunicar-se utilizando uma
grande variedade de paradigmas de comunicao, e se adaptar dinamicamente a mudanas
nos ambientes operacionais (FRANCE; RUMPE, 2007). Isto se deve no apenas s tecnologias
utilizadas, que se tornaram significativamente mais complexas nos ltimos anos, mas tambm
porque estas tecnologias mudam mais rapidamente do que os negcios para os quais as mesmas
procuram dar suporte (UHL, 2003).
O fato : software se tornou um artefato muito complexo. Ainda no to complexo
ao ponto de no sermos mais capazes de constru-lo, mas o esforo necessrio para tanto,
utilizando tecnologias centradas em cdigo-fonte, muito grande (KLEPPE; WARMER; BAST,
2003; FRANCE; RUMPE, 2007).
Nas palavras de France e Rumpe (2007), este esforo chega a ser hercleo: construir
sistemas de software complexos de forma manual pode ser equiparado a construir pirmides
no antigo Egito. Ns nos maravilhamos com tais implementaes de software de forma
bastante parecida com a qual arquelogos se maravilham com as pirmides: essa admirao
principalmente baseada na apreciao do esforo requerido para se lidar com as significativas
complexidades acidentais que surgem do uso de tecnologias inadequadas .
A proposta do MDD (Model-Driven Development ou Desenvolvimento Orientado a
Modelos) justamente resolver todos esses problemas, enfatizando a importncia de modelos
no processo de desenvolvimento de software (MELLOR; CLARK; FUTAGAMI, 2003). No MDD, os
modelos no so apenas papel que auxiliam nas tarefas de desenvolvimento. Ao invs disso,
eles so parte constituinte do software, assim como o cdigo. A proposta reduzir a distncia
semntica entre o domnio do problema e o domnio da implementao/soluo, atravs de
modelos de alto nvel que protegem os desenvolvedores de software das complexidades da
plataforma de implementao (FRANCE; RUMPE, 2007), e transformaes que geram artefatos de
23
24
1.1
A tese
25
1.2
Definio do escopo
importante ressaltar que o foco deste trabalho no foi pesquisar cada uma das linhas de
pesquisa, reutilizao e MDD, de forma individual e em profundidade. Isso seria um trabalho
extremamente complexo que excederia o tempo estipulado para uma pesquisa em nvel de
doutorado. Ao invs disso, buscou-se combinar as tcnicas j estabelecidas em um processo
novo, de maneira a agregar os benefcios de ambas abordagens.
Alm disso, foi priorizada a definio de uma abordagem prtica, sem lacunas e usvel, em
detrimento a uma cobertura demasiadamente extensa do ciclo de vida do software. Esta no
apenas foi uma das motivaes desta pesquisa, mas tambm foi importante para que a avaliao
final, que consistiu em colocar a abordagem em prtica em cenrios reais, pudesse ser realizada
sem muitas dificuldades. Caso a abordagem apresentasse pontos indefinidos, a mesma no
poderia ser utilizada nos estudos empricos sem esforos adicionais.
Com base nestes critrios, um primeiro ponto a ser ressaltado a cobertura do processo de
reutilizao. Trabalhou-se com o foco principal no desenvolvimento para a reutilizao, pois
sem este o desenvolvimento com reutilizao no faz sentido. Foram definidas as atividades
para construir os artefatos reutilizveis (modelos, transformadores, geradores, etc.) de forma
clara, podendo ser seguidas passo-a-passo em uma organizao de software. O desenvolvimento
com reutilizao de uma maneira sistemtica no foi abordado.
Com relao aos aspectos relacionados ao desenvolvimento orientado a modelos, o foco
no est em definir um processo completo para MDD, e sim em estender um processo voltado
reutilizao com os conceitos do MDD. Assim, foram definidas atividades para construo
de modelos, transformadores e geradores a serem reutilizados no desenvolvimento de software.
Est fora do escopo, portanto, tratar de atividades como manuteno e evoluo destes artefatos.
Outro ponto que d margem a infinitas possibilidades o ambiente de suporte ao
MDD. Ferramentas so parte essencial do MDD, e existem em inmeras opes para o
desenvolvimento orientado a modelos.
existentes, tais como aquelas apresentadas na Seo 2.2.2, ao invs de contruir o ambiente
ou ferramentas a partir do zero. Isto foi possvel devido ao atual cenrio de MDD, que j conta
com diversas opes concretas e que so efetivamente utilizadas na prtica.
26
1.3
Estrutura da dissertao
27
Conceitos envolvidos
2.1
Reutilizao de software
A reutilizao de software j foi considerada como uma bala de prata para resolver os
problemas da crise do software. A realidade, porm, mostrou que forjar tal bala muito mais
difcil do que se supunha, e que os desafios a serem enfrentados so mais abrangentes do que
os meros aspectos tcnicos normalmente tidos como os nicos relevantes.
Nesta seo apresentam-se os principais conceitos relacionados reutilizao de software,
as principais tcnicas existentes, e uma discusso mais detalhada sobre a relao entre estes
pontos e o processo de software.
2.1.1
28
que apenas uma vantagem que pode ser completamente descartada. Muitas organizaes de
desenvolvimento de software, mesmo aquelas que alegam no ter preocupao explcita com
reutilizao, vivem ou morrem com base em quo eficientemente elas geram, assimilam e
reutilizam seu conhecimento (DESOUZA; AWAZU; TIWANA, 2006).
Estas afirmaes levam seguinte discusso, normalmente associada reutilizao de
software: sendo relativamente antiga, com pelo menos quatro dcadas, por que a reutilizao
ainda no uma prtica consagrada, disseminada e bem-sucedida dentro da Engenharia de
Software? Indo alm, sendo uma prtica considerada vital para o sucesso (DESOUZA; AWAZU;
TIWANA,
29
1994; MORISIO; EZRAN; TULLY, 2002; LUCRDIO et al., 2008). Estes fatores tornam
muitos casos de sucesso em reutilizao, como por exemplo os descritos por Bauer (1993),
Endres (1993), Griss (1994, 1995), Joos (1994) mais a exceo do que a regra, e fazem com
que a pesquisa na rea ainda tenha muitos pontos em aberto.
Esta tese trata da perspectiva tcnica da reutilizao, mais especificamente os pontos
relacionados ao processo de software. Nesse contexto, existem vrias abordagens que visam
promover a reutilizao de software. Apesar de serem distintas, todas elas compartilham quatro
conceitos bsicos (BIGGERSTAFF; RICHTER, 1989), conforme citados por Krueger (1992):
Abstrao : o princpio essencial da reutilizao.
de software possa ser reutilizado, ele precisa antes ser compreendido, de forma que
o reutilizador consiga saber se ele ir atender s suas necessidades, se necessrio
fazer alguma adaptao, quanto esforo ser necessrio para essa adaptao, ou se
no possvel reutiliz-lo.
tempo examinando cada artefato em busca dessas respostas. Pode-se tambm pensar
na abstrao como sendo uma separao entre uma parte visvel ou abstrata, que contm
as informaes mais conceituais necessrias reutilizao, e uma parte escondida, que
contm as informaes mais detalhadas, normalmente ligadas implementao;
Seleo : bibliotecas de software, principalmente em grandes organizaes, tendem a ser
imensas, envolvendo um grande nmero e diversos tipos de artefatos que podem ser
reutilizados. Encontrar algo de til em tal cenrio uma tarefa difcil, e uma busca manual
pode levar mais tempo do que construir o artefato novamente. Por isso, a maioria das
abordagens para reutilizao emprega algum tipo de tcnica para agilizar a seleo, tais
como ndices, catlogos, busca automtica, entre outras (LUCRDIO; ALMEIDA; PRADO,
2004);
30
Estes quatro conceitos bsicos esto presentes nas diferentes formas de reutilizao,
desde o simples processo de se copiar um trecho de cdigo de um local para outro, at
as abordagens comumente descritas na literatura, como o desenvolvimento baseado em
componentes (SAMETINGER, 1997; SZYPERSKI, 1999), linguagens especficas de domnio
(DEURSEN; KLINT; VISSER, 2000), programao generativa (CZARNECKI; EISENECKER, 2000),
frameworks (JOHNSON, 1997b), padres (BUSCHMANN et al., 1996) e reengenharia de software
(JACOBSON; LINDSTROM, 1991)1 .
2.1.2
31
2.1.2.1
2007).
32
2007).
Com exceo de uma preocupao maior com aspectos de negcio e alguns avanos em
termos de mtodos, os conceitos apresentados por Parnas so praticamente os mesmos que
fundamentam as linhas de produtos (LINDEN; SCHMID; ROMMES, 2007):
1. Gerenciamento da variabilidade:
consiste na determinao,
modelagem e
2007). Esta preocupao faz com que as linhas de produtos sejam atrativas
para a indstria, que j acumula diversos relatos de sucesso, conforme pode ser constatado no
Hall da Fama em linhas de produto2 , que conta com empresas como Philips, Boeing, Lucent,
entre outras que conseguiram adotar esta prtica com sucesso.
2.1.2.2
Apesar da falta de consenso, um estudo recente (GARCIA et al., 2007, 2008) analisou diversos
trabalhos e modelos descritos na literatura, buscando identificar quais elementos de processo so
2 http://www.sei.cmu.edu/productlines/plp_hof.html
33
necessrios para que a reutilizao possa ser bem sucedida. Este estudo incluiu os esforos do
SEI/CMU (Software Engineering Institute / Carnegie Mellon University) (DOE; BERSOFF, 1986;
PYSTER; BARNES, 1988; HOLIBAUGH et al., 1989), mais focados na rea de custos relacionados
reutilizao; do SPC (Software Productivity Consortium, primeiro com o RMM (Reuse Maturity
Model) (KOLTUN; HUDSON, 1991), depois com o RPC (Reuse Capability Model) (DAVIS, 1993) e
finalmente com o RRM (Reuse Reference Model) (RINE; NADA, 2000), modelos que descrevem
as principais prticas de reutilizao em uma organizao de software; e de outros importantes
autores da rea, como Prieto-Daz (1991, 1993), Sherif, Appan e Lin (2006) e Morillo et al.
(2006). No estudo de Garcia et al. (2007, 2008) foi definido um modelo bastante completo, que
rene as prticas recentes relacionadas reutilizao de software.
O modelo (Figura 2) baseado em 18 reas de processo (AP) que descrevem as atividades
essenciais para uma organizao que deseja incorporar a reutilizao sistemtica em seu
processo.
34
tambm neste
2.2
Apesar dos inmeros avanos na rea da Engenharia de Software, ainda existem problemas
(KLEPPE; WARMER; BAST, 2003) com a maneira com que o software desenvolvido na maioria
das organizaes, que permanecem como desafios at os dias atuais (FRANCE; RUMPE, 2007).
35
36
forma que difcil identificar, extrair e reutilizar este conhecimento apenas lendo este cdigo.
Alm disso, este conhecimento est impregnado por trechos altamente associados a detalhes
de plataforma, de modo que a reutilizao de uma determinada lgica de negcio em uma
plataforma ou linguagem diferentes requer um trabalho cuidadoso de reengenharia.
So necessrias formas mais intuitivas de representao do conhecimento, que sejam menos
dependentes do cdigo-fonte. Uma alternativa o uso de documentao apropriada, mas como
j foi discutido na seo anterior, existe o problema da inconsistncia causada por modificaes
no software.
Produtividade: o desenvolvimento de software normalmente constitudo de projeto de
baixo nvel e codificao. Artefatos de alto nvel (modelos, diagramas) so produzidos antes
da codificao, e servem de auxlio s tarefas de desenvolvimento e manuteno, mas no
constituem o software propriamente dito.
Alm disso, esses artefatos logo perdem seu valor e se tornam retratos irreais do software
assim que as fases de codificao comeam, pois quaisquer eventuais mudanas que o software
sofra so realizadas somente no cdigo e no so refletidas nos artefatos de alto nvel, devido
principalmente s restries de tempo. Sendo assim, o tempo gasto na construo desses
artefatos, assim como o tempo gasto em esforos de manuteno devido a essa inconsistncia
com o cdigo, no so diretamente aproveitados na produo do software.
Outro ponto referente produtividade diz respeito multiplicidade entre elementos mais
conceituais e as linhas de cdigo. A um nico elemento conceitual podem corresponder
inmeras linhas de cdigo. Por exemplo, considere uma mquina de estados. Um nico
estado pode estar representado no cdigo em diferentes locais, incluindo tabelas de transies,
variveis locais e mtodos. Suponha que cada estado possui 50 linhas de cdigo associadas.
Dessa forma, para se inserir ou modificar um estado, 50 linhas de cdigo precisam ser inseridas
ou modificadas.
Alm disso, essa multiplicidade no uma funo objetiva, ou seja, no se pode garantir
que a todos os estados correspondam sempre 50 linhas. A variao disso torna o mapeamento
entre elementos de alto nvel nos seus respectivos cdigos um trabalho mais exaustivo.
Como resultado, muitas tarefas de implementao so repetitivas e exaustivas, gastando
esforo que poderia ser melhor aproveitado em trabalho conceitual.
Manuteno e documentao: Criar documentao correta e atualizada uma das tarefas
mais essenciais para que um sistema de software sobreviva e evolua de maneira efetiva.
Porm, criar e manter a documentao atualizada normalmente uma tarefa manual no muito
37
procedimentos armazenados que possuem relao com o campo; alterao das classes Java
correspondentes s aes de consulta, insero e atualizao que envolvem o campo em
questo; alterao do mapeamento de entidades (beans) que contm referncias para este
campo, normalmente um arquivo XML; alterao dos arquivos de descrio dos formulrios
que contm referncias para este campo, normalmente arquivos XML; entre outras.
Ou seja, o mesmo trabalho braal e repetitivo que foi necessrio para a construo do
software necessrio tambm na manuteno.
Outro problema causado na manuteno diz respeito rastreabilidade entre elementos
conceituais e elementos de implementao. Ao se planejar uma mudana, primeiro pensa-se
em termos conceituais, para apenas em seguida identificar os trechos de cdigo a serem
modificados. Sem esta informao de rastreabilidade, esta tarefa dificultada, exigindo uma
busca cuidadosa no cdigo.
Tambm pode levar a erros de inconsistncia entre os diversos artefatos relacionados. Por
exemplo, a modificao de cdigo Java sem a modificao correspondente dos comandos SQL
pode causar erros de execuo.
Validao e otimizao: encontrar erros conceituais diretamente no cdigo-fonte uma
tarefa mais difcil e trabalhosa do que se fossem utilizados modelos mais conceituais. Por
exemplo, considere uma mquina de estados com centenas de estados. Identificar, olhando
apenas para o cdigo, a existncia de estados inalcanveis, transies infinitas ou estados
mortos (estados sem transies para fora) pode ser extremamente trabalhoso.
Da mesma forma, otimizaes mais conceituais podem no ser to simples de serem
executadas olhando-se diretamente para o cdigo.
redundantes em uma mquina de estados seria facilitada caso houvesse algum tipo de artefato
3 http://jakarta.apache.org/struts/
38
Normalmente eles precisam se comunicar entre si, para trocar informaes ou realizar
tarefas em conjunto. Alm disso, com as atuais idias de componentes de software, um mesmo
sistema pode ser composto de partes que utilizam tecnologias diferentes, e que ainda assim
precisam se comunicar, normalmente em ambientes heterogneos, como a Internet.
Neste contexto, a interoperabilidade se torna um requisito do software, trazendo consigo
vrios outros, como a necessidade de equipes distintas, com profissionais e especialistas
dedicados s diferentes partes do software. Tambm exige formas de comunicao mais
eficientes entre as diferentes equipes e a gerncia, j que cada pessoa envolvida nestes projetos
multidisciplinares tem conhecimentos e interesses em diferentes partes do problema.
Uma possvel soluo: dados estes problemas, o desenvolvimento orientado a modelos
um exemplo tpico do ditado popular:
a necessidade a me da inveno.
MDD surgiu como uma maneira de se resolver estes problemas, utilizando uma abordagem
altamente automatizada e com promessas de ganhos significativos em termos de qualidade
39
2.2.1
(SCHMIDT, 2006), MDSD (Model-Driven Software Development) (VLTER; GROHER, 2007) ou,
para aqueles cansados de tantos acrnimos, MD* (VLTER, 2008). Todos estes acrnimos dizem
respeito mesma abordagem, cuja idia principal reconhecer a importncia dos modelos
no processo de software, no apenas como um guia para tarefas de desenvolvimento e
manuteno, mas como parte integrante do software.
A proposta do MDD (Figura 3) fazer com que o engenheiro de software no precise
interagir manualmente com todo o cdigo-fonte, podendo se concentrar em modelos de mais
alto nvel, ficando protegido das complexidades requeridas para implementao nas diferentes
plataformas. Um mecanismo automtico responsvel por gerar automaticamente o cdigo a
partir dos modelos. Neste cenrio, modelos no so apenas um guia, ou uma referncia. Eles
fazem parte do software, assim como o cdigo-fonte.
2.2.1.1
uma discusso envolvendo os diferentes pontos de vista que marcam as origens do MDD, consulte o
Apndice B
40
41
Rigidez: o MDD causa maior rigidez no software produzido, uma vez que grande parte
do cdigo gerado e fica alm do alcance do desenvolvedor;
Complexidade: os artefatos necessrios para uma abordagem baseada em modelos,
como por exemplo ferramentas de modelagem, transformaes e geradores de
cdigo, introduzem complexidade adicional ao processo, pois tratam-se de artefatos
inerentemente mais difceis de construir e manter;
Desempenho: apesar de algumas otimizaes poderem ser realizadas em nvel mais alto
de abstrao, a regra geral que geradores acabam incluindo muito cdigo desnecessrio,
e portanto o resultado pode no apresentar desempenho timo, quando comparado com
cdigo escrito mo;
42
Porm, os ganhos
posteriores so significativos, fazendo com que este investimento tenha retorno em poucas
interaes.
2.2.1.2
43
Os modelos servem de entrada para transformaes que iro gerar outros modelos ou o
cdigo-fonte. Para definir as transformaes, necessria uma ferramenta que permita que o
engenheiro de software construa regras de mapeamento de modelo para modelo, ou de modelo
para cdigo. Idealmente, essa ferramenta deve possibilitar que as regras de mapeamento sejam
construdas da forma mais natural possvel, uma vez que a construo de transformadores uma
tarefa complexa.
Finalmente, necessrio um mecanismo que efetivamente aplique as transformaes
definidas pelo engenheiro de software. Esse mecanismo deve no s executar as transformaes,
mas tambm manter informaes de rastreabilidade, possibilitando saber a origem de cada
elemento gerado, seja no modelo ou no cdigo-fonte.
Atualmente existem diversos trabalhos que buscam melhor definir o papel de todos esses
elementos. A seguir so apresentadas as principais abordagens existentes na indstria para
possibilitar o desenvolvimento orientado a modelos.
2.2.2
Para dar suporte a diferentes linguagens de modelagem, ajudar a garantir que os modelos
construdos estejam semanticamente corretos e completos, e possibilitar a definio e execuo
de transformaes genricas, as principais abordagens existentes na indstria para MDD se
baseiam no conceito de metamodelagem (OMG, 2006b), apresentado na Figura 5.
44
2.2.2.1
45
dados sendo lidos. Diferentes metanveis podem ser representados, desde o M0 at o M3 (Figura
5). Por exemplo, possvel representar modelos UML (com referncia para o metamodelo
UML) ou modelos E-R (com referncia para o metamodelo E-R). O metamodelo UML tambm
pode ser descrito em XMI, e neste caso teria uma referncia para o meta-metamodelo MOF. Por
ser baseado em XML, traz consigo vrias vantagens, tais como a facilidade de ser interpretado e
a possibilidade de se aplicar transformaes. Atualmente, o padro XMI encontra-se na verso
2.1 (OMG, 2006c).
Outro padro da MDA o QVT (Queries/Views/Transformations) (OMG, 2005). Ainda em
fase de finalizao, o QVT define uma linguagem textual e uma notao para definir consultas
e transformaes baseadas no MOF. Por meio dessa linguagem, possvel definir regras de
mapeamento entre modelos escritos em qualquer linguagem de modelagem, desde que essa
seja uma instncia do MOF.
Apesar de ter a proposta de ser genrica, podendo trabalhar com qualquer linguagem de
modelagem, a MDA tem grande foco na UML (Unified Modeling Language) (OMG, 2007).
Sendo tambm instncia do MOF, a UML apenas uma das possveis linguagens de modelagem
que podem ser usadas no MDD.
2.2.2.2
Abordagem Eclipse
A abordagem liderada pela IBM baseada na plataforma Eclipse. Uma das bases dessa
abordagem o EMF (Eclipse Modeling Framework5 ). O EMF permite a manipulao de
modelos segundo seu correspondente metamodelo.
denominado Ecore, ao invs do MOF, padro estabelecido pelo OMG. O Ecore surgiu como
um implementao do MOF, mas evoluiu para uma forma mais eficiente, a partir da experincia
obtida aps alguns anos na construo de ferramentas (ECLIPSE, 2005).
Outro projeto relacionado ao desenvolvimento orientado a modelos voltado plataforma
Eclipse denominado GMT (Generative Modeling Tools6 ). Trata-se de uma iniciativa bastante
recente, que se baseia nas idias do padres OMG, porm com algumas modificaes.
Seu principal objetivo servir de incubadora para projetos de ferramentas, linguagens e
frameworks para dar suporte s tecnologias de transformao e gerao de cdigo. Dentre os
sub-projetos do GMT, destacam-se:
ATL (Atlas Transformation Language7 ): trata-se de uma linguagem para definio de
5 http://www.eclipse.org/emf/
6 http://www.eclipse.org/gmt/
7 http://www.eclipse.org/gmt/atl/
46
transformaes entre modelos. Originalmente projetada para ser compatvel com o MOF,
sua verso atual j baseada no Ecore. equivalente linguagem QVT, do OMG,
possuindo algumas diferenas (JOUAULT; KURTEV, 2006);
MOF Script8 : esse projeto envolve o desenvolvimento de ferramentas e frameworks para
transformao de modelos para texto, com base em uma linguagem para definio dessas
transformaes; e
TCS - Textual Concrete Syntax: esse projeto visa desenvolver ferramentas para a
definio de DSLs textuais (JOUAULT; BZIVIN; KURTEV, 2006)9 .
Outro projeto, que fazia parte do GMT mas que se desvinculou por no mais se tratar
de projeto incubado, o openArchitectureWare10 . Este projeto engloba ferramentas de
modelagem textual, transformaes de software e gerao de cdigo baseada em templates,
alm de outra funes pertinentes ao MDD.
O JET (Java Emitter Templates) (POPMA, 2004) consiste de um mecanismo de gerao
de cdigo baseado em templates(CLEAVELAND, 1988). Atravs da incluso de cdigo Java
dentro dos templates, permite a metaprogramao, ou seja, a criao de programas que criam
programas. Qualquer comando Java pode ser utilizado, alm de uma srie de marcaes (tags)
que implementam comandos condicionais, de laos, formatao, entre outras funes teis. O
JET pode ser acoplado a arquivos XML ou modelos EMF, sendo portanto possvel utiliz-lo
como gerador de cdigo para uma DSL.
Finalmente, um projeto que merece ateno nessa linha o GMF (Graphical Modeling
Framework11 ). Esse projeto permite a definio completa de um ambiente de modelagem
para uma linguagem visual especfica para um determinado domnio. A partir da definio
do metamodelo da linguagem, da aparncia grfica dos elementos visuais dessa linguagem
(notao), e das ferramentas necessrias para a criao dos elementos, gerado um ambiente
completo, que permite que o engenheiro de software construa modelos segundo a linguagem e
notao definidos.
2.2.2.3
Outras abordagens
A Vanderbilt University abriga o projeto MIC (Model Integrated Computing), que pesquisa
trs elementos principais relacionados ao MDD: tecnologias para modelagem especfica de
8 http://www.eclipse.org/gmt/mofscript/
9 DSLs
10 http://www.openarchitectureware.org
11 http://www.eclipse.org/gmf/
47
Environment)12 ,
14
conforme exige o MDD. Um modelo serve de entrada para a ferramenta no formato XMI, que
ento convertido para um formato intermedirio. As transformaes so baseadas em XSLT
(W3C, 1999b), ou mesmo implementadas manualmente em linguagem de programao. O
principal problema dessa abordagem est na dificuldade em se construir transformadores dessa
forma, principalmente para transformar modelos. Neste sentido, as abordagens que utilizam
linguagens visuais para definio de transformadores, como QVT e ATL, so mais apropriadas.
O MTF (Model Transformation Framework15 ), da IBM, contm um conjunto
de ferramentas que auxiliam desenvolvedores em comparaes, validaes e criao
de transformaes entre modelos EMF. Tambm mantm um registro dos elementos
transformados, permitindo rastreamento entre elementos gerados e a gerao de relatrios para
o usurio. baseado em uma linguagem para definio dos mapeamentos entre os modelos, em
um mecanismo de transformao capaz de interpretar esses mapeamentos, em um editor para
as transformaes, e no suporte para gerao de texto a partir de modelos.
Finalmente, o projeto openMDX16 foca na implementao dos conceitos da MDA, ou seja,
o modelo a implementao. Porm, a insero de informaes especficas da plataforma de
execuo deixada para a etapa de implantao somente, no ocorrendo na etapa de projeto,
12 http://www.isis.vanderbilt.edu/projects/gme/
13 Apesar
de constar no nome desse projeto, essa ferramenta no baseada na linguagem QVT do OMG.
14 http://umt-qvt.sourceforge.net
15 http://www.alphaworks.ibm.com/tech/mtf
16 http://www.openmdx.org/index.html
48
como previsto pela MDA. Segundo os autores, isto traz uma srie de benefcios, tais como a
facilidade de portar modelos independentes de plataforma, e evita a necessidade de modelagem
especfica de plataforma, complexa e passvel de erros, alm de tornar a lgica da aplicao
realmente independente da plataforma.
Todas estas abordagens e ferramentas tm alto potencial para auxiliar no MDD, mas da
mesma maneira que no caso da reutilizao, o papel do processo fundamental para que as
tentativas no sejam fadadas ao fracasso. Este o assunto da prxima seo.
2.2.3
49
Suporte. As mesmas esto agrupadas nos cinco nveis conforme descrito a seguir:
Nvel 1 - Modelagem ad hoc: neste nvel, apenas o desenvolvimento tradicional
realizado. Prticas de modelagem so utilizadas apenas esporadicamente ou nunca;
Nvel 2 - MDD Bsico: este nvel caracterizado pela utilizao bsica de modelos,
cobrindo atividades simples do MDD, como a deciso sobre as ferramentas e convenes
de modelagem (ENG1 e PJM1).
50
de desenvolvimento.
2.3
Consideraes finais
51
Reutilizao de software e
desenvolvimento orientado a modelos
3.1
Anlise SCV
Uma das principais atividades necessrias para projetos de reutilizao em grande escala
chamada de anlise SCV (Scope, commonality, and variability ou escopo, comunalidade e
52
variabilidade). Ela oferece aos engenheiros de software uma maneira sistemtica de pensar
sobre e identificar a famlia de produtos que esto criando, ajudando, entre outras coisas
(COPLIEN; HOFFMAN; WEISS, 1998):
3.1.1
tese utilizado o termo original em ingls feature para se referir a uma caracterstica de um domnio
conforme a tcnica proposta originalmente por Kang et al., ao invs de sua traduo para o portugus, pois o
termo em ingls remete de forma mais direta e menos ambgua tcnica, enquanto o termo em portugus pode ser
utilizado em outros contextos.
53
Cardinalidade de features: features podem ser anotadas com cardinalidades, como [1..*]
ou [3..3]. Desta forma, features mandatrias e opcionais podem ser consideradas casos
especiais das cardinalidades [1..1] e [0..1], respectivamente;
Grupos e cardinalidade de grupos: features alternativas podem ser vistas como um
mecanismo de agrupamento. Esta extenso prope o uso de cardinalidades tambm nos
grupos. Por exemplo, um grupo de alternativas, onde pelo menos uma e no mximo uma
feature deve ser selecionada, anotado com a cardinalidade [1..1]. Em outro exemplo,
caso entre duas ou quatro opes do grupo devam ser selecionadas, a cardinalidade
utilizada [2..4];
54
Atributos: em alguns casos a relao de uma feature com uma subfeature to simples
que o uso de atributos associados a um tipo (como inteiro ou caractere) mais elegante e
simplifica o modelo;
Relacionamentos: diferentes relacionamentos podem ser utilizados para relacionar
features, tais como parte-de ou generalizao;
Categorias de features e anotaes: existem diversas categorias de features que
estendem aquelas propostas originalmente por Kang et al. (1990), incluindo: features
funcionais, arquiteturais, entre outras; e
Modularizao: um diagrama de features pode conter um ou mais ns especiais, cada um
representando um diagrama de features separado. Este mecanismo permite a quebra de
diagramas grandes em diagramas menores, assim como a reutilizao de partes comuns
em diferentes locais.
Existem diferentes notaes propostas para a modelagem de features, com algumas
diferenas em relao notao original proposta por Kang et al. (1990).
Porm, uma
caracterstica desta tcnica que a notao fixa, ou seja, pode no ser a forma mais intuitiva
para representar os conceitos de um domnio. Por este motivo, no MDD utiliza-se uma maneira
mais flexvel para a anlise SCV, conforme descrito a seguir.
3.1.2
Essa
discusso mais aprofundada sobre DSLs e seu papel na reutilizao apresentada no apndice A
55
Uma linguagem especfica de domnio pode ser textual (permitindo especificar programas)
ou visual (permitindo especificar modelos ou diagramas), e normalmente possui trs elementos:
a sintaxe abstrata, a sintaxe concreta e a semntica.
A sintaxe abstrata define os conceitos do domnio, e as relaes e restries que se
aplicam a estes conceitos. Em linguagens textuais, representada por uma rvore (chamada
de AST ou Abstract Syntax Tree), que armazena as palavras do vocabulrio da linguagem e
seu agrupamento vlido em forma de sentenas. Em linguagens de modelagem, corresponde
ao metamodelo que define a estrutura dos modelos que podem ser criados (GUIZZARDI; PIRES;
SINDEREN, 2002).
56
4. Pragmtica:
A abordagem tradutiva uma das mais indicadas (KLEPPE, 2007), e tambm uma das mais
empregadas. Por exemplo, em um gerenciador de interfaces visuais, como aqueles presentes em
IDEs como NetBeans ou Visual Studio, as interfaces so especificadas de forma visual, em uma
linguagem especfica para o domnio GUI (Graphical User Interface ou Interface Grfica com
o Usurio). Nesta linguagem, especifica-se os atributos de cada componente, como posio
e tamanho, assim como os eventos e aes associados. Como resultado, gerado cdigo que
traduz a semntica da linguagem (posio, tamanho, atributos, eventos de cada componente) em
uma GPL (General Purpose Language ou Linguagem de Propsito Geral, como por exemplo
UML, Java, C#, C++, VB, entre outras).
A definio da linguagem normalmente requer um metamodelo que seja capaz de capturar
os pontos comuns e variveis do domnio, e no a mais comumente utilizada BNF. Um
metamodelo uma estrutura similar a um diagrama de classes, e possui elementos como classes,
atributos, associaes e agregaes. Seja qual for a representao visual final (diagrama visual
ou representao textual), a existncia de um metamodelo como esquema conceitual em geral
indica que uma maior quantidade de instncias pode ser expressa. Isto ocorre pelo simples fato
de que regras gramaticais BNF descrevem uma rvore, enquanto um metamodelo descreve um
grafo, e rvores so subconjuntos de grafos (KLEPPE, 2007).
Com relao sintaxe concreta, ambas as possibilidades (linguagens visuais ou textuais)
devem ser consideradas, e a escolha depende de uma anlise mais aprofundada (PETRE,
1995). Entre os fatores a serem analisados, pode-se citar o fato de que a implementao
de interpretadores textuais (parsers) uma tarefa reconhecidamente difcil (FEILKAS, 2006;
CLEAVELAND,
gramticas livres de contexto (FEILKAS, 2006). Linguagens visuais tambm so mais intuitivas
(ESSER; JANNECK, 2001), e portanto resultam em maior facilidade de utilizao por especialistas
no experientes com tecnologia da informao. Muitas vezes, porm, uma combinao de
mltiplos formatos de entrada, ou mesmo mltiplas linguagens, necessria (WILE, 2004;
TOLVANEN; KELLY,
2001).
57
3.2
Implementao da variabilidade
Conforme j identificado por Parnas (1976) h dcadas atrs, alm de muitos outros desde
ento (MILI; MILI; MILI, 1995; EZRAN; MORISIO; TULLY, 2002), sistemas de software raramente
so compostos exclusivamente por elementos novos. Muitos compartilham uma base comum,
diferindo apenas em pontos isolados. Estes expressam as variaes, ou variabilidade de
software.
Para alguns autores, como Svahnberg, Gurp e Bosch (2005), o termo variabilidade de
software no significa apenas as diferenas entre sistemas de software, mas tambm sua
capacidade em ser estendido, modificado, customizado ou configurado de forma eficiente para
uso em um contexto particular. Trata-se portanto de um atributo de qualidade, assim como
manutenibilidade ou usabilidade. Nesta tese, porm, utiliza-se o termo variabilidade como
referncia s possveis variaes de um conjunto de produtos de software.
Para garantir que um sistema possua um suporte adequado variabilidade, a mesma deve
ser gerenciada durante todo o seu ciclo de vida, desde a anlise at o projeto e implementao.
A anlise SCV, descrita na seo anterior, corresponde identificao e modelagem da
variabilidade. Em seguida, as atividades de projeto e implementao devem cuidar para
que esta variabilidade identificada seja devidamente implementada, em forma de mecanismos
configurveis e adaptveis (LEE; KANG; LEE, 2002).
O suporte variabilidade ocorre de forma distinta nas reas de reutilizao e MDD.
3.2.1
58
pode estar presente em um determinado produto. Nestes casos, o uso de Mixins, herana
mltipla ou herana parametrizada pode ajudar;
Agregao/delegao: esta tcnica consiste em repassar requisies entre objetos,
caso um deles no seja capaz de atender a uma requisio. A variabilidade pode ser
implementada desta forma, incluindo uma funcionalidade padro ou mandatria em um
objeto, e uma funcionalidade variante em outro objeto, a ser delegado. Esta tcnica
funciona com features opcionais, mas apresenta problemas para alternativas, j que
necessrio decidir para quais objetos deve ser feita a delegao;
Parametrizao: consiste na insero de parmetros em componentes e interfaces, para
seleo das variantes. O componente ento responsvel por executar um comportamento
diferente de acordo com o parmetro especificado;
Programao orientada a aspectos (AOP - Aspect-Oriented Programming): com
AOP, funcionalidades mandatrias podem ser implementadas de modo padro, enquanto
funcionalidades alternativas so implementadas em forma de aspectos, a serem
combinados posteriormente, num processo conhecido como aspect weaving. Ou seja,
antes da execuco, um programa instancia uma configurao do seu cdigo executvel
selecionando as alternativas de aspectos que sejam adequadas ao seu estado atual;
Arquivos de configurao: consiste na criao de arquivos separados que contm as
informaes variantes, a serem selecionadas e includas no produto;
Carregamento dinmico de classes: permite que um produto solicite uma classe
dinamicamente, em tempo de execuo. Esta classe ento carregada na memria e
executada. Esta tcnica permite a incluso dinmica de alternativas, de acordo, por
exemplo, com parmetros ou arquivos de configurao.
2007b).
59
selecionando-se a verso que possui a variante desejada, por exemplo. Esta abordagem
utilizada por muitos profissionais, mas freqentemente leva a problemas graves quando as
variaes so muito complexas (MUTHIG; PATZKE, 2004). Isto porque, em geral, dependem de
um profundo conhecimento do sistema em diferentes nveis de detalhes, por parte do engenheiro
de software.
3.2.2
60
Bibliotecas com suporte a linguagens como XPATH (W3C, 1999a) facilitam o trabalho de se
consultar as informaes.
O segundo elemento o template, neste caso uma pgina HTML anotada, segundo o
formato JET, com cdigo JAVA que consulta a entrada do gerador. O terceiro elemento o
processador de templates, responsvel por instanciar o template com base na entrada. A Figura
7 ilustra esse processo, onde cada trecho do template processado para consultar o arquivo de
entrada e produzir o cdigo correspondente.
61
3.3
Consideraes finais
63
Neste captulo apresentada uma viso geral da abordagem orientada a modelos para
reutilizao de software proposta nesta tese. So apresentados o seu objetivo, sua estrutura
e uma breve descrio de suas atividades. No final feita uma anlise frente aos modelos de
maturidade de reutilizao e MDD, visando melhor ilustrar seu escopo e cobertura no processo
de software.
4.1
Objetivo da abordagem
sistemtica, alm do foco no processo (ENDRES, 1993; BAUER, 1993; GRISS, 1994, 1995;
JOOS,
sistemas nicos para a preocupao com uma famlia de sistemas similares (FRAKES;
ISODA,
64
65
4.2
Estrutura da abordagem
A abordagem est dividida em trs fases, que seguem a diviso de fases da engenharia de
domnio: anlise, projeto e implementao. A anlise de domnio tem como objetivo identificar
o escopo do domnio, identificar pontos comuns e variveis do domnio, identificar possveis
subdomnios automatizveis, e produzir documentao sobre estas informaes. O projeto do
domnio tem como objetivo principal projetar uma arquitetura especfica de domnio. Esta
arquitetura deve contemplar as variabilidades identificadas durante a anlise, e oferecer suporte
ao seu gerenciamento, considerando a existncia de diferentes tipos de variabilidades em
cada subdomnio identificado e artefatos do MDD, como DSLs, ferramentas de modelagem e
transformadores/geradores de cdigo. Por fim, na implementao do domnio, so produzidos
os artefatos de implementao, como componentes, DSLs, ferramentas, transformaes e
geradores de cdigo, de forma a implementar a variabilidade conforme prevista e planejada
nas fases de anlise e projeto.
A abordagem apresentada por meio de diferentes elementos:
Atividades: so os elementos principais da abordagem. Elas representam uma instncia
concreta de uma determinada prtica, e definem de forma sistemtica a sua execuo.
Para cada atividade, so identificados os papis, entradas e sadas associados;
Produtos de trabalho: so os artefatos produzidos ou utilizados durante a abordagem,
tais como documentos, modelos, cdigo, etc.
66
modificado ou no por uma atividade, e portanto ele possui diferentes status em diferentes
momentos da abordagem. Por exemplo, um modelo arquitetural pode estar em status
inicial antes de uma determinada atividade, e passar para o status refinado aps esta
atividade;
Papis: representam as pessoas que executam ou auxiliam na execuo das atividades.
Um papel descreve caractersticas do indivduo, e no o indivduo em si, de forma que
uma mesma pessoa pode desempenhar vrios papis, e um papel pode ser desempenhado
por vrias pessoas. Por exemplo, no papel de especialista do domnio podem estar vrias
pessoas, cada uma com conhecimentos em pequenas partes do domnio; e
Diretrizes: em alguns casos onde no possvel estabelecer passos explcitos para a
execuo de uma atividade, a abordagem define diretrizes que podem ajudar ou guiar a
execuo da mesma.
4.3
Abrangncia da abordagem
A abordagem definida nesta tese no cobre todo o ciclo de vida do software, pois so
includas somente prticas de engenharia, que dizem respeito utilizao do MDD como
meio de aumentar a reutilizao de software, e algumas prticas referentes ao gerenciamento.
67
Reutilizao
AP2 - Planejamento de reutilizao: uma das atividades iniciais da abordagem
consiste no planejamento da reutilizao, incluindo possveis riscos, e a adoo
desta abordagem pode ser considerada como uma deciso de planejamento, assim
como a definio de seu modelo do ciclo de vida;
AP3 - Definio dos objetivos da reutilizao: a abordagem contm uma atividade
para definio dos objetivos da reutilizao;
AP4 - Implementao do domnio: uma das fases da abordagem, que visa
implementar um domnio utilizando tcnicas do MDD;
AP6 - Integrao com o ciclo de vida do software: esta prtica consiste justamente
na definio desta abordagem e seus elementos;
AP7 - Anlise de domnio: a abordagem realiza a anlise de domnio voltada para
o MDD;
AP8 - Projeto de domnio: a abordagem engloba as prticas relacionadas ao projeto
de domnio, incluindo projeto arquitetural e suporte variabilidade;
1 Uma discusso mais detalhada sobre cada prtica dos modelos de maturidade, e a sua relao com a abordagem
68
MDD
ENG1 - Decidir sobre convenes de modelagem: a abordagem possui uma
atividade na qual so analisadas as possibilidades de linguagens a serem utilizadas
na modelagem;
PJM1 - Decidir sobre ferramentas de modelagem: assim como na atividade
ENG1, a abordagem tambm busca analisar ferramentas existentes para serem
utilizadas;
ENG2 - Desenvolver modelo tcnico: a abordagem no est focada em um tipo
especfico de modelo, e portanto pode ser utilizada para desenvolver modelos
tcnicos;
ENG3 - Gerar cdigo a partir do modelo tcnico: a gerao de cdigo
um dos principais itens da abordagem, e portanto esta prtica est plenamente
implementada;
ENG5 - Desenvolver modelo independente de plataforma: a abordagem no
est focada em um tipo especfico de modelo, e portanto pode ser utilizada para
desenvolver modelos independentes de plataforma;
ENG6 - Desenvolver transformaes tcnicas modelo-para-texto: a abordagem
tem atividades para transformaes modelo-para-texto, visando dar suporte
variabilidade do domnio;
PJM2 - Modelar o processo de MDD do projeto:
a abordagem est
69
4.4
Consideraes finais
Neste captulo apresentou-se uma viso geral da abordagem, seus objetivos, sua estrutura e
seu escopo. Em particular, nota-se que a abordagem est mais focada nas prticas relacionadas
engenharia, deixando de lado a maioria das atividades de suporte e planejamento, que so
importantes, mas que esto fora do escopo desta tese.
A seguir as trs fases da abordagem so apresentadas em maiores detalhes, em captulos
separados, e com cada atividade sendo descrita de modo seqencial, visando facilitar seu
entendimento.
71
de freios com atuao eletrnica precisar ser calibrado de uma maneira especfica, para
funcionar adequadamente com um motor a Diesel. A implementao destas restries no
to imediata quanto no exemplo do sistema de aluguel de automveis, e normalmente no
72
pode ser encapsulada dentro de um nico componente, necessitando ser realizada durante o
desenvolvimento da aplicao.
neste ponto que as tcnicas do MDD podem ser utilizadas. Ao invs de deixar que
estas tarefas sejam executadas pelo desenvolvedor da aplicao, o conhecimento sobre como
implementar estas restries encapsulado em transformaes MDD e linguagens especficas
de domnio (LEDECZI et al., 2001). Em um cenrio ideal, tudo o que um desenvolvedor
precisa fazer escolher quais features estaro presentes, especificar alguns parmetros, e uma
implementao automaticamente gerada.
Obviamente, este cenrio ainda est longe da realidade, j que nem todo cdigo pode ser
completamente gerado. Porm, normalmente h partes do domnio onde isto no somente
possvel, mas pode levar a enormes ganhos de produtividade, aumentando o nvel de
reutilizao. Porm, como identificar que partes do domnio podem ser automatizadas?
O argumento desta tese que esta atividade deve ser parte da anlise de domnio. Enquanto
analisando as features do domnio, devem existir maneiras para identificar o potencial para
automao em alguns subdomnios, numa preparao para o desenvolvimento de linguagens e
transformaes, que ir acontecer nas fases seguintes (LUCRDIO et al., 2008).
5.1
73
com exatido o escopo a ser desenvolvido. Para tal definio, ao invs de buscar atender
a artefatos genricos do domnio, esta abordagem foca apenas um conjunto finito de
aplicaes ou produtos que sejam de interesse da organizao (CLEMENTS; NORTHROP,
2002). Dessa forma, so menores as chances de um artefato poder ser reutilizado em
aplicaes no previstas, mas aumenta-se consideravelmente o seu nvel de reutilizao
dentro deste escopo;
Criar modelos do domnio: modelos expressam os conceitos do domnio de forma a
facilitar o seu entendimento por parte dos projetistas e desenvolvedores. Alm disso, os
modelos devem explicitar as variabilidades e comunalidades dentro do domnio (KANG
et al.,
KANG et al., 1998; KANG; LEE; DONOHOE, 2002), de forma a facilitar o projeto de software
reutilizvel; e
Identificar os sub-domnios onde a automao possvel: nesta abordagem, o
desenvolvimento orientado a modelos utilizado para aumentar o nvel de reutilizao,
principalmente na implementao das variabilidades. Ao invs de deixar esta tarefa para
ser realizada pelos desenvolvedores de aplicaes, o conhecimento de como implementar
as variabilidades encapsulado em ferramentas de modelagem e transformaes
automticas de software (LEDECZI et al., 2001). O objetivo final que, aps a engenharia
de domnio, um desenvolvedor possa simplesmente configurar o produto desejado e
acionar as transformaes que automaticamente geram uma implementao vlida.
Assim, esta fase de anlise tambm tem como objetivo identificar sub-domnios onde
a automao possvel.
A abordagem aqui proposta uma evoluo do mtodo descrito em (ALMEIDA et al., 2006).
A diferena que aqui existe a preocupao com a identificao dos sub-domnios onde a
automao possvel, e portanto a anlise e tratamento das variabilidades realizada de forma
diferenciada, com este objetivo em mente.
5.2
A anlise de domnio comea com uma atividade de planejamento (Atividade AD.1) que
visa coletar informaes para decidir se vale a pena investir no domnio e definir o escopo do
domnio a ser construdo. Em seguida, a modelagem do domnio (Atividade AD.2) cuida da
criao de modelos do domnio, que descrevem as funes, as comunalidades e variabilidades
do mesmo. A seguir, feita a identificao de possveis sub-domnios (Atividade AD.3),
74
visando determinar os locais onde possvel a automao atravs das tcnicas do MDD. A
prxima atividade cuida da validao e documentao do domnio (Atividade AD.4), reunindo
as informaes disponveis at o momento. Por fim, ocorre uma deciso sobre quais possveis
sub-domnios identificados devem ser includos ou excludos do processo, e quais precisam ser
investigados de maneira mais aprofundada (Atividade AD.5).
A seguir estas cinco atividades so descritas em maiores detalhes.
Conhecimento do
75
e pelas condies de mercado, deixando claro o que est alm do escopo do processo.
Anlise de mercado (se aplicvel): esta tarefa no-trivial - que pode ser realizada ou
no, dependendo dos custos, complexidade e maturidade da organizao com relao ao
domnio - consiste na pesquisa e anlise sistemticas dos fatores que determinam o sucesso
do domnio no mercado. Junto com um especialista de mercado, o analista do domnio coleta
informaes sobre o negcio, estudos e anlises da competio, segmentao de mercado,
planos de negcios, e a integrao desta informao em um plano estratgico de negcios coeso
(CLEMENTS; NORTHROP, 2002).
Coleta de dados: a tarefa realizada pelo analista do domnio, junto com o especialista
do domnio, responsvel por elicitar e examinar todo tipo de conhecimento sobre o domnio
em foco. Inclui a anlise de toda a documentao existente (planos de projetos, manuais de
usurio, modelos, dicionrios de dados), aplicaes existentes e o conhecimento do especialista
do domnio.
Toda a informao deve ser organizada de forma a facilitar sua posterior consulta. No
existe uma estrutura fixa para esta tarefa, que depende de condies especficas do projeto.
Enquanto organizaes que possuam sistemas de repositrio possam utilizar um mtodo
automtico de armazenamento e busca, simples pastas e arquivos podem tambm ser utilizados.
De qualquer forma, as seguintes diretrizes podem ser teis:
Definir e manter uma estrutura no muito detalhada dos dados coletados, mas que seja
consistente. Deve ser possvel ao menos descartar grandes quantidades de informao
durante uma busca;
Sempre que possvel, incluir referncias para as fontes originais; e
Manter uma lista sobre as pessoas envolvidas e consultadas durante o processo, com suas
informaes de contato, para eventuais consultas.
Sub-atividade AD.1.2. Definio do escopo
O objetivo desta sub-atividade identificar as features que estaro presentes na futura
arquitetura do domnio.
Inicialmente, o analista do domnio, com base nas informaes sobre sistemas do domnio
e stakeholders, identifica as aplicaes a serem contempladas no domnio. Existem trs tipos de
aplicaes distintas: aplicaes existentes (aplicaes que foram desenvolvidas antes do incio
do processo de anlise de domnio), aplicaes futuras (aplicaes para as quais os requisitos
76
esto bem claros, porm o desenvolvimento ainda no foi iniciado) e aplicaes potenciais
(aplicaes para as quais ainda no existem requisitos definidos, mas que so vistas como
relevantes).
Aps compreender as aplicaes relevantes, a lista de features desenvolvida.
77
2006).
O mapa de aplicaes e a lista de features servem de guia para a prxima atividade, de
modelagem do domnio.
Conhecimento do
a modelagem das features e seus relacionamentos de grande importncia, pois ela indicam
pontos de especial interesse para os transformadores e ferramentas de modelagem, pois
especificam os procedimentos que mapeiam as abstraes em nvel de domnio.
78
79
80
Neste exemplo, isto poderia ser atingido com a criao de um terceiro cenrio
CM003. Exibir resultados da busca, que condensa os passos 3 e 4 descritos no fluxo normal
dos cenrios anteriores, assim como os fluxos alternativos.
Em termos de formato, tanto casos de uso como casos de mudana so praticamente
idnticos. A diferena que, conforme descrito no prprio nome, um caso de mudana
introduz uma alterao em um cenrio que considerado normal, tambm chamado de base
comum (COPLIEN, 2000). A definio do que um comportamento normal em um domnio
altamente subjetiva, e escolhas diferentes podem levar a diferentes decises posteriormente,
durante o projeto do domnio.
Existem basicamente dois tipos de variabilidade em relao base comum (COPLIEN,
2000):
Variabilidade positiva: mantm a base comum intacta, no violando nenhuma de suas
premissas, enquanto novos comportamentos so adicionados ou refinados; e
Variabilidade negativa: remove comportamento da base comum, no sentido em que uma
ou mais premissas que eram vlidas na base comum passam a ser violadas.
No exemplo do domnio web citado anteriormente, a busca parcial (Quadro 3) introduz uma
variabilidade positiva no passo 1, pois este um refinamento que acrescenta um comportamento
adicional, no violando as premissas do cenrio original. Tambm introduz uma combinao
81
de variabilidades negativa e positiva no passo 2, pois neste cenrio, no mais ocorre uma
busca no contedo todo, apenas no contedo especificado pelo usurio). Os fluxos alternativos
introduzem apenas variabilidades positivas, pois eles refinam o comportamento normal.
Em essncia, e principalmente na fase de anlise, ambos os tipos so vlidos e ocorrem
naturalmente dentro de um domnio. Porm, podem levar a decises de projeto diferentes.
Enquanto variabilidades positivas podem ser implementadas de maneira mais simples, as
variabilidades negativas exigem mecanismos para suprimir comportamento da base comum
(COPLIEN, 2000), o que pode levar a uma maior complexidade da arquitetura final. Assim, o
uso de variabilidades positivas preferido (COPLIEN; HOFFMAN; WEISS, 1998; COPLIEN, 2000).
Nesta tese, foram definidos os seguintes passos, numa forma sistemtica, de se tomar a
deciso sobre quais cenrios fazem parte da base comum e quais introduzem variabilidades:
1. Comear com as features mandatrias, pois estas estaro presentes no domnio. Estas iro
fazer parte dos casos de uso - os cenrios que descrevem o comportamento normal;
2. Para cada feature opcional, criar um caso de mudana;
3. Para as features alternativas onde obrigatria a existncia de ao menos uma variante,
escolher aquela que representa a maioria dos casos para fazer parte da base comum. No
exemplo acima, se a busca total est presente em mais produtos do que a busca parcial,
esta seria escolhida para incluso como um caso de uso. A busca parcial seria modelada
como caso de mudana; e
4. Caso o processo resulte em casos de mudana que apresentam variabilidade negativa,
avaliar a possibilidade de transformao em variabilidade positiva.
82
em comum, por exemplo UC001: p1, p2, p4 e p5, e dois casos de mudana CM001: p1, p2,
p3, p4 e p5 (antigo UC001), e CM002: p1, p2, p4, p5 e p6 (antigo CM001). Como resultado,
somente variabilidades positivas so introduzidas.
O mesmo pode ser feito quando dois cenrios diferem em um determinado passo. Neste
caso, ocorre a combinao de variabilidade negativa e positiva (removendo um comportamento
comum, e adicionando outro em substituio), e o mesmo mtodo pode ser aplicado para
remover a parte negativa.
Conhecimento do
83
Relacionamentos do tipo
84
valer a pena tentar procurar um sub-domnio associado a este trecho. Outra tcnica para
encontrar repeties a busca por padres recorrentes (KNODEL et al., 2005).
Alm dessas diretrizes, a experincia prtica com modelagem de domnio (TOLVANEN,
2005) mostra que um aumento incremental do escopo a melhor forma de se chegar ao
tamanho ideal do sub-domnio, comeando-se com um escopo pequeno, desenvolvendo partes
da linguagem e transformaes, e incrementando-o sucessivamente.
As seguintes sub-atividades so responsveis pela identificao dos sub-domnios.
Inicialmente, feita uma seleo inicial de candidatos a sub-domnio (Sub-atividade
AD.3.1). Em seguida, so identificadas linguagens de modelagem (Sub-atividade AD.3.2) e
ferramentas (Sub-atividade AD.3.3). Para cada sub-domnio candidato, feita a atribuio
de nvel de confiana (Sub-atividade AD.3.4), onde so avaliadas a maturidade e o estado de
cada sub-domnio identificado at o momento. Por fim, os sub-domnios so documentados
(Sub-atividade AD.3.5).
Sub-atividade AD.3.1. Seleo de candidatos a sub-domnio
O objetivo desta sub-atividade identificar potenciais sub-domnios dentro do domnio.
O analista do domnio tenta identificar, com base nas informaes coletadas e com o auxlio
das diretrizes descritas anteriormente, possveis sub-domnios.
Apesar do conhecimento
do especialista do domnio ser a principal fonte de informao para execuo desta tarefa,
o modelo de features pode ser til.
85
86
87
pode ser muito alto. A automao de um sub-domnio tambm pode requerer alteraes
e refinamentos no modelo de features, o que obviamente causa grande impacto no
desenvolvimento. Finalmente, dependendo de qual sub-domnio implementado primeiro,
outros sub-domnios sobrepostos ou relacionados podem precisar ser revistos.
Por este motivo, todos os sub-domnios identificados so tratados como candidatos at
serem completamente realizados. Alm disso, deve existir um certo nvel de confiana de que
um sub-domnio ir render os resultados esperados quando realizado em forma de artefatos
para MDD, antes de se iniciar o projeto e implementao. Nesse sentido, a medida de nvel de
confiana serve como uma ferramenta de gerenciamento de riscos, ajudando a garantir que
mudanas crticas na arquitetura e nos modelos de anlise levem aos resultados esperados.
Tambm serve como um mecanismo de suporte tomada de deciso, auxiliando na coordenao
dos esforos durante o processo iterativo desta abordagem.
A determinao de um nvel de confiana de um sub-domnio altamente subjetiva e
dependente do conhecimento do especialista do domnio e da experincia dos engenheiros do
domnio. Nesta tese, as seguintes questes foram identificadas por possuir impacto na deciso,
e devem ser consideradas:
Existe uma linguagem de modelagem para o sub-domnio?
Caso exista, qual a maturidade desta linguagem: uma linguagem bem conhecida,
utilizada por especialistas em diferentes organizaes? Existe somente na organizao
em questo? Foi desenvolvida somente para este projeto?
A linguagem de modelagem foi validada, atravs de estudos de caso, para este projeto?
Existe uma ferramenta especfica para o sub-domnio?
Caso exista, qual a maturidade desta ferramenta: uma ferramenta bem conhecida,
utilizada por especialistas em diferentes organizaes? Existe somente na organizao
em questo? Foi desenvolvida somente para este projeto?
A ferramenta foi validada, atravs de estudos de caso, para este projeto?
Como a ferramenta se enquadra no projeto? Ela gera cdigo executvel? Se no, pode
ser adaptada para gerar cdigo? Quanto esforo necessrio para se utilizar a ferramenta
neste projeto?
Foi conduzido um projeto piloto para este sub-domnio, utilizando-se uma linguagem de
modelagem e ferramenta para gerao de cdigo?
88
Para determinar o nvel de confiana de forma mais sistemtica, o analista do domnio pode
desenvolver uma mtrica envolvendo estas e outras possveis questes que possam surgir. Uma
maneira simples desenvolver um questionrio com estas questes, atribuindo um peso para
cada resposta. A soma de todos os valores o nvel de confiana.
O analista do domnio deve consultar todos os stakeholders quando definir esta mtrica,
uma vez que existem diferentes fatores a serem considerados.
Dependendo do cenrio,
diferentes situaes podem requerer valores diferentes. Por exemplo, para sistemas crticos,
razovel utilizar somente linguagens e ferramentas bem conhecidas, e portanto maiores pesos
podem ser atribudos para estas questes. Em projetos com prazos mais curtos de entrega, esta
tambm pode ser a nica opo. Porm, em projetos com mais tempo disponvel, os valores
podem ser ajustados para incluir mais sub-domnios, j que h mais tempo para desenvolver
ferramentas e linguagens de modelagem. Este tambm o caso de domnios mais abrangentes.
Conhecimento do
Candidatos a sub-domnio.
Sadas: PT.4.Validado. Planejamento do domnio, PT.5.Validado. Mapa de aplicaes,
PT.6.Validado. Modelagem do domnio e PT.7.Validado. Candidatos a sub-domnio.
89
Descrio: antes do modelo do domnio ser utilizado, ele precisa ser validado e
documentado.
Nesta
Conhecimento do
90
automatizado, mas no existe evidncia concreta de que isto pode ser feito. Tipicamente,
tem um baixo nvel de confiana, nenhuma linguagem de modelagem ou ferramenta,
mas o especialista do domnio, ou a experincia com o desenvolvimento, indicam que
ele pode ser til aps algum desenvolvimento. No existe maneira de se estimar o
esforo para torn-lo um sub-domnio concreto, ou seja, muito arriscado iniciar algum
desenvolvimento neste sentido. Portanto, essa deciso indica que nenhuma ao ser
tomada nesta iterao. No entanto, caso os stakeholders aceitem o risco, este mesmo
candidato a sub-domnio pode se enquadrar no prximo nvel de deciso (D3 );
D3 . Iniciar investigao: se um sub-domnio possui alguma chance se ser automatizado,
mas as ferramentas para isso no esto disponveis, o mesmo pode ser investigado, por
meio do desenvolvimento de prottipos de linguagens de modelagem e/ou ferramentas de
modelagem e transformaes. Tipicamente, para se iniciar uma investigao, deve existir
alguma forma de se estimar o esforo necessrio, para reduo dos riscos. Alm disso,
apesar de esta deciso levar alocao de recursos e esforos, estes so mais limitados,
uma vez que no h impacto nos demais artefatos do domnio, e sempre possvel parar a
investigao sempre que necessrio, pois o sucesso do negcio no depende diretamente
desse desenvolvimento;
D4 . Iniciar o desenvolvimento de artefatos de produo: este o ponto sem retorno
para um sub-domnio. Neste nvel de deciso, a organizao compromete-se a incluir o
sub-domnio no processo de desenvolvimento, diferentemente do nvel D3 , onde ainda
existe a possibilidade de se descartar o sub-domnio. Um sub-domnio neste nvel
deve possuir um alto nvel de confiana, mas no necessariamente precisa possuir as
ferramentas para ser automatizado. Esta uma deciso crtica, uma vez que significa
empregar esforos e recursos de forma mais intensa, para automatizar o sub-domnio e
gerenciar o seu impacto no restante do domnio;
D5 . Iniciar um projeto piloto: antes de incluir um sub-domnio no processo final,
boa prtica executar um projeto piloto, para reduzir os riscos da introduo de uma nova
tecnologia no desenvolvimento, e reduzir as barreiras transferncia tecnolgica que ir
ocorrer. Este projeto piloto tambm serve para se verificar os benefcios reais da nova
tecnologia, e planejar a melhor maneira de aplic-la a projetos reais; e
D6 .
91
Para tomar a deciso correta, o analista do domnio deve considerar toda informao
disponvel, e a deciso deve ser acordada com todos os stakeholders. Alm da informao
j mencionada, alguns outros critrios podem ajudar:
Experincia da equipe de desenvolvimento: se a equipe de desenvolvimento possui
experincia com algum sub-domnio, pode ser vantajoso focar neste sub-domnio, para
que seus benefcios possam ser alcanados sem muito esforo de entendimento e
aprendizado;
Tamanho do sub-domnio: sempre que possvel, deve-se comear com sub-domnios
menores e aument-los gradativamente (TOLVANEN, 2005). Apesar de domnios menores
levarem a menos benefcios em termos de reutilizao, so mais fceis de gerenciar e
implementar. Com o tempo, os mesmos tendem a evoluir;
Nvel de abstrao: sub-domnios que se encontram em um nvel de abstrao prximo
ao cdigo-fonte so mais simples de implementar, e esto entre os exemplos de maior
sucesso no desenvolvimento orientado a modelos (TOLVANEN; KELLY, 2005); e
Existncia de cdigo-exemplo: a existncia de exemplos de como o cdigo ou outros
artefatos devem ser gerados um fator importante. A abordagem de desenvolvimento
atravs de exemplos (WIMMER et al., 2007) facilita o processo de construo de
transformadores e geradores de cdigo.
Estes so apenas exemplos de critrios que podem ser considerados durante a tomada de
deciso. Cada domnio pode introduzir seus prprios conjuntos de critrios e particularidades a
serem considerados.
Como referncia, pode-se tambm utilizar a mtrica de nvel de confiana, definido-se
intervalos de valores para cada deciso. Por exemplo, sub-domnios com nvel de confiana
entre 0 e 5 levam a deciso D1 . Entre 6 e 10, deciso D2 , e assim por diante. Porm, esta
tcnica serve apenas como referncia. A deciso final deve ser tomada levando-se em conta
outros fatores, e no somente os includos na mtrica.
92
5.3
Consideraes finais
Neste captulo foi apresentada a fase de anlise de domnio, com atividades para promover a
reutilizao atravs do desenvolvimento orientado a modelos. As principais contribuies deste
captulo so as atividades sistemticas e as diretrizes para identificao dos sub-domnios para
automao. Tambm apresenta um modelo de decises para lidar com os riscos da incerteza
sobre a automao dos sub-domnios.
O Quadro 4 resume as atividades da anlise de domnio.
93
Atividades e sub-atividades
AD.1. Planejamento do domnio
AD.1.1. Preparao
AD.1.2. Definio do escopo
AD.2. Modelagem do domnio
AD.2.1. Mapeamento da variabilidade em
cenrios
Entradas
PT.1. Informaes sobre sistemas do domnio
PT.2. Conhecimento do especialista
PT.3. Informaes sobre stakeholders
PT.1. Informaes sobre sistemas do domnio
PT.2. Conhecimento do especialista
PT.3. Informaes sobre stakeholders
PT.4.Inicial. Planejamento do domnio
PT.5.Inicial. Mapa de aplicaes
PT.1. Informaes sobre sistemas do domnio
PT.2. Conhecimento do especialista
PT.3. Informaes sobre stakeholders
PT.4.Inicial. Planejamento do domnio
PT.5.Inicial. Mapa de aplicaes
PT.6.Inicial. Modelagem do domnio
Sadas
PT.4.Inicial.
Planejamento do
domnio
PT.5.Inicial. Mapa de aplicaes
PT.6.Inicial.
Modelagem do
domnio
PT.4.Validado. Planejamento do
domnio
PT.5.Validado. Mapa de aplicaes
PT.6.Validado.
Modelagem do
domnio
PT.7.Validado.
Candidatos a
sub-domnio
PT.8. Histrico de decises sobre
incluso/excluso de sub-domnios
PT.7.Inicial.
sub-domnio
Candidatos
94
Produto de trabalho
PT.1. Informaes sobre sistemas
do domnio
PT.3.
Informaes
stakeholders
sobre
Descrio
Consiste de todas as informaes disponveis
sobre aplicaes daquele domnio, incluindo
documentos,
manuais,
executveis,
especificaes ou mesmo cdigo-fonte
Envolve todo o conhecimento dos
especialistas do domnio, que pode estar
documentado, ou somente na percepo do
especialista
Inclui toda informao referente aos
stakeholders
envolvidos,
desde
a
identificao de cada um deles at seus
interesses e necessidades relacionadas ao
projeto
Documento que descreve o domnio, seus
objetivos e restries, alm de listar os
stakeholders e as aplicaes de exemplo
Status
Nenhum
Nenhum
Nenhum
95
O projeto do domnio uma fase essencial da engenharia de domnio (BOSCH, 2000). Seu
objetivo definir uma arquitetura de software especfica de domnio, e um conjunto de artefatos
reutilizveis que podem ser combinados para desenvolver aplicativos mais rapidamente e com
maior qualidade.
96
97
Adicionalmente, uma
DSL pode ser utilizada junto com transformaes para automaticamente gerar artefatos de
implementao, que o objetivo final do desenvolvimento orientado a modelos (CZARNECKI,
2005).
O elemento que une estes artefatos a arquitetura do domnio, que deve ser projetada
para dar suporte tanto variabilidade baseada em features quanto variabilidade baseada em
DSLs. Tambm deve ter preocupaes sobre a existncia, alm dos componentes do domnio, de
artefatos especficos do MDD, como DSLs, transformaes de software e geradores de cdigo.
Um problema que a maioria das abordagens de engenharia de domnio existentes no
define como projetar uma arquitetura de software especfica de domnio com este objetivo. A
literatura possui muitos trabalhos que discutem detalhes sobre como produzir uma arquitetura
para reutilizao (BASS; CLEMENTS; KAZMAN, 2003; BOSCH, 2000), mas estes no consideram o
MDD. E aqueles que consideram so normalmente focados no processo de derivao automtica
de produtos (WEISS et al., 2008; VLTER; GROHER, 2007; BOTTERWECK; OBRIEN; THIEL,
98
2007; ARBOLEDA; CASALLAS; ROYER, 2007; TRASK et al., 2006; TOLVANEN; KELLY, 2005;
CZARNECKI; HELSEN; EISENECKER,
domnio que adequada para o MDD, ou seja, que contemple elementos capazes de integrar
DSLs, transformaes e geradores de cdigo.
Alm disso, a maioria destas abordagens, como as descritas por Almeida et al. (2007b),
Keepence e Mannion (1999), Lee e Kang (2004), baseia-se na identificao da variabilidade
somente em termos de features. Como j discutido anteriormente, h outros tipos de variao,
como aquelas presentes em modelos de entidades, por exemplo (BARTHOLDT; OBERHAUSER;
RYTINA,
features (RABISER; GRNBACHER; DHUNGANA, 2007), sendo necessria uma DSL especfica
para representar a variabilidade de modo adequado ao MDD.
6.1
Existem conceitos relacionados ao MDD que devem ser considerados durante o projeto do
domnio, especialmente durante a definio da arquitetura do domnio. Alm da variabilidade
mais complexa discutida anteriormente, a arquitetura e seus componentes devem contar com a
existncia de DSLs e transformaes, que por sua vez devem ser capazes de produzir artefatos
de implementao voltados quela arquitetura especfica.
A fase de projeto do domnio tem os seguintes objetivos:
99
Esta fase de projeto inspirada nos mtodos descritos por Almeida et al. (2007b), deBaud
e Schmid (1999), Bass, Clements e Kazman (2003), Clements, Kazman e Klein (2004), com
duas diferenas principais:
1. So oferecidos meios mais concretos para se elicitar diretrizes arquiteturais explcitas para
o suporte aos diferentes tipos de variabilidade, na forma de features, cenrios e linguagens
especficas de domnio, o que no descrito nos mtodos citados; e
2. Juntamente com as diretrizes, so providenciadas tticas para atend-las, utilizando
padres de projeto especficos para as diferentes formas de variabilidade, a exemplo de
outras abordagens da literatura (ALMEIDA et al., 2007b; KEEPENCE; MANNION, 1999; LEE;
KANG,
6.2
2004).
100
Candidatos a
2003).
101
importante lembrar que nesta abordagem j existe uma primeira diviso do domnio em
sub-domnios, feita na atividade de anlise. Porm, esta uma diviso conceitual que pode no
coincidir com a diviso em mdulos que realizada nesta fase de projeto (BUSCHMANN et al.,
1996). Enquanto a primeira tem como objetivo identificar partes do domnio onde a automao
possvel, separando conjuntos de features relacionadas, aqui a diviso tem como objetivo
implementar padres arquiteturais que iro atender a requisitos para o domnio - as diretrizes
arquiteturais.
Nesta abordagem, ao menos trs tipos de diretrizes devem estar presentes com maior
prioridade:
Variabilidade em termos de features: como discutido anteriormente, a maior parte
da variabilidade pode ser descrita atravs de features. Para o projeto arquitetural, a
variabilidade descrita tambm na forma de cenrios, visando facilitar seu entendimento
e futura avaliao;
Variabilidade em forma de DSLs: casos mais complexos de variabilidade exigem
um mecanismo mais expressivo para express-la apropriadamente.
Para o projeto
102
cdigo gerado e no-gerado. Estes pontos de interao devem ser explcitos para que
a arquitetura possa dar suporte adequado gerao de cdigo.
103
CZARNECKI; WASOWSKI,
2007), mas tambm para a interao entre eles. Pode ser necessrio,
104
de integrao entre diferentes sub-domnios. Para esta abordagem, foram selecionados alguns
padres que auxiliam na implementao das tticas especficas para variabilidade e integrao
entre sub-domnios, apresentados mais adiante nesta seo.
A escolha das tticas e padres a serem utilizados guiada por dois fatores: o requisito
em si, explicitado pela diretriz arquitetural, e os efeitos colaterais que o emprego de uma ttica
ou padro provoca nas demais diretrizes (BASS; CLEMENTS; KAZMAN, 2003). Caso no seja
possvel encontrar alguma ttica e/ou ou padro que sirva para um cenrio especfico, pode-se
modificar ou adaptar tticas e padres existentes, ou mesmo criar novos especialmente para
este domnio. Estes passam ento a fazer parte do catlogo da organizao, e podem ser
reaproveitados em projetos futuros.
105
identificados nesta tese so baseados nos trabalhos de Vlter (2003), Vlter e Bettin (2004),
que so muito teis para projetos de MDD, mas no so especficos para o projeto arquitetural
ou para a engenharia de domnio, e portanto so acrescentadas discusses sobre como alguns
desses padres podem ser incorporados ao contexto de reutilizao.
106
107
108
109
features. Para cada ponto de variao, no caso featureA, cria-se uma classe abstrata, contendo
um mtodo principal (metodo()), a ser chamado no produto. Tambm criado um mtodo
(setNext()) que permite encadear outras instncias a esta. Para cada variante (featureA
sozinha e sub-features A1, A2 e A3), cria-se uma subclasse que implementa o comportamento
especfico da variante. O gerador, para combinar as features selecionadas, cria uma instncia
da feature principal (linha 3), cria instncias das sub-features selecionadas (linhas 4 e 5), e faz
o encadeamento (linhas 6 e 7). Dessa forma, ao se chamar o mtodo principal (linha 9), os
comportamentos especficos de cada sub-feature so chamados.
O Chain of Responsibility permite a combinao de comportamentos seqenciais, ou seja,
um executado aps o outro. Em interaes mais complexas, onde a ordem de chamada
dos comportamentos especficos no seqencial, exigindo um cdigo especfico para isso,
o padro Decorator pode ser utilizado. Neste padro, cria-se um decorator para cada variante.
Em cada decorator implementa-se uma verso dos mtodos principais, considerando-se como
esta variante modifica o comportamento normal. O gerador apenas precisa fazer a concatenao
dos decorators, de forma a reproduzir as variantes selecionadas.
A Figura 15 ilustra o uso do padro Decorator para implementar or features.
Para
cada ponto de variao, no caso featureA, cria-se uma classe abstrata que contm mtodos
110
especficos desta feature (metodo1() e metodo2()). Cria-se tambm um decorator abstrato, com
um construtor responsvel por incluir o comportamento deste decorator a outro. Para cada
variante (no caso, featureA sozinha, e as sub-features A1, A2 e A3), cria-se uma instncia
da classe abstrata principal (FeatureASozinha), e dos decorators (SubFeatureA1Decorator,
SubFeatureA2Decorator e SubFeatureA3Decorator).
O gerador apenas precisa fazer a chamada que cria instncias dos decorators que
correspondem s variantes selecionadas (linhas 3,4 e 5).
Da mesma forma que com as features alternativas, caso uma or feature precise ser
implementada em vrias classes, pode-se combinar o padro Facade para reunir mais de uma
classe em um nico ponto.
Features opcionais: para features opcionais, o mesmo conjunto de padres utilizados para
as or features podem ser utilizados, com a diferena de que neste caso no necessrio garantir
que ao menos uma feature esteja presente na aplicao.
Para a implementao de variabilidade baseada em features, podem tambm ser utilizados
dois padres baseados em prticas bem conhecidas para a escrita de geradores de cdigo
111
2006) pode ser utilizada. Consiste em um nico template que o ponto de entrada,
responsvel por consultar os modelos e chamar outros templates. Esta abordagem difere
da abordagem visitante no sentido em que a ordem e lgica por trs das chamadas dos
templates explicitamente programada pelo desenvolvedor, no dependendo de alguma poltica
pr-estabelecida. Alm disso, um template no necessariamente produz uma unidade distinta
como uma classe. Um template pode introduzir apenas um nico mtodo, um pedao de texto,
que pode ser inserido em outros artefatos. Tambm pode produzir hierarquias completas de
classes.
Esta abordagem pode ser utilizada em diferentes tipos de variabilidade, por ser mais
flexvel, sendo particularmente til para implementar or features, como ilustra a Figura 17.
O template principal responsvel por analisar os modelos de features e decidir quais
112
Figura 17: Abordagem template sendo aplicada gerao de cdigo baseada em features
templates sero chamados, quando sero chamados, e em qual ordem. No exemplo da Figura
17, a featureA selecionada, e implementada por uma nica classe, enquanto as sub-features
A1 e A3 (que esto selecionadas), so implementadas como os mtodos A1() e A3().
113
dados, construda em uma tecnologia independente da ferramenta DSL, e que contm apenas as
informaes essenciais para o gerador, e nada mais.
Desta maneira, a informao necessria para o funcionamento do gerador explicitada,
facilitando a evoluo independente do gerador e da ferramenta DSL. Tambm permite o
desenvolvimento dos trabalhos de ambas as equipes: a que est trabalhando no gerador e
outra equipe trabalhando na linguagem e suporte ferramental. Finalmente, este padro libera o
gerador de uma tecnologia de modelagem em particular, alm de restringir as necessidades de
aprendizado das particularidades das ferramentas de modelagem a uma nica equipe. A equipe
trabalhando com gerao de cdigo pode focar em suas prprias tarefas. A Figura 18 ilustra
este padro.
atividade de modelagem de features, esta camada pode ser utilizada para fazer com que os
geradores no dependam desta ferramenta em particular.
114
Cdigo gerado depende de cdigo no-gerado: este o tipo mais simples de interao,
e consiste em fazer o gerador produzir cdigo que usa cdigo existente, no-gerado, como um
framework ou biblioteca.
O padro Facade (GAMMA et al., 1995) pode ser utilizado para simplificar a interao
entre cdigo gerado e no-gerado. Ao invs de gerar cdigo que usa mltiplas classes e
mltiplos mtodos, uma nica classe Facade agrupa todas as classes e mtodos em um nico
ponto. Isto no somente torna as dependncias mais explcitas, mas tambm promove alguma
proteo contra mudanas no cdigo no-gerado. Dependendo do grau das mudanas, pode
no ser necessrio modificar o gerador, o que uma tarefa mais complexa e propensa a erros.
Adaptaes menores podem ser feitas diretamente na classe Facade.
Para proteger o gerador de mudanas maiores no cdigo gerado, e algumas vezes simplificar
o gerador, o padro Adapter (GAMMA et al., 1995) pode ser utilizado, para coletar, filtrar e/ou
preparar a informao necessria para o cdigo gerado. Mudanas mais simples como no
formato de dados ou na assinatura dos mtodos no se propagam para o gerador.
Cdigo no-gerado depende de cdigo gerado: Isto acontece quando cdigo no-gerado
espera que um comportamento ou estrutura seja gerado.
completamente possvel e algumas vezes necessrio esse tipo de padro de integrao,
mas fazer com que um cdigo no-gerado dependa diretamente de cdigo gerado pode levar
a problemas. O programa pode no compilar antes da gerao completa de cdigo. Objetos
de exemplo podem ser manualmente criados temporariamente, mas em geral isto adiciona um
nvel a mais de dificuldade para testes/manuteno. Alm disso, erros no previstos so mais
provveis de acontecer dependendo de como o cdigo gerado varia, pois difcil prever todas
as possibilidades. Estes padres visam reduzir estes problemas.
Na maioria dos casos, padres como o Template method ou Factory (GAMMA et al., 1995)
podem ser utilizados, de forma que o cdigo no-gerado no precise saber detalhes sobre
como as classes e mtodos que o mesmo utiliza so implementados, se so gerados ou
construdos manualmente. Porm, em algum momento, uma implementao concreta precisa
ser providenciada, pois de outra forma o cdigo no ir compilar e executar completamente.
Nesses casos, possvel remover a dependncia entre cdigo no-gerado e gerado por meio
dos padres de Injeo de dependncia ou Localizador de servio (FOWLER, 2004a). Estes
padres removem as dependncias do cdigo (neste caso, do cdigo no-gerado) e as colocam
em agentes externos, responsveis pela injeo das dependncias atravs de configurao
programtica ou textual (normalmente XML). As dependncias devem ainda ser definidas
em algum lugar, mas uma vez que isto s ocorre em uma entidade separada, estas so
115
explcitas, sendo tambm mais facilmente definidas, o que acaba melhorando o entendimento
do cdigo final. O cdigo original pode ser compilado independentemente, facilitando testes
e manuteno. Alm disso, o cdigo de configurao poderia ser gerado, de forma que at o
processo de injeo seja automatizado. Por exemplo, possvel gerar arquivos de configurao
para frameworks de injeo de dependncia como o Spring1 .
Estes padres assumem que h um elemento fixo entre os dois lados da dependncia:
uma interface, uma classe abstrata ou uma assinatura de mtodo. Porm, h casos onde at
mesmo as assinaturas dos mtodos so geradas, como por exemplo um gerador que produz
objetos de acesso a dados (Data Access objects - DAO), com mtodos para realizar operaes
bsicas de insero, remoo e consulta. Cada DAO possui seus prprios conjuntos de mtodos
com diferentes assinaturas dependendo dos nomes e atributos das entidades. Nestes casos,
tcnicas de reflexo podem ser a nica soluo para remover dependncias em tempo de
compilao. Atravs da reflexo, possvel transformar todas as chamadas de mtodos de
cdigo no-gerado para cdigo gerado em chamadas reflexivas, de forma que o mtodo sendo
chamado desconhecido pelo compilador.
Cdigo gerado depende de cdigo gerado: isto normalmente acontece quando h dois
sub-domnios que dependem um do outro.
Um problema que surge do relacionamento entre mltiplos sub-domnios como garantir a
integridade deste relacionamento. Uma possibilidade utilizar os nomes dos elementos como
referncias, isto , o nome de uma referncia em um modelo deve ser idntico ao nome do
elemento referenciado, em outro modelo. Apesar de no ser ideal, esta abordagem simplifica
o processo de se implementar referncias entre modelos. efetivamente utilizada devido
sua praticidade, sendo encontrada em exemplos como Apache OFBiz e algumas Microsoft DSL
Software Factories (HESSELLUND; CZARNECKI; WASOWSKI, 2007).
Outra opo so as pontes entre modelos, que consistem na criao de duplicatas
de elementos, no metamodelo que contm a referncia, que correspondem a elementos
do metamodelo referenciado.
116
Seja qual for a tcnica sendo utilizada, uma recomendao importante a de que a
modificao manual do cdigo gerado no deveria ser necessria (TOLVANEN, 2004; VLTER;
BETTIN,
do JET (Java Emitter Templates (POPMA, 2004), esta no uma boa prtica porque depende da
existncia de cdigo que marca os locais onde o cdigo manual comea e onde termina. Se este
cdigo for removido por alguma razo, o cdigo manual pode ser perdido aps a regenerao.
Assim, tcnicas de merging somente devem ser utilizadas quando estritamente necessrias,
e de preferncia com mecanismos que protegem o cdigo manual de modificaes acidentais
(WARMER; KLEPPE, 2006).
As melhores tticas para evitar esta situao incluem a gerao de classes abstratas ou
interfaces, e a utilizao de subclasses para implementar as partes faltantes. Tcnicas como
as receitas (recipes) do openArchitectureWare, que consistem na exibio de avisos sobre os
passos a serem seguidos para completar o cdigo, podem ajudar a garantir uma implementao
manual correta.
Um padro til nestas situaes chamado merging de geradores. A ttica por trs deste
padro criar um modelo separado para a especificao das partes faltantes, e ento combinar
estes modelos utilizando um gerador especfico. A Figura 19 ilustra a idia.
117
118
Assim,
a definio da interface deste mdulo deve conter uma descrio desta varivel, do seu
funcionamento, e dos requisitos que levaram sua criao.
Todos os requisitos e funes associados com o mdulo pai devem possuir um mdulo
correspondente que assuma a responsabilidade. Estas responsabilidades devem estar claramente
descritas e indicadas nas interfaces.
cada uma oferecendo uma alternativa para se atender s diferentes diretrizes. Uma atividade
ento responsvel por avaliar as alternativas e selecionar qual delas segue adiante no processo.
A avaliao arquitetural deve ser iniciada quando a equipe de desenvolvimento comear
a tomar decises que dependem da arquitetura, e o custo de se desfazer tais decises
maior do que o custo de se realizar a avaliao (CLEMENTS; KAZMAN; KLEIN, 2004). Nesta
abordagem, estas decises so referentes automao dos sub-domnios, utilizando ferramentas
de modelagem e transformadores, que depende desta estrutura em comum para possibilitar a
reutilizao.
Assim, esta atividade busca avaliar as alternativas de arquiteturas projetadas anteriormente.
O objetivo selecionar aquela que melhor atende aos requisitos para o domnio, com foco na
variabilidade. Este pode parecer um passo desnecessrio, uma vez que na atividade anterior o
projeto arquitetural foi realizado com base em um conjunto de diretrizes que representam os
mesmos requisitos. A diferena, no entanto, que agora sero includos os pontos de vista
dos outros interessados no domnio, para serem confrontados com os requisitos iniciais, o que
potencialmente ir revelar alguns aspectos que foram ignorados pelo projetista.
Este confronto ir no somente facilitar a seleo de uma arquitetura adequada por meio
119
principais requisitos e funcionalidades que devem ser atingidos pela arquitetura. Alguns
j foram definidos anteriormente, incluindo os casos de uso, de mudana e os principais
requisitos de qualidade.
especialista do domnio.
stakeholders, tais como usurios finais, gerentes, testadores, etc, e pode-se utilizar sesses
de brainstorming para capturar o mximo de informao possvel. A cada cenrio,
associa-se um peso que mede a sua importncia frente aos objetivos do domnio. Nesta
abordagem, sugere-se priorizar os cenrios que focam a variabilidade;
2. Avaliar cenrios individualmente: neste passo, cada cenrio avaliado de forma
individual, por meio de workshops mediados pelo projetista, onde se discute como
o cenrio est ou no sendo atendido pelas diferentes arquiteturas.
Pode-se
mudanas referentes ao suporte aos cenrios, este passo tem como objetivo destacar
quais cenrios se interagem, isto , exigem mudanas no mesmo local ou grupo
de mdulos/componentes. reas onde existe grande interao entre cenrios podem
significar pontos onde o projetista falhou em corretamente implementar a separao de
interesses, e portanto pode ser necessria maior ateno nesta rea, ou mesmo uma nova
passagem pelas atividades de projeto (CLEMENTS; KAZMAN; KLEIN, 2004).
O resultado destes passos uma lista que descreve como cada arquitetura atende aos
requisitos conforme expressos pelos stakeholders. Para cada arquitetura, pode-se calcular:
Nmero de cenrios diretamente suportados: para cada arquitetura, conta-se o nmero
de cenrios que foram avaliados como possuindo suporte direto da arquitetura, sem
necessidade de alteraes. Este nmero deve considerar o peso de cada cenrio, conforme
estipulado no passo 1 descrito anteriormente;
120
6.3
Consideraes finais
Neste captulo foi apresentada a fase de projeto de domnio, com atividades para promover
a reutilizao atravs do MDD. As principais contribuies deste captulo so as atividades para
definio das diretrizes e padres arquiteturais especficos para o uso do MDD na reutilizao de
software: variabilidade baseada em features, variabilidade baseada em DSLs e integrao entre
sub-domnios. Tambm apresenta uma atividade de avaliao arquitetural visando melhorar o
resultado do projeto antes da implementao ter iniciado.
O Quadro 6 resume as atividades do projeto de domnio.
O Quadro 7 descreve os produtos de trabalho da fase da projeto de domnio.
O produto do projeto de domnio a definio da arquitetura e seus componentes. Nesta
121
Atividades e sub-atividades
PD.1.
Escolha dos mdulos a serem
refinados
Entradas
PT.6.Validado. Modelagem do domnio
PT.7.Validado. Candidatos a sub-domnio
PT.8.
Histrico de decises sobre
incluso/excluso de sub-domnios
PT.9. Mdulos a serem refinados
Sadas
PT.9. Mdulos a serem refinados
PT.11.
Tticas
arquiteturais
PT.12.Avaliado.
domnio
padres
Projeto
do
122
Produto de trabalho
PT.9. Mdulos a serem refinados
PT.11.
Tticas e padres
arquiteturais
PT.12. Projeto do domnio
Descrio
Consiste na definio dos mdulos a serem
refinados em uma determinada iterao do
projeto do domnio.
Iniciando com o
domnio todo, a cada etapa um ou mais
mdulos so refinados e produzem uma nova
verso da arquitetura do domnio
Conjunto de requisitos importantes para
a definio da arquitetura. Consiste em
objetivos de negcio, casos de uso, cenrios
e linguagens que descrevem a variabilidade,
alm de uma lista de dependncias entre os
sub-domnios
Descrevem solues para problemas comuns
no projeto arquitetural orientado a modelos
Resultado da fase de projeto, este produto de
trabalho engloba a definio da arquitetura,
com os mdulos e sub-mdulos, e a
especificao das interfaces, considerando
a existncia de componentes tradicionais, e
artefatos do MDD, como DSLs, ferramentas,
transformaes e geradores de cdigo
Status
Nenhum
Nenhum
Nenhum
1. Inicial: verso inicial do documento,
gerada somente pelo projetista com o
auxlio do especialista.
Pode conter
inconsistncias ou no cumprir cenrios que
sejam importantes a algum outro stakeholder
2. Avaliado: projeto avaliado por uma
atividade especfica, que considera o ponto
de vista de diversos stakeholders
123
A anlise de domnio e projeto arquitetural, realizados em fase anterior, lidam com questes
como qual a melhor maneira de dividir o domnio em sub-sistemas ou como os mdulos devem
interagir entre si de forma a maximizar o desempenho na execuo de determinada tarefa
crtica. Porm, questes de mais baixo nvel ainda permanecem no-resolvidas, tais como: qual
tecnologia de comunicao deve ser utilizada em um domnio distribudo? Como ser o acesso
base de dados? Como a internacionalizao ser alcanada? Qual algoritmo de busca deve
ser utilizado? Estas so o foco da etapa de implementao do domnio, que nesta abordagem
tambm engloba o refinamento do projeto de alto nvel em um projeto detalhado.
Entre as questes a serem respondidas, destaca-se o suporte variabilidade. Como os
componentes do domnio iro dar suporte aos diferentes pontos de variao? Esta questo
comeou a ser respondida durante o projeto, e agora necessrio tomar as decises finais quanto
ao projeto detalhado. Alm disso, sendo esta uma abordagem orientada a modelos, necessrio
tambm implementar os artefatos especficos do MDD. Assim, a implementao deve tambm
produzir linguagens especficas de domnio, transformaes e geradores de cdigo.
Enquanto as fases de anlise (ARANGO, 1999; PRIETO-DAZ, 1990; KANG et al., 1990;
FRAKES; PRIETO-DAZ; FOX, 1998; BAYER; MUTHIG; WIDEN, 1999; KIM; YANG; PARK, 2003; MEI;
ZHANG; GU,
2003; MOON; YEOM, 2005; ALMEIDA et al., 2006, 2005) e projeto (ALMEIDA et al.,
2005; BOSCH, 2000; BASS; CLEMENTS; KAZMAN, 2003; TRACZ, 1995) de domnio para reuso so
amplamente discutidas pela comunidade cientfica, a rea de implementao apresenta algumas
lacunas que precisam ser preenchidas (ALMEIDA et al., 2008; ANASTASOPOULOS; GACEK, 2001).
Uma das razes que a engenharia de domnio tem suas razes na comunidade de reutilizao de
software, que favorece uma abordagem top-down (PATZKE; MUTHIG, 2002), dando mais nfase
anlise e projeto.
Outra razo o fato de que, para definir um processo genrico, deve ser possvel generalizar
detalhes especficos de plataforma e linguagem, de forma que o processo possa ser utilizado
124
7.1
125
126
7.2
PT.6.Validado.
Candidatos
127
a sub-domnio, PT.8.
128
129
Candidatos a
130
Sadas: PT.14.Inicial.
Suporte
131
132
133
134
PT.6.Validado.
a sub-domnio, PT.8.
Candidatos
Implementao de
referncia
Descrio: considerando-se somente seu poder representativo, uma DSL composta
somente pela sintaxe (abstrata e concreta). A sintaxe abstrata voltada para interpretadores
automticos, enquanto a sintaxe concreta projetada para ser usada por seres humanos, na
135
136
mandatrias, e uma seleo arbitrria de uma feature em cada grupo de or features. Deixar
todas as features opcionais no-implementadas.
D2 . Para cada feature opcional, modificar o exemplo, criando uma nova verso do mesmo,
de forma que a feature esteja presente.
D3 . Para features alternativas, modificar o exemplo para considerar a presena de cada
alternativa separadamente, e em diferentes combinaes.
D4 . Prestar ateno s dependncias entre as features. Por exemplo, se uma feature A
depende de outra feature B, no faz sentido implementar A sem a presena de B.
D5 .
EISENECKER,
137
138
mudanas (ROBBES; LANZA, 2008) medida que so feitas nos exemplos construdos durante
o desenvolvimento da implementao de referncia, por meio de um documento separado, ou
mesmo com comentrios e anotaes no prprio cdigo.
Cada trecho modificado do cdigo precisa ser mapeado em pelo menos uma variante
descrita em uma DSL ou modelo de features. Se existir uma modificao, mas no existirem
elementos em uma DSL que a descrevam, ento a DSL provavelmente precisa ser refinada
(sub-atividade ID.3.3).
Em alguns casos, uma modificao pode aparentemente ser mapeada para diferentes
elementos de uma ou mais DSLs, o que significa que esta modificao pode ser causada por
139
diferentes variantes simultaneamente. Se for este o caso, deve-se tomar cuidado especial na
implementao do suporte a estes pontos de variao quando ambos forem selecionados ao
mesmo tempo.
Finalmente, pode acontecer de muitas modificaes, em vrias partes da implementao de
referncia, serem mapeadas a um mesmo ponto de variao, o que significa que este elemento
da DSL est espalhado em diferentes partes do cdigo. Caso existam muitas modificaes deste
tipo, pode ser que a atividade de projeto no tenha produzido uma arquitetura adequada, e o uso
de padres de projeto pode reduzir este espalhamento. Ou ento, este pode se tratar de uma
preocupao ortogonal, caso em que tcnicas da orientao a aspectos podem ajudar (VLTER;
GROHER,
2007).
Sub-atividade ID.3.3. Refinamento das DSLs
abstrata, quando o refinamento for mais conceitual, alteraes na sintaxe concreta, quando o
refinamento envolver a representao fsica dos conceitos, ou alteraes no suporte ferramental
produzido. Deve-se tambm tomar cuidado para que no sejam introduzidas inconsistncias,
principalmente quando a DSL sendo refinada possui interaes com outras DSLs e outros
artefatos do domnio. Por isso, deve-se retornar atividade ID.2 e refazer seus passos, visando
manter o refinamento consistente.
Sub-atividade ID.3.4. Desenvolvimento das transformaes e geradores de cdigo
Com o refinamento das DSLs, o implementador produz geradores de cdigo baseados em
templates (Seo 3.2.2). Para isso, ele realiza um processo conhecido como migrao de
cdigo, onde o cdigo da implementao de referncia anotado com marcaes especiais,
140
como tags e scriptlets, que fazem a associao entre o cdigo e a DSL. Cada trecho de cdigo
correspondente a alguma variabilidade, identificado na sub-atividade ID.3.2, recebe algum tipo
de anotao.
Tags normalmente do suporte a comandos mais simples do tipo condicional ou iterativo.
Por exemplo, pode-se embutir o cdigo referente a uma feature opcional dentro de uma tag
do tipo condicional, que aceita como parmetro um tipo booleano em uma DSL que indica a
presena ou ausncia da feature. Especificando-se este parmetro com o valor VERDADEIRO
faz com que o gerador inclua aquele trecho de cdigo, enquanto o valor FALSO faz com que o
gerador no o inclua. Exemplos de tags so aquelas includas pelo projeto JET (Java Emitter
Templates), descrito na Seo 2.2.2.
Variabilidades mais complexas podem precisar de mecanismos mais flexveis do que as tags
para serem implementadas e parametrizadas. Neste caso, pode-se utilizar scriptlets, trechos
de metacdigo que fazem um trabalho mais elaborado de cpia/colagem, produzindo uma
sada que une fragmentos de cdigo de forma a implementar a variabilidade exatamente como
originalmente idealizada.
Geradores baseados em templates representam transformaes modelo-para-texto, em um
nico passo. Porm, transformaes modelo-para-modelo devem ser utilizadas para produzir
geradores mais bem organizados.
141
corrigir algum erro, seja no gerador ou em outro lugar, deve-se idealmente realizar a manuteno
primeiro na implementao de referncia, test-la e valid-la, e somente ento repetir o processo
de migrao, de forma que a inconsistncia no exista. Mas na prtica, principalmente correes
menores ou de erros do prprio gerador, modifica-se diretamente os templates, causando
inconsistncia.
Para lidar com estes problemas, o seguinte processo aplicado quando necessrio realizar
alguma alterao (Figura 23).
Caso contrrio, a
142
discusso mais aprofundada sobre frameworks e seu papel na reutilizao de software apresentada no
Apndice A
143
144
145
146
Por exemplo, os
metamodelos das DSLs, o mapeamento entre DSLs e cdigo, cruzamento entre diferentes
DSLs, entre outras informaes, foram produzidos durante o processo de anlise, projeto e
implementao. Neste caso, trata-se somente de um processo de empacotamento da informao,
e possivelmente algum refinamento. Em outros casos, como a descrio e raciocnio do
cdigo gerado, especificao dos parmetros para as transformaes e geradores de cdigo,
as informaes precisam se definidas e detalhadas somente aps sua concluso.
7.3
Consideraes finais
147
Atividades e sub-atividades
ID.1. Caracterizao da variabilidade dos
sub-domnios
Entradas
PT.6.Validado. Modelagem do domnio
PT.7.Validado. Candidatos a sub-domnio
PT.8.
Histrico de decises sobre
incluso/excluso de sub-domnios
PT.12.Avaliado. Projeto do domnio
PT.6.Validado. Modelagem do domnio
PT.7.Validado. Candidatos a sub-domnio
PT.8.
Histrico de decises sobre
incluso/excluso de sub-domnios
PT.12.Avaliado. Projeto do domnio
PT.13. Sub-domnios caracterizados
Sadas
PT.13.
caracterizados
PT.14.Refinado.
Linguagens
especficas de domnio
PT.15.Refinado.
Suporte
ferramental para DSLs
PT.16. Transformaes do domnio
PT.17.
Implementao de
referncia
PT.14.Refinado.
Linguagens especficas de
domnio
PT.15.Refinado. Suporte ferramental para DSLs
PT.16. Transformaes do domnio
PT.18. Framework do domnio
Sub-domnios
PT.14.Inicial.
Linguagens
especficas de domnio
PT.15.Inicial. Suporte ferramental
para DSLs
148
Produto de trabalho
PT.13.
Sub-domnios
caracterizados
PT.14. Linguagens especficas de
domnio
PT.15.
DSLs
PT.17.
referncia
Implementao
de
Descrio
Definio do tipo de variabilidade
caracterstico de cada sub-domnio: baseada
em features ou baseada em DSLs
Definio das sintaxes abstrata e concreta
das linguagens especficas de domnio para
os sub-domnios identificados durante o
processo. A sintaxe abstrata das DSL visuais
normalmente um metamodelo, enquanto
a sintaxe abstrata das DSLs textuais uma
gramtica
Ferramentas de modelagem para as DSLs.
Podem ser ferramentas visuais, para a
criao de diagramas segundo uma DSL
visual, ou ferramentas textuais, para a
criao de programas segundo uma DSL
textual
Transformaes modelo-para-modelo e
modelo-para-cdigo para serem utilizadas
em conjunto com as DSLs do domnio
Uma implementao do domnio contendo
exemplos das diferentes variabilidades
identificadas durante o processo
Conjunto de classes reutilizveis de um
domnio, estruturadas de modo a formar
um esqueleto de uma aplicao do domnio,
com os pontos variveis bem definidos
e mecanismos que possibilitam a sua
instanciao
Documentao dos diferentes artefatos de
implementao do domnio, incluindo
componentes,
DSLs,
ferramentas,
transformaes e geradores de cdigo
Status
Nenhum
1.
Inicial: verso da DSL produzida
somente atravs de uma abordagem
top-down. Normalmente faltam detalhes que
s sero identificados aps a implementao
2. Refinado: verso inicial da DSL refinada
aps uma abordagem bottom-up, que
identifica mais detalhes para a linguagem
1.
Inicial:
verso das ferramentas
produzidas somente atravs de uma
abordagem top-down. Normalmente faltam
detalhes que s sero identificados aps a
implementao
2. Refinado: verso inicial das ferramentas
aps uma abordagem bottom-up, que
identifica mais detalhes para a linguagem
Nenhum
Nenhum
Nenhum
Nenhum
149
Modelo de processo
As atividades das fases de anlise, projeto e implementao do domnio foram descritas, nos
captulos anteriores, de forma seqencial, para facilitar o seu entendimento. Porm, na prtica
estas atividades acontecem de forma iterativa e interativa, e a sua ordem pode ser alterada para se
adequar realidade de uma organizao de software. Neste captulo apresenta-se uma sugesto
sobre um modelo de processo de desenvolvimento de software para a utilizao da abordagem.
Um modelo de processo uma representao abstrata de um processo de software
(SOMMERVILLE, 2006). Cada modelo de processo representa um processo sob o ponto de
vista de uma perspectiva em particular, e portanto contm apenas informaes parciais sobre
esse processo. Existem diferentes modelos de processo conhecidos na literatura da Engenharia
de Software, como o modelo em cascata, modelo evolutivo, baseado em componentes,
incremental, espiral, entre outros (PRESSMAN, 2005). Estes modelos de processo no so
mutuamente exclusivos, sendo freqentemente utilizados em conjunto, especialmente no
desenvolvimento de grandes sistemas.
150
8.1
151
ser atribudos aos sub-domnios identificados, o que pode levar a novas decises
posteriormente. Novos candidatos a sub-domnio tambm podem ser identificados;
4. Atividade AD.4. Validao e documentao do domnio: nesta atividade, os documentos
existentes so atualizados para refletir eventuais mudanas. Gerncia de configurao e
controle de verses devem ser utilizados para manter estes documentos organizados;
5. Atividade AD.5. Deciso sobre incluso/excluso de sub-domnios: nesta atividade, toda
nova informao sobre os candidatos a sub-domnio revista, e novas decises podem
ser tomadas sobre eles. Por exemplo, candidatos em investigao podem passar para
produo, ou serem excludos permanentemente, ou pode-se iniciar um projeto piloto
com um candidato j exaustivamente investigado e testado;
6. Fase de projeto de domnio: a cada iterao do ciclo principal, a fase de projeto produz
refinamentos na arquitetura, considerando-se os novos modelos do domnio, novos nveis
de deciso sobre os sub-domnios ou mais detalhes sobre as diretrizes arquiteturais que
possam ter sido percebidos na iterao anterior. Estes refinamentos podem inclusive
resultar no surgimento de novos mdulos; e
152
8.2
evoluo
Dentro do ciclo principal, a fase de projeto tambm ocorre de forma iterativa. A cada
iterao no ciclo de projeto, novos mdulos so identificados, formando a arquitetura do
domnio.
A diviso em
mdulos ocorre de acordo com a instanciao de um ou mais padres que atendem s diretrizes
arquiteturais.
O projeto se inicia com uma diviso principal, envolvendo todo o domnio. Esta diviso
produz os mdulos principais do sistema. Por exemplo, se for adotado o padro em camadas
(BUSCHMANN et al., 1996), a primeira diviso resulta na identificao das camadas do domnio.
153
1. Atividade PD.1. Escolha dos mdulos a serem refinados: a cada iterao, esta atividade
escolhe novos mdulos para serem refinados. Obviamente, na primeira iterao ainda
no existem mdulos, e a escolha fatalmente o domnio todo. As demais atividades so
executadas individualmente para cada mdulo aqui escolhido;
2. Atividade PD.2. Seleo das diretrizes arquiteturais: esta atividade identifica, para cada
mdulo sendo refinado nesta iterao, os principais requisitos de software que podem
influenciar a arquitetura naquele exato local referente ao mdulo. Para cada mdulo
seleciona-se, dentre todos os requisitos e objetivos de negcio do domnio, aqueles
que dizem respeito somente ao mdulo em questo, e que possuem impacto em sua
arquitetura. Estas so as chamadas diretrizes arquiteturais;
3. Atividade PD.3. Escolha de tticas e padres arquiteturais: nesta atividade o projetista
do domnio escolhe, para cada mdulo sendo refinado, e com base nas diretrizes
selecionadas para aquele mdulo, tticas e padres arquiteturais a serem aplicados no
refinamento do mdulo;
4. Atividade PD.4. Aplicao dos padres arquiteturais e refinamento dos mdulos: esta
a atividade onde efetivamente realizado o refinamento dos mdulos. A cada iterao,
com a aplicao das tticas e padres escolhidos, os mdulos so refinados, possivelmente
resultando na identificao de novos mdulos e relacionamentos; e
154
5. Atividade PD.5.
projetada frente aos seus requisitos. A cada iterao, novas arquiteturas produzidas so
avaliadas, e o resultado da avaliao serve de entrada para uma nova iterao no ciclo de
projeto.
8.3
155
156
8.4
Consideraes finais
157
Avaliao
158
Estes so os dois pontos principais a serem avaliados. Para tanto, foram realizados estudos
empricos envolvendo a aplicao da abordagem em projetos de engenharia de domnio, com
o objetivo de fornecer evidncias ou indcios sobre a validade desta tese.
A seguir so
9.1
Definio
Para a definio dos estudos desta avaliao, foi utilizado o paradigma GQM
(Goal-Question Metric) (BASILI; CALDIERA; ROMBACH, 1994). Neste paradigma, devem ser
definidos os objetivos da avaliao, que devem ser rastreados a um conjunto de dados que
definem estes objetivos de forma operacional, e a interpretao destes dados com respeito aos
objetivos definidos. O rastreamento entre os objetivos e os dados feito atravs de questes que
caracterizam os objetivos de forma mais especfica.
Assim, seguindo o formato sugerido no GQM, so definidos dois objetivos para esta
avaliao, assim descritos e detalhados por meio das respectivas questes especficas:
G1 . Analisar a abordagem orientada a modelos para reutilizao de software com o objetivo
de determinar se ela promove aumento e/ou melhoria na reutilizao de software, quando
comparada com o desenvolvimento no orientado a modelos, com respeito aos artefatos
do domnio produzidos do ponto de vista do pesquisador no contexto de projetos de
engenharia de domnio.
Q1 . Analisando-se um mesmo projeto desenvolvido com e sem a abordagem, possvel
observar um aumento e/ou melhoria na reutilizao de software no projeto que
utilizou a abordagem?
Q2 . Os artefatos de software produzidos com a abordagem so mais reutilizveis do que
aqueles produzidos em uma abordagem no orientada a modelos?
G2 . Analisar a abordagem orientada a modelos para reutilizao de software com o objetivo
de determinar a sua importncia em todo o ciclo de vida com respeito aos benefcios
obtidos e dificuldades de utilizao do ponto de vista do pesquisador no contexto de
projetos de engenharia de domnio.
Q3 . Os sujeitos que utilizaram a abordagem perceberam, durante as atividades da
abordagem referentes preocupao com MDD desde o incio do desenvolvimento
(fase de anlise), algum benefcio para a implementao dos artefatos do MDD
(DSLs, transformaes e geradores de cdigo)?
159
O objetivo G1 diz respeito tese de que o MDD oferece meios concretos para que a
reutilizao de conhecimento possa ocorrer em maior grau e de forma mais adequada, quando
comparada com um processo no orientado a modelos. Assim, a questo Q1 busca observar
este aumento e/ou melhora na reutilizao comparando-se dois projetos: um desenvolvido
sem a abordagem e outro desenvolvido com a abordagem. Contudo, mesmo que no seja
observado efetivamente um aumento conforme as mtricas especificadas, isto no significa
que a abordagem no favorea mais reutilizao. Existe a possibilidade de os artefatos serem
mais reutilizveis quando desenvolvidos com a abordagem, mesmo que no tenham sido
efetivamente reutilizados no seu maior potencial nestes estudos. Assim, a questo Q2 busca
avaliar este aspecto.
O objetivo G2 diz respeito tese de que a utilizao do MDD exige uma preocupao que
deve estar presente em todo o ciclo de vida, devendo ser tratada de forma consistente desde
a anlise at a implementao. Assim, a questo Q3 se refere obteno de algum benefcio
observvel com a aplicao da abordagem desde o incio. A questo Q4 busca identificar se a
utilizao do MDD desde o incio traz mais problemas do que benefcios.
9.1.1
Coleta de dados
Para a obteno de dados que possam conter indcios ou evidncias sobre estas questes,
foram definidas formas qualitativas e quantitativas de coleta de dados, combinando a percepo
subjetiva dos envolvidos nos estudos empricos com medidas referentes estrutura do software
produzido e outros atributos de qualidade.
especficas para cada questo relacionada aos objetivos da avaliao, conforme apresentado
a seguir.
Questo Q1 . Analisando-se um mesmo projeto desenvolvido com e sem a abordagem,
possvel observar um aumento e/ou melhoria na reutilizao de software no projeto que
utilizou a abordagem?
difcil definir o que significa aumento e/ou melhoria na reutilizao. A reutilizao
ocorre de diversas maneiras, e dependendo do contexto, pode significar diferentes benefcios.
Por exemplo, a reutilizao obtida por meio de herana completamente diferente da
reutilizao obtida com um gerador de cdigo, sendo difcil determinar qual das duas oferece
maiores benefcios, pois no h mtricas consistentes capazes de medir ambos os aspectos de
160
forma normalizada.
Existem diferentes mtricas voltadas reutilizao1 , focando em aspectos econmicos e
estruturais de artefatos de software. No contexto desta questo destacam-se apenas os aspectos
estruturais, pois esta tese trata de uma abordagem voltada para a engenharia para reutilizao.
A literatura apresenta algumas mtricas simples para medir a reutilizao no nvel estrutural dos
artefatos, mas nenhuma delas capaz de oferecer uma imagem completa do nvel de reutilizao
em um sistema (MASCENA; ALMEIDA; MEIRA, 2005). Assim, faz-se necessria uma anlise mais
cuidadosa, combinando-se diferentes mtricas que avaliem os aspectos importantes para este
estudo especfico.
Assim, as seguintes mtricas foram definidas para a questo Q1 :
M1 . Porcentagem de reutilizao (RP - Reuse Percent). Esta a mtrica mais bsica de
reutilizao, sendo definida como a razo entre o nmero de linhas de cdigo reutilizadas e
o nmero total de linhas de cdigo (POULIN; CARUSO, 1993). Um cuidado especial deve ser
tomado com esta mtrica, pois pode levar a concluses incorretas. Por exemplo, caso seja
reutilizado um nico mtodo, pequeno, de uma classe com milhares de linhas de cdigo, esta
porcentagem seria alta mas no refletiria a realidade de que apenas uma poro da classe
foi reutilizada. A coleta desta mtrica envolve a identificao dos mdulos reutilizados e a
contagem das linhas de cdigo dos mdulos reutilizados e no-reutilizados.
M2 . Razo de reutilizao (RR - Reuse Ratio). Esta mtrica calculada da mesma forma
que a M1 , porm tambm considerando-se a reutilizao do tipo caixa-branca (DEVANBU et al.,
1996): artefatos modificados at um certo nvel so considerados como reutilizados. Devanbu
et al. (1996) sugerem o valor de 25% como margem de tolerncia: artefatos que tiveram mais
de 25% de seu cdigo modificado no so considerados como reutilizados.
M3 . Porcentagem de reutilizao no desejada. Conforme destacado na mtrica M1 , a
reutilizao de grandes trechos de cdigo que no so efetivamente utilizados pode distorcer
a mtrica de porcentagem de reutilizao. O uso desta mtrica permite determinar se este
efeito est ocorrendo. Alm disso, reutilizar cdigo que no efetivamente aproveitado pode
ser prejudicial, agregando informaes descartveis que podem confundir a equipe durante a
manuteno do software. Portanto, esta mtrica tambm ajuda a caracterizar a reutilizao. Esta
mtrica consiste no clculo da porcentagem, para cada artefato reutilizado, das linhas de cdigo
que no so efetivamente utilizadas em relao ao nmero total de linhas de cdigo reutilizadas.
Para a coleta desta mtrica pode-se utilizar funcionalidades das IDEs que permitem determinar
quais mtodos no so chamados, por exemplo.
1 Uma
161
REC = LOC(modulosgerados)
: NEE(modelos)
onde NEE(modelo) corresponde ao nmero de elementos de especificao do modelo.
Um elemento de especificao pode ser uma linha de texto (em uma DSL textual) ou um
elemento grfico de um diagrama, seja ele uma caixa, atributo, linha ou outro elemento grfico
similar. Para efeito de comparao, considera-se que uma linha textual aproximadamente
equivalente a um elemento grfico, pois apesar de o elemento grfico ser mais simples de criar
e editar do que uma linha de texto, ele normalmente possui propriedades que precisam ser
configuradas individualmente.
As mtricas M4 e M5 presumem a existncia de gerao de cdigo, e portanto no podem
ser utilizadas para comparar um projeto desenvolvido sem a abordagem (que no possui gerao
de cdigo) com um projeto desenvolvido com a abordagem. Porm, elas so teis para ajudar a
caracterizar a reutilizao que est ocorrendo com a abordagem.
Dois pontos de discusso sobre estas mtricas precisam ser destacados:
Neste contexto, a
162
I=
AE
AA + AE
Onde AA significa Acoplamento Aferente, ou seja, o nmero de classes fora deste mdulo
163
que dependem de classes neste mdulo, e AE significa Acoplamento Eferente, ou seja, o nmero
de classes dentro deste mdulo que dependem de classes fora deste mdulo.
A mtrica de instabilidade varia entre 0 e 1, onde I prximo a 0 indica um mdulo estvel
e I prximo a 1 indica um mdulo instvel. Como no existem muitos dados prvios para
serem utilizados como base para esta medida, neste estudo, considerou-se que mdulos com
instabilidade < 0,5 so considerados mais estveis do que a mdia, a exemplo do estudo de
Almeida et al. (2007a).
Esta mtrica pode ser utilizada tanto em artefatos de cdigo-fonte como em artefatos do
MDD, como DSLs, modelos especficos de domnio, transformaes e geradores, j que se
baseia no conceito de dependncias. Porm, enquanto existem ferramentas automatizadas para
extrair tais valores diretamente do cdigo-fonte, a coleta com relao aos demais artefatos deve
ser manual.
M7 Complexidade ciclomtica. Um aspecto crtico na Engenharia de Software se relaciona
separao de interesses e a modularizao de um sistema de software com o objetivo de
se obter mdulos bem definidos, testveis e de fcil manuteno. Durante a dcada de 70,
McCabe (1976) desenvolveu uma tcnica matemtica que prov uma base quantitativa para
modularizao e identificao de mdulos de software difceis de testar ou manter. Nesta
tcnica, uma medida de complexidade apresentada, tendo como objetivo medir e controlar o
nmero de caminhos em um programa. No contexto da reutilizao, a complexidade tem papel
fundamental, pois artefatos mais complexos possuem menor facilidade de serem reutilizados
(MASCENA, 2007; POULIN, 1994). A complexidade ciclomtica calculada a partir de um grafo
conectado que representa o fluxo de execuo de um mdulo, da seguinte maneira:
CC(G) = E N + p
onde E = nmero de arcos de um grafo, N = nmero de ns de um grafo e p = nmero de
componentes conectados.
Para esta mtrica, valores entre 1 e 10 indicam que se trata de um mdulo simples, sem
muito risco. Valores entre 11 e 20 representam mdulos moderadamente complexos. Valores
entre 21 e 50 representam alta complexidade, e valores maiores que 50 representam mdulos
completamente no-testveis e com alto risco.
Por ser aplicvel a grafos, esta mtrica pode ser utilizada diretamente em modelos visuais
do tipo grafo. Modelos textuais tambm podem ser transformados em grafos, analisando-se o
metamodelo correspondente.
164
2005), uma vez que um domnio est constantemente em evoluo, com novas features
165
Esta mtrica no pode ser aplicada a modelos, uma vez que estes no necessariamente
contm elementos que podem ser associados com operandos e operadores. Nestes casos, devem
ser utilizadas mtricas especficas para modelos.
Conforme demonstrado por Genero, Poels e Piattini (2008), Genero et al. (2007), a
manutenibilidade de um modelo determinada principalmente por sua compreensibilidade.
Neste sentido, os autores identificaram, no contexto da modelagem Entidade-Relacionamento
e diagramas de classes, que as propriedades estruturais de um modelo que so relevantes para
que um ser humano possa compreend-lo facilmente so os atributos e relacionamentos 1:N.
O tamanho de um modelo em termos do nmero de entidades no parece ser relevante para
compreensibilidade. Assim, duas mtricas foram definidas para avaliar a manutenibilidade dos
modelos nesta abordagem. Apesar de originalmente terem sido desenvolvidas para modelos
E-R e diagramas de classes, o conceito de atributos e relacionamentos est presente em vrias
linguagens do tipo grafo, e portanto podem ser aplicadas em outros tipos de modelos similares.
M9 . Nmero de Atributos. Nesta mtrica, so contados os atributos em um modelo. Em
modelos visuais (diagramas), um atributo uma propriedade textual de um elemento visual (um
cone, uma caixa ou um n de um grafo). Em modelos textuais, um atributo uma propriedade
textual de um conceito de primeira classe, conforme definido na gramtica da linguagem.
M10 . Nmero de Relacionamentos. Nesta mtrica, so contados os relacionamentos em um
modelo. Em modelos visuais (diagramas), um relacionamento representado por uma linha
entre dois elementos, ou outra representao relacional entre dois ou mais elementos, como por
exemplo a representao de conjuntos no GME (Generic Modeling Environment - Seo 2.2.2).
Em modelos textuais, um relacionamento consiste em uma referncia entre dois conceitos de
primeira classe, conforme definido na gramtica da linguagem.
Estas duas mtricas so absolutas, ou seja, sabe-se que quanto mais atributos e
relacionamentos, menos compreensvel ser um modelo, mas no se tem uma medida para
ser utilizada como parmetro para determinar se um modelo ou no compreensvel, e por
conseqncia possui alta manutenibilidade. Como valor de referncia, foi utilizada nesta tese
a mdia obtida em experimentos envolvendo diagramas E-R e UML, conforme descrito por
Genero et al. (2007), Genero, Poels e Piattini (2008):
166
NA =
NR =
42, 63 + 40, 22
= 41, 425
2
13, 13 + 8, 88 + 8 + 8, 2
= 9, 595
4
Portanto, considerou-se neste estudo que modelos com menos de 42 atributos e menos do
que 9 relacionamentos possuem maior manutenibilidade do que a mdia.
As mtricas M9 e M10 permitem a avaliao tanto de modelos visuais e textuais, como
tambm seus metamodelos, permitindo tambm avaliar a manutenibilidade das DSLs.
Questo Q3 . Os sujeitos que utilizaram a abordagem perceberam, durante as atividades
da abordagem referentes preocupao com MDD desde o incio do desenvolvimento,
algum benefcio para a implementao dos artefatos do MDD (DSLs, transformaes e
geradores de cdigo)?
Para avaliar se o uso da abordagem desde o incio do desenvolvimento produz algum
benefcio, foi realizada uma entrevista com os sujeitos que utilizaram a abordagem, com
perguntas que avaliaram se os benefcios almejados foram efetivamente percebidos e
observados pelos sujeitos. Decidiu-se por uma entrevista ao invs de um questionrio, pois
os estudos no envolveram um nmero muito grande de sujeitos, e desta forma houve mais
flexibilidade na observao dos resultados da aplicao da abordagem. A entrevista consistiu
das perguntas a seguir, com respostas em aberto:
167
O uso das diretrizes e padres arquiteturais especficos para reutilizao e MDD facilitou
o desenvolvimento dos artefatos do MDD e da arquitetura do domnio?
A etapa de avaliao arquitetural ajudou a identificar falhas antes de a implementao ser
iniciada?
As diretrizes de implementao de DSLs, transformaes e geradores de cdigo
facilitaram a implementao dos artefatos do MDD?
O formato de documentao proposto foi adequado, auxiliando na descrio dos artefatos
reutilizveis desenvolvidos?
Quais foram as vantagens de se utilizar a abordagem de MDD no desenvolvimento?
Quais foram as desvantagens de se utilizar a abordagem de MDD no desenvolvimento?
Questo Q4 . Os sujeitos que utilizaram a abordagem tiveram dificuldades que causaram
prejuzo ao desenvolvimento, em termos de atrasos e curva de aprendizado?
Para avaliar as dificuldades de utilizao da abordagem, foram includas as seguintes
perguntas, na entrevista realizada na questo Q3 , referente s dificuldades percebidas pelos
sujeitos da abordagem:
Quais foram as dificuldades para o aprendizado da abordagem?
Quais foram as dificuldades para definio do modelo de features?
Quais foram as dificuldades para descrio da variabilidade em cenrios (casos de
mudana)?
Quais foram as dificuldades para a identificao de candidatos a sub-domnio?
Quais foram as dificuldades para realizar o processo investigativo baseado em decises
para incluso/excluso de sub-domnios?
Cite outras dificuldades percebidas durante a utilizao da abordagem de MDD desde o
incio do desenvolvimento.
9.1.2
Hipteses
Como ensina Albert Einstein, fsico alemo que viveu entre 1879 e 1955: Nenhuma
quantidade de experimentao pode provar que estou certo; um nico experimento pode provar
168
que estou errado. Com base nesta premissa cientfica, comum trabalhar-se com a idia de
uma hiptese nula, ou seja, define-se como hiptese algo que o experimentador deseja rejeitar,
e projeta-se um ou mais experimentos que tm como objetivo testar esta hiptese (WOHLIN et
al.,
2000).
Assim, a hiptese nula para esta avaliao pode ser descrita com base nas questes e
169
comparaes de M9 e M10 foram feitas com os valores estabelecidos como referncia. Para as
partes H0c e H0d no foi definida nenhuma mtrica, pois a anlise foi qualitativa.
A rejeio da hiptese nula deve ser feita em favor de uma hiptese alternativa, que
normalmente representa a negao da hiptese nula. Neste cenrio, as seguintes alternativas
so definidas:
170
9.2
9.2.1
171
Tecnologias MDD
Quadro 10: Dados sobre o estudo envolvendo o domnio de autoria de contedo para Web
9.2.2
172
foi realizado durante um estgio de doutorado realizado pelo autor da tese nos laboratrios da
Microsoft Research, em Redmond, Estados Unidos (LUCRDIO; JACKSON; SCHULTE, 2008).
Este domnio j vinha sendo explorado pelos pesquisadores da Microsoft Research, que
desenvolveram uma teoria baseada em modelagem de negcios e um conjunto de trs linguagens
especficas para este objetivo (JACKSON; SCHULTE, 2008): uma linguagem visual para descrever
os dados do sistema, uma linguagem visual para descrever as caractersticas dos tipos de
elementos distribudos, sua conectividade e quais dados os mesmos possuem, e uma linguagem
visual para descrever a semntica das operaes de manipulao dos dados. O aspecto mais
interessante desta especificao que os modelos de dados e operaes no precisam se
preocupar com a localizao dos dados e nem que tipo de elemento distribudo responsvel por
sua manuteno. A teoria diz que possvel gerar cdigo responsvel pela execuo distribuda
das operaes e verificao de integridade global do sistema, de acordo com regras especficas
definidas nos modelos.
Trata-se de um domnio predominantemente tcnico, envolvendo os aspectos de execuo
distribuda e computao em nuvem, mas com um componente de negcios, uma vez que as
regras de negcio podem ser definidas utilizando a linguagem de modelagem de operaes.
Neste estudo, realizado pelo autor da tese junto com um pesquisador da Microsoft Research,
foi utilizada a abordagem definida nesta tese, porm com menor foco na anlise, uma vez que j
existiam verses iniciais das linguagens especficas de domnio. Aps o estudo das tecnologias
de implementao envolvidas, estas verses iniciais das linguagens foram refinadas, e passou-se
para as fases de projeto e implementao do domnio, onde foram desenvolvidos, a partir do
zero:
A arquitetura para o domnio;
Uma implementao de referncia baseada em uma infra-estrutura responsvel por
algumas das funes bsicas de comunicao e distribuio; e
Um conjunto de transformaes e geradores que produzem uma aplicao completa no
topo da infra-estrutura.
O Quadro 11 resume alguns dados relevantes sobre este estudo.
9.2.3
Eventos cientficos
173
Domnio
Local
Participantes
Tempo total
Nmero de DSLs
Nmero de artefatos de gerao
(transformaes e geradores)
Tamanho total (LOC)
artefatos de gerao
Tamanho total (LOC)
implementao de referncia
Nmero de features
do domnio
Tecnologias de implementao
Tecnologias MDD
Quadro 11: Dados sobre o estudo envolvendo o domnio de aplicaes distribudas baseadas
em computao em nuvem
mala direta, gerenciamento de secretaria e gerenciamento de feiras. Trata-se de um domnio
de negcios, e a reutilizao envolve principalmente regras de negcio relacionadas ao
gerenciamento de eventos cientficos.
Este estudo foi feito em uma empresa situada em So Carlos que trabalha com uma linha de
produtos deste domnio, realizando desenvolvimento e customizao dos produtos do domnio,
muitas vezes vendendo os mesmos de forma integrada. O gerenciamento da variabilidade
nesta linha realizado com a ajuda de alguns componentes reutilizveis, mas principalmente
utilizando tcnicas de gerenciamento de configurao. Assim, cada sistema vendido produz
diferentes verses que implementam as diferentes variabilidades do domnio. A reutilizao
ocorre recuperando-se uma determinada verso que seja prxima dos requisitos do cliente, e
modificando-a para satisfazer aos requisitos.
Aps o contato inicial, foi estabelecido que o estudo seria realizado como um projeto
paralelo na empresa, por uma equipe composta de dois funcionrios com dedicao parcial,
com o auxlio e orientao do autor desta tese. Como neste estudo o autor no participaria do
desenvolvimento, foi necessrio um perodo de treinamento, realizado da seguinte forma:
Em um primeiro momento, um dos participantes do projeto realizou um curso de 20
horas sobre desenvolvimento orientado a modelos, oferecido no ICMC/USP So Carlos
e ministrado pelo autor desta tese2 ;
material deste curso encontra-se disponvel no endereo http://www.icmc.usp.br/~lucredio/
downloads/files/cursoMDD/
2O
174
Aps este perodo, o autor desta tese permaneceu disponvel para sanar dvidas e responder
questionamentos durante todo o projeto, uma vez que se tratam de conceitos novos para a
empresa e os participantes.
Aps o treinamento, a equipe utilizou a abordagem para realizar a anlise, projeto e
implementao do domnio. Uma vez que j existia a linha de produtos implantada na empresa,
o projeto arquitetural se resumiu principalmente organizao da infra-estrutura de gerao de
cdigo de forma integrada aos artefatos existentes na linha de produtos. E na implementao
do domnio, foi utilizado um produto concreto como implementao de referncia.
Como resultado, foram definidas duas linguagens especficas de domnio: uma linguagem
textual para a definio das features, e a sua configurao atravs de atributos especficos para
a linha de produtos, e uma linguagem textual para a definio de formatos de certificados,
um sub-domnio identificado pela equipe durante a anlise. Foram tambm construdos os
geradores responsveis por configurar novos produtos e produzir cdigo customizado.
O Quadro 12 resume alguns dados relevantes sobre este estudo.
Domnio
Local
Participantes
Tempo total
Nmero de DSLs
Nmero de artefatos de gerao
(transformaes e geradores)
Tamanho total (LOC)
artefatos de gerao
Tamanho total (LOC)
implementao de referncia
Nmero de features
do domnio
Tecnologias de implementao
Tecnologias MDD
Eventos cientficos
Aptor Consultoria e Desenvolvimento de Software Ltda.
2
2 meses (dedicao parcial)
2 (configurao e certificados)
8
1375
71873
29
Adobe DreamWeaver, PHP, MySQL
Eclipse (verso Ganymede)
EMF (Eclipse Modeling Framework)
JET (Java Emitter Templates)
175
9.3
A coleta das mtricas foi realizada com o auxlio de diferentes ferramentas. Para os projetos
baseados em cdigo Java, foram utilizadas as ferramentas Eclipse Metrics3 (Instabilidade
e Complexidade Ciclomtica) e JHawk4 (ndice de Manutenibilidade). Estas ferramentas
trabalham com cdigo-fonte em Java. Para arquivos JSP, foi utilizado o cdigo Java de seus
Servlets correspondentes. Os templates do JET so convertidos em Java, e portanto estas
ferramentas tambm puderam ser utilizadas.
Para cdigo C#, no foi encontrada nenhuma ferramenta disponvel capaz de calcular
estas mtricas. Porm, foi utilizada a ferramenta Net2Java5 , um plug-in do NetBeans capaz
de converter cdigo escrito em C# para Java. Como so linguagens bastante similares, a
converso realizada de forma quase direta. Alm disso, no foi necessrio executar o cdigo
convertido. As mtricas so estruturais, e se baseiam em dependncia entre classes, operadores,
operandos, estruturas de laos e condies, e outros elementos do cdigo que so comuns a
ambas linguagens. Assim, o nico trabalho foi corrigir alguns erros da converso, visando
deixar o cdigo Java compilvel, requisito das ferramentas Eclipse Metrics e JHawk, e estas
foram utilizadas para extrair as mtricas.
O cdigo PHP utilizado no terceiro estudo no orientado a objetos, e no foi encontrada
nenhuma ferramenta capaz de extrair estas mtricas para este tipo de cdigo, e nem ferramentas
automatizadas de converso. Uma vez que a quantidade de cdigo deste projeto muito
grande, a coleta manual das mtricas de Instabilidade, Complexidade Ciclomtica e ndice de
Manutenibilidade, que exigem uma inspeo detalhada do cdigo, no foi realizada no terceiro
estudo.
Para os demais artefatos, como metamodelos, modelos e geradores baseados em templates
interpretados, como os templates do openArchitectureWare, foi necessrio realizar o clculo
manual, como por exemplo a contagem de acoplamento aferente e eferente, anlise de grafos
dos programas e a contagem do nmero de atributos e relacionamentos em modelos. Como
o nmero e tamanho destes artefatos consideravelmente reduzido, este trabalho foi realizado
sem dificuldades.
As anlises qualitativas, atravs de entrevista, somente foram realizadas no terceiro estudo,
uma vez que nos dois primeiros estudos o autor da tese participou do desenvolvimento.
Aps a coleta dos dados, os mesmos foram analisados utilizando estatstica descritiva
3 http://metrics.sourceforge.net/
4 http://www.virtualmachinery.com/jhawkprod.htm
5 https://net2java.dev.java.net/
176
atravs de grficos do tipo box plot (FENTON; PFLEEGER, 1998), que permitem visualizar a
disperso e balanceamento das amostras. Box plots podem ser utilizados de diferentes formas
(WOHLIN et al., 2000). Nesta tese, foi utilizada a abordagem definida por Fenton e Pfleeger
(1998), que propem a utilizao do seguinte clculo para anlise das extremidades:
Lin f erior = q1 (q3 q1 ) 1.5
Lsuperior = q3 + (q3 q1 ) 1.5
onde q1 e q3 so o primeiro (25%) e terceiro (75%) quartis, respectivamente.
Dado um conjunto de dados seguindo uma distribuio normal, teoricamente no deveriam
ser encontrados elementos abaixo do limite inferior e acima do limite superior. Caso existam,
estes devem ser analisados e deve-se decidir se os mesmos sero includos ou excludos da
anlise. Por exemplo, quando o elemento fora dos limites se tratar de cdigo-fonte, deve-se
analisar se o mesmo segue os mesmos padres e formatos utilizados na maioria do cdigo. Se
este elemento possuir muitas linhas de comentrio ou se for um cdigo reutilizado de outro
projeto sem uma reformatao, ele pode no representar a realidade do cdigo produzido, e
deve ser excludo da anlise. Por outro lado, podem existir elementos de cdigo extremamente
complexos ou extremamente simples, devido prpria natureza do prprio domnio. Nestes
casos, o elemento deve ser mantido.
Para cada estudo, foram analisados somente os artefatos efetivamente utilizados pelo
desenvolvedor. Ou seja, artefatos de cdigo completamente gerados e que no precisam ser
modificados ou manipulados pelo desenvolvedor no foram includos nas mtricas. Porm, em
alguns grficos, o cdigo gerado foi tambm analisado para propiciar melhor caracterizao da
reutilizao que est ocorrendo.
A seguir so apresentados os resultados para cada estudo, de forma individual, junto com
uma discusso geral sobre os resultados.
9.4
9.4.1
Resultados e discusso
Autoria de contedo para a Web
A Figura 25 mostra os valores das mtricas de reutilizao de software obtidas dos artefatos
produzidos com e sem a abordagem. Nota-se um aumento significativo tanto na porcentagem
de reutilizao como na razo de reutilizao.
177
Figura 25: Comparao entre as mtricas de reutilizao para o estudo do domnio de autoria
de contedo para a web
Analisando-se os dados, verificou-se que a porcentagem de reutilizao obtida
exclusivamente com gerao de cdigo foi de 47,03%, ou seja, quase metade do cdigo
reutilizado provm de um gerador. Foi verificada uma razo entre especificao e cdigo de
1:16,34, ou seja, para cada elemento de especificao so geradas, em mdia, pouco mais de 16
linhas de cdigo.
A Figura 26 mostra os valores das mtricas indiretas de reusabilidade: instabilidade,
complexidade e manutenibilidade obtidas dos artefatos produzidos com e sem a abordagem.
Pode-se verificar que no houve alterao significativa nas distribuies da mtrica de
instabilidade. A complexidade, por sua vez, aumentou de forma perceptvel, com muitos
artefatos desenvolvidos com a abordagem sendo mais complexos do que o mximo obtido sem
a abordagem. Os ndices de manutenibilidade tambm sofreram uma reduo com o uso da
abordagem.
A Figura 27 analisa de forma mais aprofundada as medidas de instabilidade obtidas com a
abordagem6 . Pode-se notar que o cdigo gerado mais instvel do que o cdigo no-gerado, em
alguns casos chegando ao limite mximo desta mtrica (1). Os artefatos de gerao de cdigo
(transformaes e geradores) apresentam uma distribuio intermediria s dos cdigos gerado
e no gerado, porm de forma mais concentrada em torno do valor central da mtrica (0,5).
Os modelos utilizados na abordagem tiveram sua instabilidade abaixo de 0,5, sendo em geral
menos instveis do que os demais artefatos.
6 Observao:
neste grfico, o cdigo gerado foi includo, apesar se ser um artefato no utilizado diretamente
pelo desenvolvedor. Isto foi feito para ajudar na caracterizao da reutilizao apenas. O mesmo acontece em
outros grficos deste captulo.
178
Figura 26: Comparao entre as mtricas indiretas de reusabilidade para o estudo do domnio
de autoria de contedo para a web
Figura 27: Distribuies de instabilidade de mdulo nos diferentes tipos de artefatos produzidos
com a abordagem, no estudo de caso do domnio de autoria de contedo para web
179
180
181
9.4.2
A Figura 31 mostra os valores das mtricas de reutilizao de software obtidas dos artefatos
produzidos com e sem a abordagem.
A exemplo do domnio web, porm em menor grau, observa-se um aumento significativo
na porcentagem de reutilizao e na razo de reutilizao. Nota-se tambm que a porcentagem
de reutilizao no desejada caiu alguns pontos percentuais quando a abordagem foi utilizada.
A porcentagem de reutilizao obtida com gerao de cdigo neste estudo foi similar ao
estudo anterior, atingindo 42,71%. A razo entre especificao e cdigo foi um pouco maior,
atingindo 1:26,35, ou seja, os geradores deste estudo produzem mais cdigo para cada elemento
de especificao do que os do estudo anterior.
A Figura 32 mostra os valores das mtricas indiretas de reusabilidade: instabilidade,
complexidade e manutenibilidade obtidas dos artefatos produzidos com e sem a abordagem.
Pode-se verificar que no houve alterao significativa nas distribuies das mtricas de
182
Figura 31: Comparao entre as mtricas de reutilizao para o estudo do domnio de aplicaes
distribudas baseadas em computao em nuvem
instabilidade e ndice de manutenibilidade. A complexidade, por sua vez, apresentou uma
discreta reduo.
Figura 32: Comparao entre as mtricas indiretas de reusabilidade para o estudo do domnio
de aplicaes distribudas baseadas em computao em nuvem
A Figura 33 analisa de forma mais aprofundada as medidas de instabilidade obtidas com
a abordagem. Pode-se notar que o cdigo gerado similar, na mdia, ao cdigo no gerado.
Porm a distribuio referente ao cdigo gerado est mais concentrada ao redor do valor mdio
desta mtrica (0,5). Os artefatos de gerao, por sua vez, esto concentrados em um ponto que
representa baixa instabilidade. Com relao aos modelos, neste caso somente um modelo foi
utilizado, e portanto a mtrica de instabilidade permaneceu no valor intermedirio (0,5).
A Figura 34 analisa de forma mais aprofundada as medidas de complexidade ciclomtica
183
Figura 33: Distribuies de instabilidade de mdulo nos diferentes tipos de artefatos produzidos
com a abordagem, no domnio de aplicaes distribudas baseadas em computao em nuvem
obtidas com a abordagem. Pode-se notar que o cdigo gerado apresenta maior complexidade
em relao ao cdigo no gerado. Os artefatos de gerao so ligeiramente mais complexos
do que o cdigo no gerado, e os modelos apresentam complexidade baixa. Com exceo do
cdigo gerado, todos os artefatos permaneceram dentro do limite que indica simplicidade (10).
184
Figura 36: Distribuies de nmeros de atributos e relacionamentos nos modelos utilizados com
a abordagem, no domnio de aplicaes distribudas baseadas em computao em nuvem
Discusso
Neste domnio, a exemplo do domnio Web mas de forma menos acentuada, tambm foram
observados aumentos no nvel e na razo de reutilizao de linhas de cdigo, e uma baixa taxa
de reutilizao no desejada. Os mesmos motivos discutidos no estudo do domnio Web se
aplicam a este caso, sendo observados diversos artefatos com alto grau de similaridade. Esta
parece ser uma tendncia de domnios tcnicos, onde a tnica est em resolver problemas de
mais baixo nvel de forma repetida e constante, como a persistncia e navegao, no caso do
domnio Web, e distribuio, no caso deste domnio. Neste caso, inclusive, foi observada uma
razo ainda maior entre especificao e cdigo (1:26,35), o que indica que os geradores esto
sendo mais produtivos.
Porm, enquanto no estudo anterior os artefatos de gerao de cdigo e os modelos so
mais complexos do que o cdigo, aqui foi observado o efeito inverso. O cdigo, tanto o
gerado como o no gerado, mais instvel, complexo e difcil de manter do que os artefatos de
185
gerao. Isto se explica pela complexidade natural do domnio, uma vez que a computao em
nuvem traz muitos desafios no triviais, como o clculo distribudo de invariantes do sistema,
determinao de cliques maximais, descoberta dinmica de servios e execuo distribuda
(LUCRDIO; JACKSON; SCHULTE, 2008). Detalhes sobre estes assuntos ficam encapsulados no
somente em componentes, mas tambm nos geradores, de forma que um desenvolvedor pode
produzir aplicaes complexas mesmo sem conhecer a fundo todas as tecnologias envolvidas.
Em outras palavras, em contraste com o estudo anterior, neste domnio mais fcil e simples
especificar do que codificar.
Assim, o que se observou neste estudo foi, alm do aumento na reutilizao, um aumento
na reusabilidade dos artefatos do domnio, percebido de forma indireta com a reduo da
instabilidade, complexidade e dificuldade de manuteno.
Assim, enquanto no estudo anterior verificou-se que o uso da abordagem pode trazer
benefcios em termos de volume de reutilizao, aqui observa-se que a abordagem pode
simplificar o desenvolvimento, abstraindo detalhes e complexidades inerentes a este domnio
complexo.
9.4.3
Eventos cientficos
A Figura 37 ilustra uma comparao entre os nveis de reutilizao obtidos com e sem
a abordagem, para o estudo envolvendo o domnio de eventos cientficos.
Nota-se que,
ao contrrio dos estudos anteriores, com a abordagem tem-se menores taxas e razes de
reutilizao. Porm, a taxa de reutilizao no desejada foi reduzida para menos da metade.
Alm disso, neste domnio nota-se uma maior diferena entre a porcentagem de reutilizao e
a razo de reutilizao, do que nos domnios anteriores. Isto porque h um grande nmero de
artefatos que so reutilizados e modificados minimamente (reutilizao do tipo caixa-branca),
como resultado do processo de customizao.
A porcentagem de reutilizao obtida com gerao de cdigo neste estudo foi bastante
reduzida, sendo medida como 3,99%. A razo entre especificao e cdigo tambm foi
significativamente menor, atingindo 1:8,14, ou seja, os geradores deste estudo produzem menos
cdigo para cada elemento de especificao do que os dos estudos anteriores.
Conforme discutido anteriormente, neste estudo no foram coletadas mtricas para os
artefatos de cdigo, por motivos de falta de ferramentas adequadas. Porm, foram analisados
os atributos dos artefatos de gerao, para efeitos de comparao com os outros estudos. Esta
comparao apresentada na Figura 38. Pode-se notar que, em termos de instabilidade, os
186
Figura 37: Comparao entre as mtricas de reutilizao para o estudo do domnio de eventos
cientficos
artefatos deste estudo esto mais prximos aos do estudo envolvendo o domnio Web, porm
ligeiramente menos instveis. Em termos de complexidade ciclomtica, a distribuio ficou
mais concentrada e ligeiramente superior que os outros estudos. E o ndice de manutenibilidade
se mostrou notavelmente inferior aos outros estudos.
Figura 38: Comparao entre as mtricas de reusabilidade dos estudos dos domnios de eventos
cientficos (EC), Web e Computao em Nuvem (CN)
Foram utilizados somente dois modelos baseados em XML, e estes apresentaram uma
mdia de 36,33 atributos e nenhum relacionamento.
Com relao aos dados qualitativos, foram coletadas algumas impresses passadas pela
187
equipe aps a execuo do estudo. Entre as impresses obtidas com a entrevista7 , destacam-se:
Discusso
Neste estudo, ao contrrio dos dois anteriores, ocorreu uma reduo da porcentagem
e da razo de reutilizao, quando a abordagem foi utilizada. Porm, conforme discutido
anteriormente, a mtrica de reutilizao em termos de LOC no pode ser lida literalmente, de
forma isolada, pois pode ser distorcida por alguns fatores. Conforme a prpria equipe relatou
em entrevista, h muitos artefatos que so reutilizados desnecessariamente. Alm de causar
7O
188
189
Neste estudo, o modelo serve de entrada para configuraes em seis tabelas diferentes do banco,
e quatro arquivos de configurao, que antes precisavam ser feitas individualmente. Alm disso,
os geradores so mais confiveis nesta tarefa, reduzindo a necessidade de testes mais exaustivos.
As mtricas de nmero de atributos e relacionamentos para os modelos utilizados neste
estudo mostram que existem muitos atributos (mdia de 36,33) e nenhum relacionamento, o
que indica que se tratam de modelos que servem basicamente de configurao apenas.
9.5
Os dados e resultados obtidos com os estudos possuem indcios sobre a rejeio de algumas
das hipteses nulas. Esta rejeio feita com base em anlise descritiva apenas, no sendo
embasada por dados estatsticos rigorosos.
Com relao hiptese H0a , conclui-se que a mesma rejeitada, pois nos trs estudos
foram verificados aumento e/ou melhoria na reutilizao de software nos projetos utilizando a
abordagem, contrariando a premissa original.
Com relao hiptese H0b , no foi possvel alcanar a rejeio, uma vez que os resultados
indicaram que a reusabilidade dos artefatos pode ser maior ou menor utilizando-se a abordagem.
Com relao s hipteses H0c e H0d , os dados obtidos possuem indcios que apiam a
rejeio, uma vez que os sujeitos dos estudos perceberam benefcios com a abordagem, e no
tiveram dificuldades significativas no aprendizado.
Mesmo para as hipteses nulas com indcios de rejeio, no se pode afirmar que as
hipteses alternativas apresentadas na Seo 9.1.2 so verdadeiras. Ou seja, a abordagem
aparentemente favorece a reutilizao, mas pode ser que existam projetos onde ela no
acrescente benefcios ou mesmo cause dificuldades significativas de aprendizado e utilizao.
O que parece ser uma concluso mais razovel que a abordagem pode aumentar
a quantidade, em termos de LOC. Mas ela no aumenta, de forma absoluta, os valores
das mtricas de complexidade e dificuldade de manuteno, conforme percebido no estudo
do domnio Web.
de computao em nuvem.
190
191
sendo embasada por evidncias mais slidas. Estudos mais rigorosos podem e devem ser
realizados para complementar estes resultados e o conhecimento adquiridos nesta tese, para
que generalizaes estatisticamente comprovadas possam ser formuladas.
9.6
Ameaas validade
192
sofrido influncia pelo fato de que a abordagem foi utilizada aps o desenvolvimento de uma
implementao de exemplo. Nos dois primeiros estudos, essa implementao consistiu de
prottipos executveis desenvolvidos para praticar o desenvolvimento no domnio, e no terceiro
estudo, consistiu de um produto real existente na empresa. Com isso, o desenvolvimento com
a abordagem pode ter se beneficiado de uma maior experincia no domnio. Porm, a prpria
abordagem utiliza uma estratgia de desenvolvimento atravs de exemplos para proporcionar
justamente este ganho de experincia antes da implementao efetiva dos artefatos do MDD,
e portanto este efeito parcialmente o que seria obtido com a abordagem de qualquer forma.
Mas uma avaliao mais justa deveria envolver equipes diferentes partindo de um mesmo nvel
de conhecimento sobre o domnio. Isto no foi possvel realizar pela dificuldade em encontrar
participantes para estes estudos.
Finalmente, destacam-se as ameaas s validades interna, externa e de construo
(WOHLIN et al., 2000). Os estudos foram planejados, definidos e executados de forma mais
exploratria, sem a definio de variveis dependentes e independentes voltadas a uma anlise
de correlao mais rgida. Isto prejudica a sua capacidade de replicao, tanto no mesmo
grupo como em grupos de pesquisa externos. Assim, necessrio um maior detalhamento das
variveis e aspectos envolvidos para transformar estes estudos em um experimento de carter
exclusivamente cientfico.
9.7
Consideraes finais
Neste captulo foi apresentada uma avaliao realizada para verificar a validade da tese
sendo defendida nesta dissertao. Foram realizados trs estudos empricos, um em ambiente
acadmico e dois em ambiente industrial, visando caracterizar os efeitos da utilizao da
abordagem na reutilizao de software. Com exceo das ameaas validade citadas na
seo anterior, os estudos contm resultados e indcios que permitiram a anlise de algumas
concluses relevantes ao contexto desta tese.
A avaliao permitiu determinar os principais benefcios, mas tambm algumas falhas da
abordagem, como por exemplo o fato de que os participantes do terceiro estudo no perceberam
utilidade na identificao de cenrios para descrever as variabilidades nos comportamentos do
domnio, alegando ser esta uma tarefa desnecessria. Esta limitao indica que talvez seja
preciso uma reestruturao da abordagem, visando aumentar sua agilidade, ou mesmo um
melhor treinamento visando reforar a importncia desta atividade. A escolha de qual direo
a ser tomada depende de uma anlise mais aprofundada do problema.
193
195
10 Trabalhos relacionados
10.1
196
197
genricas, mas sim especficas para cada caso, podendo ser adaptadas facilmente e reutilizadas.
Finalmente, os autores ressaltam a necessidade de se utilizar linguagens visuais para a
construo das transformaes, uma vez que o uso de linguagens textuais, tais como linguagens
de programao e linguagens de transformao baseadas em XML, possuem uma distncia
conceitual em relao aos modelos, dificultando a tarefa de construo de transformadores.
As transformaes representadas na linguagem Kafka so baseadas em regras de mapeamento,
facilitando a chamada engenharia ida e volta, ou seja, modelo para cdigo e cdigo para
modelo.
Outros exemplos de trabalhos baseados no MDD incluem os trabalhos de Yuefeng Zhang,
que investiga o teste baseado em modelos (ZHANG, 2004), e um mtodo para auxiliar no controle
do processo de desenvolvimento orientado a modelos (ZHANG; SHETH, 2006).
Com relao rea de reutilizao de software, foco deste trabalho, existem poucas
referncias. Dois trabalhos acadmicos podem ser citados:
Em (FRANCE; GHOSH; TURK, 2001), os autores propem uma abordagem de reutilizao
baseada em modelos. Nessa abordagem, que apoiada por um framework, uma organizao
pode encapsular seu conhecimento em linguagens de modelagem especficas de domnio,
medida que vai adquirindo experincia sobre ele, de forma similar abordagem Draco (Seo
10.1). Porm, os autores no apresentam muitos detalhes de como isto ser feito.
Em (CZARNECKI et al., 2005), os autores discutem a combinao das idias de linhas de
produto (Seo 2.1.2) e desenvolvimento orientado a modelos, ressaltando que essas duas
linhas so complementares. Neste sentido, os autores propem a combinao da modelagem
de caractersticas, ou features, com o uso de templates de caractersticas, responsveis pelo
mapeamento automtico das caractersticas para modelos que as implementam, com base em
transformaes de modelos. Esse trabalho, apesar de interessante, foca apenas na modelagem
de caractersticas e sua representao em modelos, deixando de lado outras etapas do processo.
Em resumo, a academia tem apresentado grande preocupao com essa rea, como pode
ser constatado principalmente pela iniciativa europia com o projeto ModelWare.
10.2
Nesta seo so discutidos trabalhos que possuem algum ponto de interseo com pontos
isolados da abordagem pesquisada nesta tese. A seo est dividida de acordo com a fase com
a qual os trabalhos se relacionam: anlise, projeto e implementao.
198
10.2.1
H diversos trabalhos com atividades similares s aqui definidas para a anlise de domnio,
como (FRAKES; PRIETO-DAZ; FOX, 1998; BAYER; MUTHIG; WIDEN, 1999; KIM; YANG; PARK,
2003; MEI; ZHANG; GU, 2003; MOON; YEOM, 2005). Por exemplo, o trabalho de deBaud
e Schmid (1999) similar definio de escopo presente na atividade de planejamento da
abordagem desta tese. A principal diferena que nenhum destes trabalhos possui preocupao
com a preparao de um domnio para o desenvolvimento orientado a modelos, como por
exemplo o problema da determinao dos sub-domnios a serem automatizados.
Knodel et al. (2005) apresentam uma abordagem para a utilizao de desenvolvimento
orientado a modelos em linhas de produtos de software, chamada Pulse-MDD. Esta abordagem
possui muitas similaridades com a abordagem desta tese, tambm sendo iterativa, mas
especialmente com relao ao fato de que o desenvolvimento de transformaes e ferramentas
de modelagem altamente ligado arquitetura da linha de produto, e no em conceitos gerais
das tecnologias de implementao. Os resultados so portanto mais prximos s necessidades
organizacionais. Porm, no Pulse-MDD esta preocupao comea somente na fase de projeto,
enquanto nesta abordagem argumenta-se que a mesma deve comear antes, durante a anlise,
uma vez que os modelos de features possuem papel importante nesta definio, e normalmente
precisam ser adaptados para refletir a existncia dos artefatos MDD.
Czarnecki et al. (2005) descrevem duas tcnicas para dar suporte a linhas de produtos
orientadas a modelos: modelagem de features e templates, para representar a variabilidade
e comunalidade do domnio. Estas tcnicas so as mesmas utilizadas nesta tese. Porm, os
autores no descrevem mais detalhes sobre as atividades que levam das features ao templates,
como por exemplo os padres descritos nesta tese.
Deelstra et al. (2003) descrevem uma abordagem para o desenvolvimento de linhas de
produtos orientadas a modelos. Os autores argumentam que o MDD pode levar a vrios
benefcios, e apresentam como o mesmo pode ser utilizado para representao da variabilidade e
derivao automtica de produtos. O suporte variabilidade com o MDD atravs de modelos
do domnio, a exemplo da abordagem desta tese. Porm, os autores passam diretamente da
representao da variabilidade derivao de produtos, sem entrar em detalhes sobre, por
exemplo, a construo de uma arquitetura adequada para este cenrio.
199
10.2.2
A maioria das abordagens que combina o MDD com engenharia de domnio (ou linhas
de produtos de software) tem foco maior no estgio de derivao automtica de produtos,
dando pouca ou nenhuma nfase ao projeto do domnio de acordo com os princpios do
MDD. Exemplos destas abordagens incluem (WEISS et al., 2008; VLTER; GROHER, 2007;
BOTTERWECK; OBRIEN; THIEL, 2007; ARBOLEDA; CASALLAS; ROYER, 2007; TRASK et al., 2006;
TOLVANEN; KELLY,
200
10.2.3
Vlter e Groher (2007) descrevem um conjunto de tcnicas para combinar MDD e linhas
de produtos de software. Suas idias sobre a combinao de tcnicas esto de acordo com a
filosofia da abordagem desta tese, tais como o suporte aos dois tipos principais de variabilidade:
baseada em features (configurao) e DSLs (construo criativa). Adicionalmente, os autores
utilizam tcnicas orientadas a aspectos para facilitar a modelagem e implementao das
variabilidades ortogonais, o que no tratado nesta tese. A principal diferena desta tese em
relao ao trabalho de Voelter e Groher que aqui proposta uma abordagem sistemtica, com
atividades e diretrizes concretas para desenvolver a infra-estrutura de reutilizao orientada a
modelos para o domnio. Alm disto, a abordagem desta tese tambm identifica a necessidade
do suporte simultneo a mltiplos sub-domnios, o que no mencionado por Voelter e Groher.
Robbes e Lanza (2008) descrevem um sistema de suporte transformao de programas
baseada em exemplos.
201
esta tese foca na engenharia de domnio, com o objetivo de produzir transformaes projetadas
especificamente para dar suporte variabilidade no domnio.
Varr (2006) tambm prope o desenvolvimento de transformaes orientada a exemplos,
porm com foco em transformaes de modelos. Um processo iterativo e interativo utiliza
derivao semi-automtica das transformaes, a partir de pares de modelos origem e destino.
O desenvolvedor da transformao refina um conjunto de regras inicialmente derivadas at que
as mesmas cheguem a um ponto satisfatrio. Diferentemente do trabalho de Robbes e Lanza
(2008) e da abordagem desta tese, o processo de Varr no depende do registro das modificaes
que levam da origem ao destino. Ao invs disso, o processo tenta estabelecer mapeamentos
analisando exemplos de modelo origem e destino.
A abordagem desta tese (assim como a de Robbes e Lanza (2008)) mais voltada para
os estgios iniciais do desenvolvimento, uma vez que tenta capturar o esforo manual para
transformar modelos ou programas, medida que os exemplos de destino so construdos,
de forma incremental e gradual. Em contraste, o trabalho de Varr comea somente aps
exemplos de modelos de origem e destino j existirem, sendo portanto mais apropriado para
estgios posteriores, quando o desenvolvedor j possui uma idia concreta de como o destino
da transformao deve ser.
Bierhoff, Liongosari e Swaminathan (2006) utilizam exemplos no somente para derivar
as transformaes, mas tambm as DSLs. Os autores propem uma abordagem incremental:
comeando com uma aplicao, constri-se uma DSL para ela, contendo os elementos e
conceitos da aplicao, e os parmetros necessrios para configur-la. Em seguida, novas
aplicaes so adicionadas incrementalmente, e suas diferenas introduzem novas variaes
na DSL, aumentando sua generalidade. Porm, os autores destacam que esta abordagem
puramente bottom-up precisa ser orientada por decises de projeto tomadas cuidadosamente
de antemo, caso contrrio corre-se o risco de se produzir DSLs extremamente complexas e
difceis de se manter. Este exatamente o caminho tomado pela abordagem desta tese, que
busca mesclar uma etapa top-down para preparar o domnio para automao, com uma etapa
bottom-up que introduz detalhes e refinamentos necessrios para o funcionamento prtico das
DSLs e das transformaes.
Santos, Koskimies e Lopes (2008) propem a extenso de frameworks com uma camada
adicional baseada em programao orientada a aspectos que codifica uma DSL, buscando
alavancar a reutilizao de software atravs de tcnicas generativas. Um modelo conceitual
de um framework manualmente extrado pelo desenvolvedor, que descreve seus elementos e
conceitos em termos de um metamodelo especfico. Este modelo ento utilizado em conjunto
202
com um framework de linguagem para produzir ferramentas concretas para a nova linguagem.
Utilizando estas ferramentas, o desenvolvedor de aplicaes pode especificar uma aplicao e
gerar cdigo em termos dos elementos do framework. O trabalho de Muszynski (2005) tambm
prope a derivao de uma DSL a partir de uma implementao de referncia, tornando a DSL
extrada o ponto central para especificao de produtos e gerao de cdigo.
Estes trabalhos so similares abordagem desta tese, pois utilizam uma DSL, geradores
e um processo bottom-up para derivar os mapeamentos entre a linguagem e a implementao
de referncia (ou framework). Eles tambm possuem um elemento top-down implcito, que
corresponde ao processo de desenvolvimento da implementao de referncia ou do framework,
o que envolve tarefas como gerenciamento de variabilidade na engenharia de domnio. A
principal diferena que na abordagem desta tese o elemento top-down explcito e focado
no problema da reutilizao, indo mais alm no processo, at o desenvolvimento de uma
primeira verso da DSL de forma exclusivamente top-down. O resultado que nesta tese
as DSLs so mais prximas do domnio do problema, permitindo tarefas mais criativas,
facilitando o desenvolvimento de aplicaes e oferecendo mais flexibilidade ao desenvolvedor.
Em contrapartida, o desenvolvimento de geradores mais complexo devido a esta maior
proximidade com o domnio do problema.
As extenses ao modelo de features descritas por Czarnecki, Helsen e Eisenecker (2004b),
com cardinalidades de features e atributos, entre outras (Seo 3.1.1), permitem a especificao
de variabilidades mais complexas, de forma similar variabilidade baseada em DSLs descrita
na abordagem desta tese. Atravs destas extenses possvel representar praticamente o mesmo
tipo de variabilidade que possvel representar utilizando-se, por exemplo, um metamodelo. A
principal diferena que com uma DSL tem-se um poder expressivo mais focado no problema,
sendo portanto uma soluo mais intuitiva, podendo inclusive ser utilizada e compreendida por
especialistas. Mas nada impede que um modelo estendido de features seja convertido em um
metamodelo, dando origem a uma DSL.
Mas alm disso, a abordagem desta tese tem outras contribuies, como um conjunto
de diretrizes e regras para ajudar no processo de identificao destas variabilidades, no
desenvolvimento das sintaxes abstrata e concreta. Alm disso, nesta tese o metamodelo
complementado com informaes originadas em uma implementao concreta, o que facilita
a identificao de variabilidades mais detalhadas e a construo de transformaes e geradores
de cdigo mais precisos no suporte variabilidade.
203
10.3
204
205
para uma classe (RFC - Response For a Class); e falta de coeso em mtodos (LCOM Lack of Cohesion in Methods). Estas mtricas focam em diferentes aspectos de um projeto,
tais como complexidade, dificuldade de desenvolvimento e manuteno. Os autores tambm
destacam o papel do acoplamento na reutilizao. Quanto menor o acoplamento, mais fcil ser
a reutilizao de uma determinada classe. Outras mtricas clssicas para projetos orientados
a objetos incluem a estabilidade (MARTIN, 1994), manutenibilidade (VANDOREN, 1997) e
complexidade (MCCABE, 1976).
Algumas destas mtricas foram utilizadas nos estudos de caso, nas partes do domnio onde
no houve aplicao do MDD e para comparao com o software construdo manualmente,
conforme descrito no Captulo 9.
Muskens, Chaudron e Lange (2004) propem a coleta de mtricas clssicas da orientao
a objetos diretamente em modelos UML, ou seja, antes que exista cdigo-fonte. Os resultados
mostraram que possvel detectar os mesmos problemas utilizando esta abordagem, porm no
incio do desenvolvimento. Portanto, aes corretivas so menos dispendiosas, uma vez que
no exigem a modificao extensa do cdigo. Os autores tambm propem mtricas adicionais
baseadas em modelos arquiteturais descritos segundo a viso 4 + 1 (KRUCHTEN, 1995). O
argumento que as mtricas clssicas, mesmo sendo coletadas a partir dos modelos UML, no
consideram as interaes entre as diferentes vises, como por exemplo a referncia a classes
e mtodos a partir de um diagrama de seqncia. Porm, a validade destas mtricas no
apresentada neste trabalho. Nesta tese, no foi possvel aplicar estas mtricas, uma vez que as
mesmas esto fixadas na UML e na viso 4 + 1, no sendo adequadas para DSLs.
Lange e Chaudron (2004) apresentam algumas regras e mtricas para avaliao de modelos
UML, considerando a sua completude e consistncia. Exemplos destas regras incluem: objetos
sem nome, classes sem mtodos, interfaces sem mtodos, classes abstratas em diagramas de
seqncia, classes no chamadas em diagramas de seqncia, mensagens entre classes no
relacionadas, entre outras que ajudam na avaliao e garantia da qualidade de modelos UML.
Para esta tese estas mtricas no so teis, uma vez que no podem ser usadas para comparao
dos nveis de reutilizao com e sem a aplicao de MDD conforme proposto na abordagem.
Em outro artigo, Lange e Chaudron (2005) apresentam um modelo de qualidade para
desenvolvimento de software baseado em UML. Alm dos atributos de qualidade a serem
avaliados, como complexidade, rastreabilidade, modularidade, comunicabilidade e esttica,
entre outros, os autores apresentam uma lista sobre quais mtricas podem ser utilizadas para
avaliar estes atributos. Por exemplo, para avaliar a complexidade, os autores citam as mtricas
de profundidade da rvore de herana (DIT), coeso, nmero de casos de uso por classe e
206
nmero de classes por caso de uso. Nesta tese no foi feita avaliao de qualidade do software
baseado em UML, porm algumas das mtricas foram utilizadas nos estudos de caso, com o
objetivo de avaliar os benefcios da abordagem proposta.
A iniciativa Modelware tambm investigou mtricas para o desenvolvimento orientado a
modelos (MODELWARE, 2006a). Foram definidas mtricas para diversos aspectos de engenharia,
incluindo mtricas de qualidade do produto, incluindo qualidade dos modelos e demais
artefatos, mtricas de processo, incluindo transformaes e geradores de cdigo, e mtricas
de projeto, teis para estimativas e outras tarefas de gerenciamento. interessante notar que
as mtricas sugeridas para a qualidade da arquitetura so as mesmas da orientao a objetos
descritas por Chidamber e Kemerer (1994): WMC, RFC, LCOM, CBO, entre outras. A exemplo
do trabalho de Muskens, Chaudron e Lange (2004), estas levam identificao dos mesmos
problemas do que quando coletadas diretamente do cdigo-fonte, com a diferena de que isto
ocorre durante o projeto.
Mascena, Almeida e Meira (2005) e Mascena (2007) apresentam uma anlise sobre
mtricas relacionadas reutilizao de software, incluindo trs categorias: mtricas orientadas
a fatores econmicos, estruturais e de repositrio. Entre estas, as mtricas estruturais so a base
para analisar de forma mais aprofundada o que est sendo reutilizado. So elas: porcentagem
de reutilizao (RP - Reuse Percent) (POULIN; CARUSO, 1993); nvel de reutilizao (RL Reuse Level) (FRAKES; TERRY, 1994); freqncia de reutilizao (RF - Reuse Frequency)
(FRAKES; TERRY, 1994); tamanho e freqncia de reutilizao (RSF - Reuse Size and Frequency)
(DEVANBU et al., 1996); razo de reutilizao (RR - Reuse Ratio) (DEVANBU et al., 1996); e
densidade de reutilizao (RD - Reuse Density) (CURRY et al., 1999). Estas so mtricas simples,
porm no podem ser consideradas como indicadores isolados, uma vez que possuem problemas
por no considerar a natureza dos artefatos reutilizveis e nem a maneira com que estes so
reutilizados, penalizando, por exemplo, grandes sistemas e sistemas pouco modularizados
(monolticos). Por este motivo, existe outra vertente que defende a idia de que melhor
tentar medir a reutilizao atravs da avaliao de atributos de qualidade que medem o quo
reutilizvel um determinado artefato de software. Neste sentido, so sugeridas mtricas
indiretas, como manutenibilidade e complexidade (POULIN, 1994). Estas j foram utilizadas
com sucesso em outros estudos relacionados reutilizao de software, como por exemplo
o trabalho de Almeida et al. (2007a). Nesta tese, foram utilizadas algumas das mtricas de
reutilizao, alm das mtricas indiretas, na avaliao dos estudos de caso.
207
10.4
Consideraes finais
209
11 Concluses
11.1
Principais contribuies
relacionadas, foi definida uma abordagem orientada a modelos para reutilizao de software,
visando guiar o engenheiro de software desde as atividades iniciais de anlise at a
implementao de artefatos reutilizveis de um domnio, utilizando o desenvolvimento
orientado a modelos para elevar e melhorar a reutilizao.
210
Uma abordagem sistemtica e bem definida, contendo atividades, entradas e sadas que
detalham as tarefas necessrias para que a engenharia de domnio possa integrar de forma
concreta as tcnicas do desenvolvimento orientado a modelos;
Definio de um mtodo concreto para identificao de mltiplos sub-domnios,
incluindo diretrizes de apoio e um processo investigativo, interativo e iterativo, adequado
natureza incerta e evolutiva desta rea;
Realizao de estudos empricos com resultados relevantes.
A literatura apresenta
211
11.2
1. Lucrdio, D.; Fortes, R.P.M.; Alvaro, A.; Almeida, E.S.; Meira, S.R.L. Towards a
Model-Driven Reuse Process, In: 31st IEEE EUROMICRO Conference on Software
Engineering and Advanced Applications (SEAA), Work in Progress Session, Porto,
Portugal, 2005.
2. Almeida, E.S.; Alvaro, A.; Lucrdio, D.; Garcia, V.C.; Meira, S.R.L. A Survey on
Software Reuse Processes, In: the IEEE International Conference on Information Reuse
and Integration (IRI), Las Vegas, Nevada, USA, 2005.
3. Almeida, E.S.; Mascena, J.C.C.P.; Cavalcanti, A.P.C.; Alvaro, A.; Garcia, V.C.; Lucrdio,
D.; Meira, S.R.L. The Domain Analysis Concept Revisited: A Practical Approach, In:
The 9th International Conference on Software Reuse (ICSR), Lecture Notes in Computer
Science, Springer-Verlag, Torino, Italy, 2006.
4. Brito, K. S.; Alvaro, A.; Lucrdio, D.; Almeida, E.S.; Meira, S.R.L. Software Reuse:
A Brief Overview of the Brazilian Industrys Case, In: 5th ACM-IEEE International
Symposium on Empirical Software Engineering (ISESE), Short Paper, Rio de Janeiro,
Brazil, 2006
5. Lucrdio, D.; Fortes, R.P.M; Almeida, E.S.; Meira, S.R.L. The Draco Approach
Revisited:
In:
212
8. Almeida, E.S.; Alvaro, A.; Garcia, V.C.; Nascimento, L.M.; Lucrdio, D.; Meira, S.R. A
Systematic Approach to Design Domain-Specific Software Architectures, Journal of
Software, Vol 2, No. 2, pp. 38-51, August, 2007.
9. Almeida, E.S.; Santos, E.C.R.; Alvaro, A.; Garcia, V.C.; Lucrdio, D.; Fortes, R.P.M.;
Meira, S.R.L. Domain Implementation in Software Product Lines Using OSGi, In:
7th IEEE International Conference on Composition-Based Software Systems (ICCBSS)
February, 25-29, Madrid, Spain, 2008
10. Almeida, E.S.; Alvaro, A.; Garcia, V.C.; Lucrdio, D.; Fortes, R.P.M.; Meira, S.R.L. A
Systematic Process for Domain Engineering, In: The 20th Internatioal Conference on
Software Engineering and Knowledge Engineering (SEKE), San Francisco, EUA, 2008.
11. Lucrdio, D; Jackson, E.K.; Schulte, W. Playing with Fire: Harnessing the Hottest
Technologies for Ultra-Large-Scale Systems, In: Monterey Workshop, Budapest,
September 2008.
12. Lucrdio, D; Fortes, R.P.M.; Almeida, E.S.; Meira, S.R.L. Performing Domain Analysis
for Model-Driven Software Reuse, In: The 10th International Conference on Software
Reuse (ICSR), Lecture Notes in Computer Science, Springer-Verlag, Beijing, China,
2008.
13. Lucrdio, D.; Brito, K.S. ; Alvaro, A. ; Garcia, V.C. ; Almeida, E.S. ; Fortes, R.P.M. ;
Meira, S.R. Software Reuse: The Brazilian Industry Scenario, Journal of Systems and
Software, Vol 81, No. 6, pp. 996-1013, Elsevier Inc, 2008
Alm destas, foram obtidas outras publicaes relacionadas s linhas de pesquisa da tese,
mas no diretamente relacionadas ao seu assunto principal. Estas tambm so importantes como
parte da experincia de uma pesquisa em nvel de doutorado.
14. Alvaro, A.; Almeida, E.S.; Lucrdio, D.; Garcia, V.C., Prado, A.P., Meira, S.R.L..
ASPECT IPM: Towards an Incremental Process Model Based on AOP for
Component-Based Systems, In: The 7th International Conference on Enterprise
Information Systems (ICEIS2005), Miami, USA, 2005.
15. Garcia, V.C.; Lucrdio, D.; Prado, A.P.; Almeida, E.S.; Alvaro, A.; Meira, S.R.L.
Towards an Approach for Aspect-Oriented Software Reengineering, In:
7th
213
16. Paiva, D.M.B.; Lucrdio, D.; Fortes, R.P.M. MVCASE - including design rationale
to help modeling in research projects (in portuguese), In: The XX SBES - Brazilian
Symposium on Software Engineering (SBES 2006) Tools Session, Florianpolis, SC,
Brazil, 2006.
17. Garcia, V.C.; Lucrdio, D.; Duro, F.A.; Santos, E.C.R.; Almeida, E.S.; Fortes,
R.P.M.; Meira, S.R.L. From Specification to the Experimentation: A Software
Component Search Engine Architecture, In: The 9th International Symposium on
Component-Based Software Engineering (CBSE), Lecture Notes in Computer Science,
Springer-Verlag, Sweden, 2006.
18. Garcia, V.C.; Almeida, E.S.; Meira, S.R.L.; Lucrdio, D.; Fortes, R.P.M. Toward a Code
Search Engine Based on the State-of-the-art and Practice, In: The 13th Asia Pacific
Software Engineering Conference (APSEC06), Bangalore, India, 2006.
19. Burgio, V.A.A.; Almeida, E.S.; Lucrdio, D; Meira, S.R.L. Specification, Design and
Implementation of a Reuse Repository, In: 31st IEEE Annual International Computer
Software and Applications (COMPSAC) Conference, Short Paper, Beijing, China, 2007.
20. Garcia, V.C.; Lucrdio, D.; Alvaro, A.; Almeida, E.S.; Fortes, R.P.M.; Meira,
S.R.L. Towards a Maturity Model for a Reuse Incremental Adoption, In: 1st
Brazilian Symposium on Software Components, Architecture and Reuse (SBCARS),
2007, Campinas - SP.
21. Brito, K.S.; Garcia, V.C.; Lucrdio, D.; Almeida, E.S.; Meira, S.R.L. LIFT:
Reusing Knowledge from Legacy Systems, In: 1st Brazilian Symposium on Software
Components, Architectures and Reuse (SBCARS), 2007, Campinas - SP.
22. Pereira, M.A.; Prado, A.F.; Biajiz, M.; Fontanette, V.; Lucrdio, D. Transformando
Modelos da MDA com o apoio de Componentes de Software, In: 1st Brazilian
Symposium on Software Components, Architectures and Reuse (SBCARS), 2007,
Campinas - SP.
23. Paiva, D.M.B.; Freire, A.P.; Lucrdio, D.; Braga, R.T.V.; Fortes, R.P.M. Reinforcing
Design Rationale in Software Projects Developed in Academic Environment,
International Transactions on Systems Science and Applications, v. 3, p. 238-248, 2007.
24. Almeida, E.S.; Alvaro, A.; Garcia, V.C.; Mascena, J.C.C.P.; Burgio, V.A.A.;
Nascimento, L.M.; Lucrdio, D; Meira, S. R.L. C.R.U.I.S.E: Component Reuse in
Software Engineering, C.E.S.A.R e-book, Brazil, 2007.
214
25. Burgio, V.A.A.; Almeida, E.S.; Lucrdio, D.; Meira, S.R.L. A Reuse Repository
System: From Specification to Deployment, In: The 10th International Conference on
Software Reuse (ICSR), Lecture Notes in Computer Science, Springer-Verlag, Beijing,
China, 2008.
26. Garcia, V.C.; Lisboa, L.B.; Meira, S.R.L.; Almeida, E.S.; Lucrdio, D.; Fortes,
R.P.M. Towards an Assessment Method for Software Reuse Capability, In: The 8th
International Conference on Quality Software (QSIC), Oxford, UK,2008.
27. Lucrdio, D.; Fortes, R.P.M.; Whittle, J. MOOGLE: a Model Search Engine, In: The
11th ACM/IEEE International Conference on Model Driven Engineering Languages and
Systems (MODELS), Toulouse, France, 2008.
28. Lisboa, L.B; Garcia, V.C.; Lucrdio, D.; Almeida, E.S.; Meira, S.R.L.; Fortes, R.P.M.
A Systematic Review of Domain Analysis Tools, Journal of Information and Software
Technology, Article In Press, Accepted Manuscritp, 2009.
Finalmente, ainda existem trabalhos que durante a escrita desta dissertao encontravam-se
em avaliao:
29. Cavalcanti, Y.K.; Cunha, C.E.A.; Garcia, V.C.G.; Lucrdio, D.; Almeida, E.S.; Meira,
S.R.L. The Bug Report Duplication Problem: A Characterization Study.
Em
215
33. Lucrdio, D.; Fortes, R.P.M.; Furtado, A.W.B.; Santos, A.L.M.; Almeida, E.S.;
Meira, S.R.L. Implementing Domain-Specific Languages for Model-Driven Domain
Engineering. Em avaliao: 11th International Conference on Software Reuse, Falls
Church, Virginia, USA, 27 a 30 de setembro de 2009. Submetido em maio de 2009.
34. Lucrdio, D.; Fortes, R.P.M.; Furtado, A.W.B.; Santos, A.L.M.; Almeida, E.S.; Meira,
S.R.L. Implementing Code Generators for Model-Driven Domain Engineering. Em
avaliao: 11th International Conference on Software Reuse, Falls Church, Virginia,
USA, 27 a 30 de setembro de 2009. Submetido em maio de 2009.
11.3
Lies aprendidas
216
inclusive importantes pesquisadores e funcionrios desta gigante da rea de TI. O fato de que
a prpria Microsoft possui uma soluo voltada para o desenvolvimento de DSLs e geradores
de cdigo apenas refora esta observao. Claro que no se pode generalizar estas observaes
com base em fatos isolados, mas a experincia destes anos de doutorado, aps participaes
em diversos eventos cientficos e contatos com empresas, ainda no produziram evidncia do
contrrio.
Outra importante lio aprendida diz respeito grande variedade de trabalhos similares
existentes na literatura. muito comum encontrar trabalhos bastante parecidos com os temas
aqui investigados. Porm, h tambm grande diversidade no foco, com cada trabalho sendo
bastante direcionado a uma determinada linha de pesquisa caracterstica do grupo de pesquisa
que o realiza. No existem muitos trabalhos derivados destas iniciativas isoladas e que buscam
englobar e unificar os diversos aspectos do problema, caminho este que foi seguido nesta tese.
As contribuies alcanadas comprovam que h espao tambm para este tipo de pesquisa.
Neste quesito, cabe tambm uma observao: a despeito da grande quantidade e variedade
de trabalhos na rea, raro encontrar estudos empricos buscando sua validao, a exemplo
do que se tentou realizar nesta pesquisa. difcil encontrar mtricas e valores para serem
utilizados como base para este tipo de estudo, sendo freqentemente necessrias adaptaes ou
interpretaes indiretas para se extrair concluses relevantes.
11.4
Trabalhos futuros
futuramente:
Replicao dos estudos empricos: os dados obtidos com a avaliao realizada possuem
algumas deficincias, tais como a falta de rigor estatstico, e a existncia de possveis
ameaas sua validade, como a participao do autor da tese durante parte dos estudos.
Assim, visando melhorar a validade das concluses, pode-se realizar novos experimentos
envolvendo a definio mais precisa dos seus elementos e operacionalizando-os, por
exemplo, com equipes maiores;
Reutilizao de outros tipos de artefatos: nesta tese no foi feita distino com respeito
ao tipo de artefatos sendo gerados. No h atividades ou diretrizes especficas para o
217
Tecnologias
Assim,
218
(ii) causa duplicao de cdigo, pois apesar de aps a primeira migrao ser possvel
descartar completamente a implementao de referncia, na prtica isto no ocorre devido
s dificuldades de se trabalhar no nvel do gerador. Como resultado, so mantidas tanto
a implementao de referncia como o gerador, e continua-se trabalhando com os dois
artefatos. Apesar de no-trivial, a automao, mesmo que parcial, seria a soluo para
estes problemas. Ainda no existe uma soluo automtica para migrao de cdigo nas
principais ferramentas do mercado, e este um interessante tema para trabalhos futuros.
11.5
Consideraes finais
219
Referncias
ALFEREZ, M. et al. A Model-driven Approach for Software Product Lines Requirements
Engineering. In: SEKE. [S.l.]: Knowledge Systems Institute Graduate School, 2008. p.
779784. ISBN 1-891706-22-5.
ALLILAIRE, F. et al. Global model management in Eclipse GMT/AM3. In: Eclipse Technology
eXchange Workshop (eTX) at the ECOOP 2006 conference. Nantes, France: [s.n.], 2006.
. [S.l.]:
ALMEIDA, E. S. C.R.U.I.S.E - Component Reuse In Software Engineering. In:
C.E.S.A.R. e-books, 2007. cap. 4 - Software Reuse Processes: The State-of-The-Art, p. 81100.
ALMEIDA, E. S. et al. An experimental study in domain engineering. In: 33rd IEEE
EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA),
Component-Based Software Engineering Track. [S.l.: s.n.], 2007.
ALMEIDA, E. S. et al. A systematic approach to design domain-specific software architectures.
Journal of Software - Academy Publisher, v. 02, n. 2, p. 3851, 2007.
ALMEIDA, E. S. et al. RiSE project: Towards a robust framework for software reuse. In:
IEEE International Conference on Information Reuse and Integration (IRI). Las Vegas, USA:
IEEE/CMS, 2004. p. 4853.
ALMEIDA, E. S. et al. A survey on software reuse processes. In: IEEE International
Conference on Information Reuse and Integration (IRI 2005). Las Vegas, USA: IEEE/CS Press,
2005.
ALMEIDA, E. S. et al. The domain analysis concept revisited: A practical approach. In: 9th
International Conference on Software Reuse (ICSR). Torino, Italy: Lecture Notes in Computer
Science, Springer-Verlag, 2006.
ALMEIDA, E. S. et al. Domain implementation in software product lines using OSGi. In: 7th
International Conference on Composition-Based Software Systems (ICCBSS). Madrid, Spain:
[s.n.], 2008.
AMBLER, S. W. Agile model driven development is good enough. IEEE Software, v. 20, n. 5,
p. 7173, 2003.
AMBLER, S. W. Examining the Model Driven Architecture (MDA). [S.l.]: Agile Modeling
Essay, 2004. Disponvel em: <http://www.agilemodeling.com/essays/mda.htm>. Acesso em:
14 jun 2009.
ANASTASOPOULOS, M.; ATKINSON, C.; MUTHIG, D. A concrete method for developing
and applying product line architectures. In: AKSIT, M.; MEZINI, M.; UNLAND, R. (Ed.).
NetObjectDays. [S.l.]: Springer, 2002. (Lecture Notes in Computer Science, v. 2591), p.
294312. ISBN 3-540-00737-7.
220
221
BAYER, J.; MUTHIG, D.; WIDEN, T. Customizable domain analysis. In: First International
Symposium on Generative and Component-Based Software Engineering (GPCE). Germany:
[s.n.], 1999. p. 178194.
BETTIN, J. Measuring the potential of domain-specific modelling techniques. In: In:
Proceedings of the 2nd Workshop on Domain-Specific Visual Languages, 17th ACM Conference
on Object Oriented Programming, Systems, Languages and Applications (OOPSLA 2002). [S.l.:
s.n.], 2002.
BIERHOFF, K.; LIONGOSARI, E. S.; SWAMINATHAN, K. S. Incremental development of a
domain-specific language that supports multiple application styles. In: GRAY, J.; TOLVANEN,
J.-P.; SPRINKLE, J. (Ed.). 6th OOPSLA Workshop on Domain-Specific Modeling (DSM06),
Portland, Oregon USA. [S.l.]: Jyvskyl University Printing House, Jyvskyl , Finland, ISBN:
951-39-2631-1, ISSN: 1239-291X, 2006.
BIGGERSTAFF, T. J.; RICHTER, C. Reusability framework, assessment, and directions. In:
BIGGERSTAFF, T. J.; PERLIS, A. J. (Ed.). Frontier Series: Software Reusability: Volume I Concepts and Models. New York: ACM Press, 1989. p. 117.
BOEHM, B. A spiral model of software development and enhancement. IEEE Computer, v. 21,
n. 5, p. 6172, May 1988.
BOSCH, J. Design and Use of Software Architectures. [S.l.]: Addison Wesley, 2000.
BOTTERWECK, G.; OBRIEN, L.; THIEL, S. Model-driven derivation of product
architectures. In:
STIREWALT, R. E. K.; EGYED, A.; FISCHER, B. (Ed.).
ASE. [S.l.]: ACM, 2007. p. 469472. ISBN 978-1-59593-882-4. Disponvel em:
<http://doi.acm.org/10.1145/1321631.1321711>. Acesso em 14 jun 2009.
BRAGA, R. T. V. Um Processo para Construo e Instanciao de Frameworks baseados
em uma Linguagem de Padres para um Domnio Especfico. Tese (Doutorado) USP Universidade de So Paulo, 2002.
BUSCHMANN, F.; HENNEY, K.; SCHMIDT, D. C. Pattern-Oriented Software Architecture,
Volume 4: A Pattern Language for Distributed Computing. [S.l.]: John Wiley & Sons, 2007.
BUSCHMANN, F.; HENNEY, K.; SCHMIDT, D. C. Pattern-Oriented Software Architecture,
Volume 5: On Patterns and Pattern Languages. [S.l.]: John Wiley & Sons, 2007.
BUSCHMANN, F. et al. Pattern-Oriented Software Architecture, Volume 1: A System of
Patterns. [S.l.]: John Wiley & Sons, 1996. TY - BOOK.
CHIDAMBER, S. R.; KEMERER, C. F. A metrics suite for object oriented design. IEEE Trans.
Softw. Eng., IEEE Press, Piscataway, NJ, USA, v. 20, n. 6, p. 476493, 1994. ISSN 0098-5589.
CLEAVELAND, J. C. Building application generators. IEEE Software, v. 7, n. 1, p. 2533,
1988.
CLEAVELAND, J. C. Separating concerns of modeling from artifact generation using XML. In:
Proceedings of the 1st OOPSLA Workshop on Domain-Specific Visual Languages - Tampa Bay,
USA. [S.l.]: Jyvskyl University Printing House, Jyvskyl , Finland, ISBN: 951-39-1056-3,
ISSN: 0359-8470, 2001.
222
223
DAVIS, T. The reuse capability model: A basis for improving an organizations reuse capability.
In: Proceedings of 2nd ACM/IEEE International Workshop on Software Reusability. [S.l.]:
IEEE Computer Society Press / ACM Press, 1993. p. 126133.
DEBAUD, J.; SCHMID, K. A systematic approach to derive the scope of software product
lines. In: 21st International Conference on Software Engineering (ICSE 99). Los Angeles, CA,
USA: [s.n.], 1999. p. 3443.
DEBAUD, J.-M.; FLEGE, O.; KNAUBER, P. PuLSE-DSSA: A method for the development of
software reference architectures. In: ISAW 98: Proceedings of the third international workshop
on Software architecture. New York, NY, USA: ACM, 1998. p. 2528. ISBN 1-58113-081-3.
DEELSTRA, M. et al. Model driven architecture as approach to manage variability in software
product families. In: Workshop on Model Driven Architecture: Foundations and Applications
(MDAFA 2003). Enschede, The Netherlands: [s.n.], 2003. p. 109114.
DESOUZA, K. C.; AWAZU, Y.; TIWANA, A. Four dynamics for bringing use back into
software reuse. Communications of the ACM, v. 49, n. 01, p. 97100, 2006.
DEURSEN, A. v.; KLINT, P.; VISSER, J. Domain-specific languages: An annotated
bibliography. SIGPLAN Notices - ACM Press, v. 35, n. 6, p. 2636, 2000.
DEURSEN, A. van; KLINT, P. Little languages: little maintenance. Journal of Software
Maintenance, John Wiley & Sons, Inc., New York, NY, USA, v. 10, n. 2, p. 7592, 1998.
ISSN 1040-550X.
DEVANBU, P. et al. Analytical and empirical evaluation of software reuse metrics. In: ICSE
96: Proceedings of the 18th international conference on Software engineering. Washington,
DC, USA: IEEE Computer Society, 1996. p. 189199. ISBN 0-8186-7246-3.
DOE, D. D.; BERSOFF, E. H. The software productivity consortium (SPC): An industry
initiative to improve the productivity and quality of mission-critical software. Journal of
Systems and Software, v. 6, n. 4, p. 367378, 1986. Elsevier Science Inc., New York, NY,
USA.
DSOUZA, D.; WILLS, A. Objects, Components and Frameworks with UML: The Catalysis
Approach. [S.l.]: Addison-Wesley, 1999. (Object Technology Series).
ECKLUND JR, E. F.; DELCAMBRE, L. M. L.; FREILING, M. J. Change cases: Use cases
that identify future requirements. In: Conference Proceedings of the OOPSLA 96, San Jose, CA,
USA. [S.l.]: ACM Press, 1996.
ECLIPSE. The Eclipse Modeling Framework (EMF) Overview. [S.l.]: Eclipse website, 2005.
ENDRES, A. Lessons learned in an industrial software lab. IEEE Software, v. 10, n. 05, p.
5861, 1993.
ESSER, R.; JANNECK, J. W. A framework for defining domain-specific visual languages. In:
Proceedings of the 1st OOPSLA Workshop on Domain-Specific Visual Languages - Tampa Bay,
USA. [S.l.]: Jyvskyl University Printing House, Jyvskyl , Finland, ISBN: 951-39-1056-3,
ISSN: 0359-8470, 2001.
EZRAN, M.; MORISIO, M.; TULLY, C. Practical Software Reuse. [S.l.]: Springer, 2002.
224
FEILKAS, M. How to represent models, languages and transformations? In: GRAY, J.;
TOLVANEN, J.-P.; SPRINKLE, J. (Ed.). 6th OOPSLA Workshop on Domain-Specific Modeling
(DSM06), Portland, Oregon USA. [S.l.]: Jyvskyl University Printing House, Jyvskyl ,
Finland, ISBN: 951-39-2631-1, ISSN: 1239-291X, 2006.
FENTON, N.; PFLEEGER, S. L. Software Metrics: A Rigorous and Practical Approach. 2nd.
ed. [S.l.]: Course Technology, 1998.
FLORIJN, G.; MEIJERS, M.; WINSEN, P. v. Tool support for object-oriented patterns. In:
European Conference on Object-Oriented Programming (ECOOP97). Jyvskyl, Finland:
Springer-Verlag, 1997. p. 472495.
FOWLER, M. Inversion of Control Containers and the Dependency Injection pattern. 2004.
Disponvel em: <http://martinfowler.com/articles/injection.html>. Acesso em: 14 jun 2009.
FOWLER,
M.
Model
Driven
Architecture.
2004.
Disponvel
em:
<http://martinfowler.com/bliki/ModelDrivenArchitecture.html>. Acesso em: 14 jun 2009.
FOWLER,
M.
Language
Workbenches:
The
Killer-App
for
Domain
Specific Languages?
[S.l.]:
martinfowler.com,
2005. Disponvel em:
<http://www.martinfowler.com/articles/languageWorkbench.html>. Acesso em:
14 jun
2009.
FRAKES, W. B.; ISODA, S. Success factors of systematic software reuse. IEEE Software, v. 11,
n. 01, p. 1419, 1994.
FRAKES, W. B.; PRIETO-DAZ, R.; FOX, C. DARE: Domain Analysis and Reuse
Environment. Annals of Software Engineering, v. 05, 1998.
FRAKES, W. B.; TERRY, C. Reuse level metrics. In: Proceedings of the 3rd IEEE International
Conference on Software Reuse (ICSR): Advances in Software Reusability, Rio de Janeiro,
Brazil. [S.l.: s.n.], 1994.
FRANCE, R.; RUMPE, B. Model-driven development of complex software: A research
roadmap. In: 29th International Conference on Software Engineering 2007 - Future of Software
Engineering. Minneapolis, MN, USA: IEEE Computer Society, 2007. p. 3754.
FRANCE, R. B.; GHOSH, S.; TURK, D. E. Towards a model-driven approach to reuse. In: 7th
International Conference on Object Oriented Information Systems (OOIS). Calgary, Canada:
Springer, 2001. p. 181190.
GAMMA, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software. Reading,
MA: Addison-Wesley, 1995.
GARCIA, V. C. et al. Towards an assessment method for software reuse capability. In: 8th
International Conference on Quality Software (QSIC), Oxford, UK. [S.l.: s.n.], 2008.
GARCIA, V. C. et al. Towards a maturity model for a reuse incremental adoption. In: Brazilian
Symposium on Software Components, Architectures and Reuse (SBCARS 2007). Campinas, SP,
Brazil: [s.n.], 2007.
GENERO, M. et al. Building measure-based prediction models for uml class diagram
maintainability. Empirical Softw. Engg., Kluwer Academic Publishers, Hingham, MA, USA,
v. 12, n. 5, p. 517549, 2007. ISSN 1382-3256.
225
GENERO, M.; POELS, G.; PIATTINI, M. Defining and validating metrics for assessing
the understandability of entity-relationship diagrams. Data Knowl. Eng., Elsevier Science
Publishers B. V., Amsterdam, The Netherlands, The Netherlands, v. 64, n. 3, p. 534557, 2008.
ISSN 0169-023X.
GREENFIELD, J. et al. Software Factories: Assembling Applications with Patterns, Models,
Frameworks and Tools. [S.l.]: Wiley, 2004.
GRISS, M. Software reuse experience at Hewlett-Packard. In: 16th International Conference
on Software Engineering (ICSE). Sorrento, Italy: IEEE/CS Press, 1994. p. 270.
GRISS, M. Making software reuse work at hewlett-packard. IEEE Software, v. 12, n. 01, p.
105107, 1995.
GRISS, M.; FAVARO, J.; DALESSANDRO, M. Integrating feature modeling with the RSEB.
In: The Fifty International Conference on Software Reuse (ICSR). Victoria, Canada: IEEE/CS
Press, 1998. p. 7685.
GUERRA, E.; LARA, J. de; DAZ, P. Visual specification of measurements and redesigns for
domain specific visual languages. J. Vis. Lang. Comput., Academic Press, Inc., Orlando, FL,
USA, v. 19, n. 3, p. 399425, 2008. ISSN 1045-926X.
GUIZZARDI, G.; PIRES, L. F.; SINDEREN, M. J. V. On the role of domain ontologies in
the design of domain-specific visual modeling languages. In: In: Proceedings of the 2nd
Workshop on Domain-Specific Visual Languages, 17th ACM Conference on Object Oriented
Programming, Systems, Languages and Applications (OOPSLA 2002). [S.l.: s.n.], 2002.
HADDAD, H.; TESSER, H. Reusable subsystems: Domain-based approach. In: 2002 ACM
Symposium on Applied Computing (SAC2002). Madrid, Spain: ACM, 2002. p. 971975.
HEINEMAN, G.; COUNCILL, W. Component-Based Software Engineering: Putting the
Pieces Together. USA: Addison-Wesley, 2001.
HENRIKSSON, A.; LARSSON, H. A Definition of Round-Trip Engineerin. [S.l.], 2003.
HESSELLUND, A.; CZARNECKI, K.; WASOWSKI, A. Guided development with multiple
domain-specific languages. In: ENGELS, G. et al. (Ed.). Model Driven Engineering Languages
and Systems (MoDELS 2007). [S.l.]: Springer, 2007. (Lecture Notes in Computer Science,
v. 4735), p. 4660. ISBN 978-3-540-75208-0.
HETTEL, T.; LAWLEY, M. J.; RAYMOND, K. Model synchronisation: Definitions for
round-trip engineering. In: VALLECILLO, A.; GRAY, J.; PIERANTONIO, A. (Ed.). Theory
and Practice of Model Transformations (ICMT 2008). [S.l.]: Springer Berlin / Heidelberg, 2008.
(Lecture Notes in Computer Science, v. 5063/2008), p. 3145.
HOLIBAUGH, R. et al. Reuse: where to begin and why. In: TRI-Ada 89: Proceedings of the
conference on Tri-Ada 89. Pittsburgh, Pennsylvania, United States: ACM Press, 1989. p. 266
277.
ISAKOWITZ, T.; KAUFFMAN, R. J. Supporting search for reusable software objects. IEEE
Transactions on Software Engineering, v. 22, n. 6, 1996.
226
227
KIM, M.; YANG, H.; PARK, S. A domain analysis method for software product lines based
on scenarios, goals and features. In: Tenth Asia-Pacific Software Engineering Conference
(APSEC). Thailand: [s.n.], 2003. p. 126136.
KIRCHER, M.; JAIN, P. Pattern-Oriented Software Architecture, Volume 3: Patterns for
Resource Management. [S.l.]: John Wiley & Sons, 2003.
KLEPPE, A.; WARMER, J.; BAST, W. MDA Explained - The Model Driven Architecture:
Practice and Promise. [S.l.]: Addison-Wesley, 2003. (Object Technology Series).
KLEPPE, A. G. A language description is more than a metamodel. In: Fourth
International Workshop on Software Language Engineering, Nashville, USA. Grenoble, France:
megaplanet.org, 2007. ISBN not assigned.
KNODEL, J. et al. An efficient migration to model-driven development (mdd). Electronic Notes
in Theoretical Computer Science, v. 137, n. 3, p. 1727, 2005.
KOLTUN, P.; HUDSON, A. A reuse maturity model. In: 4th Annual Workshop on Software
Reuse. Hemdon, Virginia: Center for Innovative Technology: [s.n.], 1991.
KOTULA, J. Using patterns to create component documentation. IEEE Software, v. 15, n. 2, p.
8492, 1998.
KRUCHTEN, P. The 4+1 view model of architecture. IEEE Softw., IEEE Computer Society
Press, Los Alamitos, CA, USA, v. 12, n. 6, p. 4250, 1995. ISSN 0740-7459.
KRUEGER, C. Software reuse. ACM Computing Surveys, v. 24, n. 02, p. 131183, 1992.
KHNE, T. Making modeling languages fit for model-driven development. In: Fourth
International Workshop on Software Language Engineering, Nashville, USA. Grenoble, France:
megaplanet.org, 2007. ISBN not assigned.
KURTEV, I. et al. Model-based DSL frameworks. In: TARR, P. L.; COOK, W. R. (Ed.).
OOPSLA Companion. [S.l.]: ACM, 2006. p. 602616. ISBN 1-59593-491-X. Disponvel em:
<http://doi.acm.org/10.1145/1176617.1176632>. Acesso em: 14 jun 2009.
LANGE, C.; CHAUDRON, M. An empirical assessment of completeness in uml designs.
In: Proceedings of the 8th Conference on Empirical Assessment in Software Engineering
(EASE04). [S.l.: s.n.], 2004. p. 111121.
LANGE, C. F. J.; CHAUDRON, M. R. V. Managing model quality in uml-based software
development. In: STEP 05: Proceedings of the 13th IEEE International Workshop on Software
Technology and Engineering Practice. Washington, DC, USA: IEEE Computer Society, 2005.
p. 716. ISBN 0-7695-2639-X.
LEDECZI, A. et al. Composing domain-specific design environments. IEEE Computer, v. 34,
n. 11, p. 4451, 2001.
LEE, J.; KANG, K. C. Feature binding analysis for product line component development. In:
LINDEN, F. van der (Ed.). Software Product-Family Engineering, 5th International Workshop,
PFE 2003, Siena, Italy, November 4-6, 2003, Revised Papers. [S.l.]: Springer, 2003. (Lecture
Notes in Computer Science, v. 3014), p. 250260. ISBN 3-540-21941-2.
228
229
2006.
2006.
2006.
Disponvel
Disponvel
Disponvel
em:
em:
em:
230
231
OMG. XML Metadata Interchange (XMI) Specification. [S.l.], 2006. Disponvel em:
<http://www.omg.org>. Acesso em: 14 jun 2009.
OMG. Unified Modeling Language (OMG UML) Infrastructure. [S.l.], 2007. Disponvel em:
<http://www.omg.org>. Acesso em: 14 jun 2009.
PARNAS, D. L. On the design and development of program families. IEEE Transactions on
Software Engineering, v. 2, n. 1, p. 19, mar. 1976.
PATZKE, T.; MUTHIG, D. Product Line Implementation Technologies - Programming
Language View. [S.l.], October 2002.
PREZ-MARTNEZ, J. E.; SIERRA-ALONSO, A. From analysis model to software
architecture: A PIM2PIM mapping. In: RENSINK, A.; WARMER, J. (Ed.). ECMDA-FA. [S.l.]:
Springer, 2006. (Lecture Notes in Computer Science, v. 4066), p. 2539. ISBN 3-540-35909-5.
PETRE, M. Why looking isnt always seeing: readership skills and graphical programming.
Commun. ACM, ACM, New York, NY, USA, v. 38, n. 6, p. 3344, 1995. ISSN 0001-0782.
PHOHA, V. A standard for software documentation. IEEE Computer, v. 30, n. 10, p. 9798,
1997.
PILGRIM, J. Measuring the level of abstraction and detail of models in the context of MDD.
In: Models in Software Engineering: Workshops and Symposia at MoDELS 2007, Nashville,
TN, USA, September 30 - October 5, 2007, revised selected papers. Berlin, Heidelberg:
Springer-Verlag, 2008. p. 105114. ISBN 978-3-540-69069-6.
POPMA, R. JET Tutorial Part 1 (Introduction to JET). May 2004. Eclipse Corner Article.
Disponvel em: <http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html>. Acesso em:
14 jun 2009.
POULIN, J. Measuring software reusability. In: Proceedings of the 3rd IEEE International
Conference on Software Reuse (ICSR): Advances in Software Reusability, Rio de Janeiro,
Brazil. [S.l.: s.n.], 1994.
POULIN, J.; CARUSO, J.; HANCOCK, D. The business case for software reuse. IBM Systems
Journal, v. 32, n. 4, p. 567594, 1993.
POULIN, J. S.; CARUSO, J. M. A reuse metrics and return on investment model. In:
PRIETO-DIAZ, R.; FRAKES, W. B. (Ed.). Proceedings of 2nd ACM/IEEE International
Workshop on Software Reusability. [S.l.]: IEEE Computer Society Press / ACM Press, 1993. p.
152167. ISBN 0-8186-3130-9, 0-8186-3132-5, 0-8186-3131-7.
PRESSMAN, R. S. Software Engineering: A Practitioners Approach. [S.l.]: McGraw-Hill,
2005.
PRIETO-DAZ, R. Domain analysis: An introduction. ACM SIGSOFT Software Engineering
Notes, v. 15, n. 2, p. 4754, 1990.
PRIETO-DAZ, R. Making software reuse work: An implementation model. ACM SIGSOFT
Software Engineering Notes, v. 16, n. 3, p. 6168, 1991.
PRIETO-DAZ, R. Status report: Software reusability. IEEE Software, v. 10, n. 3, p. 6166,
1993. IEEE Computer Society Press. Los Alamitos, CA, USA.
232
233
SHERIF, K.; APPAN, R.; LIN, Z. Resources and incentives for the adoption of systematic
software reuse. International Journal of Information Management, v. 26, n. 1, p. 7080, 2006.
Available online 10 October 2005.
SILVA, M. F.; WERNER, C. M. L. Packaging reusable components using patterns and
hypermedia. In: 4th International Conference on Software Reuse. USA: [s.n.], 1996. p.
146155.
SIMOS, M. et al. Organization Domain Modeling (ODM) Guidebook Version 2.0. [S.l.], 1996.
SOMMERVILLE, I. Software Engineering. 8. ed. [S.l.]: Addison Wesley, 2006.
STARS. Software Technology for Adaptable Reliable Systems (STARS). The Reuse-Oriented
Software Evolution (ROSE). [S.l.], 1993.
STEFFEN, B. et al. Model-Driven Development with the jABC. In: Hardware and Software,
Verification and Testing. Berlin / Heidelberg: Springer-Verlag, 2007. (Lecture Notes in
Computer Science, v. 4383/2007), p. 92108.
SVAHNBERG, M.; GURP, J. van; BOSCH, J. A taxonomy of variability realization techniques:
Research articles. Softw. Pract. Exper., John Wiley & Sons, Inc., New York, NY, USA, v. 35,
n. 8, p. 705754, 2005. ISSN 0038-0644.
SVANHBERG, M.; GURP, J. van; BOSCH, J. A Taxonomy of Variability Realization
Techniques. [S.l.], 2002.
SZYPERSKI, C. Component Software: Beyond Object-Oriented Programming. [S.l.]: Addison
Wesley, 1999.
SZYPERSKI, C.; GRUNTZ, D.; MURER, S. Component Software: Beyond Object-Oriented
Programming - Second Edition. [S.l.]: Addison Wesley / ACM Press, 2002.
TAULAVUORI, A.; NIEMELA, E.; KALLIO, P. Component documentation-a key issue in
software product lines. Journal of Information and Software Technology, v. 46, n. 8, p. 535546,
2004.
THOMAS, D. MDA: Revenge of the modelers or uml utopia? IEEE Software, v. 21, n. 3, p.
1517, 2004.
TOLVANEN, J.-P. Making model-based code generation work. Embedded Systems Europe, v. 8,
n. 60, p. 3638, Aug/Sept 2004.
TOLVANEN, J.-P. Domain-Specific Modeling: How to Start Defining Your Own Language.
Feb 2005. Disponvel em: <http://www.devx.com/enterprise/Article/30550>. Acesso em: 14
jun 2009.
TOLVANEN, J.-P.; KELLY, S. Modelling languages for product families: A method
engineering approach. In: Proceedings of the 1st OOPSLA Workshop on Domain-Specific Visual
Languages - Tampa Bay, USA. [S.l.]: Jyvskyl University Printing House, Jyvskyl , Finland,
ISBN: 951-39-1056-3, ISSN: 0359-8470, 2001.
234
235
WEIS, T.; ULBRICH, A.; GEIHS, K. Model metamorphosis. IEEE Software, v. 20, n. 5, p.
4651, 2003.
WEISS, D.; LAI, C. T. R. Software Product-Line Engineering: A Family-Based Software
Development Process. [S.l.]: Addison Wesley, 1999.
WEISS, D. M. et al. Decision-model-based code generation for SPLE. In: SPLC. [S.l.]:
IEEE Computer Society, 2008. p. 129138. ISBN 978-0-7695-3303-2. Disponvel em:
<http://dx.doi.org/10.1109/SPLC.2008.42>. Acesso em: 14 jun 2009.
WILE, D. Lessons learned from real DSL experiments. Sci. Comput. Program., Elsevier
North-Holland, Inc., Amsterdam, The Netherlands, The Netherlands, v. 51, n. 3, p. 265290,
2004. ISSN 0167-6423.
WIMMER, M. et al. Towards model transformation generation by-example. In: 40th Hawaii
International Conference on System Sciences (HICSS07). Hawaii: [s.n.], 2007.
WOHLIN, C. et al. Experimentation in Software Engineering: An Introduction. [S.l.]: Kluwer
Academic Publishers, 2000.
ZAREMSKI, A. M.; WING, J. M. Signature matching: A tool for using software libraries. ACM
Transactions on Software Engineering and Methodology, v. 4, n. 2, p. 146170, 1995.
ZHANG, Y. Test-driven modeling for model-driven development. IEEE Software, v. 21, n. 5, p.
8086, 2004.
ZHANG, Y.; SHETH, D. Mining software repositories for model-driven development. IEEE
Software, v. 23, n. 1, 2006.
237
238
2006).
Por esses e outros motivos, a pesquisa vem evoluindo na busca por novos mtodos e tcnicas
que evitem tais tipos de problemas. A seguir, so apresentadas as principais abordagens voltadas
para reutilizao de software existentes na literatura, destacando-se o desenvolvimento baseado
em componentes (SAMETINGER, 1997; SZYPERSKI; GRUNTZ; MURER, 2002), linguagens
especficas de domnio (DEURSEN; KLINT; VISSER, 2000), programao generativa (CZARNECKI;
EISENECKER,
239
grande nmero de partes inter-relacionadas e, na maioria das vezes, essa relao entre as partes
era implcita. O DBC surgiu como uma nova perspectiva para desenvolvimento de software,
na qual a analogia de quebrar esses blocos monolticos em componentes intercambiveis,
diminuindo a complexidade e explicitando a relao entre as partes que compem o software.
A idia de componentes de software no nova. Em 1968, durante uma conferncia da
OTAN sobre Engenharia de Software, o foco era a crise do software - o problema de se construir
sistemas de software grandes e confiveis de uma maneira controlvel e eficiente. Desde o
incio, a reutilizao foi considerada como uma maneira de solucionar a crise do software.
Um artigo apresentado na conferncia, intitulado Componentes de Software Produzidos em
Massa, por McIlroy (MCILROY, 1968), se tornou um dos mais revolucionrios da rea de
reutilizao. Nas palavras de McIlroy: a indstria de software fracamente fundada e um dos
motivos dessa fraqueza a ausncia de uma indstria de sub-componentes.
Apesar de serem antigas, as idias de McIlroy ainda no foram concretizadas. O prprio
conceito de componentes ainda no bem definido, sendo que desde o primeiro workshop
de DBC, em 1998 em Kyoto, vrias definies foram apresentadas, cada uma evidenciando
um aspecto especfico do componente. Um conceito bastante satisfatrio apresentado por
Szyperski (1999): um componente de software uma unidade de composio com interfaces
bem especificadas em contrato e dependncias explcitas do contexto. Um componente de
software pode ser independentemente implantado e pode ser composto por terceiros.
As interfaces bem especificadas so importantes para formar uma camada comum entre
o reutilizador (uma pessoa que utiliza o componente) e o desenvolvedor do componente. As
dependncias explcitas definem o que o ambiente deve fornecer para que o componente possa
executar sua funo. Uma vez satisfeitas estas dependncias explcitas, o componente deve
poder ser implantado sem a necessidade de resolver dependncias adicionais. Finalmente, para
que ele possa ser composto por terceiros, ele deve ser suficientemente auto-contido, ou seja, a
funo por ele desempenhada deve ser totalmente implementada dentro dele.
Um componente no totalmente independente dos outros componentes e do ambiente.
As suas interfaces so importantes justamente para explicitar quais so esses pontos de
dependncia. Szyperski (1999) define uma interface como um conjunto de assinaturas de
operaes que podem ser chamadas por uma aplicao. De acordo com Heineman e Councill
(2001), h dois tipos de interfaces: interfaces providas, que descrevem as funcionalidades que
o componente fornece, e as interfaces requeridas, que descrevem as funcionalidades das quais
o componente depende para funcionar.
Os quatro conceitos identificados por Krueger (1992) tambm esto presentes nessa
240
Adaptar um
componente para que ele execute em um cenrio imprevisto pode exigir que o mesmo
seja modificado internamente. Neste caso, se o esforo necessrio para essa modificao
for muito grande, pode ser mais vantajoso tentar renegociar com o cliente os requisitos
da aplicao do que modificar o prprio componente; e
Integrao: a integrao consiste no acoplamento das interfaces requeridas pelo componente
com as interfaces providas pelo restante da aplicao. Normalmente esse acoplamento
exige alguma modificao na aplicao.
241
242
de modelagem. Outros fazem parte do domnio executvel, enquanto outros fazem parte de
ambos.
Uma outra possvel distino feita no momento em que o analista realiza essa traduo
dos termos do domnio financeiro para os termos dos domnios de modelagem e executvel. No
contexto de desenvolvimento de sistemas, o domnio para o qual se est construindo um sistema
chamado de domnio do problema, pois trata-se do problema que se pretende resolver. O
domnio no qual se est construindo o sistema chamado de domnio da soluo, pois ele
representa a soluo computacional que est sendo desenvolvida.
Em reutilizao de software, a palavra domnio normalmente utilizada como um sinnimo
de Domnio do Problema. Ou seja, quando se fala em aplicaes de um domnio, ou um
domnio de aplicaes, se fala em um conjunto de aplicaes que compartilham os mesmos
termos e conceitos, e que so especficas para uma mesma rea de conhecimento. Assim, o
domnio financeiro, por exemplo, no contexto da reutilizao de software, compreende todas as
aplicaes financeiras.
A partir dessa definio, uma linguagem especfica de domnio uma linguagem qualquer
que representa os termos e conceitos do domnio. Por exemplo, Java uma linguagem de um
domnio executvel, UML uma linguagem de um domnio de modelagem, e assim por diante.
Mas atualmente, quando se fala em linguagens especficas de um domnio, normalmente se
est querendo dizer linguagens especficas de um domnio de problema. Dessa forma, chega-se
seguinte definio (DEURSEN; KLINT; VISSER, 2000).
Uma linguagem especfica de domnio uma linguagem de programao ou uma
243
2000).
244
Dentre as vantagens,
245
programao genricas; e
246
2. Linguagem embutida: nesse tipo de DSL, tambm conhecida como DSL interna
(FOWLER, 2005), uma linguagem de programao genrica estendida com conceitos e
operaes do domnio. A principal vantagem que o prprio compilador da linguagem
base pode ser utilizado. Em contrapartida, a expressividade da linguagem estendida
limitada ao poder expressivo da linguagem base (DEURSEN; KLINT; VISSER, 2000). Por
exemplo, a UML (OMG, 2007), com seu mecanismo de extenso, possibilita a criao
de linguagens de modelagens especficas de forma bastante razovel. Os perfis UML
(OMG, 2006a) so um exemplo desse poder. A linguagem LISP, ou outras linguagens
adaptveis, tambm so exemplos dessa possibilidade. J a linguagem Java no possui
um mecanismo simples de extenso, dificultando o uso de linguagens embutidas.
Enquanto a primeira abordagem resulta em uma DSL mais limpa e fcil de ser utilizada, ela
requer maior trabalho para implementar o compilador. J a segunda abordagem mais rpida
e simples de ser implementada, pois no requer a construo de um compilador. Porm, os
resultados no so to satisfatrios como na primeira abordagem.
Com relao a linguagens visuais, at pouco tempo o uso do mecanismo de extenso da
UML era uma das nicas possibilidades. Recentemente, com as idias do desenvolvimento
orientado a modelos, novas tecnologias surgiram para facilitar esse trabalho. So os chamados
frameworks de linguagens, que implementam diversas funes necessrias para a modelagem
visual, como a representao, criao e edio de diagramas, e o processamento automtico de
suas informaes internas. Exemplos incluem o GME (Generic Modeling Environment)1 e o
GMF (Graphical Modeling Framework)2 .
Analisando a abordagem de DSLs como uma forma de reutilizao de software, pode-se
notar que os quatro conceitos da reutilizao tambm esto presentes:
Abstrao: o processo de anlise de um domnio de problema, levantamento de informaes
relacionadas, e seu encapsulamento em forma de uma linguagem e uma biblioteca
contendo as noes semnticas, corresponde abstrao. O conhecimento reutilizvel
do domnio abstrado e expresso em uma linguagem, de forma que um desenvolvedor
pode facilmente reconhec-lo e reutiliz-lo. Essa a parte visvel da abstrao. O
detalhamento e a implementao das noes semnticas associadas a cada conceito
correspondem parte escondida da abstrao;
Seleo: uma vez que a DSL esteja construda, o desenvolvedor precisa conhecer a sintaxe e a
semntica por trs de cada construo da linguagem. A seleo dos artefatos reutilizveis
1 http://www.isis.vanderbilt.edu/projects/gme/
2 http://www.eclipse.org/gmf/
247
visualmente, e todo o cdigo que a implementa automaticamente gerado. Caso precise realizar
alguma modificao, o desenvolvedor a realiza diretamente no editor visual, e o cdigo que
reflete essa mudana gerado novamente.
A programao generativa pode ser utilizada em outras etapas do ciclo de vida do software.
Pode-se gerar casos de teste, esquemas de banco de dados, ou mesmo programas completos. Os
benefcios dessa abordagem so bvios: poupa-se o tempo gasto em atividades repetitivas, como
tarefas de implementao de infra-estrutura, aproveitando-o em atividades mais importantes,
como anlise e projeto.
3 http://msdn.microsoft.com/vstudio/
4 http://www.netbeans.org/
248
Normalmente os geradores so
249
Corresponde tarefa de
250
251
252
o sistema operacional ou um banco de dados especfico. Neste caso, essa integrao ser
to simples quanto for a possibilidade de parametrizao do framework.
Padres de software
Uma forma bastante conhecida de reutilizao so os padres de software (COPLIEN, 2006).
Sejam de anlise, de processo ou de projeto, os padres tm um nico objetivo: representar
solues bem sucedidas para problemas recorrentes, de forma que, ao se deparar com uma
situao similar vivida originalmente, um desenvolvedor possa aplicar a mesma soluo,
obtendo os mesmos resultados que o criador do padro. Neste sentido, o objeto da reutilizao
o conhecimento obtido na soluo desse problema recorrente. Os quatro conceitos bsicos da
reutilizao esto tambm presentes nessa tcnica:
Abstrao: a abstrao ocorre quando as solues recorrentes so generalizadas e
representadas segundo um formato especfico. Existem alguns formatos para descrio de
padro que so mais comumente utilizados, destacando-se aquele utilizado em (GAMMA
et al.,
que um desenvolvedor possa decidir se esse padro adequado ao seu problema ou no;
Seleo: a seleo ocorre quando o desenvolvedor procura por um padro por meio da
comparao do problema descrito no padro e o problema sendo vivenciado por ele no
momento. Esse processo normalmente manual, exigindo uma consulta a catlogos de
padres, tal como o catlogo online hillside.net5 ;
Adaptao: a adaptao consiste na instanciao do padro, adaptando-o para a situao atual.
Os elementos do padro so normalmente genricos, precisando ser renomeados ou
mesmo modificados; e
Integrao: a integrao exige a adaptao do restante do sistema, ou do projeto, para
acomodar os elementos inseridos pelo padro.
Existem basicamente trs abordagens para os processos de adaptao e integrao de um
padro (FLORIJN; MEIJERS; WINSEN, 1997): a abordagem top-down, na qual os elementos do
padro so criados e ento integrados ao restante do sistema; a abordagem bottom-up, na
qual os elementos j existentes no sistema so transformados nos elementos do padro, e
a abordagem hbrida, que uma combinao das outras duas, com parte dos elementos do
padro sendo criados a partir do zero e parte sendo adaptada a partir de elementos j existentes
no sistema.
5 http://hillside.net/patterns/onlinepatterncatalog.htm
253
Reengenharia de Software
254
Reengenharia
software
Padres
Frameworks
framework
Escolha do
adequado
Escolha de um gerador
apropriado
Definio do formato de
entrada
Representao do domnio,
destacando os pontos
variveis e ganchos
Generalizao de solues
recorrentes
Engenharia Reversa
Consulta gramtica ou
manual da linguagem
busca
Anlise de um domnio de
problema
Seleo
Navegao
automtica
Abstrao
Encapsulamento e utilizao
de interfaces bem definidas
definidos
na
ou
Instanciao,
atravs
dos pontos variveis e
ganchos
Adaptao do padro para a
situao
Mudanas nos artefatos
recuperados, para atender a
novos requisitos ou novas
tecnologias
Produo da entrada do
gerador
Parmetros
linguagem
Adaptao
Parametrizao
modificao interna
Integrao
Acoplamento de interfaces providas com
requeridas
Quadro 13: Resumo das principais tcnicas relacionadas aos conceitos bsicos da reutilizao de software
de
Desenvolvimento
Baseado
em
Componentes
(DBC)
Linguagens
Especficas
de
Domnio (DSL)
Programao
Generativa
255
257
258
extremamente complexo, exigindo trabalho considervel para compreend-lo, e ainda mais para
se construir transformadores com base nele.
Essas limitaes da UML frente s perspectivas do MDD foram observadas em um estudo
(BETTIN, 2002) comparativo entre o desenvolvimento completamente manual e o MDD com
modelagem UML, gerao de esqueletos de classes completados com cdigo manual. Os
resultados mostram que o MDD com modelagem UML apresenta poucas vantagens em relao
ao desenvolvimento manual.
O mesmo estudo tambm analisou o desenvolvimento com modelagem especfica de
domnio e gerao de cdigo1 com pouca necessidade de cdigo manual. Nesse caso, foram
observadas vantagens significativas em relao ao desenvolvimento manual (BETTIN, 2002).
H alguns anos, alguns autores tambm questionavam se o MDD no seria apenas uma
reedio do fracasso das ferramentas CASE dos anos 80, que prometiam basicamente a mesma
coisa que o MDD promete (AMBLER, 2003; MILLER et al., 2004; AMBLER, 2004). Entre os
argumentos, Selic (2003) destacava que tcnicas de modelagem e gerao de cdigo j foram
tentadas antes, com relativamente pouco sucesso. Por que ento seria diferente com o MDD?
O prprio Selic (2003) responde ainda que h dois fatores evolucionrios que pesam a
favor do MDD: as tecnologias de automao necessrias tornaram-se mais maduras, e surgiram
vrios padres industriais para essa tecnologia. Estes so os padres MDA (Model-Driven
Architecture), propostos pelo OMG (Object Management Group) (OMG, 2003), que ofereceram
aos fabricantes de ferramentas novas maneiras para explorar os benefcios do desenvolvimento
orientado a modelos em larga escala.
Isto porque o MDD altamente dependente do uso de ferramentas: para modelagem,
transformao de software e gerao de cdigo.
Modeling Language), MOF (Meta-Object Facility), XMI (XML Metadata Interchange) e QVT
(Queries/Views/Transformations)2 , diferentes fabricantes podem integrar suas ferramentas de
maneira mais simples e fcil, alavancando esta tecnologia de forma indita.
Os avanos tecnolgicos parecem mesmo ter sido o ponto decisivo no sucesso do MDD.
Existem diversos casos onde ele foi aplicado com sucesso nas organizaes (MILLER et al.,
2004; MELLOR; CLARK; FUTAGAMI, 2003; MILLER et al., 2004; TOLVANEN, 2004; WILE, 2004;
MOHAGHEGHI; DEHLEN,
1 Linguagens
2 Todos
2008).
259
Colin Atkinson, um dos criadores do processo KobrA (ATKINSON; BAYER; MUTHIG, 2000),
e Thomas Khne, tambm se manifestam a favor do MDD, porm ressaltando o problema da
maneira como o OMG trata os modelos (ATKINSON; KHNE, 2003). Em sua viso, o poder
representativo do MOF limitado e deveria ser revisto. Atkinson e Khne tambm listam seis
requisitos para o desenvolvimento orientado a modelos, e concluem que, salvo pela restrio da
maneira como a modelagem tratada, o MDD um passo significativo em direo ao objetivo
final de integrar modelagem ao desenvolvimento.
Uhl (2003) tambm se mostra otimista com relao ao MDD e MDA. Segundo sua viso,
porm, o MOF e a UML so suficientes para modelar sistemas, e seus mecanismos de extenso
eliminam a necessidade de uma linguagem especfica para um domnio. Seus argumentos se
baseiam na observao dos benefcios obtidos com sua aplicao em projetos reais.
Apesar das discusses, existe um consenso geral, partilhado pela maioria dos autores,
de que o desenvolvimento orientado a modelos, seja ele baseado na MDA ou no, pode
oferecer grandes benefcios, ainda que no cause uma revoluo na maneira como se desenvolve
software. No se sabe se a MDA vai ser ou no a tecnologia de suporte para o MDD. De acordo
com Thomas (2004), primeiro necessria uma anlise mais profunda por parte da comunidade
de software.
Finalmente, o crescente nmero de projetos dedicados a alcanar os benefcios do MDD na
academia, mas principalmente da indstria, mostra que provavelmente essa abordagem est se
estabelecendo de fato.
261
est presente na abordagem, e o smbolo 2indica que a prtica est ausente da abordagem. Uma
breve explicao, destacada em negrito, descreve o raciocnio por trs da presena ou ausncia
da prtica na abordagem.
importante ressaltar que no foi feita uma anlise rigorosa de aderncia aos modelos de
maturidade, analisando-se por exemplo as caractersticas principais dos produtos de trabalho
e atividades da abordagem e comparando-se com os elementos de processo descritos nos
modelos. O foco aqui foi oferecer uma viso mais ampla sobre o escopo e abrangncia da
abordagem, frente ao que existe na literatura com relao s atividades e prticas relacionadas
reutilizao e MDD, alm de oferecer uma descrio mais detalhada dos modelos de
maturidade.
Modelo de maturidade em reutilizao de software (GARCIA et al., 2007, 2008)
Nvel 1 - Incompleto: neste nvel, apenas o desenvolvimento de software tradicional
realizado. Prticas de reutilizao so usadas esporadicamente ou mesmo ignoradas e
desencorajadas pela gerncia. Reutilizao fruto de esforo individual, e os custos da
reutilizao so desconhecidos. No existem prticas definidas para este nvel;
Nvel 2 - Bsico: este nvel caracterizado pela utilizao bsica de artefatos com
potencial de reutilizao. Engloba algumas atividades bsicas orientadas reutilizao,
e a implementao do domnio de forma direta, sem uma preocupao com anlise e
projeto mais voltados reutilizao;
262
2
AP2 - Planejamento de reutilizao: deve ser realizado de acordo com um
263
2
AP7 - Anlise de domnio: envolve a seleo e definio do domnio, anlise das
aplicaes existentes para identificao das caractersticas do domnio, definio
dos requisitos e escopo do domnio, identificao e documentao dos pontos
variveis e comuns, e a identificao e documentao de restries adicionais entre
as caractersticas do domnio. A abordagem possui uma fase especfica para a
anlise de domnio voltada para o MDD;
2
AP8 - Projeto de domnio: envolve a definio de uma arquitetura de referncia
para o domnio, que define a maneira com que os sistemas do domnio sero
construdos. Os requisitos, incluindo a variabilidade, devem ser mapeados para
solues tcnicas. Padres de projeto devem oferecer suporte estrutura varivel
que serve de base para os aplicativos do domnio. O arquiteto deve reduzir a
complexidade do projeto atravs de abstraes que consigam separar os principais
aspectos do domnio. O arquiteto deve modelar as abstraes de forma a permitir
o raciocnio sobre elas. Esta rea tambm envolve a avaliao arquitetural, visando
detectar falhas e erros antes da implementao comear. A abordagem engloba as
264
265
266
2
ENG1 - Decidir sobre convenes de modelagem: consiste na identificao
e seleo das convenes de modelagem a ser utilizadas pela equipe de
desenvolvimento. Para isso, definido o escopo do modelo: quais requisitos
podem/devem ser modelados. Tambm envolve a deciso sobre quais partes do
software sero feitas mo, e quais sero automaticamente geradas. So definidos
quais tipos de diagramas sero construdos e utilizados e com quais tcnicas de
modelagem. A abordagem possui uma atividade na qual so analisadas as
possibilidades de linguagens a serem utilizadas na modelagem;
2
PJM1 - Decidir sobre ferramentas de modelagem: envolve a seleo de
ferramentas que possam satisfazer s necessidades do projeto, de gerao de cdigo
e documentao. Deve levar em conta objetivos e restries do projeto, tais como
custos e durao. Assim como na atividade acima ENG1, a abordagem tambm
busca analisar ferramentas existentes para serem utilizadas;
2
2
ENG3 - Gerar cdigo a partir do modelo tcnico: ferramentas simples de
Nvel 3 - MDD Inicial: neste nvel introduz-se uma separao entre modelos de negcio
267
2
as
2
268
ligadas aos objetivos do projeto. O foco deve ser nas atividades especficas do MDD,
como qualidade arquitetural, corretude dos modelos, etc. A abordagem no define
nenhuma atividade referente definio, coleta e anlise de mtricas;
envolve
269
2
ENG10 - Desenvolver modelo de negcios: consiste na anlise dos requisitos de
negcio e criao de um modelo que representa como o sistema funciona, utilizando
entidades de negcio e relacionamento entre elas. A abordagem no est focada
em um tipo especfico de modelo, e portanto pode ser utilizada para desenvolver
modelos de negcio;
2
270
A abordagem no
linguagens
271
recursos para os papis das tarefas do projeto, estabelecer a durao das tarefas, etc.
As decises so feitas pelo gerente de projeto, seguindo diretrizes organizacionais.
Ferramentas de modelagem e suporte tambm podem ser integradas em um
ambiente de execuo capaz de orquestrar a execuo da instncia do processo. O
suporte execuo do projeto limita-se descrio da abordagem, em termos
de suas atividades, papis, entradas, sadas, etc. No existe um controle maior
sobre sua execuo, controle e melhoria, conforme previsto nesta prtica.
273
274
configurao
275
276
P:O formato de documentao proposto foi adequado, auxiliando na descrio dos artefatos
reutilizveis desenvolvidos?
R:A equipe no chegou a documentar os artefatos produzidos, alegando que os mesmos
foram desenvolvidos apenas como prottipos experimentais, e consideraram mais
prioritria a sua concluso e evoluo antes da documentao.
P:Quais foram as vantagens de se utilizar a abordagem de MDD no desenvolvimento?
R:Segundo a equipe, a abordagem permitiu atacar problemas recorrentemente
enfrentados pela equipe, tais como o alto nvel de retrabalho procurando cdigos
e testando cada mudana no domnio, a existncia de arquivos que nunca so
utilizados mas que so includos nos produtos por convenincia, o que acaba por
confundir os desenvolvedores e causando problemas de manuteno, e a necessidade
de busca por links que precisam removidos dependendo da configurao de produtos
adquiridos pelo cliente. A automao conseguida com o MDD permitiu reduzir
estes problemas de forma que no vinha sendo conseguida, por falta de tempo
e dificuldades em desenvolver uma soluo que atendesse a mltiplos clientes ao
mesmo tempo. Por exemplo, a equipe citou alguns chamados recentes enviados
por clientes via helpdesk, referentes alterao urgente de dados dos certificados
emitidos nos eventos, por no estarem de acordo com o exigido ou desejado. Sem o
MDD, era necessrio criar novo cdigo toda vez que um chamado deste tipo era feito.
Aps este projeto, que envolveu a implementao do sub-domnios de certificados,
este trabalho feito diretamente no modelo.
P:Quais foram as desvantagens de se utilizar a abordagem de MDD no desenvolvimento?
R:A equipe citou principalmente as dificuldades de implementao dos geradores de
cdigo, pois os mesmos misturam cdigo PHP (dos produtos) com cdigo JAVA
e marcaes do JET, em um mesmo arquivo. Porm, os participantes acreditam se
tratar de uma limitao imposta pela dificuldade no aprendizado destas tecnologias
P:Quais foram as dificuldades para o aprendizado da abordagem?
R:A equipe relatou dificuldades no aprendizado das tecnologias de modelagem e
gerao de cdigo, porm com relao abordagem citaram apenas que tiveram
dificuldades em compreender as funes especficas dos casos de mudana na
abordagem. Segundo eles, no ficou clara a necessidade de se criar mltiplos
cenrios para descrever pequenas partes do problema.
277