SE Lec1
SE Lec1
Lecture # 01
1
What is Science
🞂 Science (from the Latin scientia, 'knowledge’): any systematic
knowledge or practice.
2
What is Science
3
What is Engineering
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
Software
Engineering
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
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 (Mobile, Game etc)
🞂 Engineering/scientific software
🞂 Embedded software
🞂 Product-line software
🞂 Web applications
🞂 Artificial intelligence software
17
Legacy Software
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
21
BOOKs
🞂 Course Books
🞂 Software Engineering, Ian Sommerville Addison Wesley, 9th Ed
🞂 Software Engineering: A Practitioner's Approach, Roger Pressman
🞂 Reference Books
🞂 1. Robert C. Martin, “Clean Code: A Handbook of Agile Software
Craftsmanship”, 1st ed., Pearson, 2008
🞂 2. Eric Freeman, Elisabeth Robson, “Head First Design Patterns:
Building Extensible and Maintainable Object-Oriented Software” 2nd
ed., O'Reilly Media, 2021
🞂 3. Introduction to Software Engineering Design: Processes,
Principles and Patterns with UML2, Christopher Fox, Addison-Wesley
Professional
🞂 4. Applying UML and Patterns: An Introduction to Object-Oriented
Analysis and Design and Iterative Development, Pearson; 3rd edition
by Craig Larman
🞂 5. Software Testing: Principles and Practices, from Naresh Chauhan,
published by Oxford University Press. ISBN 13: 978-0-198-06184-7
22
Software Crisis
🞂 Difficulty of writing useful and efficient
computer programs in the required time.
26
System Life Cycle
When a problem is
recognized and identified,
the feasibility study is
initiated.
Purpose To fully
understand the problem
and to work out if the
problem is worth fixing.
Feasibility Study
🞂 Technical
Is the idea of the new system a practical
solution to the problem?
Does technology exist? Or exist with
affordability?
🞂 Economical
Is the system cost-effective?
Cost > benefit
or
Benefit > cost
Feasibility Study
🞂 Legal
Will it meet legal framework?
🞂 Operational
Will the system fit in with the current way of
the system?
Will staff need to be reconstructed?
Feasibility Study
🞂 Schedule
Can the system be created on time?
🞂 Detailed report
focus on the current
system and the
requirements of the
proposed system.
🞂 System Analyst job
is to find about
current methods
user requirements
and to assess the
feasibility report of
the project.
Analysis
🞂 How data and information flows through an
organization?
🞂 How proposed system will do it?
🞂 Show detail cost and benefit.
🞂 Explain how system will be Implemented .
🞂 Who the end users are?
🞂 What information they will get in?
Methods of gathering information
Analyst will employ the most suitable method for
gathering information from the client.
🞂 What it include?
Evaluation and Maintenance