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