Aligning requirements and testing through metamodeling and patterns: design and evaluation