Object-Oriented
Development
By Linda M. Northrop
Software Engineering Institute
SE682 Paper presentation
Student: Julian Hirjoi
Object-Oriented Development
Historical Perspective
Motivation
Object-Oriented Model
Object-Oriented Programming
Concepts
Languages
Object-Oriented Software Engineering
Life cycle
OOA – Object Oriented Analysis
OOD – Object Oriented Design
Issues
Future ???
Questions
Object-Oriented Development
Historical Perspective
Concepts like “objects” and “attributes of concepts” actually date back to
the early 1950s – in early works in Artificial Intelligence (Berard, 1993)
Real legacy of object oriented movement began 1966 – Kristen Nygaard
and Ole-Johan Dahl created SIMULA, first language to provide
encapsulation at a more abstract level than subprograms; data abstraction
and classes were introduced to simulate a problem.
1970s – Smalltalk – first true object oriented language
LOGO
LISP
1986 - Objective-C, C++, Self, Eiffel, Flavors
1990s – ongoing investigation of object oriented domain analysis, testing,
metrics and management
Object Oriented Development
Motivation
? Possible “SILVER BULLET”
Greater productivity, reliability, maintainability and manageability
Object oriented development adds emphasis on direct mapping of concepts in the
problem domain to software units and their interfaces
Vision of the world as objects – more natural, since is closer to the way humans
think
Objects more stable than functions – software change usually is change in
required functionality, not change in the players (objects)
OOD supports concurrency, hierarchy, and complexity present in many of today’s
software systems, also tends to reduce the risk of developing complex systems,
system integration being diffused throughout the life cycle
Object Oriented Development
Object Oriented Model
Systems are viewed as cooperating objects that
encapsulate structure and behavior and which belong to
classes that are hierarchically constructed
Is a conceptual framework with the following elements:
Abstraction
Encapsulation
Modularity
Hierarchy
Typing
Concurrence
Persistence
Reusability
Extensibility
Object Oriented Development
Object Oriented Model
Object orientation is the integration of procedural and data-driven approaches.
Structured languages Database languages
Structured analysis Data driven analysis Advances in programming
and design and design methodology
Object-oriented
programming
Object Oriented Development
Increasing scale, Advances in Advances in
complexity, diversity computer cognitive science
of systems architecture
Object Oriented Development
Object Oriented Model
Abstraction progression:
ADDRESS – machine languages
NAME - assembly languages
EXPRESSION – first generation languages (FORTRAN)
CONTROL - second generation languages (COBOL)
PROCEDURE AND FUNCTION – second and early third generation
languages – PASCAL
MODULES AND DATA – late third generation languages – Modula2
OBJECTS - object-based and object-oriented languages
Object Oriented Development
Object Oriented Model
OOD has proven successful in many applications including, but not limited to:
Air traffic control,
Banking
Business data processing
Command and control systems
Computer-aided design (CAD)
Computer integrated manufacturing
Databases
Document preparation
Expert systems
Hypermedia
Image recognition
Mathematical analysis
Robotics
Space station software ....
Object Oriented Development
Concepts
OO languages are characterized by:
Object creation facility
Message passing capability
Class capability
Inheritance
Procedural Model Object-Oriented Model
Arguments
IN Data
structures
Interface
CODE Operation
s
Results
OUT
Object Oriented Development
Concepts
Objects = entity that encapsulates state and behavior
State = information needed to be stored in order to carry
out the behavior
Object’s interface (protocol) = set of messages to which
the object will respond
DOG
Bark Sit
DOG Roll
Bark Sit
Roll
Dog Dog Dog DOBERMA
1 3 4 N
Dog2 Kill
Object Oriented Development
Concepts
Abstract class – multiple polymorphism
UNMEMBE
R
speak
JAPANESE
FRENCHMA speak
N
speak
AMERICAN
speak ENGLISHMAN
speak
Object Oriented Development
Languages
Object oriented languages – 4 big branches, all starting in some
way from Simula, their common ancestor
1. Smalltalk based, ex. Smalltalk-80
2. C-based, ex. Objective C, C++, Java
3. LISP-based, ex. Flavors, XLISP, LOOPS
4. Pascal-based, ex. Object Pascal, Turbo Pascal, Eiffel, Ada 95
Also, there are object based languages, difference between
Object Oriented languages and Object Based being the lack of
inheritance capability
Object Oriented Software Engineering
Life cycle
Most known – regular waterfall/structured life cycle, sequential process,
activities: Analysis -> Specification -> Design -> Implementation -> Testing ->
System Integration -> Maintenance
Deficiencies: - assumption that all requirements are known at the beginning;
cannot accommodate real iterations,
also places no emphasis on reuse and
has no unified model to integrate the phases
OO approach – begins with a model of the problem and proceeds with
continuous object identification and elaboration.
Inherently iterative and incremental
Called Water Fountain Life Cycle, follows the same activities but at any time the
process may go back to a previous phase:
Evolution: Analysis <-> Design <-> Code <-> Test <-> Integrate
Object Oriented Analysis and Design
OOA – method of analysis that examines
requirements from the perspective of the classes and
objects found in the vocabulary of the problem domain
Concepts used :
Scenarios – sequence of actions that takes place in the
problem domain
Framework – skeleton of an application
Drawback of all OOA – universal lack of formality
Object Oriented Analysis and Design
Design pattern – recurring design structure or solution that when
cataloged in a systematic way can be reused and can form the
basis of design communication
Some of OOA and OOD techniques:
Class diagrams, class category diagrams, class templates and object
diagrams (Booch, 1991) used to record design
Class responsibility cards (CRC) – record class functionality and
collaborators (WirfsBrock, 1990)
Object Model – static structure of the objects in a system => Object
diagram
Dynamic Model – aspects of a system that change over time => State
diagram
Functional Model – data value transformation within a system => Data
Flow diagram
Multilayer (steps – ex. class, object layer) and multicomponent (problem
domain, task management, human interaction, …) techniques
Use cases – basis for analysis model (Objectory)
Management issues
New milestones have to be established
Measurement approaches (metrics) have to change for OO approach
Coupling between objects
Class to class relations
Number of classes
Class size
Inheritance depth
Number of classes reused
Resource allocation – smaller teams recommended
Quality Assurance
Tool Support – OOD environment needed along with the other
components (incremental compiler, class debugger, browser for class
libraries)
Estimates and risk issues
Cost of current and future reuse
Acquisition of appropriate tools,…
Object oriented development - FUTURE
OOD - Still in development, has not yet reached
maturity, the full potential of objects has not been
realized
Object orientation may eventually be replaced or
absorbed into an approach that deals with a higher
level of abstraction
Reference: Object Oriented Development, by Linda M. Northrop, Software Engineering
Institute, IEEE Computer Society Press, Calif. 1997
Object Oriented Development
Questions ???