• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 5
  • 3
  • 1
  • Tagged with
  • 9
  • 9
  • 9
  • 4
  • 4
  • 4
  • 4
  • 3
  • 2
  • 2
  • 2
  • 2
  • 1
  • 1
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

Modularisation de la sécurité informatique dans les systèmes distribués / Modularization of security software engineering in distributed systems

Serme, Gabriel 05 November 2013 (has links)
Intégrer les problématiques de sécurité au cycle de développement logiciel représente encore un défi à l’heure actuelle, notamment dans les logiciels distribués. La sécurité informatique requiert des connaissances et un savoir-faire particulier, ce qui implique une collaboration étroite entre les experts en sécurité et les autres acteurs impliqués. La programmation à objets ou à base de composants est communément employée pour permettre de telles collaborations et améliorer la mise à l’échelle et la maintenance de briques logicielles. Malheureusement, ces styles de programmation s’appliquent mal à la sécurité, qui est un problème transverse brisant la modularité des objets ou des composants. Nous présentons dans cette thèse plusieurs techniques de modularisation pour résoudre ce problème. Nous proposons tout d’abord l’utilisation de la programmation par aspect pour appliquer de manière automatique et systématique des techniques de programmation sécurisée et ainsi réduire le nombre de vulnérabilités d’une application. Notre approche se focalise sur l’introduction de vérifications de sécurité dans le code pour se protéger d’attaques comme les manipulations de données en entrée. Nous nous intéressons ensuite à l’automatisation de la mise en application de politiques de sécurité par des techniques de programmation. Nous avons par exemple automatisé l’application de règles de contrôle d’accès fines et distribuées dans des web services par l’instrumentation des mécanismes d’orchestration de la plate-forme. Nous avons aussi proposé des mécanismes permettant l’introduction d’un filtrage des données à caractère privée par le tissage d’aspects assisté par un expert en sécurité. / Addressing security in the software development lifecycle still is an open issue today, especially in distributed software. Addressing security concerns requires a specific know-how, which means that security experts must collaborate with application programmers to develop secure software. Object-oriented and component-based development is commonly used to support collaborative development and to improve scalability and maintenance in software engineering. Unfortunately, those programming styles do not lend well to support collaborative development activities in this context, as security is a cross-cutting problem that breaks object or component modules. We investigated in this thesis several modularization techniques that address these issues. We first introduce the use of aspect-oriented programming in order to support secure programming in a more automated fashion and to minimize the number of vulnerabilities in applications introduced at the development phase. Our approach especially focuses on the injection of security checks to protect from vulnerabilities like input manipulation. We then discuss how to automate the enforcement of security policies programmatically and modularly. We first focus on access control policies in web services, whose enforcement is achieved through the instrumentation of the orchestration mechanism. We then address the enforcement of privacy protection policies through the expert-assisted weaving of privacy filters into software. We finally propose a new type of aspect-oriented pointcut capturing the information flow in distributed software to unify the implementation of our different security modularization techniques.
2

Effective aspects : A typed monadic model to control and reason about aspect interference / Effective aspects : Un modèle monadique et typé pour contrôler l’interférence entre aspects

