Home · Schedule · Tracks · Recommendations · Registration

Thursday, 30 October

8:30-12:00 Morning

Tutorial 53 Legacy: The Other Kind of Inheritance
Tutorial 54: Running Agile Software Development Projects with RUP
Tutorial 55 J2EE in Practice: Architectural Variations in the Context of Enterprise Systems
Tutorial 56: Model-Driven Architecture
Tutorial 57 Test-Driven Development Workout: Building Java Muscle
Tutorial 58: Object-Oriented Modelling with UML

8:30-10:00

Keynotes & Invited Speakers: OOPSLA Keynote - The Internet Paradigm Shift
Technical Paper: Garbage Collection 1
Panel: Agile Management—An Oxymoron?

8:30-8:35

The ACM SIGPLAN Student Research Competition: Student Research Award Presentation

10:00-14:00

Poster: Posters on display

10:30-12:00

Technical Paper: Garbage Collection 2
Panel Object-Oriented Success Stories: "Learning from our Failures"
Onward! Panel: Reuse Repositories and Reuse—The Realities

10:30-11:30

Technical Paper: Analysis

11:00-11:45

Demonstration 11 ATCT: a Java Framework that Offers New Approach to Developing Asynchronous Processes
Demonstration 14 MetaEdit+: Defining and using domain-specific modeling languages and code generators
Demonstration 15: A Policy Based System to Incorporate Self-Managing Behaviors in Applications
Demonstration 16: Using Events to Debug Java Programs Backwards in Time

12:00-12:45

Demonstration 3: Visualizing and AspectJ-enabling Eclipse Plugins using Bytecode Instrumentation
Demonstration 7: Making reusable learning objects available through LOM and XML
Demonstration 12: Generative Model Transformer
Demonstration 18: Do You Still Use a Database?

13:00-13:45

Demonstration 21: Requirements Use case Tool (RUT)
Demonstration 24 Variant Management for Embedded Software Product Lines with Pure::Consul and AspectC++
Demonstration 26: Time Conscious Objects
Demonstration 27 Visual SDLC: Improving Requirements Engineering for Object-Oriented Systems

13:30-15:00

Keynotes & Invited Speakers: Eclipse and The Dark Side of the Moon
Technical Paper: Transactions and Persistence
Panel: What's so eXtreme About Doing Things Right?
Panel Application Servers: One Size Fits All ... Not?

15:00-17:00

Special Event: Ice Cream Social (OOPSLA 2004 Kick-off)

Posters on display

Monday, 27 October – 17:30-19:30

Tuesday, 28 October – 10:00-17:00

Wednesday, 29 October – 10:00-17:00

Thursday, 30 October – 10:00-14:00

Workshop on Process Engineering for Object-Oriented and Component-Based Development

Brian Henderson-Sellers, University of Technology, Sydney, brian@it.uts.edu.au

The poster will describe the results of the OOPSLA workshop on this topic

Workshop: Second International Workshop on Agent-Oriented Methodologies

Brian Henderson-Sellers, University of Technology, Sydney, brian@it.uts.edu.au

The poster will describe the results of the OOPSLA workshop on this topic

The Twelfth OOPSLA Workshop on behavioral semantics -- Striving for Simplicity

Haim Kilov, Independent Consultant and Stevens Institute of Technology, haimk@acm.org
Kenneth Baclawski, College of Computer Science, Northeastern University, ken@baclawski.com

Elegant OO specifications of business and system semantics

Visualizing Class Interfaces with Concept Lattices

Uri Dekel, ISRI, School of Computer Science, Carnegie Mellon University, udekel@cs.cmu.edu
Yossi Gil, CS Dept, Technion, Israel, yogi@cs.technion.ac.il

Our research promotes the use of a mathematical concept lattice based upon the binary relation of accesses between methods and fields as a novel visualization of individual Java classes. We demonstrate in a detailed real-life case study that such a lattice is valuable for reverse-engineering purposes, in that it helps reason about the interface and structure of the class and find errors in the absence of source code. We also show that this lattice can be of assistance in selecting an efficient reading order for the source code, if available. Our technique can also serve as a heuristic for automatic feature categorization, enabling it to assist efforts of re-documentation.

Time Conscious Objects: A Domain-Specific Framework and Generator

Jorn Bettin, SoftMetaWare, jorn.bettin@softmetaware.com
Jeff Hoare, SoftMetaWare, jeff.hoare@softmetaware.com

Time is a crosscutting concern that is hard to separate from other business logic. We have developed Time Conscious Objects (TCO), a Java toolkit that allows existing business application systems to be extended with "time conscious" behavior by factoring out all aspects of time-related behavior into a framework and a set of classes that is distinct from the existing code base.

Middleware Benchmarking: Approaches, Results, Experience

Petr Tuma, Charles University, Czech Republic, petr.tuma@mff.cuni.cz
Paul Brebner, CSIRO, Australia, paul.brebner@csiro.au
Emmanuel Cecchet, INRIA Rhone-Alpes, France, emmanuel.cecchet@inrialpes.fr
Julie Marguerite, INRIA Rhone-Alpes, France, julie.marguerite@inrialpes.fr

The poster presents results of the OOPSLA 2003 Workshop on Middleware Benchmarking. The workshop is a meeting point between developers and users as two groups involved in middleware benchmarking. The poster identifies the obstacles encountered when designing, running and evaluating middleware benchmarks and proposes approaches to tackle these obstacles.

Visualization of Eclipse

Chris Laffra, IBM Ottawa Labs, Chris_Laffra@ca.ibm.com

The Eclipse platform uses plugins and an extension mechanism to manage complexity. This leads to hundreds or even thousands of plugins. Bytecode instrumentation can be used to visualize all these plugins. We show plugin activity and communication, plugin memory usage, detailed method tracing facilities, and custom visualizations.

An Introduction to Fly: A Smaller Smalltalk

Thomas Wrensch, University of the Pacific, Department of Computer Science, twrensch@uop.edu
Jonathan Schifman, University of the Pacific, Department of Computer Science, j_schifman@uop.edu

Fly is a lightweight version of the Smalltalk programming environment. Fly attempts to preserve the benefits of Smalltalk as a development system while making it feasible to develop applications for embedded systems, PDAs, and other limited resource environments. Here we introduce the Fly project and its current and expected results.

Generative Model Transformer: An Open Source MDA Tool Initiative

Jorn Bettin, SoftMetaWare, jorn.bettin@softmetaware.com
Ghica van Emde Boas, Bronstee Software & Services, emdeboas@bronstee.com

The Generative Model Transformer (GMT) project is an Open Source initiative to build a Model Driven Architecture tool. The project should result in (a) a tool that fulfils the MDA promise for faster/more accurate/better maintainable application development, (b) a tool for industrial use, and (c) MDA related research. A distinctive feature of GMT is the emphasis of model transformations as "first-class model citizens".

Dynamic Personal Roles for Ubiquitous Computing

Robert McGrath, Department of Computer Science, University of Illinois at Urbana-Champaign, mcgrath@ncsa.uiuc.edu
Dennis Mickunas, Department of Computer Science, University of Illinois at Urbana-Champaign, mickunas@cs.uiuc.edu

This paper presents doctoral research on a key problem for ubiquitous computing: implementation of representatives for physical objects, particularly people. This poster outlines an approach to implementing dynamic personal roles suitable for a ubiquitous computing environment.

Implications of Test-Driven Development: A Pilot Study

Reid Kaufmann, Sun Microsystems, Inc., reid.kaufmann@sun.com
David Janzen, Bethel College, djanzen@bethelks.edu

A Spring 2003 experiment examines the claims that test-driven development or test-first programming improves software quality and programmer confidence. The results indicate support for these claims and inform larger future experiments.

Agile Software Development for Component Based Software Engineering

Wolfgang Radinger, Vienna University of Technology, Institute of Computer Technology, radinger@ict.tuwien.ac.at
Karl Michael Göschka, Frequentis Nachrichtentechnik GmbH, goeschka@acm.org

Agile Software Development and Component Based Software Engineering are two fundamentally different methods to serve today's demands of software engineering. By combining the technical and organizational issues, we introduce an approach for a consequent integration to allow agile component development in the small and system engineering in the large, respectively.

Dynamically Updatable Component-based System

Robert Bialek, DIKU, University of Copenhagen, bialek@diku.dk

Updating 24/7/365 distributed, component-based applications is challenging. We present a framework of a Dynamically Updatable Component-based System (DUCS) and some of its implementation details. The framework is a multi-layered extension to now-a-days VirtualMachines supporting updates of heterogenous components. Prototype is a distributed GroupWare application build on top of the framework.

MAS: A Multi-Agent System Modeling Language

Viviane Silva, Pontifical Catholic University, viviane@inf.puc-rio.br
Carlos Lucena, Pontifical Catholic University, lucena@inf.puc-rio.br

We propose a multi-agent system modeling language (MAS-ML) that extends UML based on structural and dynamic properties presented in a conceptual framework called TAO (Taming Agents and Objects). The main difference between our approach and the others is the clear definition and representation of the elements that compose multi-agent systems.

*J: A Tool for Dynamic Analysis of Java Programs

