0% found this document useful (0 votes)
13 views109 pages

Introduction to Software Engineering Concepts

The document provides an introduction to software engineering, outlining its importance, principles, and the evolution of practices in the field. It discusses the software crisis, factors contributing to project failures, and the essential attributes of good software. Additionally, it emphasizes the need for systematic approaches and methodologies in software development to ensure high-quality outcomes.

Uploaded by

2023ucp1843
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views109 pages

Introduction to Software Engineering Concepts

The document provides an introduction to software engineering, outlining its importance, principles, and the evolution of practices in the field. It discusses the software crisis, factors contributing to project failures, and the essential attributes of good software. Additionally, it emphasizes the need for systematic approaches and methodologies in software development to ensure high-quality outcomes.

Uploaded by

2023ucp1843
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Software

Engineering

1
Chapter 1

Software
Engineering
INTRODUCTION

2
Organization of this Chapter :

 What is Software Engineering?


 Programs vs. Software Products.
 Evolution of Software Engineering.
 Notable Changes In Software.
Development Practices.
 Introduction to Life Cycle Models.
 Summary.

3
Introduction

For developing a building


structure,
Civil Engineering principles
are used !!

4
Introduction...
For developing a bicycle,
Mechanical Engineering
principles are used !

For developing an engine,


Mechanical Engineering is
applied !!

5
Introduction...

For developing a fan/ bulb,


transformer
Electrical Engineering is applied !

For developing a radio, TV, Phone...


Electronics Engineering is used !!

6
Introduction...

Similarly,

For developing a SOFTWARE,


Software Engineering
principles
are used !!

7
Introduction...

 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 ) 8
Why Study Software Engineering? (1)

 To acquire skills to develop


large... programs.
 Exponential growth in complexity
and difficulty level with size.
 The ad-hoc approach breaks down
when the size of software increases.

10 lines.... 100 lines..... 500 lines.... 1000


lines.... 10000 lines.... 20,000 lines.... And
more..... 9
Why Study Software Engineering? (2)

 Ability to solve complex


programming problems:
 How to break/divide large projects
into smaller and manageable parts?
 Learn techniques of:
 specification, design, interface
development, testing, project
management, etc.
10
Why Study Software Engineering? (3)

 To acquire skills to be a better


“software engineer” (i.e.
analyst/ designer/ developer/
tester…) instead of a
programmer:
 To achieve Higher Productivity
 Produce Better Quality Programs...

11
Software Crisis
 In early days, Software products:

 fail to meet user requirements.


 frequently crash.
 expensive.
 difficult to alter, debug, and enhance.
 often delivered late.
 use resources non-optimally, like
Money, Man-power(HR), Machine, Months...

12
Software Crisis…

 Software projects:

 Over budgets.
 Over Schedules.
 Large number of Cancellation.
 Uncontrolled and unmanaged.

13
Software Crisis…
 Research from Standish Group Data on 9236 development projects completed in 2004.

14
Software Crisis (cont.)

Hw cost
Sw cost

1960 Year
1999…
Relative Cost of Hardware and Software

15
Factors Contributing to the
Software Crisis

 Larger and complex


problems,
 Lack of adequate training in
software engineering,
 Shortage of skilled people,
 Low productivity and quality
improvements.
16
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 coded it
before.

That is the program This is how the program is This, in fact, is what the
17
after debugging described by marketing dept. customer wanted … :-)
Important Root Causes of
Project Failures
 Ad hoc requirement management,
 Ambiguous and imprecise communication at
different level,
 Overwhelming complexity,
 Undetected inconsistencies in requirement,
design, and implementation.
 weak software architectures(cohesion &
coupling),
 Insufficient testing,
 Incorrect or subjective assessment of project
status,
 Uncontrolled change propagation.
 Insufficient automation.
Software in the 21st Century…
 More safety critical, real-time software…
 Embedded software is everywhere … check your pockets,
 Smart devices… Intelligent systems….IoT…..AI and
Machine Learning…
 Enterprise applications means bigger programs, more
users, (e.g. ERP systems)
 Security is now all about software quality,
 Secure software is reliable software.
 The web offers a new deployment platform,
 Very competitive and highly available to large number
of users,
 Web apps must be highly reliable.

19
19
The Changing Nature of Software

System Real
Software Time
Software
Engineering Embedded
and Scientific Software
Software

Web based Business


Software
Software
Artificial
Intelligence Personal
Software Computer
Software

20
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;
 Software must be reliable;
 Efficiency
 Software should not make wasteful use of system
resources;
 Acceptability
 Software must be accepted by the users for which it was
designed. This means it must be understandable, usable and
compatible with other systems.
21
What do we want in a system?
(What are the important attributes of
good software?)
 Reliability
 Efficiency
 Maintainable/ Adaptable
 Accessible / Usable (good interface design)
 Robustness
 Portability
 Understandable
 Scalability
 ....

22
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,
nuclear reactor system, auto pilot
system.
23
 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.
 It doesn’t waste resources such as CPU
time and memory.

24
 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.

 Users should learn it quickly and get their


jobs done easily

25
Essential attributes of good
software
Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet
the changing needs of future. This is a critical attribute because software
change is an inevitable requirement of a changing business
environment.

Dependability and security Software dependability includes a range of characteristics including


reliability, security, safety etc. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and
compatible with other systems that they use.

26
Quality Software...
Customer: User:
solves problems at easy to learn;
an acceptable cost in efficient to use;
terms of money paid and helps get work done
resources used

QUALITY
SOFTWARE

Developer: Development manager:


sells more and
easy to design;
easy to develop & maintain; satisfies customers
easy to reuse its parts while costing less
to develop and maintain

27
What is Software Engineering?

IEEE : Software Engineering:


(1) The study and use of a
systematic, disciplined, quantifiable
approach to the development,
operation, and maintenance of
software; that is, the application of
engineering to software.

28
Software Engineering…

 Software engineering is a discipline


whose aim is the production of
fault-free software, delivered on
time and within the given
budget, that satisfies all the
user’s requirements.

29
Software Engineering…
 The process of solving customers’ problems by the
systematic and phase vise development and
evolution of large, high-quality software systems
within cost, time and other constraints.

Software engineering techniques are needed


because large systems can not be completely
understood/ explained/ developed by one
person,
Teamwork and co-ordination are required,
Dividing up the work and ensuring that the parts
of the system work properly together,
The end-product must be of good quality. 30
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
31
Decomposition

 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.

32
Abstraction

 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. 33
Software Characteristics

 Developed or Engineered – not


“manufactured”
Software is intangible,
 Software is logical system element,
 Software projects managed differently
than manufacturing projects
 Software doesn’t physically wear out
like hardware might
 Most software are custom built
34 34
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.
 New software can be created by
developing new programs, configuring
generic software systems or reusing
existing software.
35
Software...
Software products may be:
 Generic (COTS)
 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

Personalized (custom made ) - developed for a


single customer according to their specification.
Product specification controlled by the product
developer

36
Software…
 Many Types...
 System software, Real Time systems, Business
software, Scientific software, Embedded software,
PC based software, computer viruses, Web based
software, AI and machine learning software etc.
 Products
 Generic or Packaged (COTS)
 Custom Built
 Sources
 Open (shareware) easily shared,
 Closed (Proprietary), have to be purchased

37 CISH-6050 - Software Engineering Management


37
Important Root Causes of
Project Failures
 Ad hoc requirement management,
 Ambiguous and imprecise communication at
different level,
 Overwhelming complexity,
 Undetected inconsistencies in requirement,
design, and implementation.
 weak software architectures(cohesion &
coupling),
 Insufficient testing,
 Incorrect or subjective assessment of project
status,
 Uncontrolled change propagation.
 Insufficient automation.
Software Myths

39
Software
Software Myths
Myths
(Management
(Management Perspectives)
Perspectives)
As long as there are good standards and clear
procedures in my company, I shouldn’t be too
concerned.

But the proof of the pudding


is in the eating;
not in the Recipe !
Software
Software Myths
Myths
(Management
(Management Perspectives)
Perspectives)
As long as my software engineers, have
access to the fastest and the most
sophisticated computer environments and
state-of-the-art software tools, I shouldn’t be
too concerned.

