0% found this document useful (0 votes)
23 views46 pages

SE Lec1

The document provides an overview of software engineering, defining it as the systematic development and evolution of high-quality software systems to solve customer problems. It distinguishes between science and engineering, emphasizes the differences between software and hardware, and discusses the challenges of legacy systems. Additionally, it outlines the software development life cycle, including feasibility studies, analysis, design, implementation, testing, and maintenance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views46 pages

SE Lec1

The document provides an overview of software engineering, defining it as the systematic development and evolution of high-quality software systems to solve customer problems. It distinguishes between science and engineering, emphasizes the differences between software and hardware, and discusses the challenges of legacy systems. Additionally, it outlines the software development life cycle, including feasibility studies, analysis, design, implementation, testing, and maintenance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 46

Software Engineering

Lecture # 01

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 solve a problem through the use
of the methodological process in an optimized way”.

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 program(s)
used to operate computers and related devices
with a set of established requirements and a
systematic Design.

🞂 Program is set of instructions.

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 (Mobile, Game etc)
🞂 Engineering/scientific software
🞂 Embedded software
🞂 Product-line software
🞂 Web applications
🞂 Artificial intelligence software

Read from Software Engineering book in


detail (Roger S. 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.
Why does an organization need new 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

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
🞂 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.

🞂 Rapid increases in processing speed, RAM size


and speed, Storage technologies, and other
hardware
🞂 Increase in the level of complexity of the
problems, making existing methods inefficient.

🞂 The term "software crisis" was coined by some


attendees at the first NATO Software
Engineering Conference in 1968 at Germany.
Causes
🞂 over-budget.
🞂 over-time.
🞂 Inefficient Software.
🞂 low quality.
🞂 did not meet requirements.
🞂 Projects were unmanageable and code difficult
to maintain.
Roots of crises
Complexity,
Conformity,
Changeability,
Invisibility.
Attributes of a good Software
🞂 ???

26
System Life Cycle

The methodology that defines phases through which


a system passes from its conception to the
termination of its users.
Members of the Development Team
Members of the Development Team

🞂 Requirement Analysts: work with the customers to


identify and document the requirements (Now called
Business Analyst)
🞂 Designers: generate a system-level description/solution
of what the system Is supposed to do.
🞂 Programmers: write lines of code to implement the
design.
🞂 Testers: catch faults.
🞂 Trainers: show users how to use the system.
🞂 Maintenance Team: fix faults that show up later.
🞂 Librarians: prepare and store documents such as
software requirements.
🞂 Configuration Management Team: maintain
correspondence among various artefacts.
🞂 Project Manager/Product Manager/Teach Lead
System Life Cycle
Feasibility Study

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?

At the end feasibility report is produced by


the System Analyst.
If the project report concludes that the project
should go ahead and this is agreed by the
Senior Managers the detailed
requirement analysis will be produced.
Analysis

🞂 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.

1. Interview  High level of detail and the


opportunity to change their questions as the
interview takes place.
2. Questionnaire  Suitable for giving to lots of
people to collect statistical data. So great when
you need to get detailed response.
Methods of gathering information
3. Document gathering
 Fantastic way to find out what data goes in to
and out of the system.
Give Analyst good idea of how the data might
be processed.
4. Observation
 Allow you to make your own judgment on what
steps are taken
Design
🞂 After Analysis is completed the system
designer(DevOps, UI/UX Designer,
Functionality Designer, DataEngineer etc)
can design a solution,
Implementation
🞂 When the design of the system has been
established, it is the time to built it.

🞂 This part involves taking the solution design and


turning it into an actual product.

🞂 This part may be longest depending upon the


size of the project.
Testing
Different tests need to take place to ensure that
everything is working as it should.
 Checking system using normal data
(Data that should be accepted by the
system)
Checking the system using abnormal data
(unexpected data)
Checking the system using extreme data
(testing range of data)
 Tested against user requirements
The company who releases a product
that doesn’t work well will lose more than
just the money.
Installation
🞂 Installing the product in the real time
environment to check and use.
🞂 Also called “Deployment”.
Documentation
🞂 Solution has been installed, it is important to
provide documentation to the client for
technical support and User Basic Q&A.

🞂 What it include?
Evaluation and Maintenance

🞂 The product is evaluated and maintained timely


whenever needed.
Q/A

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy