ebook img

Engenharia reversa de padrões em arquitecturas reutilizáveis PDF

139 Pages·2005·3.73 MB·Portuguese
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Engenharia reversa de padrões em arquitecturas reutilizáveis

Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrote´cnica e de Computadores Engenharia Reversa de Padro˜es em Arquitecturas Reutiliza´veis Nuno Hono´rio Rodrigues Flores Licenciado em Engenharia Informa´tica e Computac¸a˜o pela Faculdade de Engenharia da Universidade do Porto Dissertac¸a˜o apresentada para a obtenc¸a˜o do grau de Mestre em Engenharia Informa´tica Dissertac¸a˜o realizada sob a orientac¸a˜o cient´ıfica de Doutor Ademar Manuel Teixeira de Aguiar Professor Auxiliar do Departamento de Electrote´cnica e Computadores da Faculdade de Engenharia da Universidade do Porto Porto, Setembro de 2005 ii Contacto : Nuno Hon´orio Rodrigues Flores Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrot´ecnica e de Computadores Rua Dr. Roberto Frias, s/n 4200 - 465 Porto PORTUGAL Tel: +351 91 4904126 Email : nuno.fl[email protected] Nuno Hon´orio Rodrigues Flores ”Engenharia Reversa de Padr˜oes em Arquitecturas Reutiliz´aveis” Copyright (cid:13)c 2005 Todos os direitos reservados iii aos meus pais, Eug´enio e Elvira. `a minha irm˜a, Raquel. Resumo O processo de engenharia reversa proposto nesta disserta¸c˜ao assenta numa abordagem de recupera¸c˜ao de desenho que real¸ca aqueles elementos que implementam a flexibilidade de uma framework, ajudando na sua aprendizagem e conveniente reutiliza¸c˜ao. As frameworks aplicacionais orientadas por objectos constituem uma poderosa t´ecnica de reutiliza¸c˜ao de software em larga escala. Atrav´es de elevados n´ıveis de reutiliza¸c˜ao de c´odigo e desenho,asframeworkspermitemaumentaraprodutividade,reduzirtemposdedesenvolvimento eaumentaraqualidadedasaplica¸c˜oes. Noentanto,antesdeseconseguirutilizarumaframework deformaeficaz,´enormalmentenecess´ariodedicartempoeesfor¸coconsider´aveisnaaprendizagem e compreens˜ao dos detalhes essenciais da sua arquitectura e desenho. Esta tarefa torna-se dif´ıcil e morosa, quando a framework n˜ao vem acompanhada de uma documenta¸c˜ao adequada, devido a m´as pr´aticas de manuten¸c˜ao e evolu¸c˜ao. A informa¸c˜ao sobre o desenho da framework perde-se com o tempo e torna-se indispon´ıvel ou dif´ıcil de obter. Frameworks e padr˜oes de desenho s˜ao dois conceitos fortemente relacionados, representando dois n´ıveis diferentes de abstrac¸c˜ao, ao n´ıvel da defini¸c˜ao do desenho e arquitectura de um sistema de software. Tipicamente, uma framework´e composta por diversos padr˜oes de desenho, pelo facto de estes seres extremamente u´teis na sua constru¸c˜ao, ao abordarem um problema recorrente com uma solu¸c˜ao considerada boa, dotando aquela de mecanismos que fomentam a sua extensibilidade e flexibilidade. Nesta disserta¸c˜ao ´e proposta uma abordagem de recupera¸c˜ao dos elementos de desenho de uma framework que a dotam de flexibilidade, nomeadamente padr˜oes de desenho. A abordagem assenta num processo semi-autom´atico de engenharia reversa dividido em fases, atrav´es das quais se detectam estruturas de desenho de crescente n´ıvel de abstrac¸c˜ao. A representa¸c˜ao dos padr˜oes de desenho baseia-se numa formaliza¸c˜ao recorrendo ao conceito de meta-padr˜ao, uma abstrac¸c˜ao de alto-n´ıvel e que define a estrutura e relacionamento dos elementos constituintes dos padr˜oes de desenho, os mesmos que lhe conferem a flexibilidade. Esta abordagem permite ao utilizador de uma framework uma r´apida consciencializa¸c˜ao dos pontosdevariabilidadedesta,atrav´esdofornecimentoderesultadosinterm´ediosu´teis(hot spots, meta-padr˜oes e padr˜oes de desenho) e que ajudam na eficaz reutiliza¸c˜ao do c´odigo e desenho da framework: o seu principal prop´osito. v Abstract Thereverseengineeringprocessproposedinthisdissertationreliesonadesignrecoveryapproach that aims at recovering flexible framework design elements, thus assisting in its learning process and efective reuse. Object-oriented frameworks are a powerful technique for large-scale reuse that helps developers achieve higher productivity and shorter time-to-market through high levels of design and code reuse. However, before starting to use a frawework successfully, users usually need to invest time on understanding its underlying architecture and design principles. This can be a dificult and tiresome task, when the available framework documentation is poorly written, lacks detail and is clearly outdated. Design information is lost throughout maintenance and evolution and becomes unavailable or hard to find. Frameworks and design patterns are closely retaled concepts, representing two different categories of high-level design abstractions. A single framework typically encompasses several designpatterns, astheyprovideagoodgenericsolutiontoarecurringdesignproblem, becoming the building blocks for the framework flexibility and extensibility aspects. This dissertation presents an approach for recovering frawework design, namely design patterns,throughasemi-automaticreverseengineeringmulti-phasedprocessthatrecoversdesign elements of increasing level of abstraction. Design patterns are represented through a formal modelbasedonmetapatterns, ahigh-levelabstractionthatstructuresandrelatesitsconstituent elements, the same that provide flexibility to the framework. This approach helps on the understanding of a framework’s design by providing useful intermediate results (hot spots, metapatterns and design patterns), therefore assisting on the learning process and supporting an efective design and code reuse: a framework’s main goal. vii Pref´acio ”A Carolina ´e uma tola Que tudo faz ao rev´es Veste-se pela cabe¸ca E veste-se pelos p´es” excertodeumacan¸c˜aopopular Assim como o vestir da Carolina, tamb´em a engenharia se pode fazer de tr´as para a frente como da frente para tr´as. A primeira vez que ouvi falar de engenharia reversa foi durante o relato da raz˜ao pela qual muito provavelmente, hoje em dia, o mercado de venda de computadores de pessoais ´e t˜ao competitivo: ”Como a Compaq clonou o IBM PC”. Em Fevereiro de 1982, trˆes gestores da grande Texas Instruments (Rod Canion, Jim Harris e Bill Murto ), deixam a multinacional e investem 1000 dolares cada na cria¸c˜ao da sua empresa: a Compaq Computer Corporation. O seu primeiro produto, rabiscado num papel `a mesa de um caf´e em Houston, foi um computador port´atil 100% compat´ıvel com o IBM PC, na altura, o popular monopolista dos computadores pessoaisedetentorpatenteadodasuapr´opriaBIOS,n˜aodivulgada. Como? Engenhariareversa. Impedimentos legais impediam a Compaq de copiar a BIOS do IBM PC para a sua m´aquina por forma a torn´a-la 100% compat´ıvel, pois tal seria f´acil de provar. A solu¸c˜ao passou por ter dois grupos de programadores: o primeiro com acesso ao c´odigo-fonte da IBM, o segundo sem conhecimento nenhum `acerca deste. O primeiro grupo analisouo c´odigo e tomou anota¸c˜oes, criandoumdocumentoqueespecificavaquaisasfuncionalidadesfornecidaspeloc´odigo,massem revelar detalhes de implementa¸c˜ao. O segundo grupo pegou no documento e desenvolveu todo o sistema de raiz. Um ano e um milh˜ao de d´olares depois, conseguiram ter em funcionamento, e de forma perfeitamente legal, uma BIOS idˆentica `a da IBM. Adicionalmente, o produto da Compaq era port´atil, e n˜ao muito maior que uma mala de viagem (das pequenas). Resultado: 111 milh˜oes de dolares de vendas no primeiro ano, batendo o recorde de volume de neg´ocios nos Estados Unidos da Am´erica. Na altura, meados de 19971, este relato despertou-me primeiro o espanto, mas depois o interesse pela forma como a engenharia reversa funcionava, n˜ao pelas potenciais ilegalidades, como ´e ´obvio, mas pelo processo de an´alise e descoberta. Claro que, n˜ao estando ligado directamente ao hardware, explorei alguns aspectos da engenharia reversa de software. Tal 1Pode-se pensar que a engenharia reversa ´e um assunto muito espec´ıfico do campo da engenharia mas a sua popularidade tem vindo a aumentar, havendo mesmo despertado o interesse da industria cinematogr´afica de Hollywood que recentemente produziu um filme cujo teor gira `a volta da engenharia reversa (falo do filme ”Paycheck”de Jonh Woo, de 2003). ix x Pref´acio explora¸c˜ao levou-me a conhe¸cer os padr˜oes de desenho, n˜ao tanto como produtos de engenharia reversa, mas como ferramentas de desenho de software. Rapidamente me tornei adepto da sua utiliza¸c˜ao e cheguei mesmo a ”evangelizar”alguns colegas, mais chegados, na sua utiliza¸c˜ao. Durante as minhas incurs˜oes na vida profissional, sempre que podia empregava padr˜oes de desenho no desenvolvimento de solu¸c˜oes `a medida para problemas recorrentes (e sim, eram bastante recorrentes). Da´ı at´e `a utiliza¸c˜ao de frameworks foi um salto. A sua utilidade rapidamente me fez recorrer a elas como fonte de solu¸c˜oes e desenvolvimento r´apido e seguro. Por outro lado, a sua complexidade associada a alguma genialidade de constru¸c˜ao, seduzia-me. Sempre achei que codificar devia ser tamb´em uma arte, pois envolve creatividade, imagina¸c˜ao e inspira¸c˜ao. Decidido a continuar os meus estudos, enveredei pelo mestrado, sabendo de antem˜ao que o tema da disserta¸c˜ao andaria sempre h´a volta destes conceitos, ou, no seu ˆambito mais alargado, em redor da engenharia de software. Durante a cadeira de Arquitectura de Sistemas de Software, cujo docente viria a ser o meu orientador, abordaram-se todos os temas sob os quais eu tinha interesse: frameworks, padr˜oes de desenho, padr˜oes de arquitectura, reengenharia, reestrutura¸c˜ao de c´odigo, etc. Consequentemente, recaiu a escolha de um trabalho pr´atico no desenvolvimento de uma ferramenta de recupera¸c˜ao de desenho, no caso, de hot spots, pontos de variabilidade e flexibilidade de uma framework, no seu n´ıvel de abstrac¸c˜ao mais baixo. Estava lan¸cado o mote para o que viria a ser o tema da disserta¸c˜ao. A proposta concreta para o tema surgiu da tese de doutoramento [Aguiar 03b] do meu orientador, o Doutor Ademar Aguiar, que aborda a problem´atica em torno da documenta¸c˜ao de uma framework e que prop˜oe uma abordagem minimalista. Em conversa sobre o assunto, tentei meter a engenharia reversa e os padr˜oes de desenho ao barulho, temas que encaixaram muito bem logo desde o in´ıcio. As dificuldades inerentes `a documenta¸c˜ao, como ferramenta de comunica¸c˜ao do desenho e uso das frameworks, tinham como uma das solu¸c˜oes o uso de padr˜oes de desenho e meta-padr˜oes como bons representadores das no¸c˜oes de desenho de alto-n´ıvel e, por conseguinte, bons para usar na documenta¸c˜ao. Estes factos, aliados `as m´as pr´aticas de manuten¸c˜ao e evolu¸c˜ao da documenta¸c˜ao, levantaram o problema de recuperar o desenho perdido ao longo de itera¸c˜oes sucessivas, onde se menospreza a actualiza¸c˜ao conveniente da documenta¸c˜ao. Foicomestaproblem´aticaemmente,quesepartiuparaestadisserta¸c˜ao: exploraradefini¸c˜ao de um processo que procedesse `a recupera¸c˜ao do desenho perdido, e que fosse u´til para aprender a utilizar a framework. Como consequˆencia, a abordagem teria como pedras basilares, os meta-padr˜oes, ambos bons na representa¸c˜ao dos pontos de flexibilidade e na documenta¸c˜ao da frameworks e como objectivo final a identifica¸c˜ao de instˆancias de padr˜oes de desenho. Um dos seus contextos seria a continua¸c˜ao de uma das vertentes de trabalho futuro, despoletado pela tese de doutoramento do meu orientador. Findo o trabalho de investiga¸c˜ao, resta dizer que o entusiasmo s´o aumentou e o potencial para continuar o trabalho nesta ´area ´e enorme. As dificuldades que existiram, sobretudo a n´ıvel temporal, fizeram-me tomar consciˆencia de ˆambitos dos quais n˜ao tinha no¸c˜ao e tomar contacto com determinadas no¸c˜oes de grande interesse pessoal. A todos os que me apoiaram neste trabalho, queria agradecer primeiro e muito em especial ao meu orientador Ademar Aguiar, que, acima de tudo, foi um companheiro, amigo e colega. Desde o in´ıcio esteve sempre dispon´ıvel, sempre motivador e sempre crente no trabalho e no seu executante. Foium apoioconstanteemtodasas fases dotrabalhoetinhasempre aquelapalavra

Description:
componentes e arquitecturas reutilizáveis, como sejam a CORBA [Group 05], J2EE. [Microsystems .. (CORBA, DCOM, Java RMI) foram construıdas sem terem efectivamente capacidade de abranger de desenvolvimento de ferramentas de visualizaç˜ao denominada Luthier [Campo 97], os autores.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.