【高级软件工程 -- 结构化面谈&用户故事】


结构化面谈&用户故事

结构化面谈和用户故事都是在软件开发过程中用于收集需求以及沟通需求的技术手段。

首先,结构化面谈是一种系统性的面对面交流方式,通过预定的问题来获取用户需求和期望。这种技术可以帮助团队更好地理解用户需求、期望和挑战,从而在软件开发过程中更好地设计和实现功能。结构化面谈通常由经验丰富的面谈者主持,确保对关键问题的全面探讨,并记录下重要信息以供后续分析和整理。

其次,用户故事是敏捷开发方法中的一种需求描述方式,通常包括角色、期望和理由等元素。用户故事的目的是以用户的视角描述软件需要完成的工作或任务,帮助开发团队更好地理解用户需求,同时也为开发过程中的测试和验收提供了依据。用户故事通常以简短、易懂的语言描述,便于团队成员理解和应用。

结合起来看,结构化面谈可以作为收集用户故事的一种手段,通过与用户深入交流获取需求,并将这些需求转化为用户故事的形式。通过结构化面谈收集的信息可以帮助团队更好地理解用户的真实需求,从而编写出更符合用户期望的用户故事。这样做有助于确保软件开发过程中的产品需求和用户期望保持一致,最终提高产品的质量和用户满意度。


一、用户故事

1.什么是用户故事

用户故事描述了对用户、系统或软件购买者有价值的功能。一个好的用户故事包括三个要素:

  • 角色:谁要使用这个功能。
  • 操作:需要完成什么样的操作。
  • 好处:为什么需要这个操作,这个操作带来什么样的好处。
    在这里插入图片描述

用户故事通常按照如下的格式来表达:

英文:As a , I want to , so that .
中文:作为一个<角色>, 我想要<操作>, 以便于<商业价值>
举例:“作为招聘网站注册用户,我想要查看最近3天发布的招聘信息,以便于我看到最新的招聘信息”。

由于用户故事的描述信息以传统的手写方式写在纸质卡片上,所以Ron Jeffries(2001)对这三个方面称为3C:卡片(Card)、对话(Conversation)和确认(Confirmation)。

  • 卡片(Card):用户故事一般在小卡片上写着故事的简短描述,工作量估算等。
  • 交谈(Conversation):用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
  • 确认(Confirmation):通过验收测试确认用户故事被正确完成。

2.如何编写用户故事

用户故事是用日常语言编写的,并从个人(谁)的角度以及他/她想要的原因(为什么)描述特定的目标(什么)。在软件开发中,目标通常是新产品功能,个人是某种类型的最终用户,原因是用户在目标产品功能中看到的好处。以下是70%的从业者使用的简单用户故事格式:
在这里插入图片描述

角色 - 用户应该是与系统交互的真实人。

  • 要尽可能具体

  • 开发团队不是用户


操作 - 系统的行为应该写为操作。

  • 通常每个用户故事都是唯一的

  • “系统”是暗示的,不会写在故事中

  • 主动语音,而不是被动语态(“我可以得到通知”)


好处 - 好处应该是真实的结果,它是非功能性的或系统外部的。

  • 许多故事可能共享相同的利益声明。

  • 优点可能是其他用户或客户,而不仅仅是故事中的用户。

用户故事应该很清晰地体现对用户或客户的价值,最好的做法是让客户团队来编写故事。客户团队应包括能确定软件最终用户需求的人,可能包括测试者,产品管理者,真实用户和交互设计师。因为他们处于描述需求的最佳位置,也因为随后他们需要和开发者一同设计出故事细节并确定故事优先级。
为了构造好的用户故事,我们关注六个特征。一个优秀的故事应该具备以下特点:

独立的(Independent)— 我们要尽量避免故事间的相互依赖。在对故事排列优先级时,或者使用故事做计划时,故事间的相互依赖会导致工作量估算变得更加困难。通常我们可以通过两种方法来减少依赖性:1.将相互依赖的故事合并成一个大的、独立的故事;2.用一个不同的方式去分割故事。


可讨论的(Negotiable)—故事卡是功能的简短描述,细节将在客户团队和开发团队的讨论中产生。故事卡的作用是提醒开发人员和客户进行关于需求的对话,它并不是具体的需求本事。一个用户故事卡带有了太多的细节,实际上限制了和用户的沟通。


对用户或客户有价值的(Valuable)—用户故事应该很清晰地体现对用户或客户的价值,最好的做法是让客户编写故事。一旦一个客户意识到这是一个用户故事并不是一个契约而且可以进行协商的时候,他们将非常乐意写下故事。


可估算的(Estimable)—开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。但是让开发者难以估计故事的问题来自:1.开发人员缺少领域知识;2.开发人员缺少技术知识;3.故事太大了。


