OOPSLA '97

October 5-9, 1997 - Atlanta, Georgia

Tutorials: Sunday Morning

 

 

(3) Responsibility-Driven Design

Rebecca Wirfs-Brock and Alan McKean, ParcPlace-Digitalk, Inc.

This tutorial presents a tour through the current state of the responsibility-driven analysis and design method . Responsibility-Driven Development was first described in the popular Designing Object-Oriented Software. Many of the stakeholders in our development efforts do not speak in our native object-oriented tongue. In our role of object developer we face two challenges: correctly interpreting stakeholders' concerns and requirements in our models, and presenting our work in terms they can understand. We describe a stylized process for describing our software from an external perspective and then evolving these descriptions into a working application. We have extended the standard use-case approach to enable developers to capture a more detailed description of the problem. Since control style, abstraction levels and collaboration patterns have significant impacts on the design, we focus on these aspects in our tutorial and discuss how best to distribute responsibilities among collaborating objects. Our process can be broken down into these phases: System Description, Exploratory Design, and Design Refinement.

This tutorial will overview our current analysis and design process, describe the activities and artifacts of each phase, present guidelines and examples to illustrate key decisions and work products, and conclude with a case study of the entire process for a distributed, web-based commercial application.

Background: Participants should be familiar with object analysis and design concepts and are looking for a practical analysis and design process that emphasizes modeling the behavioral aspects of a software system.

Rebecca Wirfs-Brock is Chief Methodologist and Director of the Object Development Center of Excellence at ParcPlace-Digitalk. Rebecca is responsible for defining and shaping the design and development practices and methods for ParcPlace-Digitalk consultants and their clients. In her work she teaches and actually develops systems using Responsibility-Driven Development techniques. She is a recognized author, teacher and speaker on object design and co-inventor of the Responsibility-Driven design method. Rebecca was the lead author of "Designing Object-Oriented Software", Prentice-Hall, 1990. She served as conference chair of OOPSLA'95 and has been a member of several OOPSLA committees. Currently, she is collaborating with Alan on an object design book that focuses on practical techniques and guidelines. Email address: rebecca@parcplace.com

Alan McKean is Object Methodologist at ParcPlace-Digitalk. He is responsible for developing analysis and design methods and documenting development best practices for ParcPlace-Digitalk consulting services and its clients. An experienced speaker and software developer, he has developed core curricula in object-oriented design, programming, and distributed object systems. Alan has presented tutorials with Rebecca Wirfs-Brock for the past two years and he is currently collaborating on an object design book.

Techniques to apply this method are presented in:

Other analysis and design methods are discussed in:

 

(4) An Introduction to Design Patterns

John Vlissides, IBM T.J. Watson Research Center

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.

This course is designed for software developers, including architects and programmers. Participants will acquire experience using design patterns to solve real problems. This experience will enhance participants' design abilities by teaching them how to apply design patterns to their own object-oriented systems.

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.

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 co-author of "Design Patterns: Elements of Reusable Object-Oriented Software", and he writes the "Pattern Hatching" column for the "C++ Report". John has a Ph.D. in Electrical Engineering from Stanford University.

A follow-up tutorial by the same author is:

Patterns are also discussed in:

(5) Catalysis: Framework and Component based Modeling (with UML and OMG compliant models)

Desmond F. D'Souza, Icon Computing, Inc.

Much of object-oriented design is about division of responsibilities and the specification of collaborations between objects, from the system/use-case level down to code. Frameworks are themselves compositions of partial collaborations, and using frameworks is greatly aided by a clear description of the underlying collaboration patterns.

Serious modeling and composition of components and frameworks in the UML is not trivial. We describe a set of modeling tools with precise notions of interface, type, class, collaboration, role, frameworks, and composition, from the UML-based Catalysis method, and use these to capture key aspects of design patterns and frameworks in a way which is both abstract and precise. Catalysis combines strengths in requirements analysis and specification with a serious treatment of "pattern" composition, refinement, and architectural design. Its principal concepts have been contributed to UML 1.0 and 1.1 for submission to the OMG. More detailed descriptions of these may be browsed at http://www.iconcomp.com/catalysis.

This is not just a UML tutorial, since Catalysis goes beyond UML in the compositional modeling techniques it advocates at model, specification, and design levels.