Figueroa, Ismael 22 April 2014 (has links)
La programmation orientée aspect (AOP) vise à améliorer la modularité et la réutilisation des couches logiciels en proposant un mécanisme d’abstraction pour faire face aux préoccupations transversales. Cependant, dans la plupart des langages d’aspects généralistes, les aspects ont un pouvoir presque illimité, rentrant éventuellement en conflit avec ces objectifs. Dans ce travail, nous présentons Effective Aspects : une nouvelle approche pour incorporer le modèle pointcut/advice de l’AOP dans un langage de programmation fonctionnel statiquement typé comme Haskell. Notre travail comprend deux contributions principales. Premièrement, nous définissons un plongement monadique du modèle pointcut/advice complet de l’AOP. La correction du typage est garantie par l’exploitation du système de type sous-jacent, en particulier les types fantômes et une nouvelle classe de type pour faire de l’anti-unification de types. Dans ce modèle, les aspects sont de première classe, peuvent être déployés de façon dynamique, et le langage de pointcuts est extensible, combinant donc la flexibilité des langages d’aspect typés dynamiquement avec les garanties d’un système de type statique. Les monades nous permettent de raisonner directement sur les effets du calcul à la fois dans les aspects et les programmes de base en utilisant des techniques monadiques traditionnelle. Avec ce système, nous étendons la notion de “open modules” avec des effets, et aussi avec les interfaces de pointcut protégés à l’extérieur d’un advice. Ces restrictions sont appliquées statiquement par le système de type. Aussi, nous adaptons les techniques de EffectiveAdvice afin de raisonner sur des propriétés du flot de contrôle. En outre, nous montrons comment contrôler l’interférence des effets en utilisant l’approche fondée sur la paramétricité de EffectiveAdvice. Nous montrons que cette approche n’est pas satisfaisante en présence de multiples aspects et proposons une approche différente en utilisant des vues monadiques, une nouvelle technique pour le traitement de la pile monadique, développée par Schrijvers et Oliveira. Ensuite, nous exploitons les propriétés de notre modèle pour permettre la construction modulaire de nouvelles sémantiques pour la portée d’aspects et le tissage. Notre deuxième contribution s’appuie sur un modèle puissant pour raisonner sur la composition de mixins avec effets et leur interférence, fondée sur un raisonnement équationnelle, paramétrique, et les lois algébriques sur les effets monadiques. Notre contribution est de montrer comment raisonner sur l’interférence en présence de quantification sans restriction pour les pointcuts. Nous montrons que le raisonnement global peut être compositionnelle, ce qui est essentiel pour le passage à l’échelle de l’approche face aux évolutions de grands systèmes. / Aspect-oriented programming (AOP) aims to enhance modularity and reusability in software systems by offering an abstraction mechanism to deal with crosscutting concerns. But, in most general-purpose aspect languages aspects have almost unrestricted power, eventually conflicting with these goals. This work presents Effective Aspects: a novel approach to embed the pointcut/advice model of AOP in a statically-typed functional programming language like Haskell; along two main contributions. First, we define a monadic embedding of the full pointcut/advicemodel of AOP. Type soundness is guaranteed by exploiting the underlying type system, in particular phantom types and a new anti-unification type class. In this model aspects are first-class, can be deployed dynamically, and the pointcut language is extensible, therefore combining the flexibility of dynamically-typed aspect languages with the guarantees of a static type system. Monads enable us to directly reason about computational effects both in aspects and base programs using traditional monadic techniques. Using this we extend the notion of Open Modules with effects, and also with protected pointcut interfaces to external advising. These restrictions are enforced statically using the type system. Also, we adapt the techniques of EffectiveAdvice to reason about and enforce control flow properties as well as to control effect interference. We show that the parametricity-based approach to effect interference falls short in the presence of multiple aspects and propose a different approach using monad views, a novel technique for handling the monad stack, developed by Schrijvers and Oliveira. Then, we exploit the properties of our model to enable the modular construction of new semantics for aspect scoping and weaving. Our second contribution builds upon a powerful model to reason about mixin-based composition of effectful components and their interference, based on equational reasoning, parametricity, and algebraic laws about monadic effects. Our contribution is to show how to reason about interference in the presence of unrestricted quantification through pointcuts. We show that global reasoning can be compositional, which is key for the scalability of the approach in the face of large and evolving systems. We prove a general equivalence theorem that is based on a few conditions that can be established, reused, and adapted separately as the system evolves. The theorem is defined for an abstract monadic AOP model; we illustrate its use with a simple version of the model just described. This work brings type-based reasoning about effects for the first time in the pointcut/advice model, in a framework that is expressive, extensible and well-suited for development of robust aspect-oriented systems as well as a research tool for new aspect semantics.
3

Gestion de cycle de vie des objets par aspects pour C +++