The environment/ infrastructure is


only one of the several factors
that determine the quality
of the end product!
Software
Software Myths
Myths
(Management
(Management Perspectives)
Perspectives)
When my schedule slips, what I have to do
is to start a fire-fighting operation: add more
software specialists, those with higher skills
and longer experience - they will bring the
schedule back on the rails!
Unfortunately,
software business does not
entertain schedule compaction
beyond a limit!
Software
Software Myths
Myths
(Customer
(Customer Perspectives)
Perspectives)
 A general statement of objectives is
sufficient to get started with the
development of software.
Missing/vague requirements can
easily be incorporated even lately in
the development process.
Software Myths
(Customer Perspectives)
A general statement of objectives is sufficient to get
started with the development of software.
Missing/vague requirements can easily be
incorporated/detailed out as they get concretized.

If we do so, we are heading towards


a disaster.

44
Software
Software Myths
Myths
(Developer
(Developer Perspectives)
Perspectives)
Once the software is demonstrated, the job
is done.

Usually, the problems just begin!


Software
Software Myths
Myths
(Developer
(Developer Perspectives)
Perspectives)
Until the software is coded and is available for
testing, there is no way for assessing its quality.

Usually, there are too many


tiny bugs inserted at every stage
that grow in size and complexity
as they progress thru further stages!
Software
Software Myths
Myths
(Developer
(Developer Perspectives)
Perspectives)

The only deliverable for a software


development project is the tested code.

The code is only


the externally visible component
of the entire software!
Software
Software Product
Product
is a product designated for delivery to
the user (complete software suite)
source
source documents
documents
codes
codes reports
reports

manuals
manuals
object
object plans
plans
codes
codes
data
data

test test
testresults
results
testsuites
suites prototypes
prototypes
Boehm’s
Boehm’s
Top
Top Ten
Ten
Industrial
Industrial Software
Software
Metrics
Metrics
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Finding and fixing a software


problem after delivery of the
product is 100 times more
1 expensive than defect
removal during requirements
and early design phases.
Relative
Relative Effort
Effort to
to Repair
Repair Software
Software
(when
(when defects
defects are
are detected
detected at
at
different
different stages)
stages)

20 20
relative effort to repair

15

10

5 5

1 2
0.5
0 0.15

Maintenance
Unit test

Acc. Test
Reqmts

Coding
Design
Bug/Error…
 An error/bug is a mistake, misconception, or
misunderstanding on the part of a software
developer.
 In the category of developer we include software
engineers, like: business analysts, system analysts,
designers, programmers, testers etc.

 For example, an analysts may misunderstand a


requirement, a designer may misunderstand a
design notation, or a programmer might type a
variable name incorrectly.
Bug…Error---fault…defect---
Failure

 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.

53
Bug/defect (Cost-Time Relation)
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Nominal software
development schedules
2 can be compressed up to
25% (by adding people,
money, etc.) but no more.
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Maintenance costs twice


3 what the development
costs.
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Development and

4 maintenance costs are


primarily a function of the
size.
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Variations in humans (people

5
can be transferred or can
change the company) account
for the greatest variations in
overall productivity.
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

The ratio of software to


hardware costs has gone
6 from 15:85 in 1985 and
continues to grow in favor
of software as the leading
cost.
Hardware
Hardware Vs
Vs Software
Software
Costs
Costs

100 Hardware

80 Software

60

40

20

0
1960 1970 1980 1990
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Only about 15% of the

7 development effort is in
coding.
Distribution
Distribution of
of Effort
Effort
Across
Across Phases
Phases

10
25 5
45
Testing 15 40

20 30
Coding
15
Design 45
30
20
Analysis
Traditional Structured CASE environment
environment techniques

Analysis Design Coding Testing


What is CASE?
 Computer-Aided Software Engineering
 Software systems that are intended to provide
automated support for software process activities.
Upper-CASE
 Tools to support the early process activities of
requirements and design;
 Lower-CASE
 Tools to support later activities such as
programming, debugging and testing.

