Anmerkungen:
Diese Datenquelle enthält auch Bestandsnachweise, die nicht zu einem Volltext führen.
Beschreibung:
This thesis presents a framework to make ubiquitous low level references between arbitrary constructs in source code given in arbitrary programming languages explicit. While the problems that arise due to these implicit interlingual references are well-known to practitioners, there is no adequate tool-based solution up to today. The reason is, that such a tool needs to be capable to analyze source code in many languages and that the choice of these languages is subject to the specific requirements of a project: The tool has to be parametric in the languages themselves. The concept of datatype generic programming, developed in the functional programming community in recent years, builds up on ideas from category theory and there are working implementations especially in the Haskell-community. This approach finally allows to write type-safe software engineering tools that can be reused for (i.e. parametrized by) many languages. After the presentation of the underlying machinery and its application to real-life software engineering, we define these implicit interlingual references as links between specific subtrees in abstract syntax trees of possibly different languages. The notion of consistency for such a pair is then the definition of a function that maps two arbitrary subterms to a Boolean value. Based on this definition, we develop a framework that allows to manage such references, i.e. we can define, check and adapt them in a type-safe way. Finally, we perform a case study that proves that our approach works for real life languages and projects. We highlight the contributions of this work in the field of tension between theory and application: A theme that often reoccurs in scientific software engineering is abstraction - we seek for solutions that are independent of application specific context. But software engineering is about engineering, thus there are real-life problems in real-life applications that have to be solved. That means we have to identify a practical problem, abstract from everything ...