Distributed Object-Oriented Analysis and Design Workshop 
(5 days)


Our flagship course, the Distributed Object-Oriented Analysis and Design Workshop is a 5 day course that covers all aspects of analysis and design of distributed object systems. The course is presented in a workshop format; students spend about 40% of the actual course time developing a solution to an actual problem. This technique reinforces the concepts covered during the lecture portion of the course, and also permits in-depth examination, in the context of a real design, a number of issues that are not readily apparent from a lecture style presentation. Design issues are presented in an implementation-independent context, although some details are provided for selected inplementation environments (e.g., CORBA, Java, etc.). The course puts significant emphasis on behavior and collaboration of objects - something missing from a number of popular OO methodologies - as well as the techniques for building good, robust class hierarchies, utilizing proper inheritance.

While the course emphasizes distributed object systems, all of the concepts presented in this course are also applicable to non-distributed object systems as well.

This course is taught by Stephen McHenry. His background might be of interest to you. Check out some articles that he has written. Here are some other comments that might interest you. Also, if you don't think it matters who teaches your course, you might want to check out these former students had to say about him. We think it does matter. 

What you will Learn

Analysis Concepts

  • The meaning of important object-oriented concepts such as
    • abstraction
    • encapsulation
    • inheritance
    • polymorphism
    • overloading
    • persistence
  • The differences between 
    • objects and classes
    • links and associations
    • methods and messages
    • associations, aggregations and generalizations
  • How to utilize use cases in system development 
  • How to properly utilize aggregation to represent composite objects and what happens if you represent them improperly
  • What makes an “improper” class that should be eliminated. 
  • How to represent associations between classes 
  • How to recognize missingunecessary classesand/or associations 
  • To utilize dynamic modeling to represent time-dependent parts of your system 
  • How to recognize state dependent behavior 

Class Hierarchies

  • When to create a subclass or a superclass 
  • How to develop class hierarchies using generalization/specialization techniques 
  • Which uses of inheritance actually make the system take longer and cost more
  • How to avoid making your class hierarchies brittle because of improperly used inheritance
  • What an abstract class is and when to use it 
  • How to effectively use multiple inheritance
  • What interface inheritance is and how to use it properly
  • The difference between "interface" and "implementation"


  • Why examining the collaboration between objects is so important 
  • How to properly structure collaborations
  • The different types of collaboration patterns and why they are effective (or not)


  • The different types of architectures including:
    • client/server
    • 3-tier architecture
  • How to properly structure a distributed object system
  • How to breakdown monolithic servers
  • Which architectural choices will lead to major performance problems later
  • What proxies (stub) and adapters (skeletons) are
  • The semantics of call-by-reference vs. call-by-value


  • What the benefits are to using concurrency 
  • What hidden problems are “lurking” when concurrency is used improperly 
  • How to identify concurrency within objects and when synchronization is important
  • What the different messaging modes are
  • How to utilize threading properly
  • Strategies for partitioning and replication
  • Benefits and disavantages of multi-threading vs. replication
  • The difference between stateless and "stateful" servers
    • The definition of "stateless"
    • Stateful patterns of communication
    • Stateless patterns of communication
    • When stateless communication must be used
  • How to ensure object safety
  • How to ensure object liveness



  • What transactions are and how to use them properly
  • Impacts of transactions on 
    • architectural choices
    • concurrency
  • Extending transactional semantics to objects

Event Mechanisms

  • Active vs. Passive Objects
  • Polling vs. Event driven communication
  • When and how to use event mechanisms for notification 
  • How to build a distributed event mechanism
  • Utilizing event channels
  • When not to use events 
  • Why most first “object-oriented” projects fail and how to prevent this 
  • Ways to increase the performance of your distributed systems
  • Multicasting using events
  • Source-side vs. destination-side filtering of event channels


  • How to map an “object-oriented” system to a relational database management system (RDBMS) 
  • How to accommodate database transactions in your system 
  • What impacts caching of objects has on the system 
  • Where to cache each type of object 
  • How to map associations between objects into physical representations 
  • When to use delegation to share implementation 
  • How to adjust the object model during the design phase 
  • How to select appropriate object representations 



How to develop an object model by actually developing one - in class!


Course Outline

  • Introduction to Object-Oriented Methodology
  • Object-Oriented Concepts and Terminology
  • Problem Domain Analysis
    • Use Cases
    • Developing an Object Model
    • Class Hierarchies and Inheritance
    • Dynamic Modeling
    • Object Behavior and Collaboration
  • Design
    • Introduction to Object Design
    • System Architecture
    • J2EE Architectures
    • Concurrency
    • Transactions
    • Events Mechanisms
    • Persistence Managers
    • Mapping Objects to Database Tables
    • Boundary Conditions
    • Advanced OO Design
  • Problems You Might Encounter
  • Conclusions

Cost - $1895 per person


©1996-2003 by Trinadex Corporation. All rights reserved. Last updated7/15/03
Questions, comments, or problems regarding this service? Contact the webmaster.