These slides were used to teach the above subject for the 3rd year undergrads of the Departement of Computer Engineering, University of Peradeniya in 2009, under IFS-PERADENIYA industry -university collaboration.
3. 3
Software Prototyping
What are software prototypes?
Incomplete versions of the software program being developed.
e.g.: If you develop a simple software package for a customer for the first time,
you build a model of the product, which is NOT the final product; that is the prototype)
What is software prototyping?
...of curse making the software prototypes…
Software prototyping is an activity during a certain software development, is the creation
of prototypes, i.e., incomplete versions of the software program being developed.
A prototype typically simulates only a few aspects of the features of the eventual
program, and may be completely different from the eventual implementation.
4. 4
Software Prototyping
A prototype can be used in:
The requirements engineering process to help with
requirements elicitation and validation.
In design processes to explore options and develop a UI
design.
In the testing process to run back-to-back tests.
Prototyping Process:
5. 5
Software Prototyping
Advantages of Prototyping
➢Reduced time and costs
➢Improved and increased user involvement
➢Improved system usability
➢A closer match to users’ real needs
➢Improved design quality
➢Improved maintainability
Disadvantages of Prototyping
➢Insufficient analysis
➢User confusion of prototype and finished system
➢Developer misunderstanding of user objectives
➢Developer attachment to prototype
➢Excessive development time of the prototype
➢Expense of implementing prototyping
6. 6
Software Prototyping
Categories of Prototyping
Software prototyping has many variants. However, all the methods are in some
way based on two major types of prototyping:
Evolutionary Prototyping
Throwaway(Rapid) Prototyping
This lecture series focus on Rapid Prototyping (Throwaway) But before we go
into Rapid Prototyping in detail, let me brief you both types.
9. 9
Rapid prototyping (Further…)
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 most prototype development systems.
10. 10
Rapid prototyping (Further…)
Rapid prototyping RISKS…
➢Mistaken concepts of rapid prototyping concerning definitions, objectives and correct
application of the technique.
➢Disagreements with users and customers regarding methodology, standards, tools and so on.
➢Out-of-control users who want to iterate and evolve a prototype into a system that does
everything for everyone all of the time
➢Budget slashes and effort shortcuts - temptations brought about by use of the word ‘rapid’
➢Premature delivery of a prototype instead of a final (thoroughly documented and tuned)
product
➢Over-evolved prototypes - substituting elegance and efficiency for flexibility
11. 11
Python for Rapid Prototyping
Python is an agile language which supports Agile Methodologies. Agile
methodologies helps Rapid Prototyping a lot!
A Japanese Software Engineer KOICHI TAMURA says in his blog:-
“As you know in a project where multiple people are working on, it's quite common that
there are tasks that can be done only after some other tasks is completed, and if you have made a
schedule you'll know for that reason it's difficult to make a schedule. At the last project I often used
Python for rapid prototyping to complete a task to make the team working efficiently, not making a
member bored by just waiting for his workmate finish a task. We could rewrite the script in c++ for
better performance later when there was enough time. If we had been coding only in c++, the
project might have been ended up in failure. Python worked so nice.”
12. 12
Shall we learn Python Basics?
What is Python...?
➢Python is a dynamic object-oriented programming language that can be used for
many kinds of software development.
➢It offers strong support for integration with other languages and tools, comes with
extensive standard libraries, and can be learned in a few days.
➢Many Python programmers report substantial productivity gains and feel the
language encourages the development of higher quality, more maintainable code.
➢Python's core syntax and semantics are minimalistic, while the standard library is
large and comprehensive. Its use of whitespace as block delimiters is unusual among
popular programming languages.
13. 13
Little bit from History…
➢Python was conceived in the late 1980s by Guido van Rossum at CWI [National Research
Institute for Mathematics and Computer Science (Dutch: Centrum voor Wiskunde en Informatica
or CWI)] in the Netherlands as a successor to the ABC programming language (itself inspired by
SETL- a high-level programming language) capable of exception handling and interfacing with the
Amoeba operating system.
➢Van Rossum is Python's principal author, and his continuing central role in deciding the
direction of Python is reflected in the title given to him by the Python community, Benevolent
Dictator for Life (BDFL).
➢Python 2.0 was released on 16 October 2000, with many major new features including a full
garbage collector and support for Unicode. However, the most important change was to the
development process itself, with a shift to a more transparent and community-backed process.
➢Python 3.0, a major, backwards-incompatible release, was released on 3 December 2008
after a long period of testing. Many of its major features have been back ported to the
backwards-compatible Python 2.6.
14. 14
Python Applications used in..,
➢Web and Internet Development
➢Database Access
➢Desktop GUIs
➢Scientific and Numeric
➢Education
➢Network Programming
➢Software Development
➢Game and 3D Graphics