Gregor Kiczales

dblp:k/GregorKiczales · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Programming languages and type systems
aspect-oriented programming
0.372005
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.212013
Interacting with dead objects · OOPSLA 2013
Runtime systems and virtual machines
virtual machine implementation
0.212013
Interacting with dead objects · OOPSLA 2013
Programming languages and type systems
extensibility
0.112010
Registration-based language abstractions · OOPSLA 2010
Requirements engineering and software design
modularity
0.132005
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.122003
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.142005
Open Implementation Design Guidelines · ICSE 1997
Aspect-oriented programming and modular reasoning · ICSE 2005
Aspect-oriented programming · ICSE 2005
Program verification
modular reasoning
0.112005
Aspect-oriented programming and modular reasoning · ICSE 2005
Program analysis
dynamic analysis
0.012013
Interacting with dead objects · OOPSLA 2013
Programming languages and type systems › language semantics › formal semantics
denotational semantics
0.012004
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.012004
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.042004
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.012002
Design pattern implementation in Java and aspectJ · OOPSLA 2002
Programming languages and type systems
language implementation
0.012010
Registration-based language abstractions · OOPSLA 2010
Operating systems
kernel customization
0.012001
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.012001
Aspect-oriented programming · ESEC / SIGSOFT FSE 2001
Requirements engineering and software design › software design methodology
aspect-oriented design
0.012000
Improving design and source code modularity using AspectJ (tutorial session) · ICSE 2000
Requirements engineering and software design › separation of concerns
crosscutting concerns
0.022005
Aspect-oriented programming and modular reasoning · ICSE 2005
Aspect-oriented programming · ESEC / SIGSOFT FSE 2001
Compilers and program optimization
prefetching
0.012001
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.011992
Issues in the Design and Documentation of Class Libraries · OOPSLA 1992
Requirements engineering and software design › software architecture › architectural design
module interface design
0.011997
Open Implementation Design Guidelines · ICSE 1997
Programming languages and type systems › object-oriented programming
multiple inheritance
0.011986
CommonLoops: Merging Lisp and Object-Oriented Programming · OOPSLA 1986
Programming languages and type systems
object-oriented programming
0.011986
CommonLoops: Merging Lisp and Object-Oriented Programming · OOPSLA 1986
Software maintenance and evolution
software documentation
0.011992
Issues in the Design and Documentation of Class Libraries · OOPSLA 1992
Programming languages and type systems
method combination
0.011986
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
YearPublicationVenuePosition
2013 Interacting with dead objects
abstract
Debugging 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
OOPSLA2
2012 Understanding registration-based abstractions: A quantitative user study
abstract
The 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
ICPC2
2010 Registration-based language abstractions
abstract
Programming 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
OOPSLA2
2007 Making the Code Look Like the Design - Aspects and Other Recent Work
abstract
Summary 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
ICPC1
2005 Separation of Concerns with Procedures, Annotations, Advice and Pointcuts
Gregor Kiczales, Mira Mezini
ECOOP1
2005 Aspect-oriented programming
abstract
No abstract available
Gregor Kiczales
ICSE1
2005 Aspect-oriented programming and modular reasoning
abstract
Aspects 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
ICSE1
2004 A semantics for advice and dynamic join points in aspect-oriented programming
abstract
A 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
CC2
2003 Modeling Crosscutting in Aspect-Oriented Mechanisms
Hidehiko Masuhara, Gregor Kiczales
ECOOP2
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
ICSE4
2002 Design pattern implementation in Java and aspectJ
abstract
AspectJ 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
OOPSLA2
2001 An Overview of AspectJ
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, William G. Griswold
ECOOP1
2001 Aspect-Oriented System Structure
abstract
Operating 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
HotOS2
2001 Using aspectC to improve the modularity of path-specific customization in operating system code
abstract
Layered 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 FSE2
2001 Aspect-oriented programming
abstract
Aspect-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 FSE1
2000 Improving design and source code modularity using AspectJ (tutorial session)
abstract
Using 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
ICSE2
1997 Aspect-Oriented Programming
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina V. Lopes, Jean-Marc Loingtier, John Irwin
ECOOP1
1997 Open Implementation Design Guidelines
abstract
Designing 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
ICSE1
1997 The OT Life-cycle: From Eureka! to Shrink Wrap (Panel)
abstract
Over 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
OOPSLA4
1996 What Can Programming Languages Contribute to Software Engineering, and Vice Versa? (Panel)
abstract
No abstract available.
Gregor Kiczales
SIGSOFT FSE1
1992 Issues in the Design and Documentation of Class Libraries
abstract
The 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
OOPSLA1
1989 Panel: Object-Oriented Languages: Premises and Promises
Daniel G. Bobrow, L. Peter Deutsch, Gregor Kiczales, Bjarne Stroustrup
OOPSLA3
1986 CommonLoops: Merging Lisp and Object-Oriented Programming
Daniel G. Bobrow, Kenneth M. Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, Frank Zdybel
OOPSLA3