《软件需求工程(第2版)》一3.7 使用场景技术的需求获取

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 本节书摘来自华章出版社《软件需求工程(第2版)》一书中的第3章,第3.7节,作者 毋国庆 梁正平 袁梦霆 李勇华,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.7 使用场景技术的需求获取

在开发人员与用户的交流中,场景作为工具可发挥较大作用。开发人员在与用户进行有关软件需求的谈话和交流中,谈论具体事例的情况较多,用户也经常结合专业知识讲述他们的具体工作和工作流程。因此,场景很自然地作为交流的工具使用,每个场景可以对应系统的一个潜在的需求。

3.7.1 场景的定义及构成

所谓场景是指用户与软件系统为实现某个目标而进行交互活动过程的描述。
场景可视为是对使用系统经历的解释。软件开发人员可利用场景来模拟用户与软件系统为完成某个功能而进行的交互活动过程,通过分析来获取其中有用的需求信息。对于较为复杂的软件系统,通常需要许多场景。
场景的构成可以有不同的形式,应由如下几个方面的内容构成:
 执行者(用户)
进入场景前系统状态的描述
执行者的目的
动作和事件系列(包括正常或非正常事件流)
上述4个方面的内容既可以以简洁的方式填写也可部分省略不写。
通常,场景应具有下述特征:
场景代表某些用户可见的功能,可用于描述一个具体的系统功能;
场景总是被参与者启动,并向参与者提供可识别的信息;
场景必须是完整的。
图3-2表示了一个用自然语言描述的某人切断PC电源的场景。在这个场景中,用户顺序地描述了如何退出Windows 98,并切断PC电源的一系列交互活动。
王某是使用装有Windows 98系统的PC用户,已有一年的经验。他几乎每天使用PC向朋友发电子邮件,今天在发送了4封电子邮件后想切断PC电源。
王某首先按下屏幕中的“开始”按钮,在显示出来的菜单中选择“关闭计算机”选项。在屏幕中央出现了与关闭计算机相关的对话框,询问用户是否真正关闭计算机。王某确认并按下了“关闭计算机”的按钮。计算机在使屏幕变黑后,自动切断PC电源。

image

图3-2表示的场景可使用前述的描述形式具体表示如下:
 执行者(用户):王某
 进入场景前系统状态的描述:使用PC的经验是1年,几乎每天使用。另外,今日发送电子邮件的工作已结束。
 执行者的目的:退出Windows 98,并切断PC电源。
 动作和事件系列:图32中的第2段文字,从按下“开始”按钮到切断PC电源的事件完成为止。

3.7.2 场景的表示

除了可用自然语言表示场景外,也可使用图形、动漫画等其他表示形式。场景也可与快速原型方法结合使用。此外,也可利用一些已有的半形式化的图形表示方法和技术(如流程图、状态图、时序图)以及形式化的方法和技术(如CCS、CSP、Z语言等)来表示场景。场景的一些典型表示形式如表32所示。
image

场景的使用者可以根据具体情况有选择地使用上述表示形式,也可组合使用几种表示形式。对于某些水平较高的专业技术人员,可以使用更加适合的特殊人工语言来描述场景。但是,在需求信息的获取中,由于用户的参与相当重要,使用非形式化的表示形式是合适的,形式化的表示形式对于用户来说难以理解。

3.7.3 场景的种类

场景描述了执行者的目标,但该目标能否实现决定了场景可大致分为正常场景和失败场景两类。场景的分类将有助于对场景的分析。对于正常的场景,主要注重于目标的实现过程以及效率如何。对于失败的场景,注重于分析失败的理由。如果找到了执行者不能达到目标的理由,将成为改进软件系统的参考因素。
更进一步,根据场景描述的内容可分为正向场景和逆向场景(AntiScenario)。前者描述所希望实现的目标、与目标相关的执行者和事件等,后者描述用户所不希望的需求,描述的功能将不能写入需求规格说明中。逆向场景作为描述的工具对于收集需求信息的初期是有效的,经过事先的分析将有利于防止混入一些无用的需求信息。
场景之间亦可以建立关系以及精化处理。例如,当向一个场景中添加一些动作构成了另一个场景时,这两个场景之间的关系就是扩展关系,后者继承前者的一些行为。当一个场景使用另一个场景时,这两个场景之间就构成了使用关系。一般说来,如果在若干个场景中有相同的动作,则可以把这些相同的动作提取出来单独构成一个场景。大部分场景将在项目的需求获取阶段产生,并且随着需求分析工作的深入还会发现更多的场景。这些新发现的场景都应及时补充进已有的场景集合中。

3.7.4 使用用例的需求获取

