Introduction
Introduction
INTRODUCTION TO
TO
SOFTWARE
SOFTWARE ENGINEERING
ENGINEERING
INTRODUCTION
INTRODUCTION AND
AND OVERVIEW
OVERVIEW
Venkat Srinivasan
1
M.Tech(I.T) INTRODUCTION & OVERVIEW
Evolution of a Developer
2
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE IS …
Important
– pervasive and essential part
of almost all organizations
– key part of many products
(embedded systems)
Software
Demand
Commercial
dollars/year spent worldwide
Scientific &
and growing Technical
1950 1960 1970 1980 1990 2000
8000
but Complex to develop
Man-months
6000
– B-2 bomber: 3.5MLOC 4000
– Windows 95: 15MLOC 2000
(plus 5,000 estimated bugs!) 100 200 300 400 500 600
1000’s of language statements
3
M.Tech(I.T) INTRODUCTION & OVERVIEW
Creating the illusion of simplicity
4
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE COMPLEXITY COMES FROM …
Application domain
– problems are complex
– developers are not domain experts
Coding
– creating useful software is a complicated process
5
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE COMPLEXITY LEADS TO …
Challenges
Performance
• Larger teams Engineer
• Specialization Analyst
• Distribution Project
Manager
• Rapid technology Developer
change Tester
Release
Engineer
8
M.Tech(I.T) INTRODUCTION & OVERVIEW
How Are We Doing?
Performance
Tester
Release
Engineer
9
M.Tech(I.T) INTRODUCTION & OVERVIEW
DEALING WITH COMPLEXITY —
MODULAR DEVELOPMENT
Large
Largesoftware
softwaresystems
systemsare
arecomplex
complexand
andchanging.
changing.
There
Thereisisaalimit
limitto
tohow
howmuch
muchaaperson
personcan
can
understand
understandat atany
anyone
onetime.
time.
The coupling
System
10
M.Tech(I.T) INTRODUCTION & OVERVIEW
MODULAR DEVELOPMENT (cont’d)
AAmodule’s
module’scoupling
couplingand
andcohesion
cohesion
are
aremanaged
managedand
andcontrolled
controlledvia
viaits
itsinterface.
interface.
12
M.Tech(I.T) INTRODUCTION & OVERVIEW
MODULAR DEVELOPMENT (cont’d)
>>>
>>> INTERFACE
INTERFACE <<< <<<
(encapsulation
(encapsulation++abstraction
abstraction==information
informationhiding)
hiding)
modularity defined via interfaces allows for:
– more productivity in team development
– fewer bugs
– more maintainable software
– more reusable software
CHALLENGES
CHALLENGES
––define
definegood
goodmodules
moduleswith
withthe
theright
rightthings
thingsin
intheir
theirinterfaces
interfaces
––specify
specifysuitable
suitablesoftware
softwarearchitectures
architecturesto
tosupport
supportcomponents
components
13
M.Tech(I.T) INTRODUCTION & OVERVIEW
DEALING WITH COMPLEXITY —
QUALITY DEVELOPMENT
15
M.Tech(I.T) INTRODUCTION & OVERVIEW
DEALING WITH COMPLEXITY —
PERSONNEL DEVELOPMENT
““programming-in-the-small”
programming-in-the-small”vs.
vs.“programming-in-the-large”
“programming-in-the-large”
17
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE ENGINEERING INVOLVES …
a modeling activity
– problem domain model models the application domain
– solution model models the system to be built
18
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE ENGINEERING INVOLVES …
19
M.Tech(I.T) INTRODUCTION & OVERVIEW
SOFTWARE ENGINEERING INVOLVES …
a LOT of documentation
20
M.Tech(I.T) INTRODUCTION & OVERVIEW