Professional Documents
Culture Documents
Lesson 1 Introduction To Software Engineering - Part 2
Lesson 1 Introduction To Software Engineering - Part 2
Software Crisis
PART II: SOFTWARE ENGINEERING
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
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
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
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 Ambulance communications failed and ambulances were lost from the system
Software
Development
Problems
PART II: SOFTWARE ENGINEERING
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
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
Why do we have
the impression
that software is
cheap to produce?
SOFTW ARE DEVELOPM ENT PROBLEM S - PART I 13
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.
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
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
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
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
Maintenance (2/2)
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
Reliability (1/4)
Reliability (2/4)
Reliability (3/4)
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.
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.
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.
Software
Engineering
Remedy
PART II: SOFTWARE ENGINEERING
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.
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
Heterogeneity:
oIncreasingly, software is required to operate as distributed systems across networks
that include different types of computer and mobile devices.
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.
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”.
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.