Neither the traditional or the software engineering development approach makes adequate provision for error, incomplete understanding, uncertainty or change. More seriously, both approaches exclude users from the overall development cycle. Thus, it should come as no great surprise that custom software developments often fail and that the common source of failure is not meeting the needs of users.
The prototyping of software is an approach to software development which challenges conventional wisdom. The features of prototyping are that:
There is no perfect knowledge of the application before implementation.
Evolution is a natural part of the life of software.
Users of the software are involved during all stages of software development.
The prototype itself is the primary communication mechanism between users and developers.
Prototyping has long been used by software developers to test software on a small scale. Prototyping on a larger scale is far less common, however. In the more revolutionary form of prototyping, evolutionary prototyping, software is developed and delivered incrementally to the users. Functions are added or deleted as the software evolves, in situ, towards a satisfactory form.
There are those who consider special software tools essential to prototyping, but prototyping is not dependent on specialised tools. It is the evolutionary mode of development and the direct involvement of users in the software development process which is key. Prototyping depends on a high level of genuine competence on the part of the prototype developers, combined with intelligent and perceptive management of the process.
In many ways, prototyping is a very difficult software development approach to advocate: it prescribes no "wonder" tools or "scientific" methods. Prototyping is just an attitude towards software development. The principles are simple: technically competent staff with a strong desire to produce software which cooperative users need, plus good management. The greatest risk of prototyping is not having adequate technical or managerial skills to carry it out successfully.
Prototyping may be objectionable to many software developers and managers. The objections which prototyping raises within the conservative parts of the software development profession suggests that many of the problems of software development are caused by the rigid and arrogant attitudes of software developers themselves. After all, software exists only to satisfy the needs of users and at least half of the software produced is never used. Something must be seriously wrong; bigger and better science and engineering is not necessarily the answer.
Prototyping is about focusing on the needs and demands of the business and the users. It is about people working continuously, steadily and harmoniously to put their needs into software in a realistic way. Prototyping is about honesty. Prototyping is about being able to make mistakes, to learn from them and, in the end, to turn them to your advantage. Prototypers do not have to pretend to be perfect and omniscient. Prototyping is about making modest improvements and improving them again and again until the optimum degree of quality is reached. Prototyping is about being able to be uncertain and to defer unknowns until it is possible to understand them and to deal with them effectively. Prototyping may not be an intellectually satisfying answer to many of the problems of software development, but it is one which will work with the right skills, people and management.
The prototyping of software is an approach to software development which challenges conventional wisdom. The features of prototyping are that:
There is no perfect knowledge of the application before implementation.
Evolution is a natural part of the life of software.
Users of the software are involved during all stages of software development.
The prototype itself is the primary communication mechanism between users and developers.
Prototyping has long been used by software developers to test software on a small scale. Prototyping on a larger scale is far less common, however. In the more revolutionary form of prototyping, evolutionary prototyping, software is developed and delivered incrementally to the users. Functions are added or deleted as the software evolves, in situ, towards a satisfactory form.
There are those who consider special software tools essential to prototyping, but prototyping is not dependent on specialised tools. It is the evolutionary mode of development and the direct involvement of users in the software development process which is key. Prototyping depends on a high level of genuine competence on the part of the prototype developers, combined with intelligent and perceptive management of the process.
In many ways, prototyping is a very difficult software development approach to advocate: it prescribes no "wonder" tools or "scientific" methods. Prototyping is just an attitude towards software development. The principles are simple: technically competent staff with a strong desire to produce software which cooperative users need, plus good management. The greatest risk of prototyping is not having adequate technical or managerial skills to carry it out successfully.
Prototyping may be objectionable to many software developers and managers. The objections which prototyping raises within the conservative parts of the software development profession suggests that many of the problems of software development are caused by the rigid and arrogant attitudes of software developers themselves. After all, software exists only to satisfy the needs of users and at least half of the software produced is never used. Something must be seriously wrong; bigger and better science and engineering is not necessarily the answer.
Prototyping is about focusing on the needs and demands of the business and the users. It is about people working continuously, steadily and harmoniously to put their needs into software in a realistic way. Prototyping is about honesty. Prototyping is about being able to make mistakes, to learn from them and, in the end, to turn them to your advantage. Prototypers do not have to pretend to be perfect and omniscient. Prototyping is about making modest improvements and improving them again and again until the optimum degree of quality is reached. Prototyping is about being able to be uncertain and to defer unknowns until it is possible to understand them and to deal with them effectively. Prototyping may not be an intellectually satisfying answer to many of the problems of software development, but it is one which will work with the right skills, people and management.