Software Engineering
1
What is Science
Science (from the Latin scientia, 'knowledge’): any systematic
knowledge or practice.
Science refers to a system of acquiring knowledge through research
based on the scientific method,
It is done through observation of natural phenomena, and/or through
experimentation that tries to simulate natural processes under
controlled conditions.
2
What is Science
3
What is Engineering
• Engineering is applied science.
• Engineering is the application of science for practical
purposes.
• Engineers put theory into practice.
• “Engineering can be defined as the application of practical
and scientific knowledge to the solving of a problem through
the use of methodological process”.
4
Science vs Engineering
Knowledge Application of knowledge
Science seeks to explain Engineering seeks to
phenomena through apply natural laws to the
theory, hypothesis, and solution of practical
experiment, in an effort problems.
to ascertain natural laws.
For example, chemistry For example, chemical
investigates the structure engineering might use the
of chemicals and their results of chemistry to
interactions. come up with a better way
of refining gasoline.
5
Computer Science as a Science
Theory
Computability, automata, discrete computational
structures
Algorithm Analysis
Hypothesis
That a certain algorithm will solve a problem
Experiment
Run a program implementing the algorithm
6
Computer Science and Software
Engineering (Difference)
Computer Add
Science Customers
Customer
Theory of Algorithms & Programming
Computation Data Languages
Structures
Problem
Software
Engineering
Tools and Techniques
to Solve Problem
7
What is Software?
It is general term for various kinds of programs
used to operate computers and related devices.
Program is set of instructions.
Software is set of programs.
8
Definition of Software Engineering
• The process of solving customers’ problems by
the systematic development and evolution (well
understood techniques in an organized and
disciplined way) of large, high-quality software
systems (Teamwork and co-ordination, division
of work) within cost, time and other constraints
(Finite resources, estimates cost and time).
9
Software Project Success Triangle
Failure
et
Tim
dg
Bu
Success
e
Scope
10
Software Engineering Layers
Software engineering encompasses a process,
methods for managing and engineering
software, and tools.
11
Software vs Hardware
Software: Intangible Hardware: Tangible
parts of computer parts of computer
Software is a logical Hardware is a physical
system element. system element
Software is Hardware is
developed or manufactured in the
engineered. classical sense.
12
Similarities and Differences
Although some similarities exist between software
development and hardware manufacturing, the two
activities are fundamentally different. In both
activities, high quality is achieved through good
design, but the manufacturing phase for hardware
can introduce quality problems that are nonexistent
or easily corrected) for software.
Both activities are dependent on people, but the
relationship between people applied and work
accomplished is entirely different.
Both activities require the construction of a
“product,” but the approaches are different.
Software costs are concentrated in engineering.
13
Failure curve for hardware
Hardware wears out with time.
The relationship shown is called the
“bathtub curve”.
14
Failure rate curve for software
Software does not “wear out” but it does
deteriorate.
The relationship shown is shown through
“idealized curve” and “actual curve”.
15
“Wear out” aspect
When a hardware component wears out, it is
replaced by a spare part. There are no
software spare parts.
Every software failure indicates an error in
design or in the process through which design
was translated into machine executable code.
Therefore, the software maintenance tasks
that accommodate requests for change
involve considerably more complexity than
hardware maintenance.
16
Software Application Domains (7
categories)
System software
Application software
Engineering/scientific software
Embedded software
Product-line software
Web applications
Artificial intelligence software
Read from Software Engineering book in
detail (Roger Pressman)
17
Legacy Software
Legacy software systems were developed
decades ago and have been continually
modified to meet changes in business
requirements and computing platforms.
The proliferation of such systems is causing
headaches for large organizations who find
them costly to maintain and risky to evolve.
18
Problems in Legacy systems
Most legacy systems are of poor quality
(inextensible designs, convoluted code, poor
or nonexistent documentation, poor testing,
poor change management).
What to do?
Do nothing, at least until the legacy system
must undergo some significant change.
If the legacy software meets the needs of its
users and runs reliably, it isn’t broken and
does not need to be fixed.
19
Evolution of Legacy systems
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 network environment.
When these modes of evolution occur, a legacy
system must be reengineered, so that it
remains viable into the future.
20
Goal of modern Software Engineering
The goal of modern software engineering is to
“devise methodologies that are founded on the
notion of evolution”; that is, the notion that
software systems continually change, new
software systems are built from the old ones,
and . . . all must interoperate and cooperate
with each other” [Day99].
21
BOOKs
Course Books
Software Engineering, Ian Sommerville Addison
Wesley, 9th Ed
Software Engineering: A Practitioner's
Approach, Roger Pressman
Reference Books
Software Engineering, Theory and Practice by
Pfleeger, 3rd Edition.
Applying UML Patterns by Craig Larman
22