Object-Oriented Software Engineering

Anton Eliëns

Vrije Universiteit, Amsterdam

CMG Course - 10 juni 1998


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


slide: CMG Course: Web Applications


Topics:


slide: Object-Oriented Software Engineering (abstract)

Introduction


If
OO
is the Answer,
What is
the Question?

slide: What is the Question?


Keywords and phrases

  • the OO lifecycle -- modeling
  • encapsulation, inheritance, delegation, polymorphism
  • specification and implementation inheritance
  • design by contract
  • interfaces, components and frameworks
  • idioms, patterns, software architecture

slide: 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 ...

slide: OO is ...


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


slide: Let's have a look ...

Managing O-O Projects


Did
YOU
ever
manage
a
project?

slide: Did you ever manage a project?


Critical Success Factors

  • use incremental scheduling and staging
  • find and fix failing ideas
  • develop a habit of delivering
  • Get: sponsor, project manager, technical leader

slide: Critical Success Factors


Key Failure Indicators

  • absence of incremental development
  • use of C++ in commercial IS

see Surviving Object-Oriented Projects: A managers Guide


slide: Key Failure Indicators


OO - Success and Failure

  • OO = technology + mind-set
  • it might be new technology to your organisation
  • developers love it!
  • requires and enables communication between groups
  • adopting OO may succeed or fail!

slide: OO - Success and Failure


Possible benefits - responsiveness

  • responsiveness - variations on a theme
  • responsiveness to change!
  • time-to-market
  • communication - developers, users, executives
  • maintenance, reuse, productivity
  • GUI development
  • morale -- cutting-edge technology

slide: Possible benefits - responsiveness


Drawbacks

  • Are YOU underestimating?
  • productivity takes time
  • hazards of C++ (and Java, ...)
  • reuse is difficult
  • establishing a software process
  • business-modeling or software design?
  • CASE helps?
  • You will pay for: training, experience, tools, consultants, ...

slide: Drawbacks


The hazards of C++?

  • C++ won the language war over Eiffel, Objective-C, SOM, C@+, and Java?
  • Java -- relative simplicity and portability

slide: The hazards of C++?


Managing (the complexity of) C++

  • misconception: C++ is like C
  • consider using another language
  • Why does C++ exist? - engineering and systems programming
  • create a subset of the language
  • design and coding standards
  • use people with knowledge!

slide: Managing (the complexity of) C++


Risk-reduction Strategies

  • look carefully all around the project
  • detect the risks!
  • list the risks in order
  • work on the risks in order of danger

see Risk Avoidance Patterns


slide: Risk-reduction Strategies

Case studies: Application Framework


Applications Frameworks


slide: Case studies: Application Frameworks

Technology and Trends


UML
Risks
Java
Frameworks
Contracts
CORBA
Patterns
DOT

slide: The Trends and Technology Matrix

UML


The Unified Modeling Language

  • use case diagram
  • class diagram
  • behavior diagrams:
    • statechart diagram
    • activity diagram
    • interaction diagrams:
      • sequence diagram
      • collaboration diagram
  • implementation diagrams:
    • component diagram
    • deployment diagram

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


slide: UML

UML - Quick Reference and Overview

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

slide: 1



slide: 2



slide: 3



slide: 4



slide: 5



slide: 6



slide: 7



slide: 8



slide: 9



slide: 10

Contracts


Design by Contract

  • formal basis -- pre and post conditions
  • refinement -- by inheritance or polymorphis
  • runtime checks -- division of responsibility
see Ch. 3, Contracts
slide: Design by Contract

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


slide: Frameworks = Components + Patterns


The benefits of frameworks stem from the inversion of control

A Framework defines an Architecture?


slide: The benefits ...


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

see patterns


slide: Software Architecture

Patterns


A Catalogue of Design patterns

  • a common design vocabulary
  • documentation and learning aid
  • an adjunct to existing methods
  • a target for redesign

see the GOF Design Patterns and the Patterns Homepage


slide: A Catalogue of Design patterns


The Pattern Schema

