Hardware abstraction layers (HALs) and measurement abstraction layers (MALs) are some of the most effective design patterns to make test software as adaptable as the hardware. Rather than employing device-specific code modules in a test sequence, abstraction layers give you the ability to decouple measurement types and instrument-specific drivers from the test sequence.