• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 6
  • 3
  • Tagged with
  • 9
  • 9
  • 9
  • 7
  • 7
  • 6
  • 6
  • 6
  • 4
  • 3
  • 2
  • 2
  • 2
  • 2
  • 2
  • 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

Évolution dynamique des systèmes d'exploitation, une approche par la programmation par aspects

Loriant, Nicolas 07 December 2007 (has links) (PDF)
Dans un contexte où les technologies de communication évoluent à grande vitesse, la course effrénée à l'intégration de nouvelles fonctionnalités dans les systèmes informatiques est souvent engagée au détriment de solutions stables, extensibles et adaptables, et par conséquent plus pérennes. La réalisation de systèmes adaptables a fait l'objet de nombreuses recherches ayant abouties à des solutions originales. Néanmoins, les propositions reposant sur des architectures adaptables et extensibles se révèlent souvent complexes, peu performantes et rigides ! En effet, il est difficile voir impossible d'anticiper quelles seront les évolutions futures, les interfaces permettant l'extensibilité se révèlent souvent inadaptées aux besoins réels. Contrairement aux architectures extensibles, les solutions permettant la transformation à la volée d'un système ne sont pas limitées par des choix architecturaux et s'avèrent plus performantes. Néanmoins, la complexité de ces approches les limitent à des utilisateurs experts. Dans cette thèse, nous nous sommes fixés comme objectif de réconcilier adaptabilité dyna- mique, performances des systèmes informatiques et simplicité de programmation des évolutions. Pour cela, nous avons combiné deux approches : la réécriture dynamique de code pour fournir les mécanismes performants de transformation de programme; et la programmation par aspects comme moyen d'expression des évolutions logicielles. Nous démontrons la validité de notre approche par des évaluations exhaustives de l'utilisation de notre prototype en réalisant des évolutions concrètes et variées de systèmes informatiques patrimoniaux.
2

Environnement de procédé extensible pour l'orchestration - Application aux services web

Jamal (epouse Sanlaville), Sonia 13 December 2005 (has links) (PDF)
La construction de logiciels par coordination d'applications existantes et autonomes permet de réaliser des logiciels de grande taille, réutilisant le savoir-faire contenu dans ces applications. Les procédés, utilisés dans différents domaines et de différentes manières pour coordonner des applications ou des humains, se présentent comme étant de bons candidats pour réaliser ces coordinations. Cependant, la plupart des procédés sont rigides, fortement couplés, et se basent sur un grand nombre de concepts spécialisés. Ils sont aussi souvent réservés à une catégorie d'applications. Nous présentons les points forts et les points faibles des formalismes et moteurs de procédés actuels et nous en déduisons quels sont les besoins pour la coordination d'applications via un procédé. <br /><br />Nous présentons dans cette thèse l'environnement réalisé dans notre équipe qui propose une architecture des logiciels à trois couches : conceptuelle, médiateur, et outils. Le niveau conceptuel contient un meta-modèle qui ne définit que les concepts basiques des procédés. Nous définissons ensuite quatre classes d'extension de ce meta-modèle minimal. Notre environnement permet alors de construire et exécuter des logiciels basés sur des procédés de coordination extensibles et évolutifs.
3

Un modèle de programmation intégrant classes, événements et aspects

Núñez, Angel 29 June 2011 (has links) (PDF)
Le paradigme de la programmation par objets (PPO) est devenu le paradigme de programmation le plus utilisé. La programmation événementielle (PE) et la programmation par aspects (PPA) complètent la PPO en comblant certaines de ses lacunes lors de la construction de logiciels complexes. Les applications actuelles combinent ainsi les trois paradigmes. Toutefois, la POO, la PE et la POA ne sont pas encore bien intégrées. Leurs concepts sous-jacents sont en général fournis sous la forme de constructions syntaxiques spécifiques malgré leurs points communs. Ce manque d'intégration et d'orthogonalité complique les logiciels car il réduit leur compréhensibilité et leur composabilité, et augmente le code d'infrastructure. Cette thèse propose une intégration de la PPO, de la PE et de la PPA conduisant à un modèle de programmation simple et régulier. Ce modèle intègre les notions de classe et d'aspect, les notions d'événement et de point de jonction, et les notions d'action, de méthode et de gestionnaire d'événements. Il réduit le nombre de constructions tout en gardant l'expressivité initiale et en offrant même des options de programmation supplémentaires. Nous avons conçu et mis en œuvre deux langages de programmation basés sur ce modèle : EJava et ECaesarJ. EJava est une extension de Java implémentant le modèle. Nous avons validé l'expressivité de ce langage par la mise en œuvre d'un éditeur graphique bien connu, JHotDraw, en réduisant le code d'infrastructure nécessaire et en améliorant sa conception. ECaesarJ est une extension de CaesarJ qui combine notre modèle avec de la composition de mixins et un support linguistique des machines à états. Cette combinaison a grandement facilité la mise en œuvre d'une application de maison intelligente, une étude de cas d'origine industrielle dans le domaine de la domotique.
4

