Technology and Trends


UML
Risks
Java
Frameworks
Contracts
CORBA
Patterns
DOT

slide: The Trends and Technology Matrix

UML


The Unified Modeling Language


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 6: Component Technology 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