Bruno Dufour, McGill University, bdufou1@cs.mcgill.ca
Laurie Hendren, McGill University, hendren@cs.mcgill.ca
Clark Verbrugge, McGill University, clump@cs.mcgill.ca

We describe a complete system for gathering, computing and presenting dynamic metrics from Java programs. The system itself was motivated from our real goals in understanding program behaviour as compiler/runtime developers, and so solves a number of practical and difficult problems related to metric gathering and analysis.

Beyond Green-Field Software Development: Strategies for Reengineering and Evolution

Dennis Mancl, Lucent Technologies, Murray Hill, NJ, mancl@lucent.com
William Opdyke, North Central College, Naperville, IL, opdyke@noctrl.edu
Steven Fraser, Consultant, Santa Clara, CA, sdfraser@acm.org
Willem-Jan van den Heuvel, InfoLab, Tilburg University, Tilburg, The Netherlands, W.J.A.M.vdnHeuvel@uvt.nl

This poster will be a report of the results of the workshop of the same title. The workshop addresses two important situations in the creation and evolution of long-lived software systems: how to renew an old software system and how to manage a software system that demands constant change and growth. In both situations, it is a challenge to manage the evolution process. The workshop will discuss a set of techniques and tools for software evolution that can contribute to success.

Engineering and Reusing Stable Atomic Knowledge (SAK) patterns

Haitham Hamza, University of Nebraska-Lincoln, hhamza@cse.unl.edu
Mohamed Fayad, San José State University, m.fayad@sjsu.edu

Reusing domain-independent knowledge might be hindered if such knowledge is presented as an integral part of domain specific components. This poster presents the concept of Stable Atomic Knowledge (SAK) patterns. A SAK pattern presents a domain-independent knowledge in such a way that makes this knowledge reusable whenever it is needed.

Extracting Domain-Specific and Domain-Independent Patterns

Haitham Hamza, University of Nebraska-Lincoln, hhamza@cse.unl.edu
Ahmed Mahdy, University of Nebraska-Lincoln, amahdy@cse.unl.edu
Mohamed Fayad, San José State University, m.fayad@sjsu.edu
Marshall Cline, MT Systems Co., cline@ parashift.com

There are no mature guidelines or methodologies exist for extracting patterns. Software Stability Model can provide a base for extracting patterns. This poster presents the concept of extracting both domain-specific and domain- independent patterns from systems that are built using software stability concepts.

An Approach to Monitor Application States for Self-Managing (Autonomic) Systems

Hoi Chan, IBM T.J Watson Research Center, IBM Corp., hychan@us.ibm.com
Trieu Chieu, IBM T.J Watson Research Center, IBM Corp., tchieu@us.ibm.com

Monitoring the states of an application is an important part of building applications with self-managing behaviors. The problem lies on those applications where no source code is available to add monitoring functions, or modification is expensive. In this report, we will describe an Aspect Oriented Programming based approach to build generic monitoring systems for legacy applications

The "Killer Examples" for Design Patterns and Objects First workshops held at OOPSLA 2002 and 2003

Carl Alphonce, University at Buffalo, SUNY, alphonce@cse.buffalo.edu
Stephen Wong, Rice University, swong@cs.rice.edu
Dung Nguyen, Rice University, dxnguyen@cs.rice.edu
Phil Ventura, University at Buffalo, SUNY, pventura@cse.buffalo.edu
Michael Wick, University of Wisconsin - Eau Claire, wickmr@uwec.edu

A killer app is an "application that actually makes a sustaining market for a promising but under-utilized technology." [The Jargon File] A "killer example" provides clear and compelling motivation for some concept. This poster reports on OOPSLA2002 and OOPSLA2003 workshops exploring "killer examples" for teaching design patterns and objects-first.

Patterns in Retrospectives

Linda Rising, Independent consultant, risingl@acm.org
Mary Lynn Manns, University of North Carolina at Asheville, manns@unca.edu

Retrospectives are important, not only for object technology, but for any human activity. Our workshop will begin documenting patterns for retrospectives and proposing an initial pattern language structure. The poster will present the skeleton outline of the fledgling pattern language and the patterns that will have been presented.

Model Driven Architecture Development Approach for Pervasive Computing

Kai Hemme-Unger, DaimlerChrysler, kai.hemme-unger@web.de
Thomas Flor, DaimlerChrysler, thomas.flor@daimlerchrysler.com
Walter Niess, DaimlerChrysler, walter.niess@daimlerchrysler.com
Gabriel Vögler, DaimlerChrysler, gabriel.voegler@daimlerchrysler.com

The evaluation of a model driven architecture development approach on the project derived from the need to shorten the time-to-market and to improve the software quality. This seems to be reachable by applying application knowledge ex post to afore implemented building blocks.

A Framework to Enable User Directed Component Binding at Run-Time

Timothy Troup, University of Glasgow, troup@dcs.gla.ac.uk
Iain Darroch, University of Glasgow, darrochi@dcs.gla.ac.uk

Currently experimental scientists must perform time consuming and error-prone tasks to drive a series of computational data analyses. We have designed and implemented a novel framework that obviates the need for these tasks to be performed by enabling user directed component binding at run-time.

Using Language Interpreters as Tools for Learning Different Programming Paradigms

Arlindo da Conceicao, University of São Paulo, Brazil, arlindo@ime.usp.br
Edson Sussumu, University of São Paulo, Brazil, susumu@ime.usp.br
Ariane Lima, University of São Paulo, Brazil, ariane@ime.usp.br
Marcelo Brito, University of São Paulo, Brazil, mbrito@ime.usp.br
Jorge Del Teglia, University of São Paulo, Brazil, jorge@linux.ime.usp.br

We present a framework for implementing educational language interpreters. The architecture of the system was planned to highlight paradigm similarities and differences and also to offer clean object-oriented design. The framework includes classes to implement the functional (including closures and delayed evaluation), object-oriented, and logic programming paradigms.

The Third OOPSLA Workshop on Domain-Specific Modeling

Jeff Gray, University of Alabama at Birmingham (UAB), gray@cis.uab.edu
Matti Rossi, Helsinki School of Economics, mrossi@hkkk.fi
Juha-Pekka Tolvanen, MetaCase Consulting, jpt@metacase.com

This poster describes a framework for implementing domain-specific visual modeling languages and summarizes industrial experiences from the use of domain-specific languages. The results of the Third OOPSLA Workshop on Domain-Specific Modeling will also be reported in this poster.

Teaching Software Testing: Automatic Grading Meets Test-First Coding

Stephen Edwards, Virginia Tech, Dept. of Computer Science, edwards@cs.vt.edu

A new approach to teaching software testing is proposed: students use test-driven development on programming assignments, and an automated grading tool assesses their testing performance and provides feedback. The basics of the approach, screenshots of the system, and a discussion of industrial tool use for grading Java programs are discussed.

Modular Quality of Service-enabled Management Service for Component-based Distributed Systems

Octavian Ciuhandu, Performance Engineering Laboratory, ciuhandu@eeng.dcu.ie
John Murphy, Performance Engineering Laboratory, murphyj@eeng.dcu.ie

We present a modular QoS-enabled load management framework for component oriented middleware. It offers the possibility of selecting the optimal load distribution algorithms and changing the load metrics at runtime. The QoS service level agreements are made at user level, transparent to the managed application. According to the complexity of the managed application, only some of the modules might be required, thus activated.

An AspectJ-Enabled Eclipse Core Runtime

Martin Lippert, University of Hamburg & it-Workplace Solutions Ltd., lippert@acm.org

The poster shows the ideas and techniques behind a combination of the world of Eclipse plugins and AspectJ, for example implementing logging as a separated plugin. Load-time weaving techniques integrated into the Eclipse runtime allow the development of aspects that modularize crosscutting concerns across plugin boundaries.

MRI Visual Analyzer: a comparative study of different analysis and design modeling methods

Elham Yavari, Graduate student, College of Engineering, San José State University, e_yavari@yahoo.com
Mohamed Fayad, Professor of Computer Engineering, College of Engineering, San José State University, mfayad@sjsu.edu

In order to show the importance of analysis and design methods, we chose a problem statement (MRI visual analyzer) and developed two class diagrams based: traditional OO and software stability methods (SSM). Qualitative comparison between the two model shows that SSM improves the model simplicity, completeness and stability.

A Proposed Framework for the Provision of e-Learning in Programming

Marie-Helene Ng Cheong Vee, Birkbeck College, University of London, gngch01@dcs.bbk.ac.uk

We present a proposed framework for the provision of e-learning in programming and teaching programming irrespective of paradigm and language. The framework, consisting of set of integrated components provides course management, collaborative learning, an Intelligent Tutoring System, and computer-assisted creation of re-usable Learning Objects - all in the context of the Inverse Curriculum.

Metamodeling Approach to Model Transformations

Sheena Judson, Louisiana State University, sheena.judson@att.net
Doris Carver, Louisiana State University, carver@csc.lsu.edu
Robert France, Colorado State University, france@cs.colostate.edu

Model Driven Architecture (MDA), which supports the development of software-intensive systems through the transformation of models to executable components and applications, requires a standard way to express transformations. This poster describes an approach based on rigorous modeling of well-defined pattern-based model transformations at the metamodel level.

