0% found this document useful (0 votes)
16 views43 pages

CSE232 - Lecture9 - SoftwarePrototyping

The document discusses software prototyping as a method for rapid software development to validate requirements and enhance user involvement in the design phase. It outlines different types of prototyping, including evolutionary and throw-away prototyping, and highlights their objectives, benefits, and processes. Key points emphasize the importance of prototyping in understanding system requirements and delivering functional systems efficiently.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views43 pages

CSE232 - Lecture9 - SoftwarePrototyping

The document discusses software prototyping as a method for rapid software development to validate requirements and enhance user involvement in the design phase. It outlines different types of prototyping, including evolutionary and throw-away prototyping, and highlights their objectives, benefits, and processes. Key points emphasize the importance of prototyping in understanding system requirements and delivering functional systems efficiently.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

CSE232: Advanced Software

Engineering

Software Prototyping
Software Prototyping
⚫ Rapid software development to validate
requirements
Objectives
⚫ To describe the use of prototypes in different
types of software projects
⚫ To discuss different kinds of prototyping
⚫ To explain the need for user interface prototyping
Topics covered
⚫ Prototyping in software process
⚫ Prototyping techniques
⚫ User interface prototyping
System prototyping
⚫ Prototyping is the rapid development of a system
⚫ In the past, the developed system was normally
thought of as inferior in some way to the required
system so further development was required
⚫ Now, the boundary between prototyping and
normal system development is blurred and many
systems are developed using an evolutionary
approach
What is Software Prototyping
⚫ what is software prototyping ?
It is the process of implementing the presumed software
requirements with an intention to learn more about the actual
requirements or alternative design that satisfies the actual set of
requirements.

⚫ Need for software prototyping


➢ To assess the set of requirements that makes a product
successful in the market
➢ To test the feasibility without building the whole system
➢ To make end-user involved in the design phase
Prototyping objectives
⚫ The objective of evolutionary prototyping is to
deliver a working system to end-users. The
development starts with those requirements
which are best understood.
⚫ The objective of throw-away prototyping is to
validate or derive the system requirements. The
prototyping process starts with those
requirements which are poorly understood
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
Prototyping process

Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality

Prototyping Outline Executable Evaluation


plan definition prototype report
Approaches to prototyping

Evolutionary Delivered
prototyping system
Outline
Requirements
Throw-away Executable Prototype +
Prototyping System Specification
Types of Prototyping
⚫ Evolutionary prototyping
• An approach to system development where an initial prototype
is produced and refined through a number of stages to the final
system
⚫ Throw-away prototyping
• A prototype which is usually a practical implementation of the
system is produced to help discover requirements problems and
then discarded. The system is then developed using some other
development process
⚫ Operational prototyping
• A throw-away prototype built over an evolutionary prototype
Throw away prototyping
⚫ Objective - Derive end system requirements
⚫ Throw away prototyping is an approach where
an initial prototype is built mainly focusing on the
poorly understood requirements
⚫ Once the requirements are understood
requirements document is updated and a
conventional development process is followed to
build the system
Evolutionary Prototyping
⚫ Objective – Deliver a working system
⚫ Evolutionary prototyping is the one in which a
system is built using the well understood requirements.
Evolutionary prototyping
⚫ Must be used for systems where the specification
cannot be developed in advance e.g. user
interface systems
⚫ Based on techniques which allow rapid system
iterations
⚫ Verification is impossible as there is no
specification. Validation means demonstrating
the adequacy of the system
Evolutionary prototyping

Develop abstract Build prototype Use prototype


specification system system

Deliver YES System


system adequate?
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
Evolutionary Prototyping
⚫ Advantages –
Accelerated Delivery

Makes User Commit

Looks like feels

⚫ Disadvantages –

Availability of specialist skills

Maintenance over long term