Background: Attendees should be familiar with object modeling and programming, design patterns as defined by Gamma et al, and use-cases. Those using or intending to use patterns with UML or Fusion, seeking clearly defined semantics of models, composition, and refinement, and those looking for design methods suited for newer languages like Java, will benefit. Familiarity with OOP language features vs. abstract system models is a plus.

Desmond D'Souza is the President and CTO of ICON Computing, Inc. and a member of the faculty at the Software Quality Institute at the University of Texas at Austin. Mr. D'Souza publishes and speaks regularly at various object forums, and has used object technology since 1985. He writes the "Modeling for Java" column in the "Journal of Object-Oriented Programming" and in the "Report on Object Analysis and Design". He may be contacted at dsouza@iconcomp.com.

Other UML related tutorials are:

 

(6) Concurrent Programming in Java: Language and Libraries

Doug Lea, State University of New York and David Holmes, Macquarie University

Java directly supports concurrent programming. The use of concurrency adds a new dimension of complexity to application development and introduces its own unique set of problems. This tutorial combines a low-level examination of the Java concurrency model with a higher level look at specific approaches in the concurrency control in the context of the Java language, Java Applets and GUI programming using the Abstract Windowing Toolkit. The focus of this tutorial is on building concurrent programs in Java.

Background: This tutorial targets anyone involved, or planning to get involved, in the development of concurrent Java applications or applets. This tutorial will give people a detailed working knowledge of Java's concurrency mechanisms as well as an overview of the little documented aspects of Applet and AWT threading models. Attendees should have a basic knowledge of the Java language and OO principles.

Doug Lea is a professor of Computer Science at the State University of New York at Oswego, and a director of the Software Engineering Laboratory at the New York CASE Center. He is author of the book "Concurrent Programming in Java", and co-author of the book "Object-Oriented System Development". He is the author of several widely used software packages, as well as articles and reports on object oriented software development.

David Holmes is a Ph.D. student with the Microsoft Research Institute at Macquarie University, Sydney, researching concurrent object-oriented programming in practical contexts. 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. He presented a tutorial on "Concurrency in Java" at the TOOLS Pacific '96 conference.

An appropriate follow up tutorial by the same authors is:

Other Java related tutorials are:

 

(7) A Survey of Object-Oriented Analysis and Design Technique

Martin Fowler, Consultant

Over the last ten years much has been written about the plethora of object-oriented analysis and design methods. This tutorial gives a guided tour through the highlights of these methods, pointing out the common techniques and some less known but valuable techniques.

Rational's Unified Modeling Language (UML) will be examined as well as other important techniques (such as CRC cards, design by contract, and patterns) that have proven useful.

The tutorial shows how different techniques highlight different aspects of a design and how a good design will use a mix of techniques to highlight the important areas of a particular project. This tutorial does not provide details on any of the techniques. Attendees will learn what OO analysis and design techniques are out there, when to use the different techniques, and where to go for more information. Please see http://ourworld.compuserve.com/homepages/Martin_Fowler for more details.

Background: Attendees should have an understanding of basic object-oriented principles. Knowledge of an object-oriented or structured analysis and design method is useful but not essential. The tutorial is aimed at analysts, designers, and programmers who are working on an object-oriented development project.

Martin Fowler is an independent consultant who has pioneered the use of object-oriented analysis and design for business information systems. These include health care for the UK National Health Service, derivatives trading for Citibank, and payroll for Chrysler. He is also a leader in developing analysis patterns and is the author of the books "Analysis Patterns: Reusable Object Models" and "UML Distilled".

Details of analysis and design methods and how they can be applied are presented in the following tutorials:

 

(8) Fundamentals of Object Database Management

Mary E.S. Loomis, Hewlett-Packard Laboratories

This tutorial focuses on practical information about using object DBMSs: how they fit into the broad spectrum of object technologies, why they are used, their functionality, their architectures and interfaces, and the pertinent standards. A thorough comparison of object DBMS and relational DBMS technology is provided, along with an introduction to hybrid object-relational systems. The tutorial is intended to prepare the participant (1) to determine whether an object DBMS is appropriate technology for his or her database needs, (2) to understand the technical trade-offs between relational and object DBMS technologies, and (3) to evaluate the commercially available object DBMS products.

