Unit 11 - Product quality: verification, metrics and testing Flashcards
Suggest three expectations that a customer might have of a software product without perhaps being aware of them.
Three possibilities are:
- the product will not conflict with other software that they use
- the product will boost productivity
- the product will be simple to use.
SAQ 1
Explain how increasing integrity within a system could affect efficiency.
Increasing integrity within a system means strengthening measures to ensure that modification or deletion of data by unauthorised persons, or by any other unintended means, does not occur. This might involve the use of passwords to access certain data and an authentication server to check a user’s identity, or it might mean that network traffic needs to be encrypted and decrypted. Each of these factors adds an overhead to processing, so efficiency is likely to be reduced.
SAQ 2
What are the six SQF (Software Quality Factor) classes?
functionality reliability usability efficiency maintainability portability.
p 106
When looking at SFQs, changes to integrity might affect efficiency. These two SFQs are therefore not always independent.
Identify one other pair of SQFs that are not independent.
Another pair of SQFs that are not independent is usability and portability. For example, many of the features of the Apple Macintosh that contribute to its reputation for usability are built into its operating system.
SAQ 2
Give a simple example of two system descriptions that might contradict each other.
There are numerous possibilities. One elementary example would be if a structural model for a hotel reservation system indicated that a reservation could be made for more that one room but the implementation only allowed one room per reservation.
SAQ 3
Why is it important for the customer’s requirements statement to be self consistent?
If the customer’s requirement statement lacks self consistency, then either the resulting system will be inconsistent or it will not satisfy the customer’s requirements. The system builders can decide (implicitly or explicitly) how to resolve the inconsistencies or, if the inconsistent requirements affect different parts of the system and are not picked up by the developers, the developers could inadvertently build the inconsistencies into the product.
SAQ 4
Give two reasons why it is useful to run a unit test before the relevant code increment has been written?
(1) If the test unexpectedly already passes at this point, this demonstrates that it is not a good test of the next increment.
(2) If it fails in an unexpected way, this demonstrates a faulty or incomplete understanding of the test that needs to be addressed in order to have a good grip on the code and test.
SAQ 5
Are there any situations in which system testing should be carried out by the implementers of a system?
Probably the only situation where this is appropriate is when the project team is small. In small teams, one person might play the part of requirements engineer, designer, implementer, tester and maintenance engineer.
SAQ 8
What do you think is the relationship between system testing and acceptance testing?
In general, the same tests will be carried out during acceptance testing and system testing. System testing is an in-house activity and a customer need never know how system testing went – any bugs can be dealt with before the customer sees them. Acceptance testing, on the other hand, is conducted with much more at stake – the customer can accept or reject a system based on its performance at acceptance testing.
SAQ 9
Why should regression testing be necessary even after the customer has accepted the product after acceptance testing?
Acceptance testing is the process of showing that the software meets the customer’s requirements, not that there aren’t bugs in the code. In fact, given that a system is put into use, bugs that require fixing are almost certain to be found after acceptance testing. In addition, the system will be maintained, with functionality added and changed, leading to a requirement for regression testing.
SAQ 10
Use the following phrases, which describe four kinds of testing, to fill the gaps in the following three sentences.
usability testing, requirements testing, security testing, regression testing
- TDD and DbC are valuable but not comprehensive tools for
_________________. - TDD has ________________ built into it.
- DbC and TDD cannot substitute for thorough _______________ or _________.
- TDD and DbC are valuable but not comprehensive tools for requirements testing.
- TDD has regression testing built into it.
- DbC and TDD cannot substitute for thorough usability testing or
security testing.
SAQ 11
Should the cyclomatic-complexity metric be used to measure the complexity of an object-oriented software system?
Because the cyclomatic-complexity metric is based on decision points, which are present only in methods, it is ‘blind’ to the class-structuring mechanisms that are available in object-oriented system descriptions. As much of the complexity of an object-oriented system is held in the class structure, applying the cyclomatic-complexity metric to a whole system would not therefore be appropriate.
SAQ 14
What “decision points” or statements does the cyclomatic-complexity metric count?
if while do-while and for loops switch try && ||
Name the complexity metrics described in the module.
Coupling-between-objects (CBO) metric
Number-of-children (NOC) metric.
Response-for-a-class (RFC) metric.
Lack-of-cohesion-in-methods (LCOM) metric.
Weighted-methods-per-class (WMPC) metric.
Consider a class with ten methods, whose WMPC value is 40. How confident can you be that this class is not too complex?
For a class with ten methods, a value for the WMPC metric of 40 would typically suggest acceptably low class complexity. However although nearly all of the ten methods might be acceptably simple, one or two might be unacceptably complex.