Reverse Engineering ??
63
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Application software
products cost three times as
much per instruction as
8 individual programs; system
software products cost nine
times as much.
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

Walkthroughs/reviews catch
9 around 65% of the errors.
Distribution
Distribution of
of Activities
Activities
in
in Defect
Defect Removal
Removal

walkthru
unit test
evaluation
10 5 10 integration
other
10

65
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
Many software processes
10 obey a Pareto distribution.

20% 80%
modules cost
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

10 Many software processes


obey a Pareto distribution.

20% 80%
modules errors
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics

10 Many software processes


obey a Pareto distribution.

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.
Ref: Standish Group, 1996
70
Programs versus Software
Products

 What is the difference between a


student’s program and industrial
strength software for the given
problem?

71
Programs versus Software
Products

Student Program Industrial Strength


 Developer is the  Others are the users,
user, and large number of
 bugs are tolerable, users
 UI not so important,  bugs not tolerated,
 No documentation,  UI very imp. Issue,
 No thorough  Tested carefully,
testing.  Documents needed for
the user as well as for
the project and for the
whole organization.
72
Programs versus Software
Products
Student Program Industrial
 SW not in critical Strength
use,  Supports important
 Reliability, functions / business,
robustness not so  Reliability,
important, robustness are very
 Not much important,
investment,  Heavy investment,
 Don’t care about  Portability,
portability. scalability, Security
73
are key issues here,
Programs versus Software Products

 Student  Industrial
Program Strength
 Usually small in size  Large in size
 Author himself is  Large number of
sole user users
 Single developer  Team of developers
  Well-designed
Lacks proper user
interface interface
  Well documented &
Lacks proper user-manual
documentation prepared
 Ad hoc  Systematic
development. development
74
Emergence of Software
Engineering
 Early Computer Programming
(early 1950s):
 Programs were being written in
m/c language initially and then in
assembly language.
 Programs were limited to about a
few hundreds of lines of assembly
code.

75
Early Computer Programming
( late 50s)
 Every programmer developed
his/her own style of writing
programs:
 according to his/her convenience
(called exploratory
programming/ adhoc
programming) which leads to
Adhoc development.
development

76
High-Level Language
Programming (Early 60s)
 Later, High-level
languages such as
FORTRAN, BASIC, and
COBOL were introduced:
 This reduced software
development efforts greatly.

77
High-Level Language
Programming (Early 60s)

 Software development
style was still exploratory.
 Typical program sizes were
limited to a few thousands
of lines of source code.

78
…. in late 60s…

 Size and complexity of programs


increased further:
 exploratory programming style
proved to be insufficient.
 Programmers found:
 very difficult to write cost-effective
and correct programs.

79
Control Flow-Based Design
(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.'’

80
Control Flow-Based Design (late 60s)

 A program's control structure


indicates:
 the sequence in which the program's
instructions are executed.
 To help, design programs having
good control structure:
 flow charting technique was
developed.

81
Control Flow-Based Design (late 60s)

 Using flow charting technique:


 one can represent and design
a program's control structure.
 Usually one understands a
program:
by mentally simulating the
program's execution sequence.

82
Control Flow-Based Design (Late 60s)

 After some time, It was found:

 GO TO statements makes control


structure of a program messy
 GO TO statements alter the flow of
control arbitrarily.
 Need to restrict the use of GO TO
statements was recognized.
83
Control Flow-Based Design (Late 60s)

 Many programmers, that time,


had extensively used assembly
languages.
 JUMP instructions are frequently
used for program branching in
assembly languages,
 programmers considered use of GO
TO statements inevitable.

84
Control-flow Based Design (Late 60s)

 At that time, Dijkstra


published his article in a
research paper:
 “Goto Statement Considered
Harmful” Comm. of ACM, 1969.
 (a milestone in this journey)
 Many programmers were
unhappy to read his article.
85
Control Flow-Based Design (Late 60s)

 They published several


counter articles:
 highlighting the
advantages and
unavoidability of GO TO
statements.

86
Control Flow-Based Design (Late 60s)

 But, Soon it was conclusively proved:


 only three programming constructs are
sufficient to express any programming
logic:

 sequence (e.g. a=0;b=5;)


 selection (e.g. if(c=true) k=5 else
m=5;)
 iteration (e.g. while(k>0) k=j-k;)

87
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.

88
Structured Programming

 A program is called
structured
 when it uses the following
types of constructs:
sequencing,
selection,
Iteration.

89
Structured programs …

 Structured programs are:


 Easier to read and
understand,
 easier to maintain,
 require less effort and time
for development.
90
Data Flow-Oriented Design (Late 70s)

 Data flow-oriented
techniques advocate:
 the data items input to a
system must first be identified,
 processing required on the
data items to produce the
required outputs should be
determined.

91
Data Flow-Oriented Design (Late 70s)

 Data flow technique identifies:


 different processing stations
(functions) in a system,
 the items (data) that flow
between processing stations,
 External entities of the system.

92
93
Data Flow-Oriented Design (Late 70s)

 Data flow technique is a


general technique:
 can be used to model the working
of any information system
A major advantage of the
data flow technique is its
simplicity.
95
Object-Oriented Design (mid 80s)

 Object-oriented technique:
 a naturally appealing design
approach:
 natural objects (such as
employees, pay-roll-register,
books etc.) occurring in a
problem are first identified.
96
Object-Oriented Design (80s)

 Relationships among objects:


 such as association, composition,
aggregation and inheritance are
determined.
 Each object essentially acts as
 a data hiding entity,
 data abstraction,
 Encapsulation,
 Polymorphism...
Unified Modeling Language
97
Object-Oriented Design (80s)

 Object-Oriented Techniques
have gained wide
acceptance:
 Simplicity
 Reuse possibilities
 Lower development time and
cost
 More robust code
 Easy maintenance

98
Evolution of Design Techniques

Object-Oriented

Data flow-based

Control flow-based

Ad hoc

99
Evolution of Design Techniques

Object-Oriented Paradigm

Structured Paradigm

Ad hoc

100
Evolution of Other Software
Engineering Techniques
 life cycle models,
 specification techniques,
 design and modelling
techniques,
 project management techniques,
 testing techniques,
 debugging techniques,
 software maintenance,
 automation tools...
101
Differences Between the Exploratory Style and
Modern Software Development Practices

 Use of Life Cycle Models


(Process Models)
 Software is developed through several
well-defined stages:
 requirements analysis and
specification,
 design,
 coding,
 testing, etc.

102
Differences Between the Exploratory Style and
Modern Software Development Practices

 Emphasis has shifted


 from error correction to error prevention.
 Modern practices emphasize:
 detection of errors, as close as possible,
to their point of introduction.
 The principle of detecting errors as close, to its
point of introduction, as possible:
is known as phase containment of
errors.

103
Differences Between the Exploratory Style and
Modern Software Development Practices..

 In exploratory style,
 errors are detected only
during testing phase,
 Now,
 focus is on detecting as
many errors as possible in
each phase of development.

104
Differences Between the Exploratory Style and
Modern Software Development Practices..

 In exploratory style,
 coding is synonymous with
software development.
 Now,
 coding is considered only a
small part/portion of overall
software development effort.
105
Differences Between the Exploratory Style and
Modern Software Development Practices..

 Lots of effort and attention is


now being paid to:
 requirements specification.
 Also, now there is a distinct
design phase:
 standard design techniques are
being used.

106
Differences Between the Exploratory Style and
Modern Software Development Practices..

 During all stages of


development process:
 Periodic reviews are being
carried out
 Software testing has become
systematic:
 standard testing techniques
are available (e.g. WBT, BBT)
107
Differences between the exploratory style and
modern software development practices…

 Projects are being thoroughly planned:


 Estimation of various resources,
 Scheduling of different activities,
 Planning of various milestones,
 monitoring mechanisms,
 Better Documentation.
 Use of automation tools (like testing tools,
CASE tools) CPM and PERT.

108
Software Life Cycle
 Software life cycle (or software
process):
 “series of identifiable stages that a software
product undergoes during its life time”:
 Feasibility study
 requirements analysis and specification,
 design,
 coding,
 testing,
 maintenance.
109

You might also like