Background: Familiarity with the basic concepts of object technology is a pre-requisite. Some experience with a relational DBMS (i.e., SQL) will be helpful, as will experience programming in C++ or Smalltalk.

Dr. Mary E.S. Loomis has over 25 years experience in software engineering and data management. She has been a professor, consultant, programmer and technical manager. She has experience with both engineering- and MIS-database management systems, has actively participated in the development of both DBMS products and database applications, and has successfully managed both research and product-development organizations. She has made substantial technical contributions to both the object database field and the field of object modeling.

Mary is currently Director of the Software Technology Lab of Hewlett-Packard Laboratories. She has previously held positions with Versant Object Technology, GE Calma and D. Appleton Company, and was a tenured professor at the University of Arizona. Dr. Loomis has authored dozens of articles in the research literature and trade press and five books: "Object Databases: The Essentials" (Addison-Wesley Publishing Company, 1995) Cattell, editor, "The Object Database Standard", ODMG-93, Releases 1, 1.1, and 1.2 (Morgan-Kaufmann Publishing Company, 1994, 1994 and 1996) -- coauthor. "The Database Book" (Macmillan Publishing Company, 1989), "Data Communications" (Prentice-Hall Publishing Company, 1984), "Data Management and File Processing" (Prentice-Hall Publishing Company, 1984)

She earned her Ph.D. in Computer Science from the University of California, Los Angeles, in 1975. She has served on numerous professional conference committees, including the following: general chair of OOPSLA'97, doctoral symposium chair of OOPSLA'96, technical program chair of OOPSLA'95, and founding member of the ODMG (Object Database Management Group). She is currently co-chair of the OMG's Analysis & Design Task Force.

An appropriate follow up tutorial is:

Other introductory tutorials are:

 

(9) Surviving Your OO Project

Alistair Cockburn, Humans and Technology

Enough OO projects have succeeded and failed that some patterns have emerged. This tutorial goes over some success and failure stories that shed light on the lessons to be learned, and then goes back to review, in sequence, steps that can be taken to reduce a project's risk. These start from reasons for selecting (or rejecting!) object technology in the first place, then selecting the project, the project's goals, the team, the education, and the tools. A second round of lessons covers typical issues that arise in the first, second and third increments of a system's delivery, and ways to tune the organization between increments. The third round raises the issue of trying to train large numbers of developers and questions of volume scaling. At the end, expectations, benefits and costs in the technology are reexamined in the light of the preceding discussion.

Background: This tutorial is for managers and team leaders considering carrying out either a first, or a later, larger project in object technology. No knowledge of OO is required beyond what a cursory brush with the technology would provide. Deep technical knowledge will not interfere with the course contents. The attendee is expected to have a decided interest in the decision factors that drive the project, the project team, and the organization's growth.

Alistair Cockburn spent 4 years interviewing and reviewing projects to determine success and failure criteria, and development methodology issues, for those using and those only considering object technology. He was the focal point for object-orientation for the IBM Consulting Group for 3 years, and author of its OO methodology, before founding Humans and Technology in Salt Lake City. The material for this tutorial are being collected for a book, "Surviving Your Object Oriented Project". He has published "The Impact of Object-Orientation on Application Development" in the "IBM Systems Journal" and "In Search of Methodology" in "Object Magazine", plus numerous technical articles on software development. He currently leads and advises large OO development efforts.

Other tutorials that address management issues are:

 

(10) Architecture for Distributed Business Object Systems

Fred Cummins, Steven Marney, and Waqar Sadiq, Electronic Data Systems

This tutorial focuses on the enterprise-wide integration of object-oriented systems operating across diverse computing environments and incorporating legacy systems. The speakers describe an architecture based on the Business Object Facility standards proposed to the Object Management Group (OMG) and the latest industry developments related to frameworks for developing and managing large-scale distributed object systems.

The tutorial provides insights into how existing CORBA services (naming, lifecycle, transaction, query, persistence, etc.) may be integrated in a Business Object Facility to address practical business requirements. It also describes boundary issues regarding how the Business Object Facility fits in with other OMG services (e.g., workflow management, meta object facilities) that are currently being proposed; and how the object model supports the development of common interoperable business objects.

Background: Participants must have a sound understanding of object-oriented concepts and issues related to distributed computing. Intended Audience: Systems architects and programmers interested in building enterprise- wide distributed object systems.

