You are on page 1of 23

Lesson 1 Introduction to Software Engineering – AUB

Part 2 ENMG 644 - Agile Software Project Management

Software Crisis
PART II: SOFTWARE ENGINEERING

◦ Discuss the software crisis


Learning outcomes

SOFTW ARE CRISIS 2

Imad Moukadem, PhD 1


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

The Software crisis (1/2)

oIn the 1960s, large powerful mainframes allowed the creation of complex systems
oPeople started asking why project overruns and failures were so much more common
than in mechanical engineering, shipbuilding…
o‘Software engineering’ was coined in 1968
oThe hope was that we could control things by using disciplines such as project
planning, documentation and testing

SOFTW ARE CRISIS 3

The Software crisis (2/2)

Various perceived problems with software:


◦ It fails to do what users want it to do
◦ It is expensive
◦ It is not always fast enough
◦ It cannot be transferred to another machine easily
◦ It is expensive to maintain
◦ It is unreliable
◦ It is not always easy to use

SOFTW ARE CRISIS 4

Imad Moukadem, PhD 2


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

The Software crisis – Examples (1/3)

Computer glitch delays flights, Saturday 3rd October 2009-London, England (CNN)
o 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
o The agency said it reverted to backup equipment as engineers worked on the system
o The problem did not create a safety issue but caused delays in flights

SOFTW ARE CRISIS 5

The Software crisis – Examples (2/3)

Ariane 5 Explosion
o European Space Agency spent 10 years and $7 billion to produce Ariane 5
o Crash after 36.7 seconds
o Caused by an overflow error
o Trying to store a 64-bit number into a 16-bit space

SOFTW ARE CRISIS 6

Imad Moukadem, PhD 3


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

The Software crisis – Examples (3/3)

1992, London Ambulance Service

o The London Ambulance Service (LAS) Computer Aided Dispatch (CAD) system failed
dramatically on October 26th, 1992, shortly after it was introduced.
o The system could not cope with the load placed on it by normal use.

o The response to emergency calls was halted for several hours

o Ambulance communications failed and ambulances were lost from the system

o A series of errors were made in the procurement, design, implementation, and


introduction of the system

SOFTW ARE CRISIS 7

Software
Development
Problems
PART II: SOFTWARE ENGINEERING

Imad Moukadem, PhD 4


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

◦ Discuss the software development problems that led to


a software crisis
Learning outcomes

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 9

Software problems
The perceived problems in software development and the goals that software
engineering seeks to achieve are:
◦ Meeting users' needs
◦ Low cost of production
◦ Delivery on time (meeting deadlines)
◦ High performance
◦ Low cost of maintenance
◦ Portability
◦ High reliability
◦ Human-Computer Interaction

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 10

Imad Moukadem, PhD 5


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Meeting Users’ Needs


oThe first step in developing a software is to find out what the client, customer, or user
needs
oThis step is often called Requirements Analysis or Requirements Engineering
oThe task of trying to ensure that software does what its users want is known as
validation

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 11

Software cost
oThe software type makes a difference: applications software can be programmed
faster than systems software.
oThe cost of software is determined largely by the productivity of the programmers and
their allotted salaries.
oHowever, It is very difficult to predict in advance how long it will take to write a
particular piece of software.
oIt is not uncommon to underestimate the required efforts by up to 50%
◦ Hence the cost and delivery date of software are also affected

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 12

Imad Moukadem, PhD 6


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Hardware vs. Software costs


oSoftware costs often dominate computer system costs.
oThe costs of software are often greater than the hardware cost.
oSoftware costs more to maintain than it does to develop.
oFor systems with a long life, maintenance costs may be several times development costs.
Software engineering is concerned with cost-effective software development

Why do we have
the impression
that software is
cheap to produce?
SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 13

Perception of Software costs (1/3)

Personal computers
oIf you buy a stereo for $200, you don’t expect to pay $2,000 for a CD.
oSimilarly, if you buy a PC for $1,000, you don’t expect to pay $10,000 for the software,
which is what it would cost if you hired a programmer to write it for you.
oSo, of course, software for a PC either “comes free” or is cheaply priced.
oIt can be hard to comprehend that something for which you paid $50 has cost millions
of dollars to develop.

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 14

Imad Moukadem, PhD 7


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Perception of Software costs (2/3)

Software packages
oIf you want to calculate your tax or design your garden, you can buy a program to do it
oSuch software packages can cost as little as $50
oThe reason for the low price is, of course, that the producers of the software sell many
identical copies – the mass production of software has arrived

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 15

