13.07.2015 Views

Software Design 2e - DIM

Software Design 2e - DIM

Software Design 2e - DIM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

246Incremental designpossible models for them to use and assess. Essentially this form of prototype is alsolikely to be a ‘throw-away’ item, and it can be considered as enhancing the informationprovided from the requirements analysis and the functional specificationactivities.For the purposes of this chapter, we can see that the two roles of prototyping thatare most likely to be extensively employed in incremental development forms are theevolutionary and the exploratory.The evolutionary role fits with the notion of the emergent organization that wasbriefly described in the preceding section. Indeed, in such a context there is really nonotion of there being an ‘end product’, only the notion of the ‘current state’ of a system.Each new state of the system is then achieved by modifying a previous state (notnecessarily the ‘current state’), or even by creating a completely new implementation.So in a context where the incremental design process is continuous and on-going, thedevelopment of software may closely approximate to a continuous process of evolutionaryprototyping.One of the characteristics of incremental design is that it usually involves somedegree of interaction with the ‘customer’ (or with ‘end-users’, who may or may notbe the customer.) Here we can see a role for the exploratory prototype, which mayaddress anything from very specific aspects of some element of a system through to thefunctionality or behaviour of the complete system.Of course a prototype need not actually be an item of software, especially wheresuch aspects as possible scenarios for the use of a system are being considered. Indeed,prototypes are commonly used quite extensively in the design of human-interactivesystems, and the forms employed may include such forms as mock-ups of the layout orformat of user interfaces, intended simply to gauge responses from eventual users(Preece et al., 2002).At a very abstract level, one of the prototyping forms sometimes used in systemdesign is the notion of the story-board. <strong>Design</strong> reviews, both with other team membersand with end-users, form an important element of incremental design, and the storyboardis a useful means of conveying ideas about system behaviour without needing toget into technical detail. An example of this idea is shown in Figure 12.2. We canregard the story-board as a form of ‘design execution’ mechanism, and hence as a highlevelprototype. It also has the benefit of avoiding one of the hazards of prototypingidentified earlier, in that it cannot be delivered as the eventual product!An intermediate level of prototype is one provided by using a more formal notationthan that of the story-board. Executable diagrammatical forms such as Petri NetGraphs (Birrell and Ould, 1985; Stevens, 1991) and Statecharts (Harel and Gery,1997) can provide powerful mechanisms for modelling system states and transitionsbetween these. The use of such semantically well-defined forms is not only able to providea valuable prototyping mechanism in itself, but also, with suitable tools support,can result in the automatic generation of outline code in implementation languagessuch as Java and C++.At a lower level, prototypes can be built with a variety of tools, depending upontheir purpose. Scripting languages such as Visual Basic, tcl/tk and perl or perl/tkare some popular mechanisms for building exploratory prototypes, especially wherethe user interface is an important element of a system. As always with software, one

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!