小的(Small)—一个好的故事在工作量上要尽量小,最好不要超过10个理想人/天的工作量,至少要确保的是在一个迭代或Sprint中能够完成。用户故事越大,在安排计划,工作量估算等方面的风险就会越大。


可测试的(Testable)— 故事必须是可测试的。成功通过测试可以证明开发人员正确地实现了故事。如果一个用户故事不能够测试,那么你就无法知道它什么时候可以完成。一个不可测试的用户故事例子:用户必须觉得软件很好用。

3. 编写用户故事的具体步骤与实例

  1. 定义用户角色:确定谁将是软件的最终用户。这可能包括学生、教师、管理员等不同的用户角色。

  2. 进行用户调研:通过访谈、问卷调查或观察等方式,了解用户的需求、偏好和痛点,从而确定他们的真实需求。

  3. 编写用户故事:根据用户调研得到的信息,编写具体的用户故事,描述用户在特定情境下的需求和期望。

  4. 确定用户故事的优先级:根据软件开发的时间和资源限制,确定哪些用户故事是最重要的,需要首先实现。

  5. 与用户验证:将编写的用户故事与真实用户验证,以确保用户故事确实反映了用户的需求和期望。

现以开发一个教学辅助系统为例,编写用户故事可以按照以下步骤进行:

  1. 确定用户角色:
    确定不同的用户角色,如教师、学生、家长、管理员等。

  2. 进行用户调研:
    与教师、学生、家长等目标用户进行访谈、问卷调查或观察,了解他们的教学需求、学习习惯、课堂挑战等。

  3. 编写用户故事:
    根据用户调研结果,编写具体的用户故事,例如:

作为一名教师,我希望能够创建和管理课程,以便能够轻松地为学生们提供教学材料和作业。
作为一名学生,我希望能够方便地访问课程材料和作业,以便能够高效地完成学习任务。

  1. 确定用户故事的优先级:
    根据教学辅助系统的发展阶段和资源限制,确定哪些用户故事是最重要的,需要首先实现。比如,可能需要优先实现教师创建课程和学生访问课程材料的功能。
    与用户验证:

  2. 将编写的用户故事与真实的教师、学生进行验证,以确保用户故事反映了他们的实际需求和期望,并及时调整和完善。

4. 编写用户故事时的常见错误

在编写用户故事时,常见的错误包括:

  1. 过于抽象或模糊的描述:用户故事应该是具体的、清晰的,描述具体的用户需求和期望。过于抽象或模糊的用户故事无法为开发团队提供明确的指导,容易导致理解偏差和开发方向不清晰。

例:
错误的用户故事:作为用户,我希望系统更加友好。
改进的用户故事:作为客户,我希望在网站上能够轻松地找到产品,并且能够快速完成购买流程,以便节省时间和精力。

  1. 非用户中心的故事:有些用户故事过于关注于系统功能,而忽略了用户的实际需求和体验。用户故事应该聚焦于用户的需求、期望和使用场景,而不是仅仅描述系统的功能。

例:
错误的用户故事:系统应该有一个搜索功能,可以搜索相关的商品。
改进的用户故事:作为购物者,我希望能够通过输入关键词或者筛选条件来搜索到我想要的商品,以便快速找到并浏览相关商品。

  1. 忽略不同用户角色的需求:在复杂的系统中,常常涉及到多种不同的用户角色,如教师、学生、管理员等。一些错误的用户故事可能忽视了不同用户角色的特定需求和使用场景。

例:
错误的用户故事:系统应该有一个通知功能,可以通知用户新的优惠活动。
改进的用户故事:作为网站管理员,我希望能够发布新的优惠活动,并且能够设定通知给所有注册用户,以便能够有效地推广活动并提高销量。

为避免以上错误,我们应该在编写用户故事时,充分了解用户需求,与用户保持沟通和验证,确保用户故事能够真实地反映用户的需求和期望。


二、结构化面谈

1.什么是结构化面谈

结构化面谈是一种系统性的面对面交流方式,旨在收集详细的信息、观点和见解,以便更好地了解特定主题或领域。这种面谈通常由经验丰富的面谈者主持,通过预定的问题或话题,引导被访者深入讨论,确保对关键问题的全面探讨,并记录下重要信息以供后续分析和整理。

结构化面谈通常包括以下几个特点:

  1. 针对性问题:面谈者提前准备了一系列针对性的问题,以确保涉及到所有关键的主题和领域。
  2. 统一的面谈指南:面谈者会使用统一的面谈指南来确保每个受访者都接受到相似的问题,从而保证了信息的一致性和可比性。
  3. 记录和分析:面谈过程中会记录下重要信息,这些信息后续会被用于分析和整理,从而得出结论并形成报告或总结。
    结构化面谈通常被用于市场调研、用户需求收集、学术研究等领域,其目的在于获取详细、全面的信息,为后续的决策和行动提供有力支持。在软件开发中,结构化面谈也常常被用于收集用户需求,并帮助团队更好地理解用户的期望和挑战,从而指导产品设计和开发。

