第5章 场景与需求定义 5.1引言 本章将介绍人机交互的软件工程方法中的场景与需求定义。在软件开发过程中,正确理解和准确满足用户的需求是确保系统成功的关键因素。场景定义通过案例和用户故事的描述,帮助用户深入理解系统在特定环境中的使用场景,以及用户在不同情境下的需求和期望。 基于人物模型的场景描述了具体用户在系统中的行为和目标。通过定义场景中的操作流程,软件工程师可以更好地了解用户在系统中的需求和行为模式。这有助于软件工程师设计出更符合用户期望的界面和交互方式。 需求定义是确保系统开发过程中对用户需求准确理解和满足的关键步骤。设计需求包括功能性需求和非功能性需求,它们描述了系统应该具备的具体功能、性能要求以及用户体验上的期望。需求定义过程涉及需求的收集、分析和规范化,确保需求的一致性、可追溯性和可测试性。 本章的最后将提供一些思考和实践的指导,帮助软件工程师更好地应用场景与需求定义的方法。这些指导包括如何识别和处理需求冲突,如何与利益相关者进行有效的沟通和协商,以及如何进行需求变更管理。 通过本章的学习,软件工程从业者将能够更好地理解和应用人机交互的软件工程方法,以确保开发出符合用户期望和需求的高质量软件系统。 本章的主要内容包括:  介绍场景与需求定义的重要性。  阐述用户需求定义的过程。  定义功能和界面需求。  说明需求文档的内容和规范。 5.2场景 “场景”指的是表示任务和工作结构的“非正式的叙述性描述”,特点在于丰富和真实。它以叙述的方式描述人的行为或任务,从中可以发掘出任务的上下文环境、用户的需要、需求。 在人机交互的软件工程中,场景定义是一个重要的步骤,它帮助软件工程师理解用户的需求以及软件系统将如何与用户进行交互。本章的场景部分将重点讨论几个关键场景,以展示在不同的应用领域中如何应用人机交互的软件工程方法。 图5.1在线购物应用案例 5.2.1案例与用户故事 在本节中将介绍一个具体案例,以及几个与该案例相关的用户故事。这些案例和用户故事将帮助使用者更好地理解在软件工程中定义场景和需求的过程。 如图5.1所示展示了一个具体的在线购物应用案例。 在该案例的背景中,小王是一位年轻的职业女性,她经常在忙碌的工作日使用智能手机进行购物。她想寻找一种方便的方式来购买各种商品,包括时尚服装、电子产品和家居用品。小王希望能够轻松地浏览商品,了解价格和库存情况,并在选择后方便地下单购买。她希望购物应用能够提供个性化的推荐和快速的物流服务,以满足她的购物需求。 人机交互技术 第 5 章 场景与需求定义 表5.1是小王的一些购物需求,以及她希望购物应用能够满足的用户故事。 表5.1场景与用户故事对照表 场景用 户 故 事 浏览商品作为一名用户,小王希望购物应用提供直观的界面,以便小王能够轻松地浏览各种商品。小王希望能够通过分类、搜索或个性化推荐来发现新的商品,并能够查看商品的详细信息 选择商品作为一名用户,小王希望购物应用提供详细的商品信息,给出明智的购买决策。小王还希望能够方便地将商品添加到购物车中,并能够轻松地修改购物车中的商品数量 下单购买作为一名用户,小王希望购物应用提供简化的下单购买流程,包括多种支付方式和方便的地址管理功能。小王还希望能够追踪订单状态,并及时获得物流更新,以便知道订单的送达情况 个性化推荐 作为一名用户,小王希望购物应用能够根据小王的购买历史和偏好,提供个性化的商品推荐。小王希望能够发现新的品牌和款式,并希望应用能够定期更新推荐内容 根据以上内容描述的案例与用户故事,可以画出如图5.2所示的用例图。 图5.2在线购物应用用例图 这个用例图展示了在线购物应用的主要功能,包括浏览商品、选择商品、下单购买和个性化推荐。用户可以通过购物应用浏览不同类别的商品,选择感兴趣的商品并加入购物车,然后进行下单购买并选择支付方式和收货地址。应用会根据用户的购买历史和偏好提供个性化的商品推荐。 通过这些用户的故事,软件工程师可以进一步定义软件的功能和需求,以确保应用程序能够满足用户的需求。 5.2.2基于人物模型的场景 本节将介绍基于人物模型的场景,这有助于软件工程师更好地理解用户角色和行为对软件需求的影响。本节着重关注不同用户角色在软件系统中的行为和需求,以更全面地理解用户的角色和行为如何影响系统的功能和交互需求。这种方法突出了用户角色在系统中的角色扮演,可以帮助设计师更好地区分不同类型的用户,并深入了解用户在使用软件时的期望和目标。通过定义不同的用户角色和行为,设计师可以更全面地考虑系统功能和交互需求。 在电子商务平台的场景中,可以定义两个主要的用户角色: 买家和卖家。 (1) 买家角色。 买家是使用购物平台进行购物的用户。他们有浏览商品、添加商品到购物车、下单和完成支付等行为。 (2) 卖家角色。 卖家是在购物平台上销售商品的用户。他们有发布商品、管理库存、处理订单和与买家沟通等行为。 两种人物的角色图如图5.3和图5.4所示。 图5.3购物平台的买家人物角色图 图5.4购物平台的卖家人物角色图 基于以上用户角色,软件工程师可以进一步定义用户的行为和需求,以便明确系统应满足的功能和交互需求。 1. 买家行为和需求 如表5.2所示,买家希望能够方便地浏览商品,通过分类、搜索和筛选功能快速找到所需商品。如图5.5所示,他们希望能够将商品添加到购物车,并能够实时查看购物车的内容和总价。在下单和完成支付时,他们需要提供送货地址和付款方式,并希望获得订单确认和跟踪信息。 表5.2买家行为和需求表 场景买 家 行 为买 家 需 求 浏览商品通过分类、搜索、推荐浏览不同类别的商品快速找到感兴趣的商品,查看商品详细信息(描述、价格、评价) 选择商品将商品添加到购物车,修改购物车中商品数量比较不同商品的特性、价格和评价,管理购物车和商品数量 下单购买下单,选择支付方式和地址,追踪订单状态简化的下单购买流程,多种支付方式和地址管理,及时获得订单和物流更新 个性化推荐基于购买历史和偏好发现新品牌和款式提供个性化的商品推荐、定期更新推荐内容 2. 卖家行为和需求 如表5.3所示,卖家希望能够轻松发布和管理自己的商品,包括添加商品信息、设置价格和库存等。如图5.6所示,他们希望能够接收并处理买家的订单,以及与买家进行及时的沟通。卖家还希望能够方便地查看销售数据和库存状态,以便管理自己的业务。 图5.5买家行为流程图 图5.6卖家行为流程图 表5.3卖家行为和需求表 场景卖 家 行 为卖 家 需 求 发布商品添加商品信息、设置价格和库存轻松发布和管理商品,管理库存和价格 处理订单接收和处理买家订单,与买家沟通有效处理订单和及时通知买家,方便与买家进行沟通 销售数据和库存管理查看销售数据,管理库存方便查看销售数据和库存状态 可见,在基于人物模型的场景定义中,场景将用户角色划分得更加明确,并关注不同角色的典型行为和需求,以便更好地为每个用户角色设计适合的功能和交互。这种方法使得软件工程师能够更全面地考虑不同用户群体的需求,从而更好地满足用户的期望和目标。通过基于人物模型的场景定义,软件工程师可以更好地理解不同用户角色的行为和需求,从而设计出更符合用户期望的软件功能和交互方式。 5.3需 求 定 义 5.3.1设计需求 在需求定义阶段,软件工程师需要将用户需求转换为具体的设计需求,以指导具体开发过程中所需功能和交互体验的实现。设计需求应该明确系统的功能、界面和性能要求等方面。 1. 功能需求 设计需求中的功能需求描述了系统需要具备的各项功能和行为。以下是一些可能的功能需求示例。 1) 用户注册和登录 系统应提供用户注册和登录功能,以便用户可以创建账户并登录系统。 2) 商品展示和搜索 系统应支持商品展示和搜索功能,以便用户可以方便地浏览和查找所需商品。 3) 购物车管理 系统应提供购物车管理功能,包括添加、删除和修改购物车中的商品。 4) 订单处理 系统应支持订单处理功能,包括生成订单、处理支付和发送订单确认信息。 5) 用户界面定制 系统应允许用户自定义界面样式和布局,以适应个人喜好和需求。 2. 用户界面设计需求 设计需求中的用户界面设计需求描述了系统的界面和交互方式。以下是一些可能的用户界面设计需求示例。 1) 直观的导航和菜单 系统应具备直观的导航和菜单结构,以便用户可以轻松浏览和访问各个功能模块。 2) 清晰的信息展示 系统应以清晰、易读的方式展示商品信息、订单状态和用户账户信息等重要信息。 3) 用户友好的操作方式 系统应提供简单、直观的操作方式,以减少用户学习和操作的困难。 4) 响应式设计 系统应具备响应式设计,能够自动适应不同设备和屏幕尺寸,提供一致的用户体验。 5) 良好的可访问性 系统应考虑用户的辅助功能需求,例如,提供大字体选项、屏幕阅读器兼容性等。 3. 性能需求 设计需求中的性能需求描述了系统的性能要求,包括响应时间、并发处理能力和系统稳定性等方面。以下是一些可能的性能需求示例。 1) 快速的响应时间 系统应在用户操作时能够快速响应,减少等待时间和加载延迟。 2) 高并发处理能力 系统应具备处理多个用户同时访问和操作的能力,以保证系统的稳定性和性能表现。 3) 数据安全和保护 系统应具备适当的安全措施,保护用户数据和交易信息的安全性和隐私性。 以上是一些示例,实际的设计需求将取决于具体的软件项目和目标用户。在需求定义阶段,软件工程师应该综合考虑用户需求、业务目标和技术限制,定义出合理、明确的设计需求,以指导开发团队进行软件的设计与实现。 5.3.2需求定义过程 需求定义过程是将用户需求转换为明确、具体的软件需求的过程。这是一个关键的阶段,对于确保软件开发项目的成功和满足用户期望非常重要。以下是一个常见的需求定义过程的步骤。 1. 收集用户需求 需求定义过程的第一步是收集用户的需求,这一阶段的重要性不可低估。在实现需求收集的过程中,采用多种方式可以带来丰富多样的信息,有助于全面而准确地了解用户的期望、需求和目标,从而有效地将其转换为软件的功能和交互需求。 面对面的用户访谈是一种直接有效的方式,它让项目团队与用户建立密切的互动联系。通过面对面交流,团队能够主动提出问题、探索用户背后的动机,并及时获取用户的反馈和意见。这种深入交流的过程,除了收集具体的需求,还能捕捉用户的情感和体验需求,从而更好地把握用户真实的期望。 问卷调查则适用于大规模用户需求收集,特别是在涉及广泛用户群体时。通过设计合理的问卷,可以收集到大量用户的意见和看法。然而,在使用问卷时需要注意问题的清晰度和准确性,避免引导性或模糊性问题,以确保收集到的数据有价值且可信。 焦点小组讨论是一种将多个用户聚集在一起,集中讨论其需求和期望的方法。这种方式可以促进用户之间的相互交流和启发,产生更多的创意和洞察力。此外,焦点小组讨论也有助于发现用户群体之间的共性和差异性,帮助团队更好地理解用户群体的多样性,从而更好地满足不同用户的需求。 除了上述方法,还可以通过观察用户的实际行为和使用模式来收集需求,例如,用户使用现有软件的记录和分析,或者通过原型测试来观察用户在实际场景中的反应。这些方式能够提供更直接和客观的数据,帮助团队更好地理解用户的真实需求。 需求收集阶段还需要注重用户参与的重要性。用户参与是确保需求收集过程顺利进行且结果准确的关键因素。团队需要积极邀请用户参与,并充分沟通和解释需求收集的目的和重要性。通过建立良好的用户关系,团队可以得到更多的信任和支持,确保用户愿意分享他们真实的需求和反馈。 在需求收集阶段,还需要留意需求的可行性和优先级。有时用户提出的需求可能存在冲突,或者在技术上难以实现。团队需要与用户积极沟通,协商解决方案,并根据项目的约束条件和目标确定需求的优先级,以确保最终的需求定义是切实可行的。 综上所述,收集用户需求是需求定义过程中的关键一步,采用多种方式收集用户的需求有助于全面了解用户的期望和需求。用户参与和沟通是确保需求收集成功的关键,而对需求的可行性和优先级的评估也是确保最终需求定义的实现可行性的重要环节。通过科学合理的需求收集,可以为项目或产品的后续开发打下坚实基础,满足用户的期望,提高用户满意度。 2. 分析和整理需求 在需求定义的初期,需求分析人员面临着一个重要的任务,那就是处理各种形式收集到的用户需求。这些需求可能是零散的,以各种不同的形式和渠道被捕获,有些可能是书面文档,有些可能是口头交流,甚至可能是通过电子邮件、访谈、调查问卷等方式获取的信息。由于这种多样性,需求分析人员必须展开认真的整理和分类工作,将这些看似杂乱无章的需求整合成一个有机、清晰的体系。 在整理需求的过程中,需求分析人员将面临一些常见的问题,如需求的重复性和冗余性。这可能是因为不同的用户或干系人提供了类似的需求,但可能以不同的措辞或表达方式出现。此时,他们需要识别并合并这些重复的需求,以确保不会在后续阶段造成混淆和重复开发。另外,需求的不完整性也是一个挑战,有些用户可能没有清晰地表达他们的需求,或者有些需求可能在交流过程中被遗漏。在这种情况下,需求分析人员需要积极与用户进行沟通,以填补信息缺失,从而确保需求的完整性。 同时,需求分析人员也需要关注需求之间的一致性和相容性。由于涉及多个用户和利益相关者,不同的需求可能会相互冲突或产生矛盾。这时候,需求分析人员需要进行深入的调查和讨论,与相关干系人一起解决冲突,找到平衡点,确保各方利益得到妥善考虑。在一些情况下,可能需要妥协或寻找折中方案,以满足多样化的需求。 除了处理需求的矛盾和冲突,需求分析人员还需要注意到需求中可能存在的模糊或含糊不清之处。有时候,用户提供的需求可能过于笼统,没有具体说明细节或表达方式模糊,这就需要需求分析人员主动与用户进行进一步的深入交流和澄清,以准确捕捉用户的真实意图。 总之,需求整理、分类和归纳的过程是需求分析中至关重要的一步,它决定了后续开发和设计的基础。通过认真地审查和确认需求的准确性、一致性和完整性,消除冲突和模糊之处,需求分析人员能够为项目的成功实施奠定坚实的基础,提高开发效率,并确保最终交付的产品或系统符合用户期望和需求。 3. 定义功能需求 在需求定义过程中,软件工程师致力于将用户需求转换为具体的功能需求,以准确描述系统所需具备的各项功能和行为。这涵盖了用户可以执行的任务、所需的输入以及期望的输出结果。通过详细定义功能需求,软件工程师能够确保系统满足用户的核心需求,并提供令人满意的使用体验。 功能需求的定义应该是明确而具体的。明确性确保了用户对系统行为的描述不含糊,消除了歧义和模棱两可的情况。这样,开发团队能够清晰地理解用户的期望,从而有效地实现相应的功能。具体性则意味着用户需要提供详尽的细节,确保不会遗漏重要的功能点。这样一来,软件工程师能够更全面地捕捉用户需求,避免在开发过程中遗失关键的功能要求。 在定义功能需求时,软件工程师应该关注用户的核心需求,即用户使用系统时最关键的目标和期望。通过聚焦于核心需求,软件工程师能够确保系统提供的功能在实际使用中具有实际的价值和意义。这有助于避免功能过剩或无关紧要的功能点,从而提高系统的效率和易用性。 总而言之,需求定义过程中的功能需求是将用户需求转换为系统功能的关键步骤。通过明确、具体地描述所需的功能和行为,软件工程师能够确保系统满足用户的核心需求,并提供令人满意的用户体验。这需要软件工程师精确捕捉用户期望,避免功能模糊和遗漏,以实现出优质、高效的软件系统。 4. 设计用户界面 用户界面是用户与软件系统进行交互的重要窗口,它在整个软件工程中扮演着桥梁的角色,连接用户与系统之间的互动与信息传递。在这一关键步骤中,设计师承担着至关重要的任务,他们必须充分理解用户的需求和期望,将这些抽象的概念转换为具体的视觉和交互元素,从而创造出用户愿意与之互动的令人愉悦的界面。 首先,设计师在设计用户界面的外观时,必须注重视觉美感与统一性。一个吸引人的外观设计不仅能够吸引用户的眼球,更能营造出积极的用户体验,增强用户对产品的好感。色彩、图标、排版等元素都要经过深思熟虑,以确保整体视觉效果的协调与和谐。 其次,界面布局的设计也至关重要。合理的布局能够使用户在使用软件时更容易找到需要的功能或信息,减少学习成本和使用困难感。设计师需要考虑信息的优先级和层次结构,合理安排各个功能模块的位置和大小,从而使界面呈现出直观、清晰、易于导航的特点。 除了外观和布局,交互方式的设计也是用户界面中的重要组成部分。一个出色的交互设计能够使用户与软件系统之间的沟通更加顺畅和高效。设计师需要在此过程中关注用户的行为习惯和心理预期,确保交互元素的响应速度和准确性,以及交互过程的流畅性。此外,引入直观的反馈机制,如动画、过渡效果等,能够增强用户对操作结果的感知,提升用户满意度。 除了关注用户体验和易用性,可访问性也是不容忽视的因素。设计师应该考虑到不同用户的特殊需求,包括视觉障碍者、听觉障碍者、运动障碍者等,通过合适的设计和辅助功能,使得尽可能多的用户都能够轻松访问和使用软件系统。 综上所述,设计师在用户界面的设计过程中扮演着关键的角色,他们需要结合功能需求、用户期望和人机交互原则,创造出视觉吸引、布局合理、交互流畅、易于访问的用户界面。通过这样的精心设计,用户将能够更愿意接触和使用软件系统,提升整体用户满意度和用户忠诚度,为软件产品的成功奠定坚实的基础。 5. 确定性能需求 在系统开发过程中,除了确立功能需求外,明确系统的性能需求也是至关重要的一步。性能需求涵盖了诸多关键方面,旨在确保系统在各种应用场景下能够表现出色,满足用户的期望并保持稳定高效地运行。 首先,响应时间是性能需求中的一个关键指标。它代表着系统对用户请求做出响应的时间间隔,这一指标对于用户体验至关重要。用户期望在操作系统时能够即时得到反馈,因此需要明确规定系统对不同类型请求的响应时间要求。例如,在交互式应用中,如在线游戏或视频会议,要求系统的响应时间尽可能低,以确保用户在实时交互中不受到延迟的干扰。而对于批处理系统或后台处理任务,相应时间可以更加灵活,但也需要在一定的合理范围内控制,以避免任务堆积和系统崩溃。 其次,系统的并发处理能力是另一个至关重要的性能要求。并发处理能力涉及系统在同一时间内能够处理的并发用户或事务数。随着用户量的增加和业务的复杂性,系统需要能够有效地处理并发请求,以防止系统过载而导致性能下降或崩溃。需求分析人员需要根据预期的用户数量和日常流量峰值来确定并发处理能力的要求,并设计相应的负载测试方案,以确保系统在高负荷情况下依然能够稳定运行。 安全性是系统性能需求中另一个至关重要的方面。随着网络犯罪和数据泄露事件的不断增加,保护用户的个人信息和敏感数据成为系统设计中的首要任务。因此,需求分析人员需要明确系统的安全性要求,包括数据加密、用户身份验证、访问控制等方面。同时,需要考虑到潜在的安全漏洞和攻击风险,并采取相应的安全措施来保护系统的完整性和稳定性。 最后,可靠性是系统性能需求中不可忽视的一环。用户希望系统在任何时候都能够稳定可用,而不会出现意外的崩溃或数据丢失。为此,需求分析人员需要定义系统的可靠性要求,包括故障恢复时间、备份和恢复策略等。在面对意外故障或灾难性事件时,系统应该具备自动恢复功能,以最大限度地减少系统不可用时间,并确保用户数据的安全性。 总体而言,系统的性能需求是确保系统在各种情况下都能够高效、安全、稳定地运行的关键要素。通过明确响应时间、并发处理能力、安全性和可靠性等方面的要求,需求分析人员能够为系统开发团队提供清晰的指引,确保最终交付的系统能够充分满足用户的期望,并在日常运行中表现出卓越的性能水平。 6. 验证和确认需求 在需求分析的最后一步中,验证和确认需求起着至关重要的作用。在这个关键阶段,需求分析人员与用户和其他利益相关者密切合作,以审查和验证所有已识别的需求。目标是确保这些需求的准确性、完整性以及可行性,从而确保项目的成功实施和交付。 这个阶段的过程涵盖了多个关键步骤。首先,需求分析人员与用户进行面对面的交流,倾听他们对需求的看法和期望。这有助于深入理解用户真正需要的功能和特性,并避免解释不足或误解导致的需求偏差。 随后,团队会对已识别的需求进行详细的分析和评估。在这个过程中,需求分析人员会检查需求之间的相互关系,并确保它们的一致性和完整性。同时,他们也会评估每个需求是否符合项目的整体目标和范围,以避免不必要的功能或功能冲突。 在验证过程中,还将考虑技术可行性和资源可用性。这包括评估现有系统的兼容性,以及是否需要引入新的技术或资源来满足用户需求。必要时,需求分析人员可能会与技术专家和相关部门合作,以确保技术上的可行性和可实现性。 此外,与用户和利益相关者的合作也有助于发现可能存在的潜在问题或疑虑。通过开放式讨论和透明的沟通,团队可以识别和解决潜在的冲突、优先级和预期之间的差异。这种协作还有助于建立良好的合作关系,并确保所有相关方都对需求的准确性和可行性达成共识。 最后,一旦所有需求经过充分的验证和确认,并得到所有相关方的认可,需求分析人员将会整理并文档化这些需求。这些文档将成为项目开发和实施的基础,并为团队在后续的工作中提供指导和依据。 总体而言,验证和确认需求是确保项目成功的关键一步。如表5.4所示,通过与用户和利益相关者紧密合作,需求分析人员可以消除误解,解决问题,并最终确保项目交付的结果能够完全满足用户的期望和需求。这将为项目的顺利推进奠定坚实的基础,从而提高项目的成功交付率和用户满意度。 表5.4需求定义过程步骤表 步 骤 名 称说明 收集用户需求通过面对面访谈、问卷调查等方式收集用户的需求和期望 分析和整理需求 将收集到的用户需求进行整理、分类和归纳,消除冲突和模糊之处 定义功能需求 将用户需求转换为明确、具体的功能需求,描述系统的功能和行为 设计用户界面 基于功能需求设计用户界面的外观、布局和交互方式,考虑用户体验和易用性 确定性能需求 确定系统的性能需求,包括响应时间、并发处理能力、安全性和可靠性等方面 验证和确认需求 与用户和利益相关者一起审查和验证需求的准确性和可行性 需求定义过程需要与利益相关者密切合作,并采取迭代的方法进行。这可以确保需求的准确性和完整性,并在早期发现和解决潜在的问题。 思考与实践 1. 在需求定义的过程中,场景的作用是什么? 2. 常见的需求定义过程的步骤有哪些?请分别进行阐述。 3. 请完成以下案例阅读分析思考题。 (1) 智能家居系统。 假设你是一家软件公司的项目经理,你的团队被要求开发一个智能家居系统,该系统将连接家庭中的设备和传感器,以提供更智能化和便利的生活体验。在开始开发之前,请回答以下问题。 ① 请使用场景建模技术,描述至少三种智能家居系统的典型使用场景。每个场景应该包括涉及的用户、设备以及它们的交互方式。 ② 请基于你所描述的场景,列出至少5条系统的功能性需求和5条非功能性需求。 (2) 移动健康应用。 现在假设你是一名独立开发者,想要设计一款移动健康应用,该应用旨在帮助用户跟踪和管理他们的健康状况,包括饮食、运动、睡眠等方面。在着手设计应用之前,请回答以下问题。 ① 请使用场景建模技术,描述两种用户使用移动健康应用的场景。考虑不同类型的用户,例如,健身爱好者、慢性病患者等。 ② 请基于你所描述的场景,列出至少3条应用的功能性需求和3条非功能性需求。同时,考虑用户友好性和数据安全性方面的需求。