Upload
griffin-boyd
View
212
Download
0
Embed Size (px)
Citation preview
CSc160 in context
The CSc160 stream: Provides an introduction to software
engineering Is intended for Computer Science
majors and Computer Systems Engineers
Has a close relationship with the CSc110 Java Programming stream
CSc160 structure Term 1
CSc161 Software Quality Term 2
CSc162 Programming in the Large Term 3
CSc163 Professional issues 1 lecture per week Occasional lab sessions as and when
needed
Key course objectives The aim of CSc161 is to equip you with
skills that enable you to engineer software
At the end of the course, you should be able to: Use a number of techniques to ensure that
your software is free from defects Develop efficient software Write software that is maintainable
Course text
Software Engineering, 7th edition, Ian Sommerville, Addison Wesley, ISBN 0321210263 This is a recommended purchase
Assessment One practical group-based exercise
An extension of the CSC110 Java Programming exercise
Involves putting into practice the techniques taught in CSc161
Given out in week 8, due in week 10 Exam in Summer term
Questions will be based on some of this term’s suggested exercises
Expectations
Each lecture has a set of objectives To meet the objectives, you will
need to: Re-read the lectures notes Do suggested exercises Follow up any further reading
It is your responsibility to undertake work to meet the objectives
Today’s objectives
After today you should be able to: Define the term software
engineering and explain why software engineering is important
Explain what software quality means
Give examples where software is used
What is software engineering? Software engineering is concerned
with all aspects of software production from specifying requirements through to maintaining the system once it is in use
Engineering involves applying established techniques to solve problems subject to constraints such as cost
Why is software engineering important? Software engineering aims to prevent low
quality software Therac-25, 1985-87
A radiation therapy machine that caused 3 deaths by radiation overdose
Cause: inadequate software testing 3 Mile Island, 1979
A partial meltdown of a nuclear reactor Cause: a badly designed user interface
London Ambulance Dispatch System, 1992 The new computer controlled system failed on two
occasions, resulting in delayed ambulances. People died unnecessarily
Cause: poor project management
Why is software engineering important?
Mars Climate Orbiter, 1999 A $125m spacecraft that has been assumed lost by NASA Cause: poor project management, inadequate testing
USS Yorktown, 1998 The ship’s software control system shut down the
propulsion system because of divide by zero instruction Cause: inadequate testing
Denver Baggage Handling System, 1994 An overly complex system whose development overran,
preventing Denver Airport opening on time. The total repair costs were 50% of the original budget - $200m
Cause: inability of system to scale
What is software quality? Software quality can be defined in terms of 4
attributes: Maintainability
Software should be written in a way that is easy to change
Dependability This spans a range of characteristics including
reliability, availability, security and safety Efficiency
Software should not make wasteful use of resources like memory and processor time
Usability Software must be usable, without undue effort, by the
type of user for whom it is designed
CSc161 and software quality For this course, we look at a subset of
quality attributes and examine practical techniques for developing software that exhibits these attributes
Correct
Maintainable
Efficient
Testing Debugging Static analysis Profiling
• • •
•
• •
Suggested exercises
Before next week’s lecture, discuss with other students what you think are the significant points raised in today’s Airbus video
Read Chapter 1 of Software Engineering