the process of detecting, tracing and eliminating errors in a computer program is