Sioud, Aymen January 2006 (has links) (PDF)
Les langages tels Java, Simula, Eiffel, Modula III sont des langages orientés objet qui ont gagné leur popularité grâce à la sûreté du traitement des exceptions et à la politique de sécurité qu'ils utilisent, notamment pour la gestion mémoire. En effet, Meyer a placé la gestion automatique de la mémoire en troisième position dans les "sept commandements" de la programmation orientée objet. L'entité utilisée pour assurer la gestion automatique de la mémoire est appelée Garbage Collector ou ramasse-miettes. Certains langages comme C, C++, Ada, Pascal et bien d'autres utilisent une libération explicite de la mémoire. L'avantage majeur de cette libération par rapport au Garbbage Collector est sans doute l'emploi des pointeurs, outil très important permettant un accès direct à certaines zones mémoires et une utilisation plus optimale de l'espace mémoire. Le C++ est l'un des langages de programmation les plus utilisés actuellement. Il est à la fois facile à utiliser et très efficace. Les caractéristiques du C++ en font un langage idéal pour certains types de projets. Il est incontournable dans la réalisation des grands programmes. Les optimisations des compilateurs actuels en font également un langage de prédilection pour ceux qui recherchent les performances. Puisqu'il est une extension de l'ANSI-C, C++ utilise une gestion explicite de la mémoire avec les delete, new, free et malloc. Pour Ellis et Stroustrup, la gestion de mémoire explicite via le Garbbage Collector n'est pas une composante du langage C++. Nous proposons dans notre travail de recherche un outil assurant une gestion implicite de la mémoire basé sur la programmation aspect, notamment avec l'extension AspectC++ qui est un préprocesseur pour un compilateur C++ usuel. L'idée est d'implémenter via AspectC++ des compteurs de références pour les objets nouvellement créés. Il s'agit d'attribuer un compteur de références à un objet, d'incrémenter ce compteur chaque fois qu'un autre objet crée une référence vers le premier objet et de décrémenter ce compteur chaque fois qu'une référence est supprimée. L'objet sera détruit dès que son compteur associé sera à zéro.
4

Deployment and Security Supervision for multi-cloud architectures / Déploiement et supervision de la sécurité pour architectures multi-cloud

