[BACK TO SEMINARS PAGE] [NEXT SEMINAR] [PREVIOUS SEMINAR] The Socrates Group

Object-Oriented Analysis and Design Workshop


WHAT ARE THE BASIC PRINCIPLES OF GOOD OO DESIGN?

This four-day workshop develops intuitive guidelines for designing efficient and maintainable object-oriented programs.

Object-oriented languages allow improved modularity and abstraction in programs. But to achieve these benefits, programs must be developed using object-oriented design concepts. Object-oriented design (OOD) is the heart of object-oriented programming.

This course shows exactly how good object-oriented design achieves its goals of intuitiveness, maintainability, and reuse. Knowledge of the technical features of good design is then used to develop guidelines for the designer. Available design methods are surveyed and three of them are studied in depth. Through comparison, we identify criteria that enable participants to choose a method best suited to their own work. This is done within a series of design exercises. The exercises are independent of programming language; the course is oriented toward C++.

At the end of the workshop, participants will be able to:

Who will benefit?

This workshop is for experienced programmers and software systems designers who want to fully exploit the potential benefits of object-oriented programming.

Call 1.800.756.9450 to schedule this course or request information about other Socrates Group seminars and workshops. The Socrates Group provides comprehensive instruction in all aspects of client/server computing.

Course Outline:

Overview — Modules and Objects

  1. Complexity, data, and modularity
  2. The "information module"
  3. Packaging the module
  4. Abstract data types
  5. Objects and simulation
  6. Program maintenance and variant objects
  7. Data hiding and extensibility
  8. Polymorphic functions
  9. The goals of object-oriented programming

Concepts of OOP

  1. Encapsulation and data hiding
  2. Classes as data types
  3. Strong and weak typing
  4. Overloading
  5. Static and dynamic binding
  6. Inheritance
  7. Polymorphism
  8. Genericity
  9. Dynamic memory management
  10. Initialization
  11. Interactive browsing environments
  12. Persistence

Design case study

  1. Simulation problems
  2. A functional design
  3. A naive "object based" design
  4. An object-oriented design
  5. Comparing the designs
    1. Anticipating change
    2. Effects of anticipated changes
    3. Metrics for modularity
    4. Code complexity
    5. Distribution of complexity
    6. Understanding the maintenance situation
  6. Relationship between maintainability and reuse
  7. Defensive analysis—planning for change and reuse

Additional design examples

  1. Collection classes
  2. Constraint propagation
  3. User interface frameworks (MVC and Microsoft's MFC)
  4. Undo problem

Frameworks

  1. Reuse of code vs reuse of design
  2. Frameworks as a design goal

Survey of OOD methods

  1. The creative evolution approach
    1. Goals and orientation
    2. Cunningham & Beck—CRC cards
    3. Wirfs—Brock, Wilkerson, and Wiener
    4. Grady Booch
  2. The data modeling approach
    1. Goals and orientation
    2. OMT (Rumbaugh, et al)
    3. Shlaer/Mellor
  3. The requirements based approach
    1. Goals and reasoning
    2. OBA
    3. OOSE

A responsibility-driven method

  1. Requirements model
  2. Actors and use cases
  3. Use case driven design
  4. Analysis model
  5. Robustness analysis
  6. Design model
  7. Interaction diagrams
  8. Implementation model
  9. Extension for database
  10. Extension for real-time systems
  11. Testing object-oriented systems

Major issues in comparing the methods

  1. Planning vs prototyping
  2. Object focus vs system focus
  3. Responsibility vs data driven
  4. Non-monotonicity of design reasoning
  5. Traceability vs maintainability

Object internals

  1. State analysis
  2. Object lifecycles
  3. The state/function matrix
  4. Implementing knowledge of other objects
  5. Designing the storage management

Designing components and libraries

  1. Library architecture
  2. Abstract vs concrete classes
  3. Framework design
  4. The inheritance interface
  5. Value vs object semantics
  6. Object context
  7. Context knowledge: design examples
  8. Layered designs
  9. Documenting a library

Metrics for design quality

  1. Why measure?
  2. Validity vs metric qualities
  3. Class complexity metric set
  4. Critique of complexity metrics
  5. Direct metrics
  6. Metrics examples
  7. Heuristics for design quality

Project planning and scheduling

  1. Metrics for estimation and scheduling
  2. Partitioning a project by use cases
  3. RAD and spiral model development cycles
  4. Scheduling of reviews

OOP in the business

  1. Making the business case for OO methods
  2. Planning the transition
  3. Workgroup organization
  4. Organizational maturity levels
  5. Pitfalls of the transition
  6. Planning the evaluation

[BACK TO SEMINARS PAGE] [NEXT SEMINAR] [PREVIOUS SEMINAR]

© Copyright 1995, The Socrates Group. All Rights Reserved.