需求(requirement)就是系统(更广义的说法是项目)必须提供的能力和必须遵从的条件[JBR99]。
UP提出了一系列的最佳实践,其中之一就是需求管理(manage requirement)。需求管理不主张采用瀑布的观点,即在编程之前项目的第一个阶段就试图完全定义和固化需求。在变更不可避免,涉众意愿不明朗的情况下,UP更推崇用“一种系统的方法来寻找、记录、组织和跟踪系统不断变更的需求”[RUP]。
简而言之,就是通过迭代巧妙地进行需求分析,而非草率和随意地为之。
需求分析的最大挑战是寻找、沟通和记住(通常是指记录)什么是真正需要的,并能够清楚地讲解给客户和开发团队的成员。