Palesandro, Alex 09 November 2018 (has links)
Le Cloud Computing représente une des plus importantes avancées numériques de ces dix dernières années. Le modèle de service offert par le cloud computing est basé sur une allocation élastique et à la demande des ressources et une facturation au plus juste de leur utilisation. Plusieurs catégories d’application sont en train de migrer vers le cloud (par exemple : les NFV et les applications du Big Data). D’autres domaines applicatifs, soumis à une législation plus stricte, sont plus frileux. Leurs exigences sont souvent liées à des problématiques de sécurité et/ou à la non satisfaction par les ressources proposées par un cloud unique, peuvent trouver des réponses dans l’utilisation conjointe de plusieurs fournisseurs de cloud computing (CSPs). L’exploitation simultanée, flexible, efficace et simplifiée de plusieurs clouds requiert des propriétés qui assurent sa viabilité et son acceptation tout d’abord par les fournisseurs de clouds qui proposent des offres hétérogènes et non interopérables et qui souvent pour des raisons commerciales, ne sont pas disposés à coopérer pour faciliter le multi-cloud « à la carte » ; mais aussi du point de vue du consommateur de services cloud dont les contraintes sont le temps de mise en service et le besoin d’exprimer les besoins en services et leur configuration de manière simple et transparente et de permettre la définition de configurations de déploiement adaptées aux besoins de chaque consommateur, comparables à celles offertes par les clouds privés et optimisées pour tirer profit des spécificités de chaque fournisseur de cloud. Dans cette thèse, nous proposons un framework permettant d’exprimer indépendamment de toute solution sous-jacente les besoins en services et en fournisseurs de cloud et de générer efficacement des infrastructures de déploiement extensibles, adaptatives et contrôlables par le consommateur. Cette solution est composée de MANTUS, un outil permettant l’expression des besoins et la génération automatique d’instances, d’ORBITS, des infrastructures de déploiement multi-cloud adaptables dynamiquement grâce aux mécanismes autonomiques offerts par MANTUS.La solution proposée se décline en plusieurs contributions : tout d’abord l’extension d’un framework IaC (Infrastructure as a Code) existant, dédié à la construction de solutions multi-cloud par des mécanismes de tissage, caractéristiques de la programmation par aspects (AOP), permettant ainsi d’injecter et d’extraire des ressources à la demande. Cette extension, expérimentée sur le framework TOSCA a nécessité la proposition du langage TML (Tosca Manipulation Language) permettant de formaliser et de manipuler ces extensions. Les expérimentations effectuées montrent une surcharge acceptable induite par le mécanisme de tissage. La seconde contribution a été de doter le framework IaC TOSCA d’un outil d’expression des besoins et d’un algorithme de matching en terme, d’une part, de nombre et de caractéristiques de fournisseur de cloud -notamment la localisation- et d’autre part en terme de caractéristiques des services proposés par ceux-ci, permettant de trouver la configuration multi-cloud la plus adaptée. La troisième contribution est la définition d’une architecture « template » multi-couche, ORBITS, offrant des mécanismes d’interopérabilité inter-cloud et une vision haut niveau indépendante des clouds sous jacents. Enfin la dernière contribution proposée est la pile de virtualisation U-cloud et les protocoles liée à son déploiement qui permettent de délimiter les zones contrôlables par le consommateur des zones contrôlées par le provider. Cette proposition est basée sur l’utilisation conjointe de la virtualisation imbriquée (Nested Virtualization) et des micro-hyperviseurs réduisant la zone d’attaque (TCB). / Cloud Computing represents one of the most important changes in information and communications technology (ICT) of the latest ten years. However, after a decade since its commercial debut, there are still several applications that cloud computing is not able to fully serve. These are the applications that, due to their particularly stringent requirements, must rely simultaneously on multiple Cloud Service Providers (CSPs), rather than only one. Multiple CSPs can in fact offer a better availability, improve QoS, and break the business dependence w.r.t. a single CSP. A cloud infrastructure based on multiple CSPs is called multi-cloud.Despite the benefits of multi-clouds, organisations (i.e developers and operators of IT services) seldom accept the challenge of building applications and crossing multiple CSP domains. In fact, multi-CSP architectures come at the cost of more complex applications and the logic to in terms of architecture and performance optimization.Recently, Multi-cloud client-oriented architectures emerged as important approach to construct multi-cloud applications. It provides cloud consumers a mechanism to allocate resources over multiple CSPs without requiring any cooperation among the CSPs themselves.In particular, Infrastructure as Code-based (IaC-based) represent the reference paradigm when building multi-cloud applications.However, the adoption of IaC in the multi-cloud context us limited by the fact that the cloud consumer cannot easily reuse the infrastructure code across different applications. This is due to two major problems, which we investigate in this manuscript.First, infrastructure are composed of functional (e.g. resources for applications) and non-functional services (e.g. monitoring). Non-functional related code should be shared at most across different applications and cloud consumers. However, this separation between functional and non-functional code is often blurred and, therefore, non-functional code is hard to be shared across them. This enables the possibility of code re-using across different cloud consumers (e.g., their different multi-cloud infrastructures) and static analysis of infrastructure templates. Furthermore, we present a TML (TOSCA Manipulation Language) aspect specification language to dynamically inject “non-functional” services to the virtual multi-cloud infrastructure. Secondly, the multi-cloud paradigm is limited by the “least common denominator” barrier. The cloud consumer can hardly obtain an optimized usage of resources and services through existing IaC frameworks. Despite compatible with different CSPs, those frameworks do not specialize the output according to deployment context.To tackle the “under-specialization” of multi-cloud templates, we introduce a “context-based matching” scheduling algorithm to select the most compelling set of CSPs according to the cloud consumer needs.To validate such contributions, we defined an end-to-end workflow to optimize a multi-cloud infrastructure definition. More precisely, in our model, the cloud consumer initially models the IaC code as an high-level graph of services, leveraging the combination of TML and context-based matching adoption. The output of this workflow is the instantation of such optimized and fully-featured multi-cloud on most suitable CSPs. We implemented Mantus, a multi-cloud compiler, which encapsulates this workflow and we benchmarked this implementation according to different perspectives as scalability and performance.
5

