01 - Introduction to Software Engineering 140901

Embed Size (px)

Citation preview

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    1/28

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    2/28

    2

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Faculty of Computer ScienceUniversity of Indonesia

    Topic 01:Introduction toSoftware Engineering

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    3/28

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    4/28

    4

    Outline

    What is Software?

    What is Software Engineering? The Essence of Software EngineeringPractice

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    5/28

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    6/286

    Characteristics of Software

    1. Software is developed or engineered , it isnot manufactured in the classical sense.

    2. Software doesn't "wear out" - itsdeteriorate .

    Hardware failure rate depicted in a form ofthe bathtub curve

    Software failure rate depicted in a form ofthe idealized curve.

    3. Although the industry is moving toward

    component-based construction, mostsoftware continues to be custom-built.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    7/287

    Failure Curve for Hardware: Bathtub Curve

    (Source: Pressman)

    Time

    Infant mortality Wear out

    F a

    i l u r e r a

    t e

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    8/288

    Failure Curve for Software

    (Source: Pressman)

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    9/289

    Software Application

    System software Application software Engineering/scientific software Embedded software Product-line software WebApps (Web applications)

    AI software

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    10/2810

    What is Software Engineering?

    Software engineers often encounterproblems related to a computer or existingcomputer system but sometimes theunderlying problem have nothing to do withcomputers

    Therefore, we must understand the natureof the problem first:Do not impose computing machinery ortechniques on every problems.

    Solve the problem first and if needed we can

    use technology as a tool to implement oursolution.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    11/2811

    What is Software Engineering?

    Solving problems:Begin investigating a problem by analyzing it.

    Break the problem in pieces that we understandand try to deal with.

    Understand the relationship between pieces thathold the problem.

    Once analyzed, construct the solution from thecomponents that address the problems variousaspects.

    This reverse process is called synthesis :

    putting together of a large structure from smallbuilding blocks.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    12/2812

    Analyzing Problem(Source: Pfleeger & Atlee)

    PROBLEM

    Subproblem 1Subproblem 4

    Subproblem 3Subproblem 2

    FIGURE 1.1 The process of analysis

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    13/2813

    Synthesizing Solution(Source: Pfleeger & Atlee)

    SOLUTION

    Solution 1Solution 4

    Solution 3Solution 2

    FIGURE 1.2 The process of synthesis

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    14/2814

    What is Software Engineering?

    In solving a problem, we employ a varietyof methods , tools , procedures andparadigms .

    Method or technique: a formal procedure forproducing some results.

    Tool: an instrument or automated system foraccomplishing something in a better way.

    Procedure: a combination of tools andtechniques that, in concert, produce aparticular product.

    Paradigm: a particular approach orphilosophy for building software.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    15/2815

    What is Software Engineering?

    Seminal definition:[Software engineering is] the establishment and

    use of sound engineering principles in orderto obtain economically software that is reliableand works efficiently on real machines.

    IEEE definition:Software Engineering:

    (1) The application of a systematic, disciplined,quantifiable approach to the development,operation, and maintenance of software; that is,the application of engineering to software.

    (2) The study of approaches as in (1).

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    16/2816

    Relationship Between Software Engineering andComputer Science

    Source: Pfleeger & Atlee

    COMPUTERSCIENCE CUSTOMER

    SOFTWAREENGINEERING

    Theories Computer Functions

    Problem

    Tools andTechniques toSolve Problem

    FIGURE 1.3 The relationship betweencomputer science and software engineering

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    17/2817

    A Layered Technology

    Software Engineering

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    18/2818

    Process

    Process layer is the foundation .the glue that holds the technology layerstogether

    enables rational and timely development

    defines frameworkforms the basis for management control ofsoftware project

    establishes the context in which technicalmethods are applied, work products areproduced, milestone are established, qualityis ensured, and change is properly managed.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    19/2819

    Method

    Method layer provide the technical how-tos forbuilding software

    encompass a broad array of tasks

    (include communication, requirementanalysis, design modeling, programconstruction, testing, and support)

    rely on a set of basic principles thatgovern each area of the technology andinclude modeling activities and otherdescriptive techniques.

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    20/2820

    Tools

    Tools layer provide automated or semiautomatedsupport for the process and the methods

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    21/2821

    Framework Activities

    Communication Planning Modeling

    Requirement analysis & definitionDesign

    Architecture design / System design

    Component design / Program design

    ConstructionCode generation

    Testing

    Unit testing

    Integration testing

    System testing

    DeploymentSystem deliveryMaintenance

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    22/28

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    23/28

    23

    The Essence of Practice

    Polya suggests:1. Understand the problem ( communication

    and analysis ).

    2. Plan a solution ( modeling and softwaredesign ).

    3. Carry out the plan ( code generation ).4. Examine the result for accuracy ( testing

    and quality assurance ).

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    24/28

    24

    Understand the Problem

    Who has a stake in the solution to theproblem? That is, who are the stakeholders?

    What are the unknowns? What data,functions, and features are required to properlysolve the problem?

    Can the problem be compartmentalized? Isit possible to represent smaller problems that

    may be easier to understand? Can the problem be representedgraphically? Can an analysis model be

    created?

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    25/28

    25

    Plan the Solution

    Have you seen similar problems before? Arethere patterns that are recognizable in apotential solution? Is there existing software thatimplements the data, functions, and featuresthat are required?

    Has a similar problem been solved? If so, areelements of the solution reusable? Can subproblems be defined? If so, are

    solutions readily apparent for the subproblems? Can you represent a solution in a manner

    that leads to effective implementation? Cana design model be created?

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    26/28

    26

    Carry Out the Plan

    Does the solution conform to theplan? Is source code traceable to thedesign model?

    Is each component part of thesolution provably correct? Has thedesign and code been reviewed, orbetter, have correctness proofs beenapplied to algorithm?

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    27/28

    27

    Examine the Result

    Is it possible to test each componentpart of the solution? Has a reasonabletesting strategy been implemented?

    Does the solution produce resultsthat conform to the data, functions,and features that are required? Hasthe software been validated against allstakeholder requirements?

  • 8/11/2019 01 - Introduction to Software Engineering 140901

    28/28

    Q & A