Concept:
Debugging is the process of locating and fixing errors (bugs) in a computer program. It is distinct from testing, which is the process of finding whether errors exist. Debugging is often an analytical, trial-and-error process rather than a strictly linear one.
Step 1: Evaluate Statement A and C.
Statement A is incorrect because the process of validating correctness is actually called Testing. Debugging only begins after a test fails. Statement C is incorrect because debugging is reactive; while you can plan a debugging strategy, the specific process cannot be fully planned before the program exists because you don't know what specific errors will occur.
Step 2: Evaluate Statement B.
This is True. Debugging is highly subjective and depends on the experience of the programmer and the specific nature of the bug (syntax vs. logic). Different programmers may use different tools or logic to trace the same error.
Step 3: Evaluate Statement D.
This is True. In software development, debugging is often considered "temporary" or ongoing because fixing one bug might reveal another, or new bugs may be introduced during the fix. A program is rarely "perfectly" debugged forever.