<?xml version="1.0" encoding="UTF-8"?><mets:mets xmlns:mets="http://www.loc.gov/METS/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:mads="http://www.loc.gov/mads/" xmlns:metsRights="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:suj="http://www.theses.fr/namespace/sujets" xmlns:tef="http://www.abes.fr/abes/documents/tef" xmlns:tefextension="http://www.abes.fr/abes/documents/tefextension" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/METS/ http://www.abes.fr/abes/documents/tef/recommandation/tef_schemas.xsd">
<mets:metsHdr CREATEDATE="2024-11-22T12:59:05" ID="ABES.STAR.THESE_225031.METS_HEADER" LASTMODDATE="2025-04-11T10:50:28" RECORDSTATUS="valide">
<mets:agent ROLE="CREATOR">
<mets:name/>
<mets:note>Note</mets:note>
</mets:agent>
<mets:agent ROLE="DISSEMINATOR">
<mets:name>ABES</mets:name>
</mets:agent>
<mets:altRecordID ID="ABES.STAR.THESE_225031.METS_HEADER.ALTERNATE" TYPE=""/>
</mets:metsHdr>
<mets:dmdSec ID="ABES.STAR.THESE_225031.DESCRIPTION_BIBLIOGRAPHIQUE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_these">
<mets:xmlData>
<tef:thesisRecord>
<dc:title xml:lang="fr">Dépendances externes dans les programmes : spéci?cation, détection et inexactitudes</dc:title>
<dcterms:alternative xml:lang="en">External Dependencies in Programs : Specification, Detection and Incorrectness</dcterms:alternative>
<dc:subject xml:lang="fr">Dépendances externes</dc:subject>
<dc:subject xml:lang="fr">Dépendances incorrectes</dc:subject>
<dc:subject xml:lang="fr">Qualité logicielle</dc:subject>
<dc:subject xml:lang="fr">Correspondance de motifs</dc:subject>
<dc:subject xml:lang="en">External dependencies</dc:subject>
<dc:subject xml:lang="en">Incorrect dependencies</dc:subject>
<dc:subject xml:lang="en">Software quality</dc:subject>
<dc:subject xml:lang="en">Pattern matching</dc:subject>
<dc:subject xsi:type="dcterms:DDC"/>
<tef:sujetRameau xml:lang="fr">
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="028909917" autoriteSource="Sudoc">Logiciels -- Développement</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="027241408" autoriteSource="Sudoc">Logiciels</tef:elementdEntree>
<tef:subdivision autoriteExterne="027789810" autoriteSource="Sudoc" type="subdivisionDeSujet">Qualité</tef:subdivision>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="12859683X" autoriteSource="Sudoc">Code source (informatique)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="181324385" autoriteSource="Sudoc">Pharo (langage de programmation)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
</tef:sujetRameau>
<dcterms:abstract xml:lang="fr">Un logiciel réussi nécessite des modifications constantes.Pour garantir le bon fonctionnement continu des applications, les développeurs doivent bien les comprendre, notamment en ayant une carte précise des dépendances entre les parties qu'ils modifient.Cependant, certaines de ces dépendances ne sont pas facilement identifiables.Par exemple, dans une application Android, il existe des dépendances entre le code source Java et les parties XML, dont certaines sont matérialisées par une classe Java "R" générée.Un autre exemple est le logiciel qui se connecte à une base de données, où des requêtes SQL sont intégrées dans le code source de ce logiciel (comme en Java, .NET, etc.).Ces requêtes font référence à des entités de base de données telles que des tables et des procédures stockées.Nous appelons ces dépendances externes car elles sont introduites par un agent externe au code source.Elles ne sont pas facilement détectables car elles existent entre des parties (comme différents langages de programmation, différentes couches, etc.).Dans cette thèse, nous avons développé un outil générique nommé Adonis, qui utilise des modèles réutilisables pour identifier les dépendances.Nous avons implémenté cet outil dans le langage de programmation Pharo et l'avons validé sur divers projets open source et industriels. Au cours de l'implémentation, nous avons réalisé la nécessité d'un moteur de recherche capable d'identifier des parties de dépendances externes, indépendamment de leur langage de code source, de leur profondeur dans le code ou de la complexité de leur emplacement.Pour répondre à ce besoin, nous avons créé MoTion, un langage de correspondance de motifs déclaratif capable de définir des modèles et de faire correspondre des objets ou des arbres d'objets dans des modèles importés dans Pharo, ainsi que de faire correspondre des chaînes de texte à l'aide d'expressions régulières.De plus, nous avons découvert que les dépendances externes sont parfois établies de manière incorrecte, ce qui peut entraîner des défauts dans le programme.Identifier ces dépendances est crucial pour que les développeurs puissent prendre des décisions éclairées sur leur correction ou leur suppression afin d'éviter des problèmes ou des effets secondaires potentiels.Nous avons développé une approche pour détecter ces dépendances externes incorrectes, basée à la fois sur la littérature et nos résultats de recherche, et avons validé cette approche sur les mêmes projets open source et industriels que pour Adonis.</dcterms:abstract>
<dcterms:abstract xml:lang="en">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.</dcterms:abstract>
<dc:type>Electronic Thesis or Dissertation</dc:type>
<dc:type xsi:type="dcterms:DCMIType">Text</dc:type>
<dc:language xsi:type="dcterms:RFC3066">en</dc:language>
</tef:thesisRecord>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
<mets:dmdSec ID="ABES.STAR.THESE_225031.VERSION_COMPLETE.DESCRIPTION.EDITION_ARCHIVAGE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_edition">
<mets:xmlData>
<tef:edition>
<dcterms:medium xsi:type="dcterms:IMT">PDF</dcterms:medium>
<dcterms:extent>17385064</dcterms:extent>
<dc:identifier xsi:type="dcterms:URI">https://pepite-depot.univ-lille.fr/LIBRE/EDMADIS/2024/2024ULILB045.pdf</dc:identifier>
<dc:identifier xsi:type="dcterms:URI"/>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-05031064</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.fr/2024ULILB045/abes</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-05031064</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-05031064</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-05031064</dc:identifier>
</tef:edition>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
<mets:amdSec>
<mets:techMD ID="ABES.STAR.THESE_225031.ADMINISTRATION">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_admin_these">
<mets:xmlData>
<tef:thesisAdmin>
<tef:auteur>
<tef:nom>Hosry</tef:nom>
<tef:prenom>Aless</tef:prenom>
<tef:nomDeNaissance>Hosry</tef:nomDeNaissance>
<tef:dateNaissance>1994-06-23</tef:dateNaissance>
<tef:nationalite scheme="ISO-3166-1">LB</tef:nationalite>
<tef:autoriteExterne autoriteSource="Sudoc">284281026</tef:autoriteExterne>
</tef:auteur>
<dc:identifier xsi:type="tef:nationalThesisPID">https://theses.fr/2024ULILB045</dc:identifier>
<dc:identifier xsi:type="tef:NNT">2024ULILB045</dc:identifier>
<dc:identifier xsi:type="tef:DOI">https://doi.org/10.70675/df132dbaz4026z495azb9d2zc692881158c8</dc:identifier>
<dcterms:dateAccepted xsi:type="dcterms:W3CDTF">2024-12-06</dcterms:dateAccepted>
<tef:thesis.degree>
<tef:thesis.degree.discipline xml:lang="fr">Informatique et applications</tef:thesis.degree.discipline>
<tef:thesis.degree.grantor>
<tef:nom>Université de Lille (2022-....)</tef:nom>
<tef:autoriteExterne autoriteSource="Sudoc">259265152</tef:autoriteExterne>
</tef:thesis.degree.grantor>
<tef:thesis.degree.level>Doctorat</tef:thesis.degree.level>
<tef:thesis.degree.name xml:lang="fr">Docteur es</tef:thesis.degree.name>
</tef:thesis.degree>
<tef:theseSurTravaux>non</tef:theseSurTravaux>
<tef:avisJury>oui</tef:avisJury>
<tef:directeurThese>
<tef:nom>Anquetil</tef:nom>
<tef:prenom>Nicolas</tef:prenom>
<tef:autoriteInterne>MADS_DIRECTEUR_DE_THESE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">15665959X</tef:autoriteExterne>
</tef:directeurThese>
<tef:presidentJury>
<tef:nom>Rudametkin</tef:nom>
<tef:prenom>Walter</tef:prenom>
<tef:autoriteInterne>MADS_PRESIDENT_DU_JURY</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">169898180</tef:autoriteExterne>
</tef:presidentJury>
<tef:rapporteur>
<tef:nom>Sadou</tef:nom>
<tef:prenom>Salah</tef:prenom>
<tef:autoriteInterne>MADS_RAPPORTEUR_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">077766148</tef:autoriteExterne>
</tef:rapporteur>
<tef:rapporteur>
<tef:nom>El Boussaidi</tef:nom>
<tef:prenom>Ghizlane</tef:prenom>
<tef:autoriteInterne>MADS_RAPPORTEUR_2</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">284275794</tef:autoriteExterne>
</tef:rapporteur>
<tef:ecoleDoctorale>
<tef:nom>École graduée Mathématiques, sciences du numérique et de leurs interactions (Lille ; 2021-....)</tef:nom>
<tef:autoriteInterne>MADS_ECOLE_DOCTORALE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">258621362</tef:autoriteExterne>
</tef:ecoleDoctorale>
<tef:partenaireRecherche type="laboratoire">
<tef:nom>Centre de Recherche en Informatique, Signal et Automatique de Lille</tef:nom>
<tef:autoriteInterne>MADS_PARTENAIRE_DE_RECHERCHE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="labTEL">410272</tef:autoriteExterne>
<tef:autoriteExterne autoriteSource="Sudoc">18388695X</tef:autoriteExterne>
</tef:partenaireRecherche>
<tef:partenaireRecherche type="laboratoire">
<tef:nom>Centre Inria de l'Université de Lille</tef:nom>
<tef:autoriteInterne>MADS_PARTENAIRE_DE_RECHERCHE_2</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="labTEL">104752</tef:autoriteExterne>
<tef:autoriteExterne autoriteSource="Sudoc">185432247</tef:autoriteExterne>
</tef:partenaireRecherche>
<tef:partenaireRecherche autreType="Financeur" type="autreType">
<tef:nom>Université de Lille (2018-2021)</tef:nom>
<tef:autoriteInterne>MADS_PARTENAIRE_DE_RECHERCHE_3</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">223446556</tef:autoriteExterne>
</tef:partenaireRecherche>
<tef:partenaireRecherche autreType="Financeur" type="autreType">
<tef:nom>Institut national de recherche en informatique et en automatique (France ; 1979-....)</tef:nom>
<tef:autoriteInterne>MADS_PARTENAIRE_DE_RECHERCHE_4</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">026489171</tef:autoriteExterne>
</tef:partenaireRecherche>
<tef:oaiSetSpec>ddc:004</tef:oaiSetSpec>
<tef:MADSAuthority authorityID="MADS_DIRECTEUR_DE_THESE_1" type="personal">
<tef:personMADS>
<mads:namePart type="family">Anquetil</mads:namePart>
<mads:namePart type="given">Nicolas</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PRESIDENT_DU_JURY" type="personal">
<tef:personMADS>
<mads:namePart type="family">Rudametkin</mads:namePart>
<mads:namePart type="given">Walter</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_RAPPORTEUR_1" type="personal">
<tef:personMADS>
<mads:namePart type="family">Sadou</mads:namePart>
<mads:namePart type="given">Salah</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_RAPPORTEUR_2" type="personal">
<tef:personMADS>
<mads:namePart type="family">El Boussaidi</mads:namePart>
<mads:namePart type="given">Ghizlane</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_ECOLE_DOCTORALE_1" type="corporate">
<tef:personMADS>
<mads:namePart type="family">École graduée Mathématiques, sciences du numérique et de leurs interactions (Lille ; 2021-....)</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PARTENAIRE_DE_RECHERCHE_1" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Centre de Recherche en Informatique, Signal et Automatique de Lille</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PARTENAIRE_DE_RECHERCHE_2" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Centre Inria de l'Université de Lille</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PARTENAIRE_DE_RECHERCHE_3" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Université de Lille (2018-2021)</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PARTENAIRE_DE_RECHERCHE_4" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Institut national de recherche en informatique et en automatique (France ; 1979-....)</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
</tef:thesisAdmin>
</mets:xmlData>
</mets:mdWrap>
</mets:techMD>
<mets:techMD ID="ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE.TECH_FICHIER.DOSSIER_1.DOSSIER_1.FICHIER_1">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_tech_fichier">
<mets:xmlData>
<tef:meta_fichier>
<tef:formatFichier>PDF</tef:formatFichier>
<tef:taille>17385064</tef:taille>
</tef:meta_fichier>
</mets:xmlData>
</mets:mdWrap>
</mets:techMD>
<mets:rightsMD ID="ABES.STAR.THESE_225031.DROITS_UNIVERSITE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_etablissement_these">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
<mets:rightsMD ID="ABES.STAR.THESE_225031.DROITS_DOCTORANT">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_auteur_these">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
<mets:rightsMD ID="ABES.STAR.THESE_225031.VERSION_COMPLETE.DROITS">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_version">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
</mets:amdSec>
<mets:fileSec>
<mets:fileGrp ID="ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE.FILEGRP" USE="archive_et_diffusion">
<mets:file ADMID="ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE.TECH_FICHIER.DOSSIER_1.DOSSIER_1.FICHIER_1" ID="ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE.DOSSIER_1.DOSSIER_1.FICHIER_1" SEQ="1">
<mets:FLocat LOCTYPE="URL" xlink:href="ULIL/THESE_225031/document/0/0/These_HOSRY_Aless.pdf"/>
</mets:file>
</mets:fileGrp>
</mets:fileSec>
<mets:structMap TYPE="logical">
<mets:div ADMID="ABES.STAR.THESE_225031.ADMINISTRATION ABES.STAR.THESE_225031.DROITS_UNIVERSITE ABES.STAR.THESE_225031.DROITS_DOCTORANT" CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_225031" DMDID="ABES.STAR.THESE_225031.DESCRIPTION_BIBLIOGRAPHIQUE" TYPE="THESE">
<mets:div ADMID="ABES.STAR.THESE_225031.VERSION_COMPLETE.DROITS" CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_225031.ABES.STAR.THESE_225031.VERSION_COMPLETE" TYPE="VERSION_COMPLETE">
<mets:div CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE" DMDID="ABES.STAR.THESE_225031.VERSION_COMPLETE.DESCRIPTION.EDITION_ARCHIVAGE" TYPE="EDITION">
<mets:fptr FILEID="ABES.STAR.THESE_225031.VERSION_COMPLETE.EDITION_ARCHIVAGE.FILEGRP"/>
</mets:div>
</mets:div>
</mets:div>
</mets:structMap>
</mets:mets>