Un interpréteur extensible pour le prototypage des langages d'aspects

Assaf, Ali 21 October 2011 (has links) (PDF)
L'intérêt de l'utilisation de différents langages d'aspects pour faire face à une variété de préoccupations transverses dans le développement de systèmes logiciels complexes est reconnu. Il faudrait être capable d'utiliser plusieurs de ces langages dans un seul logiciel donné. Cependant, d'une part la phase de développement d'un nouveau langage dédié capturant tous les patrons de programmation du domaine prend beaucoup de temps et, d'autre part, le concepteur doit gérer les interactions avec les autres langages quand ils sont utilisés simultanément. <br/> Dans cette thèse, nous introduisons un support pour le prototypage rapide et la composition des langages d'aspects, basé sur des interpréteurs. Nous partons d'un interpréteur d'un sous-ensemble de Java en étudiant et en définissant son extension modulaire afin de supporter la programmation par aspects en se basant sur une sémantique d'aspects partagée. Dans l'interpréteur d'aspects, nous avons implémenté des mécanismes communs aux langages d'aspects en laissant des trous à définir pour implémenter des langages d'aspects concrets. La puissance de cette approche est de permettre d'implémenter directement les langages à partir de leur sémantique. L'approche est validée par l'implémentation d'une version légère d'AspectJ. <br/> Pour appliquer la même approche et la même architecture à Java sans modifier son interpréteur (JVM), nous réutilisons AspectJ pour effectuer une première étape de tissage statique, qui est complétée par une deuxième étape de tissage dynamique, implémentée par une mince couche d'interprétation. C'est un exemple montrant l'intérêt qu'il peut y avoir à concilier interprétation et compilation. Des prototypes pour AspectJ, EAOP, COOL et des langages dédiés simples, valident notre approche. Nous montrons le caractère ouvert de notre implémentation d'AspectJ en décrivant deux extensions: la première permet l'ordonnancement dynamique des aspects, la deuxième propose des sémantiques alternatives pour les points de coupe. Les langages d'aspects implémentés avec notre approche peuvent être facilement composés. En outre, cette composition peut être personnalisée.
5

Seamless concurrent programming of objects, aspects and events / Intégration de la programmation concurrente à la programmation par objets, aspects et événements

Van Ham, Jurgen Michael 09 March 2015 (has links)
L’utilisation de concepts avancés de programmation concurrente permet de dépasser les inconvénients de l’utilisation de techniques de bas niveau à base de verrous ou de moniteurs. Elle augmente le niveau d’abstraction, libérant les programmeurs d’applications concurrentes d’une focalisation excessive sur des détails. Cependant, avec les approches actuelles, la logique nécessaire à la mise en place de schémas de coordinations complexes est fragmentée en plusieurs points de l’application sous forme de« join patterns », de notifications et de la logique applicative qui crée implicitement des dépendances entre les canaux de communication et donc, indirectement, les « join patterns » (qui définissent ces canaux). Nous présentons JEScala, un langage qui capture les schémas de coordination (d’une application concurrente) d’une manière plus expressive et modulaire, en s’appuyant sur l’intégration fine d’un système d’évènements avancé et des « join patterns ». Nous implémentons des automates finis à partir de « joins » à l’aide de JEScala et introduisons un langage dédié à la définition de ces automates finis permettant d’en obtenir des implémentations plus efficaces. Nous validons notre approche avec des études de cas et évaluons l’efficacité de son exécution. Nous comparons la performance de trois implémentations d’un automate fini. Nous validons enfin l’idée d’un moniteur d’évènements en créant un programme JEScala concurrent à partir d’un découpage d’un programme séquentiel. / The advanced concurrency abstractions provided by the Join calculus overcome the drawbacks of low-level techniques such as locks and monitors. They rise the level of abstraction, freeing programmers that implement concurrent applications from the burden of concentrating on low-level details. However, with current approaches the coordination logic involved incomplex coordination schemas is fragmented into several pieces including join patterns, data emissions triggered in different places of the application, and the application logic that implicitly creates dependencies among channels, hence indirectly among join patterns. We present JEScala, a language that captures coordination schemas in a more expressive and modular way by leveraging a seamless integration of an advanced event system with join abstractions. We implement Joins-based state machines using JEScala and introduce a domain specific language for finite state machines that make faster alternative implementations possible. We validate our approach with case studies and we provide a first performance assessment. We compare the performance of three different implementations of a finite state machine. Finally, we validate the idea of constructing a concurrent JEScala program by using the parts of a sequential Event-Based program in combination with an event monitor, a component that synchronizes handling of multiple events.
6

