Mastering GRASP Principles in Object-Oriented Design