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 1970’s The Object and object attribute idea first conceived in the 1950’s 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 1970’s Led other languages to support object-oriented programming Smalltalk is considered the first truly object-oriented language 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 LISP-based Objective-C, C++, Java Flavors, XLISP, LOOPS, CLOS PASCAL-based Object Pascal, Turbo Pascal, Eiffel, Ada 95 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, it’s 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!