Fred Cummins has over 15 years experience with Object Technology and is a member of the Business Object Facility development team at EDS. He consults on distributed object technologies, is EDS's representative at OMG and is co-authoring a book on distributed objects architecture with Waqar Sadiq.

Waqar Sadiq has over 8 years architecting and developing large distributed systems. He is also a member of the Business Object Facility development team at EDS, and has been involved with teaching and mentoring application groups getting started in object-oriented analysis and design and distributed programming.

Steven Marney has over 9 years experience with Object Technology and is also a member of the Business Object Facility development team at EDS. He has architected and developed several distributed object systems with embedded intelligent components.

Related tutorials are:

 

(11) Introduction to CORBA

Thomas J. Mowbray, The MITRE Corporation and Raphael C. Malveau, EIdea Labs, Incorporated

The Object Management Group's (OMG) Common Object Request Broker Architecture (CORBA) specification has important implications for developers of object-oriented systems. CORBA extends the benefits of object-orientation across distributed heterogeneous environments, including multiple languages (including C++, Java, Smalltalk) and multiple operating systems. Additionally, the CORBA 2.0 specification standardizes interoperability between machines running different Object Request Brokers (ORBs).

This tutorial will provide participants with information about these technologies and their applications by experienced CORBA system designers and developers who have implemented distributed applications on a variety of CORBA products. Each segment of the tutorial focuses on key aspects of CORBA and distributed object standards, technologies and techniques, including CORBA services, CORBA facilities, and CORBA Design Patterns.

Background: The intended audience of this tutorial includes developers of object oriented applications and legacy migration systems in networked environments. The assumed background is a general knowledge of computer science and programming.

Dr. Thomas J. Mowbray is Principal Scientist at The MITRE Corporation, co-author of the book "The Essential CORBA", Architectures Columnist for "Object Magazine", former Chair of OMG CORBA facilities, and co-author of an upcoming book for Addison-Wesley called "INSIDE CORBA: Distributed Object Standards and Applications." He has experience designing and developing with multiple CORBA products in a variety of application domains: command and control, Internet, and financial.

Raphael C. Malveau is the Chief Scientist of EIdea Labs where he directs patterns-based software development and designs CORBA-based system architectures. Formerly, Mr. Malveau was lead programmer at Concept Five Technologies and co-author of the book "CORBA Design Patterns." Mr. Malveau has extensive experience in the design and programming of CORBA-based application and frameworks, including multiple ORB products.

These instructors co-presented this tutorial at OOPSLA '96. They also presented a CORBA tutorial with hands-on programming at the CORBA Academy based upon CORBA Design Patterns. In addition, Dr. Mowbray is an experienced presenter of CORBA tutorials, having conducted full-day tutorials at Object World 1995 and 1996, and versions of this half-day tutorial at OOPSLA '94, OOPSLA '95, and OOPSLA '96.

Other introductory tutorials are:

 

(12) Self-aware Software -- Patterns for designing reflective architectures

Peter Sommerlad, IFA Informatik

This tutorial examines and explains reflection from a practitioner's point of view. Reflection shows up in programs starting from built-in language features through simple tricks implemented by the developer to full-fledged multi meta-level architectures. Common to all these incarnations of reflection is that a program exploits and sometimes modifies information about itself at run-time.

The tutorial presents patterns that relate to building reflective systems on your own. Examples of such patterns are Type Object, Property List, Strategy, State, and Facet. Application of these patterns will be demonstrated using Java. Additionally, the tutorial will provide guidelines for when to use, or to avoid, certain reflective mechanisms.

Background: Attendees have a sound knowledge of object technology including the OMT notation, the concept of patterns, and an understanding of C++ or Java. Attendees should be interested in building flexible software systems.

Peter Sommerlad is the head of object technology at IFA Informatik, Zurich, Switzerland. Over the past seven years at Siemens Corporate R&D (Munich), he participated in several projects related to and using object technology and frameworks. He is one of the authors of the book "Pattern-oriented Software Architecture -- A System of Patterns" (Wiley and Sons, 1996). He uses his expertise in C++, object technology, and patterns to train and consult. His research interests are software architecture, patterns, and frameworks. He has presented results of his activities at various conferences, such as SSR '95, OOPSLA, OT '96, and OOP.

