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

28
Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    218
  • download

    2

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

Page 1: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

Object Oriented Software

Development2009-2010

The Development of Software Engineering

Lecture: Week 1Brian Farrimond

Page 2: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian 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

Page 3: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

3

Module Structure Topics Schedule Assessment

Hint: All details are

on the hopelive Web site

Page 4: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

4

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

… can you spot the theme?

Page 5: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 6: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 7: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

7

OOSD ScheduleWeek 25 Preparation for exam

Examination

Page 8: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 9: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 10: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

10

Assessment scheduleWeek 25

Week 26 Submit CW 1Submit portfolio of exercises

Examination (3 hours)

Page 11: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 12: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 13: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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?

Page 14: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

14

Developing software systems:……The Story so Far

OOSAD Booklet Chapter 2

Page 15: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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!

Page 16: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 17: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

17

Front Leg

Rear Leg

Eat Elephants in small chunks- Beaumont 2001

Eat Elephants in small chunks- Beaumont 2001

Page 18: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 19: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 20: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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

Page 21: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 22: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 23: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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)

Page 24: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 25: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.

Page 26: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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)

Page 27: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

27

Issues with OO Persistance

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

Large Inheritance hierarchies introduces complexity!

Page 28: Object Oriented Software Development 2009-2010 The Development of Software Engineering Lecture: Week 1 Brian Farrimond.

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.