Principles of ObjectOriented Software Development

Introduction

Introduction
Introduction Themes and variations Paradigms of programming The object-oriented software life-cycle Trends and technologies Summary Q/A Literature

Themes and Variations
Subsections: Object Terminology Object Computation Design by Contract

Themes and Variations
‡ ‡ ‡ ‡ ‡ abstraction -- the object metaphor modeling -- understanding structure and behavior software architecture -- mastering complexity frameworks -- patterns for problem solving components -- scalable software

Object Terminology ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ objects -.allowing the reuse of class spec.an object that belongs to a class encapsulation -.template for creating objects instance -.request to execute a method class -.deliver service message -.to hide different implementations .packet containing data and procedures methods -.tree structure inheritance relations polymorphism -.information hiding by objects inheritance -.s class hierarchy -.

virtual functions ‡ inheritance: incremental changes (specialization). polymorphism . autonomous behavior ‡ data abstraction: emphasis on what rather than how ‡ dynamic binding: binding at runtime.Features of OOP ‡ information hiding: state. reusability .

object-oriented analysis/design.the internal workings of an object can be redefined without changing other parts of the system ‡ reusability -.refining classes through inheritance ‡ naturalness -.autonomous entities. cooperation through exchanges of messages ‡ deferred commitment -. modeling .Benefits of OOP ‡ OO = encapsulation + inheritance ‡ modularity -.

Object Computation The object model computation is sending messages between objects Message object method arguments .

Turing machine universal machine -.time/space bounded Object-oriented programming does not enlarge the class of computable problems. nor does it reduce the computational complexity of the problems we can handle.Computing Devices mathematical model -. .machines as programs computability & complexity -.

Design by Contract Abstract Data Types ADT = state + behavior Object-Oriented Modeling data oriented .

Responsibilities to specify behavior Client makes request to perform a service Server provides service upon request what rather than how client/server model .

object = information + responsibilities Contracts a set of services Behavioral refinement improving contracts .

Conformance -- behavioral refinement if B refines A then B may be used wherever A is allowed .

Attributes more information Services better services Contracts more and better services A better service fewer restrictions for the client more obligations for the server refine .

Object-Oriented Modeling prototyping. specification. refinement. interactions OOP = Contracts + Refinements .

Paradigms of programming Subsections: Procedural programming Data abstraction Object-oriented programming .

safe and efficient) to use that style compile/runtime checks clean interpretation/ orthogonal / efficient / minimal .Object-Oriented Programming high tech synonym for good Styles of programming A language supports a style of programming if it provides facilities that make it convenient (easy.

use the optimal algorithms Modules hide the data.Paradigms of Programming Procedural programming procedures. provide a sufficientlycomplete set of operations Object-oriented programming -. provide functional abstractions Data abstraction types.organize your types make commonality explicit by using inheritance .

incr( maintainability ). } // live happily ever after . decr( bugs ). incr( salary ). incr( quality ).Procedural programming while ( programming == art ) { incr( pleasure ). incr( portability ).

encapsulation Encapsulation initialization protection coercions .Data abstraction Support for data abstraction Abstract Data Types -.

inheritance Inheritance dynamic binding protection multiple inheritance .Object-oriented programming Support for OOP Polymorphism -.

The object-oriented software life-cycle Subsections: Analysis Design Implementation .

System Design. Testing With an increase in the number of software products not satisfying user needs.The software life-cycle ‡ Analysis -. System Requirements ‡ Design -.Coding.Conceptual Model. prototyping has become quite popular! . Detailed Design ‡ Implementation -.

incremental development.Requirements -.incremental development. synthesis Performance -.incremental development.evolutionary prototyping Maintainability -. synthesis Adaptability -. reuse. reuse .user needs are constantly evolving ‡ ‡ ‡ ‡ Reliability -.

slowly evolving evolutionary prototyping -.Software Development Models ‡ ‡ ‡ ‡ ‡ rapid throwaway prototyping -.evolving requirements reusable software -.one level of abstraction higher .reduces cost and time automated software synthesis -.quick and dirty incremental development -.

with domain experts Continual change -.complex reality Communication -.Analysis Object Oriented Analysis analysis = extracting the needs The problem domain -.of analysis results .user requirements Reuse -.

Analysis Methods ‡ ‡ ‡ ‡ Functional Decomposition = Functions + Interfaces Data Flow Approach = Data Flow + Bubbles Information Modeling = Entities + Attributes + Relationships Object-Oriented = Objects + Inheritance + Message passing .

Multi-user Agenda Support System .Design Object-Oriented Design design for maintenance and reuse! Software quality correctness. extensibility. robustness.Interior Design Assistant MASS -. compatibility Design Projects IDA -.

Design assignments .

