Principles of Object-Oriented Software Development Introduction.

Slides:



Advertisements
Similar presentations
Understand and appreciate Object Oriented Programming (OOP) Objects are self-contained modules or subroutines that contain data as well as the functions.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University 1 5 – Abstract Data Types.
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Basic OO Technology Technology determines the effectiveness of the approach.
IMS1805 Systems Analysis Topic 3: Doing Analysis (continued from previous weeks)
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
Principles of Object-Oriented Software Development The language DLP.
Object-Oriented Analysis and Design
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
Introduction To System Analysis and Design
Chapter Object-Oriented Practices. Agenda Object-Oriented Concepts Terminology Object-Oriented Modeling Tips Object-Oriented Data Models and DBMSs.
1 SWE Introduction to Software Engineering Lecture 23 – Architectural Design (Chapter 13)
Object Oriented System Development with VB .NET
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Themes and Variations abstraction -- the object metaphor modeling -- understanding.
Principles of Object-Oriented Software Development Software Development Projects.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
C++ fundamentals.
Introduction to Object-oriented Programming Introduction to Object-oriented Programming CMPS 2143.
The chapter will address the following questions:
Introduction To System Analysis and design
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
The Design Discipline.
Introduction to Object-oriented programming and software development Lecture 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
BCS 2143 Introduction to Object Oriented and Software Development.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
B.Ramamurthy9/19/20151 Operating Systems u Bina Ramamurthy CS421.
An Introduction to Software Architecture
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Unified Modeling Language, Version 2.0
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Introduction To System Analysis and Design
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
 OOPLs  Help companies reduce complexity  Increase competition in open markets  Speeds up development  Improves maintenance, resusability, modifiability.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
CSE 303 – Software Design and Architecture LECTURE 4.
GRASP: Designing Objects with Responsibilities
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Learners Support Publications Object Oriented Programming.
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Object-Oriented Programming Chapter Chapter
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
Object-Oriented Programming © 2013 Goodrich, Tamassia, Goldwasser1Object-Oriented Programming.
1 Unified Modeling Language, Version 2.0 Chapter 2.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
Basic Characteristics of Object-Oriented Systems
Principles of Programming & Software Engineering
Design Patterns: MORE Examples
The Development Process of Web Applications
Object-Orientated Programming
Object Oriented Analysis and Design
Chapter 20 Object-Oriented Analysis and Design
Programming Languages 2nd edition Tucker and Noonan
An Introduction to Software Architecture
Presentation transcript:

Principles of Object-Oriented Software Development 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 -- packet containing data and procedures methods -- deliver service message -- request to execute a method class -- template for creating objects instance -- an object that belongs to a class encapsulation -- information hiding by objects inheritance -- allowing the reuse of class spec.s class hierarchy -- tree structure inheritance relations polymorphism -- to hide different implementations

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

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

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

mathematical model -- Turing machine universal machine -- machines as programs computability & complexity -- 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

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

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

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 refine more information Services better services Contracts more and better services A better service fewer restrictions for the client more obligations for the server

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

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

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, safe and efficient) to use that style compile/runtime checks clean interpretation/ orthogonal / efficient / minimal

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

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

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

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

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

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

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

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

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

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

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

Design assignments

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

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

A Multi-user Agenda Support System extends a simple Agenda Support System by providing facilities for scheduling a meeting, 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 minimal Multi-user Agenda Support System must provide facilities for registering important dates for an arbitrary number of users. It must, moreover, be able to give an overview of important dates for any individual user, 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, gadgets for presenting overviews and the possibility of adding additional constraints. Nevertheless, as an advice, when developing a Multi-user Agenda Support System, follow the KISS principle: Keep It Simple...

Implementation

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

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

Beyond Object-Orientation?

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

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

Summary

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

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

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

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

Questions 1.How would you characterize OOP and what, in your opinion, is the motivation underlying the introduction of OOP? 2.Characterize the most important features of OOP. 3.Explain the meaning of the phrase "object orientation reduces the complexity of programming." 4.How would you characterize contracts? Why are contracts important? 5.How is OOP related to programming languages? 6.What classes of languages support OOP features? Explain. 7.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. 8.How would you characterize software quality? 9.Mention a number of object-oriented programming languages, and give a brief characterization. 10.What do you see as the major challenges for research in object- orientation?

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

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