• 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

Programming Languages for Reusable Software Components (1999)

by Matthew Flatt
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 17
Next 10 →

Scalable Component Abstractions

by Martin Odersky, Matthias Zenger , 2005
"... We identify three programming language abstractions for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition. Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard references between th ..."
Abstract - Cited by 62 (4 self) - Add to MetaCart
We identify three programming language abstractions for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition. Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard references between them into a system of reusable components. The transformation maintains the structure of the original system. We demonstrate this approach in two case studies, a subject/observer framework and a compiler front-end.

Extensible Algebraic Datatypes with Defaults

by Matthias Zenger, Martin Odersky , 2001
"... A major problem for writing extensible software arises when recursively defined datatypes and operations on these types have to be extended simultaneously without modifying existing code. This paper introduces Extensible Algebraic Datatypes with Defaults which promote a simple programming pattern to ..."
Abstract - Cited by 32 (8 self) - Add to MetaCart
A major problem for writing extensible software arises when recursively defined datatypes and operations on these types have to be extended simultaneously without modifying existing code. This paper introduces Extensible Algebraic Datatypes with Defaults which promote a simple programming pattern to solve this well known problem. We show that it is possible to encode extensible algebraic datatypes in an object-oriented language, using a new design pattern for extensible visitors. Extensible algebraic datatypes have been successfully applied in the implementation of an extensible Java compiler. Our technique allows for the reuse of existing components in compiler extensions without the need for any adaptations.

Type-safe prototype-based component evolution

by Matthias Zenger - Proceedings ECOOP 2002, volume 2374 of LNCS , 2002
"... Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the ..."
Abstract - Cited by 30 (6 self) - Add to MetaCart
Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the programming language level. We propose a simple prototype-based model for first-class components on top of a class-based object-oriented language. The model is formalized as an extension of Featherweight Java. Our calculus includes a minimal set of primitives to dynamically build, extend, and compose software components, while supporting features like explicit context dependencies, late composition, unanticipated component extensibility, and strong encapsulation. We present a type system for our calculus that ensures type-safe component definition, composition, and evolution.

Evolving Software with Extensible Modules

by Matthias Zenger , 2002
"... We present the programming language Keris, an extension of Java with explicit support for software evolution. Keris introduces extensible modules as the basic building blocks for software. Modules are composed hierarchically revealing explicitly the architecture of systems. A distinct feature of the ..."
Abstract - Cited by 18 (2 self) - Add to MetaCart
We present the programming language Keris, an extension of Java with explicit support for software evolution. Keris introduces extensible modules as the basic building blocks for software. Modules are composed hierarchically revealing explicitly the architecture of systems. A distinct feature of the module design is that modules do not get linked manually. Instead, the wiring of modules gets infered. The module assembly and refinement mechanism of Keris is not restricted to the unanticipated extensibility of atomic modules. It also allows to extend fully linked systems by replacing selected submodules with compatible versions without needing to re-link the full system. Extensibility is type-safe and non-invasive; i.e. the extension of a module preserves the original version and does not require access to source code.

Implementing Extensible Compilers

by Matthias Zenger, Martin Odersky - IN ECOOP WORKSHOP ON MULTIPARADIGM PROGRAMMING WITH OBJECT-ORIENTED LANGUAGES , 2001
"... New extensions to programming languages are constantly being proposed. But implementing these extensions usually turns out to be a very di#cult and expensive task, since conventional compilers often lack extensibility and reusability. In this paper we present some fundamental techniques to imple ..."
Abstract - Cited by 13 (6 self) - Add to MetaCart
New extensions to programming languages are constantly being proposed. But implementing these extensions usually turns out to be a very di#cult and expensive task, since conventional compilers often lack extensibility and reusability. In this paper we present some fundamental techniques to implement extensible compilers in an object-oriented language. For being able to implement extensible compiler passes, we introduce an extensible form of algebraic datatypes. Our extensible algebraic datatypes with defaults yield a simple programming protocol for implementing extensible and reusable compiler passes in a functional style. We propose an architectural design pattern ContextComponent which is specifically targeted towards building extensible, hierarchically composed systems. Our software architecture for extensible compilers combines the use of algebraic types, known from functional languages, with this object-oriented design pattern. We show that this approach enables us to extend existing compilers flexibly without modifying any source code. Our techniques have been successfully applied in the implementation of the extensible Java compiler JaCo.

A Reduction Semantics for Call-by-Value Mixin Modules

