Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
What is Software
Engineering?
Engineering approach to develop
software.
Building Construction Analogy.
Systematic collection of past
experience:
techniques,
methodologies,
guidelines.
Counting number of persons in a room v/s
the Census (i.e. population of a country )
3
What do we want in a system?
(What are the important attributes of
good software?)
Reliability
Efficiency
Maintainable/ Adaptable
Accessible / Usable (good interface design)
Cost Effectiveness
Safety
Robustness
Recoverability
Portability
Understandability
4
Reliability describes the ability of a
system to keep functioning correctly
under specific use over a given period.
(System should not fail in adverse
circumstances) e.g. health care system,
patient monitoring system, auto pilot
system.
5
The test for efficiency measures the
required time and consumption of
resources for the fulfillment of tasks.
Resources may include other software
products, the software and hardware
configuration of the system etc. e.g. ATM.
6
Usability is very important for interactive
software systems. Users will not accept a
system which is hard to use. So the
system should be easy to use.
7
Fault tolerance is the capability of the
software product to maintain a specified
level of performance, or to recover from
faults in cases of any software faults.
8
Why Study Software Engineering?
(1)
10
Why Study Software Engineering?
(2)
To acquire skills to be a
better software engineer
(analyst/designer/developer/
tester…) instead of a
programmer:
To achieve Higher Productivity
Produce Better Quality Programs...
12
Software Crisis
Software projects:
Over budgets.
Over Schedules.
Large number of Cancellation.
Uncontrolled and unmanaged.
14
Software Crisis…
Research from Standish Group Data on 9236 development
projects completed in 2004.
15
Software Crisis (cont.)
Hw cost
Sw cost
1960 Year
1999…
Relative Cost of Hardware and Software
16
Factors Contributing to the
Software Crisis
17
How was Software usually
Constructed …
The requirements The developers This is how the This is how the
specification was understood it in problem was programmers
defined like this that way designed before. coded it
That is the program This is how the program is This, in fact, is what the
18
after debugging described by marketing dept. customer wanted … :-)
Software in the 21st Century…
19
19
What is Software
Engineering?
20
Software Engineering…
21
Software Engineering…
Broad definition:
The methods, processes, technologies and tools by which
software systems are developed and maintained.
Encompasses many areas:
– Planning and managing software projects
– Requirements Analysis and Specification
– System Modeling and Design
– System Implementation
– Testing and quality assurance
– Maintenance
22
The important approach to tackle the
complexity of given problem is
decomposition. In this technique, a
complex problem is divided into several
smaller problems and then the smaller
problems are solved one by one.
23
The important principle of abstraction
implies that a problem can be simplified
by omitting irrelevant details. In other
words, the main purpose of abstraction is
to consider only those aspects of the
problem that are relevant for certain
purpose and suppress other aspects that
are not relevant at this time and for given
purpose.
24
Software Characteristics
25 25
Software…
26
software..
Software products may be:
GENERIC
developed to be sold to a range of different customers
e.g. PC software such as Excel or Word.
referred to as commercial off-the-shelf (COTS) software
or clickware supplied by a vendor
27
What are the important
attributes of good software?
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable and
acceptable.
Maintainability:
Software must evolve to meet changing needs;
Dependability
Software must be reliable;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible with
other systems.
28
Software Characteristics
Many Types..
System software, Real Time systems, Business
software, Scientific software, Embedded
software, PC based software, Web based
software, AI software etc.
Products
Generic or Packaged (COTS)
Custom Built
Sources
Open (shareware) easily shared,
Closed (Proprietary), have to be purchased
29 CISH-6050 - Software Engineering Management
29
Software Myths
(Management Perspectives)
As long as there are good standards and clear procedures
in my company, I shouldn’t be too concerned.
manuals
object plans
codes
data
20 20
15
relative effort to repair
10
5 5
1 2
0.5
0 0.15
Maintenance
Unit test
Acc. Test
Reqmts
Design
Coding
Small bug in the initial phase (requirements),
Becomes an error in later phases,
May become serious fault in testing phase,
And can be the major cause of system,
failure after implementation.
42
Boehm’s Top Ten
Industrial Software Metrics
100 Hardware
Software
80
60
40
20
0
1960 1970 1980 1990
Boehm’s Top Ten
Industrial Software Metrics
10
25 5
45
Testing
15 40
Coding 20 30
15
Design 45
30
20
Analysis
Traditional Structured CASE environment
environment techniques
Reverse Engineering ??
53
Boehm’s Top Ten
Industrial Software Metrics
Walkthroughs/reviews catch
9 around 65% of the errors.
Distribution of Activities
in Defect Removal
walkthru
unit test
evaluation
10 5 10 integration
other
10
65
Software Myths
(Developer Perspectives)
20% 80%
modules cost
Boehm’s Top Ten
Industrial Software Metrics
20% 80%
modules errors
Boehm’s Top Ten
Industrial Software Metrics
20% 80%
modules cost
to fix the
errors
Symptom of Software
Crisis
about US$250 billion spent per year in the
US on application development
of this, about US$140 billion wasted due to
the projects getting discarded or reworked;
this in turn because of not following best
practices and standards in the
development process i.e. S.E.
65
Programs versus Software
Products
66
Programs versus Software
Products
67
Programs versus Software
Products
Student Program Industrial Strength
SW not in critical use, Supports important
Reliability, robustness functions / business,
not so important, Reliability , robustness
Not much investment, are very important,
Don’t care about Heavy investment,
portability. Portability, scalability is
a key issue here,
68
Computer Systems
Engineering
Computer systems engineering:
encompasses software engineering.
Many products require development
of software as well as specific
hardware to run it:
an ATM,
a coffee vending machine,
a mobile communication product, etc.
69
Computer Systems
Engineering
70
Computer Systems
Engineering (CONT.)
71
Computer Systems
Engineering (CONT.)
Feasibility
Study
Requirements
Analysis and
Specification Hardware
Development
Hardware
Software
Partitioning
Software
Development Integration
and Testing
Project Management
72
Emergence of Software
Engineering
74
High-Level Language
Programming (Early 60s)
75
High-Level Language
Programming (Early 60s)
76
…. in late 60s…
Programmers found:
programs written by others were very
difficult to understand and maintain.
To cope up with this problem, experienced
programmers advised: ``Pay particular
attention to the design of the program's
control structure.'’
78
Control Flow-Based Design (late 60s)
60s)
85
Control Flow-Based Design (Late
60s)
86
Control-flow Based Design (Late 60s)
Everyone accepted:
it is possible to solve any
programming problem without
using GO TO statements.
This formed the basis of
Structured Programming
methodology.
87
Structured Programming
88
Structured programs…
89
Structured programs …
91
Data Structure-Oriented
Design (Early 70s)
93
Data Structure-Oriented
Design (Early 70s)
94
Data Flow-Oriented Design (Late
70s)
99
Data Flow-Oriented Design (Late
70s)
Object-oriented technique:
a naturally appealing design
approach:
natural objects (such as
employees, pay-roll-register, etc.)
occurring in a problem are first
identified.
103
Object-Oriented Design (80s)
104
Object-Oriented Design (80s)
Object-Oriented Techniques
have gained wide acceptance:
Simplicity
Reuse possibilities
Lower development time and cost
More robust code
Easy maintenance
105
Evolution of Design
Techniques
Object-Oriented
Data flow-based
Data structure-
based
Control flow-
based
Ad hoc
106
Evolution of Other Software
Engineering Techniques
110
Differences Between the Exploratory Style
and Modern Software Development Practices..
In exploratory style,
errors are detected only during
testing,
Now,
focus is on detecting as many
errors as possible in each
phase of development.
111
Differences Between the Exploratory Style
and Modern Software Development Practices..
In exploratory style,
coding is synonymous with
program development.
Now,
coding is considered only a
small part of overall software
development effort.
112
Differences Between the Exploratory Style
and Modern Software Development Practices..
113
Differences Between the Exploratory Style
and Modern Software Development Practices..
117
Software Life Cycle
119
Some Root Causes for Failure
120
Life Cycle Model
A written description:
forms a common understanding of activities
among the software developers.
helps in identifying inconsistencies,
redundancies, and omissions in the
development process.
Helps in selecting a process model for
specific projects (according to application
domain).
124
Life Cycle Model (CONT.)
126
Life Cycle Model (CONT.)
127
Life Cycle Model (CONT.)
128
Life Cycle Model (CONT.)
130
Life Cycle Model (CONT.)
131
Life Cycle Model (CONT.)
132
Life Cycle Model (CONT.)
134
Life Cycle Model (CONT.)