Patterns for Structural and Behavioral Analysis of Software