by Tom Hirschowitz, Xavier Leroy, J. B. Wells , 2002
"... Module systems are important for software engineering: they facilitate code reuse without compromising the correctness of programs. However, they still lack some flexibility: first, they do not allow mutually recursive definitions to span module boundaries; second, denitions inside modules are bound ..."
Abstract - Cited by 8 (6 self) - Add to MetaCart
Module systems are important for software engineering: they facilitate code reuse without compromising the correctness of programs. However, they still lack some flexibility: first, they do not allow mutually recursive definitions to span module boundaries; second, denitions inside modules are bound early, and cannot be overridden later, as opposed to inheritance and overriding in class-based object-oriented languages, which follow the late binding semantics. This paper examines an alternative, hybrid idea of modularization concept, called mixin modules. We develop a language of call-by-value mixin modules with a reduction semantics, and a sound type system for it, guaranteeing that programs will run correctly.

Implementing Extensible Theorem Provers

by Kathi Fisler, Shriram Krishnamurthi, Kathryn E. Gray - In International Conference on Theorem Proving in Higher-Order Logic: Emerging Trends, Research Report, INRIA Sophia Antipolis , 1999
"... . The growing application of theorem proving techniques has increased the need for customized theorem provers. Powerful provers contain numerous interacting subsystems, each of which requires substantial time and expertise to build; constructing new provers from scratch is virtually prohibitive. Plu ..."
Abstract - Cited by 6 (4 self) - Add to MetaCart
. The growing application of theorem proving techniques has increased the need for customized theorem provers. Powerful provers contain numerous interacting subsystems, each of which requires substantial time and expertise to build; constructing new provers from scratch is virtually prohibitive. Plug-and-play prover frameworks promise an alternative in which developers can construct provers by selecting logics, reasoning techniques, and interfaces. Realizing such frameworks cleanly requires specialized software architectures and particular language abstractions, even for frameworks supporting only simple interactions between logics. This paper explores architectural and linguistic issues in plug-and-play theorem prover development. It reflects our experience creating and using such a framework to develop several versions of a research prototype theorem prover. Keywords: extensible theorem provers, plug-and-play theorem provers, software architectures, software components, programming ...

Verifying Component-Based Collaboration Designs

by Kathi Fisler, Shriram Krishnamurthi, Don Batory - in Proceedings of the Fifth ICSE Workshop on Component-Based Software Engineering , 2001
"... this paper, we outline a vision of analysis techniques for this design domain and argue that most conventional compositional verification techniques, such as are found in the model checking literature, are poorly suited for this domain ..."
Abstract - Cited by 6 (0 self) - Add to MetaCart
this paper, we outline a vision of analysis techniques for this design domain and argue that most conventional compositional verification techniques, such as are found in the model checking literature, are poorly suited for this domain

Composition Environments for Deployable Software Components

by Chris Lüer, André Van Der Hoek , 2002
"... Component-based software development is revolutionizing the software industry by promoting a view of software development in which applications are composed out of reusable, relatively large-grained, and mostly pre-existing components. Adoption of component-based software development leads to an ..."
Abstract - Cited by 5 (1 self) - Add to MetaCart
Component-based software development is revolutionizing the software industry by promoting a view of software development in which applications are composed out of reusable, relatively large-grained, and mostly pre-existing components. Adoption of component-based software development leads to an important distinction in roles between those that develop and make available individual components and those that compose applications out of available components. As a result, application composition is no longer a matter of writing and combining source code, but instead of composing deployable components---components that are pre-packaged, independently distributed, easily installed and uninstalled, and self-descriptive.

Anomaly-Free Component Adaptation with Class Overriding

by Atanas Radenski - Journal of Systems and Software , 2004
"... Software components can be implemented and distributed as collections of classes, then adapted to the needs of specific applications by means of subclassing. Unfortunately, subclassing in collections of related classes may require re-implementation of otherwise valid classes just because they utiliz ..."
Abstract - Cited by 3 (2 self) - Add to MetaCart
Software components can be implemented and distributed as collections of classes, then adapted to the needs of specific applications by means of subclassing. Unfortunately, subclassing in collections of related classes may require re-implementation of otherwise valid classes just because they utilize outdated parent classes, a phenomenon that is referred to as the subclassing anomaly. The subclassing anomaly is a serious problem since it can void the benefits of component-based programming altogether. We propose a code adaptation language mechanism called class overriding that is intended to overcome the subclassing anomaly. Class overriding does not create new and isolated derived classes as subclassing does, but rather extends and updates existing classes across collections of related classes. If adopted in new languages for component-based programming, or in existing compiled languages such as C# and Java, class overriding can help maintain the integrity of evolving collections of related classes and thus enhance software component adaptability.
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