Thursday 23 April 2009

Rapid evolutionary prototyping approach

Rapid software prototyping is an approach which attempts to remedy some of the shortcomings of the life-cycle model. There are three types of prototyping: Throw-it-away, Evolutionary and Incremental.


Hekmatpour (1987) mentioned that 'Evolutionary prototyping is in complete contrast to the life-cycle model and regards development as consisting of three stages of design, implementation and evaluation, where these are carried out iteratively until the prototype converges to final system'.


The rapid software prototyping approach is very applicable to develop small scale projects. I myself are taking this approach to develop a simple web application at my firm. In the first place, I started developing the most fundemental modules of the appliaction by writting a couple of web pages and creating a rather simple database plus a few store procedures. This would be a prototype for users to give their comments. After I collected the comments from the users, I would modify the design of the application and program it accordingly. Then, I asked the users to evaluate and test it. I iterated this process a few times until it could meet the requirements for the first phase roll-out. That means I leave some requirements to the next phase. When the application is in production, I am adding more modules to it and prepare for the second phase roll-out. Meanwhile, I am designing it for the phase three roll-out. In short, addition and modification are two essential features of the entire development process.

According to Wikipedia (2009), Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. I can say Evolutonary Prototyping approach is similar to Agile software development as they both do not focus on the initial design but focus on the development process. The iterative development enables the product to be in production in relatively short time. Besides, the design will be perfected throughout the entire development process. This approach is highly adaptive to the volatile business environment. Imperatively, the development life cycle of an application is much shorter in the era. Maybe this is due to the fast moving of the technologies. For example, Microsoft SQL server is one of the most successful products of Microsoft, which released newer version in 2000, 2005 and last year. You can see there is a new delivery every 4 or 5 years. Probably, the frequent release is more likely subject to the business perspective rather than the actual technological breakthrough.

Developers do not afford to have a thorough study and a detail design for a project because this is too costly and risky. I can say longer the development process you take and lesser the production time ythe appliaction has. Therefore, rapid evolutionary prototyping is a more practical approach to software development.

References

Hekmatpour, S 1987, ‘Experience With Evolutionary Prototyping in a Large Software Project’, SIGSOFT Software Engineering Notes, vol.12, no.1, ACM, also available as PDF, pp. 38-41.

Wikipedia 2009, Agile software development, Wikipedia, The free encyclopedia, last modified 21 April 2009, Wikimedia Foundation, Inc., US, viewed 23 April, <http://en.wikipedia.org/wiki/Agile_development>.

No comments: