Software Engineering for Students A Programming Approach
Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach
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.
- Page 281 and 282: 258 Chapter 17 ■ Software robustn
- Page 283 and 284: 260 Chapter 18 ■ Scripting GNU/Li
- Page 285 and 286: 262 Chapter 18 ■ Scripting In sum
- Page 288: PART D VERIFICATION
- Page 291 and 292: 268 Chapter 19 ■ Testing We begin
- Page 293 and 294: 270 Chapter 19 ■ Testing within a
- Page 295 and 296: 272 Chapter 19 ■ Testing Test num
- Page 297 and 298: 274 Chapter 19 ■ Testing if (a >=
- Page 299 and 300: 276 Chapter 19 ■ Testing 3. apply
- Page 301 and 302: 278 Chapter 19 ■ Testing made con
- Page 303 and 304: 280 Chapter 19 ■ Testing 19.3 Dev
- Page 305 and 306: 282 Chapter 19 ■ Testing 19.2 The
- Page 307 and 308: 284 Chapter 20 ■ Groups The term
- Page 309 and 310: 286 Chapter 20 ■ Groups Of course
- Page 311 and 312: 288 Chapter 20 ■ Groups • Exerc
- Page 314 and 315: CHAPTER 21 This chapter explains: 2
- Page 316 and 317: Stage Input Output 21.3 Feedback be
- Page 318 and 319: Summary The essence and the strengt
- Page 320 and 321: CHAPTER 22 This chapter: 22.1 ● I
- Page 322 and 323: 22.2 The spiral model 299 to try to
- Page 324 and 325: 22.4 ● Discussion Exercises 301 A
- Page 326 and 327: CHAPTER 23 Prototyping This chapter
- Page 328 and 329: Therefore, in summary: ■ the prod
- Page 330 and 331: 23.5 Evolutionary prototyping 307 U
- Page 334 and 335: Pitfalls For users, the problems of
- Page 336 and 337: Answers to self-test questions 313
- Page 338 and 339: 24.2 ● Big-bang implementation 24
- Page 340 and 341: Tested component Figure 24.1 Top-do
- Page 342 and 343: 24.7 ● Use case driven implementa
- Page 344 and 345: ■ middle-out ■ use case based.
- Page 346 and 347: SELF-TEST QUESTION 25.1 What is the
- Page 348 and 349: sharing of software or their own re
- Page 350 and 351: Summary 327 Inappropriate patches,
- Page 352 and 353: Further reading 329 Cathedral and t
- Page 354 and 355: These are qualified by the statemen
- Page 356 and 357: 26.3 Extreme programming 333 develo
- Page 358 and 359: SELF-TEST QUESTION 26.3 Which of th
- Page 360 and 361: CHAPTER 27 This chapter explains:
- Page 362 and 363: Figure 27.1 The phases of the unifi
- Page 364 and 365: 27.5 ● Iteration 27.6 Case study
- Page 366 and 367: The transition phase Summary 343 Th
- Page 368: PART F PROJECT MANAGEMENT
- Page 371 and 372: 348 Chapter 28 ■ Teams The commun
- Page 373 and 374: 350 Chapter 28 ■ Teams Level of s
- Page 375 and 376: 352 Chapter 28 ■ Teams A chief pr
- Page 377 and 378: 354 Chapter 28 ■ Teams benefits o
- Page 379 and 380: 356 Chapter 28 ■ Teams • Furthe
- Page 381 and 382: 358 Chapter 29 ■ Software metrics
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).