Perception of Software costs (3/3)

Application development tools


oIf you want to create certain types of applications software very quickly and easily,
several development tools are available
oThese tools enable certain types of program to be constructed very easily, and even
people who are not programmers can learn to use tools like a spreadsheet (e.g.,
Microsoft Excel)

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 16

Imad Moukadem, PhD 8


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

How is the cost made up? (1/3)

oIt is interesting to see which parts of a software development project cost the most
oClearly the cost of testing is enormous, whereas coding constitutes only a small part of
software development

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 17

How is the cost made up? (2/3)

oIf mistakes are a major problem, when are they made?


oThis figure shows the number of errors made at the various stages of a typical project

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 18

Imad Moukadem, PhD 9


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

How is the cost made up? (3/3)

oWhat matters is how much it costs to fix a fault


oErrors made during the earlier stages of a project tend to be more expensive, unless
they are discovered almost immediately

SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 19

Meeting the deadlines


oProject deadline is the date the project is to be completed
oA project may have multiple deadlines, each corresponding to a project milestone
oSoftware managers seem to have problems with project schedules and deadlines
oMany projects take much more time then planned
oSurveys show that around 60% of projects exceed their initial budgets and around 50%
are completed late
oIt is said: "A badly managed project takes thrice the time planned, a well managed one
takes only twice“

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 20

Imad Moukadem, PhD 10


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Causes of missing deadlines (1/2)

oSome input not received from customer


oSome bug not resolved till date or simply the development taking more time than
planned
oAn unrealistic deadline established by someone outside the software engineering
group
oChanging customer requirements that are not reflected in schedule changes
oAn honest underestimate of the amount of effort and /or the number of resources
that will be required to do the job

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 21

Causes of missing deadlines (2/2)

oTechnical difficulties that could not have been foreseen in advance


oHuman difficulties that could not have been foreseen in advance
oMiscommunication among project staff that results in delays
oA failure by project management to recognize that the project is falling behind
schedule and a lack of action to correct the problem

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 22

Imad Moukadem, PhD 11


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Performance
oIt is also called efficiency in terms of the cost and speed of hardware – primarily
memory and processor
oPerformance cannot be ignored! Often, we are concerned to make sure that:
oAn interactive system responds within a reasonably short time
oA game runs sufficiently fast that the animation appears smooth
oA batch job is not taking 12 hours when it should take one

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 23

Maintenance (1/2)

oMaintenance is the term for any effort that is put into a piece of software after it has
been written and put into operation
oThere are two main types:
◦ Remedial maintenance: which is the time spent correcting faults in software (fixing
bugs)
◦ Adaptive maintenance: consists of modifying the software either because the users'
needs have changed, or use new technologies, programming languages, or operating
systems

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 24

Imad Moukadem, PhD 12


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Maintenance (2/2)

oAmount of time spent in the different activities of developing a particular piece of


software

SOFTW ARE DEVELOPM ENT PROBLEM S - PART II 25

Portability
oThe ability to move a software from one type of computer to another with the
minimum effort
oBuilding executable programs for different platforms from the same source code
oIt is a characteristic attributed to a computer program if it can be used in an operating
system other than the one in which it was created without requiring major rework

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 26

Imad Moukadem, PhD 13


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Reliability (1/4)

oA piece of software is said to be reliable if it works, and continues to work, without


crashing and without doing something undesirable
oWe say that software has a bug or a fault if it does not perform properly
oError: a wrong decision made during software development
oFault: it is the inability of a system or component to perform the required function
according to its specification
oFailure: an event when software departs from its intended behavior

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 27

Reliability (2/4)

An error is a mistake made by a human being during one of the stages of


software development
oAn error causes one or more faults within the software, its specification or its
documentation

There are many different types of errors:


oUser Interface errors
oError handling errors
oSyntactic errors

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 28

Imad Moukadem, PhD 14


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Reliability (3/4)

oA fault is the same as a bug: it can cause one or more failures.


oFailures will occur while the system is being tested and after it has been put into use.
oFailures are the symptom that users experience, whereas faults are a problem that the
developer must deal with.

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 29

Reliability (4/4)

oThe job of removing bugs and trying to ensure reliability is called Verification.
oCurrently testing is one of the main techniques for trying to ensure that software
works correctly.
oHowever, there is a fundamental problem with testing: As much as you test a piece of
software, you can never be sure that you have found every bug.
oThe recognition that we cannot produce bug-free software, however hard we try, has
led to the concept of Good Enough Software.

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 30