Multicodes: Optimizing Virtual Machines using Bytecode Sequences

Ben Stephenson, The University of Western Ontario, ben@csd.uwo.ca
Wade Holst, The University of Western Ontario, wade@csd.uwo.ca

A virtual machine optimization technique that makes use of bytecode sequences is introduced. The process of determining candidate sequences is discussed and performance gains achieved when applied to a Java interpreter are presented. The suitability of this optimization for JVMs that perform just-in-time compilation is also discussed.

Distributed Object Inheritance to Structure Distributed Applications

Jessie Dedecker, Vrije Universiteit Brussel, jededeck@vub.ac.be
Thomas Cleenewerck, Vrije Universiteit Brussel, tcleenew@vub.ac.be
Wolfgang De Meuter, Vrije Universiteit Brussel, wdmeuter@vub.ac.be

Prototype-based languages (PBLs) are good at sharing information between objects, while sharing is a ubiquitous problem in distributed application programming (due to concurrency and partial failures). New language concepts can exploit the advantages of PBLs to ease the distribution problems and help express distributed communication patterns.

7 Making reusable learning objects available through LOM and XML

Tuesday, 28 October – 11:00-11:45

Thursday, 30 October – 12:00-12:45

Lars Arne Skar, Implementation lead/System architect, lars@bekk.no
Thomas Heiberg, Portal developer/system integrator, thomas.heiberg@bekk.no
Vidar Kongsli, Content developer/integrator, vidar.kongsli@bekk.no

The norwegian ministry of education and research is currently establishing an education portal as part of the national learning net for the education sector. One major goal of this initiative is to enable better reuse and sharing of learning objects on the internet. The portal is developed by BEKK, a Norwegian consultancy.

The demonstration will show:

  • An efficient and user friendly search interface optimised for learning resources
  • Using the LOM standard to facilitate data integration
  • Using loose coupling and XML to enable integration

