N-version programming is based on design or version diversity, meaning different versions of the software are developed independently with the thinking that these versions are independent in their failure behavior. Structured programming and GOTO-less programming are part of robust programming techniques to make programs more readable and executable.
92. Which of the following is an example of a static quality attribute of a software product?
a. Mean-time-between-failure
b. Simplicity in functions
c. Mean-time-to-repair
d. Resource utilization statistics
Static quality attributes are validated by inspecting nonexecuting software products and include modularity, simplicity, and completeness. Simplicity looks for straightforward implementation of functions. It is the characteristic of software that ensures definition and implementation of functions in the most direct and understandable manner.
Reliability models can be used to predict software reliability (for example, MTBF and MTTR) based on the rate of occurrence of defects and errors. There is a trade-off between complexity and security, meaning that complex systems are difficult to secure whereas simple systems are easy to secure.
93. Auditing an information system is
a. When audit records are stored on hardware-enforced, write-once media
b. When the user being audited has privileged access
c. When the audit activity is performed on a separate system
d. When the audit-related privileges are separated from nonaudit privileges
94. Software quality is based on user needs. Which of the following software quality factors address the user’s need for performance?
a. Integrity and survivability
b. Verifiability and manageability
c. Correctness and interoperability
d. Expandability and flexibility
Integrity and survivability are incorrect because they are a part of functional need. Integrity asks, “How secure is it?” whereas survivability asks, “Can it survive during a failure?” Quality factors such as integrity, reliability, survivability, and usability are part of the functional need. Verifiability and manageability are incorrect because they are a part of the management need. Verifiability asks, “Is performance verification easy?” whereas manageability asks, “Is the software easily managed?” Expandability and flexibility are incorrect because they are a part of the changes needed. Expandability asks, “How easy is it to expand?” whereas flexibility asks, “How easy is it to change?”
95. Developing safe software is crucial to prevent loss of life, property damage, or liability. Which of the following practices is
a. Use high coupling between critical functions and data from noncritical ones.
b. Use low data coupling between critical units.
c. Implement a fail-safe recovery system.
d. Specify and test for unsafe conditions.