Agile software development principles and methodologies have gained a lot of popularity in recent years. Unlike traditional software processes, agile processes advocate flexible practices that allow coping with changing requirements. Recently, several agile processes have been proposed, which differ in a variety of ways. In this paper, we analyze the characteristics of many agile processes and classify them based on key requirements for a software development project. The objective is to help project managers and software engineers select an agile process that is most suitable to the requirements of their software projects.