System Design: Understanding System Requirements and Constraints