第八章 需求获取方法之面谈
1.什么是半结构化面谈?
事先需要根据面谈内容准备面谈的问题和面谈结构,但在面谈过程中,会见者可以根据实际情况采取一些灵活的策略。
面谈的优点:
1.面谈的开展条件较为简单,经济成本较低;
2.能获得包括事实、问题、被会见者观点、被会见者态度和被会见者信仰等各种信息类型在内的广泛内容;
3.通过面谈,需求工程师可以和涉众(尤其是用户)建立相互之间的友好关系;
4.通过参与面谈,被会见者会产生一种主动为项目做出贡献的感觉,提高涉众的项目参与热情。
面谈的缺点和局限性:
1.面谈比较耗时,时间成本较高;
2.在被会见者地理分散的情况下往往难以实现面谈;
3.面谈参与者的记忆和交流能力对结果影响较大,尤其是面谈的成功较高的依赖于需求工程师的人际交流能力;
4.交谈当中常见的概念结构不同、模糊化表述、默认知识、潜在知识和态度偏见等各种问题在面谈中都不可避免,进而影响面谈的效果,导致产生不充分的、不相关的或者错误的数据;
5.在会见者不了解被会见者认知结构的情况下,面谈不可能取得令人满意的效果。
群体面谈:
将所有的涉众方集中起来,选择一个合适的地点,集中一段时间,召开一个多方共同参与的会议,一起进行需求的讨论、分析和获取。
头脑风暴
1.它的目的不是发现需求,而是“发明”需求,或者说是发现“潜在”需求;
2.它鼓励参与者在无约束的环境下进行某些问题的自由思考和自由讨论,以产生新的想法;
3.包含两个阶段:想法产生阶段、想法精减阶段
第九章 需求获取之原型法
为什么要使用原型?
软件工程中存在着大量的不确定性,原型、迭代和(方法)验证是人们解决不确定性的主要手段。
软件工程中的原型分类:
1.演示原型(presentation prototype)
主要被用在启动项目阶段
目的是让用户相信应用系统的开发是可行的
2.严格意义上的原型(prototype proper)
主要被用在分析需求阶段
用来阐明用户界面或者系统功能的某些特定方面
3.试验原型(breadboard prototype)
主要被用在构建系统阶段
帮助开发者澄清他们所面对的一些和系统构建相关的技术问题
4.引示系统原型(pilot system prototype)
会被开发在系统开发的各个阶段
用作最终系统的构建核心
确定原型需求:
明确不确定的维度:外观、角色、实现
原型开发方法分类:
(1)探索式(exploratory)
以缺陷需求开始继而不断调整和修正需求的原型开发方式 。
要尽可能的调整各种设计选项,并比较多种设计方案下的用户反馈,以得到理想的用户需求。探索式的原型方法能够帮助开发者更深入地了解用户的业务、问题和期望。
(2)实验式(experimental)
在初始时就拥有清晰的用户需求,但是对需求的实现方法、实现效果、可行性没有太大的把握。
(3)演化式(evolutionary)
在原型开发的初始点既要有清晰的原型化需求也有项目积累下来的原型资产。
探索式和实验式方法产生的原型产品又被称为抛弃式原型。
需求获取原型大多数是探索式原型,也有少量的实验式原型,但都属于抛弃式原型,需求工程师要坚决地抛弃抛弃式需求获取原型。
原型法的优缺点:
原型法的优势在于:一方面可以使用户更好地理解需求工程师的假设;另一方面可以使需求工程师通过观察用户的反馈来加深对用户的理解,并明确自己的一些假设为什么不准确。
但原型方法的缺点是:一个成本较为高昂的方法,在构建原型的过程中会花费一定的人力和经济成本,而且还可能浪费开发时间。
水平原型与垂直原型:
水平原型:它仅仅实现选定功能所有层次中的某些特定层次,它能够处理较大范围的功能,建立的原型产品称为水平原型。(虽然水平原型涵盖了很多功能,但并没有真正地实现这些功能。)
垂直原型:它会触及到选定功能实现的所有层次,处理的功能范围通常较小,建立的原型产品称为垂直原型。
原型方法的风险:
原型方法的最大优点是能够及早解决系统开发中的不确定性,从而减少软件项目失败的风险;但原型方法的复杂性使得它在减少风险的同时也引人新的风险。
1、原型方法最大的风险是成本失控。
2、给涉众造成错误印象。涉众看到了一个正在运行的原型,得出产品几乎已经完成的结论,从而提出快速交付产品的不当要求。
3、用户可能会被原型所表现出来的非功能特性遮蔽了眼睛,从而忽略了他们更应该重视的功能特性。
4、在澄清需求不确定性的同时也可能会掩盖一些用户假设,这些假设将会无从发现。
习题:
1.如果在终的物件(Final Artifact)产生之前,一个中间物件(Mediate Artifact)被 用来在一定广度和深度范围内表现这个终物件,那么这个中间物件就被认为是终物件在 该广度和深度上的(原型)。
2.按照使用方式进行分类,原型可分为:演示原型、(严格意义上的原型)、试验原型和引示系统原型。
3.按照开发方法进行分类,原型可分为:演化式原型和抛弃式原型,其中抛弃式原 型又被细分为(探索式原型和实验式原型)。
4.原型的需求内容可以从三个纬度上分析:即( 外观、角色和实现)。
5.故事版原型分为被动故事板原型、主动故事板原型和( 交互故事版原型)。
6.使用原型方法获取需求的基本过程中包括确定原型需求、原型开发、( 原型评估)和原型修正环节。
7.演示原型主要被用在(项目启动阶段)。
8.原型方法的大优点是能够及早地解决系统开发中的( 不确定性),从而降低软件项目失败的风险。
9.使用演化式原型方法,在开发时就需要注意原型的( 健壮性)和代码的质量。
10.使用实验式开发方法,需要实现多种技术方案,考察重要的系统的( 质量属性)。
11.通常来说,如果用户需求出现了模糊、不清晰、不完整等具有一定不确定性的特征,就可以考虑使用( 原型)方法。
12.选择使用探索式开发方法,需要尽可能地考虑各种不同的设计选项,比较不同选项下的( 用户反馈)。