2. 结构化面谈和整体流程

进行结构化面谈需要经过以下流程:

  1. 准备阶段:确定面谈的目的,明确需要了解的信息和问题,制定面谈指南和计划。面谈指南应包括针对性的问题以及所需的信息类型,确保面谈的全面性和深度。同时,要选择合适的受访者,并确定面谈的时间和地点。

  2. 面谈过程:在面谈过程中,面谈者需要按照面谈指南逐一询问问题,并记录受访者的回答。在面谈过程中,要倾听受访者的观点和见解,引导他们深入讨论关键问题,并确保信息的准确性和完整性。

  3. 数据记录和整理:对面谈过程中获取的信息进行记录,并确保信息的准确性和完整性。这些记录后续将被用于分析和整理,从而得出结论和提炼重要信息。

  4. 分析和总结:基于面谈获取的信息,进行数据分析和整理,得出结论并形成报告或总结。这些结论需要清晰地表达所得信息,并为后续决策和行动提供依据。

  5. 反馈和沟通:将面谈结果反馈给相关的利益相关者,并进行沟通和讨论。这样可以确保获得的信息被充分理解和应用。

在进行结构化面谈时,面谈者需要保持客观、中立,并尽可能引导受访者深入讨论关键问题,以确保信息的全面性和准确性。同时,面谈者需要灵活应对受访者的回答,确保信息的详细性和丰富性。

3. 结构化面谈过程中要注意的问题和步骤

结构化面谈是一种系统性的面对面交流方式,旨在获取软件项目需求和相关信息。在进行结构化面谈时,需要注意以下几个问题:

1.明确面谈目的:在开始面谈之前,要明确面谈的目的是什么,了解要获取的信息类型和范围。

2.制定面谈指南:在面谈前,制定详细的面谈指南,包括要询问的问题和讨论的主题,以便将面谈过程保持在结构化的轨道上。

3.选择合适的受访者:确定参与面谈的受访者,他们应该是与需求相关的专业人员,例如项目经理、最终用户或技术专家。

4.准备面谈环境:选择一个安静、舒适的环境,以便双方可以集中精力进行交流。

在交谈的过程中,可以按照以下步骤进行讨论:

1.开场介绍:简要介绍面谈的目的和流程,让受访者了解他们的参与是非常重要和有价值的。

2.提出问题:按照面谈指南的内容,有针对性地向受访者提出问题,以引导受访者谈论相关的需求和信息。

3.倾听和记录:认真倾听受访者的回答,并及时记录下重要的信息和细节,以便后续分析和整理。

4.追加问题:根据受访者的回答,适当追加一些问题来深入了解需求的细节和背景。

5.总结和确认:在面谈结束前,对谈话内容进行总结和确认,确保双方对需求信息的理解是一致的。

通过以上方式,结构化面谈能够帮助获取全面、准确的软件项目需求,为后续的项目实施提供重要的参考依据。


4. 正面示例

XX公司EduConnect项目项目经理与XX学校代表就EduConnect教学辅助项目进行需求确认

日期:2023年11月6日
地点:XX公司会议室

与会人员:

  • 项目经理:刘先生
  • 客户代表:王女士

议程:
1.介绍
2.现有情况与问题陈述
3.需求分析
4.讨论和确认下步行动

议程详情:
1.介绍

刘先生:你好,请问是XX学校负责EduConnect项目对接的王女士吗?

王女士:你好,我是XX学校的王XX。

刘先生:感谢王女士抽出时间参加这次会议,我是XX公司此次项目的项目经理刘XX,我将负责整个项目的规划、执行和交付工作。请问王女士是该项目的负责人吗?之后有关的项目问题都是与您对接吗?

王女士:在我们的团队中,我会作为项目的主要业务负责人,负责提供教学需求的详细描述,以及对最终的解决方案进行验收。我校派我对接此次项目,之后有关项目的问题都可以与我对接。

刘先生:接下来,我们将一起就EduConnect的需求展开讨论,以确保最终的解决方案符合您的期望。

王女士:非常感谢,我对这次会议充满期待,希望我们可以共同找到一个能够满足学校需求的解决方案。

2.现有情况与问题陈述

刘先生:首先,我想了解一下目前您所面临的主要问题和挑战。您是否能够简要描述一下您对EduConnect教学辅助系统的期望和遇到的痛点?

王女士:当然。目前我们的教学辅助系统功能单一,无法满足学校多样化的教学需求,教师和学生在使用过程中遇到了诸多不便,例如无法个性化定制课程、互动性不足等问题。我们希望新系统能够更好地支持教师教学、学生学习,并提升教学效果。

