Вы находитесь на странице: 1из 27

Object-Oriented Development

By Linda M. Northrop vol. 1, chapter 5, pp. 291-300 Presented by: Gleyner Garden EEL6883 Software Engineering II

Introduction

The paper was written in 1994 and provides an overview of object-oriented methodologies Describes the history of object-oriented methods, models of object-oriented design, and concepts of object-oriented programming

Most of you probably already knew most of this stuff as you were reading but when this paper was written, a lot of these ideas were new to a lot of people

Historical Perspective

Was initially thought of as a research curiosity Object-oriented programming is today what structured programming was in the 1970s The Object and object attribute idea first conceived in the 1950s for A.I. The real movement began in 1966 with the introduction of the Simula language

Historical Perspective

Palo Alto Research Center (PARC) developed Smalltalk in the early 1970s

Smalltalk is considered the first truly object-oriented language

Led other languages to support object-oriented programming

examples: Objective-C, C++, Self, Eiffel, and Flavors

1980 Booch pioneered the concept of objectoriented design (OOD)

Motivation

Benefits are Greater:


Productivity Reliability Maintainability Manageability

Motivation

Direct mapping of concepts in the problem domain to software units and their interfaces Viewing the world as objects is more natural since it is closer to the way humans think Objects are more stable than functions Supports information hiding, data abstraction, and encapsulation

Motivation

Easily modified, extended, and maintained

if your product was designed correctly

Object-Oriented Model

A new way of thinking about what it means to compute and how information can be structured Systems are viewed as cooperating objects that encapsulate structure and behavior in a hierarchical construction Functionality achieved by messages passing between objects

Object-Oriented Model

Object-oriented model can be viewed as the framework containing:


Abstraction Encapsulation Modularity Hierarchy Typing Concurrence Persistence Reusability Extensibility

Object-Oriented Model

The integration of procedural and datadriven approaches

Object Oriented Programming

Concepts:
Programs are organized into cooperating collections of objects Object: entity that encapsulates state and behavior. An instance of a class Interface or protocol: set of messages to which it will respond Response can be a message or routine, or delegation of the message to another object

Object Oriented Programming

Languages

4 Branches of object-oriented languages, with Simula being the common ancestor:


Smalltalk-based C-based

Objective-C, C++, Java Flavors, XLISP, LOOPS, CLOS Object Pascal, Turbo Pascal, Eiffel, Ada 95

LISP-based

PASCAL-based

Languages

Object-based languages:
Alphard: CLU Euclid Gypsy Mesa Ada

Want to learn more about these languages (history, where their names came from, etc)? click here:

Life Cycle

If it is accepted that object-oriented is more than object-oriented coding, then a whole new approach, including life cycle, must be adopted (Booch, 1994)

Life Cycle

Waterfall consists of a sequential process, primarily in one direction Does not accommodate real iteration Criticized for placing no emphasis on reuse and having no unifying model to integrate the phases

Life Cycle

Water fountain life cycle describes the inherent iterative and incremental qualities of object-oriented development Prototyping and feedback loops are standard

Object-Oriented Analysis

Examines requirements from the perspective of the classes and objects found in the vocabulary of the problem domain Yields black-box objects that are derived from the problem domain Scenarios can be used to determine necessary object behavior

Analysis example

Problem: Drawing shapes Scenarios:


Draw a point Draw a line Draw a circle Draw a square Draw a rectangle Draw a polygon

Object-Oriented Design

Object focus shifts to the solution domain Objects, their semantics, and relationships are identified Implementation and iteration occur Jacobsen says when details of the implementation begin to show, its OOD In my practice: OOA is preliminary design, and OOD is detailed design

Management Issues

Object-oriented development requires a commitment to change processes, resources, and organizational structure. LOC measurements are less valuable, # of classes reused, inheritance depth, number of class-to-class relationships, object coupling, total # of classes, and class sizes are more valuable and meaningful

Management Issues

Booch suggests smaller development teams, and cultivation of reuse experts Reward reuse, not LOC: build libraries and application frameworks QA: review and testing activities still essential, but timing and definition are different Tools: everything described exists in visual studio

Object-Oriented Transition

Levels of absorption before assimilation into a software development organization occurs Training is essential Pilot projects are recommended Combining structured and object-oriented approached not recommended

Object-Oriented Transition

Total object-oriented approach recommended for the following reasons:


Traceability improvement Reduction in significant integration problems Improved conceptual integrity of process and product Less need for objectification and deobjectification Maximization of the benefits of object-orientation

The Future

The future is now object-oriented development is pretty standard


Class libraries and application frameworks (exist) Transparent information access across applications and environments (exists) Movement will gain popularity (did)

Conclusion

This paper was pretty cutting-edge when it was first published

Questions? Comments?

Feel free to speak up!