Impacts de l'AOP sur les tests dans un environnement Agile : utilisation de Mocks pour les tests unitaires d'aspects

Bourbonnais-Bigras, Félix-Antoine 19 April 2018 (has links)
Bien que l’AOP soit présent dans le paysage informatique depuis quelques années, son adoption industrielle reste relativement timide malgré les bénéfices architecturaux promis et espérés. L’objectif principal de nos travaux est de favoriser l’adoption de l’AOP auprès des développeurs oeuvrant dans l’industrie. Nous voulons proposer des solutions adaptées qui permettent à ces professionnels d’embrasser l’AOP sans avoir à sacrifier leur processus, méthodologie et outils actuels qui leur permettent d’atteindre des objectifs de performance, de qualité, de déploiement et de maintenabilité. Afin de nous permettre d’identifier des besoins réels, nous avons centré nos travaux sur des équipes employant un processus Agile. En effet, les processus Agiles préconisent généralement diverses pratiques et principes qui risquent d’être affectés par un changement de paradigme de programmation. C’est notamment le cas des tests qui tiennent une place très importante au sein des méthodes agiles, car ils permettent l’acceptation du changement sur le long terme. Dans un premier temps, nous avons mené une étude exploratoire dont l’objectif était de mieux définir quels seraient les irritants pour des développeurs débutants avec l’AOP et qui travaillent dans un environnement Agile. À la lumière des résultats de cette étude, nous avons amorcé la partie maîtresse de nos travaux qui consistent à élaborer une solution pour faciliter les tests unitaires d’aspects. Pour ce faire, nous avons conçu et rendu disponible un cadre d’applications (framework) permettant la création et le tissage de Mocks avec des aspects, facilitant ainsi l’isolation des aspects. Ce cadre a été développé de manière à s’arrimer avec les pratiques et outils répandus en industrie pour des équipes Agiles. / Although the fact that AOP has been proposed since quite a few years, the industrial adoption of this paradigm is not widespread in spite of the benefits hoped and promised for software architectures. The main goal of our work is to promote the adoption of AOP by industrial developers. We want to provide adapted solutions allowing those professionals to embrace AOP without having to sacrifice their processes, practices and tools. We seek practical solutions to allow them to reach their performance, quality, deployment and maintainability goals. To better identify and understand the real needs of teams using Agile processes, our work is focus on Agile environments. In fact, Agile processes encourage numerous practices and principles that could be affected by the usage of AOP in such projects. For instance, this is the case for software testing who is largely embraced the Agile community as a way of sustaining the acceptation of change over time. Our first step was to conduct an exploratory study to identify what could be the irritants for Agile teams who want to use AOP for the first time. Considering those results, we undertook our main contribution consisting to produce a solution to help unit testing of aspects. To do so, we developed and made available a framework to create and weave Mocks with aspects to help isolate aspects for testing purposes. The framework was designed to integrate easily with practices and tools commonly used in the industry by Agile teams.
6

Coopération interentreprises à la demande : Une approche flexible à base de services adaptables

