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:
- OO technology
- The OO life cycle
- Project Management
- Application Frameworks
- Current developments and trends
If |
| OO |
| | is the Answer, |
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
Characterizations
- OO = encapsulation + inheritance
- OO = data abstraction + polymorphism
- OO = interfaces + components
- OO = types + implementations
- OO = CORBA + Application Frameworks
- OO = Java + nothing else
- OO = a metaphor + hype
- OO = everything I can sell ...
Let's have a look at the
Introduction
from Principles of Object-Oriented Software Development
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
Key Failure Indicators
- absence of incremental development
- use of C++ in commercial IS
see
Surviving Object-Oriented Projects: A managers Guide
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!
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
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, ...
The hazards of C++?
- C++ won the language war over Eiffel, Objective-C, SOM, C@+, and Java?
- Java -- relative simplicity and portability
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!
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
Applications Frameworks
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
UML - Quick Reference and Overview
adapted from the Rational Rose Quick Reference at www.rational.com/uml/qr
Design by Contract
- formal basis -- pre and post conditions
- refinement -- by inheritance or polymorphis
- runtime checks -- division of responsibility
see Ch. 3, Contracts
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
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
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
Causes for Redesign
design for change
- creating an object by specifying a class explicitly
-- Abstract Factory, Factory Method, Prototype
- dependence on specific operations
Chain of Responsibilty, Command
- dependence on hardware & software platforms
-- Abstract Factory, bridge
- dependence on object implementation or representation
Abstract Factory, Bridge, Memento, Proxy
- algorithm dependence
-- Builder, Iterator, Strategy, Template Method,
Visitor
- extending functionality by subclassing
-- Bridge, Chain, Composite, Decorator, Observer
- tight coupling
-- Abstract Factpry, Bridge, Chain of Responsibilities,
Command, Facade, Mediator, Observer
- inability to alter classes conveniently
-- Adaptor, Decorator, Visitor
Kinds of Patterns
- creational patterns -- factory, singleton, ...
- structural patterns -- adaptor, composite, bridge, ...
- behavioral patterns -- mediator, observer, command, ...
see also
see UML
If |
| Java |
| | is the Answer, |
What is |
| | the Question? |
see Ted Lewis, IEEE Computer, March 1997, p. 136
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 ...
Hostages of legacy code
- our responsibility is that future applications (built with Java)
are well-behaved legacy systems
- US DOD:
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 ...
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
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!
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
Dimensions of Risks
- Knowledge
- Teaming
- Productivity
- Ownership
- Distractions
Don't discuss risks, unless you know how to
do Project Management
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
teaming
- holistic diversity -- coordinate specialists!
productivity
- gold rush -- start immediatly, adjust slowly
ownership
- function / component owners -- create responsibility
distraction
- someone always makes progress -- no total interruption
- team per task -- a subteam deals with diversions
- sacrifice one person -- and preserve the team
training
- day care -- hire an expert to take care of novices
OO offers
- a valid metaphor for SE
- powerful technology
- maturing design methods and notations
- a rich set of patterns
Yet beware of
- the learning curve
- simplified hype
- cutting edge technology
- (over) ambitious projects
- 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.
Course material
Course Material
Additional material
Resources
Papers and Reports