刘先生:明白了,从您的描述来看,个性化定制和增强互动性是您比较关注的点。接下来我就具体需求和您做一个了解。

3.需求分析

刘先生:在对项目的需求进行详细分析之前,让我们先定义一下项目的周期和经费预算。我们预计这个项目需要多长时间来完成?同时,您对此项目的预算是多少?

王女士:对于项目周期,我们希望在6个月内完成。至于经费预算,我们计划投入约100万人民币用于该项目。

刘先生:6个月的时间指的是系统的设计、开发和测试工作,还是正式投入使用呢?

王女士:我们希望在6个月内完成系统的设计、开发和测试,并且能够在学校的下一个学年开始前投入使用。

刘先生:好的,明白了。请问您有哪些方面的具体需求呢?比如数据管理、用户界面设计、安全性等方面。

王女士:我们需要系统具备良好的数据管理能力,确保教学数据的安全性和可靠性;同时,易用的用户界面设计也是我们考虑的因素之一。

刘先生:明白了。请问您能否提供一份有关于教学数据的范例以便于我们确定系统需要存储什么样的数据。

王女士:可以,之后我会将贵司需要的材料一并打包发送至邮箱。

刘先生:感谢。另外,在数据管理方面,您希望系统能够实现哪些功能?比如数据备份、权限管理等方面的需求。

王女士:我们需要系统能够实现定期的自动数据备份,并且能够设定不同用户的权限,以确保敏感数据不被未授权人员访问。

刘先生:请问具体的用户群体有哪些呢?

王女士:具体用户包括学生、任课教师、教务办老师、信息化部门的管理员等,不同的用户能访问到的数据都不相同。

刘先生:明白了。对于具体的业务需求有哪些呢?
王女士:我们希望该系统可以为每一门课程设立一个教学课堂,在该教学课堂内的任课老师可以发布教学资料、通知和作业等内容,学生可以进入课堂下载教辅资料和提交作业等,任课老师可以对学生提交的作业进行打分并可以开放学生之间的互评。

刘先生:请问具体作业的形式是什么样子的呢?例如,提交文档、提交链接和在线答题等。

王女士:我们希望作业的主要提交方式有上传文件、在线输入文字的方式,同时,系统可以提供简单的命题作业形式,包括问答题、选择题和判断题,对于选择题和判断题可以由系统直接判断是否正确。

刘先生:明白了。请问创立的课程由谁进行管理呢?

王女士:在课程确定开设之后,可以由教务办老师创立和管理所有课程,任课老师可以管理自己的课程。

刘先生:明白了。总结一下您的需求,EduConnect主要是针对于教学辅助系统,由教务办老师创立和管理所有课程,任课老师可以管理自己的课程。课程内需要的功能包括发布作业、教学资料和通知,其中作业的形式由三种,一种是提交文件,一种是在线输入文字内容,即在线富文本提交的方式,还有一种为老师命题,命题类型包括选择题,判断题和主观题,对于客观题可以自动判正误。每一门课可以设置教学课堂,教学课堂就是任课老师与学生交流的媒介。使用该系统的用户包括信息化部门管理员、教务办老师、任课教师和学生,对于不同的用户开放不同的数据权限。

王女士:是的,就是这样。

4.讨论和确认下步行动

刘先生:感谢您对各项需求的说明。接下来,我们将按照讨论的内容进行进一步的分析和讨论,并尽快给您一个初步的解决方案设计方案。我们也会就具体的开发计划、里程碑、质量保障等方面与您共同商讨,以确保项目的顺利实施。

王女士:非常感谢,我期待能够尽快看到我们共同努力的成果。如果有任何需要我提供的支持和信息,请随时告诉我。

刘先生:当然,我们会及时与您沟通。感谢您的参与,我们会尽快展开后续的工作。

会议记录由刘先生整理并发送给王女士,以确保双方对会议内容有清晰的共识,并为下一步的工作奠定基础。

5. 反面示例

无详细即时记录。采用粗略记录或无记录的形式。

刘先生:你好,我是XX公司EduConnect项目的项目经理,请问您有哪些需求?

王女士:我们希望这个系统可以可以为每一门课程设立一个教学课堂,在该教学课堂内的任课老师可以发布教学资料、通知和作业等内容,学生可以进入课堂下载教辅资料和提交作业等,任课老师可以对学生提交的作业进行打分并可以开放学生之间的互评。

刘先生:明白了。请问还有其他需求吗?

王女士:除了功能需求,还要说哪些需求呢?

刘先生:数据管理方面?

王女士:数据方面我们需要保证数据的安全性,保证数据不会泄露。

刘先生:了解了。感谢您的需求介绍。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值