0% found this document useful (0 votes)
8 views22 pages

1 Intro

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

1 Intro

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

CS301 Software Engineering

Introduction

Sunil Kumar P V
CSE
SW Engg

ˆ Engineering approach to develop software.


ˆ Building Construction Analogy
ˆ Systematic collection of past experience:
ˆ Techniques,
ˆ Methodologies,
ˆ Guidelines.

1
IEEE Definition

“Software engineering is the application of a


systematic, disciplined, quantifiable approach to
the development, operation, and maintenance
of software; that is, the application of engineer-
ing to software.”

2
Software Crisis

ˆ It is often the case that software products:


ˆ Fail to meet user requirements.
ˆ Expensive.
ˆ Difficult to alter, debug, and enhance.
ˆ Often delivered late.
ˆ Use resources non-optimally.

3
Software Crisis

4
Factors Contributing to the Software Crisis

ˆ Larger problems,
ˆ Poor project management
ˆ Lack of adequate training in software
engineering,
ˆ Increasing skill shortage,
ˆ Low productivity improvements

5
Art or Engg.?

6
Art or Engg?

ˆ Heavy use of past experience:


ˆ Past experience is systematically arranged.
ˆ Theoretical basis and quantitative techniques
provided
ˆ Many are just thumb rules.
ˆ Tradeoff between alternatives.
ˆ Pragmatic approach to cost-effectiveness.

7
Exploratory Style

8
Exploratory Style

ˆ Does not work for large/non trivial project

9
Problems with Exploratory Style

ˆ Besides the exponential growth of effort, cost,


and time with problem size:
ˆ Exploratory style usually results in unmaintainable
code.
ˆ It becomes very difficult to use the exploratory
style in team development environments.

10
Problems with Exploratory Style

ˆ Small programs have less number of variables


ˆ Easy for an individual
ˆ As the number of independent variables in the
program increases:
ˆ It quickly exceeds the grasping power of an
individual.
ˆ Requires an unduly large effort to master the
problem

11
SW Engg Excels- Why?

ˆ Instead of a human, if a machine could be


writing (generating) a program, the slope of
the curve would be linear.
ˆ Software engineering principles extensively use
techniques specifically targeted to overcome
the human cognitive limitations and to keep
the curve to be almost linear

12
SW Engg Excels- How?

ˆ SW Engg uses two fundamental techniques to


handle complexity
ˆ Abstraction
ˆ Decomposition

13
Abstraction

ˆ Simplify a problem by omitting unnecessary


details.
ˆ Focus attention on only one aspect of the
problem and ignore other aspects and irrelevant
details.
ˆ Also called model building

14
Types of Abstractions

ˆ Several abstractions of the same problem can


be created:
ˆ Focus on some specific aspect and ignore the
rest.
ˆ Different types of models help understand
different aspects of the problem

15
Hierarchy of Abstraction

ˆ For complex problems:


ˆ A single level of abstraction is inadequate.
ˆ A hierarchy of abstractions may have to be
constructed.
ˆ Hierarchy of models:
ˆ A model in one layer is an abstraction of the lower
layer model.
ˆ An implementation of the model at the higher
layer.

16
Decomposition

ˆ Decompose a problem into many small


independent parts.
ˆ The small parts are then taken up one by one and
solved separately.
ˆ The idea is that each small part would be easy to
grasp and therefore can be easily solved.
ˆ The full problem is solved when all the parts are
solved.
ˆ Any arbitrary decomposition of a problem may
not help
ˆ The decomposed parts must be more or less
independent of each other
17
SW Engg Motivation

1. To acquire skills to develop large programs.


ˆ Handling exponential growth in complexity with
size.
ˆ Systematic techniques based on abstraction
(modelling) and decomposition.
2. Learn systematic techniques of:
ˆ Specification, design, user interface development,
testing, project management, maintenance, etc.
ˆ Appreciate issues that arise in team development.
3. To acquire skills to be a better programmer:
ˆ Higher Productivity
ˆ Better Quality Programs
18
Self Study

ˆ Types of software products


ˆ Software product development projects
ˆ Software services projects
ˆ Computer system engg. (HW + SW)
ˆ Evolution of SW engg
ˆ Machine, assembly, high-level
ˆ Control Flow-Based Design
ˆ Structured Programming
ˆ Data Structure Oriented Design
ˆ Data Flow Oriented Design
ˆ O-O Design
19
References

1. Fundamentals of SW Engg by Prof. Rajib Mall


(Text book)
2. NPTEL video lectures by Prof. Rajib Mall

20
Thank you..

21

You might also like