VLDB 2026 Research / reviewers in the wild / expert
Gregor Kiczales
dblp:k/GregorKiczales
· DBLP profile ↗
24ranked-venue papers
10as first author
0since 2021 · last 2013
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 24 · 10 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
14 papers |
Programming languages and type systems · 40% Requirements engineering and software design · 19% Debugging and program repair · 12% |
Topics — the 25 heaviest of 27, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems
aspect-oriented programming |
0.3 | 7 | 2005 | Aspect-oriented programming and modular reasoning · ICSE 2005 Aspect-oriented programming · ICSE 2005 A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 |
Debugging and program repair › software debugging
post-mortem debugging |
0.2 | 1 | 2013 | Interacting with dead objects · OOPSLA 2013 |
Runtime systems and virtual machines
virtual machine implementation |
0.2 | 1 | 2013 | Interacting with dead objects · OOPSLA 2013 |
Programming languages and type systems
extensibility |
0.1 | 1 | 2010 | Registration-based language abstractions · OOPSLA 2010 |
Requirements engineering and software design
modularity |
0.1 | 3 | 2005 | Design pattern implementation in Java and aspectJ · OOPSLA 2002 Improving design and source code modularity using AspectJ (tutorial session) · ICSE 2000 Aspect-oriented programming · ICSE 2005 |
Software maintenance and evolution
software modularity |
0.1 | 2 | 2003 | Modularity in the New Millenium: A Panel Summary · ICSE 2003 Using aspectC to improve the modularity of path-specific customization in operating system code · ESEC / SIGSOFT FSE 2001 |
Requirements engineering and software design
software architecture |
0.1 | 4 | 2005 | Open Implementation Design Guidelines · ICSE 1997 Aspect-oriented programming and modular reasoning · ICSE 2005 Aspect-oriented programming · ICSE 2005 |
Program verification
modular reasoning |
0.1 | 1 | 2005 | Aspect-oriented programming and modular reasoning · ICSE 2005 |
Program analysis
dynamic analysis |
0.0 | 1 | 2013 | Interacting with dead objects · OOPSLA 2013 |
Programming languages and type systems › language semantics › formal semantics
denotational semantics |
0.0 | 1 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 |
Programming languages and type systems
language semantics |
0.0 | 1 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 |
Programming languages and type systems
language design |
0.0 | 4 | 2004 | What Can Programming Languages Contribute to Software Engineering, and Vice Versa? (Panel) · SIGSOFT FSE 1996 A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 Improving design and source code modularity using AspectJ (tutorial session) · ICSE 2000 |
Requirements engineering and software design › design patterns
design pattern implementation |
0.0 | 1 | 2002 | Design pattern implementation in Java and aspectJ · OOPSLA 2002 |
Programming languages and type systems
language implementation |
0.0 | 1 | 2010 | Registration-based language abstractions · OOPSLA 2010 |
Operating systems
kernel customization |
0.0 | 1 | 2001 | Using aspectC to improve the modularity of path-specific customization in operating system code · ESEC / SIGSOFT FSE 2001 |
Requirements engineering and software design
separation of concerns |
0.0 | 1 | 2001 | Aspect-oriented programming · ESEC / SIGSOFT FSE 2001 |
Requirements engineering and software design › software design methodology
aspect-oriented design |
0.0 | 1 | 2000 | Improving design and source code modularity using AspectJ (tutorial session) · ICSE 2000 |
Requirements engineering and software design › separation of concerns
crosscutting concerns |
0.0 | 2 | 2005 | Aspect-oriented programming and modular reasoning · ICSE 2005 Aspect-oriented programming · ESEC / SIGSOFT FSE 2001 |
Compilers and program optimization
prefetching |
0.0 | 1 | 2001 | Using aspectC to improve the modularity of path-specific customization in operating system code · ESEC / SIGSOFT FSE 2001 |
Programming languages and type systems › metaprogramming
metaobject protocol |
0.0 | 1 | 1992 | Issues in the Design and Documentation of Class Libraries · OOPSLA 1992 |
Requirements engineering and software design › software architecture › architectural design
module interface design |
0.0 | 1 | 1997 | Open Implementation Design Guidelines · ICSE 1997 |
Programming languages and type systems › object-oriented programming
multiple inheritance |
0.0 | 1 | 1986 | CommonLoops: Merging Lisp and Object-Oriented Programming · OOPSLA 1986 |
Programming languages and type systems
object-oriented programming |
0.0 | 1 | 1986 | CommonLoops: Merging Lisp and Object-Oriented Programming · OOPSLA 1986 |
Software maintenance and evolution
software documentation |
0.0 | 1 | 1992 | Issues in the Design and Documentation of Class Libraries · OOPSLA 1992 |
Programming languages and type systems
method combination |
0.0 | 1 | 1986 | CommonLoops: Merging Lisp and Object-Oriented Programming · OOPSLA 1986 |
Methods — techniques the papers use, named apart from their topics
snapshot-based debugging · 0.2restricted execution · 0.2aspectj · 0.1denotational semantics · 0.0aspectc · 0.0aspect-oriented refactoring · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2013 | Interacting with dead objectsabstractDebugging and analyzing a snapshot of a crashed program's memory is far more difficult than working with a live program, because debuggers can no longer execute code to help make sense of the program state. We present an architecture that supports the restricted execution of ordinary code starting from the snapshot, as if the dead objects within it had been restored, but without access to their original external environment. We demonstrate the feasibility of this approach via an implementation for Java that does not require a custom virtual machine, show that it performs competitively with live execution, and use it to diagnose an unresolved memory leak in a mature mainstream application. Robin Salkeld, Gregor Kiczales |
OOPSLA | 2 |
| 2012 | Understanding registration-based abstractions: A quantitative user studyabstractThe adoption of programming language innovation is impeded because all program processing tools in the tool chain must support any new or altered language features. Registration-based abstractions (RBAs) were proposed to address this difficulty by allowing the editor to transiently superimpose new language abstractions on existing code. Individual programmers can choose where and when to see a new language abstraction, while at all times the underlying code remains written in the original language. Prior work demonstrated the feasibility of RBAs, but left important questions unanswered regarding how users would interact with such an approach. We asked 50 undergraduate students to answer basic program comprehension questions with and without RBAs. Our results show that participants can quickly and easily understand new abstractions without additional training, and suggest that this will extend to the general programmer community. The results also support a comparison across RBAs, and an initial discussion of specific features that facilitate or confound understanding. John-Jose Nunez, Gregor Kiczales |
ICPC | 2 |
| 2010 | Registration-based language abstractionsabstractProgramming language innovation has been hindered by the difficulty of making changes to existing languages. A key source of difficulty is the tyrannical nature of existing approaches to realizing languages -- adding a new language construct means that any tool, document or programmer that works with the language must be prepared to deal with that construct.A registration-based approach makes it possible to define language constructs that are not tyrannical. They are instead transient -- the program appears to be written using the constructs only so long as a given programmer wants to see it that way. This approach may have the potential to greatly facilitate programming language innovation. Samuel Davis, Gregor Kiczales |
OOPSLA | 2 |
| 2007 | Making the Code Look Like the Design - Aspects and Other Recent WorkabstractSummary form only given. The idea that programs should clearly reflect the design decisions they embody has a long history. Higher-level languages, syntactic macros, domain-specific languages, and intentional programming are different approaches to this common goal. Recent work from several areas, including aspect-oriented programming, has significantly advanced our ability to make code expressive. At the same time, it forces us to reconsider a number of basic assumptions, including what is a program, what is a module, what is a language, and what is an editor. Gregor Kiczales |
ICPC | 1 |
| 2005 | Separation of Concerns with Procedures, Annotations, Advice and Pointcuts
Gregor Kiczales, Mira Mezini |
ECOOP | 1 |
| 2005 | Aspect-oriented programmingabstractNo abstract available Gregor Kiczales |
ICSE | 1 |
| 2005 | Aspect-oriented programming and modular reasoningabstractAspects cut new interfaces through the primary decomposition of a system. This implies that in the presence of aspects, the complete interface of a module can only be determined once the complete configuration of modules in the system is known. While this may seem anti-modular, it is an inherent property of crosscutting concerns, and using aspect-oriented programming enables modular reasoning in the presence of such concerns. Gregor Kiczales, Mira Mezini |
ICSE | 1 |
| 2004 | A semantics for advice and dynamic join points in aspect-oriented programmingabstractA characteristic of aspect-oriented programming, as embodied in Aspect J, is the use of advice and point cuts to define behavior that crosscuts the structure of the rest of the code. The events during execution at which advice may execute are called join points . A pointcut is a set of join points. An advice is an action to be taken at the join points in a particular pointcut. In this model of aspect-oriented programming, join points are dynamic in that they refer to events during the flow of execution of the program.We give a denotational semantics for a minilanguage that embodies the key features of dynamic join points, pointcuts, and advice. This is the first semantics for aspect-oriented programming that handles dynamic join points and recursive procedures. It is intended as a baseline semantics against which future correctness results may be measured. Mitchell Wand, Gregor Kiczales, Christopher Dutchyn |
ACM Trans. Program. Lang. Syst. | 2 |
| 2003 | A Compilation and Optimization Model for Aspect-Oriented Programs
Hidehiko Masuhara, Gregor Kiczales, Christopher Dutchyn |
CC | 2 |
| 2003 | Modeling Crosscutting in Aspect-Oriented Mechanisms
Hidehiko Masuhara, Gregor Kiczales |
ECOOP | 2 |
| 2003 | Modularity in the New Millenium: A Panel Summary
Premkumar T. Devanbu, Robert Balzer, Don S. Batory, Gregor Kiczales, John Launchbury, David Lorge Parnas, Peri L. Tarr |
ICSE | 4 |
| 2002 | Design pattern implementation in Java and aspectJabstractAspectJ implementations of the GoF design patterns show modularity improvements in 17 of 23 cases. These improvements are manifested in terms of better code locality, reusability, composability, and (un)pluggability.The degree of improvement in implementation modularity varies, with the greatest improvement coming when the pattern solution structure involves crosscutting of some form, including one object playing multiple roles, many objects playing one role, or an object playing roles in multiple pattern instances. Jan Hannemann, Gregor Kiczales |
OOPSLA | 2 |
| 2001 | An Overview of AspectJ
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, William G. Griswold |
ECOOP | 1 |
| 2001 | Aspect-Oriented System StructureabstractOperating system structure is important; it leads to understandable, maintainable, 'pluggable' code. But despite our best efforts, some system elements have been difficult to structure. We propose a new analysis of this problem, and a new technology that can structure these elements. Aspect-oriented programming (AOP) (G. Kiczales et al., 1997) uses linguistic mechanisms to support the separation of crosscutting elements, or aspects of the system, from primary functionality. We have developed a proof-of-concept AOP implementation of prefetching in FreeBSD (www.cs.ubc.ca/labs/spl/aspects/aspectc.html). In our implementation, we have been able to modularize prefetching. Yvonne Coady, Gregor Kiczales, Michael J. Feeley, Norman C. Hutchinson, Joon Suan Ong, Stephan Gudmundson |
HotOS | 2 |
| 2001 | Using aspectC to improve the modularity of path-specific customization in operating system codeabstractLayered architecture in operating system code is often compromised by execution path-specific customizations such as prefetching, page replacement and scheduling strategies. Pathspecific customizations are difficult to modularize in a layered architecture because they involve dynamic context passing and layer violations. Effectively they are vertically integrated slices through the layers. An initial experiment using an aspect-oriented programming language to refactor prefetching in the FreeBSD operating system kernel shows significant benefits, including easy (un)pluggability of prefetching modes, independent development of prefetching modes, and overall improved comprehensibility. Keywords aspect-oriented programming, software modularity, operating system design 1. Yvonne Coady, Gregor Kiczales, Michael J. Feeley, Greg Smolyn |
ESEC / SIGSOFT FSE | 2 |
| 2001 | Aspect-oriented programmingabstractAspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use AOP to implement crosscutting conerns in a concise modular way. It works with AspectJ, a seamless aspect-oriented extension to the Java(tm) programming language, and with AspectC, an aspect-oriented extension to C in the style of AspectJ. It also includes a description of their underlying model, in terms of which a wide range of AOP languages can be understood. Gregor Kiczales, Erik Hilsdale |
ESEC / SIGSOFT FSE | 1 |
| 2000 | Improving design and source code modularity using AspectJ (tutorial session)abstractUsing only traditional techniques the implementation of concerns like exception handling, multi-object protocols, synchronization constraints, and security policies tends to be spread out in the code. The lack of modularity for these concerns makes them more difficult to develop and maintain. This tutorial shows how to use Aspect-oriented programming (AOP) [2, 3] to implement concerns like these in a concise modular way. We discuss the effect aspects have on software design and on code modularity. The concrete examples in the tutorial use AspectJ [1], a freely available aspect-oriented extension to the Java™ programming language. Cristina V. Lopes, Gregor Kiczales |
ICSE | 2 |
| 1997 | Aspect-Oriented Programming
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina V. Lopes, Jean-Marc Loingtier, John Irwin |
ECOOP | 1 |
| 1997 | Open Implementation Design GuidelinesabstractDesigning reusable software modules can be extremely difficult.The design must be balanced between being general enough to address the needs of a wide range of clients and being focused enough to truly satisfy the requirements of each specific client One area where it can be particularly difficult to strike this balance is in the implementation strategy of the module.The problem is that generalpurpose implementation strategies, tuned for a wide range of clients, aren't necessarily optimal for each specific client-this is especially an issue for modules that are intended to be reusable and yet provide high-performance.An examination of existing software systems shows that an increasingly important technique for handling this problem is to design the module's interface in such a way that the client can assist or participate in the selection of the module's implementation strategy.We call this approach open implementation.When designing the interface to a module that allows its clients some control over its implementation strategy, it is important to retain, as much as possible, the advantages of traditional closed implementation modules.This paper explores issues in the design of interfaces to open implementation modules.We identify key design choices, and present guidelines for deciding which choices are likely to work best in particular situations. Gregor Kiczales, John Lamping, Cristina V. Lopes, Chris Maeda, Anurag Mendhekar, Gail C. Murphy |
ICSE | 1 |
| 1997 | The OT Life-cycle: From Eureka! to Shrink Wrap (Panel)abstractOver the past years, the Object Technology community has seen the birth of a number of new technology ideas that have changed the way we do computing. These ideas have affected compiler design, analysis approaches, project management techniques, user interface design, deployment strategies and implementation tactics. But where do these ideas come from? And how do they evolve? Do they address the needs as specified by members of the Object Community? Is there a way we can nurture the introduction and assimilation of these ideas to and by the community at large? And what are the market forces that bend ideas to their will. This panel will look at new ideas in Object Technology from a variety of perspectives and will attempt to get to the heart of the way that we, as technologists, create, buy, sell and grow ideas. Laura Hill, Bruce Anderson, Adele Goldberg 0001, Gregor Kiczales, Colin Scott, Kevin Tyson |
OOPSLA | 4 |
| 1996 | What Can Programming Languages Contribute to Software Engineering, and Vice Versa? (Panel)abstractNo abstract available. Gregor Kiczales |
SIGSOFT FSE | 1 |
| 1992 | Issues in the Design and Documentation of Class LibrariesabstractThe design and specification of an extensible class library presents a difficult challenge:because extensibility comes from allowing the user to override parts of the implementation, more of the internal structure must be exposed to the user than in a typical procedure library.This raises issues in both how the library is designed and how its specification is written.Specification of the CLOS Metaobject Protocol required a combination of new and existing techniques to address these issues.We present those techniques, and discuss their relation to the underlying issues."This CLOS-like syntax indicates that draw is a one argument generic function; that the argument is called button; and that this method is specialized to the class text-button. Gregor Kiczales, John Lamping |
OOPSLA | 1 |
| 1989 | Panel: Object-Oriented Languages: Premises and Promises
Daniel G. Bobrow, L. Peter Deutsch, Gregor Kiczales, Bjarne Stroustrup |
OOPSLA | 3 |
| 1986 | CommonLoops: Merging Lisp and Object-Oriented Programming
Daniel G. Bobrow, Kenneth M. Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, Frank Zdybel |
OOPSLA | 3 |