Software Engineering:
A Practitioner's Approach, 6/e
Reference Book:- R.S. Pressman
Unit- 1
Introduction To Software Engineering
“ Software engineering discusses systematic and cost-
effective software development approaches”
All the past innovations and experiences of writing
good quality programs in cost-effective & efficient way
have been systematically organized into a body of
knowledge known as software engineering.
Difference between a Program and a
Software
A Software is a set of many
Program is a set of programs developed to support
instructions to wide functionalities
perform a desired function Software product is developed by
Programs are developed by a group of engineers and have
individuals for their personal multiple users
use They are too large in size and
Small in size and have limited have wide functionality as per
functionality requirements
Programs lack good user- Software product have good user
interface and proper interface, proper user manuals
documentation and good documentation support
Programs lack systematic Software product is
planning and implementation systematically designed, carefully
implemented and thoroughly
tested
Software’s Dual Role
Software is a product
Delivers computing potential
Produces, manages, acquires, modifies, displays, or
transmits information
Software is a vehicle for delivering a product
Supports or directly provides system functionality
Controls other programs (e.g., an operating system)
Effects communications (e.g., networking software)
Helps build other software (e.g., software tools)
Based on its dual role we can say
Software is(1) instructions that when executed
provide desired features, function & performance(2)
data structures that enable the programs to adequately
manipulate information & (3) documents that
describe the operation & use of the programs.
Characteristics of Software
software is engineered
software doesn’t wear out
software is custom built
Wear vs. Deterioration
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Time
Failure curve for hardware
Infant Mortality
Wear Out
Failure rate
Time
Software Applications
system software
application software
engineering/scientific software
embedded software
product-line software
WebApps (Web applications)
AI software
Legacy Software
Why must it change?
software must be adapted to meet the needs of
new computing environments or technology.
software must be enhanced to implement new
business requirements.
software must be extended to make it
interoperable with other more modern systems
or databases.
software must be re-architected to make it
viable within a network environment.
Software Myths
Management myths
Book of standards and procedures provide the people all
information they want
If we get behind schedule, we can add more programmers and
catch up
If I decide to outsource the software project, I can just relax
and let that firm build it
Customer myths
A general statement of objectives is sufficient to begin writing
programs
Project requirements continually change, but change can be
easily accomodated because software is flexible
Practitioner’s myths
Once we write the program and get it to work, our job is done
There is no way of assessing program quality until it executes
The only deliverable work product for a successful project is
the working program
Software engineering will make us create unnecessary
documentation and will invariably slow us down