Title: What is prototyping
1What is prototyping?
- Some traditional features
- An iterative process emphasizing
- Rapid development,
- Evaluative use,
- Feedback, and
- Modification
- Learning (based on feedback)
- Consideration of alternatives
- Concreteness (a real system is developed and
presented to real users)
2Uses of prototypes
- Principal use is to help customers and developers
better understand system requirements. - Experimentation stimulates anticipation of how a
system could be used. - Attempting to use functions together to
accomplish some task can easily reveal
requirements problems.
3Prototyping benefits
- Misunderstandings exposed.
- Difficulttouse or confusing services identified
- Missing services detected
- Incomplete and/or inconsistent requirements found
by analysts as prototype is being developed. - Can demo feasibility and usefulness
- Basis for writing a system specification
4Prototyping process
5Prototyping in the software process
- Evolutionary prototyping (exploratory
development in Chap. 3) prototype is produced
and refined through a number of stages to become
the final system. - Throw-away prototyping prototype is produced to
help elucidate / validate require-ments and then
discarded. The system is then developed using
some other development process.
6Approaches to prototyping
7Evolutionary prototyping
8Advantages of evolutionary prototyping over
normal system development
- Accelerated delivery quick availability is
sometimes more important than details of
functionality or maintainability. - User engagement system is more likely to meet
user requirements and users are more likely to
want to make it work.
9Evolutionary prototyping problems
- Management problems
- Poor fit with existing waterfall management model
- Specialized developer skills required
- Maintenance problems continual change tends to
corrupt system structure so long-term maintenance
is expensive. - Contractual problems no system require-ments
specification to serve as basis for contract
10Incremental development process
11Throw-away prototyping
- Used to reduce requirements risk.
- Initial prototype is developed from outline
requirements, delivered for experiment, and
modified until risk is acceptably low.
12Throw-away prototyping
13Throw-away prototype delivery
- Developers may be pressurized to deliver a
throw-away prototype as the final system. - This is very problematic...
- It may be impossible to meet non-functional
requirements. - The prototype is almost certainly undocumented.
- The system may be poorly structured and therefore
difficult to maintain. - Normal quality standards may not have been
applied.
14No, no, no! I wont deliver the prototype to you!
User Mgmt
Developer
Air Tank
Pressurizing the Developer
15Implementation techniques
- Various techniques may be used for rapid
development - Dynamic high-level language development
- Database programming (4GLs)
- Component and application assembly
- These are not mutually exclusive they are often
used together. - Visual programming is an inherent part of most
prototype development systems.
16Dynamic high-level languages
- Include powerful data management facilities
often typeless and interpretive - Require large run-time support system not
normally used for large system development. - Some offer excellent GUI development facilities.
- Some have an integrated support environment whose
facilities may be used in the prototype. - Examples Lisp (list structure based), Prolog
(logic based), and Smalltalk (object-oriented)
17Choice of prototyping language
- What is the application domain? (e.g., NLP?,
matrix manipulation?) - What user interaction is required? (text-based?
Web-based?) - What support environment comes with the language?
(e.g., tools, components)
18Choice of prototyping language
- What support environment comes with the language?
(e.g., tools, components) - Different parts of the system may be programmed
in different languages. However, there may be
problems with language communications. - A multi-paradigm language (e.g., LOOPS) can
reduce this problem.
19Database 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
20Database programming languages
- The language environment is some-times known as
a fourth-generation language (4GL) - Cost-effective for small to medium sized business
systems - Examples include Informix, Appgen, Sculptor, and
Power-4GL.
21Application linking in compound documents
22Visual 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.
23Visual programming with reuse
24Problems with visual development
- Difficult to coordinate team-based development
- No explicit system architecture (hidden)
- Complex dependencies between parts of the program
can cause maintainability problems.