You are on page 1of 37

Software Engineering

Software Engineering
an Overview
Ranjit Raman
Team Coordinator
E-Gov, C-DAC, Pune

Why is Software Different?

Software is engineered, not manufactured.


Software Doesnt Wear out

Most software are custom-build

Infant
mortality

Hardware
Failure rate.

Time

Wear out

LIST OF PROBLEMS
Role of Software :
Advances in Hardware outpace the software.
Cannot keep pace with the demand for new Software.

Struggle to build high quality and reliable software.


Ability to support and enhance existing programs is
threatened by poor doc and inadequate resources.

LIST OF PROBLEMS
Industry Perspective :
Why does it take so long to get programs finished ?
Why are costs so high?

Why cant we find all errors before we give the


software to our customers ?

LIST OF PROBLEMS
Ageing of S/W plant :
Even small changes can fail the S/W.
No one understands the internals.

Why Projects Fail ?

Lack of clear & understandable specifications


Poor Documentation
Over Ambitious Objectives
Poor Communication

Definition of Software Engineering

The application of a systematic, disciplined,


quantifiable approach to development, operation,
and maintenance of software; that is, the application
of engineering to software.
IEEE Standard Computer Dictionary, 610, ISBN 1-55937-0793, 1990

Why?

As a solution provider, you need to


understand why the customer is interested in
your solution.
Understanding of the context and
background of the customers request
Without this, you will not feel the
importance of the project/product.

What?

What the customer is looking for?


Requirements and Analysis would cover this
in a formal way.
i.e. What solution will suit the purpose than
what you can do or would like to do.

How?

How to implement? What are the methods


to be followed?

Follow a scientific way of implementing the


project/ developing the product.

Phases of Software Development


1. Project Startup - Concept, Proposal.

2. Requirements and Analysis.


3. High level Design.
4. Low level Design.

5. Construction - Unit test, Code inspection.


6. Integration and System tests.
7. Replication, delivery, installation.

8. Acceptance Testing (Requirements mapped)


9. Maintenance (may involve all the above)
10. Project windup - Checklist, Report, Lessons learnt.

SDLC

Scope

Determine project scope

Secure project sponsorship

Define preliminary resources

Secure core resources

Scope complete

How the customer explained it

SDLC

Requirements

Scope

Conduct needs analysis


Draft preliminary software specifications
Develop preliminary budget
Review software specifications/budget with team
Incorporate feedback on software specifications
Develop delivery timeline
Obtain approvals to proceed (concept, timeline,
budget)
Secure required resources
Analysis complete

How the project leader understood it

SDLC

Design

Scope
Requirements

Review preliminary software specifications


Develop functional specifications

Review functional specifications


Incorporate feedback into functional
specifications

Obtain approval to proceed


Design complete

How the system analyst designed it

SDLC

Development

Scope
Requirements
Design

Identify modular/tiered design parameters

Assign development staff

Develop code

Developer testing (primary debugging)

How the programmer wrote it

SDLC

Testing

Scope
Requirements
Design
Development

Develop unit test plans using product


specifications
Develop integration test plans using product
specifications

Unit Testing
Review modular code
Test component modules to product
specifications
Identify anomalies to product specifications
Modify code
Re-test modified code

SDLC

Testing

Scope
Requirements
Design
Development

Integration Testing

Test module integration

Identify anomalies to specifications

Modify code

Re-test modified code

(Contd)

What operations installed

SDLC

Training

Scope
Requirements
Design
Development

Develop training specifications for end users


Develop training specifications for helpdesk
support staff

Identify training delivery methodology


(computer based training, classroom, etc.)

Develop training materials


Conduct training usability study
Finalize training materials

Develop training delivery mechanism

Testing

SDLC

Documentation

Scope
Requirements
Design
Development
Testing

Training

Develop Help specification


Develop Help system
Review Help documentation
Incorporate Help documentation feedback

Develop user manuals specifications


Develop user manuals
Review all user documentation
Incorporate user documentation feedback

How the project was documented

How the customer explained it

How the project leader understood it

How the system analyst designed it

How the programmer wrote it

How the Business Consultant described it

How the project was documented

What operations installed

How the customer was billed

How it was supported

What the customer really needed

Benefits of SDLC

Increasing quality

Reducing project cost and schedule

Achieve conformance to requirements


reduce the number of software defects
mitigate risks associated with the software
provides a framework for systematic, incremental software process improvements
reduces the cost and schedule of the testing, installation, and maintenance phases

Improving manageability

enhanced accuracy of project planning


detailed means of tracking projects
early measures of software quality
improved repeatability of success stories

You might also like