Monday Full Day

2 Aspect-Oriented Programming with AspectJ
Gregor Kiczales, Xerox Palo Alto Research Center
Cristina Lopes, Xerox Palo Alto Research Center
Colorado Convention
Center - A102
 
Objects have been a great success. Object-oriented programs have a natural modularity that makes them easier to develop and maintain than purely procedural programs.

But object-orientation doesn't solve all modularity problems. Many common design concerns are difficult to localize in an object-oriented program. Instead, their nature makes them cross-cut the system's class structure. These cross-cutting concerns include things like multi-object interaction protocols, object roles, certain design patterns, performance optimizations, synchronization constraints, distribution issues and many others. Aspect-oriented programming is a new technique proposed to address the problem of cross-cutting concerns. Aspects are program constructs that make it possible to capture cross-cutting concerns in a clear and modular way - aspects are intended to modularize cross-cutting concerns in the same way that objects modularize units of functionality and state.

This tutorial shows how to design and program with the AspectJ extension to Java. Particular attention will be given to how AspectJ can support the implementation of common design patterns and Java programming idioms.

Attendee Background: Attendees should be able to read and understand Java code.

Gregor Kiczales is a principal scientist at the Xerox Palo Alto Research Center. His research is focused on a range of topics in software design, including object-oriented programming, metaobject protocols, open implementation and aspect-oriented programming. He is a co-author of "The Art of the Metaobject Protocol". He is a member of the AspectJ design team.

Cristina Videira Lopes is a research scientist at the Xerox Palo Alto Research Center. Her research interests are in software engineering and programming languages, with a focus on aspect-oriented programming support for distributed systems. She is a member of the ApsectJ design team.


3 Software Architecture:
It's What's Missing From OO Methodologies
Norm Kerth, Elite Systems
Gerard Meszaros, Clearstream Consulting
Colorado Convention
Center - A201
 
Explore the role and common challenges of software architecture found in modern object-oriented, distributed, and multi-tier systems. We look at the recent startling discoveries made by members of the patterns community investigating a variety of large real-life proprietary software systems and discuss the path of the new professional discipline: the software architect. An attendee will be able to address a number of critical design issues not commonly explored via UML or other popular modeling approaches that are never the less critical to the success of modern day, object-oriented distributed, n-tiered systems. These issues include: system availability, security, scalability, survivability, long-lived flexibility, large scale granularity, data quality and maintenance, system metrics and reports, packaging and delivery mechanisms, as well as other key design decisions.

The teaching style is case base driven, and hands-on in nature, with lecture intermixed to extend a participatory learning experience.

Attendee Background: The attendee is assumed to have experience building at least one real-life software system of substantial size.

Norm Kerth is a consultant working with mastering object-oriented technologies. He includes the wider issues of specification and design activities, quality assurance, continuous process improvement, project management and building effective teams. Prior to starting his company, Elite Systems, he was a professor at the University of Portland. He has a decade of engineering experience with Tektronix and is a master teacher, with over 25 years of experience in front of students and computer professionals.

Gerard Meszaros is a consultant working with clients making the transition to object and component-based technology. Prior to becoming a consultant, he was a software architect and project manager overseeing the development of software for switching telephone calls.


4 Object-Oriented Reengineering
Serge Demeyer, Stephane Ducassse
Oscar Nierstrasz, University of Berne - Software Composition Group
Colorado Convention
Center - A108
 
Surprising as it may seem, many of the early adopters of the object-oriented paradigm already face a number of problems typically encountered in large-scale legacy systems. Software engineers are now confronted with millions of lines of industrial source code, developed using object-oriented design methods and languages of the late 80s. These systems exhibit a range of problems, effectively preventing them from satisfying the evolving requirements imposed by their customers. This tutorial will share our knowledge concerning the reengineering of object-oriented legacy systems. We will draw upon our experiences with the FAMOOS project to demonstrate techniques and tools we have applied on real industrial OO systems to detect and repair problems. In particular, we will discuss issues like metrics, design recovery, refactoring, tool integration.

The tutorial is targeted at programmers involved in maintenance and reengineering of large OO systems. Researchers interested in topics like metrics, design recovery, refactoring are welcome as well. Participants will learn how metrics, UML, and refactoring can help in reengineering OO systems and see tools that may support them in this task.

Attendee Background: Participants should have practical programming experience in at least one OO language (Smalltalk, C++, Java, Eiffel, etc.). Familiarity with UML is useful, though not required.

Serge Demeyer and Stephane Ducasse are post doctoral researchers in the Software Composition Group in Berne, serving as technical leaders of the FAMOOS esprit project; a project whose goal it is to come up with a set of reengineering techniques and tools to support the development of object-oriented frameworks.

Oscar Nierstrasz is a Professor of Computer Science at the University of Berne, where he leads the Software Composition Group. He has been active in the object-oriented research community for many years, serving on program committees of among others, ECOOP, OOPSLA and ESEC. He has given several tutorials and invited talks on object-oriented technology at various international conferences and workshops.


5 Writing Effective Use Cases
Bruce Anderson, IBM Object Technology Practice
Alistair Cockburn, Humans and Technology
Colorado Convention
Center - A205
 
The tutorial aims to get you clear on the role of use cases in the project and requirements process, to know where they fit, how they look, how they don't look, how UML and various tools affect them, and how to adjust your writing style to get them to communicate effectively. In this full-day tutorial, we shall outline and then write a few use cases, correct some (genuine!) badly written use cases, and trade experiences on the subject. We will also see what not to put in use cases. The speakers will give both theory and practicum, for example answering the questions asked at OOPSLA 1998's panel session on use cases. Experienced use case writers will benefit from the exchanges with other experienced writers. Newcomers to use cases will benefit from the exchanges between experienced writers. Everyone should benefit from the peer discussion of the writing assignments and the combined experience of the presenters. This will be a highly interactive session.

Attendee Background: This tutorial is for the person faced with writing or editing a requirements document. No object-oriented knowledge is needed.

Bruce Anderson, Senior Consultant in the IBM Object Technology Practice, has been using use cases in his consulting work for several years. He has helped clients with requirements and modeling in the banking, insurance, petroleum and telecom industries. Bruce and Alistair both served on the OOPSLA '98 use case panel.

Alistair Cockburn founded Humans and Technology, designed the OO methodology for the IBM Consulting Group in 1992, and was special advisor to the Central Bank of Norway. He is preparing the book "Writing Effective Use Cases", and published the book "Surviving OO Projects". Use cases and other materials that support Alistair's workshops can be found at http://members.aol.com/acockburn .


6 Concepts of Object-Oriented Programming
Raimund K. Ege, Florida International University
Colorado Convention
Center - A106
 
This tutorial defines and teaches the basic object-oriented concepts, illustrates their advantages, and introduces the components and features of object-oriented programming languages and development environments. The tutorial enables an attendee to make an informed decision about what language/environment will best serve his/her software development needs.

The tutorial has 2 major parts: Part 1 discusses in detail all object-oriented concepts. The focus will be on a precise non-confusing definition of the core concepts and terminology. Part 1 uses Java as its sample language to illustrate the material. Part 2 then compares major object-oriented programming languages: C++, Smalltalk, Java, and others. The comparison is done with a double focus:

  1. how does the language support and enforce the concepts, and
  2. how does the language help software development.

A small case study will be used to illustrate the solution in each language.

Attendee Background: Attendees are software professionals who are interested in learning the fundamental concepts and advantages of object-oriented programming and how to apply them in a modern software development environment. No previous knowledge of object-oriented concepts is assumed. The attendees should have a fundamental background in computer science and/or computer programming.

Raimund K. Ege is a consultant and lecturer, and a computer science professor at FIU in Miami, FL. He is author of "Programming in an Object-Oriented Environment" (Academic Press, 1992) and "Object-Oriented Programming with C++" (Academic Press, 1994). He is an active researcher in the area of object-oriented concepts, and their application to programming, user interfaces, databases, simulation and software engineering.


7 Software Architecture and the UML
Dr. Wojtek Kozaczynski, Rational Software
Dr. Philippe Kruchten, Rational Software
Colorado Convention
Center - A104
 
The presence of a solid architectural vision is a key discriminator in the success or failure of a software project. This tutorial examines what software architecture is and what it is not. It discusses major architecture views and models and their representation using the UML. It also provides an overview of some of the software architectural styles and includes a discussion on how architectures drive the development process. The tutorial concludes with a presentation of examples of architectural patterns using the UML.

The objective of this tutorial is to give the attendees the guidelines on how to use the UML to represent the architecture of a software-intensive system and how to express some architectural patterns in UML.

Attendee Background: There are no specific perquisites for this tutorial.

Dr. Wojtek Kozaczynski is the Director of Architecture Practice at Rational Software. Dr. Kozaczynski has some 20 years of industrial and academic experience. Prior to joining Rational he was the chief architect at an ERP company and prior to that he directed a software engineering research and development laboratory at Andersen Consulting.

Dr. Philippe Kruchten is the Director of Process Development at Rational Software Corp. He has some 25 years of experience in development of large-scale software-intensive systems in the areas of telecommunication, defense, aerospace, transportation, and software development tools. Dr. Kruchten led software architecture development for the Canadian Automated Air Traffic Control System. He has been involved in the development of the programming language Ada and worked for telecommunication manufacturer Alcatel.


9 Condensed Java: A 1-Day Tour
Carol J. Meier, .profile Consulting Inc.
George Watson, Epilog Corp.
Colorado Convention
Center - A207
 
This course will cut through the hype surrounding Java to answer your questions about Java and its popularity, uses, history, features, portability, shortcomings, performance, security, standardization, licensing, and anything else you want to know about how it fits into the computing world. We'll take you on a technical tour of Java's language features and libraries. We'll explain, with program examples, the language basics, O-O support, packages, interfaces, exceptions, dynamic class loading, threads and synchronization, reflection, garbage collection, and native methods. Next, we'll tour the rich set of libraries supporting I/O, data structures, networking, GUIs, applets, database connectivity, remote method invocation, internationalization, media and more. As time permits we'll address security, implementation technologies, Java Beans, Media APIs, JINI, JavaOS, JavaMail, JMAPI, JNDI, JMS, JFC, and more. Our goal is to give you all the information you need to evaluate Java's suitability for your projects.

Attendee Background: Intermediate level experience with any common programming language. You don't need to be an object-oriented programmer, but the more technical your background, the more you will get from the course. Language features will be presented at several levels, to accommodate a diverse audience. Seat belts recommended.

Carol Meier, currently owns, operates, develops courseware, teaches and consults for .profile Consulting Inc. She has been developing software for almost 20 years, first at Bell Labs, than as an independent consultant, and for seven years as co-founder of XVT Software Inc. Since 1984 Carol has been teaching C, C++, UNIX and more recently Java for the University of Colorado.

George Watson is currently developing embedded systems and device drivers for Epilog Corporation. He has been developing software for 20 years, working with object technologies for the past 10 years, and using Java since 1995. George has extensive experience in OOA&D, molecular modeling, computer-aided dispatch, health care and other areas. As an instructor, George has taught algorithms and operating systems theory, and has been teaching Java for 3 years.


10 Foundations of Patterns and Pattern Writing (2 days)
James Coplien, Bell Laboratories
Richard P. Gabriel, Sun Microsystems;
Christa Schwanninger, Siemens AG
Honna Segel, Nortel
Colorado Convention
Center - A101/103/105/107
 
Software patterns are a literary form, designed to communicate expert knowledge about system construction. This course teaches pattern-writing skills in the context of the broader goals and values of the pattern community. The course mixes lecture with exercises and small workshops. Each participant will write a pattern and participate as an author in a writer's workshop. This innovative tutorial is held over two days so that participants are immersed in the activity and culture of pattern writing.


Denver Sky Park
The tutorial helps the attendee appreciate patterns as a literary form in the broader context of a pattern culture that has emerged over the past 6 years. Specifically, the attendees will learn key aspects of the pattern value system:

  • How to recognize traits of well-written patterns
  • How to improve their pattern-writing skills
  • What to look for when reading and applying patterns
    (though there will not be strong focus on pattern application)
  • Several popular pattern forms
  • Pattern vocabulary
  • The Writer's Workshop review format

Attendee Background: A basic software design background is helpful, but not necessary, to fully benefit from the workshop. We encourage attendance by individuals with diverse backgrounds, including (especially!) areas outside computer science.

Jim Coplien is a Distinguished Member of Technical Staff at Bell Laboratories in Naperville, Illinois. He is the author of the "Software Patterns" management briefing and co-editor of several pattern books.

Richard Gabriel is author of "Patterns of Software," and holds an MFA in Poetry from Warren Wilson College. He is well-known in the pattern community for introducing the writers' workshop format for pattern review.

Christa Schwanninger is a software engineer at Siemens Corporate Technology in Munich where she works on distributed applications. She has done pioneering work in patterns for compiler construction and language design.

Honna Segel works for Nortel Networks in the development of advanced services. She has both used and developed various apsects of object-oriented technology and has led workshops at OOPSLA in domain analysis and framework development.


Monday Morning/Half Day

11 Responsibility-Driven Design:
Practical Techniques for Modeling Object Behavior
Rebecca Wirfs-Brock and Alan McKean, Wirfs-Brock Associates
Colorado Convention
Center - A209
 
Responsibility-driven design is distinguished from other methods is its emphasis on describing objects and their collaborative behavior, and its use of informal tools that aid in thinking about design. This tutorial presents an overview of the responsibility-driven design process and shows several techniques for improving, understanding, and expressing object design models. Student notes consist of an extensive case study illustrating techniques and results. These techniques include CRC cards, object role stereotypes, control style analysis, behavior refactoring worksheets, and hot spot cards for identifying and planning design variations. These techniques can be successfully applied to augment your current design toolkit and complement UML design models. This tutorial gives attendees an opportunity to briefly practice these design techniques.

Participants will learn a number of informal design modeling techniques that can be used to reason about their objects, their patterns of collaboration and choices for using inheritance and composition. Students will learn how behavioral techniques and models can complement and enhance more formal design models.

Attendee Background: Students should be familiar with object concepts and have some exposure to object design modeling. Students should be interested in learning how informal modeling techniques can fit into an object design process.

Rebecca Wirfs-Brock is president of Wirfs-Brock Associates, a firm specializing in the transfer of object analysis and design expertise to organizations and individuals through training, mentoring, and consulting. She spent 17 years as a Software Engineer at Tektronix, leading Tek's development of Color Smalltalk. She has lectured and presented tutorials on object analysis, design and management topics, and has been an innovator in object technology since 1984. Rebecca is co-inventor of the Responsibility-Driven Design method and co-author of the classic, "Designing Object-Oriented Software."

