Object-Oriented Software Engineering

Anton Eliëns

Vrije Universiteit, Amsterdam

CMG Course - 10 juni 1998


www.cs.vu.nl/~eliens/online/courses/cmg/oo

Topics:

Introduction

If
OO
is the Answer,
What is
the Question?

Keywords and phrases

Characterizations

  1. OO = encapsulation + inheritance
  2. OO = data abstraction + polymorphism
  3. OO = interfaces + components
  4. OO = types + implementations
  5. OO = CORBA + Application Frameworks
  6. OO = Java + nothing else
  7. OO = a metaphor + hype
  8. OO = everything I can sell ...

Let's have a look at the Introduction from Principles of Object-Oriented Software Development

Managing O-O Projects

Did
YOU
ever
manage
a
project?

Critical Success Factors

Key Failure Indicators

see Surviving Object-Oriented Projects: A managers Guide

OO - Success and Failure

Possible benefits - responsiveness

Drawbacks

The hazards of C++?

Managing (the complexity of) C++

Risk-reduction Strategies

see Risk Avoidance Patterns

Case studies: Application Framework

Applications Frameworks

Technology and Trends

UML
Risks
Java
Frameworks
Contracts
CORBA
Patterns
DOT

UML

The Unified Modeling Language


For some background see: Ch. 11: Methods and Tools

UML - Quick Reference and Overview

adapted from the Rational Rose Quick Reference at www.rational.com/uml/qr

Contracts

Design by Contract

see Ch. 3, Contracts

Frameworks

Frameworks = Components + Patterns

Ralph Johnson, CACM Nov. 1997

Self-documentation Principle

Bertrand Meyer, OO Software Construction 2nd ed.

the designer of a module should strive to make all information about the module part of the module itself ...

The benefits of frameworks stem from the inversion of control

A Framework defines an Architecture?

Software Architecture = a set of rules, guidelines, interfaces, and conventions used to define how components and applications communicate and interoperate with eachother ...

see patterns

Patterns

A Catalogue of Design patterns

see the GOF Design Patterns and the Patterns Homepage

The Pattern Schema

structure

Name - handle

Problem - when to apply

Solution - general arrangement

Consequences - tradeoffs

Causes for Redesign

design for change

  1. creating an object by specifying a class explicitly -- Abstract Factory, Factory Method, Prototype
  2. dependence on specific operations Chain of Responsibilty, Command
  3. dependence on hardware & software platforms -- Abstract Factory, bridge
  4. dependence on object implementation or representation Abstract Factory, Bridge, Memento, Proxy
  5. algorithm dependence -- Builder, Iterator, Strategy, Template Method, Visitor
  6. extending functionality by subclassing -- Bridge, Chain, Composite, Decorator, Observer
  7. tight coupling -- Abstract Factpry, Bridge, Chain of Responsibilities, Command, Facade, Mediator, Observer
  8. inability to alter classes conveniently -- Adaptor, Decorator, Visitor

Kinds of Patterns

see also

see UML

Java

If
Java
is the Answer,
What is
the Question?

see Ted Lewis, IEEE Computer, March 1997, p. 136

The dream: UNCOL

UNCOL = Universal Common Language

if todays languages are inadequate for Software then Java must be inadequate too ...

Hostages of legacy code

Is Java doomed to repeat history?

Java = watered-down C++, retrofitting Pascal

Problems

Java: a better mousetrap?

CORBA

CORBA

See Ch 11: Application integration -- standards and

see frameworks

Risk Avoidance Patterns

Dimensions of Risks

Don't discuss risks, unless you know how to do Project Management

Risk Reduction Strategies

teaming

productivity

ownership

distraction

training

Conclusions

OO offers

Yet beware of

Assignments

Assignments: (nederlandse versie)

Course material

Course Material

Additional material

Resources

Papers and Reports