9.01 Software Design Principles Measurement of resource usage enables determination and validation of operating margins throughout the life cycle of the project, which can be indicators of potential error and fault conditions. It also enables measurement of critical computing resources, thereby maximizing the prospects for safe and reliable operation of the software. Examples of computing resources to be measured include: real time tasks, background tasks, throughput, memory utilization, bus utilization, stack size and headroom, cycle slip statistics, and fragmentation. Each project needs to perform an assessment and determine which resources should be measured. The Ames Research Center (ARC) standard describes this is as part of a self-test capability that is intentionally introduced into the software, and planned from day one. For example, functional requirements associated with the capability may be included at Preliminary Design Review (PDR). The requirements are implemented incrementally throughout the life cycle as needed to ensure maximum return on investment, with the full feature set being available to the test team during the Verification and Validation (V&V) phase. The capability presents a challenge at deployment, because a decision must be made to either extract the feature just before deployment or to deploy the software with it. None of the Center standards offer a suggestion here, except to indicate that (1) the project must ensure that inadvertent activation of the feature during operations does not introduce harmful effects, and (2) thorough regression testing ought to be performed if the decision is to extract the feature. See the 9.06 Dead Code Exclusion design principle for related discussion. None The NASA Lesson Learned 439 database contains the following lessons learned related to resource usage measurement:
See edit history of this section
Post feedback on this section
1. Principle
1.1 Rationale
2. Examples and Discussion
3. Inputs
3.1 ARC
Note: Examples of resources to measure are: real time tasks, background tasks, throughput, memory, bus utilization, stack size and headroom, cycle slip statistics, fragmentation, memory leaks, and allocation latency. This makes it possible to validate margins and makes the flight software resource usage testable.3.2 GSFC
3.3 JPL
Note: Examples of resources to measure are: real time tasks, background tasks, throughput, memory, bus utilization, stack size and headroom, cycle slip statistics, fragmentation, memory leaks, and allocation latency. This makes it possible to validate margins and makes the flight software resource usage testable.3.4 MSFC
Note: Examples of resources to measure are: real time tasks, background tasks, throughput, memory, bus utilization, stack size and headroom, cycle slip statistics, fragmentation, memory leaks, and allocation latency.
Rationale: These key metrics enable determination of operating margins, which can be indicators of potential error and fault conditions. This enables measurement of critical computing resources, thereby maximizing the prospects for safe and reliable operation of the software.4. Resources
4.1 References
5. Lessons Learned
5.1 NASA Lessons Learned
9.14 Resource Usage Measurement
Web Resources
View this section on the websiteUnknown macro: {page-info}