Principles of Object-Oriented Software Development
[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

talk show tell print

overview


Object-Oriented Software Engineering

Anton Eliëns

Vrije Universiteit, Amsterdam

CMG Course - 10 juni 1998


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


slide: CMG Course: Web Applications


Topics:

  • OO technology
  • The OO life cycle
  • Project Management
  • Application Frameworks
  • Current developments and trends

slide: Object-Oriented Software Engineering (abstract)

Introduction


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

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

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


motivation
reactor
architecture
structural
creational
antipatterns
catalogue
intro
design
DOT


slide: The Pattern Matrix

Contracts


Design by Contract

  • formal basis -- pre and post conditions
  • refinement -- by inheritance or polymorphism
  • 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

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


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.

Course material

Course Material

Additional material

Resources

Papers and Reports



[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources
eliens@cs.vu.nl

draft version 0.1 (15/7/2001)