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...

Full description

Bibliographic Details
Main Author: Zhang, Zanqing
Format: Others
Language:en
Published: University of Waterloo 2006
Subjects:
Online Access:http://hdl.handle.net/10012/1208
id ndltd-WATERLOO-oai-uwspace.uwaterloo.ca-10012-1208
record_format oai_dc
spelling ndltd-WATERLOO-oai-uwspace.uwaterloo.ca-10012-12082013-01-08T18:49:17ZZhang, Zanqing2006-08-22T14:21:01Z2006-08-22T14:21:01Z20062006http://hdl.handle.net/10012/1208Software 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.application/pdf619047 bytesapplication/pdfenUniversity of WaterlooCopyright: 2006, Zhang, Zanqing. All rights reserved.Computer ScienceCrystallizationConfigurationReverse EngineeringProgram ComprehensionCrystallizing Application ConfigurationsThesis or DissertationSchool of Computer ScienceMaster of Mathematics
collection NDLTD
language en
format Others
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_ 1716572483446898688