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. 1.
|
3620
|
Design Patterns: Elements of Reusable Object-oriented Software
– Gamma, Helm, et al.
- 1994
|
|
1415
|
The Java Language Specification
– Gosling, Joy, et al.
- 1996
|
|
958
|
Software Architecture: Perspectives on an Emerging Discipline
– Shaw, Garlan
- 1996
|
|
939
|
Aspect-oriented programming
– Kiczales, Lamping, et al.
- 1997
|
|
857
|
Component Software: Beyond Object-Oriented Programming", AddisonWesley and ACM-Press
– Szyperski
- 1997
|
|
484
|
Foundations for the study of software architecture
– Perry, Wolf
- 1992
|
|
350
|
A Classification and Comparison Framework for Software Architecture Description Languages
– Medvidovic, Taylor
- 2000
|
|
331
|
Mixin-based inheritance, in
– Bracha, Cook
- 1990
|
|
271
|
Specification and Analysis of System Architecture Using Rapide
– Luckham, Kenney, et al.
- 1995
|
|
269
|
Specifying distributed software architectures
– Magee, Dulay, et al.
- 1995
|
|
213
|
A Formal Approach to Software Architecture
– Allen
- 1997
|
|
200
|
D.: ACME: An Architecture Description Interchange Language
– Garlan, Monroe, et al.
- 1997
|
|
167
|
Modules for Standard ML
– MacQueen
|
|
152
|
Units: Cool modules for HOT languages
– Flatt, Felleisen
|
|
133
|
Exploting style in architectural design environments
– Garlan, Allen, et al.
- 1994
|
|
132
|
Implementing layered designs with mixin layers, in
– Smaragdakis, Batory
- 1998
|
|
131
|
The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance
– Bracha
- 1992
|
|
125
|
Niklaus: Programming in Modula-2
– Wirth
- 1982
|
|
119
|
R.: SOFA/DCUP Architecture for Component Trading and Dynamic Updating
– Plasil, Balek, et al.
- 1998
|
|
112
|
Modular object-oriented programming with units and mixins
– FINDLER, M
- 1998
|
|
91
|
A calculus of module systems
– ANCONA, ZUCCA
- 2002
|
|
87
|
Modularity meets inheritance, in
– Bracha, Lindstrom
- 1992
|
|
81
|
Jiazzi: new-age components for old-fashioned java
– MCDIRMID, FLATT, et al.
- 2001
|
|
70
|
Virtual Classes: A powerful mechanism for object-oriented program- ming
– Madsen, Moller-Pedersen
- 1989
|
|
67
|
Type-safe delegation for run-time component adaptation
– Kniesel
- 1999
|
|
58
|
Family polymorphism
– Ernst
- 2001
|
|
50
|
Mixin modules
– DUGGAN, C
- 1996
|
|
47
|
Import is Not Inheritance: Why We Need both Modules and Classes
– Szyperski
- 1992
|
|
45
|
Mixin modules in a call-by-value setting
– HIRSCHOWITZ, X
|
|
44
|
gbeta – a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance
– Ernst
- 1999
|
|
42
|
Genericity in Java with virtual types
– Thorup
- 1997
|
|
37
|
Modula-3 language definition
– Cardelli, Donahue, et al.
- 1992
|
|
35
|
The Programming Language Oberon-2
– Mossenbock, Wirth
- 1991
|
|
33
|
Subtyping is not a good “Match” for object-oriented languages
– Bruce, Fiech, et al.
- 1997
|
|
30
|
Virtual types are statically safe
– Torgersen
- 1998
|
|
27
|
Generic wrappers
– Büchi, Weck
- 2000
|
|
25
|
Architectural reasoning in archjava
– Aldrich, Chambers
- 2002
|
|
24
|
A basic model of typed components
– Seco, Caires
- 2000
|
|
22
|
On inner classes
– Igarashi, Pierce
|
|
22
|
Type-safe prototype-based component evolution
– Zenger
- 2002
|
|
22
|
Extensible algebraic datatypes with defaults
– ZENGER, ODERSKY
- 2001
|
|
20
|
Programming Languages for Reusable Software Components
– Flatt
- 1999
|
|
20
|
Foundations for virtual types
– Igarashi, Pierce
|
|
18
|
C♯ language specification
– Hejlsberg, Golde, et al.
- 2003
|
|
15
|
True modules for Java-like languages
– ANCONA, E
- 2001
|
|
14
|
The Objective Caml system release 3.00 Documentation and user's manual
– Leroy, Doligez, et al.
- 2000
|
|
12
|
2002. Foundations of Object-Oriented Programming Languages: Types and Semantics
– Bruce
|
|
11
|
Implementing extensible compilers
– Zenger, Odersky
- 2001
|
|
10
|
Difference-based modules: A class-independent module mechanism
– Iehisugi, Tanaka
- 2002
|
|
6
|
Modules in object-oriented systems
– Ruping
- 1994
|