Beruflich Dokumente
Kultur Dokumente
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
Motivation
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
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
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
Languages
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
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
The Future
Conclusion
Questions? Comments?