1. Phân tích bài toán 2. Xác định quá trình phát triển các yêu cầu phần mềm 3. Xây dựng khả năng (vision) và phạm vi (scope) của phần mềm 4. Xác định các nhóm người sử dụng và đặc tính của họ và đại diện tiêu biểu cho mỗi nhóm 5. Phân tích và xác định các yêu cầu phần mềm dựa trên các đại diện của các nhóm NSD 6. Xây dựng các đặc tính xác định chất lượng yêu cầu và các yêu cầu khác (non-functional requirement).