structure

Name - handle

  • increases design vocabulary

Problem - when to apply

  • explains the problem and the conflict

Solution - general arrangement

  • design, responsibilities, collaborations

Consequences - tradeoffs

  • to understand the costs and benefits

slide: The Pattern Schema


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

slide: Causes for Redesign


Kinds of Patterns

  • creational patterns -- factory, singleton, ...
  • structural patterns -- adaptor, composite, bridge, ...
  • behavioral patterns -- mediator, observer, command, ...

see also

see UML


slide: Kinds of Patterns

Java


If
Java
is the Answer,
What is
the Question?

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


slide: What is the Question?


The dream: UNCOL

  • Java is pervasive
  • remember, most of Java is just warmed-up C/C++

UNCOL = Universal Common Language

  • (1963) Algol -> PL/I -> Pascal -> Ada -> C++ -> ...
  • Java as UNCOL: the dial-tone of the Internet

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


slide: The dream: UNCOL


Hostages of legacy code

  • our responsibility is that future applications (built with Java) are well-behaved legacy systems
  • US DOD: 30 billion in year 2000 problem
  • maintaining legacy COBOL from the 70's is a major industry ...
  • by 2010, Java will be the maintenance tail wagging the software dog!

slide: Hostages of legacy code


Is Java doomed to repeat history?

  • elegant minimalism is one of the goals of Java,
    remember Pascal, a toy language!
  • Java lacks IO, OS support ...

slide: Is Java doomed to repeat history?


Java = watered-down C++, retrofitting Pascal

Problems

  • syntax: int i = ++i--;
  • unruly scope rules: C++ plus f i n a l, n a t i v e, s y n c h r o n i z e d, ...
  • threads: potential deadlocks

slide: Java = ...


Java: a better mousetrap?

  • requirements: no support (assert)
  • defacts: syntax, non-standard APIs
  • components: Beans ActiveX, CORBA, OpenDoc
  • cycle time: Java does little to accommodate Internet time, like script languages do
  • complexity: Java does not advance the intellectual frontier!

slide: Java: a better mousetrap?

CORBA


CORBA

  • the issue is standardization
  • by means of interfaces
  • looking for consensus
  • this differs from a de-facto standard
  • imposed by market share ...

See Ch 11: Application integration -- standards and

see frameworks


slide: CORBA

Risk Avoidance Patterns


Dimensions of Risks

  • Knowledge
  • Teaming
  • Productivity
  • Ownership
  • Distractions

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


slide: Dimensions of Risks


Risk Reduction Strategies


slide: Risk Reduction Strategies


    knowledge

  • clear the fog -- get to the real issues
  • early and regular delivery -- discover what you don't know
  • prototype! -- discover how it really works
  • create microcosm -- do something real, but with care

slide: Knowledge


teaming

  • holistic diversity -- coordinate specialists!

slide: Teaming


productivity

  • gold rush -- start immediatly, adjust slowly

slide: Productivity


ownership

  • function / component owners -- create responsibility

slide: Ownership


distraction

  • someone always makes progress -- no total interruption
  • team per task -- a subteam deals with diversions
  • sacrifice one person -- and preserve the team

slide: Distraction


training

  • day care -- hire an expert to take care of novices

slide: Training

Conclusions


OO offers

  • a valid metaphor for SE
  • powerful technology
  • maturing design methods and notations
  • a rich set of patterns

slide: Conclusions


Yet beware of

  • the learning curve
  • simplified hype
  • cutting edge technology
  • (over) ambitious projects

slide: Beware of

Assignments


Assignments: (nederlandse versie)

  • Write a paper about one of the following topics. The paper may discuss concepts or focus on a case study.
    • The Unified Modeling Language -- UML
    • Frameworks -- for example Sanfrancisco
  • Write a comparative study of object-oriented analysis and design methods, focussing on aspects of project management.
  • Describe a case study concerning the deployment of design patterns.

slide: Assignments

Course material


Course Material

Additional material

Resources

Papers and Reports


slide: Course Material