Principles of Object-Oriented Software Development

1


Additional keywords and phrases: object, data abstraction, analysis, design, implementation, distribution


slide: Introduction

subsections:


Themes and variations


slide: Themes and variations


Object terminology

object speak



slide: Object terminology


Features of OOP


slide: Features of OOP


OO = encapsulation + inheritance


benefits of OOP


slide: Benefits of OOP


the object model


message


encapsulation


protocol



slide: The object model


Computing devices

Object-oriented programming does not enlarge the class of computable problems, nor does it reduce the computational complexity of the problems we can handle.


slide: Computing devices


Encapsulation

ADT = state + behavior

Object-oriented modeling


slide: Abstract data types -- encapsulation


Responsibilities

Client

client/server model


Server


slide: Responsibilities in OOP


object = information + responsibilities

Contracts

Behavioral refinement


slide: Contracts and behavioral refinement


Conformance -- behavioral refinement

if B refines A then B may be used wherever A is allowed


slide: Behavioral refinement


attributes

  • more information

services

  • better services

contracts

  • more and better services

A better service

  • fewer restrictions for the client
  • more obligations for the server

slide: Improving services


Object-oriented modeling

OOP = Contracts + Refinements


slide: Object-oriented modeling

subsections:


Object-oriented programming

  • high tech synonym for good

Styles of programming

  • A language supports a style of programming if it provides facilities that make it convenient (easy, safe and efficient) to use that style

  • compile/runtime checks
  • clean interpretation/ orthogonal / efficient / minimal

slide: Styles of programming


Procedural programming

  • procedures, use the optimal algorithms

Modules

  • hide the data, provide functional abstractions

Data abstraction

  • types, provide a sufficiently complete set of operations

Object-oriented -- organize your types

  • make commonality explicit by using inheritance

slide: Paradigms of programming



  while ( programming == art )  {
  
  	incr( pleasure );
  	decr( bugs );
  	incr( portability );
  	incr( maintainability );
  	incr( quality );
  	incr( salary );
  
  } // live happily ever after
  

slide: Programming as an art


Support for data abstraction

Encapsulation


slide: Data abstraction


Support for OOP

Inheritance


slide: Support for OOP

subsections:


The software life-cycle

With an increase in the number of software products not satisfying user needs, prototyping has become quite popular!


slide: The software life-cycle


Requirements -- user needs are constantly evolving


slide: Requirements -- RAMP


Software development models


slide: Software development models


Object-Oriented Analysis

The problem domain -- complex reality
Communication -- with domain experts
Continual change -- user requirements
Reuse -- of analysis results


slide: Object-oriented analysis


%:@ Principles for managing complexity


Abstraction -- procedural / data
Encapsulation -- information hiding
Inheritance -- expression of commonality
Message passing -- consistent interface
Organization -- object / attributes
Scale -- components, frameworks
Behavior -- actors, servers, agents


slide: Managing complexity


Analysis methods


slide: Analysis methods


Object-Oriented Design

  • design for maintenance and reuse!

Software quality

  • correctness, robustness, extensibility, compatibility

Design projects


slide: Object-oriented design


  Requirements change --  41.8% 
  Data format change --  17.4% 
  Emergency fixes --  12.4% 
  Routine debugging --  9% 
  Hardware changes --  6.2%
  Documentation --  5.5% 
  Efficiency improvements -- 4%
  

slide: Software quality


IDA

An Interior Design Assistant (IDA) is a tool to support an interior design architect. When designing the interior of a house or building, the architect proceeds from the spatial layout and a list of furniture items. IDA must allow for placing furniture in a room. It will check for constraints. For example placing a chair upon a table will be prohibited. For each design, IDA must be able to give information with respect to pricing and the time it takes to have the furniture items delivered. In addition to the design facilities, IDA must also offer a showroom mode, in which the various designs can be inspected and compared with respect to price and delivery time.


slide: IDA


MASS

An Agenda Support System assists the user in maintaining a record of important events, dates and appointments. It moreover offers the user various ways of inspecting his or her agenda, by giving an overview of important dates, an indication of important dates on a calendar, and (more advanced) timely notification.

A Multi-user Agenda Support System extends a simple Agenda Support System by providing facilities for scheduling a meeting, taking into account various constraints imposed by the agendas of the participants, as for example a special event for which a participant already has an entry in his or her agenda. A minimal Multi-user Agenda Support System must provide facilities for registering important dates for an arbitrary number of users. It must, moreover, be able to give an overview of important dates for any individual user, and it must be possible to schedule a meeting between an arbitrary subset of users that satisfies the time-constraints for each individual in that particular group.

This minimal specification may be extended with input facilities, gadgets for presenting overviews and the possibility of adding additional constraints. Nevertheless, as a piece of advice, when developing a Multi-user Agenda Support System, follow the KISS principle: Keep It Simple ...


slide: MASS


Errors, bugs

TeX



slide: TeX errors and bugs


Smalltalk -- a radical change in programming

Eiffel -- a language with assertions

C++ -- is much more than a better C

Java -- the dial-tone of the Internet

DLP -- introduces logic into object orientation


slide: Object-oriented languages


Trends -- modeling

  • patterns -- examples of design
  • UML -- Unified Modeling Language

Technologies -- components

  • Web -- global infrastructure
  • CORBA/DCOM - the software bus
  • Java -- the platform?

Challenges

  • Applications -> Frameworks <- Patterns

slide: Trends and technologies


Challenges in O-O


slide: Challenges


Themes and variations

1



slide: Section 1.1: Themes and variations


Paradigms of programming

2



slide: Section 1.2: Paradigms of programming


The object-oriented software life-cycle

3



slide: Section 1.3: The object-oriented software life-cycle


Beyond object orientation?

4



slide: Section 1.4: Trends and technologies

  1. How would you characterize OOP and what, in your opinion, is the motivation underlying the introduction of OOP?
  2. Characterize the most important features of OOP.
  3. Explain the meaning of the phrase `object orientation reduces the complexity of programming.'
  4. How would you characterize contracts? Why are contracts important?
  5. How is OOP related to programming languages?
  6. What classes of languages support OOP features? Explain.
  7. What influence is an object-oriented approach said to have on the software life-cycle? What is your own opinion? Discuss the problem of maintenance.
  8. How would you characterize software quality?
  9. Mention a number of object-oriented programming languages, and give a brief characterization.
  10. What do you see as the major challenges for research in object orientation?

Nowadays there are many books that may serve as a starting point for reading about OO. Dependent on your interest, you may look at  [Surviving], which treats issues of OO project management,  [Meyer97], which gives an extensive introduction to design by contract and programming in Eiffel, or  [Fowler97], which gives a succinct introduction to UML. Alternatively, you may take one of the introductory programming books for Java, from which you will almost certainly learn something about OO as well.