Notes - Week 4 (TopDownBottomUp)

advertisement
CS3500
Software Engineering
Lecturer: Dr Eoin Healy
e.healy@cs.ucc.ie
Room G62 WGB
Lectures:
Monday 2 – 3 pm in WGB G02
Wednesday 11 – 12 noon in WGB G02
Desk (not Lab) exercises for Continuous Assessment work (not scheduled)
Assessment:
Final Written Exam: 80%
Continuous Assessment: 20%
CS3500 Software Engineering
Accessing the Notes
http://cs4.ucc.ie/moodle/
Enrolment key: SE_CS3500
CS3500 Software Engineering
A look at last year’s performance
CS3500 Written Paper - Spring 2012
40
35
30
Numbers 25
of
20
students 15
10
5
0
<=20%
21-40%
41-60%
Grades
61-80%
>80%
CS3500 Software Engineering
Good reasons to improve
 Everyone here is capable of achieving a good grade (>50%) in Software Engineering
 Passing CS3500 will mean no repeat exam in autumn!
 The majority of employment opportunities involve many elements of Software Engineering
 Learning about what is involved in Software Engineering will prepare you for the
Team Software Project (CS3305/3505) in Term 2
 Learning about what is involved in Software Engineering will prepare you for your
Work Placement
 Making a serious effort to engage with the CS3500 course would have very positive
benefits for those of you who may be inclined to think that life is all about getting
by with the minimum amount of effort
 Success brings its own enjoyment. Do well in this course and you will earn a sense
of achievement which will help to motivate you for the year.
CS3500 Software Engineering
Learning Objectives
Identify the difficulties inherent in developing large pieces of
software;
Use the appropriate criteria to select a development model for a
particular software application;
Apply acquired techniques to elicit and model user requirements;
Identify and apply appropriate validation and verification methods for
testing during the software development process.
Understand how to apply project management techniques to
facilitate the software development process;
CS3500 Software Engineering
The notes provided for this course are just that – notes!
You should add to the information in these notes by
reading further on the points identified and stressed here.
Use the Boole Library!
Use Google
Useful Web resources:
http://www.rspa.com/spi/#process (Roger Pressman’s website)
http://www.wepapers.com/Papers/51064/Notes_for_Software_Engineering
http://mail.svce.ac.in/~uvarajan/cn.html (based on Pressman’s “Software
Engineering – A Practitioner’s Approach)
http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/ (Ian Sommerville)
CS3500 Software Engineering
A Note on Note-taking
These notes will be provided online to allow you to focus on
the sense and meaning of the material during lectures.
BUT! The people who will do well in this (and other modules)
are those who will take notes of key words, key points
and themes/topics I emphasise.
CS3500 Software Engineering
A Note on Note-taking
These notes will be provided online to allow you to focus on
the sense and meaning of the material during lectures.
BUT! The people who will do well in this module (and others)
are those who will take notes of key words, key points
and themes/topics I emphasise.
And the people who will NOT do well in this module
(and others) are those who might assume that I am providing
online notes so that you can rest and do nothing!
CS3500 Software Engineering
What is Software Engineering?
“A discipline whose aim is the production of
fault-free software, delivered on-time and within
budget, that satisfies the user’s needs.
Furthermore, the software must be easy to modify
when the user’s needs change.” [Schach]
(Note: This is intended as an explanation and not as
a strict definition that should be memorised!)
An essential starting point is to understand that
software engineering is most definitely not another
term for programming.
CS3500 Software Engineering
The Impact of Software
The role of software as a driving force of world economies
is very visible. A software-driven internet has spawned its
own trillion (Euro, £ or $) economy.
Software profoundly effects our everyday lives – our cars,
phones, TV’s, household appliances (washing machines,
Microwaves etc), access to news, access to e-commerce are
all dependent on the operation of reliable software.
CS3500 Software Engineering
Some Historical Facts
Electricity power stations fail, but far less frequently than
Microsoft Windows and other operating systems.
Bridges collapse but much less often than do software
financial accounting systems.
In the belief that software design, implementation and
development could be put on the same footing as software
engineering disciplines, a NATO study group in 1967 coined
the term “software engineering”.
The group’s motivation was what they identified as
the symptoms of a software crisis:
 unacceptably low software quality
 cost over-runs
 deadline overruns
CS3500 Software Engineering
The Software Crisis:
Today, 40 years later, the same problems (symptoms)
effect the whole software industry. Stephen Schach has
suggested that it should be renamed as a software
depression rather than a crisis in view of its long duration
and the poor outlook for improvement.
CS3500 Software Engineering
Why a Depression?
It was an over-simplification to equate the problems and the
techniques of engineering physical structures with those of
building good software.
CS3500 Software Engineering
Why a Depression?
It was an over-simplification to equate the problems and the
techniques of engineering physical structures with those of
building good software.
When a bridge collapses it is usually re-designed and rebuilt
but
When an op system crashes it may be possible to
reboot it or tweak the code sufficiently to make it “work” (tempting!)
Fault tolerance is more easily predicted when building
physical structures than when building complex
software systems which interact with one another
Maintenance of physical structures relies on painting, crack repair,
road resurfacing, window replacement etc (simplification here)
but
Maintenance of a software system can involve the addition
of many new components, creating interfaces with other
systems, or converting a single user local system into a
multi-user distributed one
CS3500 Software Engineering
Signs of the Software Crisis:
Software unreliability
Schedule delays
&
consequent cost over-runs
Software inflexibility
High cost of modifying software
User “unfriendliness”
Security flaws
(increasingly important with distributed
and web-based systems involving e-commerce)
CS3500 Software Engineering
Specific Examples of the
Software Crisis:
Surveys in late 1990’s in U.S. showed SD&M1 costs running at around
10% of GDP
Demand for software predicted to grow by about 900% per decade
Demand for developers increasing by 12% per year but actual numbers
growing by just 4%
Worldwide, staff turnovers as high as 20% per year, especially during
periods of economic prosperity
Estimated that major software development projects suffer from as high as
25% cancellation rate due to unacceptable delays and poor specifications
(net result = failure to meet user requirements)
1 SD&M = Software development and maintenance
CS3500 Software Engineering
What Happens to
Software Systems?
“used”
A survey of software projects commissioned by the U.S.
Government, 1990 - 1996
CS3500 Software Engineering
Irish Examples of the
Software Crisis:
Right through from 2000 to the present there have been examples
of software development over-runs within State-sponsored projects:
A forest management system had jumped in cost from €5.3 million to
€15 million
The Garda (Police) “Pulse” system was up from €30 to €70
million by 2005. Still not complete and present costs are unknown.
Health Service Executive. Abandoned and dis-credited PPARS
(Personnel and Pay Related System) cost over €160 million due to
a whole range of issues including gross incompetence.
(Take time to Google this)
Failte Ireland’s (Tourism) Gulliver system - cost/time over-runs due to
dysfunctional system
Social Welfare IT system inadequate to cope with capacity
CS3500 Software Engineering
How does a “program” differ from a “software system”?
Program
System
Tens to hundreds of lines of code
Thousands to millions of lines of code
Limited, easily acquired and
unchanging specification
Specifications complex, detailed and
often change
Usually implement single or few functions Multi-functional
Usually written by 1 person in short time
Designed/developed by many over months/years
(Problems of teamwork, communication and conflict
resolution)
Limited/zero interface with other software
Usually interfaces with other software
(Problems of integration, different languages
& standards, security issues, political ownership)
Usually single-user
Usually multi-user
System testing much more difficult and
time-consuming than program testing
Download