Understanding Software Defects: Types, Detection, and Repair Strategies
This article explains the various software defect terms, their classifications, how faults are detected through testing while defects require static analysis, and outlines current challenges and future directions for automated detection and repair of both faults and defects.
01 Software Defects and Their Classification
Human thinking has flaws, and code inherits defects, causing unexpected software behavior. Automated detection and repair are key to improving development efficiency and quality. This article discusses definitions, classifications, detection, and repair of software defects.
Software defect terminology
Fault/Bug: Code that violates business logic, e.g., using “-” instead of “+”.
Error: Unexpected runtime value, e.g., a computed as 2 but results in 3.
Failure: Incorrect interaction with users, such as program crash. Fault may lead to Error and eventually Failure.
Defect: General term for code‑level issues like memory leaks.
Faults are usually detected through testing (debugging) by comparing execution results with specifications, while Defects are identified via static analysis without running the program.
02 Current State of Defect Detection and Repair
Fault detection is more widely adopted in enterprises because faults directly affect software behavior, are easier to observe, and testing has a lower entry barrier. Defect detection via static analysis faces challenges such as higher skill requirements, false positives, and longer analysis time.
Automatic repair of faults is difficult due to business logic involvement, though recent research uses machine learning. Defect repair is more amenable to automation because defects are often formal and independent of business logic.
03 Issues and Outlook for Defect Detection and Repair
Fault detection is mature, but Defect detection receives less attention despite its impact on software quality. Companies are encouraging better software engineering practices, emphasizing both functional correctness and non‑functional quality.
Potential actions include:
Training developers on common defects to avoid them during coding.
Strengthening code review processes.
Implementing automated defect detection tools (e.g., Coverity, Fortify, FindBugs) and addressing challenges like duplicate reports and rule creation.
Developing automated defect repair solutions, which are more feasible than fault repair because defects are formal and limited in scope.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Huawei Cloud Developer Alliance
The Huawei Cloud Developer Alliance creates a tech sharing platform for developers and partners, gathering Huawei Cloud product knowledge, event updates, expert talks, and more. Together we continuously innovate to build the cloud foundation of an intelligent world.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