The following tutorial addresses related issues:

 

(13) How to Develop Frameworks

Ralph E. Johnson, University of Illinois

This tutorial describes a process for developing frameworks. The process is driven by examples, which are used both to design a new framework and to document it when it is finished. A framework is developed by generalizing and abstracting from examples. The tutorial shows how standard design transformations are used to generalize existing systems, making them more reusable and abstract. It discusses how to choose examples, how to manage the iteration that seems to be an inevitable part of framework development, and the importance of common design patterns that arise as a framework is being developed.

Developing a framework is expensive, but it is valuable. This tutorial will help you to estimate the costs involved in developing a framework. It will frankly discuss problems in paying for framework development, though unfortunately it does not offer any easy solutions.

Background: The attendee should have at least a year or two of experience using object-oriented technology and some experience using a framework.

Ralph Johnson has been studying object-oriented technology and teaching what he's learned for eleven years. He is a co-author (with Erich Gamma, Richard Helm, and John Vlissides) of "Design Patterns", develops and documents frameworks, and has been to every OOPSLA. For further information, see http://st-www.cs.uiuc.edu/users/johnson.

Topics related to frameworks can be found in:

 

(14) Interactive Programming in Java: A Non-Standard Introduction

Lynn Andrea Stein, Massachusetts Institute of Technology

This tutorial will provide an introduction to the Java programming language, with a novel approach to program construction and design. This tutorial differs from other Java introductions in its focus on the interactions inherent in modern software: with the user, with the network, with other programs, and among concurrent threads of control within a single Java program. This central topic will be taught by means of a sequence of simple Java programs. Language features will be introduced as they are used throughout the tutorial. Participants should expect to leave with an understanding of the Java language and of its suitability for this kind of programming. Advanced participants will not only benefit from but learn to teach using this new training approach.

The first part of the tutorial covers Java basics as they apply to computation-as-interaction. Attendees familiar with OOP or even with Java should find this segment informative in its approach to and use of Java, even if they are already familiar with the basic syntax.

The second part of the tutorial uses the Java and conceptual tools developed in the first part to explore a series of issues in concurrent, distributed, and interactive system design.

Background: Because this tutorial covers nonstandard introductory material, it is suitable for a wide range of experience levels. The tutorial is targeted at multiple audiences: (1) Those who wish to learn about Java and/or object-oriented languages should expect to learn the basic vocabulary of these technologies in the context of interactive embedded software. These attendees should bring to the tutorial a familiarity with computer programming and computer science at about the level of an undergraduate degree. (2) Those who teach or train others in object-oriented technologies may wish to take this tutorial to learn this rather radically different approach to object technologies and to Java training in particular.

Lynn Andrea Stein is an Associate Professor of Computer Science and a member of the Artificial Intelligence and Computer Science Laboratories at the Massachusetts Institute of Technology. Her research and scholarly publications span the fields of software agents, human-computer interaction and collaboration, object-oriented programming, cognitive robotics, and commonsense reasoning. She is a National Science Foundation Young Investigator, an Executive Councillor of the American Association for Artificial Intelligence, and a Science Scholar at the Mary Ingraham Bunting Institute of Radcliffe College. Her web page is http://www.ai.mit.edu/people/las.

Educators may also be interested in the following tutorial:

Those interested in Java related issues may want to consider the following tutorials:

 

(15) Exploring the Unified Modeling Language by Example

Charles Richter, Objective Engineering, Inc.

As the "unification" of the OMT and Booch notations, the Unified Modeling Language (UML) is emerging as the standard 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. This tutorial uses the design of a small problem to explore many of UML's more advanced features. Upon completion of this tutorial, attendees should have a deeper understanding of the UML and its application to real, everyday problems.

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 UML constructs.

Charles Richter has been involved in object-oriented development for about ten years, and has been teaching object-oriented methods for most of that time. He has considerable development and teaching experience with OMT, Booch, and more recently 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 methods. Mr. Richter has been following the development of UML since its inception and currently teaches a one-week course on UML 1.0.

Other UML related tutorials are:

Details of analysis and design methods and how they can be applied are presented in the following tutorials:

 

 

[ OOPSLA '97 Home Page | SIGPLAN | ACM ]