Dependances Externes dans les Programmes : Specification, Detection et Inexactitudes.

Aless Hosry · theses.fr (ABES) · 2024

Successful software requires constant modifications. To guarantee the continuous proper functioning of the applications, developers need to understand them well, particularly by having an accurate map of the dependencies between the parts they are modifying. However, some of these dependencies are not easily identified. For example, in an Android application, there are dependencies between the Java source code and XML parts, some of which are materialized by a generated "R" Java class. Another example is software that connects to a database, where SQL queries are embedded within the source code of this software (such as in Java, .NET, etc.). These queries refer to database entities like tables and stored procedures. We call such dependencies external because they are introduced by some agent external to the source code. We call such dependencies external because they are introduced by some agent external to the source code. They are not easily detectable as they exist between parts (like different programming languages, different tiers ...). In this thesis, we developed a generic tool named Adonis, which uses reusable patterns to identify dependencies. We implemented this tool in the Pharo programming language and validated it across various open source and industrial projects. During implementation, we realized the need for a search engine capable of identifying parts of external dependencies, regardless of their source code language, their depth within the code, or the complexity of their location. To address this need, we created MoTion, a declarative pattern matching language capable of defining patterns and matching objects or trees of objects in imported models in Pharo, as well as matching text strings using regular expressions. Additionally, we discovered that external dependencies are sometimes incorrectly established, potentially leading to program flaws. Identifying these dependencies is crucial for developers to make informed decisions on correcting or removing them to avoid potential issues or side effects. We developed an approach to detect such incorrect external dependencies, based on both literature and our research findings, and validated this approach on the same open source and industrial projects as for Adonis.

Read the paper · More papers on PaperTik