Alan McKean, Vice President of Training at Wirfs-Brock Associates, has devoted his career applying principles of design and adult learning to find better ways to communicate technical information. A student of Buckminster Fuller's and an MSCS graduate of the University of Oregon, he specializes in system architecture and design. An experienced speaker and software developer, he has developed core curricula in object-oriented development and distributed object systems.


12 Efficient Implementation of
Object-Oriented Programming Languages
Craig Chambers, University of Washington
Colorado Convention
Center - A202
 
How are object-oriented languages implemented? What features of object-oriented languages are expensive? What optimizations have been developed to make object-oriented languages more efficient? This tutorial addresses these questions. After identifying the main features of object-oriented languages that are challenging to implement efficiently, three classes of implementation techniques are presented. First, run-time system techniques such as virtual function dispatch tables (including complications due to multiple inheritance and virtual inheritance) and inline caches are described. Second, static intra- and interprocedural analyses are discussed that seek to identify at compile-time the possible classes of message receivers, in order to reduce or eliminate the overhead of dynamic binding. Third, ways in which dynamic execution profiles can be exploited to complement static analysis techniques are described. To assess the relative importance of the techniques, empirical measurements of the effectiveness of many of these techniques, as implemented in the Vortex optimizing compiler, are presented for large benchmarks written in Java, C++, and Cecil.

Attendee Background: Attendees should be familiar with the features of object-oriented languages and also with traditional compiler techniques such as procedure inlining and data flow analysis.

Craig Chambers has been researching object-oriented language design and implementation since 1987, with publications in OOPSLA, ECOOP, ISOTAS, PLDI, POPL, PEPM, and TOPLAS on the topic. For his Ph.D. thesis at Stanford, he developed the first efficient implementation of the Self language, using optimizing dynamic compilation. Chambers is currently an Associate Professor of Computer Science & Engineering at the University of Washington, where he designed the Cecil language, heads the Vortex whole-program optimizing compiler project, and co-leads the DyC staged dynamic compilation project.


14 Developing Java Applications for Small Spaces
Ken Auer, RoleModel Software, Inc.
Colorado Convention
Center - A111
 
