软件需求是决定软件开发的一个关键因素,包括业务需求、用户需求、功能需求和非功能需求等不同层次。需求工程实现对软件需求的开发和管理,其中需求开发的主要任务是需求获取、需求分析、编写需求规格说明和需求验证,而需求管理则针对需求开发的结果进行变更控制、版本控制和需求跟踪。需求文档在软件开发过程中起着重要的作用,需要采用适当的方法保证其一致性、完备性和无二义性,评审和验证是发现需求错误的有效手段。
  结构化分析是被广泛采用的需求建模方法之一,包括数据建模、功能建模和行为建模。实体关系图用来创建数据模型,描述了系统中所有重要的数据对象;数据流图用来创建功能模型,描述了信息流和数据转换;状态转换图用来创建行为模型,描述状态以及导致状态改变的事件;数据字典定义了系统的所有数据项。
  软件原型法可以解决在产品开发的早期阶段需求不确定的问题,抛弃式原型和演化式原型是其中的两种类型,原型法的最大风险是用户往往将原型与最终交付的产品等同。