The LOM (Learning Object Metadata) standard; IEEE 1484.12.1 (http://ltsc.ieee.org/wg12/) standard was approved December 10, 2002 and defines a meta-model to categorize and describe learning objects. Although well received, and internationally recognized, adoption is still in its early stages, which again required the project to define the actual use of the standard in collaboration with local standardization bodies.

The following technologies and products developed the portal and search interface:

  • A portal framework; IBM Websphere Portal Server for the search user interface
  • A search engine; Verity, to index the meta-data for learning objects
  • XML and XML Schema for data interchange and validation

The demo will run on a standard web-browser; although designed to support all browsers; it is optimzed for a javascript enabled browser. The data interchange and internal processes can be displayed by a terminal emulator with SSH support, such as putty.

11 ATCT: a Java Framework that Offers New Approach to Developing Asynchronous Processes

Tuesday, 28 October – 15:00-15:45

Thursday, 30 October – 11:00-11:45

Serguei Mourachov, Velare Technologies Inc., smourachov@velare.com
John van Rij, Velare Technologies Inc., jvanrij@velare.com

Velare Technologies, Inc. will demonstrate ATCT (Asynchronous Transfer of Control Threading) – a Java framework for asynchronous method invocation. ATCT facilitates development of asynchronous long-running processes in Java, using well-known OOP techniques and design patterns. Traditionally when an application interacts asynchronously with an external environment, event-driven programming is used. However, this approach makes it difficult to develop processes with complex flow logic. Moreover, programming of sophisticated workflow patterns becomes almost impossible. ATCT allows transforming the event-driven programming style into a well-known sequential programming style, enabling the use of OOP for asynchronous process development. In addition, it is possible to develop a variety of new types of applications that require manipulation of execution context. ATCT introduces a new approach for execution context reification in Virtual Machine based runtime environments. ATCT uses a secondary bytecode interpreter to execute specially marked methods in a special mode, which allows to access execution context as first class object. The secondary interpreter is written in the Java programming language allowing use of ATCT on any JVM. ATCT’s functionality and capabilities will be presented by using slides and code samples. After introducing the concept using simple examples, we will show the possibilities for complex distributed architectures by showing prototypes of frameworks for messaging and web applications. Our demonstration is targeted to people who are interested in the use of VM-oriented mainstream OO languages such as Java or C#, for new types of applications. The demonstration should also be interesting for designers of Virtual Machines and new languages.

12 Generative Model Transformer

Tuesday, 28 October – 15:00-15:45

Thursday, 30 October – 12:00-12:45

Ghica van Emde Boas, bronstee.com, emdeboas@bronstee.com
Jorn Bettin, SoftMetaWare, jorn.bettin@softmetaware.com

The Generative Model Transformer (GMT) project is an Open Source initiative to build a Model Driven Architecture™ tool that allows fully customisable Platform Independent Models, Platform Description Models, Mappings, and Refinement Transformations. The project should result in:

  • a tool that fulfils the MDA promise for faster/more accurate/better maintainable application development,
  • a tool for industrial use,
  • MDA related research - which is encouraged and needed.

GMT resides as a technology project on Eclipse.org.

The demo intends to show the state of the tool at the time of OOPSLA.

The software is designed using UML modeling and implemented using generative techniques. It will be implemented mainly in Java. Links will be provided to other existing tools that can fill in some of the functionality required.

GMT will provide a related set of components that can be used by other MDA tool components, and will consist of four main components:

  • A mapping component that can combine two XMI-encoded models into one new XMI-encoded model.
  • A model transformation component using XMI as input and output.
  • A text generation component, using XMI as input and text (code) as output.
  • A workflow component that provides the required glue between the three functional components above, any additional user-developed MDA tool components, and popular IDEs/tool platforms such as Eclipse.

14 MetaEdit+: Defining and using domain-specific modeling languages and code generators

Tuesday, 28 October – 16:00-16:45

Thursday, 30 October – 11:00-11:45

Juha-Pekka Tolvanen, MetaCase, jpt@metacase.com
Matti Rossi, Helsinki Business School, mrossi@hkkk.fi

MetaEdit+ is an environment that allows building modeling tools and generators fitting to application domains, without having to write a single line of code. The capability to define modeling tools and generators is relevant as it provides the ability to raise the abstraction of design work from code to domain concepts, and a raise in abstraction leads to an imminent raise in productivity, as illustrated by the past years' experiences.

In domain-specific modeling and MetaEdit+, one expert defines a domain-specific language as a metamodel containing the domain concepts and rules, and specifies the mapping from that to code in a domain-specific code generator. For the method implementation, MetaEdit+ provides a metamodeling language and tool suite for defining the method concepts, their properties, associated rules, symbols, checking reports, and generators.

Once the expert defines a modeling method, or even a partial prototype, the rest of the team can start to use it in MetaEdit+ to make models with the modeling language and the required code is automatically generated from those models. Based on the metamodel, MetaEdit+ automatically provides CASE tool functionality: diagramming editors, browsers, generators, multi-user/project/platform support, etc. MetaEdit+ is implemented in Smalltalk.

The MetaEdit+ demo will focus on showing how the domain-specific languages and generators are made; complete with several examples of domain-specific methods and related code generators.

Keywords: metamodel; domain-specific modeling languages; code generators

15 A Policy Based System to Incorporate Self-Managing Behaviors in Applications

Tuesday, 28 October – 16:00-16:45

Thursday, 30 October – 11:00-11:45

Hoi Chan, IBM T.J Watson Research Center, hychan@us.ibm.com

With the rapid increase in complexity of software systems and applications, it becomes necessary to develop tools to simplify the incorporation of self-managing features into applications. The use of object and component technologies, together with a policy system which externalizes business logic from an application, plays an important role in enabling systems with greater manageability and variability.

Current policy systems are mainly domain specific, and there is a need for an execution system which is flexible and usable across a variety of domains. Our policy execution system provides a framework which utilizes object and component technologies to separate the process of executing a policy into various components and processes. Each component and sub-process can be developed independently, configured and reused.

In our programming system, an episode of policy execution can be viewed as a composition of the following components: high level policy language definition and authoring, translation to executable code for the choice of execution mechanism, input and output, mappings of application objects and the underlying execution mechanism (rule engines, execution algorithms or strategies). Furthermore, we separate a high level policy into its various logic components: operation logic, priority logic, conflict resolution logic and each of these components can be developed and reused independently.

Our policy framework completely hides the programming details and exposes the interfaces only. In the demo, we will show how to build an application using the policy framework in various contexts with a single policy and modify the policy subsequently to illustrate the various operation of each of the components and features, and how an application uses the policy system to enhance its self-managing features. (The prototype of this system will be available for free download in 3Q of 2003.)

16 Using Events to Debug Java Programs Backwards in Time

Tuesday, 28 October – 16:00-16:45

Thursday, 30 October – 11:00-11:45

Bil Lewis, Lambda Computer Science, Bil.Lewis@LambdaCS.com
Mireille Ducassé, IRISA, ducasse@irisa.fr

An "Omniscient Debugger" works by recording all state changes in the run of a program, and then allowing the programmer to explore the history of that program— effectively going "backwards in time." Event analysis debuggers work by observing events as they occur, and allowing the programmer to write queries which will pause the program when matched.

Recently we have integrated the two techniques to produce an omniscient debugger which can use event queries to search the history of a program interactively. The query mechanism is designed along the lines of an EMACS incremental search.

The implementation of the system is in Java and records two types of events: method calls (and returns) and assignments. To our best knowledge, this is the first event model for Java.

A typical scenario is a quick sort program which neglects to sort one entry. An event search for the method call which should have sorted the entry ("Find a call to sort() whose start is less than the entry and whose end is greater") allows the programmer to get close to the bug, and the normal mechanisms of the omniscient debugger ("step forwards", "step backwards", etc.) allow the programmer to verify the exact cause of the bug.

In addition to the above (which the Prolog-based Coca system of Ducasse is capable of), it is possible to include both objects and the instance variables of those objects in the query (e.g., "Find a call to OBJ.sort() where OBJ.type is 'Integer'").

26 Time Conscious Objects

Tuesday, 28 October – 16:00-16:45

Thursday, 30 October – 13:00-13:45

Jorn Bettin, SoftMetaWare, jorn.bettin@softmetaware.com
Jeff Hoare, SoftMetaWare, jeff.hoare@softmetaware.com

In most business software systems the time dimension of business objects plays a significant role. Time is a crosscutting concern that is hard to separate from other business logic. We have developed a toolkit that allows existing business application systems to be extended with "time-conscious" behavior in a non-intrusive way by factoring out all aspects of time-related behavior into a framework and a set of classes that is distinct from the existing code base. The Time Conscious Objects™ (TCO) toolkit is currently implemented in Java™, but through the use of generation technology the toolkit can easily be made available in any language that supports polymorphism.

The TCO toolkit has been explicitly designed to allow non-intrusive and incremental integration into existing systems. Time-conscious objects can have a major impact on the quality and maintainability of applications by eliminating the complexity of dealing with the time dimension. This is the case for example in time-based billing systems, in the insurance industry, and in the modeling of "parts" in ERP and manufacturing systems.

The demonstration provides an overview of the architecture and the APIs that TCO uses to integrate with existing application system environments. Beyond that, the demonstration shows on the basis of one or more small example applications, how TCO can be used to raise the level of abstraction in platform independent models and in business application code.

TCO product development is work-in-progress and the demonstration is intended to be highly interactive, giving the audience opportunity to raise and discuss their specific time-dimension-related requirements.

18 Do You Still Use a Database?

Wednesday, 29 October – 11:00-11:45

Thursday, 30 October – 12:00-12:45

Klaus Wuestefeld, Objective Solutions, klaus@objective.com.br

This is the demo of Prevayler, the original free-software Prevalence layer for Java.

System Prevalence is transparent persistence and transparent replication of native business objects. Prevayler makes any old Java VM logically invulnerable for business objects without the need for pre or post-processing.

Queries run 3 to 4 orders of magnitude faster than using a database through JDBC even with the whole database cached locally in RAM.

DBMSs are the single most hampering force acting on the OO community. While they provide us with vital services, such as the babies born inside the Matrix, we are also pitifully atrophied by the restrictions they impose.

Instead of maiming our object design, Prevalence frees us to use the observer pattern among thousands of business objects or to run polymorphic queries on millions of them - some basic examples that would be way too slow, even on OO databases.

We are no longer restricted to the query language, algorithms and data-structures provided with our database.

Prevayler has been ported to several languages including Python, Perl, C#, Objective C, Ruby and a Smalltalk port by Kent Beck and friends.

Witness the transparent persistence and replication of an application running on Prevayler and discuss:

  • The simple concepts that make it possible;
  • The 350 lines of insanely refactored Prevayler source-code;
  • The shortcomings of the technology;
  • The adoption by the community.

Above all, you'll be able to shutdown your database and start using the full potential of OO.

Keywords: Prevalence, Persistence, Transparent.

24 Variant Management for Embedded Software Product Lines with Pure::Consul and AspectC++

Wednesday, 29 October – 12:00-12:45

Thursday, 30 October – 13:00-13:45

Danilo Beuche, pure-systems GmbH, danilo.beuche@pure-systems.com
Olaf Spinczyk, Friedrich-Alexander-Universität Erlangen, olaf.spinczyk@informatik.uni-erlangen.de

Software for embedded systems faces some special constraints not found in other domains. One of these constraints is a hard limitation on available RAM/ROM, processing power, and other resources. To cope with these limitations without losing the reusability of the software components, product line technologies are a promising approach. However, adequate tools for variant management are still rare.

In the demonstration we will apply Pure::Consul, a tool which supports the description of problem and solution domains of product lines, software families, or other variable artifacts in a highly flexible manner, to a realistic application scenario: a weather station product line running on a small 8 bit microcontroller with only a few KBytes of memory.

Problem domain modeling with Pure::Consul is based on extended feature models. The tool allows for integration of many different variability realization techniques through its customizable transformation backend. Thus, it is able to incorporate frame processors, code generators, or arbitrary other tools.

The implementation of the presented product line is based on AspectC++, an aspect-oriented extension to C++. We will demonstrate that by applying aspect-oriented software development, the number of configuration points in the code can be reduced. Both tools together form an ideal tool chain for embedded software product line development as one reduces the configuration complexity on the source code level, while the other helps to manage the variability on the abstract feature level and provides a mapping of features to aspects, classes, or other modularization units.

27 Visual SDLC: Improving Requirements Engineering for Object-Oriented Systems

Wednesday, 29 October – 12:00-12:45

Thursday, 30 October – 13:00-13:45

Marc Raygoza, Visual SDLC CTO, mraygoza@cmu.edu

In theory, requirements engineering solves many of software engineering's fundamental problems. The stakeholders know what the developers are building, why they are building it, when they are building it, and even to some degree, how they are building it. If requirements engineering resolves some of the basic communication issues between IT and the business, why aren't more companies actively practicing this discipline? In practice, requirements engineering is almost impractical without a commercial automation tool. The critics argue that the current automation tools do not convincingly demonstrate its value proposition, or fulfill the longstanding promises of the leading requirements engineering experts. This paper describes how the enterprise software development lifecycle management solution, Visual SDLC, addresses some of the outstanding issues of the present requirements engineering tools.

3 Visualizing and AspectJ-enabling Eclipse Plugins using Bytecode Instrumentation

Wednesday, 29 October – 15:00-15:45

Thursday, 30 October – 12:00-12:45

Chris Laffra, IBM Ottawa Labs, Chris_Laffra@ca.ibm.com
Martin Lippert, University of Hamburg & it-Workplace Solutions, Ltd., lippert@acm.org

In the first part of this demonstration, we will use visualization techniques to show how Eclipse utilizes plugins and its extension mechanism to form a basic runtime infrastructure that allows the design and implementation of IDEs and general applications. We will show how bytecode manipulation techniques can be used to instrument all the classes in all the Eclipse jars and what possible visualizations can be the result. We will start with a bird's eye view and gradually dive down into the gory details. The goal of this exercise is to gain a better understanding of the inner workings of Eclipse and to address bugs and performance issues of given plugins.

In the second part of the demo, we will investigate aspect-oriented programming using AspectJ. We will show how one can combine the world of Eclipse plugins and AspectJ. One such example would be a logging aspect, implemented as a plugin. Using aspect techniques on Eclipse plugin jars, would allow for the development of aspects that modularize crosscutting concerns across plugin boundaries. We will present an enhanced version of the Eclipse Core Runtime Platform that integrates load-time weaving functionality of the AspectJ language into the platform.

Attendees of this demonstration will see the running systems and how they can be used. The implementation details of both the visualization techniques used in part 1 and the enhanced Eclipse Core Runtime discussed in part 2 will be described in detail.

21 Requirements Use case Tool (RUT)

Wednesday, 29 October – 15:00-15:45

Thursday, 30 October – 13:00-13:45

James McCoy, NASA Software Assurance Technology Center (SATC), james.mccoy@gsfc.nasa.gov

The Requirements Use case Tool (RUT) provides assistance to managers, customers, and developers in assessing the quality of use cases. In addition, RUT serves as a database repository for requirements developed as use cases. To ensure consistency, the tool provides a standard use case template to be used for all use case entry into the repository. Furthermore, RUT provides integration with Rational Rose, the industry-standard tool for developing UML diagrams. The tool also provides a series of metrics useful for calculating information about the relationships among the captured use cases. RUT performs use case evaluation by searching text and identifying risk indicators such as incomplete or weak phrases. The Requirements Use case Tool is a valuable resource for collecting, evaluating, and maintaining software requirements gathered as use cases.

RUT is a web-based, multi-user application that provides project team members with the ability to create, view, and modify use cases and related information for a particular project. The "dashboard" view provided by the tool gives managers and others the ability to quickly ascertain the status of a project by viewing various use case metrics. The tool was developed using multi-platform, open source technologies (PHP and MySQL).

All features of the Requirements Use case Tool described above will be demonstrated at the conference.

53 Legacy: The Other Kind of Inheritance

Thursday, 30 October – 8:30-12:00 Morning

Kevlin Henney, Curbralan Limited, kevlin@curbralan.com

There it is. All that code. And you weren't responsible for its development. That fact alone is normally enough for most individuals to berate the code as flawed and unmanageable. But once past the reflex response, there may actually be a problem. Software that you didn't develop, and especially code that has evolved over a long period of time, is never a green field. The code itself is just the tip of an iceberg that includes history, politics, anthropology, and economics, but rarely any post-enlightenment reasoning.

How do you get your head around this stuff? How do you work with it? How do you move it forward without being so busy breaking eggs that you never have time to make the omelet? This tutorial takes a stroll through some of the issues plus some of the tips and tricks that might help out. There is no big vision and no technology sell. Indeed, one of the most significant pitfalls to be aware of is falling into the fashion trap, adopting the latest and greatest technology fad and declaring it to be the one true way forward. A succession of fashion parades is often responsible for putting some of the 'gac' into legacy.

Attendee background

This tutorial is targeted at programmers, managers, and other interested technical parties who find themselves working in or in contact with legacy code.

Format

Lecture

Presenter

Kevlin Henney is an independent consultant and trainer. The focus of his work is in programming languages, OO, CBD, UML, patterns, and software architecture. He is a regular columnist for C/C++ Users Journal (online), Application Development Advisor (UK), and JavaSpektrum (Germany), and previously wrote columns in Java Report and C++ Report. He is also a member of the advisory board for Hillside Europe, the program chair for EuroPLoP 2003, and a popular speaker at conferences in the US and Europe.

54 Running Agile Software Development Projects with RUP

Thursday, 30 October – 8:30-12:00 Morning

Michael Hirsch, Zühlke Engineering AG, Hirsch.Michael@acm.org

The Rational Unified Process (RUP) is a comprehensive process covering almost all aspects of software development projects. Due to its great level of detail, RUP has--quite wrongly--the reputation of being too heavyweight for agile development projects. In this tutorial, you will learn how to configure RUP for agile development. Topics covered include what artifacts to use and not to use, best practices for planning and monitoring projects, best practices for handling requirements, analysis and design, and how to introduce agile RUP into a project or in an organization. About 25% of the time of the tutorial is devoted to a demonstration of a real world project which has been successfully completed with an agile version of RUP.

Attendee background

This tutorial is aimed at project managers, software architects, software process specialists and software developers who are evaluating RUP for agile development or who are involved in a project where RUP is already used and want to make it more agile. Knowledge of RUP basics is helpful but not required.

Format

Lecture and demonstration

Presenter

Michael Hirsch has 20 years of experience in the software industry in various roles, including project manager, software architect and software developer. During the last 10 years, he has been with Zühlke Engineering AG, a software contractor and software consultancy in Switzerland. He has been using RUP since 1998, when he led a team that introduced RUP at Zühlke Engineering and adapted it to the company's needs. Since then Zühlke Engineering has successfully completed about 20 projects with an agile version of RUP. Today, Michael splits his time between managing software development projects, coaching and mentoring project teams, and teaching classes on software processes and object oriented analysis and design. He is a member of ACM and IEEE, and has a degree in electrical engineering from HTL Bregenz in Austria and a degree in software engineering from HTL Berne in Switzerland.

55 J2EE in Practice: Architectural Variations in the Context of Enterprise Systems

Thursday, 30 October – 8:30-12:00 Morning

Markus Völter, independent consultant, voelter@acm.org
Arne Koschel, IONA Technologies GmbH, arne.koschel@iona.com

J2EE serves as a reference architecture for enterprise applications. It has gained widespread use over the past few years. For each part of a multi-tier enterprise application, J2EE provides both an implementation technology and a blueprint of how it should be used.

Unfortunately, it is not always easy determine which J2EE technology to use in a given context, or how to use it. This tutorial explores different architectural alternatives available to developers when working with J2EE and describes when it is and is not appropriate to use each one. These guidelines are taken from experiences using J2EE for real-world, mission-critical applications.

Attendee background

Prerequisites: Attendees should have some experience with using J2EE and possess a basic understanding of what the different constituents of J2EE are used for.

Format

Lecture and discussion

Presenters

Markus Völter works as a freelance consultant for software technology and engineering. He focuses on the architecture of large, distributed systems. Markus is the author of several magazine articles and patterns, a regular Speaker at Conferences and co-author of Wiley's "Server Component Patterns - Component Infrastructures illustrated with EJB."

Over the last couple of years, Markus has architected, coached and implemented on several J2EE systems in various domains (banking, diagnostics, automotive) and on various scales (ranging from 10 developers and 400 concurrent users up to 120 developers and 50,000 users).

Dr. Arne Koschel works world-wide as Technical Product Manager and Product Specialist for IONA's Orbix Application Server Platform (ASP). Previously, he worked as independent Senior Object Technology Consultant and Enterprise Software-Architect with assignments throughout Europe and the United States. One of his major involvements (system architecture) for an Online Brokerage Application was selected as the major JavaOne 2001 J2EE customer success story. He is a regular speaker at conferences world-wide and author of many publications. He also cooperates with Universities, where he teaches courses in the areas of middleware and active databases.

56 Model-Driven Architecture

Thursday, 30 October – 8:30-12:00 Morning

Krzysztof Czarnecki, University of Waterloo, czarnecki@acm.org
Petter Graff, Inferdata Corporation, petter@inferdata.com

Today, application development remains a laborious process, with relatively little reuse or automation. Application programmers must manually map their high-level analysis models to target platform architectures, such as J2EE and .NET, and eventually, to code. Rather than focusing on the problem domain, they have to deal with the complex details of the target platforms. The analysis and design models - being just additional documentation artifacts - are often not properly maintained in the face of approaching deadlines. This makes the applications hard to evolve later. Retargeting an application to a new platform is almost as difficult as writing it from scratch. Model-Driven Architecture (MDA) is a framework for model-based development being standardized by the Object Management Group (OMG) that addresses these problems. In MDA, models are the primary source of an application. All other artifacts, such as code, tests, and documentation, are (mostly) automatically derived from models.

In this tutorial, we will take a critical look at the promises made by MDA and clearly distinguish what is possible today from the visions of tomorrow. After explaining basic MDA concepts, such as metamodeling and model transformations, we'll discuss tool requirements and review some existing MDA tools. We'll round up the tutorial with a demonstration of generating a complete J2EE and .NET application from the same high-level UML model.

Attendee background

Prerequisites: Attendees should have basic knowledge of UML.

Format

Lectures and demonstrations

Presenters

Dr. Krzysztof Czarnecki is an Assistant Professor at the University of Waterloo, Canada. Before coming to Waterloo, he spent 8 years at DaimlerChrysler Research working on the practical applications of generative programming (GP). He is co-author of the book "Generative Programming" (Addison-Wesley, 2000), which is regarded as seminal work of the area and is used as a graduate text at universities around the world. He is General Chair of the 2003 International Conference on Generative Programming and Component Engineering (GPCE). His current research focuses on realizing the synergies between GP and model-driven architectures.

Petter Graff is Vice President of InferData Corporation. He has developed object-oriented systems for more than 20 years. At InferData, his focus is in object-oriented component development, software architectures and advanced implementation techniques for enterprise applications. He created one of the first model transformation tools (MCC) and is currently responsible for the development of InferData's next generation agent-based model transformation tool. Petter is also coauthoring an upcoming book on Model Driven Development (estimated to be published fall 2003).

57 Test-Driven Development Workout: Building Java Muscle

Thursday, 30 October – 8:30-12:00 Morning

William Wake, Software Coach, William.Wake@acm.org
Steve Metsker, Reader, Thinker, Writer, and Teacher, Steve.Metsker@acm.org

Programming skills are back in style!

Test-driven development is based on a cycle of testing, coding, and refactoring. The meat of this session is a real-time workout where you explore and exercise your skills in techniques that build rippling muscles for Java developers.

Whether you want to become a bodybuilding champion or a top-drawer developer, choice of regimen is critical. For developers, writing the tests first changes the way you design, improves the quality of your code, and guarantees your code is testable.

Like a bodybuilder's high-protein diet, refactoring shows you how to take code that merely works, and turn it into lean, easy-to-understand code that you'll be proud of.

This tutorial cranks up the workout intensity with pair programming (a form of spotting), a contest, and prizes, all designed to maximize your sweat equity in building your Java muscle.

This class is for Java programmers only. Bring a laptop if you can, with a Java environment and JUnit installed and working. If you don't have a laptop, that's cool--we'll pair you with someone who does. Either way, please contact William.Wake@acm.org and tell him whether you're pumping your own iron or need to share.

Attendee background

Prerequisites: Attendees must be able to program in Java.

Format

Lecture and hands-on exercises with partners

Presenters

William Wake is an independent consultant interested in agile methods, patterns, and human-computer interaction. He is the author of "Extreme Programming Explored" and the "Refactoring Workbook."

Steve Metsker is a researcher and author who explores and writes about ways to expand the abilities of developers. Steve is the author of "Building Parsers in Java," "Design Patterns Java Workbook," and the forthcoming "Design Patterns C# Workbook."

58 Object-Oriented Modelling with UML

Thursday, 30 October – 8:30-12:00 Morning

Brian Henderson-Sellers, University of Technology, Sydney, brian@it.uts.edu.au
Magdy Serour, University of Technology, Sydney, mserour@it.uts.edu.au
Cesar Gonzalez-Perez, University of Technology, Sydney, cesargon@it.uts.edu.au

This tutorial introduces the UML (Unified Modeling Language) through the concepts of modelling. Having explained why it is useful to think about modelling before coding, the basic modelling concepts and notations of the UML are introduced, with focus on class diagrams and relationship modelling. More detailed topics are also considered: responsibilities, stereotypes, interfaces, roles, types, components and packages, dependencies, interaction diagrams, statechart diagrams and use cases.

Attendee background

Prerequisites: Knowledge of OO concepts will be beneficial; no knowledge of methodologies or modelling is required.

Format

Lecture

Presenters

Brian Henderson-Sellers is Director of the Centre for Object Technology Applications and Research (COTAR) and Professor of Information Systems at University of Technology, Sydney (UTS). He is author of eleven books on object technology and is well-known for his work in OO methodologies (MOSES, COMMA, OPEN, OOSPICE) and in OO metrics. Professor Henderson-Sellers has contributed as a member of the Review Panel for the OMG's Software Process Engineering Model (SPEM) and the UML 2.0 review team. In July 2001, Professor Henderson-Sellers was awarded a Doctor of Science (DSc) from the University of London for his research contributions in object-oriented methodologies.

Magdy Serour is a Research Fellow at the Centre for Object Technology Applications and Research at University of Technology, Sydney (UTS). He is the co-founder of SB the Software Group Pty Ltd (1982) and has had 25 years of experience in Information Technology, being significantly involved in Object technology adoption, process engineering, requirement engineering, modelling, implementation and IT consulting. At the moment, he is working in software process improvement and capability determination for object oriented/ component based software development (OOSPICE).

Cesar Gonzalez-Perez is a post-doctoral research fellow at the Faculty of Information Technology at UTS, where he works on object-oriented methodologies. He is the founder and former technical director of Neco, a company based in Spain specialising in software development support services, which include the deployment and use of OPEN/Metis at small- and mid-sized organizations. He has also worked for the University of Santiago de Compostela in Spain as a researcher in computing and archaeology, and was awarded a PhD in this topic in 2000.

OOPSLA Keynote - The Internet Paradigm Shift

Thursday, 30 October – 8:30-10:00

Tim O'Reilly, O'Reilly and Associates, tim@oreilly.com

The computer industry has gone through a sea change in the past few years. The killer applications of the web era turned out not to be PC-based software packages like the web browser, but web hosted applications like google, mapquest and amazon.com. These applications are built on top of Linux and Apache, yet they are themselves fiercely proprietary. But what would most developers do with their source code? These massive systems are valuable for their data as much as for their programs. And by opening up XML web services APIs to that data, the most innovative of these sites are creating new opportunities for hackers to re-use that data and "scratch their own itch." What's more, as constantly updated services, these applications operate on very different timelines and processes than conventional software development. One of the greatest challenges for developers in the next few years is to understand and adapt to the paradigm shift implicit in network computing, and to shed the legacy thinking of the desktop era.

Speaker

Tim O'Reilly is founder and president of O'Reilly & Associates, thought by many to be the best computer book publisher in the world. In addition to publishing pioneering books like Ed Krol's The Whole Internet User's Guide & Catalog (selected by the New York Public Library as one of the most significant books of the twentieth century), O'Reilly has also been a pioneer in the popularization of the Internet. O'Reilly's Global Network Navigator site (GNN, which was sold to America Online in September 1995) was the first Web portal and the first true commercial site on the World Wide Web.

Tim has been an activist for internet standards and for Open Source software. He has led successful public relations campaigns on behalf of key internet technologies, helping to block Microsoft's 1996 limits on TCP/IP in NT Workstation, organizing the "summit" of key free software leaders where the term "Open Source" was first widely agreed upon, and, most recently, organizing a series of protests against frivolous software patents. Tim received Infoworld's Industry Achievement Award in 1998 for his advocacy on behalf of the Open Source community.

Garbage Collection 1

Thursday, 30 October – 8:30-10:00

8:30 - 9:00
Mostly Concurrent Garbage Collection Revisited

Katherine Barabash, IBM Haifa Research Laboratory, kathy@il.ibm.com
Yoav Ossia, IBM Haifa Research Laboratory, yossia@il.ibm.com
Erez Petrank, Technion - Israel Institute of Technology, erez@cs.technion.ac.il

The mostly concurrent garbage collection was presented in the seminal paper of Boehm et al. With the deployment of Java as a portable, secure and concurrent programming language, the mostly concurrent garbage collector turned out to be an excellent solution for Java's garbage collection task. The use of this collector is reported for several modern production Java Virtual Machines, and it has been investigated further in academia.

In this paper, we present a modification of the mostly concurrent collector which improves the throughput, the memory footprint, and the cache behavior of the collector without foiling the other good qualities (such as short pauses and high scalability). We implemented our solution on the IBM production JVM and obtained a performance improvement of up to 22.8%, a reduction in the heap consumption by up to 13.6%, and no substantial change in the (short) pause times. The modified algorithm has subsequently been incorporated into the IBM production JVM.

9:00 - 9:30
An On-the-Fly Mark and Sweep Garbage Collector Based on Sliding Views

Hezi Azatchi, Technion - Israel Institute of Technology, hezia@cs.technion.ac.il
Yossi Levanoni, Technion - Israel Institute of Technology, ylevanon@microsoft.com
Harel Paz, Technion - Israel Institute of Technology, pharel@cs.technion.ac.il
Erez Petrank, Technion - Israel Institute of Technology, erez@cs.technion.ac.il

With concurrent and garbage collected languages like Java and C# becoming popular, the need for a suitable non-intrusive, efficient, and concurrent multiprocessor garbage collector has become acute. We propose a novel mark and sweep on-the-fly algorithm based on the sliding views mechanism of Levanoni and Petrank. We have implemented our collector on the Jikes Java Virtual Machine running on a Netfinity multiprocessor and compared it to the concurrent algorithm and to the stop-the-world collector supplied with Jikes JVM. The maximum pause time that we measured with our benchmarks over all runs was 2ms. In all runs, the pause times were smaller than those of the stop-the-world collector by two orders of magnitude and they were also always shorter than the pauses of the Jikes concurrent collector. Throughput measurements of the new garbage collector show that it outperforms the Jikes concurrent collector by up to 60%. As expected, the stop-the-world does better than the on-the-fly collectors with results showing about 10% difference.

On top of being an effective mark and sweep on-the-fly collector standing on its own, our collector may also be used as a backup collector (collecting cyclic data structures) for the Levanoni-Petrank reference counting collector. These two algorithms perfectly fit sharing the same allocator, a similar data structure, and a similar JVM interface.

9:30 - 10:00
Heap Compression for Memory-Constrained Java Environment

Guangyu Chen, The Pennsylvania State University, gchen@cse.psu.edu
Mahmut Kandemir, The Pennsylvania State University, kandemir@cse.psu.edu
Naraya Vijaykrishnan, The Pennsylvania State University, vijay@cse.psu.edu
Janie Irwin, The Pennsylvania State University, mji@cse.psu.edu
Bernd Mathiske, Sun Microsystems, Inc., Bernd.Mathiske@sun.com
Mario Wolczko, Sun Microsystems, Inc., mario@eng.sun.com

Java is becoming the main software platform for consumer and embedded devices such as mobile phones, PDAs, TV set-top boxes, and in-vehicle systems. Since many of these systems are memory constrained, it is extremely important to keep the memory footprint of Java applications under control.

The goal of this work is to enable the execution of Java applications using a smaller heap footprint than that possible using current embedded JVMs. We propose a set of memory management strategies to reduce heap footprint of embedded Java applications that execute under severe memory constraints. Our first contribution is a new garbage collector, referred to as the Mark-Compact-Compress (MCC) collector, that allows an application to run with a heap smaller than its footprint. An important characteristic of this collector is that it compresses objects when heap compaction is not sufficient for creating space for the current allocation request. In addition to employing compression, we also consider a heap management strategy and associated garbage collector, called MCL (Mark-Compact-Lazy Allocate), based on lazy allocation of object portions. This new collector operates like the conventional Mark-Compact (MC) collector, but takes advantage of the observation that many Java applications create large objects, of which only a small portion is actually used. In addition, we also combine MCC and MCL, and present MCCL (Mark-Compact-Compress-Lazy Allocate), which outperforms both MCC and MCL.

We have implemented these collectors using KVM, and performed extensive experiments using a set of ten embedded Java applications. We have found our new garbage collection strategies to be useful in two main aspects. First, they reduce the minimum heap size necessary to execute an application without out-of-memory exception. Second, our strategies reduce the heap occupancy. That is, at a given time, they reduce the heap memory requirement of the application being executed. We have also conducted experiments with a more aggressive object compression strategy and discussed its main advantages.

Agile Management—An Oxymoron?

Thursday, 30 October – 8:30-10:00

Lougie Anderson (Chair), Sabrix, Inc., lougie@sabrix.com
Glen Alleman, CH2M Hill, glen.alleman@rfets.gov
Kent Beck, Three Rivers Institute, kent@threeriversinstitute.com
Joe Blotner, Sabrix, Inc., joeb@sabrix.com
Ward Cunningham, Cunningham & Cunningham, ward@c2.com
Mary Poppendieck, Poppendieck, LLC, mary@poppendieck.com
Rebecca Wirfs-Brock, Wirfs-Brock Associates, rebecca@wirfs-brock.com

"Self-directed team" is one of the mantras of Agile Methodologies. Self-direction means that the team's manager is relegated to a facilitator role with little or no influence over day-to-day activities. For example, Kent Beck has written that the manager of an XP project can do four things: ask for estimates on cost and results, move people around among projects, ask for status reports, and cancel the project. Agile literature in general says that managers shouldn't be directly involved in analysis, design, coding, testing or integration. They may (but only occasionally!) facilitate the process between the customer and the developers; and it would be nice if they provided food and toys to keep the team happy. It appears, then, that the agile manger is expected to hover on the fringes of a project asking a few questions and throwing in goodies—but with ultimate power (cancellation) in her hip pocket. This scenario makes one wonder. Do managers really matter to the success of an agile project? Are they superfluous? What happens when managers step over the prescribed line—does it mean that the end of Agile Methodology as we know it and as handed down by the Agile Manifesto? The panel will explore this ticklish terrain by answering the following questions: Why Agile Methods and managers don't mix. Or do they? What can/should managers do in an agile environment? Under what conditions are managers an absolute requirement in an agile environment? (e.g. Government applications?) Do good management techniques apply to both Agile and non-Agile environments? Is management a dead-end profession in an Agile world?

Student Research Award Presentation

Thursday, 30 October – 8:30-8:35

Garbage Collection 2

Thursday, 30 October – 10:30-12:00

10:30 - 11:00
MarkCopy: Fast Copying GC with Less Space Overhead

Narendran Sachindran, University of Massachusetts Amherst, naren@cs.umass.edu
Eliot Moss, University of Massachusetts Amherst, moss@cs.umass.edu

Copying garbage collectors have several advantages over non-copying collectors, including cheap allocation and prevention of fragmentation. However, in order to provide completeness (the guarantee to reclaim each garbage object eventually), standard copying collectors require space equal to twice the size of the maximum live data for a program.

We present a mark-copy collection algorithm that extends generational copying collection and significantly reduces the heap space required to run a program. The new collector runs in space that is nearly a factor of two smaller than that required by standard copying garbage collectors, increasing the range of applications that can use copying garbage collection. We show that when the collector is given the same amount of space as a generational copying collector, it improves program execution time of Java benchmarks by 20-85% in tight heaps and by 5-10% in moderate size heaps.

We also compare the performance of the mark-copy collector with that of a mark-sweep collector. We find that, for several benchmarks, the mark-copy collector can run in heaps comparable in size to the minimum heap space required by the mark-sweep collector. We also find that for some benchmarks the mark-copy collector is significantly faster than a mark-sweep collector in tight heaps.

11:00 - 11:30
Ulterior Reference Counting: Fast Garbage Collection without a Long Wait

Steve Blackburn, Australian National University, Steve.Blackburn@anu.edu.au
Kathryn McKinley, University of Texas at Austin, mckinley@cs.utexas.edu

General purpose garbage collectors have yet to combine short pause times with fast throughput. For example, non-concurrent generational collectors can achieve high throughput and have modest average pause times, but occasionally collect the whole heap and consequently incur long pauses. On the other extreme, concurrent collectors, including reference counters, attain short pause times with significant performance penalties. This paper introduces GenRC, which combines copying generational collection and reference counting the older generation to achieve both goals in a uniprocessor setting. Key to our algorithm is a generalization of deferred reference counting which allows GenRC to safely ignore mutations to nursery objects. GenRC thus restricts copying and reference counting to the object demographics for which they perform well. The contiguous allocation of a copying collector is extremely fast, and collection time is proportional to the live objects whose survival rates are usually low in a fixed size nursery. Reference counting time is proportional to object mutations and the number of dead objects, both of which are typically low for older objects. We further restrict the time spent reference counting with collection triggers and buffering. We compare GenRC using a fixed nursery (FG-RC) with pure reference counting (RC), high performance copying and mark-sweep fixed nursery generational (FG-MS), and pure mark-sweep collectors (MS). We show that FG-RC is competitive with FG-MS on throughput, and attains much lower average and maximum pause times.

11:30 - 12:00
Connectivity-Based Garbage Collection

Martin Hirzel, University of Colorado at Boulder, hirzel@cs.colorado.edu
Amer Diwan, University of Colorado at Boulder, diwan@cs.colorado.edu
Matthew Hertz, University of Massachusetts Amherst, hertz@cs.umass.edu

We introduce a new family of connectivity-based garbage collectors (CBGC) that are based on potential object-connectivity properties. The key feature of these collectors is that the placement of objects into partitions is determined by performing one of several forms of connectivity analyses on the program. This enables partial garbage collections, as in generational collectors, but without the need for any write barrier.

The contributions of this paper are 1) a novel family of garbage collection algorithms based on object connectivity; 2) a detailed description of an instance of this family; and 3) an empirical evaluation of CBGC using simulations. Using simulations allows us to explore a broad range of possibilities for CBGC, ranging from simplistic ones that determine connectivity based on type information to oracular ones that use run-time information to determine connectivity. Our experiments with the oracular CBGC configurations give us an indication of the potential for CBGC and also identify weaknesses in the realistic configurations. We found that even the simplistic implementations beat state-of-the-art generational collectors with respect to some metrics (e.g., pause times and memory footprint).

