Software
Compilers
- assemblers
- high-level language compilers
- loaders/linkers
Layers of abstraction
- subroutines
- device drivers
- run-time systems: concurrency and communication
- operating systems
- application programmer interfaces (APIs)
Debugging
- emulation
- monitors
- agents