8[1]. Software Engineering Concepts

Embed Size (px)

Citation preview

  • 8/8/2019 8[1]. Software Engineering Concepts

    1/28

    1

    Summer 2009

    Lesson - 8

    Software Engineering

    Concepts

    CSE 101

  • 8/8/2019 8[1]. Software Engineering Concepts

    2/28

    2

    What is software?

    Computer programs andassociated documentation

    Software products may be developed for a particularcustomer or may be developed for a general market

    Software products may be

    Generic - developed to be sold to a range ofdifferent customers

    Bespoke (custom) - developed for a single customer accordingto their specification

  • 8/8/2019 8[1]. Software Engineering Concepts

    3/28

    3

    Importance of Software

    The economies of ALL developed nations aredependent on software.

    More and more systems are software controlled

    Software engineering is concerned with theories,methods and tools for professional softwaredevelopment.

    Expenditure on software represents asignificant fraction of Gross National Product (GNP) in

    all developed countries.

  • 8/8/2019 8[1]. Software Engineering Concepts

    4/28

    4

    What is software engineering?

    Software engineering is an engineering disciplinewhich is concerned with all aspects of softwareproduction

    Software engineers should adopt a systematic and organisedapproach to their work

    use appropriate tools and techniques depending on the problem to be solved,

    the development constraints and

    the resources available

  • 8/8/2019 8[1]. Software Engineering Concepts

    5/28

    5

    What is the difference between software

    engineering and computer science?

    Computer Science Software Engineering

    is concerned with

    Computer science theories are currently insufficient to act asa complete underpinning for software engineering, BUT it is

    a foundation for practical aspects of software engineering

    theory

    fundamentals

    the practicalities of developing

    delivering useful software

  • 8/8/2019 8[1]. Software Engineering Concepts

    6/28

    6

    What is the difference between software

    engineering and system engineering?

    System engineering is concerned with all aspects of computer-based systems development including hardware, software andprocess engineering.

    Software engineering is part of this process concerned with

    developing the software infrastructure, control, applications anddatabases in the system. So this is a part of System engineering.

    System engineers are involved in

    system specification,

    architectural design

    Integration.

  • 8/8/2019 8[1]. Software Engineering Concepts

    7/28

    7

    What is a software process?

    A set of activities whose goal is the development orevolution of software.

    Generic activities in all software processes are:

    Specification - what the system should do and itsdevelopment constraints

    Development - production of the software system

    Validation - checking that the software is what the customerwants

    Evolution - changing the software in response to changingdemands.

  • 8/8/2019 8[1]. Software Engineering Concepts

    8/28

    8

    What are software engineering methods?

    Structuredapproaches to software development which includesystemmodels, notations, rules, designadvice and processguidance.

    Examples: DeMacro, JSD, UML etc.

    Method Components:

    Model descriptions: Descriptions of graphical models which should beproduced;

    Rules: Constraints applied to systemmodels;

    Recommendations: Advice on gooddesign practice; Process guidance: What activities to follow.

  • 8/8/2019 8[1]. Software Engineering Concepts

    9/28

    9

    What is CASE (Computer-Aided Software

    Engineering)

    Upper-CASE

    Tools to support the early processactivities of requirements anddesign

    Lower-CASE

    Tools to support later activities such asprogramming, debugging and testing

    Software systems which are intended to provideautomated support for software process activities,such as requirements analysis, system modelling,debugging and testing

  • 8/8/2019 8[1]. Software Engineering Concepts

    10/28

    10

    What are the attributes of good software?

    The software shoulddeliver the required functionalityandperformance to the user and should be maintainable, dependableandacceptable.

    Maintainability Software must evolve to meet changing needs (scalable);

    Dependability Software must be trustworthy (reliable, securedand safe);

    Efficiency Software shouldnot make wasteful use of system resources;

    Acceptability Software must accepted by the users for which it was designed. Thismeans it must be understandable, usable and compatible with othersystems.

  • 8/8/2019 8[1]. Software Engineering Concepts

    11/28

    11

    What are the key challenges facing

    Software Engineering?

    Heterogeneity

    Developing techniques for building software that can cope withheterogeneous platforms and execution environments;

    Delivery

    Developing techniques that lead to faster delivery of software;

    Trust

    Developing techniques that demonstrate that software can betrusted by its users.

    Reliable, Securedand Safe.

  • 8/8/2019 8[1]. Software Engineering Concepts

    12/28

    12

    Generic Software Process Models

    A simplified representation ofa software process,presented froma specific perspective

    Examples ofprocess perspectives:

    Workflow perspective represents inputs, outputs and

    dependencies Data-flow perspective represents data transformationactivities

    Role/action perspective represents the roles/activities of thepeople involved in software process

    Generic process models

    Waterfall

    Evolutionary development

    Formal transformation

    Integration from reusable components

  • 8/8/2019 8[1]. Software Engineering Concepts

    13/28

    13

    Engineering Example

    Building a house:

    Land and finances

    garden, garage, you are used to age wine,

    enjoy to sit by the fireplace, lots of storage,

    dont like Bauhaus

    Architect will define number of floors and

    rooms, orientation of the driveway, size of the

    garage

    type of bricks, color of the walls,

    Construction

    Entering

    Living in the house

    Fixing minor problems, leaking in the roof

    System Feasibility

    Software Plans and Requirements

    Product Design

    Detailed Design

    Code

    Integration (Product Verification)

    Integration (System Test)

    Operations and Maintenance

  • 8/8/2019 8[1]. Software Engineering Concepts

    14/28

    14

    he Waterfall Model

    System Feasibility Validation

    Plans +

    RequirementsValidation

    Product Design Verification

    Detailed Design Verification

    Code Unit Test

    IntegrationProduct

    Verification

    Integration System Test

    Operation +

    MaintenanceRevalidationDidnt we forget something ?

  • 8/8/2019 8[1]. Software Engineering Concepts

    15/28

    15

    he Waterfall Model

    System Feasibility Validation

    Plans +

    RequirementsValidation

    Product Design Verification

    Detailed Design Verification

    Code Unit Test

    IntegrationProduct

    Verification

    Integration System Test

    Operation +

    MaintenanceRevalidation

  • 8/8/2019 8[1]. Software Engineering Concepts

    16/28

    16

    Weaknesses:

    Usually requirements change, are incomplete

    or even not known

    Communication ! (see Mars Orbiter)

    Result: Thats not what I meant ! ( go back to

    last step )

    WF-Model reacts very statically:

    Each stage must be completed before next

    one starts

    Review of Waterfall Model

  • 8/8/2019 8[1]. Software Engineering Concepts

    17/28

    17

    System Feasibility Validation

    Plans +

    RequirementsValidation

    Product Design Verification

    Detailed Design Verification

    Code Unit Test

    IntegrationProduct

    Verification

    Integration System Test

    Operation +

    MaintenanceRevalidation

    Too expensiveDoesnt force to discipline

    Dont show this to your boss !

    otal FeedBack

  • 8/8/2019 8[1]. Software Engineering Concepts

    18/28

    18

    ValidationFinal

    version

    DevelopmentIntermediate

    versions

    SpecificationInitial

    version

    Outlinedescription

    Concurrentactivities

    Evolutionary Process Model

  • 8/8/2019 8[1]. Software Engineering Concepts

    19/28

    19

    Waterfall High risk for new systems because of specificationand

    design problems.

    Low risk for well-understooddevelopments using familiartechnology.

    Prototyping

    Low risk for new applications because specificationandprogram stay in step.

    High risk because of lack of process visibility.

    Transformational

    High risk because ofneed for advanced technologyandstaff skills.

    Process Model Problem

  • 8/8/2019 8[1]. Software Engineering Concepts

    20/28

    20

    Riskanalysis

    Riskanalysis

    Riskanalysis

    Riskanalysis Proto-

    type 1

    Prototype 2

    Prototype 3Opera-

    tionalprotoype

    Concept ofOperation

    Simulations, models, benchmarks

    S/Wrequirements

    Requirementvalidation

    DesignV&V

    Product

    design Detaileddesign

    Code

    Unit test

    Integrationtest

    AcceptancetestService Develop, verify

    next-level product

    Evaluate alternativesidentify, resolve risks

    Determine objectivesalternatives and

    constraints

    Plan next phase

    Integrationand test plan

    Developmentplan

    Requirements planLife-cycle plan

    REVIEW

    Spiral Process Model

  • 8/8/2019 8[1]. Software Engineering Concepts

    21/28

    21

    Focuses attention on reuse options.

    Focuses attention on early error elimination.

    Puts quality objectives up front.

    Integrates development andmaintenance.

    Provides a framework for hardware/softwaredevelopment.

    Spiral Model Advantages

  • 8/8/2019 8[1]. Software Engineering Concepts

    22/28

    22

    Contractual development often specifiesprocess model anddeliverables inadvance.

    Requires risk assessment expertise.

    Spiral Model Problems

  • 8/8/2019 8[1]. Software Engineering Concepts

    23/28

    23

    User Programmer

    SOFTWARE

    Customer Designer

    Programmers view:

    Some (holy) lines of code

    A technical challenge

    A pet

    ...

    he Human Factor

  • 8/8/2019 8[1]. Software Engineering Concepts

    24/28

    24

    User Programmer

    SOFTWARE

    Customer Designer

    Users view: A miracle

    A wonderful tool making things easier

    An incombprehensible tool

    unnecessarilly complicating life

    Something that simply should work !

    he Human Factor

  • 8/8/2019 8[1]. Software Engineering Concepts

    25/28

    25

    User Programmer

    SOFTWARE

    Customer DesignerCustomers view:

    A hopefully affordable tool to enhance profit.

    he Human Factor

  • 8/8/2019 8[1]. Software Engineering Concepts

    26/28

    26

    User Programmer

    SOFTWARE

    Customer DesignerDesigners view:

    A reasonably complicated

    tool to fulfill the needs

    A technical challenge

    he Human Factor

  • 8/8/2019 8[1]. Software Engineering Concepts

    27/28

    27

    Professional and ethical responsibility

    Software engineering involves wider responsibilitiesthan simply the application of technical skills.

    Software engineers must behave in an honest andethically responsible way if they are to be respected

    as professionals. Ethical behaviour is more than simply upholding the

    law.

  • 8/8/2019 8[1]. Software Engineering Concepts

    28/28

    28

    Question???