Characterizing Student Proficiency In Software Modeling In Terms of Functions, Structures, and Behaviors