The development of software systems from already built COTS components has been motivated by the prospect of reduced cost and development time. However, developing COTS-based systems introduces new challenges and risks different from building systems from scratch. In particular, this new paradigm requires simultaneous tradeoffs among user requirements, COTS products and system architecture. In this paper, we describe a set of guidelines for handling risks and uncertainties associated with such tradeoffs. Key words: COTS-Based Development, Requirements Engineering and Software Architecture.