Arriving at all the requirements of a large software system is a very difficult task, whose success or failure significantly affects the system design and implementation. A user oriented approach is suggested in this paper, that expands the definition of a user and allows hierarchal decomposition of users. Requirements are formed at the elementary level of the users and then composed to upper levels and checked. The checks are done against the real needs of the user community rather then among the requirements themselves. A possible use of automated tools in this process is suggested.