Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach

web.firat.edu.tr
from web.firat.edu.tr More from this publisher
21.08.2013 Views

Reuse components 23.6 Rapid prototyping techniques 309 The time needed to develop a prototype can be reduced if many parts of the system can be reused rather than designed and implemented. Prototypes can be constructed quickly if there is a library of reusable components and some mechanism to combine the components into systems. The reusable components may also be used in the final system, thus reducing its development cost. An example of this approach to prototyping is found in the Unix operating system (Chapter 18 on Scripting). The success of Smalltalk as a prototyping language is as much due to its reusable component libraries as to the inbuilt language facilities. Use a stand-alone machine It is often possible to construct a system that appears realistic, but is in fact massively incomplete. For example, if a network solution is to be developed, a prototype running on a stand-alone computer is created. This simulates the complete system for the purpose of validation. But the developer is freed from considerations of networking, large data volumes and possible performance problems that would need to be considered in the production version of the system. Ignore error handling In many systems as much as one-half of the software is concerned with error handling. This includes: ■ validation of user data input from keyboards ■ handling input-output device errors ■ exception handling software ■ fault tolerant software. Omit features It may be that some features can simply be omitted in a prototype. Examples are logging software, security and authentication features. These components of a productionquality system can be significantly costly in development effort and so their omission makes construction of a prototype quicker. Ignore functionality This type of prototype is aimed simply at establishing an acceptable user interface. For example, suppose we were setting out to develop a new word processor (Appendix A). We could, very quickly, create a mock-up of what would appear on the screen, while the actual functions of the word processor are simply not implemented. This type of prototype is often used during the design of the user interface (see Chapter 5).

310 Chapter 23 ■ Prototyping 23.7 ● Discussion Advantages What are the advantages of prototyping? During requirements specification, the developer can show the user a suggested working system at a very early stage. Users are not always certain what they want a system to do. It is difficult for users to understand properly and be able to state detailed functional requirements unambiguously before they have an opportunity to experiment interactively with the options. A prototype gives the user a very clear picture of what the system will look like and what it will do. By examining options in the various versions of the prototype, the users are stimulated to discover requirements that they might not have thought of until after full implementation using any other method. The user is able to tell the developer their views about the system, and modifications can be made. The value lies in better communication between user and analyst and validation is carried out early in the life of the project. Thus prototyping can eliminate many of the requirement errors in the very early stages of a project. The greatest savings in time and effort stem from avoiding the work in changing a system that does not do what the user really wanted. Prototyping promotes a participatory approach to development, and when users are involved, they often gain confidence in a system. They see first hand the problems and errors, but they also see the mistakes being resolved quickly. The advantages of prototyping can be: ■ enables developers to cope with lack of clarity in requirements ■ gives the user the opportunity to change their mind before commitment to the final system ■ user requirements are easier to determine ■ systems are developed faster ■ development effort is reduced because the resultant system is the right system ■ maintenance effort is reduced because the system meets the users’ needs ■ end user involvement is facilitated ■ user-developer communication is enhanced ■ users are not frustrated while they wait for the final system, because they can see a working system ■ increased chance that a system will be more user friendly ■ systems are easier for end users to learn and use because users know what to expect ■ enables a system to be gradually introduced into an organization ■ facilitates user training while development is going on ■ increased customer satisfaction with the delivered software. The question about prototyping is whether the cost of constructing the prototypes is offset by the savings.

Reuse components<br />

23.6 Rapid prototyping techniques 309<br />

The time needed to develop a prototype can be reduced if many parts of the system can<br />

be reused rather than designed and implemented. Prototypes can be constructed quickly<br />

if there is a library of reusable components and some mechanism to combine the<br />

components into systems. The reusable components may also be used in the final system,<br />

thus reducing its development cost. An example of this approach to prototyping<br />

is found in the Unix operating system (Chapter 18 on Scripting). The success of<br />

Smalltalk as a prototyping language is as much due to its reusable component libraries<br />

as to the inbuilt language facilities.<br />

Use a stand-alone machine<br />

It is often possible to construct a system that appears realistic, but is in fact massively<br />

incomplete. For example, if a network solution is to be developed, a prototype running<br />

on a stand-alone computer is created. This simulates the complete system <strong>for</strong> the purpose<br />

of validation. But the developer is freed from considerations of networking, large<br />

data volumes and possible per<strong>for</strong>mance problems that would need to be considered in<br />

the production version of the system.<br />

Ignore error handling<br />

In many systems as much as one-half of the software is concerned with error handling.<br />

This includes:<br />

■ validation of user data input from keyboards<br />

■ handling input-output device errors<br />

■ exception handling software<br />

■ fault tolerant software.<br />

Omit features<br />

It may be that some features can simply be omitted in a prototype. Examples are logging<br />

software, security and authentication features. These components of a productionquality<br />

system can be significantly costly in development ef<strong>for</strong>t and so their omission<br />

makes construction of a prototype quicker.<br />

Ignore functionality<br />

This type of prototype is aimed simply at establishing an acceptable user interface. For<br />

example, suppose we were setting out to develop a new word processor (Appendix A).<br />

We could, very quickly, create a mock-up of what would appear on the screen, while the<br />

actual functions of the word processor are simply not implemented. This type of prototype<br />

is often used during the design of the user interface (see Chapter 5).

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

Saved successfully!

Ooh no, something went wrong!