On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
The Common Lisp object system: an overview
European conference on object-oriented programming on ECOOP '87
Conformance, genericity, inheritance and enhancement
European conference on object-oriented programming on ECOOP '87
Research directions in object-oriented programming
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
ET++—an object oriented application framework in C++
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
A compositional model for software reuse
The Computer Journal - Special issue on object-oriented programming
Extending ordinary inheritance schemes to include generalization
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Interfaces for strongly-typed object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The annotated C++ reference manual
The annotated C++ reference manual
Type substitution for object-oriented programming
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
A parallel object-oriented language with inheritance and subtyping
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
When objects collide experiences with reusing multiple class hierarchies
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Emerald: a general-purpose programming language
Software—Practice & Experience
Static type checking of multi-methods
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Eiffel: the language
Combination of inheritance hierarchies
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Reusability through fine-grain inheritance
Software—Practice & Experience
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Designing reusable designs (panel session): experiences designing object-oriented frameworks
OOPSLA/ECOOP '90 Proceedings of the European conference on Object-oriented programming addendum : systems, languages, and applications: systems, languages, and applications
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Typechecking and modules for multi-methods
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using object-oriented typing to support architectural design in the C2 style
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Proceedings of the 1997 symposium on Software reusability
Programming with variable functions
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Framework integration problems, causes, solutions
Communications of the ACM
The benefits and costs of DyC's run-time optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Kava - a powerful and portable reflective Java (poster session)
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Dynamic and selective combination of extensions in component-based applications
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-Safe Prototype-Based Component Evolution
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Jumping to the Meta Level: Behavioral Reflection Can Be Fast and Flexible
Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
From Dalang to Kava - The Evolution of a Reflective Java Extension
Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
ASM '00 Proceedings of the International Workshop on Abstract State Machines, Theory and Applications
Co-ordination adaptors: the evolution of component-based distributed systems
Systems engineering for business process change
Using reflection as a mechanism for enforcing security policies on compiled code
Journal of Computer Security - Special issue on ESORICS 2000
Framework Composition: Problems, Causes and Solutions
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
Language support for incremental integration of independently developed components in Java
Proceedings of the 2004 ACM symposium on Applied computing
Variability management with feature-oriented programming and aspects
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
Using resemblance to support component reuse and evolution
Proceedings of the 2006 conference on Specification and verification of component-based systems
Kava - using byte code rewriting to add behavioural reflection to Java
COOTS'01 Proceedings of the 6th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 6
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
Modules for crosscutting models
Ada-Europe'03 Proceedings of the 8th Ada-Europe international conference on Reliable software technologies
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
An empirical investigation on the reusability of design patterns and software packages
Journal of Systems and Software
Architectural aspects of architectural aspects
EWSA'05 Proceedings of the 2nd European conference on Software Architecture
Logic frameworks for components integration process
KES'05 Proceedings of the 9th international conference on Knowledge-Based Intelligent Information and Engineering Systems - Volume Part II
Transactions on Aspect-Oriented Software Development I
Hi-index | 0.02 |
Object-oriented programming promises to increase programmer productivity through better reuse of existing code. However, reuse is not yet pervasive in today's object-oriented programs. Why is this so? We argue that one reason is that current programming languages and environments assume that components are perfectly coordinated. Yet in a world where programs are mostly composed out of reusable components, these components are not likely to be completely integrated because the sheer number of components would make global coordination impractical. Given that seemingly minor inconsistencies between individually designed components would exist, we examine how they can lead to integration problems with current programming language mechanisms. We discuss several reuse mechanisms that can adapt a component in place without requiring access to the component's source code and without needing to re-typecheck it.