intr se

Upload: alok-kumar

Post on 08-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 intr SE

    1/55

    MODULE:I

    INTRODUCTIONTO

    SOFTWARE ENGINEERING

    3/1/2011 1MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    2/55

    Software Engineering

    Software engineering (SE) is a professiondedicated to designing, implementing, andmodifying software so that it is of higher

    quality, more affordable, maintainable, andfaster to build.

    Systematic collection of past experience:

    Techniques, Methodologies,

    Guidelines.

    3/1/2011 2MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    3/55

    The IEEE Definition

    TheIEEE Computer Society'sSoftware Engineering

    Body of Knowledge defines "softwareengineering"

    astheapplicationofasystematic,disciplined,

    quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware,andthe

    studyoftheseapproaches;thatis,theapplicationof

    engineering tosoftware.

    3/1/2011 MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

    3

  • 8/7/2019 intr SE

    4/55

    Why Study Software Engineering? (1)

    To acquire skills to develop large programs

    Exponential growth in complexityand difficulty level with size.

    The ad hoc approach breaks down

    when size of software increases.

    3/1/2011 4MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    5/55

    Why Study Software Engineering? (2)

    Ability to solve complex programmingproblems:

    How to break large projects into smallerand manageable parts?

    How to use abstraction?

    Also learn techniques of:

    Specification, design, user interfacedevelopment, testing, projectmanagement, etc.

    3/1/2011 5MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    6/55

    Why Study Software Engineering? (3)

    To acquire skills to be a better programmer:

    - Higher Productivity

    - Better Quality Programs

    3/1/2011 6MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    7/55

    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.

    SOFTWARE

    Large

    Large number of users

    Team of developers

    Well-designed interface

    Well documented & user-

    manual prepared

    Systematic development

    3/1/2011 7MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    8/55

    SOFTWARE

    Software consists of three components:

    -Program ,whenexecutedprovidesdesiredfunctionandperformance.

    -Documents ,thatdescribetheoperationandtheuseofprogram.

    -Data structure ,thatenabletheprogramstoadequatelymanipulateinformation.

    In other words software is the collection ofcomputer programs ,procedure rules andassociated documentation and data.

    3/1/2011 8MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    9/55

    Softwares Dual Role

    Software is a product

    Deliverscomputing potential

    Produces,manages,acquires,modifies,displays,or

    transmitsinformation

    Software is a vehicle for delivering a product

    Supports ordirectlyprovidessystemfunctionality

    Controls otherprograms(e.g.,anoperatingsystem) Effectscommunications (e.g.,networkingsoftware)

    Helpsbuild othersoftware(e.g.,softwaretools)

    3/1/2011 MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

    9

  • 8/7/2019 intr SE

    10/55

    Types of software:

    1.System software

    2.Application software/PC software

    3.Engg. &scientific software4.Real time software

    5.Web based software

    6.AI software

    7.Embedded software

  • 8/7/2019 intr SE

    11/55

    System software : Managingandcontrollingoperationofcomputersystem. Itfrequentlyinteractwiththehardware.

    Ex-OS ,assembler,compiler,linker,loaderetc.

    Application software : usedforofficialandpersonaluseondailybasisandalsotosolveaparticularbusinessneed.Ex-MS word,MS office,mediaplayer,powerpointetc.

    Engineering and scientific software : usedforscientificandengineeringactivities.

    Ex-CAD, CAM , Mat Labetc.

    Real time software : observes,analyzeandcontrolsrealworldeventsastheyoccur.

    Ex- traffic lightcontrol.

    3/1/2011 11MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    12/55

    Web-based software : act asinterfacebetweenuserandinternet.Inotherwordsitisusedtodevelopwebbasedapplication.

    Ex-HTML , ASP,webbrowseretc.AI software : usedwheretheproblemsolvingtechniqueis

    nonalgorithmicinnature.

    Ex-Robotics,gameplayingtechniqueetc.

    Embedded software : itisverysmallandembeddedinasmallchiptoperformlimitedapplication.

    Ex-automaticwashingmachine,s/win DVD playeretc.

    3/1/2011 12MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    13/55

    Legacy Software

    Why must it change? softwaremustbeadapted tomeettheneeds

    ofnewcomputingenvironmentsortechnology.

    softwaremustbeenhanced toimplementnewbusinessrequirements.

    softwaremustbeextended to make itinteroperable withothermoremodernsystems

    ordatabases. softwaremustbere-architected tomakeit

    viablewithinanetworkenvironment.

    3/1/2011 MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

    13

  • 8/7/2019 intr SE

    14/55

    Characteristics of software

    1.Efficiency: thes/wmustusetheresourceproperly.

    2.Maintainability: thes/wcanchangewithachangewithusers requirement.

    3.On time: thes/wdevelopment mustbewithinthetimespecifiedbytheclient.

    4.Within the budget: thedevelopment costofs/wshouldntexceedbudgetspecifiedbytheclient.

    5.Functionality: itshouldmeetallthefunctionalityspecifiedbytherequirement.

    6.Dependability: thes/wmustbesecuredandreliable.

    3/1/2011 14MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    15/55

    Characteristics of software

    1. Softwareisdeveloped orengineered,itis

    notmanufacturedintheclassicalsense.

    2.softwaredoesnt wear out.

    3/1/2011 15MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    16/55

    Failure curve of hardware

    3/1/2011 16MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    17/55

    Wear vs. Deterioration

    3/1/2011 17MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    18/55

    SE is a layered technology

    3/1/2011 18MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    19/55

    Generic view of s/w Engg.:

  • 8/7/2019 intr SE

    20/55

    Emergence of SE:

    1. Earlycomputer programming

    2. Highlevellanguageprogramming

    3. Controlflowbaseddesign

    4. Structureorienteddesign

    5. Datastructureorienteddesign

    6. Datafloworienteddesign

    7. Objectorienteddesign

    8. Aspectorientationclient-serverdesign,embeddeds/wdesign.

  • 8/7/2019 intr SE

    21/55

    Early Computer Programming (50s) Every programmer developed

    his own style of writing

    programs: According to his intuition

    (exploratory programming).(build & fix)

  • 8/7/2019 intr SE

    22/55

    What is Wrong with the Exploratory

    Style?

    Can successfully be used for very small

    programs only.

    3/1/2011 MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

    22

  • 8/7/2019 intr SE

    23/55

    High-Level Language

    Programming(Early 60s)

    High-level languages such as

    FORTRAN, ALGOL, and COBOL wereintroduced:

    This reduced software developmentefforts greatly.

    Software development style was still

    exploratory. Typical program sizes were limited to a

    few thousands of lines of source code.

    3/1/2011 23MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    24/55

    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.

  • 8/7/2019 intr SE

    25/55

    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 thedesign of the program's control

    structure.'

  • 8/7/2019 intr SE

    26/55

    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.

    3/1/2011 26MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    27/55

    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

    3/1/2011 27MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    28/55

    Control Flow-Based Design

    A program having a messy flow chart

    representation:

    Difficult to understand and debug

    3/1/2011 28MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    29/55

    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.

    3/1/2011 29MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    30/55

    Control Flow-Based Design

    Many programmers had extensively used

    assembly languages.

    JUMP instructions are frequently usedfor program branching in assembly

    languages.

    Programmers considered use of GO TOstatements inevitable

    3/1/2011 30MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    31/55

    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.

    3/1/2011 31MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    32/55

    Control-flow Based Design (Late 60s)

    They published several counter articles:

    Highlighting the advantages and

    inevitability of GO TO statements

    3/1/2011 32MODULE:I INTRODUCTION TO SOFTWAREENGINEERING

  • 8/7/2019 intr SE

    33/55

    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;)

    3/1/2011 33MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    34/55

    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.

    3/1/2011 34MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    35/55

    Structured Programming

    A program is called structured

    When it uses only the following types of

    constructs: sequence

    selection

    iteration

    3/1/2011 35MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    36/55

    Structured Programming

    Unstructured control flows are

    avoided.

    Consist of a neat set ofmodules.

    Use single-entry, single-exit programconstructs.

    3/1/2011 36MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    37/55

    Structured Programming

    However, violations to this feature are

    permitted:

    Due to practical considerationssuch as:

    Premature loop exit to support

    exception handling.

    3/1/2011 37MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    38/55

    Structured Programming

    Structured programs are:

    Easier to read and understand,

    Easier to maintain, Require less effort and time for

    development.

    3/1/2011 38MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    39/55

    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.

    3/1/2011 39MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    40/55

    Data Structure-Oriented Design

    (Early70s)

    Techniques which emphasize designing the

    data structure:

    Derive program structure from it:Are called data structure oriented Design

    techniques.

    3/1/2011 40MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    41/55

    Data Structure-Oriented Design

    (Early70s)

    Example of data structure oriented

    design technique:

    Jackson's Structured Programming(JSP)methodology

    Developed by Michael Jackson in 1970s.

    3/1/2011 41MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    42/55

    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.

    3/1/2011 42MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    43/55

    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.

    3/1/2011 43MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    44/55

    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.

    3/1/2011 44MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    45/55

    Data Flow-Oriented Design (Late 70s)

    3/1/2011 45MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    46/55

    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.

    3/1/2011 46MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    47/55

    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.

    3/1/2011 47MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    48/55

    Object-Oriented Design (80s)

    Object-Oriented Techniques have gained wide

    acceptance:

    Simplicity

    Reuse possibilities

    Lower development time and cost

    More robust code

    Easy maintenance

    3/1/2011 48MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    49/55

    Evolution of design techniques

    3/1/2011 49

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    50/55

    COMPUTER SYSTEMS ENGINEERING

    3/1/2011 50

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    51/55

    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

    3/1/2011 51

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    52/55

    Software Crisis (cont.)

    3/1/2011 52

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    53/55

    Factors Contributing to the Software

    Crisis

    Larger problems

    Lack of adequate training in software

    engineering

    Increasing skill shortage

    Low productivity improvements.

    3/1/2011 53

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    54/55

    Types of Software Projects

    Software products

    Outsourced projects Indian companies have focused on

    outsourced projects.

    3/1/2011 54

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING

  • 8/7/2019 intr SE

    55/55

    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.

    3/1/2011

    MODULE:I INTRODUCTION TO SOFTWARE

    ENGINEERING 55