Programming Techniques Course

Post on 05-Jan-2016

17 views 0 download

description

Programming Techniques Course. מוקדש לזכרו של פרופ' לב ברוטמן (1939-2001) חוקר בעל שם עולמי, ממייסדי החוג למדעי המחשב באוניברסיטת חיפה, איש מדע, מורה ומחנך, גידל דורות לאהבת המתמטיקה והמדע, תוך קידוש ערכי המצויינות, המופת, הכבוד ההדדי, הסובלנות ואהבת האדם. Version 1.0. - PowerPoint PPT Presentation

transcript

© Copyright Eliyahu Brutman

Programming Techniques Course

(1939-2001) מוקדש לזכרו של פרופ' לב ברוטמן

חוקר בעל שם עולמי, ממייסדי החוג למדעי המחשב באוניברסיטת חיפה, איש מדע, מורה ומחנך, גידל

דורות לאהבת המתמטיקה והמדע, תוך קידוש ערכי המצויינות, המופת, הכבוד ההדדי, הסובלנות ואהבת

האדם

© Copyright Eliyahu Brutman

Chapter 1 –Software Engineering

Version 1.0

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 3

Table of contents

About the lecturer Course objectives Some administrative stuff

SW Engineering Well known models Object Orientation The development process Tools The industry – current situation Exercise

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 4

Course Objectives

About the lecturer Why am I here? Why are you here? Course objectives

Object Orientation – how it evolved

Modeling – Analysis, Design, Implementation

Tools and the industry

C++ as an OO Programming Language Through all its capabilities and features Learn and use

Understand Object Orientation, and what characterizes it

Understand why it is good, and why so much money is invested in it

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 5

Administration

Lecture days and hours Practices Assistance Labs Homeworks Grades Exam

We are here for your success!!

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 6

Credits & Bibliography

Dr. Shimon Cohen –

- מהדורה - הכרה אינטואיטיבית של המודל תכנות מונחה עצמים1999 אפריל 1.1

Rational Software

UML and the Unified Process – Ivar Jacobson, from Rational Worldwide Software Symposium – speaker support notes

Bibliography

C++ Primer - Stanley B. Lippman, Josée LaJoie

Inside the C++ Object Model - Stanley B. Lippman

Visual C++\MFC - מדריך מקצועי - Meir Sela

“Effective C++” – Scott Meyers

“More Effective C++” – Scott Meyers

“Effective STL” – Scott Meyers

WEB

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 7

SW Engineering

What is it all about?

Is it engineering at all? Who cares about it?

Managers

Quality assurance personnel

Customer Why do it?

Save money

Quality product, standards

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 8

The Development Process

What is a development process? Why a development process? The development process

Requirements gathering

System analysis

System design

Implementation

Unit testing

Integration

System testing

Delivery

Maintenance

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 9

Development Process - Waterfall

Waterfall

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 10

Development Process – Spiral Iterative

Iterative, spiral

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 11

Structured Programming

Structured Programming

Procedures

Data

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 12

Structured Programming

Traditional structured paradigm:

Identify the algorithm (functions) required to solve the problem: Functional decomposition Control flow

Identify the data structures needed by the functions.

Make them work together Implement functions using/modifying the data

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 13

OO Programming

Object Oriented Programming

Methods

Data

Objects

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 14

Object Oriented Programming

Object-Oriented paradigm:

Identify the abstract objects (data) that represent the problem domain.

Identify the abstract operations supported by the objects, i.e., define the interface to the objects.

The problem solution is a sequence of calls to objects.

Objects exchange messages with one another

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 15

Lets Examine An Example

Phone Book

Requirements

Entry for each person / business

• Name, phone number, address

Operations

• Add/remove/modify name/phone number/address Well designed programs are more reusable and maintainable. The more you invest in infrastructure the less problems you will

have with later changes

Invest a lot in thinking, for gathering generic requirements

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 16

New or changed

requirements

New or changed

system

Software EngineeringProcess

What Is a Development Process?

For each iteration define who is doing what, when and to produce which result

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 17

Creating the Unified Process

Functional testingPerformance testingRequirements mgmtConf. and change mgmtBusiness engineeringData engineeringUI design

Rational Unified Process 5.01998

Rational Objectory Process 4.11996-1997

Objectory Process 1.0-3.81987-1995

The Ericsson Approach

The Rational Approach UML

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 18

Overview of the Unified Process

The Unified Process is

Iterative and incremental

Use case driven

Architecture-centric

Why RUP – Rational Unified ProcessThere are other methodologies …

RUP was designed by the Trio: Ivar Jacobson, Grady Booch, James Rumbaugh

RUP is fully integrated with UML and “Rational Rose”

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 19

RUP

BuzzwordsRUP – Rational Unified ProcessUML – Unified Modeling Language

ToolsRational Rose / Rhapsody / XDE – CASE toolVisio – Drawing++ tool

RUP: Rational Unified ProcessProcess’s Workflows Requirements Analysis Design Implementation Testing

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 20

Lifecycle Phases

time

