Prof.Hitesh Mohapatra
Dept. of Computer Engg.
Software is a product
What is Software?
Software is a set of items or objects
that form a configuration that
includes
programs
documents
data ...
What is Software?
software is engineered
software doesnt wear out
software is complex
Software Applications
system software
application software
engineering/scientific software
embedded software
product-line software
Web Apps (Web applications)
AI software
SoftwareNew Categories
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
Legacy Software
Why must it change?
Software Myths
Management Myths
Customer myths
Programmer myths
Software Engineering
Practice
Software engineering practice
- Communication practices
- Planning practices
- Analysis modeling practices
- Design modeling practices
- Construction practices
- Deployment practices
-
1)
2)
3)
4)
2)
3)
Never design yourself into a corner; build software that can be easily
changed and adapted
7)
Always specify, design, and implement knowing that someone else will
later have to understand and modify what you did
6)
5)
4)
The software should provide value to its users and satisfy the
requirements
Reuse of software reduces the long-term cost and increases the value
of the program and the reusable components
Communication Practices
(Requirements Elicitation)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking
Modelling
Analysis
Design
Construction
Code Test
Deployment
Delivery
Support
Feedback
15
Communication Principles
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
Planning Practices
(Defining a Road Map)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Modelling
Tracking
Analysis
Design
Construction
Code
Test
Deployment
Delivery
Support
Feedback
17
Planning Principles
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
Modeling Practices
(Analysis and Design)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking
Modelling
Analysis
Design
Construction
Code
Test
Deployment
Delivery
Support
Feedback
5)
2)
3)
4)
5)
6)
7)
8)
9)
Construction Practices
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking
Modelling
Analysis
Design
Construction
Code
Test
Deployment
Delivery
Support
Feedback
Coding Principles
(Preparation before coding)
1)
2)
3)
4)
5)
Coding Principles
(As you begin coding)
1)
2)
3)
4)
5)
6)
7)
8)
Coding Principles
1)
2)
3)
Testing Principles
All tests should be traceable to the software requirements
Tests should be planned long before testing begins
The Pareto principle applies to software testing
1)
2)
3)
4)
5)
Unit testing --> integration testing --> validation testing --> system
testing
Test Objectives
1)
2)
3)
Deployment Practices
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modelling
Analysis
Design
Construction
Code
Deployment
Test
Delivery
Support
Feedback
Deployment Principles
1)
2)
3)
4)
5)
Software Process
Process Models
Waterfall model
Incremental Process Models
Prototyping model
Spiral model
Component-Based Development
Formal Method model
Waterfall model
Incremental model
Inc 1
Inc 2
Inc 3
RAD Model
C o n s t r u c t io n
com ponent reuse
aut om at ic code
generat ion
t est ing
Team # 2
Mo d eling
b u si n e ss m o d e l i n g
dat a m odeling
p ro ce ss m o d e l i n g
Planning
Co nst r uct io n
Team # 1
co m p o n e n t re u se
a u t o m a t i c co d e
g e n e ra t i o n
t e st i n g
Mode ling
De ploym e nt
int egrat ion
deliv ery
feedback
business modeling
dat a modeling
process modeling
6 0 - 9 0 days
40
Process Models
Waterfall model
Incremental Process Models
Prototyping model
Spiral model
Component-Based Development
Formal Method model
Unified Process
Comparison of life-cycle models
Prototyping
plan
communication
Mo
d e lin g
Modeling
Qu ick d e sig n
Quick design
Deployment
Deployment
De live r y
delivery &
& Fe e dback
feedback
Construction
of
ofot
prototype
pr
ot ype
43
Spiral Model
Simplified form
Evaluation
Planning of next phase
communication
modeling
analysis
design
start
deployment
delivery
feedback
construction
code
test
47
COTS
Formal specification
Specification analysis and proof
Transformational development
Program verification
Unified Process
inception
co nst r uct io n
Release
soft ware increment
t r ansit io n
p r o d uct io n
54
UP (contd)
Inception
Customer communication
Planning
Rough architecture
UP (contd)
Elaboration
Customer communication
Modeling activity
Expands the use cases.
Expands the architecture to:
UP (contd)
Construction
UP (contd)
Transition
UP Work Products
Incept ion phase
Vision document
Init ial use-case model
Init ial project glossary
Init ial business case
Init ial risk assessment .
Project plan,
phases and it erat ions.
Business model,
if necessary .
One or more prot ot y pes
I nc e pt i o
n
59
Extreme Programming