Vous êtes sur la page 1sur 53

MODULE :I

INTRODUCTION TO SOFTWARE ENGINEERING


MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

2/5/2012

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 2

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.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE 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.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE 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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 5

Why Study Software Engineering? (3)


To acquire skills to be a better programmer: - Higher Productivity - Better Quality Programs (Project Closure)

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

PROGRAM vs SOFTWARE
PROGRAM Usually small in size Author himself is sole user Single developer Lacks proper user interface Lacks proper documentation Ad hoc development. (Programmer Centric) SOFTWARE Large Large number of users Team of developers Well-designed interface Well documented & usermanual prepared Systematic development (Organization/Project Centric)
7

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

SOFTWARE
Software consists of three components: -Program, when executed provides desired function and performance. -Documents, that describe the operation and use of the program. -Data structure, that enable the programs to adequately manipulate information.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

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



2/5/2012

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 ENGINEERING 9

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 , MATLAb (MATrix LABoratory)etc.

Real time software : observes , analyze and controls real world


events as they occur. (Time Constraint is present) Ex- traffic light control.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

11

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 12

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 13

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 shouldnt 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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 14

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

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

15

Failure curve of hardware

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

16

Wear vs. Deterioration

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

17

SE is a layered technology

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

18

Generic view of s/w Engg.

Emergence of SE
1. 2. 3. 4. 5. 6. 7. 8. Early computer programming High level language programming Control flow based design Structure oriented design Data structure oriented design Data flow oriented design Object oriented design Aspect orientation client-server design , embedded s/w design.

Early Computer Programming (50s)

Every programmer developed his own style of writing(Coding, documentation etc.) programs: According to its intuition and in an ad hoc manner. (exploratory programming). (build & fix)

What is Wrong with the Exploratory Style?


Can successfully be used for very small programs only.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

22

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 23

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 26

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

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

27

Control Flow-Based Design


A program having a messy flow chart representation: Difficult to understand and debug

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

28

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 29

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
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 30

Control-flow Based Design (Late 60s)


At that time, Dijkstra published his article: Goto Statement Considered Harmful Comm. of ACM, 1969. Many programmers were unhappy to read his article.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

31

Control-flow Based Design (Late 60s)


They published several counter articles: Highlighting the advantages and inevitability of GO TO statements

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

32

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;)
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 33

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.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

34

Structured Programming
A program is called structured When it uses only the following types of constructs: sequence selection iteration

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

35

Structured Programming
Unstructured control flows are avoided. Consist of a neat set of modules. Use single-entry, single-exit program constructs.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 36

Structured Programming
However, violations to this feature are permitted: Due to practical considerations such as: Premature loop exit to support exception handling.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

37

Structured Programming
Structured programs are: Easier to read and understand, Easier to maintain, Require less effort and time for development.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

38

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.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

39

Data Structure-Oriented Design (Early70s)


Techniques which emphasize designing the data structure: Derive program structure from it: Are called data structure oriented Design techniques.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

40

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

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

41

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.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

42

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.
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 43

Data Flow-Oriented Design (Late 70s)

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

44

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

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

45

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

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

46

Object-Oriented Design (80s)


Object-Oriented Techniques have gained wide acceptance: Simplicity Reuse possibilities Lower development time and cost More robust code Easy maintenance
2/5/2012 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 47

Evolution of design techniques

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

48

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 MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING 49

Software Crisis (cont.)

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

50

Factors Contributing to the Software Crisis


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

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

51

Types of Software Projects

Software products Outsourced projects

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

52

Reference
Fundamentals of Software Engineering, Prentice-Hall of India, By R.Mall CHAPTER -1. Software Engineering: A Practitioners Approach,TMH, By R.S.Pressman,6th Edition, CHAPTER-1.

2/5/2012

MODULE:I INTRODUCTION TO SOFTWARE ENGINEERING

53

Vous aimerez peut-être aussi