CS 540A-04 Prototyping

Embed Size (px)

Citation preview

  • 8/22/2019 CS 540A-04 Prototyping

    1/40

    Lecture 4 Prototyping

    CS 540Quantitative Software Engineering

  • 8/22/2019 CS 540A-04 Prototyping

    2/40

    Software Requirements Process

    Requirements Elicitation

    Requirements Analysis

    Use Cases

    Requirements Specification

    Prototype/Modeling

    Requirements Management

  • 8/22/2019 CS 540A-04 Prototyping

    3/40

    Software Prototyping Process

    Software prototyping is the process of creating an

    incomplete model of the future full-featured

    software

    Process: Identify basic requirements

    Develop Initial prototype

    Review with customers users

    Revise and enhance

  • 8/22/2019 CS 540A-04 Prototyping

    4/40

    Types of Software Prototypes

    Throwaway prototype: process of creating a

    rapid model (demonstration or marketing)

    Evolutionary prototype: build a system then

    refine

    Incremental: final product built as separate

    prototypes

  • 8/22/2019 CS 540A-04 Prototyping

    5/40

    Serial development is costly

    Cost ofChange

    Time

    The Longer You Wait

    for Feedback, the

    more costs are sunk.

  • 8/22/2019 CS 540A-04 Prototyping

    6/40

    Applications

    Feasibility (must use)

    Human Interface testing

    Increases user involvement

    Reduce time and cost

    DSDM (Dynamic systems development method) Business prototypes (automation/mechanization)

    Usability prototypes Performance and Capacity

    Proof of concept

  • 8/22/2019 CS 540A-04 Prototyping

    7/40

    Technicians

    Cost of WorkToday

    Technician

    New Costof Work

    SystemAdministrator

    Cost of System

    Operation

    Cost of System

    Hardware

    Software

    Training

    Standards ReuseProcesses

    Tools Technology

    $1b/yr

    Developer

    Benefits of Automation

  • 8/22/2019 CS 540A-04 Prototyping

    8/40

    Project A: Order Reading and Analysis Software

    Size of Prototyping Effort:

    12K lines of C Code (10% of final system module)

    Purpose:

    Find a method for order reading and analysis, applicable to

    variable formats.

    Duration and Staff of Prototype:

    Four people for eight months.

  • 8/22/2019 CS 540A-04 Prototyping

    9/40

    Prototyping Results

    1. Final requirements based on prototype results.

    2. Alerted developers' to the possibility of a

    having a tunable system.

    3. Early evaluation of functional decompositionand performance showed bottlenecks in the

    dispatcher.

    4. Eliminated the possibility of reusing code from

    another project.5. Prototype was thrown away due to

    decomposition and performance problems.

  • 8/22/2019 CS 540A-04 Prototyping

    10/40

    Project B: Outside Plant Data Base System

    Size of Effort: 5% of 500K line of source code.

    Purpose:

    To evaluate database structures for an outside plant data and toexperiment with approaches to handling multiple future states of

    equipment usage.

    Duration:

    Three people for 15 months.

  • 8/22/2019 CS 540A-04 Prototyping

    11/40

    Experience:

    1. A data base structure using hyper graph theory was

    invented.

    2. An algorithm for handling both time-driven and event-

    driven assignments was invented

    3. The prototype became the basis for the production code.

    4. UNIX flat files were used to model loop plant by way of

    a directed graph.

    5. The prototype showed database portability from Unix to

    the Mainframe.

  • 8/22/2019 CS 540A-04 Prototyping

    12/40

    TRADITIONAL PROTOTYPE BASED

    40% REDUCTION

    20%

    80%

    40%

    30%

    45%

    25%

    Systems

    Engineering

    Design,

    Develop,

    Test,

    Install

    Final

    Development,

    Deployment

    Systems

    Engineering &

    Prototype

    FinalDevelopment

    Deployment

    Comparison

  • 8/22/2019 CS 540A-04 Prototyping

    13/40

    Prototypes

    Plan to build a prototype

    Document feedback from customer for the

    prototype.

    Manage the feedback into the software product

  • 8/22/2019 CS 540A-04 Prototyping

    14/40

    Prototyping with Reuse

    Application level development Entire application systems are integrated with the prototype so

    that their functionality can be shared

    For example, if text preparation is required, a standard word

    processor can be used

    Component level development Components are mutually independent

    Individual components are integrated within a standard

    framework to implement the system

    Framework can be a scripting language or an integration

    platform.

  • 8/22/2019 CS 540A-04 Prototyping

    15/40

    Prototyping Benefits

    Misunderstandings between software users and

    developers are exposed

    Missing services may be detected and confusing

    services may be identified

    A working system is available early in the process

    The prototype may serve as a basis for deriving a

    system specification The system can support user training and system

    testing

  • 8/22/2019 CS 540A-04 Prototyping

    16/40

    Prototyping Approaches

    Prospectus

    Ev o lu ti on ar y

    p r o to ty pi ng

    Th r ow- a wa y

    P r o to ty pi ng

    De l i ve r e d

    s ys te m

    Exec ut a ble P r ot ot yp e +S y st e m S pe c i f ic a t io n

  • 8/22/2019 CS 540A-04 Prototyping

    17/40

    Prototyping Objectives

    The objective ofevolutionary prototypingis to

    deliver a working system to end-users

    The development starts with those requirements

    which are best understood.

    The objective ofthrow-away prototypingis to

    validate or derive the system requirements

    The prototyping process starts with those

    requirements which are poorly understood

  • 8/22/2019 CS 540A-04 Prototyping

    18/40

    Evolutionary Prototyping

    Must be used for systems where the requirements

    specification cannot be developed in advance

    Based on techniques which allow rapid system

    iterations

    Verification is impossible as there is no

    specification

    Validation means demonstrating the adequacy ofthe system

  • 8/22/2019 CS 540A-04 Prototyping

    19/40

    Evolutionary Prototyping Flow

    Build prototypesystem

    Develop abstractspecification

    Use prototypesystem

    Deliver

    system

    System

    adequate?

    YES

    N

  • 8/22/2019 CS 540A-04 Prototyping

    20/40

    Evolutionary Prototyping Advantages

    Accelerated delivery of the system Rapid delivery and deployment are sometimes more important

    than functionality or long-term software maintainability

    User engagement with the system Not only is the system more likely to meet user requirements,

    they are more likely to commit to the use of the system

  • 8/22/2019 CS 540A-04 Prototyping

    21/40

    Evolutionary Prototyping Technologies

    Specification, design and implementation are

    inter-twined

    The system is developed as a series of increments

    that are delivered to the customer

    Techniques for rapid system development are

    used such as CASE tools and 4GLs

    User interfaces are usually developed using a GUIdevelopment toolkit

  • 8/22/2019 CS 540A-04 Prototyping

    22/40

    Evolutionary Prototyping Challenges

    Management problems

    Existing management processes assume a waterfall

    model of development

    Specialist skills are required which may not beavailable in all development teams

    Maintenance problems

    Continual change tends to corrupt system structure so

    long-term maintenance is expensive

    Contractual problems

  • 8/22/2019 CS 540A-04 Prototyping

    23/40

    Prototypes as Specifications

    Some parts of the requirements may be

    impossible to prototype

    E.g., safety-critical functions

    An implementation has no legal standing as acontract

    Non-functional requirements cannot be

    adequately tested in a system prototype

  • 8/22/2019 CS 540A-04 Prototyping

    24/40

    Incremental Development

    System is developed and delivered in increments after

    establishing an overall architecture

    Requirements and specifications for each increment may

    be developed

    Users may experiment with delivered increments while

    others are being developed

    These serve as a form of prototype system

    Intended to combine some of the advantages ofprototyping

    More manageable process

    Better system structure

  • 8/22/2019 CS 540A-04 Prototyping

    25/40

    Incremental Development Flow

    Validateincrement

    Build systemincrement

    Specify systemincrement

    Design system

    architecture

    Define system

    deliverables

    Systemcomplete?

    Integrateincrement

    Validatesystem

    Deliver finalsystem

    YES

    NO

  • 8/22/2019 CS 540A-04 Prototyping

    26/40

    Throw-away Prototypes

    Used to reduce requirements risk

    The prototype is developed from an initial

    specification, delivered for experiment then

    discarded

    The throw-away prototype must NOT be considered

    as a final system Some system characteristics may have been left out

    There is no specification for long-term maintenance

    The system will be poorly structured and difficult to maintain

  • 8/22/2019 CS 540A-04 Prototyping

    27/40

    Throw-away Prototyping

    Outline

    requirements

    Develop

    prototype

    Evaluate

    prototype

    Specify

    system

    Developsoftware

    Validatesystem

    Deliveredsoftwaresystem

    Reusable

    components

  • 8/22/2019 CS 540A-04 Prototyping

    28/40

    Rapid Prototyping Techniques

    Various techniques may be used for rapid

    development

    Dynamic high-level language development

    Database programming Component and application assembly

    These techniques are often used together

    Visual programming is an inherent part of mostprototype development systems

  • 8/22/2019 CS 540A-04 Prototyping

    29/40

    Dynamic High-level Languages

    Languages which include powerful data

    management facilities

    Need a large run-time support system. Not

    normally used for large system development

    Some languages offer excellent UI development

    facilities

    Some languages have an integrated supportenvironment whose facilities may be used in the

    prototype

  • 8/22/2019 CS 540A-04 Prototyping

    30/40

    Choice of Prototyping Language

    What is the application domain of the problem?

    What user interaction is required?

    What support environment comes with the

    language?

    Different parts of the system may be programmed

    in different languages

    Example languages Java, Smalltalk, Lisp, Prolog, Perl, Tcl/TK

  • 8/22/2019 CS 540A-04 Prototyping

    31/40

    Database Programming Languages

    Domain specific languages for business systems based around adatabase management system

    Normally include a database query language, a screen generator, a

    report generator and a spreadsheet

    May be integrated with a CASE toolset

    The language + environment is sometimes known as a 4GL

    Cost-effective for small to medium sized business systems

    DB

    programminglanguage

    Interfacegenerator Spreadsheet

    Reportgenerator

    Database management system

    Fourth-generation language

  • 8/22/2019 CS 540A-04 Prototyping

    32/40

    Prototyping with Reuse

    Application level development Entire application systems are integrated with the prototype so

    that their functionality can be shared

    For example, if text preparation is required, a standard word

    processor can be used

    Component level development Components are mutually independent

    Individual components are integrated within a standard

    framework to implement the system Framework can be a scripting language or an integration

    platform.

    .

  • 8/22/2019 CS 540A-04 Prototyping

    33/40

    Key points

    A prototype can be used to give end-users a concrete

    impression of the systems capabilities

    Prototyping is becoming increasingly used where

    rapid development is essential

    Throw-away prototyping is used to understand the

    system requirements

    In evolutionary prototyping, the system is developedby evolving an initial version to the final version

  • 8/22/2019 CS 540A-04 Prototyping

    34/40

    Visual programming

    Scripting languages such as Visual Basic support

    visual programming

    the prototype is developed by creating a user

    interface from standard items and associatingcomponents with these items

    A large library of components exists to support

    this type of development

    These may be tailored to suit the specific

    application requirements

  • 8/22/2019 CS 540A-04 Prototyping

    35/40

    Visual programming with reuse

    File Edit Views Layout Opt ions Help

    General

    Index

    Hypertextdisplay componentDate component

    Range checkingscript

    Tree displaycomponent

    12th January 2000

    3.876

    Draw canvascomponent

    User promptcomponent +

    script

  • 8/22/2019 CS 540A-04 Prototyping

    36/40

    Problems with visual development

    Difficult to coordinate team-based development

    No explicit system architecture

    Complex dependencies between parts of the

    program can cause maintainability problems

  • 8/22/2019 CS 540A-04 Prototyping

    37/40

    User interface prototyping

    It is impossible to pre-specify the look and feel of

    a user interface in an effective way

    UI development consumes an increasing part of

    overall system development costs

    User interface generators may be used to draw

    the interface and simulate its functionality with

    components associated with interface entities

    Web interfaces may be prototyped using a web

    site editor

  • 8/22/2019 CS 540A-04 Prototyping

    38/40

    Mindset

    Prototyping is critical system parts that cannot be

    effectively pre-specified

    Rapid prototyping focus on partial functionality

    Prototyping techniques include the use of tools,

    very high-level languages and database

    programming

    Users must be involved in prototype evaluation

  • 8/22/2019 CS 540A-04 Prototyping

    39/40

    Growing from Prototype to Model

  • 8/22/2019 CS 540A-04 Prototyping

    40/40

    Software Prototyping: Review

    Types: Throwaway, Evolutionary, Incremental

    Advantages and Disadvantages

    When to Use

    Methods: DSDM, Evolutionary, Operational,

    SCRUM

    Tools: Screen Generators, design, tangible

    architect, Visual Basic, REE, LYMB Simulation technologies