21.08.2013 Views

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

386 Chapter 31 ■ Assessing methods<br />

31.2 ● How to assess methods<br />

Is it possible to identify a collection of tools and methods that are ideal in all circumstances?<br />

The answer is no. <strong>Software</strong> engineering is at an exciting time. There are a dozen schools<br />

of thought competing to demonstrate their supremacy and no single package of tools and<br />

methods seems set to succeed. Some methods seem particularly successful in specific areas,<br />

<strong>for</strong> example, the data structure design method in in<strong>for</strong>mation systems. Other methods, like<br />

structured walkthroughs, seem generally useful. In the field of programming languages,<br />

declarative languages have become important in expert systems, while highly modular<br />

imperative languages are widely used in real-time and command and control systems.<br />

Ideally, metrics (Chapter 29) would enable us to determine the best method or combination<br />

of software development methods. Regrettably, this is virtually impossible. The<br />

first problem is identifying the criteria <strong>for</strong> a best method. As we saw in Chapter 1 on<br />

problems and prospects, there are usually a number of goals <strong>for</strong> any software development<br />

project. In order to choose between methods it is necessary to establish what<br />

blend of criteria is appropriate <strong>for</strong> the particular project. For example, the set of goals<br />

<strong>for</strong> a particular project might be to optimize:<br />

■ development ef<strong>for</strong>t,<br />

■ reliability, and<br />

■ maintainability<br />

and these are in conflict with each other. In general, the most significant conflict is<br />

probably between development ef<strong>for</strong>t and reliability of the product. For example, a<br />

safety-critical system needs to be highly reliable. However, <strong>for</strong> a one-off program <strong>for</strong> a<br />

user to extract in<strong>for</strong>mation from a database, the prime goal may be quick delivery.<br />

There can be no set of factors that allow universal comparison between methods.<br />

Equally, it is unlikely that there will ever be a single best method.<br />

Suppose that we had narrowed down the choice to two applicable methods, called<br />

A and B. What we would like to have is hard evidence like this: “Method A gives 25%<br />

better productivity than method B.” Regrettably, there is no such data available today,<br />

because of the enormous difficulty of creating it. Let us examine some of those difficulties.<br />

Because of cost, it is virtually impossible to conduct any realistic experiments in<br />

which two or more methods are compared. (The cost of developing the same piece of<br />

software twice is usually prohibitive.) Usually the only experimental evidence is based<br />

on scaled-down experiments. Suppose, <strong>for</strong> example, that we wanted to compare two<br />

design methods, A and B. We could give ten people the specification of a small system<br />

and ask them to use method A, and similarly we could ask a second group to use<br />

method B. We could measure the average time taken to complete the designs and hence<br />

hope to compare the productivities of the methods. We could go on to assign additional<br />

problems and employ more people to increase our confidence in the results. Ultimately,<br />

we might gain some confidence about the relative productivity of the two methods.<br />

But many criticisms can be aimed at experiments like these. Are the backgrounds of<br />

the participants equal? Is the experience of the participants typical? (Often students are<br />

used in experiments, because they are cheap and plentifully available. But are students<br />

typical of professional software developers?) Have sufficient number of people taken

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

Saved successfully!

Ooh no, something went wrong!