实际上,关于场景的定义有许多,例如,Bermer和Johnson定义的场景[15],以及Kotonya和Sommerville[16]定义的场景。本节将主要介绍由Jacobson[17]定义的与场景相关的用例(usercase)这一需求获取技术。用例与前述的场景并不是同一概念。用例通常用于描述可发生的所有事件序列,而场景则是描述其中的一部分。因此,用例也可以说是场景的集合,一个场景是用例的实例。
Jacobson提出的用例用于描述软件系统与一个外部“执行者(actor)”的交互顺序,它体现了执行者完成一项任务的过程。执行者可为一个人或一个应用软件系统,也可以是硬件或是某些与软件系统交互以实现某些目标的外部实体。在利用用例建立系统模型时,软件系统被视为一个黑盒子,并可使用自然语言顺序地描述软件系统与外部执行者的相互作用。下面,我们以自动取款机(ATM)为例来说明。
例ATM的用例模型和取现金的用例如图33和图34所示[18]。图33表示与ATM相关的用例模型。图34用结构化自然语言的形式描述ATM正常工作的用例。

image

实际上,用例的定义也有不同的表示形式[19,20]。例如,为便于描述和提高重用性,可利用如下所示的结构化形式:
image

执行者:用例的主导者。
目的:用例的目的。
前提条件:启动用例的条件。
结束条件:用例结束时应满足的条件。
基本序列:描述在满足前提条件下启动用例后,按时间顺序正常发生的执行者与软件系统的相互作用。
异常序列:按时间顺序描述在正常序列的相互作用中发生异常情况时,软件系统与执行者的相互作用。
备注:应向设计者转达除功能需求以外的非功能需求、设计约束条件和限制,以及有待解决的事项等。

3.7.5 场景技术的特点

场景技术不仅把软件系统的需求信息文本化,而且有助于在实现软件系统前明确用户与软件系统的相互作用。此外,场景技术还具有如下特点:
可以把当前系统存在的问题作为实例记录下来。
可以成为项目相关人员间的共同语言。
由于场景描述了软件系统的操作,比较具体,易理解性较好。
通过场景使得提出和获得需求的双方之间能建立起相应的理解。
另一方面,在使用场景技术时,也要注意如下问题:
场景的数量,即一个软件项目应该写多少个场景没有限制标准,主要视项目的规模和复杂性而定。但如果场景数量过大,易加大分析和理解的难度。
场景的冗余问题。应尽量避免场景描述的内容发生重叠,可根据实际情况合并和去掉一些内容重叠的场景。
应防止场景描述内容的冗长。

相关文章
|
自然语言处理 算法 数据挖掘
模块化RAG技术路线图:从基础Naive RAG 到Modular RAG全方位技术解读
【8月更文挑战第12天】模块化RAG技术路线图:从基础Naive RAG 到Modular RAG全方位技术解读
2519 9
模块化RAG技术路线图:从基础Naive RAG 到Modular RAG全方位技术解读
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
5253 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
机器学习/深度学习 人工智能 自然语言处理
讯飞星火大模型:AI语言模型的巅峰之作
今年,我们不得不提的一个热门话题就是ChatGPT,这是一款基于语言模型的人机对话系统。它在工作和生活中给我们带来了极大的便利。作为一名从事IT行业的人,我深切体会到了它在技术和文本处理方面的重要性。
631 0
讯飞星火大模型:AI语言模型的巅峰之作
|
Web App开发 安全 物联网
常见物联网操作系统介绍
物联网操作系统是运行在物联网设备上的提供物物相连能力的操作系统,其核心在于能够将各种物体连接到互联网,并提供数据通信能力。
3823 1
|
存储 算法 安全
深入了解哈希映射(HashMap)
哈希映射是现代软件开发中不可或缺的一种数据结构,它通过独特的存储和检索机制,提供了高效的数据处理能力。正确理解和使用哈希映射,能够显著提高软件性能和开发效率。不论是在日常的软件开发还是在处理大规模数据集时,哈希映射都是一个极佳的选择。
313 1
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
114383 0
|
人工智能 弹性计算 API
深度评测-通义万相AI绘画创作方案的部署与应用体验
通义万相提供流畅的API调用与资源部署体验,支持一键部署,文档详尽,适合新手。其SDK和示例代码简化了集成,响应速度快。操作界面友好,功能多样,如文本生图、人像美化。在生成效果上,能根据提示词创造各种场景,如古城墙、未来城市、金字塔和北极景象。虽然在处理复杂内容时有待提升,但已展现出良好的泛化能力。通义万相在成本、易用性和应用场景上具有竞争力,适合推荐给团队使用。未来可能的发展方向包括模型精度提升、多模态融合和增强个性化选项。常见问题包括API调用错误、图像质量、资源部署和响应速度,官方文档和社区支持有助于解决问题。
|
Linux Go
手把手教你在Linux上从零搭建Go语言开发环境
手把手教你在Linux上从零搭建Go语言开发环境
1221 0
|
机器学习/深度学习 SQL 人工智能
2024年5月90篇代码大模型论文最全整理
聚焦大模型前沿技术,解析学界业界最新进展
233 0
2024年5月90篇代码大模型论文最全整理
|
XML 设计模式 JSON
RESTful:理解REST架构风格、RESTful API
RESTful:理解REST架构风格、RESTful API
3996 1