软件需求是指用户对软件所需的功能、性能、界面、可靠性、安全性等方面的描述和规定。软件需求是软件开发的基础,软件开发过程中的所有活动都围绕软件需求展开。软件需求是软件系统的设计、开发、测试和维护的基础,是软件开发过程中最重要的环节之一。
软件需求规约是对软件需求的详细描述和规定。软件需求规约是确保软件开发符合用户需求和标准的重要手段。软件需求规约需要包括软件需求的详细描述、功能需求、性能需求、界面需求、可靠性需求、安全性需求等方面的规定。软件需求规约是软件开发过程中的重要文档之一,是软件开发团队之间沟通的基础。
为了确保软件需求规约的正确性和完整性,软件需求规约需要满足以下要求:

1.清晰明确:软件需求规约需要清晰明确地描述软件需求和规定。
2.可追溯性:软件需求规约需要能够追溯到用户需求和标准。

3.可验证性:软件需求规约需要具有可验证性,能够验证软件功能是否符合用户需求和标准。
4.可变性:软件需求规约需要具有可变性,能够适应用户需求和标准的变化。
一、需求与需求获取1.需求定义及其基本特性
一个需求是有关一个“要予构造”的陈述,描述了待开发产品/系统(或项)功能上的能力、性能参数或其他性质。
对于单一一个需求,必须具有五个基本特性:
(1)必要的,该需求是用户所要求的;
(2)无歧义的,该需求只能用一种方式解释;
(3)可测的,该需求是可进行测试的;
(4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段;
(5)可测量的,该需求是可测量的。
2.功能需求和非功能需求
功能需求规约了系统或系统构件必须执行的功能。
非功能需求:分为性能需求、外部接口需求、设计约束和质量属性需求。
3.需求发现技术
初始发现需求的常用技术,如下所示。
名称
适用情况
成功条件
存在的风险
自悟
需求人员不能直接与用户进行交流,自悟就可能是一种切实可行的、比较有吸引力的方法
需求人员必须具有比最终用户还要多的应用领域和过程方面的知识,并具有丰富的想象力
无法验证发现的需求是否满足用户的要求,无法验证发现的需求是不是正确的
交谈
客户支持需求人员与最终用户进行有关系统需求的交流
依赖于:(1)需求人员是否具有“正确提出问题”的能力(2)回答人员是否具有“揭示需求本意”的能力
在交谈期间所获得的需求可能不断增长,或是以前没有认识到的合理需求的一种表现,或是“完美蠕行”病症的体现,可能导致超出项目成本和进度的限制
名称
适用情况
成功条件
存在的风险
观察
用户允许需求人员进入工作现场,并可进行观察,可与有关人员就有关问题进行交流
需求人员具有洞察事物本质的能力
(1)客户可能抵触这一观察(2)客户可能认为开发者在签约之前,就已经熟悉了他们的业务
小组会
各方组织在管理层面上重视需求工作,并有能力提供人力资源
会议组织得当,包括责权分明,参与会议的人员具有良好的需求发现能力,并允许发表不同的观点,以便很快地标识需求,揭示需求中存在的问题,并与客户达成共识
如果会议组织不到位或受到某些客观环境的限制,就有可能过多地召开这样的会议,并产生一些相互矛盾的需求
提炼
提炼方法是针对已经有了部分需求文档的情况。依据产品的本来情况,可能有很多文档需要重审,以确定其中是否包含相关联的信息
已存在项目背景文档以及一些紧密相关的需求文档,并且需求人员具有很好的想象力和需求标识能力,包括熟悉相关的技术标准和法
与自悟方法一样,无法验证发现的需求是否正确
二、需求规约1.需求规约定义及其基本特性
需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统的概念模型。
需求规约一般要满足四个基本特性。
(1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级,例如,基本需求、可选需求和期望需求。
(2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
(3)完整的:没有被遗漏的需求。
(4)一致的:不存在互斥的需求。
2.需求规约的表达
在实际工程中,需求规约的表达主要存在三种不同的风格。
(1)非形式化的需求规约。
(2)半形式化的需求规约。
(3)形式化的需求规约。
3.需求规约在软件开发中的作用
(1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。
(2)对于项目的其余大多数工作,需求规约是一个管理控制点。
(3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。
(4)需求规约是创建产品验收测试计划和用户指南的基础,即基于需求规约一般还会产生另外两个文档-初始测试计划和用户系统操作描述。
总结1、软件需求的基本性质包括【必要的】、【无歧义的】、【可测的】、【可跟踪的】、【可测量的】。
2、验证需求是不是歧义的,一般可采用【需求复审】。
3、软件需求可分为两大类:【功能需求和非功能需求】,其中,非功能需求可分为【性能需求】、【外部接口需求】、【设计约束】和【质量属性需求】。
4、设计约束需求包括:【法规政策】、【硬件限制】、【与其他应用的接口】、【并发操作】、【审计功能】、【控制功能】、【高级语言要求】、【握手协议】、【应用的关键程度】、【安全和保密】。
5、初始发现需求常用技术包括【自悟】、【交谈】、【观察】、【小组会】和【提炼】。
(1)自悟:需求人员把自己作为系统的最终用户,审视该系统并提出问题。
(2)交谈:需求人员通过提出问题/用户回答这一方式,直接询问用户需要的是一个什么样的系统。
(3)观察:客户可能抵触这一观察;客户可能认为开发者在签约之前,就已经熟悉了他们的业务。
6、需求规约一般需要满足4个基本性质:【重要性和稳定性程度】、【可修改的】、【完整的】、【一致的】。
7、在实际工程中,需求规约的表达主要存在3种不同的风格:【非形式化的需求规约】、【半形式化的需求规约】、【形式化的需求规约】。
总之,软件需求和软件需求规约是软件开发过程中非常重要的环节。软件需求规约是确保软件开发符合用户需求和标准的重要手段,需要清晰明确地描述软件需求和规定,并具有可追溯性、可验证性和可变性。只有通过有效的软件需求和软件需求规约,才能确保软件开发符合用户需求和标准。
参考教材:《软件工程》,机械工业出版社,王立福主编,2011年版。