SOFTWARE ENGINEERING
CSE Dept Software Engineering: Introduction 1
Objectives
What is Software Engineering?
Why Software Engineering?
How to do Software Engineering?
CSE Dept Software Engineering: Introduction 2
What is Software Engineering?
A historical definition:
A systematic approach to the analysis, design, implementation and
maintenance of software
Software is a set of instructions to acquire inputs and to
manipulate them to produce the desired output. It also include a set
of documents, such as the software manual , meant for users to
understand the software system.
CSE Dept Software Engineering: Introduction 3
Software Engineering Definition
The application of engineering to software
Involves the field of computer science dealing with
software systems
large and complex
built by teams
exist in many versions
last many years
undergo changes
Software Engineer
Must know what to do, when to do it, and how to do
it efficiently
CSE Dept Software Engineering: Introduction 4
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.
New software can be created by developing new programs,
configuring generic software systems or reusing existing
software.
CSE Dept Software Engineering: Introduction 5
What is the difference between software
engineering and computer science?
Computer science is concerned with theory and
fundamentals; Software engineering is concerned with
the practicalities of developing and delivering useful
software.
CSE Dept Software Engineering: Introduction 6
Role of a Software Engineer
Programming skills are not enough
Software engineering involves "programming-in-the-
large"
understand requirements and write specifications
derive models and reasons about them
operate at various abstraction levels
member of a team
communication skills
management skills
CSE Dept Software Engineering: Introduction 7
Software Crisis
Large Software Systems Often
Do not provide the desired functionality
Take too long to build
Cost too much to build
Require too much time, space, or other resources to run
Cannot evolve to meet changing needs
CSE Dept Software Engineering: Introduction 8
Why Software Engineering?
9 software projects totaling $96.7 million: Where The Money Went
[Report to Congress, Comptroller General, 1979]
Delivered, but never
successfully used
45%
Used as delivered
2%
Usable w. rework
Paid for, but
3% not delivered
30% Why?
Used w. extensive rework, Software hurts
but later abandoned
Requirements
20%
design
CSE Dept Software Engineering: Introduction 9
What Factors Contribute to Project Success?
Standish Group, 01 (www.standishgroup.com)
Project Success Factors
The CHAOS Ten
1. Executive Management Support
28%
2. User Involvement
3. Experienced Project Manager
completed on time
4. Clear Business Objectives
and on budget
5. Minimized Scope
overran original estimates: 6. Standard Software Infrastructure
-Time overrun averaged 63%
- Cost overrun averaged 45%
canceled before 7. Firm Basic Requirements
completion
8. Formal Methodology
49% 9. Reliable Estimates
23% 10. Other
CSE Dept Software Engineering: Introduction 10
What Factors Contribute to Project Failure?
The CHAOS Ten The CHAOS Ten
CSE Dept Software Engineering: Introduction 11
Why Software Engineering?
What do software engineers do?
Non-productive
Activities
30%
Interaction
Work alone 50%
20%
programming software engineering
personal activity team activity
small, clear problem large, nebulous problem
CSE Dept Software Engineering: Introduction 12
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
CSE Dept Software Engineering: Introduction 13
Why Software Engineering?
Major symptoms of the software crises:
Over budget
Schedule slippage
Poor quality
Major causes of the software crises:
The "software crises" came about when people realized the major problems in
software development were caused by communication difficulties and the
management of complexity [Budd]
CSE Dept Software Engineering: Introduction 14
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
Design Diagrammatical representation of system
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.
CSE Dept Software Engineering: Introduction 15
What is a software process model?
A simplified representation of a software process,
presented from a specific perspective.
Examples of process perspectives are
Workflow perspective - sequence of activities;
Data-flow perspective - information flow;
Role/action perspective - who does what.
Generic process models
Waterfall;
Iterative development
CSE Dept Software Engineering: Introduction 16
How to Do Software Engineering?
Software Lifecycle Review
Systems Engineering
Quality Assurance
Requirements Analysis
Project Planning
Maintenance
Architectural Design
Detailed Design
Implementation
Release
CSE Dept Software Engineering: Introduction 17
Why SE?
CSE Dept Software Engineering: Introduction 18
CSE Dept Software Engineering: Introduction 19
CSE Dept Software Engineering: Introduction 20
CSE Dept Software Engineering: Introduction 21
CSE Dept Software Engineering: Introduction 22
CSE Dept Software Engineering: Introduction 23
CSE Dept Software Engineering: Introduction 24
CSE Dept Software Engineering: Introduction 25
CSE Dept Software Engineering: Introduction 26