软件需求的定义:(1)用户解决问题或达到目标所需的条件或能力;(2)系统或系统内部要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力;(3)一种反映上面(1)或(2)所描述的条件或能力的文档上说明;在IEEE的定义中,需求的概念涵盖了用户角度(系统的外部行为)和开发人员角度(系统的内部特性)两个方面,其中的关键在于需求一定要文档化;通常,软件需求可以划分为业务需求、用户需求、系统需求、功能需求和非功能需求等类型。
需求工程是应用已证实有效的原理和方法,并通过合适的工具和符号,系统地描述出待开发系统及其行为特征和相关约束。需求工程的所有过程包括需求获取、需求分析、需求规格说明、需求验证和需求管理等,并说明了这些过程之间的关系和需要产生的文档。其中需求验证主要围绕需求规格说明的质量特性展开,这些质量特性包括正确性、无二义性、完整性、可验证性、一致性、可修改性和可跟踪性等。需求管理的任务是分析变更影响并控制变更过程,主要包括变更控制、版本控制和需求跟踪等活动。
为了更好地理解用户的需求,可以采用多种不同的技术进行需求获取,常见的需求获取技术包括面谈和问卷调查、需求专题讨论会、观察用户工作流程、基于用例的方法、原型化方法等,而选择这些技术需要根据应用类型、开发团队技能、用户性质等因素来决定。