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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

29.5 <strong>Software</strong> quality 363<br />

encompass the complete range of attributes associated with software, except the cost of<br />

construction.<br />

■ correctness – the extent to which the software meets its specification and meets its<br />

users’ requirements<br />

■ reliability – the degree to which the software continues to work without failing<br />

■ per<strong>for</strong>mance – the amount of main memory and processor time that the software uses<br />

■ integrity – the degree to which the software en<strong>for</strong>ces control over access to in<strong>for</strong>mation<br />

by users<br />

■ usability – the ease of use of the software<br />

■ maintainability – the ef<strong>for</strong>t required to find and fix a fault<br />

■ flexibility – the ef<strong>for</strong>t required to change the software to meet changed requirements<br />

■ testability – the ef<strong>for</strong>t required to test the software effectively<br />

■ portability – the ef<strong>for</strong>t required to transfer the software to a different hardware<br />

and/or software plat<strong>for</strong>m<br />

■ reusability – the extent to which the software (or a component within it) can be<br />

reused within some other software<br />

■ interoperability – the ef<strong>for</strong>t required to make the software work in conjunction with<br />

some other software<br />

■ security – the extent to which the software is safe from external sabotage that may<br />

damage it and impair its use.<br />

These attributes are related to the set of goals discussed in Chapter 1. As we saw,<br />

some of these qualities can be mutually contradictory, <strong>for</strong> example, if high per<strong>for</strong>mance<br />

is required, portability will probably suffer. Also, not every attribute is desired in every<br />

piece of software. So <strong>for</strong> each project it is important to identify the salient factors be<strong>for</strong>e<br />

development starts.<br />

SELF-TEST QUESTION<br />

29.2 <strong>Software</strong> is to be developed to control a fly-by-wire airplane. What are<br />

likely to be the important factors?<br />

This list of quality factors can be used in one or more of the following situations:<br />

1. at the outset of a software development, to clarify the goals<br />

2. during development, to guide the development process towards the goals<br />

3. on completion, to assess the completed piece of software.<br />

The above quality attributes are, of course, only qualitative (rather than quantitative)<br />

measures. And as we have seen earlier in this chapter, the purpose of metrics is to quantify<br />

desirable or interesting qualities. Thus a complexity measure, such as McCabe’s, can

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

Saved successfully!

Ooh no, something went wrong!