RPL - Week 1 - Introduction - Rev
RPL - Week 1 - Introduction - Rev
SOFTWARE ENGINEERING
Slide structure by Thomas Anung Basuki
Modified by Vania Natali
OVERVIEW
About the course
Motivation
System and software
System engineering and software engineering
5
ABOUT THE COURSE
COURSE GOALS
Students understand software engineering concepts
Students understand software engineering phases
Students understand techniques commonly used in each
phase of software engineering
Students are capable to apply software engineering
techniques to a small-scale project
5
TEXTBOOKS
[1] Roger S. Pressman, Software Engineering: A
Practitioner’s Approach 8th ed., McGraw Hill, 2015
[2] Ian Sommerville, Software Engineering 9th ed , Addison-
Wesley, 2011
[3] Rumbaugh, Jacobson and Booch, The UML Reference
Manual 2nd ed., Addison-Wesley, 2005
[4] Rod Stevens, Beginning Software Engineering, John
Wiley & Sons, 2015
5
MOTIVATION
Remember you team project(s) (ADPL, MIBD, etc.)?
Please explain about your software project!
How about your teamwork process?
Did the result match the requirement?
Does the software still ‘alive’?
Have you found any bug on your software?
5
The $0.0 Bill
A famous software engineering story about an executive
that receives a $0 bill
1st receipt: ignores it
2nd receipt: starts to feel anxious
3rd receipt: sends a $0 check
Creating another problem for the bank that issues the
check
5
TAURUS
Transfer and Automated Registration of Uncertified Stock
An effort by London Stock Exchange in 1983 to move from paper
based system to computerized system
Abandoned in March 1993, costed £75M+£400M
Tried to modify business process by removing the middlemen
(registrars), finally dropped on 1989
Starting from 1990 a system was purchased from US and modified to
adapt to British rules
Helga Drummond uses the proverb “He who rides a tiger can never
get off” to describe the issues with the project management. TAURUS
was carrying a large group, not all of which were sure they wanted to
be aboard the bull. Due to their arguing, they were unable to steer
TAURUS in the right directions and made many mistakes.
5
Ariane 5
Ariane 5 video
Launched on 4 June 1996
Exploded 40 seconds after launched
Exception (caused by conversion from 64-bit floating point
to 16-bit integer)
Both the main and backup module experienced the same
exception
Caused by a module that was only needed before
launching but apparently were still active until then
5
Mars Climate Orbiter
Launched on December 11, 1998
Lost on September 1999 (286 days later)
$327.6 million project
Using English metric system instead of international metric
system
5
Therac 25
Created high-energy beams to destroy tumors
Overdosed 6 people during 1985-1987
never officially investigated
Bad error messages
Only considers hardware errors
Bad manual
Race conditions
5
Patriot Antimissile System
During the Gulf War, a Patriot missile defense system
failed to track and intercept an incoming Scud, killing 28
Americans
inaccurate tracking calculation that became worse the
longer the system operated
Based on missile’s velocity (real numbers) and time of last
detection (integer converted to real number)
Limited accuracy (24 bit register)
Never used to defend against Scud (high speed)
5
Grounded Airplanes
Video (https://www.youtube.com/watch?v=54z56FbEtRk)
Britain airports delay flights because of software failure
Software update failed and cannot restart the system
Google
Top 10 Biggest Google Fails
5
SOFTWARE CRISIS
A term used in 1960s to describe problems related
with software development such as:
o Projects running over-budget
o Projects running over-time
o Software was very inefficient
o Software was of low quality
o Software often did not meet requirements
o Projects were unmanageable and code difficult to maintain
o Software was never delivered
Triggered the first NATO Software Engineering Conference in
1968 at Garmisch, Germany
5
The nature of software
The nature of software
Intangible, underestimating the amount of work
Costly in the development, almost no cost at mass-production
Labor-intensive, hard to automate
Physically easy to modify, tend to introduce bugs
Has to conform to its domain
5
Failure Curve for Hardware
Bathtub curve: indicates
that hardware exhibits
relatively high failure rates
early in its life (these failures
are often attributable to
design or manufacturing
defects); defects are
corrected and the failure rate
drops to a steady-state level
(hopefully, quite low) for
some period of time. As time
passes, however, the failure
rate rises again as hardware
components suffer from the
cumulative effects of dust,
vibration, abuse,
Source: [1] temperature extremes, and
many other environmental
maladies. 5
Failure Curves for Software
During its life, software will
undergo change. As changes
are made, it is likely that
errors will be introduced,
causing the failure rate curve
to spike as shown in the
“actual curve”. Before the
curve can return to the
original steady-state failure
rate, another change is
requested, causing the curve
to spike again. Slowly, the
minimum failure rate level
begins to rise—the software
is deteriorating due to
change.
Source: [1]
5
Discussion
Please describe the cause(s) of the software failure!
Bad Design
System
System
System definition:
a regularly interacting or interdependent group of
items forming a unified whole
a group of related natural objects or forces
a set of principles or procedures according to which
something is done; an organized scheme or
method.
General Systems Theory
How scientists understand the world:
Reductionism - break a phenomenon down into its constituent
parts
Statistics - measure average behavior of a very large number of
instances
But sometimes neither of these work:
Systems that are too interconnected to be broken into parts
Behavior that is not random enough for statistical analysis
General systems theory
Originally developed for biological systems:
E.g. to understand the human body, and the phenomena of ‘life’
Basic ideas:
Treat inter-related phenomena as a system
Study the relationships between the pieces and the system as a whole
Don’t worry if we don’t fully understand each piece
So what is a system
Ackoff’s definition:
“A system is a set of two or more elements that satisfies the
following conditions:
The behavior of each element has an effect on the behavior of the
whole
The behavior of the elements and their effect on the whole are
interdependent
However subgroups of elements are formed, each has an effect on
the behavior of the whole and none has an independent effect on it”
Or, more simply:
Weinberg: “A system is a way of looking at the world”
Systems don’t really exist!
Just a convenient way of describing things (like ‘sets’)
Elements of a system
Boundary
Separates a system from its
environment Subsystems
Often not sharply defined Subsystems
Also known as an “interface” Can decompose a system
into parts
Environment
Each part is also a system
Part of the world with which
the system can interact Subsystems are inter-
dependent
System and environment are
inter-related Control Mechanism
Observable Interactions How the behavior of the
system is regulated to allow it
How the system interacts with to endure
its environment
Often a natural mechanism
E.g. inputs and outputs
Emergent Properties
Properties that hold of a
system, but not of any of the
Conceptual Picture of a System
System engineering
System engineering is concerned with all aspect of
the development and evolution of complex system.
System engineering is an activity of specifying,
designing, implementing, validating, deploying, and
maintaining socio-technical systems.
System engineers are involved in specifying the
system, defining its overall architecture and then
integrating different parts to create finished system.
They are less concerned with engineering of the
system components (hardware, software, etc.)
System Engineering
Example of Air Traffic Control (ATC) Engineering
Integration System
and Test Design
Implementation
System Engineering Processes
The systems engineering process is applied at levels of greater and greater detail. It is
applied to the system, then to the subsystems, then to the components, etc. Similarly for
the fractal pattern above, the same algorithm was applied at the large structural level,
then at the medium-scale level, then at the fine-detail level, etc.
Systems engineering is the glue that holds it all together
How about the change of human culture?
Think about:
cinemas queue before online ticketing system
Highway gate before e-money system
etc
Organization, people, and computer systems
5
SE DEFINITION
the process of solving customer’s problems by the systematic
development and evolution of large, high-quality software
systems within cost, time and other constraints
[Leithbridge&Laganiere]
the engineering discipline whose focus is the cost-effective
development of high-quality software systems[Sommerville]
IEEE: (1) the application of a systematic, disciplined,
quantifiable approach to the development, operation,
maintenance of software; that is, the application of engineering
to software. (2) The study of approaches as in (1)
5
What is the Difference between Software
Engineering and System Engineering?
System engineering is concerned with all aspects
of computer-based systems development including
hardware, software and process engineering.
Software engineering is part of this process
concerned with developing the software
infrastructure, control, applications and databases
in the system.
System engineers are involved in system
specification, architectural design, integration and
deployment.
Types of Software
Custom software is developed to meet specific needs of a
particular customer
Generic or COTS (Commercial Off The Shelf) software is
designed to be sold on the open market
Embedded software runs specific hardware devices sold on the
market
Legacy software systems are old software systems that have
been continually modified to meet changes in business
requirements and computing platforms and are indispensable to
the business. The maintenance and evolution of these systems
are causing headaches to business organizations
5
Types of Software (2)
However, as time passes, legacy systems often evolve for
one or more of the following reasons:
The software must be adapted to meet the needs of new
computing environments or technology
The software must be enhanced to implement new business
requirements
The software must be extended to make it interoperable with other
more modern systems or databases
The software must be re-architected to make it viable within a
evolving computing environment.
5
Types of Software – new categories
(Pressman – 2015)
System software— a collection of programs written to
service other programs. Some system software (e.g.,
compilers, editors, and file management utilities)
processes complex, but determinate, information
structures. Other systems applications (e.g., operating
system components, drivers, networking software,
telecommunications processors) process largely
indeterminate data.
Application software —stand-alone programs that solve
a specific business need. Applications in this area process
business or technical data in a way that facilitates business
operations or management/technical decision making.
5
Types of Software – new categories
(Pressman – 2015)
Engineering/scientific software —a broad array of
“number-crunching programs that range from astronomy to
volcanology, from automotive stress analysis to orbital
dynamics, and from computer-aided design to molecular
biology, from genetic analysis to meteorology.
Embedded software— resides within a product or system
and is used to implement and control features and
functions for the end user and for the system itself.
Embedded software can perform limited and esoteric
functions (e.g., key pad control for a microwave oven) or
provide significant function and control capability (e.g.,
digital functions in an automobile such as fuel control,
dashboard displays, and braking systems). 5
Types of Software – new categories
(Pressman – 2015)
Product-line software —designed to provide a specific
capability for use by many different customers. Product-
line software can focus on a limited and esoteric
marketplace (e.g., inventory control products) or address
mass consumer.
Web/Mobile applications —this network-centric software
category spans a wide array of applications and
encompasses both browser-based apps and software that
resides on mobile devices.
5
Types of Software – new categories
(Pressman – 2015)
Artificial intelligence software— makes use of
nonnumerical algorithms to solve complex problems that
are not amenable to computation or straightforward
analysis. Applications within this area include robotics,
expert systems, pattern recognition (image and voice),
artificial neural networks, theorem proving, and game
playing.