• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

A.C.: J&: nested intersection for scalable software composition (2006)

by N Nystrom, X Qi, Myers
Venue:In: OOPSLA
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 10

Aspectual Feature Modules

by Sven Apel, Thomas Leich, Gunter Saake - IEEE TRANSACTIONS ON SOFTWARE ENGINEERING , 2008
"... Two programming paradigms are gaining attention in the overlapping fields of software product lines (SPLs) and incremental software development (ISD). Feature-oriented programming (FOP) aims at large-scale compositional programming and feature modularity in SPLs using ISD. Aspect-oriented programmin ..."
Abstract - Cited by 47 (34 self) - Add to MetaCart
Two programming paradigms are gaining attention in the overlapping fields of software product lines (SPLs) and incremental software development (ISD). Feature-oriented programming (FOP) aims at large-scale compositional programming and feature modularity in SPLs using ISD. Aspect-oriented programming (AOP) focuses on the modularization of crosscutting concerns in complex software. Although feature modules, the main abstraction mechanisms of FOP, perform well in implementing large-scale software building blocks, they are incapable of modularizing certain kinds of crosscutting concerns. This weakness is exactly the strength of aspects, the main abstraction mechanisms of AOP. We contribute a systematic evaluation and comparison of FOP and AOP. It reveals that aspects and feature modules are complementary techniques. Consequently, we propose the symbiosis of FOP and AOP and aspectual feature modules (AFMs), a programming technique that integrates feature modules and aspects. We provide a set of tools that support implementing AFMs on top of Java and C++. We apply AFMs to a nontrivial case study demonstrating their practical applicability and to justify our design choices.

UpgradeJ: Incremental Typechecking for Class Upgrades

by Gavin Bierman, James Noble, Matthew Parkinson , 2008
"... One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In ..."
Abstract - Cited by 18 (1 self) - Add to MetaCart
One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language-level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.

Sharing classes between families

by Xin Qi, Andrew C. Myers - IN: PROC. OF CONF. ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION , 2009
"... Class sharing is a new language mechanism for building extensible software systems. Recent work has separately explored two different kinds of extensibility: first, family inheritance, in which an entire family of related classes can be inherited, and second, adaptation, in which existing objects ar ..."
Abstract - Cited by 3 (1 self) - Add to MetaCart
Class sharing is a new language mechanism for building extensible software systems. Recent work has separately explored two different kinds of extensibility: first, family inheritance, in which an entire family of related classes can be inherited, and second, adaptation, in which existing objects are extended in place with new behavior and state. Class sharing integrates these two kinds of extensibility mechanisms. With little programmer effort, objects of one family can be used as members of another, while preserving relationships among objects. Therefore, a family of classes can be adapted in place with new functionality spanning multiple classes. Object graphs can evolve from one family to another, adding or removing functionality even at run time. Several new mechanisms support this flexibility while ensuring type safety. Class sharing has been implemented as an extension to Java, and its utility for evolving and extending software is demonstrated with realistic systems.

Patterns of Aspect-Oriented Design

by James Noble, Arno Schmidmeier, David J. Pearce, Andrew P. Black - In Proceedings of European Conference on Pattern Languages of Programs. Irsee , 2007
"... Aspect-oriented programming languages are becoming commonplace, and programmers are accumulating experience in building and maintaining aspect-oriented systems. This paper addresses how the use of these languages affects program design: how aspect-oriented languages change the design space, which de ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
Aspect-oriented programming languages are becoming commonplace, and programmers are accumulating experience in building and maintaining aspect-oriented systems. This paper addresses how the use of these languages affects program design: how aspect-oriented languages change the design space, which designs should be emulated and which avoided, and the strengths and weaknesses of particular kinds of design. We identify five patterns of aspect-oriented design: Spectator, Regulator, Patch, Extension, and Heterarchical Design. For each pattern, we describe the problem it solves, show how aspect-oriented language features are used in the pattern, give characteristic examples of the pattern’s use, and assess its benefits and liabilities. Our patterns provide the beginnings of a taxonomy of aspect-oriented design. We believe that they should help programmers to understand and evaluate existing aspect-oriented designs, to improve new designs, to make better use of the aspect-oriented features of new programming languages, and also guide those who wish to implement these patterns in non aspect-oriented languages. 1