Inception Elaboration Construction Transition

Inception Define the scope of the project and

develop business case

Elaboration Plan project, specify features, and

baseline the architecture

Construction Build the product

Transition Transition the product to its users

התחלהעיבוד מפורט בניה/יצירה העברה

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 21

Major Milestones

time

Vision Baseline Architecture

InitialCapability

Product Release

Inception Elaboration Construction Transition

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 22

The Birth Of OO

Projects size got larger Complexity increased More difficult for maintainability and evolution

=> More expensive

Looking for techniques for reducing complexity, increasing code reuse, more intuitive, unified technique for all development process activities, etc.

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 23

Object Oriented Objectives

To enable coping with complex and scaleable projects, Object Oriented provides tools for:

Project design and modeling:

Enables understanding a project’s structure, the components it is built from, their relationships and roles.

Reflecting the real world in a better way.

Unified technique through all project stages

Fast “ramp up” into project

Reducing dependencies between components:

An internal component change should not effect the entire project.

Parallel development, independent

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 24

Object Oriented Objectives – cont’d

Code reusability:

Saves development time – each task is developed only once and is used by all required components.

Enables reasonable maintainability – any change, addition or bug fix in this task will be performed once, affecting all components using this code.

Creation of flexible and scaleable projects:

Enabling coping with future changes and additions.

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 25

A Bit of History

Time: 1962 Place: Norwegian Computing Center, Oslo Project on simulation of ship movement in fjords

Many kinds of ships, each with its own characteristics… Difficult to distribute the work within team

Team member responsible for Kind of boats?

• Must add code to every function Particular operation?

• Must be expert in all boat kinds

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 26

A bit of history (cont.)

Difficult to share code between boat types Difficult to add new boat types and operations Difficult to maintain Solution: group the ships into classes

Each class of ships type has its own data and behavior Simula 67 language

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 27

Object Oriented

A System:Is a collection of objects interacting with each other through message passingRelating to each other via some relationship

Is-part-of relationship Is-a relationship Referring-to relationship

Achieved by Containment Aggregation Association Inheritance

For instance: A book contains many pages …

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 28

Msg

Msg

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Msg

Msg

Msg

Msg

Message Passing

Synchronous A-Synchronous

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 29

Objects

An object:

Is a self contained entity With its own characteristics Reflected via:

• Attributes• Operations• Inter-relationships• More…

An operation is invoked as a result of message passing

The operation is intended to take care of the sent message

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 30

An Object

Object

Method

Method

Method

Method

Msg

Msg

Msg

Msg

Msg

Msg

Msg

Msg

Msg

Msg

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 31

An Object

ObjectDraw)...(

Count)(

M1)(

M2)(

Int X

Float Y

Looks like:

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 32

Relationships

ObjectDraw)...(

Count)(

M1)(

M2)(

Int X

Float Y

Obj BMethod

Method

Obj AMethod

Method

Object “Part of” relation “Reference to” relation

Pointer

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 33

World Entities

An entity has

Characteristics

Operations

Responsibilities

Behavior

Relationships to other entities

Invariant state

May have an internal life cycle So we pack all this into one “package”, and we call it a class It is more intuitive, since we as human beings have similar view

of the world

Classification, characterization, relationship description, etc.

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 34

What did we achieve?

Described the problem in terms natural to the problemPre-OO, we talked in terms of ints and floats, like the computerNow we can talk in terms of boats and maneuvres

Partitioned the problem into encapsulated sub-problems with well-defined interfaces

Adding new boat types is easy And so is changing boat behavior

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 35

Classes – cont’d

Objects - Instances of the classThe class

Different Ships objectsThe Ship class

Length

Coordinates

Go

Stop

35

123, 456

Go

Stop

65

222,333

Go

Stop

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 36

Classes – cont’d

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Object

MethodMethodMethodMethod

Class

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 37

Inheritance

Inheritance Tree(definition)

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 38

Inheritance Tree Example: Employee

Boat

SailBoat MotorBoatPaddleBoat

AircraftCarrier

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 39

Inheritance - Main Concepts

When a class inherits from a base class, it contains all functionality and characteristics of its base

A derived class can expand its specifications by:

Adding new data

Adding new functionality

Overriding the inherited functionality

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 40

Employee Inheritance - Tree Revisited

Boat

getLocation()move(Env)turn(Dir)

Location……

SailBoatfloat sailAreamove(Env)turn(Dir)

MotorBoatfloat engineVolumemove(Env)turn(Dir)start(Eng)

Engine……

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 41

ObjectsWhat Are They Good For ?

Understand the problem

a natural way of looking at things (problems) Software Engineering

Encapsulation helps to achieve the goals of Parallel Development

Each object is defined independently

Why is it better to view the system as

a collection of objects ?

© Copyright Eliyahu Brutman

Programming Techniques – Chapter 1 - 42

Objects - Encapsulation

Hiding implementation

What is it good for?

Can you give an example? De-coupling / Decomposition

For reuse

For easier modifications, implementation free Example:

Replace float sailArea with float sailAreas[]