软件需求,即客户对于软件产品的要求,是软件项目开展的基础。软件需求通常分为功能性需求、非功能需求和限制条件。通常,功能性需求比较容易获得(通过与客户的沟通或者对业务流程的分析),而很多非功能需求和限制条件则常常是隐含的。这是因为,在大多数情况下,对于此种需求,客户本身也并不十分清楚或客户认为需求和限制条件过于明显以至于并不将它们作为需求专门向软件开发团队提出。与此同时,软件产品的规模越来越大,实现的业务越来越复杂,因而促使人们采用一些工程化方法对软件产品需求进行研究,以便能获得准确、清晰和全面的