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

CHAPTER 31 This chapter: 31.1 ● Introduction Assessing methods ■ discusses the problem of assessing tools and methods ■ reviews current techniques ■ examines the evidence about verification techniques ■ suggests that there is no single best method ■ discusses the challenges of introducing new methods. We saw in Chapter 1 that there are usually a number of objectives to be met in the construction of a piece of software. A major goal used to be high performance (speed and size), but with improved hardware cost and performance, this issue has declined in importance. Nowadays factors like software costs, reliability and ease of maintenance are increasingly important. For any particular project, it is, of course, vital to assess carefully what the specific aims are. Having done this, we will usually find that some of them are mutually contradictory, so that we have to decide upon a blend or compromise of objectives. This book has described a variety of techniques for software construction. All of the techniques attempt in some way to improve the process of software development and to meet the various goals of software development projects. The purpose of this chapter is to see how we can assess methods and choose a collection of methods that are appropriate for a particular project.

386 Chapter 31 ■ Assessing methods 31.2 ● How to assess methods Is it possible to identify a collection of tools and methods that are ideal in all circumstances? The answer is no. Software engineering is at an exciting time. There are a dozen schools of thought competing to demonstrate their supremacy and no single package of tools and methods seems set to succeed. Some methods seem particularly successful in specific areas, for example, the data structure design method in information systems. Other methods, like structured walkthroughs, seem generally useful. In the field of programming languages, declarative languages have become important in expert systems, while highly modular imperative languages are widely used in real-time and command and control systems. Ideally, metrics (Chapter 29) would enable us to determine the best method or combination of software development methods. Regrettably, this is virtually impossible. The first problem is identifying the criteria for a best method. As we saw in Chapter 1 on problems and prospects, there are usually a number of goals for any software development project. In order to choose between methods it is necessary to establish what blend of criteria is appropriate for the particular project. For example, the set of goals for a particular project might be to optimize: ■ development effort, ■ reliability, and ■ maintainability and these are in conflict with each other. In general, the most significant conflict is probably between development effort and reliability of the product. For example, a safety-critical system needs to be highly reliable. However, for a one-off program for a user to extract information from a database, the prime goal may be quick delivery. There can be no set of factors that allow universal comparison between methods. Equally, it is unlikely that there will ever be a single best method. Suppose that we had narrowed down the choice to two applicable methods, called A and B. What we would like to have is hard evidence like this: “Method A gives 25% better productivity than method B.” Regrettably, there is no such data available today, because of the enormous difficulty of creating it. Let us examine some of those difficulties. Because of cost, it is virtually impossible to conduct any realistic experiments in which two or more methods are compared. (The cost of developing the same piece of software twice is usually prohibitive.) Usually the only experimental evidence is based on scaled-down experiments. Suppose, for example, that we wanted to compare two design methods, A and B. We could give ten people the specification of a small system and ask them to use method A, and similarly we could ask a second group to use method B. We could measure the average time taken to complete the designs and hence hope to compare the productivities of the methods. We could go on to assign additional problems and employ more people to increase our confidence in the results. Ultimately, we might gain some confidence about the relative productivity of the two methods. But many criticisms can be aimed at experiments like these. Are the backgrounds of the participants equal? Is the experience of the participants typical? (Often students are used in experiments, because they are cheap and plentifully available. But are students typical of professional software developers?) Have sufficient number of people taken

CHAPTER<br />

31<br />

This chapter:<br />

31.1 ● Introduction<br />

Assessing methods<br />

■ discusses the problem of assessing tools and methods<br />

■ reviews current techniques<br />

■ examines the evidence about verification techniques<br />

■ suggests that there is no single best method<br />

■ discusses the challenges of introducing new methods.<br />

We saw in Chapter 1 that there are usually a number of objectives to be met in the construction<br />

of a piece of software. A major goal used to be high per<strong>for</strong>mance (speed and<br />

size), but with improved hardware cost and per<strong>for</strong>mance, this issue has declined in<br />

importance. Nowadays factors like software costs, reliability and ease of maintenance<br />

are increasingly important. For any particular project, it is, of course, vital to assess carefully<br />

what the specific aims are. Having done this, we will usually find that some of them<br />

are mutually contradictory, so that we have to decide upon a blend or compromise of<br />

objectives.<br />

This book has described a variety of techniques <strong>for</strong> software construction. All of the<br />

techniques attempt in some way to improve the process of software development and<br />

to meet the various goals of software development projects. The purpose of this chapter<br />

is to see how we can assess methods and choose a collection of methods that are<br />

appropriate <strong>for</strong> a particular project.

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

Saved successfully!

Ooh no, something went wrong!