Object-Oriented Success Stories: "Learning from our Failures"

Thursday, 30 October – 10:30-12:00

Joseph Yoder (Chair), The Refactory Inc. & The University of Illinois, joeyoder@joeyoder.com
Ralph Johnson, The Refactory Inc. & The University of Illinois, johnson@cs.uiuc.edu
Steven Wingo, Southern Company, RSWingo@southernco.com
Ron Jeffries, XProgramming.com, ronjeffries@acm.org
Linda Rising, Independent Consultant, risingl@acm.org

Beneath the buzz around methodologies, languages and technologies, the last eighteen years at OOPSLA have seen countless object-oriented success stories, large and small. This fishbowl will provide OOPSLA attendees to bear witness to these victories, and tell these tales at last. Similarly we propose a follow-up fishbowl that discusses our failures. Just as much (if not more) can be learned from failures as can from successes.

Panel: Reuse Repositories and Reuse—The Realities

Thursday, 30 October – 10:30-12:00

This session starts with a photo-essay on components, reuse, value, and beauty, and concludes with a panel on libraries, repositories, and reuse.

Without a Name: A Reusable Component Repository

Robert Biddle, Victoria University of Wellington, New Zealand, robert@mcs.vuw.ac.nz
Angela Martin, Victoria University of Wellington, New Zealand, angela@mcs.vuw.ac.nz
James Noble, Victoria University of Wellington, New Zealand, kjx@mcs.vuw.ac.nz

