Crystallizing Application Configurations
Software applications have both static and dynamic dependencies. Static dependencies are those derived from the source code. Dynamic runtime dependencies are established at runtime and may be based on information external to the source code, such as configuration files. Flexible applications c...
Main Author: | |
---|---|
Language: | en |
Published: |
University of Waterloo
2006
|
Subjects: | |
Online Access: | http://hdl.handle.net/10012/1208 |
id |
ndltd-LACETR-oai-collectionscanada.gc.ca-OWTU.10012-1208 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-LACETR-oai-collectionscanada.gc.ca-OWTU.10012-12082014-06-18T03:50:41Z Crystallizing Application Configurations Zhang, Zanqing Computer Science Crystallization Configuration Reverse Engineering Program Comprehension Software applications have both static and dynamic dependencies. Static dependencies are those derived from the source code. Dynamic runtime dependencies are established at runtime and may be based on information external to the source code, such as configuration files. Flexible applications commonly rely on configuration to adapt to diverse environments. An application's configuration encodes runtime dependencies between the various parts of the application. Reverse engineering tools have traditionally been based solely on static dependencies extracted from the source code. Neglecting dynamic dependencies encoded in an application's configuration can result in incorrect or incomplete program comprehension. Unfortunately, many applications store their configuration in an ad hoc, unstructured format from which it is not feasible to extract runtime dependencies by traditional reverse engineering. Our work takes advantage of well structured, published configuration formats, such as that of J2EE applications. Using these formats we are able to extend reverse engineering to analyse this previously neglected information. We introduce a technique called crystallization, which extracts configuration facts that encode dynamic dependencies. We use these recovered facts to predict and validate dynamic dependencies. Crystallizing configurations has the potential to increase developer productivity by providing better program comprehension. 2006-08-22T14:21:01Z 2006-08-22T14:21:01Z 2006 2006 Thesis or Dissertation http://hdl.handle.net/10012/1208 en Copyright: 2006, Zhang, Zanqing. All rights reserved. University of Waterloo |
collection |
NDLTD |
language |
en |
sources |
NDLTD |
topic |
Computer Science Crystallization Configuration Reverse Engineering Program Comprehension |
spellingShingle |
Computer Science Crystallization Configuration Reverse Engineering Program Comprehension Zhang, Zanqing Crystallizing Application Configurations |
description |
Software applications have both static and dynamic dependencies. Static dependencies are those derived from the source code. Dynamic runtime dependencies are established at runtime and may be based on information external to the source code, such as configuration files. Flexible applications commonly rely on configuration to adapt to diverse environments. An application's configuration encodes runtime dependencies between the various parts of the application. Reverse engineering tools have traditionally been based solely on static dependencies extracted from the source code. Neglecting dynamic dependencies encoded in an application's configuration can result in incorrect or incomplete program comprehension. Unfortunately, many applications store their configuration in an ad hoc, unstructured format from which it is not feasible to extract runtime dependencies by traditional reverse engineering. Our work takes advantage of well structured, published configuration formats, such as that of J2EE applications. Using these formats we are able to extend reverse engineering to analyse this previously neglected information. We introduce a technique called crystallization, which extracts configuration facts that encode dynamic dependencies. We use these recovered facts to predict and validate dynamic dependencies. Crystallizing configurations has the potential to increase developer productivity by providing better program comprehension. |
author |
Zhang, Zanqing |
author_facet |
Zhang, Zanqing |
author_sort |
Zhang, Zanqing |
title |
Crystallizing Application Configurations |
title_short |
Crystallizing Application Configurations |
title_full |
Crystallizing Application Configurations |
title_fullStr |
Crystallizing Application Configurations |
title_full_unstemmed |
Crystallizing Application Configurations |
title_sort |
crystallizing application configurations |
publisher |
University of Waterloo |
publishDate |
2006 |
url |
http://hdl.handle.net/10012/1208 |
work_keys_str_mv |
AT zhangzanqing crystallizingapplicationconfigurations |
_version_ |
1716669966277672960 |