Imad Moukadem, PhD 15


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Human-Computer Interaction (1/2)

oThe user interface is what the users of a software see when they need to use the
software.
oThere are many examples of computer systems that are not easy to use:
oSome people find it difficult to divert a telephone call to another user within an
organization.

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 31

Human-Computer Interaction (2/2)

oIn recent years, many interfaces have become Graphical User Interfaces (GUIs) that use
windows with features like buttons and scroll bars, together with pointing devices like a
mouse and cursor.
oMany people saw this as a massive step in improving the user interface, but it remains
a challenging problem to design a user interface that is simple and easy to use.

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 32

Imad Moukadem, PhD 16


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Complementary and conflicting goals

SOFTW ARE DEVELOPM ENT PROBLEM S - PART III 33

Software
Engineering
Remedy
PART II: SOFTWARE ENGINEERING

Imad Moukadem, PhD 17


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

◦ Discuss the challenges facing software engineers


Learning outcomes ◦ Define software engineering

SOFTW ARE ENGINEERING REM EDY 35

Challenges facing software engineers


(1/5)

Develop large-scale software:


oLarge amounts of hardware, lines of source code, numbers of users, and volumes of data
oThe scale of these systems gives rise to many problems:
oThey will be developed and used by many stakeholders across multiple organizations,
often with conflicting purposes and needs.
oThey will be continuously evolving.
oHuman failures becomes the norm, not the exception.

SOFTW ARE ENGINEERING REM EDY 36

Imad Moukadem, PhD 18


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Challenges facing software engineers


(2/5)

Ensure scalability:
oIf the software process was not based on scientific and engineering concepts, it would
be easier to re-create new software than to scale an existing one.
oScalability in software Engineering refers, normally, to designing software systems in
such a manner that, as the number of users of the system increases, the software will
continue to function with comparable response times.

SOFTW ARE ENGINEERING REM EDY 37

Challenges facing software engineers


(3/5)

Quality management:
oBetter process of software development provides better quality software product
oIt is the degree to which the software meets specified requirements and/or
user/customer needs and expectations
oKey aspects of quality for the customer include:
◦ Good design – looks and style
◦ Good functionality – it does the job well
◦ Reliable – acceptable level of breakdowns or failure
◦ Value for money

SOFTW ARE ENGINEERING REM EDY 38

Imad Moukadem, PhD 19


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Challenges facing software engineers


(4/5)

Heterogeneity:
oIncreasingly, software is required to operate as distributed systems across networks
that include different types of computer and mobile devices.

SOFTW ARE ENGINEERING REM EDY 39

Challenges facing software engineers


(5/5)

Business and social change:


oBusiness and society are changing quickly as emerging economies develop and new
technologies become available
oThey need to be able to change their existing software and to rapidly develop ones

SOFTW ARE ENGINEERING REM EDY 40

Imad Moukadem, PhD 20


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

A well-disciplined approach to software


development and management is
necessary
This is called software engineering

SOFTW ARE ENGINEERING REM EDY 41

Software engineering remedy


Some of the main ideas of Software Engineering are:
oRequirements engineering and validation: an emphasis on finding out exactly what the
users of a system really want
oPrototyping: demonstrating an early version of a system to its customers
oVerification: greater emphasis on trying to ensure that software is free of errors
oIncremental development, where a project proceeds in small, manageable steps

SOFTW ARE ENGINEERING REM EDY 42

Imad Moukadem, PhD 21


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

Software engineering definition (1/2)

oEngineering discipline is all about using appropriate scientific theories and methods for
developing, designing, maintaining, and improving products.
oSoftware Engineering is an engineering branch that is concerned with all aspects of
software production.
◦ They are often involved from the early stages of software planning through to the
testing, development, training, and maintenance.

SOFTW ARE ENGINEERING REM EDY 43

Software engineering definition (2/2)

o 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”.

o “.. 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”.

SOFTW ARE ENGINEERING REM EDY 44

Imad Moukadem, PhD 22


Lesson 1 Introduction to Software Engineering – AUB
Part 2 ENMG 644 - Agile Software Project Management

IEEE definition
The IEEE definition:
◦ Software Engineering: The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of software; that is, the
application of engineering to software.

SOFTW ARE ENGINEERING REM EDY 45

Imad Moukadem, PhD 23

You might also like