0% found this document useful (0 votes)
41 views27 pages

Chapter 1

The document discusses software engineering and the software development life cycle. It defines software and describes software engineering as applying engineering principles and practices to software development. The document notes that early software development lacked discipline which led to software crises of overbudget, late, and poor quality projects. Modern practices emphasize systematic development through defined phases with requirements, design, coding, and testing. Life cycle models structure development by identifying phases, dependencies, and entry/exit criteria to develop software systematically and prevent errors.

Uploaded by

anil raj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views27 pages

Chapter 1

The document discusses software engineering and the software development life cycle. It defines software and describes software engineering as applying engineering principles and practices to software development. The document notes that early software development lacked discipline which led to software crises of overbudget, late, and poor quality projects. Modern practices emphasize systematic development through defined phases with requirements, design, coding, and testing. Life cycle models structure development by identifying phases, dependencies, and entry/exit criteria to develop software systematically and prevent errors.

Uploaded by

anil raj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 27

Software Engineering

CSE320
What is software?
Computer programs and associated
documentation

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
Bespoke (custom) - developed for a single customer
according to their specification
What is software engineering?
Software engineering is an engineering discipline
which is concerned with all aspects of software
production.
Software engineers should
adopt a systematic and organised approach to their
work.
use appropriate tools and techniques depending on
the problem to be solved,
the development constraints and
the resources available
What is Software
Engineering?
Engineering approach to develop
software.
Building Construction Analogy.
Systematic collection of past
experience:
techniques,
methodologies,
guidelines.
4
Software myths
1. If we get behind schedule, we can just add more people
Fact: Adding people to a late project makes it even later
Someone has to teach the new people
2. A general statement of objectives is enough to start
programming
Fact: Incomplete requirements are a major cause for project
failures.
3. Changes in requirements are easy to deal with because
software is flexible
Fact: Changes are hard and expensive
Especially during coding and after software deployment
4. Once we get the program running, we are done
Fact: Most effort comes after the software is delivered for
the first time.
Bug fixes, feature enhancements, etc.

5. The only product is the running program


Fact: Need the entire configuration
Documentation of system requirements, design,
programming, and usage
Software Crisis

Software products:
fail to meet user requirements.
frequently crash.
expensive.
difficult to alter, debug, and
enhance.
often delivered late.
use resources non-optimally.

7
Software crises

The various software crises are:


1. over-budget.
2. Not delivering product on time.
3. Product is of poor quality.
4. Software product is not meeting the customer
requirements.
Factors contributing to the
software crisis

Larger problems,
Lack of adequate training in
software engineering,
Increasing skill shortage,
Low productivity improvements.

9
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 usable

Maintainability
Software must evolve to meet changing needs
Dependability
Software must be trustworthy
Efficiency
Software should not make wasteful use of system resources
Usability
Software must be usable by the users for which it was designed
Programs versus Software
Products

Usually small in size Large


Author himself is sole Large number of
user users
Single developer Team of developers
Lacks proper user Well-designed
interface interface
Lacks proper Well documented &
documentation user-manual prepared
Ad hoc development. Systematic development

11
Object-Oriented Design (80s)

Object-oriented technique:
natural objects (such as employees,
pay-roll-register, etc.) occurring in a
problem are first identified.
Relationships among objects:
such as composition, reference, and
inheritance are determined.
12
Evolution of Other Software
Engineering Techniques
life cycle models,
specification techniques,
project management techniques,
testing techniques,
debugging techniques,
quality assurance techniques,
software measurement
techniques,
CASE tools, etc.
13
Differences between the exploratory
style and modern software
development practices

Use of Life Cycle Models


Software is developed through
several well-defined stages:
requirements analysis and
specification,
design,
coding,
testing, etc.
14
Differences between the exploratory
style and modern software
development practices

Emphasis has shifted


from error correction to error
prevention.
Modern practices emphasize:
detection of errors as close to
their point of introduction as
possible.
15
Differences between the exploratory
style and modern software
development practices (CONT.)

In exploratory style,
errors are detected only during
testing,
Now,
focus is on detecting as many
errors as possible in each
phase of development.
16
Differences between the exploratory
style and modern software
development practices (CONT.)
During all stages of
development process:
Periodic reviews are being carried
out
Software testing has become
systematic:
standard testing techniques are
available.
17
Differences between the exploratory
style and modern software
development practices (CONT.)

Projects are being thoroughly


planned:
estimation,
scheduling,
monitoring mechanisms.
Use of CASE tools.

18
Life Cycle Model
A software life cycle model (or
process model):
a descriptive and diagrammatic model
of software life cycle:
identifies all the activities required for
product development,
establishes a precedence ordering among
the different activities,
Divides life cycle into phases.
19
Why Model Life Cycle ?
A written description:
forms a common understanding of
activities among the software
developers.
helps in identifying inconsistencies,
redundancies in the development
process.

20
Why Model Life Cycle ?

Processes are tailored for special


projects.
A documented process model
helps to identify where the
tailoring is to occur.

21
Life Cycle Model (CONT.)

The development team must


identify a suitable life cycle model:
and then adhere to it.
Primary advantage of adhering to a
life cycle model:
helps development of software in a
systematic and disciplined manner.

22
Life Cycle Model (CONT.)

When a software product is being


developed by a team:
there must be a precise understanding
among team members as to when to
do what,
otherwise it would lead to and project
failure.

23
Life Cycle Model (CONT.)

A life cycle model:


defines entry and exit criteria for
every phase.
A phase is considered to be
complete:
only when all its exit criteria's are
satisfied.

24
Life Cycle Model (CONT.)

The phase exit criteria for the software


requirements specification phase:
Software Requirements Specification (SRS)
document is complete, reviewed, and
approved by the customer.
A phase can start:
only if its phase-entry criteria have been
satisfied.

25
Life Cycle Model (CONT.)

It becomes easier for software


project managers:
to monitor the progress of the
project.

26
Life Cycle Model (CONT.)

Many life cycle models have been


proposed.
We will confine our attention to a few
important and commonly used models.
classical waterfall model
iterative waterfall,
evolutionary,
prototyping, and
spiral model
27

You might also like