Characterizing User Interface Components for Reuse