Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week...

Post on 21-Dec-2015

218 views 2 download

Tags:

Transcript of Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week...

Object Oriented Software

Development2009-2010

The Development of Software Engineering

Lecture: Week 1Brian Farrimond

2

Objectives

Be able to explain the module structure, assessment and learning activities

Have awareness of claimed benefits and problems with OO methods.

Have awareness of historical context of OO in methods development.

Still be awake.

At the end of this session you should

3

Module Structure Topics Schedule Assessment

Hint: All details are

on the hopelive Web site

4

OOSD Topics Systems Modelling systems Object Oriented models for systems Implementing models in C++

… can you spot the theme?

5

OOSD ScheduleWeek 1 Software

Development Concepts

Week 7 Work on CW 2

Week 2 Systems Analysis introduction

Week 8 OpenGL

Week 3 Class models Week 9 OpenGL / CW 3

Week 4 Class models Week 10 OpenGL / CW 3

Week 5 Use cases Week 11 OpenGL / CW 3

Week 6 Work on CW 2 Christmas

6

OOSD ScheduleWeek 12 Building C+

+ProgramsWeek 19 Advanced features of

C++

Week 13 Variables and statements in C++

Week 20 Inheritance in C++

Week 14 Functions, Arrays and Program Flow in C++

Week 21 Polymorphism in C++

Week 15 OO Principles and Programming in C++

Week 22 CW 1

Week 16 OO Classes in C++ Week 23 CW 1

Week 17 OO Classes in C++ Easter

Week 18 Pointers and References in C++

Week 24 CW 1

7

OOSD ScheduleWeek 25 Preparation for exam

Examination

8

Assessment scheduleWeek 1 Practice Quiz (doesn’t count) Week 7 Quiz 4

Week 2 Quiz 1 Week 8 Submit CW 2

Week 3 Quiz 2 Week 9

Week 4 Week 10

Week 5 Quiz 3 Week 11

Week 6 Christmas

9

Assessment scheduleWeek 12 Submit CW 3 Week 19

Week 13 Week 20

Week 14 Week 21

Week 15 Week 22

Week 16 Week 23

Week 17 Week 24

Week 18 Easter

10

Assessment scheduleWeek 25

Week 26 Submit CW 1Submit portfolio of exercises

Examination (3 hours)

11

Assessment components

Portfolio questions Show your progress to your tutor regularly

Quizzes Short – 15 mins

Backbone of your learning

Backbone of your learning

Regular check on your progress

Regular check on your progress

12

Assessment components Quizzes and Portfolio Exercises

10% C++ Coursework (CW 1) 20% SAD Coursework (CW 2) 20% Feasibility study: (CW 3) 20%

Report with preliminary models Examination 30%

Partly similar in style to quizzes

13

This is a 30 credits module 300 hours study 3 hours per week in class 9 hours per week self study

Do you want a good grade?

14

Developing software systems:……The Story so Far

OOSAD Booklet Chapter 2

15

In the beginning (1960s)“Now the program was formless

and empty… without structure…”

Systems were Late, over budget, full of bugs, didn’t do what users wanted.

- Poor Quality - The Software Crisis

Aagh!

The Evil enemy: Complexity & Size

??“I have a very small brain and I had better learn

to live with it”- E. Dijkstra

Construction of software is the ” most complex ever

undertaken by humanity”- Fred Brooks*

“I have a very small brain and I had better learn

to live with it”- E. Dijkstra

Construction of software is the ” most complex ever

undertaken by humanity”- Fred Brooks*

* IEEE Computer April 87.

17

Front Leg

Rear Leg

Eat Elephants in small chunks- Beaumont 2001

Eat Elephants in small chunks- Beaumont 2001

18

Tablets of Stone..the 3 commandments

1. Modularitybreak it up into small parts

2. Coupling / EncapsulationFew interconnections, defined interface

3. Cohesion / AbstractionClearly defined task.

1. Modularitybreak it up into small parts

2. Coupling / EncapsulationFew interconnections, defined interface

3. Cohesion / AbstractionClearly defined task.

19

Structure- Software Engineering 1970s (flares, long hair & Pink Floyd) Structured Programming

Languages with procedures / subroutines Goto-less programming

Structured Design Top-Down design, modules

Structured Analysis systematic, top down approach eg SSADM

Kermit the Frog.

20

Structured Methods Functional

Concentrate on what the system does

Modules are Tasks

Data secondary Recipes!

Data Driven Concentrate on Data

inputs, outputs and transformation e.g. JSP

Process derived from Data (secondary)

Evolved to Data modelling, E-R, DBMS

Both methods SeparateCode and Data

Both methods SeparateCode and Data

21

Outcomes: Did it work? Some improvement, but:

Systems still late, Systems still over budget Difficult to modify

New Emphasis on Quality Management Project management User Requirements / Prototype / RAD.

22

Formal Methods 1980s (Yuppies, Margaret Thatcher, Culture

Club) Focus on Quality led to Formal

(Mathematical) specification languages. Logic could be used to reason & prove correctness.

E.g. Z, VDM, CSP, OBJ. Difficult to understand, expensive.

23

Object OrientationMid 1980s A new paradigm (wow!). Booch, Rumbaugh, Jacobson, Schlaer-

Mellor. 64 Flavours (Webster 1996)

“OO is a religion, it’s the people who become oriented towards objects”

- Stevens (2000)

“OO is a religion, it’s the people who become oriented towards objects”

- Stevens (2000)

24

Characteristics Objects / Classes:

modules which Combine Data and Behaviour (functionality). Well defined interfaces achieve encapsulation & abstraction)

Inheritance between classes Polymorphism

Same messages to different objects, arguments of different types.

25

Claimed Benefits Naturalness

Objects mirror real world, ease of learning, stability of structure, ease of maintenance and reuse.

Reuse Through Inheritance (libraries of

classes). Less chance of error , productivity, robustness, flexibility.

26

Is it justified? Naturalness

ease of learning - no, Procedural easier Reuse

Studies show productivity increase and significant reuse within an application domain, but much less across domains.

“There is no silver bullet” (Brooks)

27

Issues with OO Persistance

storing objects. Efficient Relational Data bases, OODB in their infancy.

Large Inheritance hierarchies introduces complexity!

28

Summary Principles of combating complexity are

universal: modularity / loose coupling / high cohesion /

abstraction / encapsulation. OO is a development from structured

methods: Objects / Classes encapsulate Data and behaviour

rather than splitting them up. Inheritance is new, facilitates reuse

OO is becoming dominant Advantages of productivity / reuse within a domain. Difficulties over persistence.