需求抽取和发现是指在软件工程中,确定用户期望及需要的功能或行为,并将其明确表达出来的过程。这种过程涉及两个关键组成部分:需求抽取和需求发现。

一、需求抽取
需求抽取是一种整合信息的过程,它依赖于与使用者、客户和其他参与者相关的对话,目的是从对话中抽取领域的用户需求,从而理解系统应该满足的需求和要排除的附加功能。在需求获取过程中,可以通过一系列有用的活动来获取用户需求,如召开会议、组织会议、制定流程、调查及视频会议等。
需求抽取同样可以分为硬性需求和软性需求。硬性需求是不可更改的特定需求,必须在系统开发过程中得到满足,即必须确定系统成果将如何满足这些需求,这些要求通常是具体的、明确的和可测量的。而软性需求是客户期望的一般特性,可以更改,根据项目实施时间、预算及质量要求允许的范围内更改。
二、需求发现
需求发现是一种分析过程,它将终端用户期望过滤和整理,尤其是对最终用户需求的分析,并使之恰当表达。它能够提出一系列的应用服务、解决方案和逻辑模型,充分明确客户和系统之间的关系。可以通过使用时序图来分解使用者及其系统之间的交互,来说明一系列活动和任务。需求发现不仅仅涉及产品需求,而且涉及到功能需求,如质量要求、期限要求、安全要求等。
需求抽取和发现也可以通过用户场景分析来进行。用户场景分析可以揭示用户使用软件产品的背景、目的、错误现象、解决方案、重要功能以及可能使用的场合等信息。
在软件工程中,需求抽取和发现都具有重要的作用。需求抽取可以确定用户希望在软件开发过程中看到的功能。而需求发现可以确定系统如何对这些需求进行实现。周密的需求抽取和发现,能够帮助公司有效的控制项目,有助于软件产品符合相关客户期望并及时发布。
需求抽取是从文本内容中抽取出可供实施的行为要求结构,以及其中表达的计算机指令或行为规范。这在开发软件时,首先必须对所有需求进行分析,并把每个需求规格清楚地表述出来,这与需求抽取密切相关。
需求抽取是将范围毕竟便完整的要求描述拆分成必要的实施要求。也就是说,通过抽取可运行的性能要求和具体实现指令,来帮助开发团队明确系统功能,要求实现系统功能时的具体实现指令。帮助团队达成实现条件,具体到每一个行为定义,以实现最终的目标。
从实用的角度来看,需求抽取应该对需求完整性进行评估,并努力实现最终开发需求的持续可持续性,保证最小改变量的能力实现超能力的状态,提供可用的运行服务,以满足要求的预期服务水平。这些概念是相互关联的,因此需求抽取的效果将会直接影响软件的健壮性和低成本维护。此外,需求抽取还能确保架构的干净性,以最大程度地减少软件设计复杂性,改善解释(文档)和可测试性,为软件实施提供灵活性和持续性。
需求发现,指的是在系统开发过程中,从目标用户发现所需要的软件开发功能的过程。使用需求发现可以确保开发的系统功能准确、完备和统一,并能更好地为用户提供需求。
首先,需求发现可以帮助理解当前系统的问题和缺陷。有了发现的需求,团队可以更清楚地了解将要实施的系统功能,准确定位用户的实际需求,以便更有效地修正、优化或删除。另外,需求发现也可以帮助确定系统设计的范围,为开发团队分配不同模块负责人提供可操作的指引。
最后,需求发现提供重要的协议,帮助仔细对待系统业务需求,以准确描述软件系统的功能,改进系统的可用性,便于交付可用的软件,并改进支持和维护的程度。在将所有系统功能和设计目标准确描述出来之后,需求发现还可以确保该软件系统功能的可持续性,同时又增加额外的灵活性。
总的来说,需求抽取是把软件功能范围有限地表述出来,而需求发现则是从软件的需求目的上把功能抽出来。通过这两种方法,可以让开发团队对软件的实施有更清晰的认识,以最大程度达成开发软件的预期效果。