This tutorial describes the activities and work products that contribute to the specification and
validation of the software requirements of a system. Although requirements practices are closely related
to specific software development life cycle models, the general activities described in this paper are
common to most process models. The activities of elicitation, analysis, specification, validation, and
requirements management are discussed and recommended practices in each of those areas are
highlighted. Characteristics of a quality requirements specification are also described.