Adaptability and Encapsulation in Dynamically-Typed Languages: Taming Reflection and Extension Methods - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2016

Adaptability and Encapsulation in Dynamically-Typed Languages: Taming Reflection and Extension Methods

Adaptabilité et Encapsulation dans les Langages Dynamiquement Typés: Dompter la Réflexion et les Méthode d'Extension

Résumé

Users expect modern software to be both continually available and updated on the fly. Introduction of new features and integration of bug fixes should not trouble the smooth running of an application. Developers also benefit from dynamic mod- ifications of software, e.g. they can adapt code to new unanticipated situations or they can run dynamic analyses to get feedback about the behavior of running applications for monitoring, debugging and optimization purposes. Programming languages and their runtimes should thus provides developers with mechanisms that improve software adaptability. At the same time, the increasing size and complexity of software call for ap- plications made up of many interacting components developed by different parties. In this context, either all components are trusted or each component needs to be properly protected from other ones. For example, a plugin should not be able to manipulate the internal structures or leaks private data of its host application unre- strictedly. Likewise, a malicious library should not be able to corrupt its clients or interfere with their operations. Programming languages should thus provide devel- opers with mechanisms that improve software isolation, such as encapsulation and custom access control policies. The need for dynamic adaptations that can change nearly every aspect of an application on the one hand and the need for properly confined components on the other hand pulls programming language design in two opposite directions: ei- ther more flexibility or more control. This dissertation studies this tension in the context of dynamically-typed object-oriented languages with two language mech- anisms that promote software adaptability: reflection and extension methods. For both mechanisms, we demonstrate their usefulness, their harmful effect on encap- sulation and propose solutions to retain their power while maintaining encapsula- tion.
Les utilisateurs s’attendent à ce que les logiciels d’aujourd’hui soient à la fois con- tinuellement disponibles et mis-à-jour à la volée. L’introduction de nouvelles fonc- tionnalités et l’intégration de correctifs ne doit pas perturber la bonne marche d’une application. Les développeurs bénéficient aussi de la modification dynamique des logiciels: par exemple, ils peuvent adapter le code à de nouvelle situations non anticipées ou bien ils peuvent exécuter des analyses dynamiques pour obtenir du retour sur le comportement d’applications en cours d’exécution, et ce, à des fins de monitorage, de déboggage et d’optimisation. Les languages de programmation et leurs environments d’exécution doivent donc fournir aux développeurs des mécan- ismes qui améliorent l’adaptabilité logicielle. Dans le même temps, l’augmentation de la taille et de la complexité des logi- ciels requièrent des applications faites de nombreux composants développés par différents groupes. Dans ce contexte, soit tous les composant sont supposés dignes de confiance ou bien chaque composant doit être convenablement protégé des autres. Par exemple, un greffon logiciel ne doit pas être capable de manipuler les structures internes ou bien de divulguer les données privée de son application hôte de manière non contrôlée. De la même manière, une bibliothèque malveillante ne doit pas pouvoir corrompre ses clients ou interférer dans leurs opérations. Les lan- guages de programmation doivent donc fournir aux développeurs des mécanismes qui améliorent l’isolation logicielle, tels que l’encapsulation et des politiques de contrôle d’accès sur mesure. Le besoin de supporter des adaptations dynamiques qui peuvent change quasi- ment chaque aspect d’une application d’un côté, et le besoin d’avoir des com- posants convenablement confinés d’un autre côté, poussent la conception des lan- guages de programmation dans deux directions opposées: soit plus de flexibilité, soit plus de contrôle. Cette dissertation étudie cette tension dans le contexte des languages orientée-objet dynamiquement typés via deux mécanismes qui promeu- vent l’adaptabilité logicielle: la réflexion et les méthodes d’extension. Pour cha- cun de ces mécanismes, nous démontrons leur utilité, leurs effets néfastes sur l’encapsulation et proposons des solutions qui conservent leurs forces tout en main- tenant l’encapsulation.
Fichier principal
Vignette du fichier
PhD-2016-Teruel.pdf (1.04 Mo) Télécharger le fichier
Loading...

Dates et versions

tel-01290364 , version 1 (18-03-2016)

Identifiants

  • HAL Id : tel-01290364 , version 1

Citer

Camille Teruel. Adaptability and Encapsulation in Dynamically-Typed Languages: Taming Reflection and Extension Methods. Programming Languages [cs.PL]. Université des Sciences et Technologies de Lille, 2016. English. ⟨NNT : ⟩. ⟨tel-01290364⟩
251 Consultations
297 Téléchargements

Partager

Gmail Facebook X LinkedIn More