Approches langages pour la conception et la mise en oeuvre de programmes

Fradet, Pascal 10 November 2000 (has links) (PDF)
Par "approche langage" on entend désigner une approche qui s'exprime, soit dans un langage de programmation, soit par un langage de programmation.<br />Les approches qui s'expriment dans le langage ne font appel à aucun formalisme éloigné (e.g. sémantique). Le langage de programmation est l'unique cadre de travail pour exprimer le problème, le résoudre et appliquer la solution. Nous montrons :<br /><br />- comment la compilation des langages fonctionnels peut s'exprimer dans le langage lui-même par transformation de programme. Ce cadre unifié permet de décrire, prouver, comparer et classifier la plupart des mises en œuvre de langages fonctionnels,<br /><br />- deux optimisations de l'implémentation des langages fonctionnels (une analyse de globalisation et un GC étendu) qui reposent sur la syntaxe et le type des expressions.<br /><br /><br /> Pour les approches qui s'expriment par un langage de programmation, il s'agit de prévenir le problème ou d'assurer une propriété via l'utilisation d'un langage (ou d'une discipline de programmation). Nous illustrons ce style d'approche par trois exemples :<br /><br /><br />- les types graphes qui permettent de définir et vérifier le partage des structures de données à pointeurs,<br /><br />- un langage dédié au parallélisme qui garantit une analyse de coût précise et un choix automatique de la meilleure distribution,<br /><br />- un style de programmation par aspects qui permet d'imposer automatiquement des propriétés aux programmes.
7

Fédération : une architecture logicielle pour la construction d'applications dirigée par les modèles

Le, Anh Tuyet 23 January 2004 (has links) (PDF)
La construction d'applications par composition d'éléments existants permet de réduire le temps de développement des applications ; pour cette raison, c'est un thème central du génie logiciel. On peut trouver quatre types de composition proposés par les approches actuelles : l'intégration, la connexion, la coordination et l'orchestration. Tandis que l'intégration et la connexion se basent sur les liens directs liant les éléments à composer, la coordination et l'orchestration utilisent une architecture à deux niveaux dans laquelle la logique de composition est exprimée séparément. Cette thèse propose un modèle de composition, basé sur la coordination, où la réutilisation, l'évolution et l'adaptation sont les objectifs premiers. Le concept de domaine est proposé pour représenter un groupe d'éléments coordonnés fournissant une fonctionnalité clairement identifiée par un modèle conceptuel. La composition de domaines est effectuée en établissant des relations entre les concepts provenant des modèles conceptuels de ces domaines. Une fédération est introduite comme une architecture logicielle permettant la structuration des domaines et la composition de domaines. La composition de domaines est réalisée par la synchronisation de domaines à travers un espace partagé et contrôlé (univers commun) contenant la matérialisation des modèles conceptuels des domaines composés ainsi que des relations liant leurs concepts. Les environnements pour la conception, le développement, l'exécution et l'administration d'une fédération ont été réalisés, et plusieurs applications ont été construites afin de valider l'approche proposée dans cette thèse.
8

Contribution à la programmation générative. Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants

Courbis, Carine 10 December 2002 (has links) (PDF)
Avec l'émergence d'Internet et la prolifération de nouvelles technologies, la conception et le développement d'applications complexes doivent impérativement prendre en compte les standards et les aspects de répartition, déploiement et réutilisation de code. C'est la source d'une nouvelle problématique liée à la programmation. Un changement radical des méthodologies est nécessaire pour aisément prendre en compte ces différentes facettes. Cette thèse jette les bases d'une nouvelle manière de programmer où ces facettes ou intentions sont automatiquement intégrées aux spécifications ou modèles abstraits de l'application lors de phases de génération de code source. Cette nouvelle programmation est dit générative. Cette idée a été appliquée, à différents niveaux, lors de la réalisation d'une application, aussi bien pour la représentation de données ou d'environnements interactifs que pour les traitements sémantiques ou l'architecture. Ainsi le code final obtenu après génération s'appuie sur les technologies XML pour la représentation des données, les technologies objets et beans pour les vues et l'interface utilisateur, la programmation par aspect et le patron de conception visiteur pour les traitements sémantiques et la programmation par composants pour une architecture ouverte et une application répartie et déployable. Les principaux gains d'une telle programmation sont une meilleure qualité du logiciel due à la séparation de la logique métier et des spécificités technologiques, une simplification du code métier à écrire, l'ajout rapide de nouvelles facettes et un portage vers d'autres plates-formes ou technologies facilité.
9

Etendre des interpréteurs par détournement, ou comment étendre des interpréteurs sans en modifier le code : avec une application à des analyses dynamiques pour un interpréteur de JavaScript / Extending interpreters by diverting, or how to extend interpreters without modifying their source code

Marchand De Kerchove, Florent 18 November 2016 (has links)
Afin de sécuriser les applications web, nous nous sommes intéressés à appliquer des analyses dynamiques de sécurité à des programmes JavaScript. Dansce contexte, pouvoir rapidement modifier l’interpréteur et composer des analyses à l’exécution est primordial. Une façon d’effectuer ces changements aurait été parrefactorisation. Mais la refactorisation peut être délicate et chronophage, car elle implique de réécrire des parties du code source, voire de réorganiser toute l’architecture du programme. La refactorisation est trop coûteuse lorsque prime la vitesse d’itération.Nous explorons une alternative économe à la refactorisation : le détournement. Détourner un programme c’est changer ses résultats sans directement modifierson code source. Pour détourner un programme, on exploite des techniques d’indirection, tels que la portée dynamique et la métaprogrammation.On commence par passer en revue les techniques utilisées pour des problèmes connexes d’extensibilité, et on applique ces techniques pour détourner des interpréteurs simples. Puis, on montre comment le détournement peut aider à construire un interpréteur par incréments, pour permettre d’activer dynamiquement des comportements alternatifs. Enfin, on applique ces techniques pour détourner un véritable interpréteur JavaScript par de multiples analyses dynamiques de sécurité.Au prix d’un potentiel impact en efficacité et en sûreté, détourner l’interpréteur est à la fois plus rapide et plus flexible que de le réécrire, ce qui fait du détournement une alternative légitime à la refactorisation. / For securing web applications, we were interested in applying dynamic security analyses to JavaScript programs. In this context, the ability to quickly modify the interpreter and to compose analyses at runtime is paramount. One way to effect these changes would have been through refactoring. But refactoring can be tricky and time-consuming, as it entails to rewrite parts of the source code, and even to reorganize the program’s whole architecture. Refactoring is too costly when rapid iteration is preferred.We explore a lightweight alternative to refactoring: diverting. To divert a program is to change its results without directly modifying its source code. To divert a program, we leverage indirection techniques such as dynamic scoping and metaprogramming.We first review the techniques used in related extensibility problems, like the Expression Problem, and apply these techniques to divert simple interpreters. We then show how diverting can help build interpreters incrementally in layers, allowing dynamic activation of alternative behavior. Finally, we apply those techniques to divert a full-blown JavaScript interpreter with multiple dynamic security analyses. We find that, with potential costs in efficiency and program safety, diverting is both faster and more flexible than rewriting the interpreter,thus making diverting a legitimate alternative to refactoring.

Page generated in 0.1658 seconds