The Story - this essay concerns components, reuse, value, and beauty. All photographs were taken at No Name Building Recyclers, Wellington, New Zealand, with the kind permission of the owners.

Panel: Reuse Repositories and Reuse—The Realities

Dave Thomas, Bedarra Research Labs & Carleton University, dave@bedarra.com
Brian Barry, Bedarra Corp & eclipse.org, brian@bedarra.com
Ivar Jacobson, JacZone, ivar@jaczone.com
Linda Northrop, Software Engineering Institute, lmn@sei.cmu.edu
Clemens Szyperski, Microsoft Research, cszypers@microsoft.com
& others

This panel (part of the 2003 Onward! program) will discuss repositories, and reuse. While there is so much hype and noise about components and model repositories, metadata and reuse there is still very little understood about how hard it is to design for reuse and to encourage systematic reuse both in terms of culture, design, and supporting tools and technology. Like standards we have a plethora of component models to choose from and yet the long predicted component market place has yet to occur or has it already happened?

Our educational colleagues outside of the our community are blindly following our rhetoric to build eLearning repositories so Learning Objects can be snapped together just like the OO folks do it! Similarly object zealots are arguing for OO XML, OO CSS to facilitate reuse OO style.

Our panelists have participated in both the euphoric vision as well as the pragmatic realities of repositories reuse in practice. The panel has been asked to discuss their future vision for reuse and repositories and in particular what key social, business and technical enablers will facilitate significant reuse or render the matter irrelevant.