Declarative syntax tree engineering (or, one grammar to rule them all

by Robert Grimm , 2007
"... Abstract. Grammars for many parser generators not only specify a language’s syntax but also the corresponding syntax tree. Unfortunately, most parser generators pick a somewhat arbitrary combination of features from the design space for syntax trees and thus lock in specific trade-offs between expre ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
Abstract. Grammars for many parser generators not only specify a language’s syntax but also the corresponding syntax tree. Unfortunately, most parser generators pick a somewhat arbitrary combination of features from the design space for syntax trees and thus lock in specific trade-offs between expressivity, safety, and performance. This paper discusses the three major axes of the design space—specification within or outside a grammar, concrete or abstract syntax trees, and dynamically or statically typed trees—and their impact. It then presents algorithms for automatically realizing all major choices from the same, unmodified grammar with inline syntax tree declarations. In particular, this paper shows how to automatically (1) extract a separate syntax tree specification, (2) embed an abstract syntax tree within a concrete one, and (3) infer a strongly typed view on a dynamically typed tree. All techniques are implemented in the Rats! parser generator and have been applied to real-world C and Java grammars and their syntax trees. 1

An Abstract

by Hyunjun Lee - Machine Simulator, Third International Conference on Computer Assisted Learning , 1990
"... This paper presents a real-time technique for rendering 3D meshes in the pencil drawing style. We analyze the characteristics of pencil drawing and incorporate them into the rendering process, which is fully implemented on a GPU. For object contours, we propose a multiple contour drawing technique t ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
This paper presents a real-time technique for rendering 3D meshes in the pencil drawing style. We analyze the characteristics of pencil drawing and incorporate them into the rendering process, which is fully implemented on a GPU. For object contours, we propose a multiple contour drawing technique that imitates trial-and-errors of human in contour drawing. For interior shading, we present a simple approach for mapping oriented textures onto an object surface. To improve the quality of pencil rendering, we generate and map pencil textures that reflect the properties of graphite pencils and paper. We show several rendering examples that demonstrate the high performance of the proposed technique in terms of speed and quality.

Exploring the use of Package Templates for flexible re-use of Collections of related Classes

by Stein Krogdahl
"... It has been recognized that there is a need for a language mechanism that support reuse of collections of related classes. Existing approaches either use an enclosing class for this purpose, or introduce a special purpose, new language construct. In this paper we explore the use of packages for the ..."
Abstract - Cited by 1 (1 self) - Add to MetaCart
It has been recognized that there is a need for a language mechanism that support reuse of collections of related classes. Existing approaches either use an enclosing class for this purpose, or introduce a special purpose, new language construct. In this paper we explore the use of packages for the grouping of related classes. Ordinary packages are already grouping of classes, so we explore the combination of packages and templates, i.e. package templates. By instantiating package templates, the classes of the package templates are provided as if ordinary packages are produced and imported. 1

Homogeneous Family Sharing

by Xin Qi, Andrew C. Myers , 2010
"... Recent work has introduced class sharing as a mechanism for adapting a family of related classes with new functionality. This paper introduces homogeneous family sharing, implemented in the J&h language, in which the sharing mechanism is lifted from class-level sharing to true family-level sharing. ..."
Abstract - Add to MetaCart
Recent work has introduced class sharing as a mechanism for adapting a family of related classes with new functionality. This paper introduces homogeneous family sharing, implemented in the J&h language, in which the sharing mechanism is lifted from class-level sharing to true family-level sharing. Compared to the original (heterogeneous) class sharing mechanism, homogeneous family sharing provides useful new functionality and substantially reduces the annotation burden on programmers by eliminating the need for masked types and sharing declarations. This is achieved through a new mechanism, shadow classes, which permit homogeneous sharing of all related classes in shared families. The new sharing mechanism has a straightforward semantics, which is formalized in the J&h calculus. The soundness of the J&h type system is proved. The J&h language is implemented as an extension to the J & language. To demonstrate the effectiveness of family sharing, the Polyglot compiler framework is ported to J&h.

Sparse Table Composition -- Separate Compilation and Binary Extensibility of Grammars

by Martin Bravenboer, Eelco Visser , 2008
"... ..."
Abstract - Add to MetaCart
Abstract not found

Indexed Types in Object-Oriented Programming

by Joana Campos, Vasco T. Vasconcelos
"... Abstract. Dependent type systems allow semantic properties to be expressed in types that carry important information about program values. The type systems in mainstream languages such as Java are effective but have a limited expressive power. We propose to extend a simple Java-like language with in ..."
Abstract - Add to MetaCart
Abstract. Dependent type systems allow semantic properties to be expressed in types that carry important information about program values. The type systems in mainstream languages such as Java are effective but have a limited expressive power. We propose to extend a simple Java-like language with indexed types, a form of dependent types defined on index expressions that can statically detect many programming errors. Index types take the form of type annotations in the generics style, so as to express semantic properties in a fashion familiar to object-oriented programmers. For example, Polynomial⟨3 ⟩ is an instance of Polynomial⟨nat degree⟩, where degree has type nat, which is the type of all polynomials of some degree. Expressions in index types currently represent integer values only. Index types may be associated with class definitions, and may be used to constrain base types in fields or local variables, in arguments to methods or in return types. As opposed to conventional types, indexed types may change over a program lifetime. We discuss introducing indirection into type environments to provide support to type check references to mutable objects. 1
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University