Unit 11 Flashcards
Give two examples of executable documentation.
Unit tests and pre- and post-conditions
What is meant by ‘executable documentation’?
Executable documentation is documentation that allows code to be automatically checked for validity at run time. It should also demonstrate how the code should be used and indicate what the code does.
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
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.
Identify a pair of software quality factors (SQFs) that are not independent.
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. Applications that take advantage of these features are less portable to other systems, such as Windows or Linux.
What are the four SQFs identified as being of primary importance for everyday software products?
Correctness, integrity, maintainability and usability.
How could you assess correctness?
A popular measure for assessing correctness is defects per thousand lines of code (defects per KLOC), where a defect may be defined as a verified lack of conformance to requirements.
How could you assess integrity?
This is measured by considering the proportion of ‘attacks’ on a product as opposed to bona fide uses.
How could you assess maintainability?
Unfortunately there is no way to measure maintainability directly, and so we must measure it indirectly. A simple measure is mean time to change (MTTC), which is the average of the times it takes to analyse a bug report, design an appropriate modification, implement the change, test it and distribute the change to all users. In general, the lower the MTTC (for equivalent types of changes), the more maintainable the software product is.
How could you assess usability?
Any system with a user interface and that will be used by people other than the developers should be usability tested. Usability testing involves users systematically trying out the user interface and the system behind it – although for some purposes the system may be simulated. There are also forms of evaluation such as heuristic review that can be used to make substantial improvements to user interfaces without involving users.
What is the purpose of verification?
Verification tests the extent to which the product conforms with the various, often evolving, system descriptions designed to help produce it.
What is the purpose of validation?
Validation focuses on ensuring that outputs meet the needs, including implicit needs and expectations of customers and stakeholders.
What tasks does verification involve?
- ensuring that all system descriptions are self-consistent
- ensuring that all system descriptions are consistent and complete with respect to those from which they were derived
What task does validation involve?
- ensuring that all system descriptions are consistent with the customer’s requirements, including implicit requirements
Give a simple example of two system descriptions that might contradict each other.
One example would be if a structural model for a hotel reservation system indicated that a reservation could be made for more than one room but the implementation only allowed one room per reservation.