Analysis

Thursday, 30 October – 10:30-11:30

10:30 - 11:00
Declaring and Checking Non-null Types in an Object-Oriented Language

Manuel Fähndrich, Microsoft Research, maf@microsoft.com
Rustan Leino, Microsoft Research, leino@microsoft.com

Distinguishing non-null references from possibly null references at the type level can detect null-related errors in object-oriented programs at compile-time. This paper gives a proposal for retrofitting a language such as C# or Java with non-null types. It addresses the central complications that arise in constructors, where declared non-null fields may not yet have been initialized, but the partially constructed object is already accessible. The paper reports experience with an implementation for annotating and checking null-related properties in C# programs.

11:00 - 11:30
Object Equality Profiling

Darko Marinov, MIT Laboratory for Computer Science, marinov@lcs.mit.edu
Robert O'Callahan, IBM T.J. Watson Research Center, roca@us.ibm.com

We present Object Equality Profiling (OEP), a new technique for helping programmers discover optimization opportunities in programs. OEP discovers opportunities for replacing a set of equivalent object instances with a single representative object. Such a set represents an opportunity for automatically or manually applying optimizations such as hash consing, heap compression, lazy allocation, object caching, invariant hoisting, and more. To evaluate OEP, we implemented a tool to help programmers reduce the memory usage of Java programs. Our tool performs a dynamic analysis that records all the objects created during a particular program run. The tool partitions the objects into equivalence classes, and uses collected timing information to determine when elements of an equivalence class could have been safely collapsed into a single representative object without affecting the behavior of that program run. We report the results of applying this tool to benchmarks, including two widely used Web application servers. Many benchmarks exhibit significant amounts of object equivalence, and in most benchmarks our profiler identifies optimization opportunities clustered around a small number of allocation sites. We present a case study of using our profiler to find simple manual optimizations that reduce the average space used by live objects in two SpecJVM benchmarks by 47% and 38% respectively.