Boukadi, Khouloud 05 October 2009 (has links) (PDF)
Aujourd'hui la définition des nouveaux modèles d'organisation d'entreprises est guidée par l'intensification de la concurrence, la variabilité des demandes clients et la performance des communications. Dans ce nouveau contexte, les entreprises ont compris l'importance des coopérations interentreprises et mettent en place des modèles basés sur la coopération (entreprise virtuelle, réseau d'entreprises,...). Ces formes d'organisation ont un impact important sur les systèmes d'information. En particulier, la flexibilité et l'ouverture vers l'environnement deviennent des enjeux majeurs dans la conception de ces systèmes. Nos travaux de recherche s'intéressent à la question de coopérations à la demande en considérant que le système d'information est un élément central de cette problématique. Notre étude de l'état de l'art a révélé que la coopération à la demande est un choix stratégique difficile à réaliser vu que le système d'information n'est pas adapté à ce type de fonctionnement. En effet, l'adhésion d'une entreprise à des scénarios de coopération est régie par une double préoccupation. D'une part, l'entreprise présente un manque de flexibilité au niveau du système d'information, support à son métier et d'autre part, mettre en oeuvre une coopération à la demande exige le développement d'un cadre bien défini qui permettra aux entreprises d'interconnecter leurs différents processus au sein d'un processus global. L'architecture orientée services et la technologie service Web semblent proposer des réponses crédibles aux besoins tant au niveau interne (système d'information support à la coopération) qu'au niveau externe (services disponibles aux partenaires). Ainsi, nos travaux de recherche ont eu pour objectif principal de développer une nouvelle approche qui assure l'efficacité et l'efficience de la coopération interentreprises basée sur l'approche service. Ils se sont focalisés sur trois sous problématiques complémentaires qui sont respectivement la problématique de construction (ou de migration vers) d'une architecture orientée services au sein de l'entreprise, la problématique de construction du processus coopératif à la demande et la problématique d'adaptation de la logique métier des services au contexte permettant de doter les services d'un certain niveau de flexibilité. Nos travaux de recherche reposent sur trois principes méthodologiques qui sont une perspective d'ingénierie, l'intégration de la flexibilité et l'ouverture. L'inscription dans une perspective d'ingénierie permet de suivre une démarche méthodologique qui guide l'identification du système attendu en utilisant un ensemble de méta-modèles et de modèles. L'intégration de la flexibilité se manifeste à travers la prise en compte du contexte et de l'adaptation d'une manière transversale tout au long du cycle de vie. Le principe d'ouverture impose de s'inscrire dans le cadre d'utilisation des standards industriels.
7

Prévention et détection des interférences inter-aspects : méthode et application à l'aspectisation de la tolérance aux fautes

Lauret, Jimmy 15 May 2013 (has links) (PDF)
La programmation orientée aspects (POA) sépare les différentes préoccupations composant un système informatique pour améliorer la modularité. La POA offre de nombreux bénéfices puisqu'elle permet de séparer le code fonctionnel du code non-fonctionnel améliorant ainsi leur réutilisation et la configurabilitè des systèmes informatiques. La configurabilité est un élément essentiel pour assurer la résilience des systèmes informatiques, puisqu'elle permet de modifier les mécanismes de sûreté de fonctionnement. Cependant le paradigme de programmation orientée aspect introduit de nouveaux défis pour le test. Dans les systèmes de grande taille où plusieurs préoccupations non fonctionnelles cohabitent, une implémentation à l'aide d'aspects de ces préoccupations peut être problématique. Partageant le même flot de données et le même flot de contrôle les aspects implémentant les différentes préoccupations peuvent écrire dans des variables lues par d'autres aspects ou interrompre le flot de contrôle commun aux différents aspects empêchant ainsi l'exécution de certains d'entre eux.Dans cette thèse nous nous intéressons plus spécifiquement aux interférences entre aspects dans le cadre du développement de mécanismes de tolérance aux fautes implémentés sous forme d'aspects. Ces interférences sont dues à une absence de déclaration de précédence entre les aspects ou à une déclaration de précédence erronée. Afin de mieux maîtriser l'assemblage des différents aspects composant un mécanisme de tolérance aux fautes, nous avons développé une méthode alliant l'évitement à la détection des interférences au niveau du code. Le but de l'évitement est d'empêcher l'introduction d'interférences en imposant une déclaration de précédence entre les aspects lors de l'intégration des aspects. La détection permet d'exhiber lors du test les erreurs introduites dans la déclaration des précédences. Ces deux facettes de notre approche sont réalisées grâce à l'utilisation d'une extension d'AspectJ appelée AIRIA. Les constructions d'AIRIA permettent l'instrumentation et donc la détection des interférences entre aspects, avec des facilités de compilation permettant de mettre en oeuvre l'évitement d'interférences. Notre approche est outillée et vise à limiter le temps de déboguage : le testeur peut se concentrer directement sur les points où une interférence se produit. Nous illustrons notre approche sur une étude de cas : un protocole de réplication duplex. Dans ce contexte le protocole est implémenté en utilisant des aspects à grain fin permettant ainsi une meilleure configurabilité de la politique de réplication. Nous montrons que l'assemblage de ces aspects à grain fin donne lieu à des interférences de flot de données et flot de contrôle qui sont détectées par notre approche d'instrumentation. Nous définissons un ensemble d'aspects interférant pour l'exemple, et nous montrons comment notre approche permet la détection d'interférences.
8

Fédération de composants : une architecture logicielle pour la composition par coordination

Villalobos, Jorge 15 July 2003 (has links) (PDF)
Nous étudions le problème de la composition par coordination, dans lequel un groupe de composants de domaines distincts doivent travailler ensemble pour réaliser une application. Sachant que toute connexion directe entre deux composants de deux domaines différents engendre des problèmes d'évolution, nous avons exploré la coordination comme une façon de composer. Nous avons caractérisé le problème de la coordination entre domaines, et montré les modèles de conteneurs comme une solution rudimentaire à ce problème. Nous avons étudié le monde de la coordination, et nous avons introduit la "fédération", comme une architecture logicielle qui permet de structurer les applications comme un ensemble de composants qui coopèrent pour atteindre un but commun. Nous avons défini l'univers commun (les relations entre les composants de domaines distincts) et les contrats de coordination (la matérialisation des règles de jeu), comme les structures de base d'une fédération
9

Preserving the separation of concerns while composing aspects with reflective AOP

Marot, Antoine 07 October 2011 (has links)
Aspect-oriented programming (AOP) is a programming paradigm to localize and modularize the concerns that tend to be tangled and scattered across traditional programming modules, like functions or classes. Such concerns are known as crosscutting concerns and aspect-oriented languages propose to encapsulate them in modules called aspects. Because each crosscutting concern implemented in an aspect is separated from the other concerns, AOP improves reusability, readability, and maintainability of code.<p><p>While it improves separation of concerns, AOP suffers from well-known composition issues. Aspects developed in isolation may indeed interact with each other in ways that were not expected by the programmers and therefore lead to a program that does not meet its requirements. Without appropriate tools, undesired aspect interactions must be identified by reading code in order to gain global knowledge of the program and understand where and how aspects interact. Then, if the aspect language does not offer the needed support, these interactions must be resolved by invasively changing the code of the conflicting aspects to make them work together. Neither one of these solutions are acceptable since global knowledge as well as invasive and composition-specific modifications are exactly what separation of concerns seeks to avoid.<p><p>In this dissertation we show that the existing approaches to compose aspects are not entirely satisfying either with respect to separation of concerns. These approaches either rely on global knowledge and invasive modifications, which is problematic, or lack genericity and/or expressivity, which means that code reading/code modification may still be required for the aspect interactions they cannot handle.<p><p>To properly detect and resolve aspect interactions we propose a novel approach that is based on AOP itself. Since aspect composition is a concern that, by definition, crosscuts the aspects, it indeed makes sense to expect that a technique to improve the separation of crosscutting concerns such as AOP is well-suited for the task. The resulting mechanism is based on reflection principles and is called reflective AOP. <p><p>The main difference between "regular" AOP and reflective AOP lies in the parts of the system they address. While traditional AOP aims at modularizing the concerns that crosscut the base system, reflective AOP offers the possibility to handle the concerns that crosscut the aspects themselves. This is achieved by incorporating new kinds of joinpoints, pointcuts and advice into the aspect language. These new elements, which form what we call a meta joinpoint model, are dedicated to the aspect level and enable programmers to reason about and act upon the semantics of aspects at runtime. As validated on numerous examples of aspect composition, having a well-designed and principled meta joinpoint model makes it possible to deal with both the detection and the resolution of composition issues in a way that preserves the separation of concerns principle. These examples are illustrated using Phase, our prototype reflective AOP language. / Doctorat en Sciences / info:eu-repo/semantics/nonPublished

Page generated in 0.1654 seconds