the architect proceeds from the spatial layout and a list of furniture items. IDA must also offer a showroom mode. IDA must be able to give information with respect to pricing and the time it takes to have the furniture items delivered. It will check for constraints. IDA must allow for placing placing furniture in a room. For each design. In addition to the design facilities. When designing the interior of a house or building. For example placing a chair upon a table will be prohibited.IDA An Interior Design Assistant (IDA) is a tool to support an interior design architect. in which the various designs can be inspected and compared with respect to price and delivery time. .

It moreover offers the user various ways of inspecting his or her agenda. .MASS An Agenda Support System assists the user in maintaining a record of important events. an indication of important dates on a calendar. . dates and appointments. by giving an overview of important dates... and (more advanced) timely notification.

It must. taking into account various constraints imposed by the agendas of the participants.. as for example a special event for which a participant already has an entry in his or her agenda.A Multi-user Agenda Support System extends a simple Agenda Support System by providing facilities for scheduling a meeting. Nevertheless. A minimal Multi-user Agenda Support System must provide facilities for registering important dates for an arbitrary number of users. be able to give an overview of important dates for any individual user. when developing a Multi-user Agenda Support System. and it must be possible to schedule a meeting between an arbitrary subset of users that satisfies the time-constraints for each individual in that particular group. This minimal specification may be extended with input facilities. .. moreover. gadgets for presenting overviews and the possibility of adding additional constraints. follow the KISS principle: Keep It Simple . as an advice.

Implementation .

Errors.structure debacle [F] -.forgotten function [L] -. bugs ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ [A] -.reinforcement of robustness [S] -.language liability [M] -.mismatch between modules [R] -.blunder [C] -.a trivial typo TeX .surprises [T] -.algorithm awry [B] -.

the dial-tone of the Internet security DLP -.a language with assertions correctness C++ -.Smalltalk -.a radical change in programming languages rapid prototyping Eiffel -.is much more than a better C the benefits of efficiency Java -.introduces logic into object orientation development of knowledge-based systems .

Beyond Object-Orientation? .

examples of design UML -.the software bus Java -.Trends -.the platform? Challenges Applications -> Frameworks <.Patterns .components Web -.modeling patterns -.Unified Modeling Language Technologies -.global infrastructure CORBA/DCOM .

insurance separation of 'logic' from 'control' -.Challenges in O-O ‡ ‡ ‡ ‡ ‡ ‡ vertical framework development -.structure and processes knowledge intensive applications -.finance. medical care.fragmented applications .declarative heterogeneous systems .heterogeneous systems visualisation -.business rules distributed object technology -.

Summary .

message passing ‡ contracts -.1 Themes and Variations ‡ terminology -.for constructing and validating software .all phrases ‡ object computation -.

and its possible realizations ‡ polymorphism -.and the features of inheritance 2 .Paradigms of programming ‡ styles of programming -.as a family of conventions ‡ data abstraction -.

the choice of a vehicle 3 .in particular the role of prototyping ‡ software quality -.The object-oriented software life-cycle ‡ software development models -.in relation to reuse and maintenance ‡ programming languages -.

(D)COM.patterns. Java ‡ heterogeneous systems -.CORBA.separating logic and control .4 Beyond object-orientation? ‡ modeling -. UML ‡ components -.

Mention a number of object-oriented programming languages.How would you characterize contracts? Why are contracts important? 5. and give a brief characterization.What influence is an object-oriented approach said to have on the software life-cycle? What is your own opinion? Discuss the problem of maintenance.Questions 1.What classes of languages support OOP features? Explain. 8. is the motivation underlying the introduction of OOP? 2." 4. 10.How is OOP related to programming languages? 6.How would you characterize software quality? 9.What do you see as the major challenges for research in objectorientation? .Characterize the most important features of OOP. 7.Explain the meaning of the phrase "object orientation reduces the complexity of programming. 3.How would you characterize OOP and what. in your opinion.

which gives a succinct introduction to UML. you may look at [Surviving]. Dependent on your interest. or [Fowler97]. . which gives an extensive introduction to design by contract and programming in Eiffel. you may take one of the introductory programming books for Java. which treats issues of OO project management. Alternatively.Nowadays there are many books that may serve as a starting point for reading about OO. [Meyer97]. from which you will almost certainly learn something about OO as well.

you may take one of the introductory programming books for Java. Dependent on your interest. from which you will almost certainly learn something about OO as well. which gives a succinct introduction to UML. Alternatively. which gives an extensive introduction to design by contract and programming in Eiffel. [Meyer97]. you may look at [Surviving]. or [Fowler97].Further reading Nowadays there are many books that may serve as a starting point for reading about OO. . which treats issues of OO project management.

Sign up to vote on this title
UsefulNot useful