Eclipse and The Dark Side of the Moon

Thursday, 30 October – 13:30-15:00

Erich Gamma, IBM

Eclipse (www.eclipse.org) is an open source universal tool platform for anything and nothing in particular. This talk looks at Eclipse inside the corona.

Speaker

Erich Gamma leads the Eclipse Java Development tools project and is a member of the Eclipse project management committee. He is also a member of the Gang of Four, which is known for their book: Design Patterns - Elements of Reusable Object-Oriented Software. Erich has paired with Kent Beck to develop JUnit, a popular testing tool for Java. Before joining OTI he was working at Taligent on a never shipped C++ development environment. Erich started with object-oriented programming over 20 years ago as a the co-author of ET++ one of the first large scale C++ application frameworks.

Erich Gamma is the site lead of the IBM OTI Lab in Zurich, Switzerland. He has a doctorate in computer science from the University of Zurich. Erich was a Swiss ski instructor but never a fan of Pink Floyd.

Transactions and Persistence

Thursday, 30 October – 13:30-15:00

13:30 - 14:00
Saving the World from Bad Beans: Deployment-Time Confinement Checking

Dave Clarke, Utrecht University, dave@cs.uu.nl
Michael Richmond, IBM Almaden Research Center, mrichmon@acm.org
James Noble, Victoria University of Wellington, kjx@mcs.vuw.ac.nz

The Enterprise JavaBeans (EJB) framework requires developers to preserve architectural integrity constraints when writing EJB components. Breaking these constraints allows components to violate the transaction protocol, bypass security mechanisms, disable object persistence, and be susceptible to malicious attacks from other EJBs. We present an object confinement discipline that allows static verification of component integrity as they are deployed into an EJB server. The confinement rules are simple for developers to understand, require no annotation to the code of EJB components, and enforcement of these rules can be incorporated efficiently into existing EJB servers.

14:00 - 14:30
Language Support for Lightweight Transactions

Timothy Harris, University of Cambridge Computer Laboratory, tim.harris@cl.cam.ac.uk
Keir Fraser, University of Cambridge Computer Laboratory, keir.fraser@cl.cam.ac.uk

Concurrent programming is notoriously difficult. Current abstractions are intricate to use and make it hard to design computer systems that are reliable and scalable. We argue in favour of a practical declarative style of concurrency control in which programmers directly indicate the safety properties that they require. In essence, the programmer demarks sections of code which execute within lightweight software-based transactions which commit atomically and exactly once.

These transactions can update shared data, instantiate objects, invoke library features and so on. They can also block, waiting for arbitrary boolean conditions to become true. These features support general-purpose shared data structures such as hashtables, queues and buffers. In general, no performance penalty is incurred for memory accesses outside transactions. Furthermore, transactions which do not access the same shared memory locations can commit concurrently.

We present a detailed design of this proposal along with an implementation and evaluation. We argue that the resulting system (i) is easier for mainstream programmers to use, (ii) prevents lock-based priority-inversion and deadlock problems and (iii) offers compelling performance.

14:30 - 15:00
Lazy Modular Upgrades in Persistent Object Stores

Chandrasekhar Boyapati, MIT Laboratory for Computer Science, chandra@lcs.mit.edu
Barbara Liskov, MIT Laboratory for Computer Science, liskov@lcs.mit.edu
Liuba Shrira, MIT Laboratory for Computer Science, liuba@lcs.mit.edu
Chuang-Hue Moh, MIT Laboratory for Computer Science, chmoh@lcs.mit.edu
Steve Richman, MIT Laboratory for Computer Science, richman@lcs.mit.edu

Persistent object stores require a way to automatically upgrade persistent objects. Automatic upgrades are a challenge for such systems. Upgrades must be performed in a way that is efficient both in space and time, and that does not stop application access to the store. In addition, however, the approach must be modular: it must allow programmers to reason locally about the correctness of their upgrades similar to the way they would reason about regular code. This paper provides solutions to both problems.

The paper first defines upgrade modularity conditions that any upgrade system should satisfy to support local reasoning about upgrades. The paper then describes a new approach for executing upgrades efficiently while satisfying the upgrade modularity conditions. The approach exploits object encapsulation properties in a novel way. The paper also describes a prototype implementation and shows that our upgrade system imposes only a small overhead on application performance.

What's so eXtreme About Doing Things Right?

Thursday, 30 October – 13:30-15:00

Steve Berczuk (Chair), Independent Consultant, steve@berzuk.com
Neil Harrison, Avaya Labs, nbharrison@avaya.com
Kevlin Henney, Curbralan, kevlin@curbralan.com
Joshua Kerievsky,, Industrial Logic, joshua@industriallogic.com
Linda Rising, Independent Consultant, risingl@acm.org
Ken Schwaber, ADM, ken.schwaber@verizon.net
Bobby Woolf, Independent Consultant, woolf@acm.org

Agile Methods are advocated as a way of producing better software. Advocates of agile methods suggest that practices such as keeping in close communication with your customers, frequent integration, and frequent assessment of project status will enable us to produce software that has value for the customer—quality software. It's hard to argue with that. But why is this any different than simply "good" software development practice? Why does saying "Scrum" "Agile" or "XP" grab peoples' attention? Why does it take a name for useful practices to be accepted? This panel will help us understand the role of hype in getting useful practices accepted or rejected. We will explore why it is that these good ideas have not been more widely used. Some of the questions that the panel and the audience will explore are: Why do we ignore proven practices until we see them packaged as a "method?" Can we do something different in the workplace or in school to teach these practices? Or is it the case that these practices are not universally good? This panel talks about agility in a different context than what is typical: we won't just discuss what agile practices are. We will explore why they are not more widely adopted, especially when not packaged as part of a "named" method like XP, and we will discuss why projects suffer even when the methods that can help them are well known. This panel will provide an entertaining and thought provoking forum for discussing an issue that is ever present in the world of technology: the role of hype. We concentrate on agile practices, moving beyond simply enumerating them, to discussing why they are not more widely adopted.

Application Servers: One Size Fits All ... Not?

Thursday, 30 October – 13:30-15:00

Gail E. Harris (Chair), Instantiated Software Inc., gail.harris@instantiated.ca
Jeromy Carrière, Microsoft Corporation, jeromyc@microsoft.com
John Crupi, Sun Microsystems, john.crupi@sun.com
David Leibs, Oracle Corporation, david.leibs@oracle.com
Fred Nagy, Solutions In Context, fred.nagy@solutionsincontext.ca
Martin Nally, IBM Corporation, nally@us.ibm.com

In the beginning there was machine language, followed by assembly language, formula translation, and eventually procedural programming, to organize the chaos. And then objects were introduced, to hide information. Soon Client/Server and multi-tier applications were conceived to separate data concerns from business logic concerns and user interface concerns. Later, these objects were distributed geographically to optimize hardware resources. And now, we have application servers, to simplify scaling up a system for large volumes, improved response times, impeccable reliability, and high availability. Application servers house the business logic, operating on data from a different server, and responding to requests from any source. But these Application Servers come in all shapes, flavors, and sizes. What is a developer to do? This panel will explore issues comparing application server technologies and questions about their appropriate use in different contexts.

Ice Cream Social (OOPSLA 2004 Kick-off)

Thursday, 30 October – 15:00-17:00

The Ice Cream Social serves as both the farewell event of OOPSLA 2003 and the kick-off event of OOPSLA 2004. It is also the setting for the DesignFest Wrap-up. Throughout the week, teams of software designers have taken part in the DesignFest sessions. In addition, a small number of student teams (known as CodeFest) have implemented some of these designs. The Ice Cream Social is a chance for OOPSLA participants, whether or not they participated in DesignFest, to see the designs produced during the earlier sessions, as well as to view demos of the final software. Designers will be available to discuss their experiences (both good and bad) of working in their design team, and the CodeFest teams will describe the problems they encountered while implementing the designs.