Return to search

A Model-driven approach to formal refactoring

Made available in DSpace on 2014-06-12T15:51:08Z (GMT). No. of bitstreams: 2
arquivo2011_1.pdf: 1679074 bytes, checksum: c82d3e4381d7c70bcfaffe3bf1eddd78 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2008 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior / Como qualquer outra tarefa evolucionária, a aplicação de refatoramentos em software
orientado a objetos normalmente afeta código-fonte e seus modelos relacionados, aumentando
a dificuldade de manutenção de artefatos corretos e consistentes. Devido à
distância de representação entre artefatos de modelagem e programação, o esforço ligado
a refatoramentos logo torna-se duplicado e custoso. Neste contexto, suporte de
ferramentas utilizado atualmente, em especial ferramentas de Round-Trip Engineering
(RTE), falha em automatizar tarefas de evolução. Consequentemente, a maioria dos
projetos de software descarta artefatos de modelagem precocemente, adotando abordagens
centradas unicamente em código-fonte. Esta tese propõe uma abordagem formal
para consistentemente refatorar modelos de objeto e programas orientados a objetos,
baseando o refatoramento apenas em modelos de objetos. Refatoramento de modelos
é fundamentado com transformações formais primitivas { leis de modelagem { que são
garantidamente preservadoras de semântica. Cada refatoramento aplicado a um modelo
de objetos é associado a uma sequência semi-automática de aplicações de leis de
programação preservadoras de comportamento, chamadas estrategias. Estrategias são
aplicadas na dependência de um relacionamento especifico de conformidade entre modelos
de objetos e programas, que devem satisfazer também um dado grau de confinamento.
Este trabalho formaliza 14 estratregias, duas para cada lei de modelagem que afeta estruturas
do programa. Estas estratregias são formalizadas como táticas de refinamento.
Desta forma, refatoramento correto de programas pode ser realizado com reduzida intervenção
manual do desenvolvedor, baseado apenas nas transformações que o mesmo
aplicou ao modelo. Neste cenario, refatoramentos complexos que afetam as principais
estruturas do programa podem ser aplicados a um artefato de mais alto nível de abstra
ção, deixando a atualização semi-automática dos detalhes de implementação para
as estratregias. Além disso, invariantes do modelo podem ser usados para aprimorar
ferramentas especializadas em refatoramento, já que modelos de objetos oferecem informação
semântica que permite refatoramentos automáticos mais poderosos. Esta tese
considera Alloy como linguagem de modelagem formal, além de uma linguagem de programação
similar a Java que chamamos BN. Para esta linguagem, introduzimos quatro
novos refatoramentos e leis de programação orientada a objetos, com suas provas e
derivações correspondentes. Adicionalmente, as leis de programação foram aplicadas
em uma semântica de referências, mais próxima de linguages de programação utilizadas
na prática. Com o intuito de delimitar a aplicabilidade desta abordagem, formalizamos
uma noção de conformidade entre modelos de objetos e programas, a partir de um
framework formal para definição de relacionamentos de conformidade; as definições formais
relacionadas foram especificadas e checadas quanto ao tipo na ferramenta PVS.
Além disso, estabelecemos e provamos manualmente um teorema para a corretude das
estratregias, definindo que elas preservam comportamento e conformidade dos programas
refatorados. Mesmo sendo uma abordagem formal, temos a preocupação de discutir sua
utilização prática, além de aplica-la em três estudos de caso. Os problemas apresentados
nesta tese certamente serão enfrentados em qualquer abordagem de desenvolvimento dirigida
por modelos, no momento em que se lida com evolução

Identiferoai:union.ndltd.org:IBICT/oai:repositorio.ufpe.br:123456789/1556
Date31 January 2008
CreatorsLima Massoni, Tiago
ContributorsHenrique Monteiro Borba, Paulo
PublisherUniversidade Federal de Pernambuco
Source SetsIBICT Brazilian ETDs
LanguageEnglish
Detected LanguagePortuguese
Typeinfo:eu-repo/semantics/publishedVersion, info:eu-repo/semantics/doctoralThesis
Sourcereponame:Repositório Institucional da UFPE, instname:Universidade Federal de Pernambuco, instacron:UFPE
Rightsinfo:eu-repo/semantics/openAccess

Page generated in 0.0026 seconds