Вы находитесь на странице: 1из 53

MODULE:I

INTRODUCTION
TO
SOFTWARE ENGINEERING

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 1
ENGINEERING
Software Engineering
● Software engineering (SE) is a profession
dedicated to designing, implementing, and
modifying software so that it is of higher quality,
more affordable, maintainable, and faster to
build.
● Systematic collection of past experience:
– Techniques,
– Methodologies,
– Guidelines.
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 2
ENGINEERING
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 of
software, and the study of these approaches; that is,
the application of engineering to software.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 3
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 4
ENGINEERING
Why Study Software Engineering? (2)

● Ability to solve complex programming problems:


– How to break large projects into smaller
and manageable parts?
– How to use abstraction?
● Also learn techniques of:
– Specification, design, user interface
development, testing, project management,
etc.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 5
ENGINEERING
Why Study Software Engineering? (3)

● To acquire skills to be a better programmer:


- Higher Productivity
- Better Quality Programs

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 6
ENGINEERING
PROGRAM vs SOFTWARE
PROGRAM SOFTWARE
• Usually small in size • Large
• Author himself is sole user • Large number of users
• Single developer • Team of developers
• Lacks proper user interface • Well-designed interface
• Lacks proper • Well documented & user-
documentation manual prepared
• Ad hoc development. • Systematic development

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 7
ENGINEERING
SOFTWARE
• Software consists of three components:
-Program , when executed provides desired function
and performance.
-Documents , that describe the operation and the use
of program.
-Data structure , that enable the programs to
adequately manipulate information.
• In other words software is the collection of computer
programs ,procedure rules and associated
documentation and data.
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 8
ENGINEERING
Software’s 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)
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 9
ENGINEERING
Types of software:

1.System software
2.Application software/PC software
3.Engg. &scientific software
4.Real time software
5.Web based software
6.AI software
7.Embedded software
System software : Managing and controlling operation of computer system. It
frequently interact with the hardware.
Ex-OS , assembler , compiler , linker , loader etc.
Application software : used for official and personal use on daily basis and
also to solve a particular business need.
Ex-MS word ,MS office , media player , power point etc.
Engineering and scientific software : used for scientific and engineering
activities.
Ex-CAD, CAM , Mat Lab etc.
Real time software : observes , analyze and controls real world events as they
occur.
Ex- traffic light control.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 11
ENGINEERING
Web-based software : act as interface between user and
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.
Ex-Robotics , game playing technique 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 player etc.
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 12
ENGINEERING
Legacy Software
• Why must it change?
• software must be adapted to meet the needs of
new computing environments or technology.
• software must be enhanced to implement new
business requirements.
• software must be extended to make it
interoperable with other more modern systems
or databases.
• software must be re-architected to make it
viable within a network environment.
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 13
ENGINEERING
Characteristics of software
1.Efficiency: the s/w must use the resource properly.
2.Maintainability: the s/w can change with a change with
users’ requirement.
3. On time: the s/w development must be within the time
specified by the client.
4.Within the budget: the development cost of s/w
shouldn’t exceed budget specified by the client.
5.Functionality: it should meet all the functionality
specified by the requirement.
6.Dependability: the s/w must be secured and reliable.
MODULE:I INTRODUCTION TO SOFTWARE
12/08/2021 14
ENGINEERING
Characteristics of software

1.“ Software is developed or engineered, it is


not manufactured in the classical sense. “

2. software doesn’t wear out.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 15
ENGINEERING
Failure curve of hardware

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 16
ENGINEERING
Wear vs. Deterioration

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 17
ENGINEERING
SE is a layered technology

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 18
ENGINEERING
Generic view of s/w Engg.:

1.Definition phase
2.Development phase
3.Support phase
- correction
- Enhancement
- Adaptation
- Prevention
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.
Early Computer Programming (50s)
● Every programmer developed
his own style of writing
programs:
– According to his intuition
(exploratory programming).
(build & fix)
What is Wrong with the Exploratory
Style?

● Can successfully be used for very small


programs only.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 22
ENGINEERING
High-Level Language Programming(Early
60s)
• High-level languages such as
FORTRAN, ALGOL, and COBOL were introduced:
– This reduced software development
efforts greatly.
● Software development style was still
exploratory.
– Typical program sizes were limited to a
few thousands of lines of source code.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 23
ENGINEERING
Control Flow-Based Design
(late60s)
● 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.
Control Flow-Based Design (late60s)

● Programmers found:
– programs written by others 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.'’
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 26
ENGINEERING
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

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 27
ENGINEERING
Control Flow-Based Design
● A program having a messy flow chart
representation:
–Difficult to understand and debug

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 28
ENGINEERING
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 TO
statements was recognized.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 29
ENGINEERING
Control Flow-Based Design
● Many programmers had extensively used
assembly languages.
– JUMP instructions are frequently used
for program branching in assembly
languages.
– Programmers considered use of GO TO
statements inevitable

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 30
ENGINEERING
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;)

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 33
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 34
ENGINEERING
Structured Programming
● A program is called structured
– When it uses only the following types of
constructs:
● sequence
● selection
● iteration

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 35
ENGINEERING
Structured Programming
● Unstructured control flows are
avoided.

● Consist of a neat set of modules.

● Use single-entry, single-exit program


constructs.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 36
ENGINEERING
Structured Programming
● However, violations to this feature are
permitted:
– Due to practical considerations
such as:
● Premature loop exit to support
exception handling.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 37
ENGINEERING
Structured Programming
● Structured programs are:
– Easier to read and understand,
– Easier to maintain,
– Require less effort and time for
development.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 38
ENGINEERING
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
● Than to the design of its control structure.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 39
ENGINEERING
Data Structure-Oriented Design (Early70s)

● Techniques which emphasize designing the


data structure:
– Derive program structure from it:
Are called data structure oriented Design
techniques.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 40
ENGINEERING
Data Structure-Oriented Design (Early70s)

● Example of data structure oriented


design technique:
– Jackson's Structured Programming(JSP)
methodology
● Developed by Michael Jackson in 1970s.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 41
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 42
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 43
ENGINEERING
Data Flow-Oriented Design (Late 70s)

● Data flow technique is a generic


technique:
– Can be used to model the working of
any system.
● not just software systems.
● A major advantage of the data flow
technique is its simplicity.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 44
ENGINEERING
Data Flow-Oriented Design (Late 70s)

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 45
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 46
ENGINEERING
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.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 47
ENGINEERING
Object-Oriented Design (80s)
Object-Oriented Techniques have gained wide
acceptance:

– Simplicity
– Reuse possibilities
– Lower development time and cost
– More robust code
– Easy maintenance

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 48
ENGINEERING
Evolution of design techniques

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 49
ENGINEERING
COMPUTER SYSTEMS ENGINEERING

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 50
ENGINEERING
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

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 51
ENGINEERING
Software Crisis (cont.)

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 52
ENGINEERING
Factors Contributing to the Software
Crisis

● Larger problems
● Lack of adequate training in software
engineering
● Increasing skill shortage
● Low productivity improvements.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 53
ENGINEERING
Types of Software Projects

● Software products
● Outsourced projects
● Indian companies have focused on
outsourced projects.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 54
ENGINEERING
Reference
• “Fundamentals of Software Engineering,”
Prentice-Hall of India, By R.Mall CHAPTER -1.
• Software Engineering: A Practitioner’s
Approach,TMH, By R.S.Pressman,6th Edition,
CHAPTER-1.

MODULE:I INTRODUCTION TO SOFTWARE


12/08/2021 55
ENGINEERING

Вам также может понравиться