+ All Categories

intr_SE

Date post: 05-Apr-2018
Category:
Upload: alok-vishwakarma
View: 220 times
Download: 0 times
Share this document with a friend

of 53

Transcript
  • 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