understanding system requirements