Evolutionary prototyping
⚫ 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
GUI development toolkit
Evolutionary prototyping problems
⚫ Management problems
• Existing management processes assume a waterfall model of
development
• Specialist skills are required which may not be available in all
development teams
⚫ Maintenance problems
• Continual change tends to corrupt system structure so long-term
maintenance is expensive
⚫ Contractual problems
Prototypes as specifications
⚫ Some parts of the requirements (e.g. safety-
critical functions) may be impossible to prototype
and so don’t appear in the specification
⚫ An implementation has no legal standing as a
contract
⚫ Non-functional requirements cannot be
adequately tested in a system prototype
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. therefore, these serve as a
form of prototype system
⚫ Intended to combine some of the advantages of
prototyping but with a more manageable process and
better system structure
Incremental development process
Define system
deliverables

Design system Specify system Build system Validate


architectur e increment increment increment

NO

Deliver final System Validate Integrate


system complete? system increment
YES
Throw-away prototyping
⚫ Used to reduce requirements risk
⚫ The prototype is developed from an initial
specification, delivered for experiment then
discarded
⚫ The throw-away prototype should 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
Throw-away prototyping

Outline Develop Evaluate Specify


requirements prototype prototype system

Reusable
components

Delivered
Develop Validate software
software system system
Prototype delivery
⚫ Developers may be pressurized to deliver a
throw-away prototype as a final system
⚫ This is not recommended
• It may be impossible to tune the prototype to meet non-
functional requirements
• The prototype is inevitably undocumented
• The system structure will be degraded through changes made
during development
• Normal organizational quality standards may not have been
applied
Operational Prototyping

⚫ Used when requirements are either critical and understood or not


critical and poorly understood .

⚫ Throw away prototypes are selectively built on top of evolutionary


prototype
Prototyping benefits
⚫ Improved system usability
⚫ Closer match to the system needed
⚫ Improved maintainability
⚫ Reduced overall development effort
⚫ One can have a working system in before hand
⚫ It brings the user to get involved in the system
design
Troubles of Software Prototyping

⚫ Developers may loose the focus on real purpose of prototype and


comprise with the quality of system .

⚫ Prototyping will not reveal the non functional requirements like


robustness, safety etc .
Rapid prototyping techniques
⚫ Various techniques may be used for rapid
development
• Dynamic high-level language development
• Database programming
• Component and application assembly
⚫ These are not exclusive techniques - they are
often used together
⚫ Visual programming is an inherent part of most
prototype development systems
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 support
environment whose facilities may be used in the
prototype
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. However,
there may be problems with language
communications
Database programming languages
⚫ Domain specific languages for business systems based
around a database 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
fourth-generation language (4GL)
⚫ Cost-effective for small to medium sized business
systems
Database programming

Interface
generator Spreadsheet

DB Report
programming generator
language

Database management system

Fourth-gener ation language


Component and application assembly
⚫ Prototypes can be created quickly from a set of
reusable components plus some mechanism to
‘glue’ these component together
⚫ The composition mechanism must include control
facilities and a mechanism for component
communication
⚫ The system specification must take into account
the availability and functionality of existing
components
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
• Individual components are integrated within a standard
framework to implement the system
Reusable component composition

Reusable Component
software Executable
composition
prototype
components framework

Control and
integration code
Compound documents
⚫ For some applications, a prototype can be created by
developing a compound document
⚫ This is a document with active elements (such as a
spreadsheet) that allow user computations
⚫ Each active element has an associated application which
is invoked when that element is selected
⚫ The document itself is the integrator for the different
applications
Application linking in compound documents

Compound document

Text 1 Table 1 Text 2 Text 3 Sound 1

Table 2 Text 4 Sound 2 Text 5

Word processor Spreadsheet Audio player


Visual programming
⚫ Scripting languages such as Visual Basic support
visual programming where the prototype is
developed by creating a user interface from
standard items and associating components 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
Visual programming with reuse
Hypertext
Date component display component

File Edit Views Layout Options Help


General
12th January 2000 Index
Range checking 3.876
script
User prompt
component +
Draw canvas script
component

Tree display
component
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
User interface prototyping
⚫ It is impossible to pre-specify the look and feel of a user
interface in an effective way. prototyping is essential
⚫ 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
Key points
⚫ A prototype can be used to give end-users a concrete
impression of the system’s capabilities
⚫ Prototyping is becoming increasingly used for system
development where rapid development is essential
⚫ Throw-away prototyping is used to understand the
system requirements
⚫ In evolutionary prototyping, the system is developed by
evolving an initial version to the final version

You might also like