You are on page 1of 26

SOFTWARE ENGINEERING

CS-602

Lecture-1

An Introduction to Software
Engineering
Engineering
 Example: Building a house
 Land and finances System Feasibility

 Garden, garage, youSoftware


are usedPlans
to age&wine, enjoy to sit by the fireplace,
Requirements
lots of storage etc.
 Architect will define numberProduct
of floors and rooms, orientation of the
Design
driveway, size of the garage, etc.
Detailed Design
 Type of bricks, color of walls, etc.
 Construction Code

 Entering Integration (Product verification)

 Living in the house Integration (System Test)

 Fixing minor problems, leaking in


Operations themaintenance
and roof,….
2/9/2010 Introduction ©S.S.Baidya 2
What is software?
 Computer programs and associated documentation
such as requirements, design models and user
manuals.
 Software products may be developed for a particular
customer or may be developed for a general market.
 Software products may be
 Generic - developed to be sold to a range of different
customers e.g. PC software such as Excel or Word.
 Bespoke (custom) - developed for a single customer
according to their specification.

2/9/2010 Introduction ©S.S.Baidya 3


What is Software Engineering?
 Software engineering is an engineering approach for software
development.
 Engineering is the analysis, design, construction, verification,
and management of technical (or social) entities.
 For example, a program of size 1,000 lines of code has some
complexity. But a program with 10,000 LOC is not just 10
times more difficult to develop, but may as well turn out to be
100 times more difficult unless software engineering principles
are used.
 In such situations software engineering techniques come to
rescue.

2/9/2010 Introduction ©S.S.Baidya 4


What is Software Engineering?
 Software engineering helps to reduce the programming
complexity.

 Software engineering principles use two important techniques


to reduce problem complexity: abstraction and
decomposition.

2/9/2010 Introduction ©S.S.Baidya 5


What is Software Engineering?
 The principle of abstraction implies that a problem can be
simplified by omitting irrelevant details i.e., the main purpose
of abstraction is to consider only those aspects of the problem
that are relevant for certain purpose and suppress other aspects
that are not relevant for the given purpose.
 Once the simpler problem is solved, then the omitted details
can be taken into consideration to solve the next lower level
abstraction, and so on.
 The other approach to tackle problem complexity is
decomposition.
 A complex problem is divided into several smaller problems
and then the smaller problems are solved one by one.

2/9/2010 Introduction ©S.S.Baidya 6


Abstraction & Decomposition

Decomposition of a large
problem into a set of
A hierarchy of abstraction smaller problems.
2/9/2010 Introduction ©S.S.Baidya 7
What is Software Engineering?
 Software engineering is a layered technology.

Tools
Methods
Process
Quality

2/9/2010 Introduction ©S.S.Baidya 8


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.

2/9/2010 Introduction ©S.S.Baidya 9


What is a software process?
 A set of activities whose goal is the development or evolution of
software.
 Generic activities in all software processes are:
 Specification - what the system should do and its
development constraints
 Development - production of the software system
 Validation - checking that the software is what the customer
wants
 Evolution - changing the software in response to changing
demands.

2/9/2010 Introduction ©S.S.Baidya 10


What is a software process model?
 A simplified representation of a software process, presented
from a specific perspective.

 Generic process models


 Waterfall;
 Iterative development;
 Component-based software engineering.

2/9/2010 Introduction ©S.S.Baidya 11


Software Process Model
System Feasibility

Software Plans &


Requirements

Product Design

Detailed Design

Code

Integration (Product
verification)

Integration (System Test)

Operations and
maintenance
2/9/2010 Introduction ©S.S.Baidya 12
What are the costs of
software engineering?
 Roughly 60% of costs are development costs, 40% are testing
costs. For custom software, evolution costs often exceed
development costs.

 Costs vary depending on the type of system being developed


and the requirements of system attributes such as performance
and system reliability.

 Distribution of costs depends on the development model that is


used.

2/9/2010 Introduction ©S.S.Baidya 13


What are the attributes of good software?
 The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and acceptable.
 Maintainability: Software must evolve to meet changing
needs;
 Dependability: Software must be trustworthy;
 Efficiency: Software should not make wasteful use of
system resources;
 Acceptability: Software must be accepted by the users for
which it was designed. This means it must be
understandable, usable and compatible with other systems.
2/9/2010 Introduction ©S.S.Baidya 14
The Human Factor

User Programmer

SOFTWARE

Customer
Designer

2/9/2010 Introduction ©S.S.Baidya 15


The Human Factor
Programmer’s View:
User •Some lines of code
Programmer
•A technical challenge

SOFTWARE

Customer
Designer

2/9/2010 Introduction ©S.S.Baidya 16


The Human Factor
User’s View:
•A wonderful
User tool making things easier Programmer
•Something that simply should work!

SOFTWARE

Customer
Designer

2/9/2010 Introduction ©S.S.Baidya 17


The Human Factor

User Programmer

SOFTWARE

Customer’s View:
•A Customer
hopefully affordable tool
Designer
to enhance profit.

2/9/2010 Introduction ©S.S.Baidya 18


The Human Factor

User Programmer

SOFTWARE

Designer’s View:
Customer
Designer tool to
•A reasonably complicated
fulfill the needs
•A technical challenge
2/9/2010 Introduction ©S.S.Baidya 19
Example: The Phone Directory
 Example will show activities:
 Requirements
 Analysis
 Design
 Implementation

2/9/2010 Introduction ©S.S.Baidya 20


Phone Directory: Requirements
 Phone Directory:
 Interactive program containing collection of names and
phone-numbers.
 Insert new entries
 Retrieve entries
 Change entries

2/9/2010 Introduction ©S.S.Baidya 21


Phone Directory: Detailed Requirements
 Limited name length?
 Numbers as string?
 Printout required?
 Read from file or enter directly?
 Order alphabetically?
 Double entries possible?
 etc……….

2/9/2010 Introduction ©S.S.Baidya 22


Phone Directory: Analysis
 Requirement related:
 Understand All requirements.
 Explore Every uncertainty.

 Implementation strategy:
 Design specific or reusable software?
 Which language?

2/9/2010 Introduction ©S.S.Baidya 23


Phone Directory: Analysis
 High level design:
 Different methodologies like Top-down approach, Object-oriented
approach.
 Top-down Design
 Stepwise Refinement, Divide and Conquer

Write the telephone Level 0


directory program

Read the initial Insert a new Edit an Retrieve and


Level 1
directory entry entry display an entry

2/9/2010 Introduction ©S.S.Baidya 24


Analysis: Top-down Design
Refinement
Write the telephone Level 0
directory program

Read the initial Insert a new Edit an Retrieve and


Level 1
directory entry entry display an entry

Read the initial


Level 1
directory

Read an entry Store an entry Level 2


from file in the directory

2/9/2010 Introduction ©S.S.Baidya 25


Analysis: Top-down Design
 When should we stop the refinement?

 Each sub-problem should be responsible for exactly


ONE activity.

2/9/2010 Introduction ©S.S.Baidya 26

You might also like