106 research outputs found
Data-Dependency Formalism for Developing Peer-to-Peer Applications
Developing peer-to-peer (P2P) applications became increasingly important in software development. Nowadays, a large number of organizations from many different sectors and sizes depend more and more on collaboration between actors to perform their tasks. These P2P applications usually have a recursive behavior that many modeling approaches cannot describe and analyze (e.g. finite-state approaches). In this paper, we present an approach that combines component-based development with well-understood methods and techniques from the field of Attribute Grammars and Data-Flow Analysis in order to construct an abstract representation (i.e. Data-Dependency Graph) for P2P applications, and then perform data-flow analyzes on it. This approach embodies a formalism called DDF (Data-Dependency Formalism) to capture the behavior of P2P applications and construct their Data-Dependency Graphs. Various properties can be inferred and computed at the proposed level of data abstraction, including some properties that model checking cannot compute if the system presents a recursive behavior. As examples, we present two algorithms: one to resolve the deadlock problem and another for dominance analysis
How to Deforest in Accumulative Parameters?
Projet OSCARSoftware engineering has to reconcile modularity with efficiency. One way to grapple with this dilemma is to automatically transform a modular-speci- fied program into an efficient-implementable one. This is the aim of deforesta- tion transformations which get rid of intermediate data structures constructio- ns that appear when two functions are composed. Nevertheless, existing functional methods cannot deforest non-trivial intermediate constructions that are processed by symbolic composition. This new deforestation technique is based on the descriptional composition dedicated to attribute grammars. In this paper, we present the symbolic composition, we outline its counterpart in terms of classical deforestation methods and we sketch a way to embed it in a functional framework
Structure-directed Genericity in Functional Programming and Attribute Grammars
Projet OSCARGeneric control operators, such as \emph{fold}, have been introduced in functional programming to increase the power and applicability of data-structure-based transformations. This is achieved by making the structure of the data more explicit in program specifications. We argue that this very important property is one of the original concepts of attribute grammars. In this paper, we present the similarities between the \emph{fold} formalism and attribute grammars. In particular, we show the equivalence of their respective deforestation methods. Given these results and the fundamental role of deforestation in the concept of \emph{structure-directed genericity}, first devised for attribute grammars with descriptional composition, we show how the \emph{fold} operator with its fusion method allow us to transport this concept in the area of functional programming
Symbolic Composition
Projet OSCARThe deforestation of a functional program is a transformation which gets rid ofintermediate data structures constructions that appear when two functions are composed. The descriptional composition, initially introduced by Ganzinger and Giegerich, is a deforestation method dedicated to the composition of two attribute grammars. This article presents a new functional deforestation technique, called symbolic composition, based on the descriptional composition mechanism, but extending it. An automatic translation from a functional program into an equivalent attribute grammar allows symbolic composition to be applied, and then the result can be translated back into a functional program. This yields a sourceto source functional program transformation. The resulting deforestation method provides a better deforestation than other existing functional techniques. Symbolic composition, that uses the declarative and descriptional features of attribute grammars is intrinsically more powerful than categorical-flavored transformations, whose recursion schemes are set by functors. These results tend to show that attribute grammars are a simple intermediate representation, particularly well-suited for program transformations
Attribute Grammars and Folds : Generic Control Operators
Projet OSCARGeneric control operators, such as \emph{fold}, have been introduced in functional programming to increase the power and applicability of data-structure-based transformations. This is achieved by making the structure of the data more explicit in program specifications. We argue that this very important property is one of the original concepts of attribute grammars. In this paper, we informally show the similarities between the fold formalism and attribute grammar specifications. We also compare their respective method to eliminate the intermediate data structures introduced by function composition (notion of deforestation or fusion): the normalization algorithm for programs expressed with folds and the descriptional composition of attribute grammars. Rather than identify the best way to achieve deforestation, the main goal of this paper is merely to intuitively present two programming paradigms to each other's supporting community and provide an unbiased account of their similarities and differences, in the hope that this leads to fruitful cross-fertilization
Architecture Orienté Service Dynamique : D-SOA
Depuis quelques années, la notion d'Architecture Orientée Services (SOA) s'est rapidement répandue et a été largement acceptée par l'industrie du logiciel. L'aspect dynamique d'une SOA nous semble être l'un des points fondamentaux et cruciaux de cette approche. Le concept d'une Architecture Orientée Services Dynamique D-SOA, se propose de fournir des moyens pour rendre l'architecture adaptable dynamiquement, en cours d'exécution, aux besoins des applications. Les entités qui collaborent pour une application donnée, ne sont pas forcément, connue ou prévisible statiquement. Une D-SOA doit pouvoir s'adapter dynamiquement à son environnement. Elle doit pouvoir supporter aisément des évolutions et des changements dans l'utilisation même de l'application. Elle doit permettre de connecter des entités sans qu'il soit nécessaire qu'elles se connaissent au préalable, qu'elles partagent une même interface de services. A travers l'implémentation de D-SOA au-dessus de la plate-forme OSGi on montre d'une part, sa complémentarité par rapport à OSGi, puis d'autre part, sa simplicité de mise en oeuvre. Cette immersion de D-SOA au-dessus OSGi permet d'envisager des utilisations pour un large public sur des petits supports matériels tels que des PDAs et Smartphones. Finalement, cette notion de SOA dynamique, nous semble être un élément important pour les architectures des applications pour l'Internet du Futur, surtout dans le contexte dynamique des réseaux sociaux et de l'Internet des Objets
Domain-Driven Development: the SmartTools Software Factory
With the increasing dependency on the Internet and the proliferation of new component and distributive technologies, the design and implementation of complex applications must take into account standards, code distribution, deployment of components and reuse of business logic. To cope with these changes, applications need to be more open, adaptable and capable of evolving. To accommodate to these new challenges, this paper presents a new development approach based on generators associated with domain-specific languages, each of the latter related to one possible concern useful when building an application. It relies on Generative Programming, Component Programming and Aspect-Oriented Programming. A software factory, called SmartTools , has been developed using this new approach. The main results are i) to build software of better quality and to enable rapid development due to Generative Programming and, ii) to facilitate insertion of new facets and the portability of applications to new technologies or platforms due to business logic and technology separation
Qui sème la fonction, récolte le tuyau typé
Les applications de l'internet de demain vont devoir communiquer avec des objets de plus en plus complexes. Actuellement, cette communication s'effectue essentiellement à l'aide de protocoles de communication qui sont par nature des mécanismes mal typé. De plus, à chaque avancée technologique (sans fils, mobile, ...), de nouveaux types de protocoles de transport apparaissent. L'objectif de l'article est de proposer un mécanisme de création de tuyau pour une communication bien typé et pour abstraire le protocole sous-jacent à la communication. L'idée de base, afin d'établir un tuyau, est de migrer du serveur vers le client une fonction qui se charge de mettre en place la structure du tuyau. Cette fonction permet au client de s'abstraire du protocole de communication. Ce tuyau, une fois établi, pourra aussi faire véhiculer des fonctions, cette fois- ci du client vers le serveur. Ces fonctions permettent au client d'exprimer l'échange d'information en termes d'expressions du langage source et donc d'assurer le typage de la communication. D'une autre manière, ces fonctions donnent les moyens au client de communiquer directement avec le serveur en cachant les détails du protocole puisque ces fonctions seront exécutées finalement sur le serveur. Avec cette notion de tuyau, on définit un protocole comme étant un générateur de tuyau bien typé. Nous montrerons qu'il est possible d'établir des tuyaux de communication bien typé vers tous les objets atteignables sur un réseau
- …