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 Life cycle OOA – Object Oriented Analysis OOD – Object Oriented Design
Object-Oriented Software Engineering
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:
Object Oriented Development Object Oriented Model
Object orientation is the integration of procedural and data-driven approaches.
Structured languages
Database languages
Structured analysis and design
Data driven analysis and design
Advances in programming methodology
Object-oriented programming
Object Oriented Development
Increasing scale, complexity, diversity of systems
Advances in computer architecture
Advances in cognitive science
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 Interface CODE
Data structures 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 Roll DOG Bark Sit Roll
Dog 1 Dog2
Dog 3
Dog 4
DOBERMA N Kill
Object Oriented Development Concepts
Abstract class – multiple polymorphism
UNMEMBE R speak FRENCHMA N speak AMERICAN speak JAPANESE 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