defect engineering