1
Learning Unit 1: Introduction to
Software Engineering – part 1
SEF216D
2
Overview
Learning outcomes.
Why is software engineering important?
What is software engineering?
Challenges faced by software engineering
Professional and ethical responsibilities of software engineers
3
By the end of this chapter, you will...
Demonstrate knowledge on the history of Software Engineering by providing key
milestones for each decade of the SE timeline
Define software engineering.
Explain the importance of software engineering as a discipline/professional
practice.
Explain the key challenges facing software engineering
Describe the professional and ethical responsibilities/obligations of a software
engineer in line with a software engineering code of ethics and professional
conduct.
Analyse practical cases to determine ethical and professional issues according to
software engineering code of professional conduct and ethics.
4
Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
.systems
that you encounter in your everyday
life which have software controlling
…them
List as many as you can
5
History of Software Engineering
• Late.
• Over budget.
• Until 1960s - programs started in 1948, called software in 1952 &
1965 software crises recognized.
• 1970s to 2000s – high level programming languages, www, OO
• 2010s – Agile, SWEBOK, bootcamps
6
Activity
Other than business software, imagine ?Software inventions
individual and societal support or
services that we get from software. Will ?Milestones
?our lives be the same
What are the key milestones in the
?history of SE
breakaway sessions (6 minutes)
7
Why is Software Engineering important?
Complex systems need a disciplined approach for designing,
developing and managing them.
8
What happened when SE was not used.
9
Software Development Crises
Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
10
Software errors….the cost
Errors in computer software can have
devastating effects.
11
Activity
Identify software crises (incidents) in South ???
.Africa
How could some of the software
?‘errors/incidents’ be avoided
Breakaway sessions, 7 minutes
12
Software Crisis
Example 1: 2009,Computer glitch delays flights
Saturday 3rd October 2009-London, England (CNN)
•Dozens of flights from the UK were delayed Saturday after
a glitch in an air traffic control system in Scotland, but the
problem was fixed a few hours later.
•The agency said it reverted to backup equipment as
engineering worked on the system.
•The problem did not create a safety issue but could cause
delays in flights.
•Read more at:
[Link]
[Link]
13
Software Crisis
Example 1: 2009,Computer glitch delays flights
Saturday 3rd October 2009-London, England (CNN)
•Dozens of flights from the UK were delayed Saturday after
a glitch in an air traffic control system in Scotland, but the
problem was fixed a few hours later.
•The agency said it reverted to backup equipment as
engineering worked on the system.
•The problem did not create a safety issue but could cause
delays in flights.
•Read more at:
[Link]
[Link]
14
Software Crisis
Example 2: Ariane 5 Explosion
•European Space Agency spent 10 years and $7 billion
to produce Ariane 5.
•Crash after 36.7 seconds.
•Caused by an overflow error. Trying to store a 64-bit
number into a 16-bit space.
•Watch the video: [Link]
v=z-r9cYp3tTE
15
Software Crisis
Example 3: 1992, London Ambulance Service
•Considered the largest ambulance service in the
world.
•Overloaded problem.
•It was unable to keep track of the ambulances and
their statuses. Sending multiple units to some
locations and no units to other locations.
•Generates many exceptions messages.
•46 deaths.
16
Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
17
Summary
QA
Summarise
QA session
18
Software Engineering
The term software engineering first appeared in the 1968 NATO
Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..
[Software engineering is the] establishment and use of sound
engineering principles to obtain economically software that is
reliable and works on real machines efficiently. Friedrich Bauer (1972)
"Software Engineering", In: Information Processing. p. 71
“.. An engineering discipline that is concerned with all aspects of
software production from the early stages of system specification
to maintaining the system after it has gone into use.” Sommerville,
pg.7
19
Software Engineering
The term software engineering first appeared in the 1968 NATO
Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..
Applications programming is a race between software engineers,
who strive to produce idiot-proof programs, and the universe
which strives to produce bigger idiots. So far the Universe is
winning. Rick Cook, The Wizardry Compiled (1989) Ch. 6
[Software engineering is] the application of a systematic,
disciplined, quantifiable approach to the development, operation,
and maintenance of software. that is, the application of
engineering to software. IEEE Standard Glossary of Software
20
Software Engineering
Software Engineering is a collection of techniques,
methodologies and tools that help with the production of a
high quality software system with a given budget before a
given deadline
while change occurs.
“Insanity: doing the same thing over and over again and
expecting different results.” — Albert Einstein
21
Software Engineering
Engineering discipline Engineers make things work. They apply theories,
methods and tools where these are appropriate... Engineers also
recognise that they must work to organisational and financial constraints.
All aspects of software production Software engineering is not just
concerned with the technical processes of software development but also
with activities such as software project management and with the
development of tools, methods and theories to support software
production
22
Activity
Breakaway session Probably it bodes
with engineering
?Which definition stands out for you and why
?Which key constructs does it have
If SE is what you have presented, what
?have we been doing
23
Summary
SE Definition
Q and A
Definition
Constructs
24
What is Software?
• Software use is prevalent in almost all areas of our
lives
• Software costs lots of money – think about the value for
money
ttps://[Link]/MSA3WsGeTNI
25
What is Software?
System
Documentation
User
Documentation
26
Types of Software
• Generic products.
• Stand-alone systems that are marketed and sold to any customer who wishes to buy
them.
• Examples – PC software such as graphics programs, project management tools;
CAD software; software for specific markets such as appointments systems for
dentists.
• The specification of what the software should do is owned by the software developer
and decisions on software change are made by the developer.
• Customized or bespoke products.
• Software that is commissioned by a specific customer to meet their own needs.
• Examples – embedded control systems, air traffic control software, traffic monitoring
systems.
• The specification of what the software should do is owned by the customer for the
software and they make decisions on software changes that are required.
27
Software Engineering vs. Computer Science
“Computer science is no more about computers than
astronomy is about telescopes.” Edsger Dijkstra
28
Software Engineering vs. Systems Engineering
Systems Engineering:
Interdisciplinary engineering field (computer, software, and process eng.).
Focuses on how complex engineering projects should be designed and managed.
Frequently asked questions about software
engineering
Question Answer
What is software? Computer programs and associated documentation. Software
products may be developed for a particular customer or may
be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality and
efficient performance to the user and should be
maintainable, dependable, secure and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
29
Frequently asked questions about software
engineering
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often
exceed development costs.
What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for
different types of system. For example, games should always
be developed using a series of prototypes whereas safety
critical control systems require a complete and analyzable
specification to be developed. You can’t, therefore, say that
one method is better than another.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to
important advances in programming languages and software
reuse.
30
31
Attributes of good software
Functional attributes (performance; what the system does).
Non-functional attributes (quality; how the system does it).
Product Characteristic Description
Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability, security, safety.
Efficiency Response time, processing time, memory utilization.
Usability Easy to learn how to use the system by target users.
Efficient to use the system by users to accomplish a task.
Satisfying to use by intended users.
32
Activity
What are the key attributes for..
Cardiac monitor in an ICU
Interactive game Banking system
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature,
theme. bonds, money transfers. blood pressure.
33
Activity
Essential vs
accidental
Brooks identifies challenges of software,
?what are they
How can the challenges be dealt
?with
34
Challenges facing software engineering
Challenge Details
Human issues – fallibility, communication, social skills,
People issues
psychological effects
Check Brooks difficulties
Technical issues Heterogeneity, Requirements refinement, choice of tech, UI
design, productivity
Process issues e.g. methodology (agile vs plan driven, etc.)
Project issues SW estimates,
Quality issues Tolerance to errors, etc.
35
Challenges facing software engineering
Challenge Why? Software needs to ..
Different computers, different
Heterogeneity platforms, different support systems.
Cope with this variability.
Businesses are more responsive
Be delivered in shorter time
Delivery supporting software needs to
without compromising quality.
evolve as rapidly.
Software is a part of many aspects of
Demonstrate that it can be
Trust our lives (work, study, leisure).
trusted by users.
36
References
PRESS&SUN-BULLETIN, The Binghamton Press Co., Binghamton, NY, October 1,1999.
“Software Hell: Is there a way out?”, BUSINESS WEEK, December 6, 1999.
IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE 1993.
Sommerville, Ian “Software Engineering”, 9th edition, Addison-Wesley.
Fred Brooks, 1987, No Silver Bullet – Essence and Accident in Software Engineering" is
a widely discussed paper on software engineering
SWEBOK
Ivan Marsic, 2012, Software Engineering