需求只是意味着需要或想要的东西。需求工程是定义需求,以适当的方式建立,记录需求,保持系统中客户需求质量以及运行和开发的局限性的过程。这是软件工程的第一个活动。需求是通过软件系统的设计,产品或过程来满足的需求。需求可以分类为:
- 用户要求:
用户需求仅表示软件系统应满足的用户需求。它记录在用户需求文档(URD)中。总体陈述通常以自然语言编写,并附有服务系统提供的说明及其操作约束。如果用户需求清晰明了且简短,那么用户需求就很好,从而导致整体质量提高,生产率提高,可追溯等。 - 系统要求 :
系统需求仅表示系统平稳高效运行的需求。它是一份结构化的文档,详细描述了系统功能,服务和操作约束。它需要许多硬件和软件资源。如果这些硬件和软件资源不可用或较少,则可能导致系统故障或在性能期间引起问题。在客户和承包商之间,它被写为合同,以定义为提高生产率而需要实施的所有要求。 - 软件规格:
它是对软件系统要求的详细描述,可以通过其设计和实现来开发软件。对于软件开发人员,通常编写软件规范,使开发人员更容易理解软件的总体要求。
系统需求的两种主要类型:
- 功能要求 :
功能要求是强制性的,这意味着它是强制性的并且需要得到满足。它们通常描述和定义软件系统最终产品的功能,并且仅关注最终产品的功能。这些是系统应完成或执行的要求,例如计算,数据操作等。很容易找出功能要求并在用例中捕获。
系统应提供服务说明,该服务说明描述系统如何对提供的输入做出反应,并且应该清楚,以及系统在特定情况下如何做出反应。功能需求是取决于软件类型的需求类型,因为不同的软件具有不同的功能需求,使用软件的系统,因为它严重影响软件的功能和用户满足其需求。用户的功能需求是高级抽象语句。它通常描述了什么时候需要使用什么系统,但是应该通过功能系统要求来详细描述系统功能。
- 非功能需求:
非功能性要求不是强制性的,这意味着它们不是强制性的。非功能性需求定义了系统属性和系统性能。系统的不同属性可以是可靠性,响应时间,可维护性,可用性,存储要求。它仅关注最终产品的工作方式,要找出非功能性需求并将其捕获为质量属性并不是一件容易的事,也很难。测试包括性能,压力,安全性测试等。非功能性需求会被更多地拒绝,并且如果不满足非功能性需求,则整个系统将无用。
例子 –
产品需求,组织需求,外部需求,容量或存储需求,资源需求,整体性能需求时间等。