Date post: | 05-Apr-2018 |
Category: |
Documents |
Upload: | alok-vishwakarma |
View: | 220 times |
Download: | 0 times |
of 53
8/2/2019 intr_SE
1/53
8/2/2019 intr_SE
2/53
Software Engineering
Software Engineering (SE) is a professiondedicated to designing, implementing, andmodifying software so that it is of higher
quality, more affordable, maintainable, and
faster to build.
Systematic collection of past experience:
Techniques, Methodologies,
Guidelines.
2/5/2012 2
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
3/53
The IEEE Definition
The IEEE Computer Society's Software Engineering
Body of Knowledge defines "software engineering"
as the application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance ofsoftware, and the
study of these approaches; that is, the application of
engineering to software.
2/5/2012
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING 3
8/2/2019 intr_SE
4/53
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 size of software increases.
2/5/2012 4
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
5/53
Why Study Software Engineering? (2)
Ability to solve complex programmingproblems:
How to break large projects into smallerand mana eable arts?
How to use abstraction?
Also learn techniques of:
Specification, design, user interfacedevelopment, testing, projectmanagement, etc.
2/5/2012 5
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
6/53
Why Study Software Engineering? (3)
To acquire skills to be a better programmer:
- Higher Productivity
- Better Quality Programs
(Project Closure)
2/5/2012 6
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
7/53
PROGRAM vs SOFTWARE
PROGRAM
Usually small in size
Author himself is sole user
Single developer
SOFTWARE
Large
Large number of users
Team of developers
Lacks proper user interface
Lacks proper
documentation
Ad hoc development.
(Programmer Centric)
Well-designed interface
Well documented & user-
manual prepared
Systematic development
(Organization/Project
Centric)
2/5/2012 7
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
8/53
SOFTWARE
Software consists of three components:
-Program, when executed provides desired
function and performance.-Documents, t at escri e t e operation
and use of the program.
-Data structure, that enable the programs
to adequately manipulate information.
2/5/2012 8
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
9/53
Softwares Dual Role
Software is a product
Delivers computing potential
Produces, manages, acquires, modifies, displays, or
transmits information
Software is a vehicle for delivering a product
Supports or directly provides system functionality
Controls other programs (e.g., an operating system) Effects communications (e.g., networking software)
Helps build other software (e.g., software tools)
2/5/2012
MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING 9
8/2/2019 intr_SE
10/53
Types of software:
1.System software
2.Application software/PC software
3.Engg. &scientific software.
5.Web based software
6.AI software
7.Embedded software
8/2/2019 intr_SE
11/53
System software : Managing and controlling operation ofcomputer system. It frequently interact with the hardware.
Ex-OS , assembler , compiler , linker , loader etc.
Application software : used for official and personal use on dailybasis and also to solve a particular business need.
Ex-MS word ,MS office , media player , power point etc.
: use or sc en c anengineering activities.
Ex-CAD, CAM , MATLAb (MATrix LABoratory)etc.
Real time software : observes , analyze and controls real worldevents as they occur. (Time Constraint is present)Ex- traffic light control.
2/5/2012 11MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
12/53
Web-based software : act as interface between userand internet .In other words it is used to develop web
based application.Ex-HTML , ASP , web browser etc.
AI software : used where the problem solving
technique is non algorithmic in nature.x- o ot cs , game p ay ng tec n que etc.
Embedded software : it is very small and embedded in
a small chip to perform limited application.Ex-automatic washing machine , s/w in DVD playeretc.
2/5/2012 12MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
13/53
Legacy Software
Whymustitchange? software must be adapted to meet the needs
of new computing environments or technology.
software must be enhanced to implement new.
software must be extended to make itinteroperable with other more modern
systems or databases. software must be re-architected to make it
viable within a network environment.
2/5/2012MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING13
8/2/2019 intr_SE
14/53
Characteristics of software
1.Efficiency: the s/w must use the resource properly.
2.Maintainability: the s/w can change with a change withusers requirement.
3. On time: the s/w development must be within the.
4.Within the budget: the development cost of s/wshouldnt exceed budget specified by the client.
5.Functionality: it should meet all the functionalityspecified by the requirement.
6.Dependability: the s/w must be secured and reliable.
2/5/2012 14MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
15/53
Characteristics of software
1. Software is developed or engineered, it is
not manufactured in the classical sense.
2. software doesnt wear out.
2/5/2012 15MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
16/53
Failure curve of hardware
2/5/2012 16MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
17/53
Wear vs. Deterioration
2/5/2012 17MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
18/53
SE is a layered technology
2/5/2012 18MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
19/53
Generic view of s/w Engg.
8/2/2019 intr_SE
20/53
Emergence of SE
1. Early computer programming
2. High level language programming
3. Control flow based design
4. Structure oriented design
5. Data structure oriented design
6. Data flow oriented design
7. Object oriented design
8. Aspect orientation client-server design ,embedded s/w design.
8/2/2019 intr_SE
21/53
Early Computer Programming (50s)
Every programmer developed
his own style of writing(Coding,
documentation etc.) programs: ccor ng o s n u on an
in an ad hoc manner.
(exploratory programming).(build & fix)
8/2/2019 intr_SE
22/53
What is Wrong with the Exploratory
Style? Can successfully be used for very small
programs only.
2/5/2012MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING22
8/2/2019 intr_SE
23/53
High-Level Language
Programming(Early 60s) High-level languages such as
FORTRAN, ALGOL, and COBOL wereintroduced:
efforts greatly.
Software development style was still
exploratory. Typical program sizes were limited to a
few thousands of lines of source code.
2/5/2012 23MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
24/53
Control Flow-Based Design
(late60s) Size and complexity of programsincreased further:
Exploratory programming style
Programmers found:
Very difficult to write cost
effective and correct programs.
8/2/2019 intr_SE
25/53
Control Flow-Based Design (late60s)
Programmers found: programs written by others very
difficult to understand and maintain.
To co e u with this roblem
experienced programmers advised:
``Pay particular attention to thedesign of the program's control
structure.'
8/2/2019 intr_SE
26/53
Control Flow-Based Design (late 60s)
A program's control structure
indicates:
The sequence in which the program'sinstructions are executed.
To help design programs having good
control structure: Flow charting technique was developed.
2/5/2012 26MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
27/53
Control Flow-Based Design (late 60s)
Using flow charting technique:
One can represent and design a program's
control structure. Usua y one un erstan s a program:
By mentally simulating the program's
execution sequence
2/5/2012 27MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
28/53
Control Flow-Based Design
A program having a messy flow chart
representation:
Difficult to understand and debug
2/5/2012 28MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
29/53
Control Flow-Based Design
It was found:
GO TO statements makes control
structure of a program messy. GO TO statements alter the flow of
control arbitrarily.
The need to restrict use of GO TOstatements was recognized.
2/5/2012 29MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
30/53
Control Flow-Based Design
Many programmers had extensively used
assembly languages.
JUMP instructions are frequently usedor program ranc ng n assem y
languages.
Programmers considered use of GO TOstatements inevitable
2/5/2012 30MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
31/53
Control-flow Based Design (Late 60s)
At that time, Dijkstra published his
article:
Goto Statement Considered HarmfulComm. of ACM, 1969.
Many programmers were unhappy to read his
article.
2/5/2012 31MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
32/53
Control-flow Based Design (Late 60s)
They published several counter articles:
Highlighting the advantages and
inevitability of GO TO statements
2/5/2012 32MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
33/53
Control-flow Based Design (Late 60s)
But, soon it was conclusively proved:
Only three programming constructs are
sufficient to express any programminglogic:
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;)
2/5/2012 33MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
34/53
Control-flow Based Design (Late 60s)
Everyone accepted:
It is possible to solve any programming
problem without using GO TO statements. T s orme t e as s o Structure
Programming Methodology.
2/5/2012 34MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
35/53
Structured Programming
A program is called structured
When it uses only the following types of
constructs: sequence
selection
iteration
2/5/2012 35MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
36/53
Structured Programming
Unstructured control flows are
avoided.
Consist of a neat set ofmodules.
Use single-entry, single-exit programconstructs.
2/5/2012 36MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
37/53
Structured Programming
However, violations to this feature are
permitted:
Due to practical considerationssuc as:
Premature loop exit to support exception
handling.
2/5/2012 37MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
38/53
Structured Programming
Structured programs are:
Easier to read and understand,
Easier to maintain, Require less effort and time for
development.
2/5/2012 38MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
39/53
Data Structure-Oriented Design
(Early70s) Soon it was discovered:
It is important to pay more attention to the
design of data structures of a program T an to t e es gn o ts contro structure.
2/5/2012 39MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
40/53
Data Structure-Oriented Design
(Early70s) Techniques which emphasize designing the
data structure:
Derive program structure from it:Are ca e ata structure or ente Des gn
techniques.
2/5/2012 40MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
41/53
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.
2/5/2012 41MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
42/53
Data Flow-Oriented Design (Late 70s)
Data flow technique identifies:
Different processing stations (functions) in
a system. T e tems ata t at ow etween
processing stations.
2/5/2012 42MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
43/53
Data Flow-Oriented Design (Late 70s)
Data flow technique is a generic
technique:
Can be used to model the working ofany system.
not just software systems.
A major advantage of the data flowtechnique is its simplicity.
2/5/2012 43MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
44/53
Data Flow-Oriented Design (Late 70s)
2/5/2012 44MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
45/53
Object-Oriented Design (80s)
Object-oriented technique:
An intuitively appealing design
approach: Natural objects (such as employees,
pay-roll-register, etc.) occurring in
a problem are first identified.
2/5/2012 45MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
46/53
Object-Oriented Design (80s)
Relationships among objects:
Such as composition, reference,
and inheritance are determined. Each object essentially acts as
A data hiding (or data abstraction)
entity.
2/5/2012 46MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
47/53
Object-Oriented Design (80s)
Object-Oriented Techniques have gained wide
acceptance:
Simplicity
Reuse poss t es
Lower development time and cost
More robust code
Easy maintenance
2/5/2012 47MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
48/53
Evolution of design techniques
2/5/2012 48MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
49/53
Software Crisis
Software products:
Fail to meet user requirements.
Frequently crash. Expensive.
Difficult to alter, debug, and enhance.
Often delivered late. Use resources non-optimally
2/5/2012 49MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
50/53
Software Crisis (cont.)
2/5/2012 50MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
51/53
Factors Contributing to the Software
Crisis Larger problems
Lack of adequate training in software
engineering
Increas ng s s ortage
Low productivity improvements.
2/5/2012 51MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
52/53
Types of Software Projects
Software products Outsourced projects
2/5/2012 52MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING
8/2/2019 intr_SE
53/53
Reference
Fundamentals of Software Engineering,
Prentice-Hall of India, By R.Mall CHAPTER -1.
Software Engineering: A Practitioners
, , . . , ,
CHAPTER-1.
2/5/2012MODULE:I INTRODUCTION TO SOFTWARE
ENGINEERING53