Java has always promised the ability to run on any size platform, from mainframes to wristwatches. Now the promise of supporting "small" platforms may finally be imminent. This tutorial will teach the current state of the art with respect to developing Java applications for the PersonalJava and EmbeddedJava application environments (JAE's). Developers accustomed to creating applications for the web, desktop, or workstation environments will receive instruction on how to approach developing their own small-environment Java applications from pioneers who have actually attempted (successfully and unsuccessfully) to build such applications. Although many developers are familiar with various versions of the JDK, significantly fewer have really looked at PersonalJava and EmbeddedJava in any depth. These developers would typically spend valuable time researching the technologies and heading down fruitless paths. However, attendees of this tutorial will be prepared to successfully develop for these environments.

Attendee Background: Participants should be Java developers or technical leaders of Java projects.

Ken Auer is the founder of RoleModel Software, Inc., the company that transforms innovative ideas into world-class products and potent software development capabilities. In the summer of 1997, his company began the first in a series of projects putting object-oriented technology on handheld and other embedded platforms. He is the co-author of the forthcoming book "Extreme Programming Applied: Playing to Win". Prior to founding RoleModel Software, Mr. Auer served as Director of Applied Technology at Knowledge Systems Corporation.


15 Introduction to Distributed Computing using Objects
Eric Jul, University of Copenhagen
Colorado Convention
Center - C201
 
As computer networks become faster and cheaper, it becomes more and more desirable to use distributed computing. Object-oriented programming seems to mesh exceptionally well with the paradigms of distributed programming because of object encapsulation and the clean interface presented by an object.

The aim of this tutorial is to teach the basic ideas and paradigms of distributed object computing rather than a specific technology. Issues covered include:

  • communication
  • remote referencing
  • separation of concerns: interface and implementation
  • globally shared objects
  • synchronization
  • reliability/failure handling
  • replicated objects
  • persistent objects
  • major implementation issues
  • distributed object systems and languages
  • JAVA distribution issues
  • CORBA distribution issues
  • WWW possibilities

This tutorial is for object technology users that would like to obtain a basis understanding of the concepts behind distributed object, and professionals that are about to embark on using distributed objects, e.g. JAVA, CORBA, or WWW.

Attendee Background: The tutorial assumes basic knowledge of object-oriented concepts. No previous knowledge of distributed computing is required, however, experience with one or more OO programming languages would be helpful.

Eric Jul is an Associate Professor at DIKU, the Dept. of Computer Science, University of Copenhagen where he heads the DistLab group which is doing research in distributed, heterogeneous computing. He is a co-designer and principal implementor of the Emerald distributed object-oriented programming language developed at the University of Washington. Dr. Jul was Program Chair for ECOOP`98.


16 Introduction to the OPEN method with UML
B. Henderson-Sellers, University of Technology, Sydney
B. Unhelkar, CASE digital
Colorado Convention
Center - C103
 
OPEN is the premier third-generation, process-focussed, public domain OO methodology. It is documented in a number of professional-level texts. In this tutorial, OPEN is introduced through a number of case studies using UML Version 1.3 as the notation, which will itself be explained in the tutorial without assuming previous experience in UML.

The overall aims of the tutorial are to describe the third generation OPEN methodology at an introductory level by means of case studies which illustrate the tailorable flexibility of the OPEN process. Attendees will also gain hands-on experience in methodology tailoring and UML modeling in a small case study.

Attendee Background: Knowledge of OO concepts will be beneficial; no knowledge of methodologies or modeling is required. This is an intermediate level tutorial which will be of most benefit to systems developers, analysts, designers, students and faculty with basic knowledge of OO concepts who require an easy introduction to modern OOAD methodological thinking.

Brain Henderson-Sellers is Director of the Centre for Object Technology Applications and Research (COTAR) and Professor of Information Systems at the University of Technology, Sydney (UTS). He is author of eight books on object technology and is well-known for his work in OO methodologies and meta-modeling (MOSES, COMMA and OPEN) and in OO metrics.

Bhuvan Unhelkar is Chief Operating Officer with CASE digital and has over 16 years of professional IS experience. He holds a Doctorate in the area of OO design and is winner of the Computerworld Object Developers Awards for "Best use of an object-oriented approach across the organization".


17 Advanced ENVY System Programming
Alan Knight, The Object People
Joseph Pelrine, Daedalos Consulting
Colorado Convention
Center - A113
 
One of the strong points of a Smalltalk environment is the extensibility of the IDE. ENVY is the premier version control and configuration management tool for Smalltalk, and while its tool set is extensive, many useful extensions are possible. This code-intense course provides an in-depth look at the ENVY system API and internals, and provides numerous examples of tools and scripts which can immediately be used to increase the productivity of an ENVY site. Students will gain an understanding of ENVY mechanisms and API, useful in day-to-day use, but primarily focused on tool-building. Topics covered include an overview of the ENVY API, a packaging assistant which can intercept and interpret packaging-related errors, creating "library specifications" to manipulate software components, scripting facilities, integrating refactoring facilities into ENVY, and a standard mechanism for third-party applications to extend the system menus. This tutorial covers both VisualAge and VisualWorks.

Attendee Background: Attendees should have a good understanding of Smalltalk, and be familiar with ENVY.

Alan Knight has been involved with objects and Smalltalk for over a decade. He has been a regular columnist for The Smalltalk Report, and has spoken extensively on Smalltalk and ENVY. He currently works at The Object People as architect for the TOPLink family of persistence products., and is co-author, together with Joseph Pelrine and Jan Steinman of the forthcoming book "Mastering ENVY/Developer" from SIGS Books/Cambridge University Press.

Joseph Pelrine is an expert Smalltalk programmer with over ten years extensive OT experience. A former columnist for The Smalltalk Report, and noted international speaker, he is currently a senior consultant with Daedalos Consulting in Switzerland. He is the author of various ENVY-related tools, including a Refactoring Browser integration.


19 Testing Object-Oriented Software Systems
John D. McGregor, Software Architects & Clemson University
Melissa L. Major, Software Architects
Colorado Convention
Center - C105
 
The focus of this tutorial is a set of techniques and a process for testing a complete software application built as part of a project that uses object-oriented software development techniques. The tutorial is divided into three parts:
  1. specific techniques supported by small examples to illustrate specific testing algorithms,
  2. techniques for testing system level models using enhanced inspection and review procedures, and
  3. a process for system testing presented within the context of a complete testing process for object-oriented systems.

The techniques presented in the tutorial are intended to provide a scalable process that can be tailored to the size of a project and the degree of coverage required by the type of application. The three major benefits from this tutorial include specific testing techniques, a comprehensive testing strategy that is integrated into the development process, and a specific infrastructure for building a reusable testing environment.

Attendee Background: Participants should have participated in the specification and testing of complete applications that were constructed using object-oriented development techniques. System testers and software developers interested in the complete product realization process will benefit from this tutorial. Test managers and quality control personnel who are technically oriented will also benefit.

Dr. John D. McGregor is an associate professor of computer science at Clemson University and a senior partner in Software Architects, a software design consulting firm, specializing in object-oriented design techniques. Dr. McGregor has developed testing techniques for object-oriented software and developed custom testing processes for a variety of companies. Dr. McGregor is co-author of "Object-oriented Software Development: Engineering Software for Reuse". Dr. McGregor is also co-author of "A Practical Guide to Testing Object-Oriented Software" to be published by Addison-Wesley. He has published numerous articles on testing including a monthly column on testing objects in the Journal of Object-Oriented Programming.

Ms. Melissa L. Major is a Consultant and Site Manager for Software Architects. She has worked for Computer Aid, Broadway & Seymour, BNR/NORTEL, and as a contractor within Microsoft. She has a masters in Computer Science and has been a Ph.D. student at Clemson University. Ms. Major has taught computer science courses for Clemson University and Limestone College. She has managed testing efforts and constructed software development processes including testing processes for companies such as Lucent Technologies.


20 Producing Usable GUIs with the Java Foundation Classes (JFC)
Fintan Culwin, South Bank University
Colorado Convention
Center - C107
 
The JFC supplies a number of different user interface components. This tutorial attempts to introduce a representative selection of the most common and useful of them, showing how they can be combined to produce effective user interfaces. To accomplish this efficiently it is necessary to start with a representation of the required behavior of the interface and derive the detailed design from it.

The objectives of this tutorial are:

  • To introduce the Java event dispatch/ listener model.
  • To show how State Transition Diagrams can describe the required behavior of an interface.
  • To show how STDs can inform the detailed design of the classes required for a three-layer implementation.
  • To illustrate the use of STD, Class, Instance, Interface Layout and Object Interaction diagram notations.
  • To illustrate the realization of detailed three-layer designs in Java.
  • To introduce and illustrate layout management policies.
  • To provide an introductory overview of the widgets supplied by the JFC.
  • To introduce the resource management techniques, to improve to improve the presentation of an interface.

Attendee Background: An intermediate level tutorial for attendees who have an initial familiarity with OO concepts and wish to develop further understanding in the context of GUI construction.

Fintan Culwin is a Reader in Software Engineering Education at South Bank University, London; specializing in Software Engineering and HCI, He has published five books, including two on Java, and is currently completing a sixth on the JFC. He has published extensively on Internet issues and has presented sessions on the Web and Java at a series of international conferences.


21 Putting Metaclasses to Work
Ira R. Forman, IBM
Colorado Convention
Center - C109
 
The purpose of this tutorial is to demystify metaclasses and demonstrate a theory of how they can be used to increase productivity and reusability in object-oriented programming. The tutorial starts from first principles to construct an object model that is class-based (every object has a class) with first-class classes (every class is an object).

After the object model is established, we introduce a metaobject protocol for manipulating the model. The metaobject protocol supports a new dimension for inheritance: inheritance of metaclass constraints. Based on this, we describe facilities required for composable metaclasses, that is, how a metaclass imparts to its instances the composite properties of its ancestor metaclasses. We conclude by demonstrating a number of useful metaclass that do compose with each other.

The attendee will attain an understanding of why metaclasses are natural extension of Object Oriented Programming, how an object model with metaclasses can be easily programmed, how to construct a metaobject protocol, how metaclasses are composed, and what are some useful composable metaclasses.

Attendee Background: The tutorial is intended for programmers who have a good understanding of Object-Oriented Programming. Although the tutorial defines "class", "method", "inheritance", etc., the tutorial is definitely an advanced course and one has to know the basics.

Dr. Ira R. Forman works for IBM in Austin. As a member of IBM's Object Technology Products Group, which produced the SOMobjects Toolkit, he worked on the SOM Metaclass Framework. He started working in the area of object-oriented programming in 1984, when he worked at ITT Programming Technology Center. Forman received his Ph.D. in Computer Science from the University of Maryland. He is the coauthor of two books: "Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming" and "Putting Metaclasses to Work: A New Dimension in Object-Oriented Programming."


22 Multiparadigm Design & Efficiency in C++
Stanley Lippman, Objectwrite, Inc.
Colorado Convention
Center - C112
 
In this talk, we present a series of C++ programming design idioms for writing efficient C++ programs, briefly review the underlying C++ object model, and turn to design alternatives when the idioms themselves become overwhelmed with, say, large-scale object creation and copy. We look at object-based and object-oriented design, use of the STL container classes and generic algorithms, and the design alternatives of inheritance versus parameterization through use of the C++ template facility. This is a particularly effective area of program efficiency because (a) the idioms generally make for more readable programs, and (b) once the idioms and implementation (or object) model is internalized, these gains in efficiency come mostly for free.

Attendee Background: Programmers either using or about to use C++ for the delivery of production code in which efficiency is a concern.

Stanley Lippman is a consultant in both the entertainment and aerospace industries in the efficient use of C++ for large-scale software systems. Prior to this, he was principal software engineer at Walt Disney Feature Animation, then software technical director for a segment of Fantasia 2000. While at AT&T Bell Laboratories, he led the cfront Release 3.0 and Release 2.1 compiler development team. Following that, Stan was a member of the Bell Laboratories Foundation Project, responsible for the object model component of a research C++ programming environment.


23 UML Distilled: Techniques for Object-Oriented Analysis and Design
Martin Fowler, Independent Consultant
Colorado Convention
Center - C104
 
The last twenty years have seen a lot of work in modeling methods: techniques to help people understand how software works. In the last few years the Unified Modeling Language (UML) has become the standard notation for describing object-oriented designs. This tutorial is a grand tour of the UML: giving you an outline of the UML and additional useful techniques. We'll cover such techniques as Use Cases, Class Diagrams, and Interaction Diagrams, together with non UML techniques like CRC Cards and Design by Contract. We'll also see how these techniques fit into a simple incremental development process.

Objectives: This tutorial is a Grand Tour of the UML. There isn't time in half a day to go into great detail on any of the techniques within it, but there is a chance to get a feel for what each technique looks like, when to use it, and where to find out more. You'll also get tips on using them from someone with plenty of object-oriented scars. We'll also look at important non-UML techniques that should be used in conjunction with the UML.

Attendee Background: Attendees should understand basic OO concepts.

Martin Fowler has spent over a decade to applying object technology to business information systems. He is an independent consultant who trains and mentors his clients in OO analysis, design and programming, patterns, and refactoring. He has used more analysis and design notations than he can remember, and is glad the UML cuts down on that. His recent clients have included: Chrysler, IBM, Sterling Software, and Andersen Consulting. He is a popular speaker on the conference circuit and the author of the Addison-Wesley books "Analysis Patterns" and "UML Distilled", which he likes to think is the worlds smallest methodology book.


Monday Afternoon/Half Day

24 Patterns for Distributed and Agent-based Object Systems
Craig Larman, ObjectSpace
Colorado Convention
Center - C201
 
This tutorial presents a collection of practical patterns to develop distributed software architectures; these patterns range from the mundane to the sublime. However, they are unified by one common theme: it is not the functional requirements of the system that dominate distributed software design; it is instead the modal requirements, e.g., performance, reliability, scalability, security and cost-effectiveness. In addition, some emerging patterns to improve configuration, extensibility, and reliability by using mobile agents are explored. On this tour, we introduce:
  • emerging design idioms for systems using Enterprise JavaBeans (EJB)
  • client-side designs for collaboration with servers
  • brokered and peer server architectures
  • server configuration idioms
  • performance patterns, such as lazy collections

The tutorial provides an information-rich and panoramic glimpse inside the (slightly paranoid) world of distributed application design.

The principal objective of this tutorial is to provide the participants with a set of practical patterns that can be frequently applied in distributed software design.

Attendee Background: Participants should be at least cursorily familiar with distributed computing and have an interest in exploring the design issues and techniques of building industrial-strength clients and servers.

Craig Larman is the author of "Applying UML and Patterns--An Introduction to OOA&D" and "The Java 2 Performance and Idiom Guide", and is Principal Instructor at ObjectSpace. He also writes the "Modeling and Java" column in Java Report. He has been using object technologies since 1984 when he started developing knowledge systems on LISP machines. For over a decade he has assisted others in developing object systems, in applying object-oriented analysis and design, and in technologies such C++, Java, and Smalltalk. His current focus is the design of distributed systems with EJB. Craig holds a B.Sc. and M.Sc. in computer science, with research emphasis on object-oriented knowledge representation and case-based reasoning.


25 Catalysis - Systematic Components and Framework with UML
Desmond D'Souza, Platinum Technology
Colorado Convention
Center - A111
 
We describe a simple, consistent use of UML to:
  1. treat "objects" and "use-cases" in a fractal manner, from business to code.
  2. specify components as "types" with precise black-box interfaces.
  3. design components as "collaborations" of parts.
  4. use a "plug-in" framework approach from requirements patterns to code.
  5. define component architectures based on an extensible "kit" of architectural modeling elements.

More details are at http://www.catalysis.org .

Participants will learn how to (a) simplify their usage of UML, (b) distinguish components from objects, (c) separate component specifications from designs, (d) apply re-use from requirements through architecture to code using model frameworks, (e) keep models and designs separable, maintainable, and traceable.

Attendee Background: Attendees should be familiar with object modeling and programming, design patterns as defined by Gamma et al, and use-cases. Those wanting to use patterns with UML, a consistent component-based approach, clear ways to compose and refine models, and design methods suited for languages like Java, will benefit.

Desmond D'Souza is VP of component-based development at Platinum Technology, co-author and developer of the Catalysis method for systematic development of business-driven component systems, published by Addison Wesley. A frequently invited speaker to companies and conferences, and writes the Modeling for Java column in the Journal of Object-Oriented Programming. 


26 Analysis and Redesign of Object-Oriented
Software Architectures

Wolfgang Pree, Univ. of Constance
Rick Kazman, Software Engineering Institute / CMU
Colorado Convention
Center - C103
 
Development teams often don't pay enough attention to the explicit design of the coarse-grained modularization of software systems. This leads to quality deficiencies affecting, for example, the performance, extensibility and maintainability of the systems at hand. Our tutorial presents a well-chosen set of concepts and tools that support software design at the architecture level of abstraction.

The tutorial starts with the definition of relevant terms. It goes on to present the basic concepts required for architecture analysis and (re)design. Among these are known heuristics of how to modularize software systems and how to describe architectures, architectural patterns, and hot spot analysis. The analysis activity is crucial in ensuring that a large and costly development project meets its quality goals. Such an analysis can be used for acquisition, for new projects, or for planned maintenance and reengineering activities. The tutorial introduces two methods for architecture analysis. Case studies exemplify the application of these methods. A thorough analysis also forms the precondition of an architecture evolution of legacy systems. A case study illustrates how small object-oriented frameworks, called framelets, help in the process of refactoring replicated code fragments.

An experience report on the benefits and costs of applying the presented aspects of architecture-centered design in various projects concludes the presentation.

Wolfgang Pree is a professor of computer science at the University of Constance, Germany, and head of the Software & Web Engineering group. His research covers various areas of software engineering, in particular object and component technology, software architectures, and human-computer interaction. Wolfgang is the author of Design Patterns for Object-Oriented Software Development (Addison-Wesley, 1995).

Rick Kazman is a Senior Research Scientist at the Software Engineering Institute of Carnegie Mellon University and Adjunct Professor at the Universities of Waterloo and Toronto. He is the co-author of over 50 papers and several books including Software Architecture in Practice (Addison-Wesley, 1998).


27 Usage-Centered Design with Essential Use Cases
James Noble, Macquarie University
Larry Constantine, University of Technology, Sydney
Lucy Lockwood, Constantine & Lockwood, Ltd.
Colorado Convention
Center - C105
 
Usage-centered design is a proven, scalable process for delivering systems closely fitted to the needs of end-users. For effective user interface design, usage-centered design employs Essential Use Cases, a refinement of conventional use cases that casts narratives into a structured form focused on purposes and separating user intentions from system responsibilities. Such models guide user interface design more effectively toward ease and efficiency of use. Through discussion, illustrative examples, and hands-on application, this tutorial will introduce techniques for constructing and elaborating User Role Models, deriving compact Use Case Models in essential form, and applying these models to realistic problems in user interface design.

Participants will learn how structured Essential Use Cases differ from conventional use cases and how they fit into a systematic usage-centered design process for object-oriented software. They will gain practice in deriving Essential Use Case Models, writing structured narratives, and applying them to user interface design problems.

Attendee Background: Participants should have some experience with use cases as employed in object-oriented analysis and design. Familiarity with basic user interface design principles and issues will also be helpful.

Dr. James Noble is a Research Fellow in Object-Oriented Design at the Microsoft Research Institute at Macquarie University, Sydney. James has ten years experience working and researching with object-oriented systems, and has presented papers and tutorials on object-orientation and usage-centered design on three continents.

Larry Constantine, Professor of Computing Sciences, University of Technology, Sydney, is a pioneer of modern software engineering practice and an internationally recognized authority on the human side of software. He has 10 books and over 125 papers to his credit.

Lucy Lockwood, President of Constantine & Lockwood, Ltd., is a highly regarded trainer and consultant and co-author of Software for Use: A Practical Guide to the Models and Methods of Usage-Centered Design (Addison-Wesley, 1999).


28 Garbage Collection
Richard Jones, University of Kent
Eric Jul, University of Copenhagen
Colorado Convention
Center - A202
 
This tutorial presents the issues facing modern high performance garbage collection and examines the approaches taken by state of the art garbage collectors. Participants will gain a deeper insight into the operation of these high performance garbage collectors. The tutorial will enable participants to evaluate the benefits and costs of garbage collection algorithms, to understand the implications for their code and to make informed choices between collectors.

Attendee background: Participants will be experienced programmers familiar with basic garbage collection technology. Basic knowledge of OO implementation is useful but not essential.

Richard Jones is a Senior Lecturer and Deputy Director of the Computing Laboratory at the University of Kent. He is the prime author of the book on Garbage Collection. He is a member of the Steering Committee of the International Symposium on Memory Management and was Program Chair for ISMM`98.

Eric Jul is an Associate Professor at DIKU, the Dept. of Computer Science, University of Copenhagen, where he leads research in distributed, heterogeneous computing. He is co-designer and principal implementor of the Emerald distributed object-oriented programming language. He was Program Chair for ECOOP`98.


29 Virtual Classes in the BETA Language
Ole Lehrmann Madsen, Aarhus University
Colorado Convention
Center - C102
 
Generic classes or types are most often supported by parameterized classes based on various forms of parametric polymorphism. In OO languages virtual classes present an alternative where new classes are derived from generic ones using inheritance rather than function application. Both mechanisms provide the same basic form of genericity but differ in interesting ways. Virtual classes first appeared in BETA, and have successfully been used for more than 15 years. The tutorial will present basic elements of BETA with main emphasis on virtual classes and will discuss typing issues such as substitutability, co- and contravariance, static typing, etc. The participants will get a detailed introduction to basic elements of BETA, in particular virtual classes. The participants will learn about the pros and cons of virtual classes compared to other proposals for type parameterization.

The participants will be able to evaluate the many proposals in the literature for generic types based on virtual classes and parameterized classes. Finally the participants will become familiar with the implementation of virtual classes.

Attendee Background: Participants should be experienced with object-oriented programming and be familiar with issues regarding parameterized classes including static typing, substitutability, co-/contravariance, etc.

The speaker has been working with OO since the early seventies, starting with Simula. He is one of the designers of BETA and he was the main designer and implementer of the Mjolner BETA compiler. He has participated in many projects on OO in research as well as industry. He is currently a professor in Computer Science at Aarhus University and research director of the Danish National Centre for IT Research. He is co-founder and president of the board for Mjolner Informatics, which develops and markets the Mjolner System.


30 Roll Your Own Language in Java
Steve Metsker, Capital One
Colorado Convention
Center - C108
 
Application developers have lots of chances to use little languages, but you have to know how to see and seize the opportunity. When text appears in patterns, as it does in markup languages, user edits and in most web sites, there is usually a chance to put a new little language to use. The Interpreter pattern in "Design Patterns" shows how to create new languages, but this is a difficult pattern to master without a tutorial. By attending this tutorial, you will gain the tools to start seeing and seizing opportunities for creating new little languages.

Attendee Background: Attendees should understand the object-oriented principles of inheritance and polymorphism. The examples are all given in Java, so attendees should recognize basic Java syntax.

Steve has worked with Basic, Fortran, PL/I, C, Smalltalk, and Java, in Fort Collins, South Portland, Austin, Zug, Lexington and Richmond, pretty much in that order. He wrote, "Java Rules", an article about applying the Interpreter pattern, in February, 1998, for Java Report. Feedback from that article convinced Steve that a lot of people would be interested in a tutorial on how to roll their own new little languages.


31 Testing Distributed Object Systems
John D. McGregor, Software Architects & Clemson University
Colorado Convention
Center - C112
 
The focus of this tutorial is on techniques and a process for testing components built to be distributed across multiple processes. The tutorial will address techniques that are common to all architectures as well as those limited to a specific distribution architecture such as CORBA. The tutorial will provide examples that use specific architectures. The tutorial is divided into three parts:
  1. specific techniques and small examples to illustrate specific testing algorithms,
  2. an architecture for developing the software needed for constructing test harnesses and
  3. a case study with complete code that participants may take away and use.

The techniques presented in the tutorial are intended to provide variable levels of coverage and to allow the developer to focus on specific types of faults. The major benefits from this tutorial include specific testing techniques, and a specific infrastructure for building a reusable testing environment.

Attendee Background: Participants should have participated in the construction of distributed object-oriented programs and performed some level of testing on the program. Component developers and technically-oriented system testers will benefit from this tutorial. Test managers and quality control personnel who are technically oriented will also benefit.

Dr. John D. McGregor is an associate professor of computer science at Clemson University and a senior partner in Software Architects, a software design consulting firm, specializing in object-oriented design techniques. Dr. McGregor has developed testing techniques for object-oriented software and developed custom testing processes for a variety of companies. Dr. McGregor is co-author of "Object-oriented Software Development: Engineering Software for Reuse". Dr. McGregor is also co-author of "A Practical Guide to Testing Object-Oriented Software" to be published by Addison-Wesley. He has published numerous articles on testing including a monthly column on testing objects in the Journal of Object-Oriented Programming.


32 Beyond UML: A Unified Model of Component Concepts
John Daniels, Sterling Software
John Cheesman, Sterling Software
Colorado Convention
Center - C109
 
There is considerable confusion over the meanings of object and component, and over the relationship between these concepts. This tutorial aims to provide attendees with a precise but technology-neutral definition of software component, and will show how such a definition facilitates technology-independent component modeling and specification. It will also explain how this definition relates to that in the UML and show how UML notations can be best used to represent components.

The tutorial will present a conceptual model for components, expressed using UML notation, and show how the conceptual model accommodates the COM+ and Enterprise Java Beans component models. The presentation style will be a mix of lecture, directed exercises, reflection and discussion.

After the tutorial attendees will understand the differences between an object and a component, the various forms a component can take, the relationship between these forms and UML concepts, and be able to model components that map to both COM+ and EJB.

Attendee Background: Attendees should have experience of object modeling with UML and some knowledge of the principles behind distributed object systems and/or component technologies.

John Daniels is a Product Architect at Sterling Software. Prior to joining Sterling he was Application and Technical Architect for Bankers Trust in London, and previously Managing Director of pioneering consulting and training company Object Designers Limited. He has applied object technology in a range of industrial and commercial applications since 1985.

John Cheesman is a Product Architect at Sterling Software. He joined Sterling Software (then Texas Instruments Software) in 1993 and has applied component concepts, methods and standards within their tools. He was a contributor to the Unified Modeling Language, and also worked at Microsoft on their repository and information model design project. Prior to joining Sterling Software, John worked with artificial intelligence, PCTE repository technology and software engineering environments.


33 Patterns for Mapping Objects to Relational Databases
Joseph W. Yoder, The Refactory Inc.
Colorado Convention
Center - A112
 
For developing simple client-server applications, VisualAge provides a visual language for generating the mappings of GUI's to database values and domain objects. For complex applications, tools such as Top-Link are very useful for simplifying the creation of persistent objects while hiding their implementation details. Quite often, application development requires tools for persistence that fall in between these two extremes.

This presentation will describe how to make business objects persistent by mapping them to a relational database with minimal effort. It will also examine the patterns used to map domain-objects to a relational database.

Participants of this tutorial will learn a set of patterns and a language-independent object model that can be used for mapping business objects to a relational database. They will also learn how to develop a data access layer along with the design patterns used in the database tools provided by persistent managers such as those in VisualWorks, VisualAge, and TopLink.

Attendee Background: Basic knowledge of object concepts is required. A general understanding of relational databases and/or SQL is helpful though not necessary. Also, some understanding of patterns can be useful, but is not required.

Joseph W. Yoder has been studying and developing software since 1985. Since 1990 his focus has been on object-oriented technology. He has developed frameworks, helped design several applications, and mentored many new developers. For the last few years Joe has been investigating "visual languages for business modeling" and "active object-models". Joe is also studying and writing design patterns for developing reusable software and domain specific languages.


34 Microsoft COM and DNA - Building Distributed and Component-based Software
Michael Stal, Siemens AG
Colorado Convention
Center - C104
 
With DNA (Distributed interNet Applications Architecture) Microsoft provides an architectural vision how to develop mission-critical software systems on Windows platforms. Applications are built as Multi-tier architectures where all tiers are tightly connected using COM (Component Object Model) as the universal glue. The presentation tier and the middle tiers are not structured as monolithic units but are partitioned into components. The collaboration of components and applications is handled by COM. In the future, even Windows itself will be accessible using the uniform COM programming model. This tutorial will examine the architectural concepts behind Windows DNA and Microsoft COM. It will give an detailed overview of Microsoft COM and related technologies such as Automation, DCOM, OLE-DB, MTS, MSMQ and COM+. Small examples will be used throughout the tutorial to illustrate programming issues. It is the goal of the tutorial to introduce the basic concepts behind Microsoft COM and Windows DNA as well as advanced issues. Attendees will learn how to design and build COM-based applications using object-oriented programming languages such as C++ or Java. They will also get a background in technologies such as Microsoft Transaction Server, MSMQ, OLE-DB.

Attendee Background: Participants should be familiar with object-oriented concepts and object-oriented programming languages, especially C++ or Java. Basic knowledge in distribution technologies is not required but helpful.

Michael Stal is responsible for the research project NEST (Net-enabled Software Technology) at Siemens AG in Munich. His main research areas are Object-Orientation, Distribution, Design Patterns, and Java. He is co-author of the book "Pattern-Oriented Software Architecture - A System of Patterns", Wiley & Sons, 1996. He is editor of Java Spektrum, a German SIGS magazine on Java. Michael is member of the Object Management Group and President of the International Java Club.


36 Analysis Patterns: Reusable Business Object Models
Martin Fowler, Independent Consultant
Colorado Convention
Center - C106
 

Denver skyline
Over the last couple of years Software Patterns have become one of the most important areas for software development. Instead of describing abstract techniques to build software, they highlight useful examples which can be adapted and used again by developers. Although most known for object-oriented design, patterns are also a valuable technique for analysis. This tutorial looks at a selection of the patterns Martin Fowler has collected and published in his book "Analysis Patterns: Reusable Object Models". The tutorial selects two areas: it first outlines patterns first discovered in health care which were then used for corporate financial analysis - a prime example of how pattern reuse can cross traditional vertical domains. It then moves to accounting, showing how a financial system can be built as a network of accounts and posting rules which contain the rules for transferring the amounts between the accounts.

Attendee Background: Attendees should have a working knowledge of OO analysis and design using the UML

Martin Fowler has spent over a decade to applying object technology to business information systems. He is an independent consultant who trains and mentors his clients in OO analysis, design and programming, patterns, and refactoring. He is the author of "UML Distilled" and "Analysis Patterns" which is the source for the patterns in this tutorial.


55 Software Building - The Road to a Software
Architecture Worthy of the Name

Kevlin Henney, QA Training
Alan O'Callaghan, De Montfort University
Colorado Convention
Center - C107
 
The notion of non-trivial systems having software architectures is one that is gaining ground. But what is architecture? How can it be defined? More importantly how do you go about creating a software architecture that can be maintained successfully over the lifetime of a potentially long-lived system, and what are the organizational, social and process implications of generating such an architecture? What roles are played by layers, frameworks, patterns and components? This tutorial draws on the experience of both the building construction and software development industries to provide some answers to these questions.

The tutorial is intended to arm the participant with both philosophical and practical notions of software architecture that will enable them to engage in the generation of appropriate software architectures for the problems they have to solve as a computer professional.


Linda Northrop and Ivar Jacobson
Attendee Background: Though aimed primarily at developers who have to separate the high-level concerns of software systems, the recursive notion of software architecture that is employed will benefit all software developers with a modicum of object-oriented or component-based design experience.

Kevlin Henney is a Principal Technologist with QA Training in the UK. His broad area of specialization is OO design, which he has been applying for over nine years across networked, multi-threaded, real-time, GUI and engineering applications. The key areas of specialization and interest that stem from this are patterns, languages, distributed object systems, architecture and component system design.

Alan O'Callaghan is a Senior Lecturer at De Montfort University in the UK, chair of its Object Engineering and Migration group and a researcher in its Software Technologies Research Laboratory. He has edited two books on OT adoption, is a featured columnist on migration issues for the European software development journal Applications Development Advisor and is the lead author of the ADAPTOR pattern language.


Tuesday Full Day

10 Foundations of Patterns and
Pattern Writing (2 days)
James Coplien, Bell Laboratories
Richard P. Gabriel, Sun Microsystems;
Christa Schwanninger, Siemens AG
Honna Segel, Nortel
Colorado Convention
Center - A101/103/105/107
 
Software patterns are a literary form, designed to communicate expert knowledge about system construction. This course teaches pattern-writing skills in the context of the broader goals and values of the pattern community. The course mixes lecture with exercises and small workshops. Each participant will write a pattern and participate as an author in a writer's workshop. This innovative tutorial is held over two days so that participants are immersed in the activity and culture of pattern writing.


Denver Sky Park
The tutorial helps the attendee appreciate patterns as a literary form in the broader context of a pattern culture that has emerged over the past 6 years. Specifically, the attendees will learn key aspects of the pattern value system:

  • How to recognize traits of well-written patterns
  • How to improve their pattern-writing skills
  • What to look for when reading and applying patterns
    (though there will not be strong focus on pattern application)
  • Several popular pattern forms
  • Pattern vocabulary
  • The Writer's Workshop review format

Attendee Background: A basic software design background is helpful, but not necessary, to fully benefit from the workshop. We encourage attendance by individuals with diverse backgrounds, including (especially!) areas outside computer science.

Jim Coplien is a Distinguished Member of Technical Staff at Bell Laboratories in Naperville, Illinois. He is the author of the "Software Patterns" management briefing and co-editor of several pattern books.

Richard Gabriel is author of "Patterns of Software," and holds an MFA in Poetry from Warren Wilson College. He is well-known in the pattern community for introducing the writers' workshop format for pattern review.

Christa Schwanninger is a software engineer at Siemens Corporate Technology in Munich where she works on distributed applications. She has done pioneering work in patterns for compiler construction and language design.

Honna Segel works for Nortel Networks in the development of advanced services. She has both used and developed various apsects of object-oriented technology and has led workshops at OOPSLA in domain analysis and framework development.


37 Applying Patterns to Support High-performance, Real-time Middleware and Applications
Douglas C. Schmidt, Washington University, St. Louis
Colorado Convention
Center - C103
 
Middleware is becoming increasingly important for building flexible communication systems and reducing software development cycle time. However, conventional implementations of middleware like CORBA, DCOM, and Java RMI lack performance optimizations required by distributed real-time systems. This tutorial describes the principles and patterns necessary to develop high-performance and real-time middleware and applications that can meet end-to-end Quality of Service (QoS) requirements for communication systems.

The objective of this tutorial is to illustrate via real-time use-cases and examples, how to apply patterns and framework components to design and optimize (1) middleware QoS programming models, (2) middleware architectures that minimize priority inversion and non-determinism, associate client requests with servants in constant time, and implement standard middleware protocols, such as GIOP/IIOP, using small memory footprints, (3) middleware scheduling and events services for adaptive QoS and static/dynamic real-time scheduling, and (4) middleware services that control and manage multimedia streaming applications and real-time embedded systems.

Attendee Background: The tutorial is intended for software developers who are familiar with general OO design and programming techniques (such as design patterns, modularity, and information hiding), fundamental OO programming language features (such as classes, inheritance, dynamic binding, and parameterized types), basic systems programming concepts (such as process/thread management, synchronization, and interprocess communication), and networking terminology (such as client/server architectures and TCP/IP).

Dr. Schmidt is Director of the Center for Distributed Object Computing and an Associate Professor of Department of Computer Science and the Department of Radiology at Washington University in St. Louis, Missouri, USA. Dr. Schmidt is an internationally recognized expert on distributed object computing middleware, patterns, and communication frameworks and has published widely in top IEEE, ACM, IFIP, and USENIX technical conferences and journals.


38 XML and OO Paradigms
Neel Sundaresan, IBM Research
Colorado Convention
Center - C108
 
XML is the next big revolution in for the World-Wide-Web. As Java greatly impacted distributed programming and web browsing, XML will carry the web to the next phase of e-commerce, internet based document exchange and workflow. XML forms the static aspect of the future of the Web, while Java and OO paradigm form the dynamic aspects.

XML (unlike HTML) is an extensible tag language with three main aspects: extensibility, structure, and schema validation. XML also separates content from schema, processing, and semantics, thus following the Model-View-Controller (MVC) paradigm prevalent in OO programming.

As XML is being seamlessly integrated into Web and non-Web applications, a number of XML processors are becoming available. Also, as XML specifications are integrated into programming languages, component models like bean architectures become important. A number of design patterns also are supported to enable XML structures to blend with OO application architectures. This tutorial will cover aspects of processing XML in using OO paradigms, integrating them with user applications, using design patterns to add power to this integration, and building application components.

Attendee Background: The tutorial is targeted at students, developers, and architects. Participants should have working knowledge of Java, and OO systems.

Dr. Neel Sundaresan is a Research Staff Member at the IBM Almaden Research Center. He is a member of the Web Technologies Group and is a lead architect of the Grand Central Station Project -- A Large Scale Programmable and Extensible Web Information Gathering System, and also leads research efforts in XML and OO Technologies. He has over 20 publications in the area of Programming Languages, Compilers, High Performance Computing, Distributed Systems and Internet Technologies, Database systems, and OO Paradigms.


39 Effective Strategies and Techniques for Rapid Object-Oriented Application Development
Michael P. Anton, Financial Technology Solutions Inc.
Colorado Convention
Center - C102
 
Industry studies show that the most productive software developers are 20 to 200 times more effective than their least productive counterparts. No other engineering discipline shows this divergence in practitioner competency level. This tutorial will present some of the techniques that allow developers to be incredibly effective, often doing in one day what others take weeks to accomplish. The participants will apply these techniques "hands-on" to the analysis, design, and implementation of a substantial real-world application. They will learn strategies to avoid time-wasting activities and will see how to build in extensibility from the ground-up, addressing future requirements that may not have been anticipated. Participants also will learn how to solve problems by finding and applying pattern languages during analysis, design, programming and even to the team organization.

By the end of the tutorial, participants will not only learn about, but also experience and help to build a Web-based software system, taking it from concept to a functional prototype in only a day.

Attendee Background: This tutorial will assume and build on the participant having a good familiarity with Object Modeling, UML notation, the general concept of Patterns and Pattern Languages, and at least one year experience programming in an Object-Oriented language.

Michael Anton is a Senior Management Consultant at Sanford Bernstein & Co., Inc., an Investment Management and Research Firm in New York City. He holds a Master of Science in Engineering (Computer & Information Science) from the University of Pennsylvania and a Bachelor of Arts in Economics and Chemistry from Williams College in Massachusetts. Mr. Anton has been involved in Object-Oriented Development for eleven years and has contributed to dozens of projects in portfolio management & trading, molecular modeling, directional drilling, traffic control, office automation, Microwave CAD and interactive voice response.


40 The Cost Estimation, Bidding and Quantitative Process Management of Component Based Software Development Projects
Philip Haynes, Object Oriented Pty. Ltd.
Colorado Convention
Center - A102
 

Denver at sunset
The development and delivery of software projects is one of the most risky activities in the modern business world. The situation has changed little with object technology. A key root cause of project failure is the lack of quantitative approaches to project cost estimation, bidding and project delivery. This tutorial will equip participants with the prerequisite skills necessary to successfully estimate, bid and deliver component based software development projects. The tutorial will present the basics of quantitative OO management technology and conclude with a workshop where participants will competitively bid for a real-life software development contract. This tutorial will equip participants with the basic knowledge and skills to safely estimate, bid and deliver OO software projects, particularly in a fixed price software project environment.

Attendee Background: This course is targeted towards seasoned professionals responsible for the estimation, bidding and delivery of OO projects. Attendees should have significant industry experience in OO project management, component architectures or OO process management.

Philip Haynes is a Principal Consultant and Program Manager with Object Oriented Pty. Ltd. Since 1994 he has worked on estimating, bidding and delivery of fixed priced software projects. Mr. Haynes has also been actively researching and applying quantitative OO process management technologies in an industrial context and has written number of papers on software quality management and quantitative approaches to software development. Mr. Haynes was a workshop organizer for the 1996-1998 OOPSLA OO Metrics and Cost Estimation Workshops.


Tuesday Morning/Half Day

18 Evaluating Object Transaction Monitors
Ian Gorton, CSIRO
Colorado Convention
Center - A104
 
This tutorial aims to give software architects, engineers and researchers a detailed appreciation of the relative strengths and weaknesses of object-oriented middleware technology for distributed transaction processing (DTP). These products are known as Object Transaction Monitors (OTMs).

The tutorial aims will be achieved by addressing the following specific objectives:

  1. Overviewing the technical architectures of leading OTM products;
  2. Detailing the characteristics of a significant reference application that has been constructed using each of the technologies;
  3. Presenting the evaluation criteria applied to the systems and OTMs;
  4. Explaining the results obtained using the evaluation criteria to compare the technologies.

Attendee Background: A basic understanding of objects and middleware technology such as CORBA, Java RMI, DCOM and/or DCE.

Ian Gorton has worked as a software engineer in both research and commercial roles for the last 10 years. Until recently, he was Consulting Services Manager for IBM Transarc in the Asia-Pacific, acting as a distributed systems architect on a number of projects for major clients. Before that he has worked as a consultant for Microsoft Australia, and as a senior academic at the University of New South Wales in Sydney, where he still holds a visiting academic position. Ian recently joined CSIRO CMIS to establish a new R&D group in the area of software engineering for distributed systems. He is currently writing a book on OTMs for Addison-Wesley.


42 The Art of Writing Use Cases
Rebecca Wirfs-Brock, Wirfs-Brock Associates
Alan McKean, Wirfs-Brock Associates
Colorado Convention
Center - A106
 
Use Cases describe a software system from an external usage perspective. There is an art to writing them clearly. Written carefully, use cases convey key usage requirements and can be tied to other requirements. Written poorly, use cases are confusing and ambiguous. This tutorial presents examples of both good and bad Use Case descriptions drawn from real projects, and practical techniques for writing three forms of use case descriptions. We begin with brief textual descriptions written from an external perspective. We elaborate these high-level usage descriptions, choosing either a scenario form, which emphasizes sequence, or a conversation, which highlights interactions between a user and the system. Tips for describing policies, errors and exceptions, and glossary entries are also presented. This is a hands-on tutorial. Attendees will practice writing, critically reading and revising usage descriptions.

Participants will be able to apply principles and writing techniques to their own projects, writing appropriate usage descriptions.

Attendee Background: Students should be familiar with writing and reading informal software requirements and usage descriptions. Since Use Cases are part of the Unified Modeling Language (UML), students could benefit from an introduction to object concepts. However, an object background is not a pre-requisite!

Rebecca Wirfs-Brock is president of Wirfs-Brock Associates, a firm specializing in the transfer of object analysis and design expertise to organizations and individuals through training, mentoring, and consulting. She spent 17 years as a Software Engineer at Tektronix, leading Tek's development of Color Smalltalk. She has lectured and presented tutorials on object analysis, design and management topics, and has been an innovator in object technology since 1984. Rebecca is co-inventor of the Responsibility-Driven Design method and co-author of the classic, "Designing Object-Oriented Software."

Alan McKean, Vice President of Training at Wirfs-Brock Associates, has devoted his career applying principles of design and adult learning to find better ways to communicate technical information. A student of Buckminster Fuller's and an MSCS graduate of the University of Oregon, he specializes in system architecture and design. An experienced speaker and software developer, he has developed core curricula in object-oriented development and distributed object systems.


43 Transaction Processing with Objects
Rajendra K. Raj, Morgan Stanley Dean Witter & Co.
Colorado Convention
Center - A108
 
The design, development and deployment of robust enterprise-wide transactional applications continue to be difficult. This tutorial provides an introduction to Object Transaction Processing (OTP) concepts, which are essential to the construction of such applications. The tutorial presents traditional transaction processing (TP) concepts and systems, discusses the impact of object technology on TP, develops a set of techniques to evaluate OTP approaches, and compares the current approaches and implementations of transaction processing with objects. Using specific real-world case studies, these techniques are applied to several illustrative OTP systems based on commercial products such as Microsoft Transaction Server, and implementations of OMG's Object Transaction Service and Enterprise JavaBeans.

Participants will learn general concepts underlying transaction processing with objects. They will be introduced to the design and development of OTP systems. Participants will also be exposed to the current state of commercial OTP technology and criteria that may be used for comparative evaluation of object transaction monitors.

Attendee background: Participants should have participated in the construction of object-oriented programs. Some understanding of database systems is useful, but not required.

Rajendra K. Raj is Vice President in Institutional Information Technology at Morgan Stanley Dean Witter, where he led the development of several generations of transactional distributed financial object infrastructures. Dr. Raj was previously an Assistant Professor at SUNY Oswego. He received his Ph.D. from the University of Washington, Seattle.


44 Introduction to Concurrent Object-Oriented Programming in Java
Doug Lea, SUNY Oswego
David Holmes, Microsoft Research Institute
Colorado Convention
Center - A110
 
Concurrent programming has mostly been the domain of systems programmers rather than application developers, but Java's support of concurrency has enticed many to try their hand at concurrent applications. Effectively creating and managing concurrency within an application poses many design choices and trade-offs. This tutorial looks at more advanced issues in designing concurrent applications. It describes mechanisms for introducing concurrency into applications (threads, message-passing, asynchronous calls) and different models for application architectures, such as data-flow and event- driven designs. The tutorial also shows how concurrency controls can be abstracted into reusable support classes, and finally discusses how concurrent components and applications should be documented.

Participants will learn how concurrent applications can be structured in different ways and how different mechanisms can be used to effect concurrent behavior. They will be exposed to a range of design patterns and techniques for introducing and managing concurrency within their applications and how to create reusable concurrency abstractions.

Attendee Background: This tutorial targets anyone involved, or planning to get involved, in the development of concurrent object-oriented applications. It is expected that the attendee is very familiar with OO concepts and the Java language, and that they have a good working knowledge of Java's concurrency mechanisms.

David Holmes is a Ph.D. student with the Microsoft Research Institute at Macquarie University, Sydney, researching more adaptable, flexible and re-usable approaches to synchronization in concurrent object-oriented programs. He has a degree in Computer Systems Engineering and practical experience with concurrent programming through work on operating systems, distributed systems and real-time embedded systems, within a university environment.

Doug Lea is a Professor of Computer Science at the State University of New York at Oswego. He is author of the Java Series book "Concurrent Programming in Java: Design Principles and Patterns," co-author of the book "Object-Oriented System Development," and the author of several widely used software packages, as well as articles and reports on object-oriented software development.


45 Using Subject-Oriented Programming to Overcome Common Problems in Object-Oriented Software Development and Evolution
Harold Ossher, IBM T.J. Watson Research Center
Peri Tarr, IBM T.J. Watson Research Center
Colorado Convention
Center - C105
 
Subject-oriented programming (SOP) is a practical approach to object-oriented (OO) programming-in-the-large. SOP addresses some well-known limitations of OO development, without forcing developers to adopt new languages or abandon the OO paradigm, including weaknesses in:
  • Non-invasive system extension and evolution: Subclassing and design patterns help but are insufficient.
  • Large-scale reuse and integration: With its focus on small-scale objects, OO development cannot achieve large-scale component reuse or integration without preplanning.
  • System decomposition: By-object system decomposition is useful for data-centric system components, but others (e.g., feature; function) are better for other components. Without them, maintainability, comprehensibility, and reusability suffer.
  • Multi-team and decentralized development: OO development leads to contention over shared, centralized classes. It forces developers to agree on one domain model, rather than using task-specific models.

This tutorial presents SOP and shows participants how to use it, both conceptually and using tool support. It also briefly contrasts SOP with other related approaches (e.g., AOP), to aid participants in selecting the best approach for a given problem.

Participants will learn to identify and address, using SOP, some difficult and pervasive problems in their OO development activities. They will also learn how SOP promotes the use of design patterns, frameworks, and reusable components.

Attendee Background: Familiarity with OO concepts and design patterns, and at least some experienced in developing OO applications, are required.

Harold Ossher co-invented subject-oriented programming in 1993. He manages a group that has built tool support for SOP in C++ and prototype support for Smalltalk, and conducts related research.

Peri Tarr has a strong background in software engineering and the application of subjects to it. She leads the tool development effort for subject-oriented programming in Java and has been exploring issues in subject-oriented software engineering throughout the software lifecycle.


46 Meta-Classes in C++ - Reflection for Existing Classes
Detlef Vollmann, Vollmann Engineering
Colorado Convention
Center - C107
 
Reflection is a programming technique for object-oriented architectures to provide better extensibility of a system (especially at run-time) and a means of providing uniform generic behavior (such as persistency). While languages like Smalltalk and Java provide built-in mechanisms for reflection, C++ lacks such a provision. Though several well-known patterns exist for implementing reflection through a metaobject protocol in C++, they typically require the usage of this protocol for all access to the real (non-meta) classes, thus forcing an unnatural style of programming. This tutorial presents some lesser known C++ constructs that can be used to provide meta-class facilities to existing normal C++ classes, enabling both normal direct access and reflective access to these classes. Participants will acquire a thorough understanding of the potentials of reflective programming techniques and some patterns to implement them effectively in C++.

Attendee Background: Participants should have a good working knowledge of ISO C++. Advanced features of the language used in this tutorial will be explained.

Detlef Vollmann has a background of 15 years in software engineering and more than 10 years with object technology. As an independent consultant he supports several swiss companies with the design of object-oriented systems. Since 1991, he has authored and taught courses in C++, Object-Oriented Technologies, Software Architecture and Distributed Computing for the Swiss Digicomp AG.


47 Exploring the Unified Modeling Language by Example
Charles Richter, Objective Engineering, Inc.
Colorado Convention
Center - A109
 
The Unified Modeling Language has emerged as a standard for object-oriented analysis and design notation. Because it attempts to provide notation for most aspects of object-oriented design, however, UML is a rich and complex language offering several types of diagrams. This tutorial uses the design of a small problem to explore many of UML's more advanced features, including use case diagrams, activity diagrams, and the notation for concurrency and distribution. Upon completion of this tutorial, attendees should have a deeper understanding of the UML and its application to real, everyday problems. Attendees will also be exposed to some of the more advanced and unusual features of the UML.

Attendee Background: This tutorial is aimed at developers who have at least a rudimentary knowledge of the Unified Modeling Language (UML) notation and are interested in a more detailed understanding of the application of that notation. The tutorial assumes the attendee understands basic object-oriented concepts such as classes, inheritance, and polymorphism, as well as the basic object-oriented modeling and design constructs such as class diagrams (object models) and object interaction diagrams.

Charles Richter has been involved in object-oriented development for over ten years, and has been teaching object-oriented design for most of that time. He has considerable development and teaching experience with several design methods and notations, including UML. He is the founder and a principal of Objective Engineering, Inc., a company dedicated to providing quality training and consulting in object-oriented analysis and design and in Java programming.


48 An Introduction to Design Patterns
John Vlissides, IBM T.J. Watson Research
Colorado Convention
Center - A201
 
Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Experience shows that many object-oriented systems exhibit recurring structures or "design patterns" of communicating and collaborating objects that promote extensibility, flexibility, and reusability. This course describes a set of fundamental design patterns and, through a design scenario, demonstrates how to build reusable object-oriented software with them. The course covers the roles design patterns play in the object-oriented development process: how they provide a common vocabulary, reduce system complexity, and how they act as reusable architectural elements that contribute to an overall system architecture.

Attendee Background: Attendees should understand basic object-oriented concepts, like polymorphism and type versus interface inheritance, and should have had some experience designing object-oriented systems. No prior knowledge of design patterns is required. Familiarity with C++ is recommended.

John Vlissides is a member of the research staff at the IBM T.J. Watson Research Center in Hawthorne, NY. He has practiced object-oriented technology for over a decade as a designer, implementer, researcher, lecturer, and consultant. John is author of Pattern Hatching, co-author of Design Patterns and Object-Oriented Application Frameworks, and co-editor of Pattern Languages of Program Design 2. He is also Consulting Editor of Addison-Wesley's Software Patterns Series. John has published numerous technical papers and is a columnist for the C++ Report.


49 Automating Software Testing in Java using Beans and Reflection
Nigel Bakker, Software Futures
Chris Nel, Futureworks
Colorado Convention
Center - C109
 
Getting software developers to perform unit testing adequately is challenging. The Java language has some interesting features that make it possible to automate much of this task and even add an element of fun to it. We explore techniques for simplifying testing. A common OO software testing approach uses harnesses or test classes to exercise the classes under test. This approach has a number of problems and limitations. We contrast this with a framework that uses Beans and Reflection for automating unit testing. We also show how to extend the framework for automating functional testing through test cases. A combination of slides and demonstrations are used to build from basic concepts through to actual implementation.

Attendees will learn about testing concepts, the Java Reflection API and the Java Beans specification as applied to automated unit testing. They will be shown how black box, and to a lesser extent, how white box testing can be automated by exploiting built in language features.

Attendee Background: A working knowledge of Java is essential. Some experience with object modeling would be useful since many of the design elements are presented using the UML. The material is intended for developers and architects who would like to improve the quality of testing in their development processes.

Nigel Bakker is a Senior Consultant at Software Futures in the area of Object Technology. He has had over 13 years of software development experience, including eight years applying Object Technology in applications ranging from banking systems to embedded controller and communication systems. He has recently been asked to author a column for the online publication ITWeb. ( http://www.itweb.co.za )

Chris Nel has more than 10 years experience in software development; Including analysis, design, implementation and testing thereof. Chris is involved on a daily basis with cutting and testing code.


51 Structuring Object-Oriented Software Development Project Teams in Support of System Architectures
Luke Hohmann, Aurigin Systems, Inc.
Colorado Convention
Center - C106
 
Conway's law tells us that the structure of the system is strongly influenced by the organizational structure of the team that builds it. Proper partitioning of object-oriented systems dictates a well thought out distribution of responsibilities among subsystems. Unfortunately, traditional approaches to team structure do not effectively support the adoption or use of object technology, for they do not adequately address the unique features of well-designed object-oriented system architectures. Upon attending this tutorial, the participant will be able to: describe architectures for object-oriented applications; define how to control growth within teams; define organizational structures and their usefulness in object-oriented projects; design organizational structures that support object-oriented development; determine if mentors or consultants are appropriate for their project; establish roles and responsibilities among team members.

Attendee Background: This tutorial is designed for those individuals responsible for managing an object-oriented project. A participant should understand basic concepts of object technology (e.g., class vs. instance, polymorphism, encapsulation). Prior project management experience is helpful, but not required.

Luke Hohmann is Vice President of Engineering at Aurigin Systems, Inc. Mr. Hohmann has extensive experience in object-oriented analysis and design, software engineering, user interface design, and project management. He is the author of "Journey of the Software Professional: A Sociology of Software Development" (Prentice Hall). Mr. Hohmann is currently working on two books, "GUIs with Glue: Creating Usability Through Lo-Fi Design" and "Mastering Software Patterns in C++". Mr. Hohmann has a B.S.E. in Computer Engineering and an M.S.E. in Computer Science and Engineering from the University of Michigan.


Tuesday Afternoon/Half Day

53 The Unified Process and Beyond
Ivar Jacobson, Rational Software
Colorado Convention
Center - A110
 
A better development process-in fact, a process unifying the best practices now available-is the key to the software future. The proven Unified Process originally developed by Ivar Jacobson, now incorporating the work of Grady Booch, Jim Rumbaugh, Philippe Kruchten, Walker Royce, and other people inside Rational, answers this long-felt need.

Component and object based, the Unified Process enables reuse. Use-case driven, it closes the gap between what the user needs and what the developer does. Architecture centric, it guides the development process. Iterative and incremental, it manages risk. Represented in the design blueprints of the newly standardized Unified Modeling Language (UML), it communicates your results to a wide audience.

However, now we may ask ourselves the question: Is the Unified Process a framework on which the future can build, or will there be a new paradigm that force us to start over?

This innovative tutorial combines lecture with a question and answer format, to allow students to ask questions specific to their needs or areas of interest. The questions can be submitted in advance (details available at http://canuck.gda.itesm.mx/~almarode/tweb/tutorial53.html) and will be filtered and organized by a person chosen to spur debate and raise issues. Students will also be able to submit questions during the tutorial, for discussion during the second half. This tutorial promises to be very interactive and tailored to the students needs.

Attendee Background: The attendees are expected to have experience in software development and some background in object technology.

Dr. Ivar Jacobson is vice president of business engineering for Rational Software Corporation. Dr. Jacobson is the founder of Objectory AB in Sweden, which merged with Rational Software in 1995. He was one of the three original designers of the UML (Unified Modeling Language), which was officially adopted as a standard by the Object Management Group (OMG) in 1997. He is the principal author of three influential and best-selling books: "Object-Oriented Software Engineering-A Use Case Driven Approach", "The Object Advantage-Business Process Reengineering with Object Technology", "Software Reuse: Architecture, Process, and Organization for Business Success", "The Unified Software Development Process"


54 Designing Concurrent Object-Oriented Programs in Java
David Holmes, Microsoft Research Institute
Doug Lea, SUNY Oswego
Colorado Convention
Center - A106
 
Concurrent programming has mostly been the domain of systems programmers rather than application developers, but Java's support of concurrency has enticed many to try their hand at concurrent applications. However concurrent programming poses many traps for the unwary. This tutorial demonstrates various design patterns and techniques for constructing concurrent applications in Java and for managing that concurrency. On the language side we look at Java's mechanisms to support concurrent programming. On the design side we look at object structures and design rules that can successfully resolve the competing forces (safety, liveness, efficiency, coordination, reusability) present in concurrent software design problems. Participants will acquire comprehensive knowledge of the concurrency support provided by the Java language and core classes, as well as insight into some threading issues within the Java libraries. They will be exposed to a range of design approaches to assist them in developing safe, concurrent, applications in Java and other object-oriented languages.

Attendee Background: This tutorial targets anyone involved, or planning to get involved, in the development of concurrent object-oriented applications. It is assumed that the attendee is familiar with basic OO concepts and has a working knowledge of the Java language.

David Holmes is a Ph.D. student with the Microsoft Research Institute at Macquarie University, Sydney, researching more adaptable, flexible, and reusable approaches to synchronization in concurrent object-oriented programs. He has a degree in Computer Systems Engineering and practical experience with concurrent programming through work on operating systems, distributed systems and real-time embedded systems, within a university environment.

Doug Lea is a Professor of Computer Science at the State University of New York at Oswego. He is author of the Java Series book "Concurrent Programming in Java: Design Principles and Patterns", co-author of the book "Object-Oriented System Development," and the author of several widely used software packages, as well as articles and reports on object-oriented software development.


56 Interconnecting Objects via Contracts
Luis Andrade, Oblog Software SA
Jose Fiadeiro, University of Lisbon
Colorado Convention
Center - C107
 
Even if mechanisms are provided for capturing and integrating behavioral aspects in system models, object-oriented approaches have not yet produced primitives and constructs for treating interactions as first-class citizens. Interactions between objects in a system are too often coded in the way messages are exchanged and methods are called, making it difficult to understand and evolve the discipline that governs the interaction between different components of a system without a deeper analysis of the way objects are designed. Yet many application domains, like banking, require high levels of reconfigurability of existing services, e.g. new ways for clients to interact with their bank accounts. This suggests that an explicit model of the coordination that is required between the different components in the system should be given immediately at the level of the domain model.

This tutorial puts forward the concept of contract as a mechanism for providing explicit representations of interconnections between objects. The usefulness of the concept is illustrated with examples taken from real-life projects. Finally, we show how contracts can be realised both in UML-like languages and ORBs.

Attendee Background: Familiarity with object-oriented conceptual modeling and architectural design is useful.

Luís Andrade is partner and Technical Vice-President of Oblog SA in Portugal and Oblog Technology Inc. in the USA This company has developed a sophisticated object-oriented specification language (OBLOG) and its supporting tools. He is also partner and president of a software company with extensive experience in developing banking applications and tools based on the Oblog language.

José Fiadeiro is Professor for Computing Science at the University of Lisbon. His main contributions have been in the formalization of specification and program design techniques and of their underlying modularization principles, namely in connection to Software Architectures. He has published more than 70 papers in these areas. He has also co-authored and presented a tutorial on the formalization of object-oriented modeling techniques at OOPSLA'94.


57 Balancing Architecture Design Alternatives Based on Adaptability, Reuse and Performance Factors
Mehmet Aksit, CTIT, University of Twente
Colorado Convention
Center - C109
 
Software systems have to cope with continuously changing requirements. If a software system is derived from a well-defined architecture specification, the effect of changes in the requirement specification will be limited to the boundaries of the abstractions of the architecture. Since architecture specifications are generally abstract, one may create different implementations for the same architecture specification. Each alternative implementation will have different adaptability, performance and reusability characteristics. Providing ultimate adaptability may create too much run-time overhead. Aiming at the fastest implementation may result in unnecessarily rigid software. Aiming at the most reusable software may introduce redundant abstractions for a given problem. Software engineers, therefore, must be able to explicitly compare, evaluate and decide on various design alternatives of architectures based on the relative importance of the quality factors. This tutorial teaches techniques to depict the space of alternative implementations of architectures, and rules to select among the alternatives using quality factors. An example problem will be worked out and its various design and implementation alternatives will be demonstrated on a notebook computer.

The participants will learn techniques to depict the architectural design space, to balance adaptability, reuse and performance factors, and to select among design alternatives.

Attendee Background: Some knowledge of software architectures and programming languages is required.

Mehmet Aksit is working as an associate professor at the University of Twente. He gave more than 60 international and in-company courses in Europe, USA and Canada. Dr. Aksit has been the user and developer of object-oriented systems since 1983. He has been involved in designing architectures for several large industrial projects.


58 Distributed Object Programming using Java and CORBA
Nigel Bakker, Software Futures
Colorado Convention
Center - A104
 
Today's computing paradigm of "The Network is the Computer" has fundamentally changed the way we build applications. Java has been a powerful force for change in this regard. Compliment Java with CORBA and this type of solution is likely to become ubiquitous. The tutorial will introduce CORBA basics and demonstrate their implementation using Java. The tutorial will also introduce some common CORBA design patterns and other useful tips and tricks for overcoming some of the difficulties with distributed object applications. Finally, CORBA is briefly contrasted with RMI and DCOM/COM+.

Attendees will learn about distributed object concepts and how distributed applications are built in Java with CORBA. They will be introduced to some of the common problems encountered in this domain and shown how these problems can be overcome.

Attendee Background: A working knowledge of Java is essential. Some experience with object modeling would be useful since some of the design elements are presented using the UML. The material is intended for developers and architects who would like to learn more about CORBA and come to grips with some of the issues related to building distributed applications using CORBA and Java.

Nigel Bakker is a Senior Consultant in Object Technology at Software Futures. He has had over 13 years of software development experience, including eight years applying Object Technology in applications ranging from banking systems to embedded controller and communication systems. He has recently been asked to author a column for the online publication ITWeb. ( http://www.itweb.co.za )


59 Storing Java Objects and Enterprise JavaBeans
in Relational Databases
Dennis Leung, The Object People
Colorado Convention
Center - A106
 
One of the major challenges faced by enterprise Java developers is overcoming the mismatch between objects and relational databases. Storing objects in Java is more than simple JDBC calls; a solid design incorporates a persistence layer that separates the details of the database from the business logic. The persistence layer should address mapping and run-time issues such as: caching, object identity, inheritance, legacy database integration, querying, stored procedure use, objects stored in multiple tables and transaction management.

Additional challenges arise as more projects are using 3 tier architectures and application servers. The Enterprise JavaBean specification has also added integration requirements as developers build EJB compliant server components. Participants in this tutorial will learn about the issues involved with storing Java objects and Enterprise JavaBeans in relational databases. The design considerations in building and using a persistence layer will be discussed.

Attendee Background: Participants should have a basic knowledge of Java, object modeling and relational database. A high level knowledge of Enterprise JavaBeans would also be of use for the sections focused on EJBs.

Dennis Leung is the Manager of Product Development at The Object People. He manages the TOPLink family of object-relational mapping tools. He has consulted with Fortune 500 companies world-wide on object-relational issues.


60 Advanced Project Management
Kenny Rubin, Secant Technologies, Inc.
Colorado Convention
Center - C106
 
Software development projects have to be managed properly to obtain the most benefits from object-oriented technology. To meet and exceed project goals, issues surrounding planning and control, team structure, software development environment, methodology, reuse, quality assurance and measurement must be understood and addressed. This presentation discusses advanced aspects of these issues by examining the details of a particular software development project that created a high-quality, shrink-wrapped software product.

Attendee Background: Attendees should be project managers or should have an interest in project management. Experience managing on one or more object projects would be helpful.

Mr. Rubin is Chief Operating Officer of Secant Technologies, Inc., a leading provider of advanced software technologies for assembling, deploying and managing scalable, multi-tier applications. Previously he was Director of New Business Development in the IBM North America Object Technology Practice. Prior to that, Mr. Rubin was Manager of Methodology Development and Manager of Professional Services at ParcPlace Systems, Inc. He is the co-author of the popular book Succeeding with Objects: Decision Frameworks for Project Management. Mr. Rubin received his BS. in Information and Computer Science from the Georgia Institute of Technology and his M.S. in Computer Science from Stanford University.


61 Designing with Patterns
John Vlissides, IBM T.J. Watson Research
Colorado Convention
Center - A201
 
Design patterns are making the transition from curiosity to familiarity. Now that many people know what they are, they want to know how best to apply them. This tutorial shows how to leverage patterns in the software design process. It reveals the thinking behind pattern application; including when not to use a seemingly applicable pattern. It shows how the right patterns can improve a design and how the wrong patterns can degrade one. Students thus learn to apply design patterns to maximum benefit.

Attendee Background: Attendees should be well-grounded in object technology and should be familiar with the design patterns in Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma, et al. Familiarity with Java is recommended.

John Vlissides is a member of the research staff at the IBM T.J. Watson Research Center in Hawthorne, NY. He has practiced object-oriented technology for over a decade as a designer, implementer, researcher, lecturer, and consultant. John is author of Pattern Hatching, co-author of Design Patterns and Object-Oriented Application Frameworks, and co-editor of Pattern Languages of Program Design 2. He is also Consulting Editor of Addison-Wesley's Software Patterns Series. John has published numerous technical papers and is a columnist for the C++ Report.


62 Extending the C++ Standard Template Library (STL)
Jan Christiaan van Winkel, AT Computing
Colorado Convention
Center - C111
 
When writing applications in C++, STL - the Standard Template Library is of great help. It provides several container types (such as list, vector, map) and algorithms to be used in combination with these containers (such as sort and find).

However useful STL may be, there will be a moment that you need something you would expect to be in STL, but which is not. Then it is useful to know how you can create new containers and algorithms in the spirit of STL. In this way your own container types and algorithms will work with standard STL containers and algorithms. The STL has been set up to make these extensions possible.

Though it is not difficult to extend STL, there are some guidelines to follow. After the tutorial you will know what rules to follow when creating new STL-like containers (including their iterators) and algorithms. The examples will give you enough material to base your new container types on.

The objective if this tutorial is to teach the attendees how to make more use of the C++ STL by creating new container types and algorithms in the STL way.

Attendee Background: The attendees are expected to know C++ and normal use of STL.

JC van Winkel has a BS and a MS in computer science (the MS from the Vrije Universiteit Amsterdam). He works at AT Computing, a small courseware and consulting firm in Nijmegen, the Netherlands. There he teaches UNIX and UNIX-related subjects, including C and C++. He co-authored the course notes for the C++ course. These course notes are published as a book by the Dutch publisher ``Academic Service''. He is the Dutch representative in the ISO C++ standardization committee SC22/WG21.


63 Designing A Light Methodology
Alistair Cockburn, Humans and Technology
Colorado Convention
Center - A109
 
This tutorial is for experienced developers, team leaders, methodologists selectors trying to design a methodology for their organization. The attendee should have significant software team experience, not necessarily OO, must have used at least one methodology and thought about others. The methodology of an organization is a social construction that includes the roles, skills, teaming, activities, techniques, deliverables, standards, habits and culture of the organization as it develops software. The first part of the tutorial introduces language and constructs needed to evaluate, compare and construct methodologies. These include precision, accuracy, tolerance, relevance, and scale, along with the nine basic elements of a methodology. Several examples of effective, lightweight and real methodologies are given, along with commentary on the social setting for each. The tutorial examines the conditions suited to shifting from a lighter to a heavier methodology and the penalty for doing so. The tutorial ends with the presentation of a small family of lightweight and practical methodologies, optimized for productivity, making maximum use of human, face-to-face communication. Considerations about success and failure in affecting culture are visited again at the end. Learn to identify and diagnose the parts of your organization's methodology, and learn ways to make it more effective.

Attendee Background: This tutorial is for experienced developers, team leaders, and evaluators of methodologies.

Alistair Cockburn, founder of Humans and Technology, was special advisor to the Central Bank of Norway for object technology and software project management, and the OO methodology designer for the IBM Consulting Group. His book "Surviving OO Projects", was published in 1998. He is an expert on use cases, object-oriented design, project management, and software methodologies. He has been the technical design coach and process consultant on projects ranging in size from 3 to 90 people. Materials that support Alistair's workshops can be found at http://members.aol.com/acockburn .


Wednesday Full Day

1 Introduction to the Rational Unified Process
Philippe Kruchten, Rational Software
Colorado Convention
Center - C109
 
The Rational Unified Process is a Software Engineering Process. It provides a disciplined approach to assigning tasks and responsibilities within a development organization. Its goal is to ensure the production of high-quality software, that meets the needs of its end-users, within a predictable schedule and budget. The Rational Unified Process captures many of the best practices in modern software development in a form that is suitable for a wide range of projects and organizations. It uses the Unified Modeling Language (UML) as the principal notation for the several models that are built and refined during the development.

The objectives of this tutorial are to introduce the Rational Unified process, to explain its architecture and representation, and to show some of its benefits. The attendance will learn how to structure a software engineering process using an object-oriented approach. They will see how the process makes an extensive use of object-oriented models, all based on the UML, throughout the lifecycle. They will be shown the merits of an iterative approach, focusing first on the development and validation of a robust architecture. And finally they will be taken for a guided a tour through this interactive, web-enabled knowledge base.

Attendee Background: Software development managers, software developers, process engineers; no special background or pre-requisite is necessary.

Philippe Kruchten is director of process development at Rational Software Canada, currently in charge of the Rational Unified Process, and a member of the Rational Architecture Practice Group.


41 Object-Oriented Distributed Computing:
From Theory to Practice

Mohamed E. Fayad, University of Nebraska, Lincoln
Colorado Convention
Center - A202/204
 
The tutorial presents a complete overview of theoretical issues in the Distributed Computing field, such as the Type-Oriented Paradigm (TOP), Concurrency, Loosely-Coupled Systems, and CORBA Issues and discusses how to move these theoretical concepts smoothly into practice. This tutorial discusses several key technologies for the success of distributed system development projects, such as application frameworks, component-based development, agents, design patterns, business objects, framework layering, and others. The OODC is examined with respect to two central themes: "What are the right steps in the development of an object-oriented distributed system?" and "How can you start a large-scale distributed system development with minimum risks?" The information in this tutorial is based upon lessons learned from the research and development of "Philips New York Project: a Large Scale Distributed Healthcare System using CORBAmed." This tutorial is targeted to those individuals interested in distributed computing, distributed real-time system developments and client-server application issues.

Attendee Background: Participants should have a general familiarity with basic object-oriented concepts and software engineering principles.

Mohamed Fayad is an Associate Professor at University of Nebraska, Lincoln. He has been actively involved in over 60 OO projects. Dr. Fayad is an Associate Editor and Columnist (CACM), Editor-In-Chief (IEEE-CS 95-97), a distinguished Speaker (IEEE-CS). Dr. Fayad is the lead author of "Transition to OO Software Development" with M. Laitinen, Wiley, 1998. He is also the lead author of the three-volume book on Application Frameworks, with R. Johnson and D. Schmidt, Wiley, 1999 and "OO Enterprise Frameworks" with D. Hamu, 1999.


Wednesday Afternoon/Half Day

13 The Manager's Role in a Successful Transition to Object-Orientation
Norm Kerth, Elite Systems
Colorado Convention
Center - C202/204
 
Object-oriented thinking is just the latest of many technologies promising to improve software development. We hear claims such as increased productivity, higher quality, extendibility, reuse and portability. Whether these claims remain as dreams or are actually realized is dependent on the manager's ability to guide their organization to new effective uses of this technology. The pressure to participate in the internet and use the new UML standard only adds to the importance of the manager's role.

This tutorial discusses what managers should expect and need to do as their organization grows in its maturity to use objects. It is a course loaded with wisdom and experience.

In this tutorial, you learn how to develop a management program that allows you to introduce this new technology. It explores the appropriate deployment of the technology as well as the management issues - people-oriented as well as project-oriented - that must be attended to. The tutorial takes the view that the transition is a long-term project and discusses a manager's role over a many year period. It pays special attention to the process by which people work through a paradigm shift.

Attendee Background: No specific background required.

Norm Kerth is a consultant working with companies interested in ensuring that they make a successful transition to using the object-technologies. He includes the wider issues of specification and design activities, quality assurance, continuous process improvement, project management and building effective teams. Prior to starting his company, Elite Systems, he was a professor and researcher at the University of Portland. He has a decade of engineering experience with Tektronix and is a master teacher, with over 25 years of experience in front of students and computer professionals.


64 Precise Component Architectures with UML/Catalysis
Desmond D'Souza, Platinum Technology
Ian Maung, Platinum Technology
Colorado Convention
Center - A101
 
The word "architecture" bestows instant importance to loose powerpoint drawings. But components will only plug together if they conform to shared "pluggable" architecture standards. Believing "architecture keeps designers from needless creativity", we present a clear definition of architecture based on UML packages, frameworks, and refinement. Elements and rules of an architectural style are separated from the design which use them. Components architectures use an abstract component-connector model, simplifying the development process in the Catalysis/CBD approach to UML.

Participants will learn to:

  1. structure specifications and implementation with UML "refinement",
  2. constrain refinement with an architecture,
  3. use frameworks for patterns of many kinds;
  4. define design elements and rules as an architectural style, from full formal translation schemes to entirely ad-hoc;
  5. separate architecture specs from architecture implementations;
  6. use components + connectors as an architectural abstraction

Attendee Background: Attendees should be familiar with OO modeling and design patterns.

Desmond D'Souza is VP of component-based development at Platinum Technology, co-author and developer of the Catalysis method for systematic development of business-driven component systems, published by Addison Wesley.

Ian Maung is Component Architect at Platinum Technology, developed the full CBD/Catalysis process for UML, and has worked with rigorous methods applied to object modeling since 1989.


65 Improving the Performance of Persistent and Distributed OO Applications
Ashutosh Tiwary, University of Washington
Przemyslaw Pardyak, University of Washington
Colorado Convention
Center - A103
 
High-performance and scalability are hard to achieve in persistent and distributed object-oriented applications because of their inherent complexity. Developers are often unaware of the trade-offs and design choices that are critical to achieve the desired performance. In this tutorial, we discuss how to design and implement such applications for better performance. We describe performance issues faced by the developers and the design decisions that promote high performance. We present guidelines for evaluating the performance of architectural and design alternatives and describe tools and techniques used for such evaluations. Finally, we present three real-world case studies of performance evaluation of persistent and distributed OO applications.

Participants will learn about the major performance issues and design trade-offs in building persistent and distributed object-oriented applications. They will learn how to evaluate the performance of alternative system architectures, application designs, and infrastructure choices. They will also learn what tools and techniques to use for such evaluations.

Attendee background: This tutorial is targeted towards individuals who are engaged in or are considering building and deploying persistent or distributed object-oriented applications. We expect the attendees to understand the basics of object-oriented concepts, object-oriented languages, object-oriented database systems, and distributed object-oriented systems.

Ashutosh Tiwary is a researcher with the Research and Technology Group at Boeing and a Ph.D. Candidate in the Computer Science Department at the University of Washington. His thesis work is focused on performance evaluation and tuning of persistent and distributed OO systems. He was the chair of OOPSLA `95 and `96 Workshops on Building Large Persistent and Distributed Software Systems using Objects. He was also invited to speak at the OOPSLA `98 panel on Experiences in Building Distributed Systems.

Przemyslaw Pardyak is a Ph.D. Candidate at the University of Washington doing research on operating systems and performance evaluation. He received a M.S. degree in the area of distributed object-oriented systems and languages.


66 GOF Pursuit - Learning Patterns by Playing
James Noble, Microsoft Research Institute, Macquarie University
Charles Weir, Charles Weir Consulting Limited
Colorado Convention
Center - A108/110/112
 
Design patterns allow us to learn software design from the experience of others. Unfortunately patterns are difficult to learn using conventional techniques, so many designers have only a partial or incorrect understanding of the patterns available.

This tutorial is based around GOF Pursuit, a game based loosely on 'Trivial Pursuit'. This game is effective in helping practitioners learn the patterns in the "Design Patterns" book by the so-called 'Gang of Four' (Gamma, Helms, Johnson and Vlissides). This tutorial will be a hands-on-workshop to help participants learn and re-learn patterns, to teach participants how to organize GOF Pursuit games and to be fun at the same time.

This tutorial will enhance participants' design abilities by evaluating their knowledge of design patterns and by consolidating that knowledge, especially of the more complex patterns. Participants will use the techniques of the GOF Pursuit game to learn design patterns in breadth and depth.

Attendee Background: This tutorial targets anyone who is using design patterns, who wishes to refine or improve their knowledge of design patterns, or who plans to introduce them to their workplace or teach them to others. It is assumed that the attendee is familiar with OO concepts, and has encountered the design patterns from Gamma et. al.

Dr. James Noble is a Research Fellow in OO design at the Microsoft Research Institute, at Macquarie University, Sydney. He has presented and published papers on design patterns in three continents, and has a Ph.D. in Computer Science from Victoria University of Wellington, New Zealand. He established the Sydney Patterns Group, and with Charles Weir, is writing a book of patterns for the Software Patterns Series.

Charles Weir has more than fifteen years' experience of working on Software Development projects, providing on-site mentoring to many companies in Europe. Charles has presented sessions on patterns for clients and at conferences, has chapters on Patters in volumes 3 and 4 of the "Pattern Languages of Programming" series.


67 Object-Oriented Analysis and Design
Vladimir Bacvanski, InferData
Petter Graff, InferData
Colorado Convention
Center - A105
 
This tutorial covers the essential and most important aspects of adopting object-oriented analysis and design and is intended to introduce the participants to the process and deliverables in the analysis and design of object-oriented systems. The tutorial teaches a proven method of building software systems from domain analysis to design based on UML and best industrial practices. The course teaches students how to build object models, to understand the business domain, write system operation specifications, and create modifiable designs. To produce the models, we will apply a step by step method that leads the students through the development phases. This method will help establish a seamless path from user requirements to object-oriented code.

Attendee Background: Participants should be familiar with software development or programming. No specific object-oriented experience is required.

Dr. Vladimir Bacvanski has over a decade of engineering experience with object-oriented and advanced software technologies. He has published numerous papers including contributions to books, and has been an invited speaker, chair and organizer at leading conferences in the area of object-oriented and knowledge-based systems.

Petter Graff has been developing object-oriented systems since 1982. Most of his experience has been in the area of large Distributed Real-Time systems. He has helped Fortune 500 companies revolutionize their software development process. Mr. Graff is a frequent speaker and organizer at conferences, including OOPSLA and TOOLS.


68 Setting Up a Software Component Factory
Peter Herzum, Platinum
Colorado Convention
Center - A107
 
Component-based development can support high-levels of software development productivity, given an appropriate conceptual framework and a set of pragmatic steps to set-up the development environment and organization. This tutorial describe how to set-up a component factory (i.e., an efficient software production capability able to deliver and assemble industrial-level software components) by presenting the common issues, the architectural principles and the pragmatic steps required for such an endeavor. The tutorial is based on the book "The Business Component Factory", by Peter Herzum (principal author) and Oliver Sims, John Wiley and Sons. Participants will acquire the terminology, principles and steps, as well as being introduced to the main risks, costs and examples of common mistakes, required to approach the efficient production of components, component-based systems and integration of component-based systems for the enterprise.

Attendee Background: The tutorial is targeted to professionals involved in the management, architecture, integration or design of next-generation component-based systems for the enterprise. Prerequisites are a background of software engineering principles for large-scale development and familiarity with the object oriented paradigm. Useful but not required pre-requisites include familiarity with distributed business system development and with the development of data-intensive, transaction-oriented business systems.

Peter Herzum has been working with objects since 1987 and with business components for the enterprise since 1992. Currently responsible for the component-based practice at PLATINUM Technology, Inc., he is the creator of the business component approach, an approach centered on components for the efficient development of large-scale distributed business systems. He has architected, mentored and managed very large-scale projects both in Europe and in the US. An active member of the OMG, he is the principal author of the book "Business Component Factory: Theory and Practice".


69 Building and Using Highly Re-useable and Configurable Frameworks
Martine Devos, EDS Electronic Data Systems
Michel Tilman, VUB Brussels Free University
Colorado Convention
Center - A109
 
Object-oriented frameworks aim to capture the commonalities and variabilities of particular classes of applications through techniques such as inheritance and re-usable components. Knowledge about the variations, the common theme and the problem domain is usually buried in the program structures. This makes frameworks often harder to understand, use and test when building and maintaining applications. When we turn this implicit knowledge into explicit specifications, the resulting frameworks often become more concise and elegant. The applications built using the frameworks are easier to change and understand by less experienced developers and even users.

We show that many of these reflective frameworks are less exotic and complex, and easier to develop than is commonly thought. We present examples from existing frameworks and extract concepts, architectural and organizational patterns, and methods that work. We present the advantages and caveats of building a highly-reflective commercial framework, how to bootstrap it, and how to use it.

Participants will gain a good understanding of:

  • principles, patterns and tools that help design and understand reflective frameworks,
  • an organization focused on reuse and double loop learning.

Attendee Background: Participants should be experienced in object-oriented design and development. The tutorial is targeted at software architects and technical leads.

Martine Devos recently joined EDS as a reuse consultant. Before this she was IS-manager at Argo where she initiated and coordinated the development of a framework and several applications using it. She has organized several workshops and panels at major OO conferences and is conference chair of EuroPlop 99.

Michel Tilman started his career at the VUB in the Mathematics Department. In 1985 he joined the Programming Technology Lab, teaching diverse entry-level and advanced courses. His research activities centered on object-oriented frameworks for CSCW applications and the practical use of reflection. As architect of the Argo project he applied these techniques in a commercial environment.


70 From Components to Java Beans
Fintan Culwin, South Bank University
Colorado Convention
Center - A111
 
The widgets in the Java AWT and JFC collections supply the fundamental components that are required for the construction of standard user interfaces. Many situations require more specialized user interface components to be developed. This tutorial will expose the processes involved in first developing a specialized component and then upgrading it to become JavaBeans compliant. This will be done within the context of designing for usability, and reusability, from the outset.

The objectives of this tutorial are:

  • to distinguish internal from external component event handling.
  • to illustrate internal event handling within the context of a simple specialized component.
  • to demonstrate designing for usability by means of STDs.
  • to describe a minimum set of component methods that should be considered when developing a specialized component.
  • to consider the stated requirements of a JavaBean.
  • to illustrate the stepwise refinement of a specialized component into a JavaBean and demonstrate it within a bean tool.

Attendee Background: An advanced tutorial intended for attendees who are already familiar with the use of the AWT or JFC widget set and who wish to learn how to develop specialized components for particular requirements within the context of the JavaBean specification.

Fintan Culwin is a Reader in Software Engineering Education at South Bank University: London specializing in Software Engineering and HCI, particularly in the integration of usability considerations in the earliest stages of production processes. He has published five books, including two on Java, and is currently completing a sixth on the JFC. He has published extensively on Internet issues and has presented sessions on the Web and Java at a series of international conferences.


71 Unleashing the Power of Distributed Enterprise Information Systems
Trygve Reenskaug, University of Oslo and Numerica Taskon AS
Lasse Bjerde, Numerica Taskon AS
Colorado Convention
Center - A106
 
The goal of this tutorial is to prepare the participant to meet the challenges of the era of distribution by giving a roadmap to the world of distribution.

Communication-centered architecture is the new form of architecture that has extended and replaced earlier architectures. It promises to handle unlimited size and complexity, higher level of reuse through components, and distributed ownership and control. It is surprisingly different and difficult, even though it starts from objects. The difficulties partly stem from specific technologies such as CORBA, RMI, EJB, and transaction monitors. But the main challenge is on a higher level; changing one's mindset from the self-contained application to the idea of collaborating objects working within a vast world of existing components. The tutorial will focus on the Why, the What and the How of communication-centered architectures.

Attendee Background: The intended audience is senior programmers, information architects and managers who are interested in information systems architecture and development strategy. Participants should know OO programming and understand basic WWW concepts. The examples will be taken from the world of Java, but we do not assume prior knowledge of the Java language, components or distribution technologies.

Trygve Reenskaug has 35 years experience in developing industrial strength software products combined with software engineering research. His firsts include structured programming and data base oriented architectures in the early sixties; object oriented applications and personal computer systems in the early seventies; experimental Model-View-Controller, the world's first reusable object-oriented framework, in 1979; and the premier book on role modeling in 1995. He is currently developing a method for the practical application of distribution technology.

Lasse Bjerde is R&D Manager at Numerica Taskon. He has 15 years experience in the object-oriented paradigm. He has teaching experience from several courses in the OOram method, UML and general OO. He has been part of the development team behind the OOram Method and Tools since the beginning of the nineties. He is currently heading several international projects dealing with distributed development.


72 Refactoring: Improving the Design of Existing Code
Martin Fowler, Independent Consultant
Colorado Convention
Center - A106
 
Almost every expert in Object-Oriented Development stresses the importance of iterative development. As you proceed with the iterative development, you need to add function to the existing code base. If you are really lucky that code base is structured just right to support the new function. Of course most of the time we are not lucky and often new function is just patched on top. Soon this patch upon patch approach causes the design to decay slowing down later progress and breeding bugs.

Refactoring is all about how you can avoid these problems by modifying your code in a controlled manner. Done well you can make far reaching changes to an existing system quickly, and without introducing new bugs. With refactoring as part of your development process you can keep your design clean, make it hard for bugs to breed and keeping your productivity high.

The main aim of this tutorial is to understand the basic principles and rhythm of refactoring. We'll also cover a dozen or so important refactorings and the "code smells" that lead you to refactoring.

Attendee Background: All the examples will use Java so you should have a working knowledge of Java.

Martin Fowler has spent over a decade to applying object technology to business information systems. He is an independent consultant who trains and mentors his clients in OO analysis, design and programming, patterns, and refactoring. He is the author of "UML Distilled" and "Analysis Patterns". His latest book,"Refactoring", is due to appear in mid 1999.


Thursday Afternoon/Half Day

73 Java Beans Specification, Design, and Test
Desmond D'Souza, Platinum Technology
Colorado Convention
Center - A103
 
Java Beans promise standard re-usable parts that can be easily composed. To be replaceable and scalable beyond UI parts, the behavior of a Bean should be described in a way which is abstract (permit many implementations) and precise (clear, unambiguous, a basis for qualification and test). This tutorial will describe an approach to the precise and systematic specification of a Java Bean, extended to its design, implementation, and test, based on the Catalysis approach to design and build components using UML.

Participants will learn (a) key differences between objects and components, (b) how to specify interfaces precisely, (c) how to model properties, methods, events, (d) the basis for testing Java Beans based on their specifications, (e) a systematic approach to modeling and designing with components.

Attendee Background: Attendees must be familiar with Java and Java Beans basics, and with UML and basic object modeling.

Desmond D'Souza is VP of component-based development at Platinum Technology, co-author and developer of the Catalysis method for systematic development of business-driven component systems, published by Addison Wesley. A frequently invited speaker to companies and conferences, and writes the Modeling for Java column in the Journal of Object-Oriented Programming. He may be contacted at dsouzad@acm.org .


74 Squeak as a Development Platform
Tansel Ersavas, RaSE Inc.
Colorado Convention
Center - A101
 
Squeak is a new implementation of Smalltalk-80 with a Virtual Machine written in Smalltalk. Squeak is quickly becoming a viable platform for developing systems as well as for teaching object-oriented programming. This tutorial will highlight the key features of Squeak such as the Morphic User Interface, Balloon resolution independent graphic system, networking abilities, Internet usage, and the integration of Squeak to object databases such as Gemstone. Examples will be provided.

Participants will familiarize themselves with Squeak and its environment and will feel comfortable in Squeak environment. They will be introduced to all highlights of Squeak such as Morphic, Balloon and Networking. They will observe advantages of using Squeak and learn what types of systems are good candidates for using Squeak

Attendee Background: Participants should have a general familiarity with the object-oriented paradigm. Familiarity with Smalltalk will be useful, but not required.

Tansel Ersavas is the President of RASE Inc. He holds a B.S. and an M.S. in computing and has worked in the field since 1979. He is a the designer and developer of the Snowball Rapid Systems Engineering Tool and the Fuzzy Object and Behavior Modeling technique.


75 Using UML in the Design of Software Architectures
Derek Coleman, Hewlett-Packard
Colorado Convention
Center - A108
 
The architecture of a system is an explicit high-level model which defines the structure and the behavior of a system. Software architectures afford flexibility in design and are therefore the key to the successful development of product families. Software architectures also form a shared model between stakeholders in the system. The essential value of an architecture is that a wide-variety of thought experiments about a system can be conducted by evaluating the impact of what-if scenarios on the architecture.

UML is the OMG standard for object-oriented modeling throughout the software lifecycle. UML is emerging as the de facto standard for the visual modeling of software.

The objectives include:

  • Provide an overview and perspective on UML.
  • Show how it can be used in the design and validation of architectures.
  • Discuss the implications of product family architectures.

The tutorial is based on the practical experience of using UML to design and document architectures in Hewlett-Packard and other companies.

Attendee Background: The tutorial is aimed at software engineers, project managers and software process engineers interested in UML and software architectures. Preferably participants should have some knowledge of object-oriented concepts and software engineering.

Derek Coleman leads the architectural consultancy group in Hewlett-Packards Product Generation Services. His current research interest is in all aspects of the development of software, firmware and product architectures. Derek is also a Visiting Professor at Kings College, London. Until he rejoined Hewlett-Packard in 1998, Derek was Head of Department of Computer Science at King's. Prior to this, Derek was a manager at HP Labs in Palo Alto and Bristol (England). At Bristol, Derek led the development of the original Fusion Method.


76 Using Metadata and Active Object-Models to Implement Fowler's Analysis Patterns
Joseph W. Yoder, The Refactory, Inc.
Federico Balaguer, The University Of Illinois
Colorado Convention
Center - A113
 
Fowler presents some Analysis Patterns that describe a dynamic model that can adapt smoothly to new requirements without necessarily needing the programmer to change the way that objects interact. Analysis Patterns are quite different than Design Patterns in that they describe recurrent problems in term of the elements or concepts that are present in a problem domain. Analysis Patterns will influence how the code is designed but does not directly deal with implementation details as is done is Design Patterns. To implement such dynamic systems, you are building an active object-model. Therefore, this tutorial will explain Active Object-Models and how to implement them. A system with an Active Object-Model has an explicit object model that it interprets at run-time. If you change the object model, the system changes its behavior. This tutorial describes how we extended and implemented Analysis Patterns in the medical domain. This work is based upon the results of our experience implementing the observation model for the Illinois Department of Public Health.

Attendee Background: Attendees should have an understanding of the GOF patterns and Fowler's Analysis Patterns. The intended audience is for those that are working on developing frameworks or visual languages or very dynamic systems.

Joseph W. Yoder has been studying and developing software since 1985. Since 1990 his focus has been on object-oriented technology. For the last few years Joe has been investigating "visual languages for business modeling" and "active object-models". Joe is also studying and writing design patterns for developing reusable software and domain specific languages. This has included how to evolve more reusable fine-grained components from frameworks and the study on how to manage or promote reuse through component libraries.

Federico Balaguer has been developing object-oriented software for over ten years. He is currently working on implementing Martin Fowler's Analysis Patterns at Illinois Department of Public Health and is also working with Professor Ralph Johnson on finishing his Ph.D.


77 An Introduction to Smalltalk for Developers and Managers
Kenneth Perry, Consultants, Salient Corporation
James DuWaldt, Consultants, Salient Corporation
Colorado Convention
Center - A107
 
After year 2000 developers and managers will find waiting for them (1) a raft of held-up requests and (2) management driven by competition to both accelerate development schedules and shrink their Y2K crisis-bloated IT budgets.

The Smalltalk language and environment meets the need for rapid and productive development with error rates one-half of other languages (according to studies of large systems by the Software Productivity Research Institute) because it is untyped, automatically handles memory allocation, and has a mature class library.

Platforms supported by various language vendors include Win98/NT, Macs, MVS, LINUX, and others.

We will introduce attendees to standard class hierarchies such as Collections and Streams, individual classes like Processes, Semaphores, and Gatekeepers, and environmental tools like the Debugger, Inspectors, and the Refactoring Browser in the context of a Distributed System with COM Automation. References to commercial and non-commercial products, a reading list, and the samples in the tutorial will be made available.

The objective of this tutorial is to jump-start an understanding of Smalltalk and its ability to solve attendees real-world problems.

Attendee Background: Assumes knowledge of and experience with Object Oriented concepts.

Kenneth (Ken) Perry wrote his first program in 1964 and developed his first commercial business application in 1965 and has been consulting in the development of primary support systems for large corporations for the last 20 years.

James (Jim) DuWaldt has worked on a wide range of systems, from trunk diagnostic software on central telephone switching office processors at Bell Laboratories to real time analysis displays with the first generation of Zoran DSP chips to accounting and banking software on PCs. Jim has been using the IBM and ObjectShare desktop flavors of Smalltalk since 1992 and enjoys their flexible environment and informative debugging tools.


78 Patterns for Small Machines:
Using Objects in Systems with Limited Memory
Charles Weir, Charles Weir Consulting Limited
James Noble, Microsoft Research Institute, Macquarie University
Colorado Convention
Center - A109
 
Typical object-oriented development techniques assume target systems have relatively large amounts of RAM available to the user. Developers working with tight memory requirements also need the flexibility and encapsulation which OO can provide, but cannot afford to produce systems with large memory requirements. This tutorial will describe how you can use OO techniques in a memory-constrained environment. Using an approach based on design patterns and practical examples, this tutorial will explore some of the most important techniques that successful designers use in object oriented systems for small memory machines.

This tutorial will help participants manage object oriented development in limited-memory environments. The tutorial will present specialized design patterns, including patterns for preparing and managing memory budgets, designing and allocating object structures, transparently exploiting auxiliary storage, and tailoring user interfaces for small machines. The patterns will be illustrated with case studies to provide experience for the participants in designing their own solutions.

Attendee Background: We expect this tutorial will be useful to software developers with a year's experience using an O-O programming language, technically experienced team leaders managing teams working on memory-limited systems, and experience of working with memory-limited systems will be helpful but not essential.

Charles Weir has more than fifteen years' experience with software development and object-oriented techniques. Charles was software architect for the Web Browser development for the Psion Series 5 palmtop computer. Charles has taught many courses on Object-Oriented design and Implementation, has led several active-learning sessions at the UK Object Technology series of conferences.

Dr. James Noble is a Research Fellow at the Microsoft Research Institute at Macquarie University, Sydney. He established the Sydney Patterns Group, the first patterns group in the Southern Hemisphere. James and Charles are collaborating on a book "Patterns for Small Machines" that describes patterns for memory-constrained systems, to be published by Addison-Wesley in 1999.


79 `Real' Thin Client Alternatives for
Object-Oriented Applications
Skyler Thomas, IBM VisualAge Solutions Group
Colorado Convention
Center - A104
 
As Object Oriented projects mature, more and more emphasis is placed upon building distributed systems. Currently, there exist a myriad of methods to accomplish this objective. This tutorial will examine a number of these alternatives and discuss the relative merits of each solution. Special attention will be given to scalability, ease-of-development, and business case. Topics will include: CORBA, COM/DCOM, EJB's, RMI, Object Databases, and Component Broker.

This tutorial is intended to prepare the participant

  1. to decide if an n-tier solution will be successful in their environment,
  2. to decide which alternative is most suitable to their needs, and
  3. to understand what products are necessary to implement their chosen solution.

Attendee Background: The tutorial is targeted at those individuals interested in thin-client object solutions. It is assumed that the audience has some familiarity with the basic concepts of object technology and has already begun to deploy the technology in their organization.

Skyler Thomas is a Senior Consultant with the IBM VisualAge Solutions Group and has been working with object technology for over seven years. Skyler has worked internationally with numerous corporations in the Banking, Insurance, Government, and Retail sectors and has authored several articles and technical reports.


80 Semantic Analysis Patterns
Eduardo B. Fernandez, Florida Atlantic University
Colorado Convention
Center - A106
 
The analysis stage is a crucial stage of object-oriented software development. Semantic analysis patterns have been proposed as a way to make this stage easier and more accurate. They can also be the basis of system components or entire frameworks. An analysis pattern is a set of classes and associations that describe a recurring conceptual structure; for example, inventory, billing, shipping. We discuss in detail some specific patterns and show how to develop patterns by analogy and abstraction. UML is used to describe the examples. Compared to Fowler's patterns, our patterns are intended to describe a significant portion of the semantics of an application, as opposed to improving the flexibility of the model.

Dr. Fernandez is a professor in the Department of Computer Science and Engineering of Florida Atlantic University, Boca Raton, FL. He has an MSEE degree from Purdue University and a Ph.D. in Computer Science from UCLA . He has written three books and is an active industry consultant and instructor. Recently, he developed an object-oriented inventory control system prototype for Motorola.


81 Customizing the OPEN Process -
Taking Advantage of a 3rd Generation OO Methodology
Richard Thomas, School of Computing Science - Queensland University of Technology
Colorado Convention
Center - A111
 
The increased complexity associated with large-scale systems requires an increase in the sophistication of the methodology used to manage their development. OPEN (Object-oriented Process, Environment and Notation) is a third generation methodology that focuses not only on model building but also on project management, quality, reuse, and full and customizable lifecycle support. The customizable nature of OPEN will be the focus of this tutorial. The Activities and Tasks that make up an OPEN lifecycle (software engineering process) will be described, emphasizing the pre- and post-conditions that are used to manage the customized lifecycle. During the tutorial participants will be given the opportunity to develop an initial high-level OPEN lifecycle for their own organizations.

Upon completing this tutorial participants will understand the benefits to be gained by developing a software engineering process that is customized for their organization. Participants will understand the contract-driven lifecycle of OPEN and how it is used to develop a customized software engineering process. Participants will know where they can go to find further information to help them in their application of OPEN.

Attendee Background: Participants need to be familiar with object oriented software development and the need for a full lifecycle process methodology.

Richard Thomas is a lecturer in software engineering in the School of Computing Science at the Queensland University of Technology (QUT). His current research interest is in developing a process to guide organizations adopting object technology. He is a member of the Centre for Object Technology Application and Research (COTAR), the premier object technology research center in Australia. Richard is also a director of Thomaco Consultancies, a technology consultancy that specializes in software engineering and object technology. He has practiced object technology for over a decade as a designer, implementer, researcher, lecturer and consultant.

Tutorials
at a Glance
Tracks
Full Description
of all Tutorials
Back To
Final Program

 OOPSLA'98 Home