A Multi-Level Framework For The Detection, Prioritization And Testing Of Software Design Defects