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.

38 Chapter 4 ■ Requirements engineering<br />

On the other hand, some people argue that it is impossible to divorce specification<br />

and implementation. Indeed, in several major approaches to specification they are<br />

intermixed. In such a method, the first task is to understand and to document the<br />

workings of an existing system. (This might be a manual or a computer-based system,<br />

or some combination.) This investigation serves as the prelude to the development of<br />

a new computer system. Thus the implementation of one system (the old) acts as a<br />

major ingredient in the specification <strong>for</strong> the new system. For example, suppose we<br />

wished to develop a computer system <strong>for</strong> a library that currently does not use computers.<br />

One approach would be to investigate and document all the current manual<br />

procedures <strong>for</strong> buying books, cataloging, shelving, loaning, etc. Having accomplished<br />

this task, the next step is to decide which areas of activity are to be computerized (<strong>for</strong><br />

example, the loans system). Finally, the specification of the new system is derived from<br />

the design (implementation) of the old system. This approach to development seems<br />

very appealing and logical. However, it does mean that implementation and specification<br />

are intertwined.<br />

There are several, additional and powerful reasons why the analyst must think about<br />

implementation during specification. First, they must check that a requirement is technically<br />

possible. For example, is it possible to achieve a response time of 0.1 second?<br />

Second, it is vital to consider implementation in order to estimate the cost and delivery<br />

date of the software. In order to estimate figures <strong>for</strong> per<strong>for</strong>mance and cost it will<br />

almost certainly be necessary to carry out some outline development at least as far as<br />

architectural design.<br />

So, an ideal specification stipulates what, not how. But this is not always practical.<br />

4.3 ● The qualities of a specification<br />

We have seen that, ideally, a specification should confine itself to what is needed. We<br />

now present a list of desirable qualities <strong>for</strong> a specification. A good specification should<br />

exhibit the following characteristics:<br />

■ implementation free – what is needed, not how this is achieved<br />

■ complete – there is nothing missing<br />

■ consistent – no individual requirement contradicts any other<br />

■ unambiguous – each requirement has a single interpretation<br />

■ concise – each requirement is stated once only, without duplication<br />

■ minimal – there are no unnecessary ingredients<br />

■ understandable – by both the clients and the developers<br />

■ achievable – the requirement is technically feasible<br />

■ testable – it can be demonstrated that the requirements have been met.<br />

This list of desirable features can be used as a checklist when a specification is<br />

drawn up. Additionally it can be used as a checklist to examine and improve an existing<br />

specification.

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

Saved successfully!

Ooh no, something went wrong!