Presentation is loading. Please wait.

Presentation is loading. Please wait.

第三章 软件需求获取 周立新 博士 北京大学软件与微电子学院.

Similar presentations


Presentation on theme: "第三章 软件需求获取 周立新 博士 北京大学软件与微电子学院."— Presentation transcript:

1 第三章 软件需求获取 周立新 博士 北京大学软件与微电子学院

2 课程提纲 软件需求基本理论和概念 软件需求工程过程 软件需求获取 软件需求分析 软件需求规格说明 软件需求验证 软件需求管理 软件需求实现
软件需求工程新进展 软件需求开发与需求管理工具

3 内容提要 建立项目视图和范围 需求获取

4 一.项目视图和范围文档 业务需求 项目视图解决方案 范围和局限性 业务环境 产品成功的因素 基于项目视图和范围的管理

5 项目视图和范围文档 业务需求 – 为什么开发该项目?新产品为客户和软件开发者带来的利益 背景 业务机遇 业务目标 客户需求 业务风险

6 项目视图和范围文档 背景 总结新产品的理论基础 业务机遇 现有产品评价及存在的问题 产品开发的历史背景 描述产品竞争的市场及运用的环境
新产品的竞争优势

7 项目视图和范围文档 业务目标 描述产品所带来的商业利润 客户获得的价值,如提高生产率、节省开支、符合产业标准、提高可用性等
产品预算和交付日期

8 项目视图和范围文档 客户需求 描述典型客户的需求 客户对现有产品使用所遇到的问题 通过原型或举例阐述新产品的使用方法
确定新产品运行的软、硬平台 定义较高层次的关键接口 产品的性能要求

9 项目视图和范围文档 业务风险 市场竞争带来的风险 产品预算和交付日期带来的风险 用户是否可以接受 实现技术的可行性 预测每一项风险的严重性
制定风险应对或减轻措施

10 项目视图和范围文档 项目视图解决方案 – 长远项目视图,业务目标,决策信息等 项目视图陈述 – 开发新系统(产品)的目的简要陈述
产品主要性能列表 – 强调区别于以往产品和竞争产品的特性 主要假设和产品依赖的环境

11 项目视图和范围文档 范围和局限性 – 确定项目基本解决方案及适用范围,产品应包含和不应包含的性能
Release 1.0 首次发行(开发)的范围,目的 (争夺市场优先权?) Release 2.0 随后发行(开发)的范围 Release 相关的产品局限性和专用性

12 项目视图和范围文档 业务环境 – 客户分类概述和项目管理优先级
不同客户群的特征,包括客户能获得的益处,对新产品的态度,对产品哪些特性最感兴趣,使用该产品的可能性有多大,客户的限制 项目优先级,通过对产品性能、质量、开发计划、开发成本、可用资源(主要为人力)的分析建立项目开发优先级

13 项目视图和范围文档 产品成功的因素 产品成功的定义和测量 影响产品成功的主要因素 与所有关键风险承担者达成一致

14 一.项目视图和范围文档 基于项目视图和范围的管理 新的需求或特性出现时确认是否在项目范围之内。
当不得不改变项目范围时,必须重新商定预算、资源和进度安排。为应对较小改变可能带来的麻烦,最初计划中留有余地,如25%,会是较现实的做法. 通常拒绝一个新的需求因缺乏根据难以做到,但基于项目视图和范围文档却可以合理地拒绝这些新的要求。

15 二.软件需求获取 需求获取的三个主要方面: 应获取什么信息? 应使用何种信息来源? 应采用什么获取技术?

16 1.需求获取的信息 获取信息就是为了能够得到产生需求文档和规格说明所必需的信息: 问题域的描述 要求解决的问题列表(需求)
用户对解系统的行为或结构施加的任何约束

17 2. 信息来源 高层系统需求 System Requirements 客户(实际的和潜在的) Customers
客户的“规格说明书” CRS 原有解系统(即运行在问题域中,执行与预期的新的解系统相似功能的系统)及其文档 原有系统的用户 竞争对手的产品 应用领域专家 定义了任何接口系统的特征和行为的文档 相关的技术标准和法规

18 2.1 Identifying Requirements Info Sources
As a start points, you first need to identify Key stakeholders - as we learned before, they are users, customers and developers Potential users and operators who need this product Historical data, including process data Because they are easy to identify? No, because they are important!

19 2.1 Identifying Requirements Info Sources
Baseline documents 基线文档 Source requirements documents 原始需求 Contracts 合同 Proposal 提案 Standards Product visions and scope Regulations Customer requirements

20 2.1 Identifying Requirements Info Sources
Auxiliary documents 补充文档 Early system concept studies User profiles 用户概况 Marketing study Interviewing notes Current technology White papers Lessons learned study

21 2.1 Identifying Requirements Info Sources
Related systems Similar systems Predecessor systems Prototypes Interfacing systems Existed subsystems

22 2.1 Identifying Requirements Info Sources
Interviews and discussions with potential users   Marketing surveys and user questionnaires  调查表 Observing users at work   Scenario analysis of user tasks   Events (stimulus) and responses (for real time system)

23 2.2 Evaluate Requirements Info Sources
Refered documents version, is it latest? Avoid to use outdated source documents Refered documents are complete? The information sources are relevant to current product? Do you interview the right person? Why they are reluctant to provide information?

24 课程项目 课堂分组讨论 目的: (1)描述问题域 (2)确定该系统需求信息来源

25 课程项目 课堂分组讨论 要求: 对项目从问题域加以描述(关键点即可) 指明已有信息和待挖掘信息并分类 对不确定的信息计划如何获取
确定信息来源可能的困难 每小组选一位代表(moderator)加以陈述 将结果完整记录(记录关键点,课后整理) 小组讨论20分钟,每组陈述3~5分钟

26 3. 需求获取技术 一旦确定了可能的信息来源,接下来的工作是通过选择合适的获取技术来挖掘所需的信息。

27 3. 需求获取技术 3.1 面谈 Interviewing 面谈是最直接的获得需求的方法 结构化面谈,集中讨论一组事先计划好的问题;
非结构化面谈,面谈进行时通过临场发挥获得问题的答案; 对面谈主题做充分的准备可以大大提高面谈效率,例如对被咨询人的预先了解及期望获取的答案; 面谈进程控制 面谈信息记录

28 3. 需求获取技术 3.2 调查表 Surveys 当事先可以很好地确定问题时,调查表方法提供了一个高效的需求获取方法;
对问题列表预先作充分的准备,以便使问题易于理解,最小化二义性; 调查表可以认为是结构化面谈的最终表现形式,可作为面谈技术的补充方法。

29 3. 需求获取技术 3.3 用例(Use Case)和场景(Scenario)分析
Scenario描述了系统对用户特定的输入存在的可能的响应,可以和Use Case联合使用。 经常和分析阶段一起使用。

30 3. 需求获取技术 3.4 头脑风暴 Brainstorming
用于复杂、含糊不清的需求获取。通过一个短暂、集中式的讨论,使关键系统需求浮出水面。在这里,参加人员应包括各关键性领域代表,讨论将是自由式的,着重的是想法而不是辩论和批评。

31 3. 需求获取技术 3.5 需求裁剪 Requirements Tailoring
当存在一份客户需求规格说明书,或者存在一份相似的已有产品需求规格说明书时,就可使用这种技术。需求裁剪可以是手工的,也可以通过工具来完成。

32 3. 需求获取技术 Key Points: Actually, all the technique can be combined together, 在需求获取过程中它们并非独立进行的。 与Stakeholders的交流(communication)与沟通(interaction)是需求获取过程中的关键能力体现。

33 3.1 Interviewing The 80/20 Rule
80% of the talking should be done by the customers or users 20% of the talking should be done by the requirement engineer (interviewer)

34 3.1 Interviewing Key skills for successful interview Preparation
Asking the right questions Careful listening Checking for the understanding Recording information

35 3.1 Interviewing Preparation 准备 Environmental Scanning 环境审查
Customer’s business 客户的业务领域 Customer’s needs 客户的需要 Resource and document asked for 打算获得什么信息和文档资料 Prepare for presentation, demonstration 准备你的陈述和演示等

36 3.1 Interviewing Preparation 准备 Establishment of Rapport 建立和谐的环境
Use relaxed and approachable manner平易近人的态度 Use non-technical language, No jargon!少用专业语言,行话 Establish comfortable time frame 建立客户满意的时间表

37 3.1 Interviewing Asking the right questions 询问问题是最直接的信息获取方法
从最容易回答的问题着手,可以使用户容易进入角色 过程中通过询问确信懂得对方的想法 正确跟踪确认前面的问题 正确地总结关键点并加以确认

38 3.1 Interviewing Closed questions 直接的问题 Answer: Yes or No 例如:
你是该项目的负责人吗? 谁是该项目的财务经理? 六个月的开发周期是否现实?

39 3.1 Interviewing 直接问题的优点: 可以有效地控制问题范围和答案 在短时间内包含较多的问题 答案容易记录和分析 客户容易回答

40 3.1 Interviewing 直接问题的缺点: 因回答过于简单,不能得到充分的信息,需要有后续的问题进一步获取更多的信息
其回答可能不代表客户的真实想法 尖锐的问题可能会被隐藏 采访者占用太长谈话时间

41 3.1 Interviewing 直接问题适合的场合: 复杂问题的前奏 采集简单的事实数据 确认对问题的理解

42 3.1 Interviewing Open questions 间接问题 客户/用户决定提供什么信息,回答过程可能比较复杂 能够派生新的想法
例如: 你是该项目中担任什么角色? 为什么该系统需要改进? 这是我们提出的初步解决方案,你看能否解决现有的产品问题?

43 3.1 Interviewing 间接问题的优点: 体现对客户/用户思想、观点的重视 提供客户/用户认为的重要信息和隐藏问题
客户/用户能主动提供一些未涉及到的信息 能显现客户/用户对问题的不了解或错误理解 谈话多数时间在客户/用户方,符合80/20原则 能够获取新的产品解决思路 - brainstorming

44 3.1 Interviewing 间接问题的缺点: 回答问题需要较长时间 问题较难跟踪和记录,必需有较好的训练才能记录下有价值的和关键的信息
需防止客户/用户思路跑题,通常需要穿插一些直接问题来保持主题连贯性

45 3.1 Interviewing Primary and secondary questions 原始的和派生的问题
原始问题引入新的主题,可以是直接问题也可以是间接问题 如:关于新的应用流媒体(streaming)能否谈谈你的认识? 派生问题试图从原始问题中提取或探查更多的信息,如: 为什么你认为流媒体业务还不能开展?是用户负担不起吗?

46 3.1 Interviewing Summary questions 总结性问题 为确信对一个主题的理解无二义性
帮助采访者获得最后确定性信息 当与进一步的行动相关联时会使用 根据我们的讨论,整个计划分为2个阶段,第一阶段为调研,需要3个月,2个人,共6个人月,基于此决定下一阶段任务。是这样吗?

47 3.1 Interviewing Careful listening 集中精力倾听 仔细的倾听和正确的提问是成功地与客户/用户交流的关键技术
不能很好地倾听对方、理解对方,就不可能提出恰当的问题 每字每句的真实含义及细微差别 沉默(silence) – 问题无法回答?拒绝回答? 身体语言(body language)

48 3.1 Interviewing 倾听的障碍: 不能集中精力 同样词语但可能包含不同含义 先入为主的观念和看法 倾听的关键:
倾注热情,表现出真正的关注 给客户/用户足够时间解释其想法

49 3.1 Interviewing Check for understanding 对关键点重复解释 关注关键细节 对进一步的活动达成共识
留出足够时间进行总结,而不是草草收场 通过总结强调关键问题并发现可能的遗漏

50 3.1 Interviewing 记录收集的信息recording info 每条信息来之不易,将其清晰地记录下来 不要期望将来慢慢整理
也要让别人读懂你的记录 正式地文档化

51 大家关注的问题清单 如何快速有效的获取需求,并保证需求的完整性和正确性 如何更好的理解客户的表达与客户协商沟通 如何对不断变化的需求做出反应
对概念的理解和区别 如何实践、如何在没有开发经验的情况下把握好本门课程、需要储备的知识 如何准确地区分业务需求、用户需求和功能需求 客户对系统开发的理由和重要性认识不充分 监理方提的需求过于细致?(合理? 限制? 时间?)

52 Interview Skill Excise
Goal: Applying and practicing interviewing skills to identify key issues, needs and any concerns of stakeholders related to your project

53 Interview Skill Excise
Approach: 请注意观察所用的方法 观察interviewer是否对所关心的主题得到足够的信息 采访时间10分钟

54 Interview Skill Excise – check list
开场使用了何种提问方式? Closed or Open? 是否满足20/80 ? 使用了专业术语Jargon(行话)? 是否使用了primary and secondary questioning? 对谈话过程有控制吗? 有没有summary questioning?是否有效?

55 3.2 User Classes The frequency with which they use the product
Their application domain experience and computer systems expertise The features they use The tasks they perform in support of their business processes Their access privilege or security levels (such as ordinary user, guest user, or administrator)

56 3.2 User Classes

57 3.2 User Classes 一个实例: 手机用户可以分为: 高端用户 底端用户 职业用户 每类用户特点不同,归结到产品其功能也不同

58 Communications with users
用户和开发者之间可能通讯途径

59 3.2 Product Champion 产品代表最了解客户的需求,是客户与开发者之间的接口,通过产品代表解决沟通上的问题。
产品代表从所代表的用户类中收集需求信息,通过与需求分析人员合作解决用户在需求表达上的不一致和不兼容性。 产品代表必须具备较强的交流能力,熟知应用领域,在软件开发方面有足够的经验,能够判断在现有技术背景和运行环境下,开发路线是否可行。

60 Who will be the product champion?
If possible, best fit is the user Sometimes, Project Champion is the meaning, Thus, a technical team leader may be a good choice Question: does each class excise group need to identify a champion? Answer is yes, if you really want to make the communication more efficient

61 Multiple Product Champions
Current project is composed of multiple functions One person can not provide all related requirements It is the PM’s responsibility to breakdown the task and assign to multiple champions

62 Product Champion Expectations
分类 活动 Check List 计划 转化产品的使用范围和局限性;定义与其它系统的外部接口;定义现有用户应用程序到新系统的过渡途径 需求 收集用户需求描述;提出使用脚本和实例;解决需求冲突;定义实现优先级;确定质量属性和其它非功能需求;评估用户接口原型 验证和确认 审查需求文档;确定用户接受标准;根据使用脚本编写测试用例;进行beta测试;提供测试数据集 用户帮助 编写用户手册和在线帮助;准备培训材料;为同行提供产品演示 变更管理 对缺陷改正进行评估并根据所耗资源等设置实施优先级;对增加的和增强的需求进行评估和设置优先级;评估需求变更对用户的影响;参加CCB参与变更决策

63 需求决策问题 如果个别用户不能在需求方面达成一致意见,那么应由产品代表作出决策。
如果不同的用户类有不一致的需求,必须决策出满足哪类用户的需求更重要。这决定于哪类用户所占份额更大以及产品业务目标的匹配情况。 不同的客户可能都要求产品按照各自的喜好来设计,你不可能面面具到。通过业务目标找出你最关心的核心用户,而相对次要的会拖延到未来版本。

64 需求决策问题 当开发者的想法与客户需求冲突时,通常应该由客户作出决策。但要避免陷入“客户总是对的”的陷阱中,要客观地对待客户的选择,因为谁都会犯错误。 由于市场需求更有分量,当其和开发部门想要开发的产品冲突时,通常会依照市场需求而定。问题是,为了获得订单,市场常常迁就客户需求,而轻视这些需求的合理性和可行性。

65 谁来作出需求决策 Engineers? Team Leader or Manager?
Change Control Board (CCB)? Senior Management Team?

66 对客户输入进行分类 客户或用户提供的需求信息往往是零散的、缺乏组织的。需求分析者必须把这些零散的信息按某种规则分成不同类型以便最终形成组织良好的需求文档。

67 对客户输入进行分类 业务需求 Business (op) requirements
描述客户开发部门可以从产品中得到的资金、市场和业务利润方面的需求信息最有可能属于业务需求范围。 For examples: Increase market share by X% Save $Y per year on electricity now wasted by inefficient units Save $Z per year in maintenance costs that are consumed by the legacy system

68 对客户输入进行分类 使用实例 Use cases or scenarios
有关利用系统执行的业务任务或达到用户目标的总的陈述可能就是使用实例,而特定的任务描述表示了用法说明。与客户商讨,把特定的、零散的任务描述概况成广泛的、系统的使用实例是系统分析者的重要技能,可以通过不断地让客户描述他们的业务工作流程活动来完成这一过程。

69 对客户输入进行分类 使用实例 Use cases or scenarios
A user who says, “I need to <do sth>” is probably describing a use case: I need to print a mailing label for a package I need to change to Cell ID, if A-GPS is not available

70 对客户输入进行分类 业务规则 Business rule
当客户说明一些活动只能在特定条件下,由一些特定的人来完成时,客户是在描述一个业务规则,既业务过程的操作原则。而业务规则是由一系列的功能需求来完成的。 Must comply with <some law or corporate policy> Must conform to <some standard> If <some condition is true>, then <sth happens> Must be calculated according to <some formula>

71 对客户输入进行分类 功能需求 对诸如“用户应该能执行某些功能”,“系统应该具备某些行为”的信息基本上属于功能需求范畴。功能需求描述了系统展示的可观察行为,大多数是处于执行者或系统输入 – 系统响应顺序的环境中。功能需求定义了系统应该做什么,组成了需求规格说明的最重要的部分。

72 对客户输入进行分类 质量属性 对系统如何能很好地执行某些行为等方面的陈述属于质量属性,这是一种非功能需求,往往包括如下相关的一些属性:快捷性、简易性、直觉性、健壮性、可靠性、执行速度和效率。客户对质量属性的表达经常不准确和模棱两可,承诺的不切实际的属性可能给后面的开发带来无穷的麻烦。

73 对客户输入进行分类 外部接口 这类需求描述的是系统与外部的联系,包含用户接口和通信机制,外部实体可能是另外一个软件或硬件应用系统。客户对外部接口的描述可能为: 从某些设备读取信号 给其它系统发送消息 以某种格式读取文件 对一些硬件设备进行控制等

74 对客户输入进行分类 限制 限制是指一些合理限制设计者和程序员应选择的条件。这是软件需求规格说明中的另一类非功能需求。但要尽量防止客户施加不必要的限制,因为这会妨碍提出一个好的解决方案以及软件的可移植性。一定的限制却有助于提高质量属性。客户描述可能为: 必须使用一个特定的数据库或语言 不能申请多于一定数量的内存 操作必须与某些其它系统或应用程序相同

75 对客户输入进行分类 数据定义 当客户描述一个数据项或一个复杂的业务数据结构的格式、允许值和缺省值时,则属于数据定义范围。把这些数据集中在数据字典中,这可以作为项目开发、测试和维护人员的主要参考文档。

76 对客户输入进行分类 解决思想 如果客户描述了用户与系统交互的特定方法以使系统产生一系列的活动,则你在听取建议性的解决方案,而不是需求,这会耗费需求获取人员的部分精力,尤其是你不能判断这一区别时。需求获取重点应放在系统需要做什么而不是如何设计和构造。但不应忽视这样的信息,因为这有时可以帮助你更好地理解特定方法中隐含的用户需求。

77 Shared Vision Among Stakeholders
Customer 设计与 完成 需求产生 需求 规范 项目相关 知识与 背景 操作可行 性验证 设计正确 性验证 出现问题 成功 操作流程 与概念的 产生 出现问题 用户操 作规范 User

78 Shared Vision Among Stakeholders

79 3.3 Use Case/Scenario与需求获取
Use case is not necessarily dependent on the object-oriented methodology Use case focuses on what users need to accomplish Traditional ways focus on what they want the system to do It provides a shared view for customers, end users and developers to discuss the system’s functionality and behavior

80 3.3.1 Actors An actor is a person, another software system, or a hardware device that interacts with the system. An actor may Only input information to the system Only receive information from the system Input and receive information to and from the system

81 Actors The following questions may help identify the actors for a system Who is interested in a certain requirement? Where will the system be used? Who will benefit from the use of the system? Who will support and maintain the system? Does the system use an external resource? Does the system interact with a legacy system?

82 Use Cases Model a dialogue between an actor and the system; describe a sequence of interactions between a system and an external actor Represent the functionality provided by the system A use case is a sequence of transactions performed by a system that yields a measurable result of values for an actor

83 3.3.2 Use Cases The following questions may help identify the use cases for a system What are the tasks of each actor? Will any actor create, store, change, remove or read info in the system? What use cases do these operation? Will any actor need to inform the system about sudden, external changes?

84 Use Cases The following questions may help identify the use cases for a system Does any actor need to be informed about certain occurrences in the system? What use cases will support and maintain the system? Can all functional requirements be performed by the use cases?

85 3.3.2 Use Cases Relationships
<<extends>> relationship: Optional behavior Behavior that is only run under certain conditions Several different flows that may be run based on actor selection

86 3.3.2 Use Cases Relationships
<<include>> relationship: Sometimes, several use cases share a common set of steps. To avoid duplicating these steps in each such use case, define a separate use case that contains the shared functionality, whenever other use cases use this functionality, <<include>> is used to indicate this relationship

87 Essential elements of a use-case
A unique identifier A name in the form of “verb + object” A short textual description written in natural language Preconditions that must be satisfied before the use case can begin Postconditions after the use case is successfully completed The flow events from the preconditions to the postconditions

88 The flow of Events Main flow, normal course, primary scenario, happy path Subflows, alternative flows, alternative scenario Exceptions handling (Can you estimate how much effort shall be employed on this? A practical example)

89 The flow of Events

90

91

92 Another way for a use case dialog

93 A Scenario Description Template
Scenario number: 009 Scenario name: User disables the connection Starting conditions: The connection enabled User System User disables the connection System displays connection status User confirms the data is back-uped System disable the connection Finishing conditions: The connection disabled

94 Characteristics of a Scenario
Scenarios express the needs of the user by description of the system behavior in response to a stimulus from an actor. The stimulas and response may be data events, control events or conditions Scenarios are as non-technical as possible Each scenario is treated as linear transactions, the complex relationships among scenarios are treated separately Scenarios make external interfaces clear and apparent

95 Characteristics of a Scenario
Scenarios are the basis for validation of requirements and design Scenarios can make the order and timing clearly expressed and facilitate real time problems definition Force system failures and exceptional conditions to surface Scenarios can be used to identify uncertainties and risks

96 Identifying Use Cases Identify the actors first
Identify the business processes and the actor roles in each process Identify the external events to which the system must respond and relate these events to actors and use cases Express business processes in terms of specific scenarios, generalize the scenarios into use cases Derive likely use cases from existing functional requirements

97

98 3.3 用例与功能需求 Use cases can not replace functional requirements, they are different view of the product, one is from user, the other is from developers More information is needed to derive functional requirements used for next phase – software design

99 How to document requirements
Use Cases Only Use Cases and SRS SRS Only Which one should you choose? The most fitted one is the best one!

100 避免用例陷阱 Too many use cases
Including user interface design in the use cases   Including data definitions in the use cases  Use cases that users don't understand Excessive use of includes and extends relationships

101 需求获取中的模糊点 Collecting input from too few representatives, customers or users Project scope is improperly defined, being either too large or too small Miss leaded by the definition: What and How. The grey area is also very important No confidence whether you have collected sufficient information

102 完成需求获取的标志 尽管实际工作中没有结束条件,但如果出现下述信号,则表明你已基本完成需求获取:
用户总是按其重要性的顺序来确定使用实例的,如果用户不能想出更多的使用实例 如果用户开始讨论已讨论过的使用实例或需求 如果用户提出新的使用实例,但却可以从其它使用实例导出或是其它使用实例的可选过程 如果所提出的新的需求是针对将来产品的而不是现在讨论的特定产品 如果用户新提及的需求都属于低优先级的,没有更重要的需求

103 Establish Vision and Scope Document 建立项目视图和范围文档
课程项目 课后作业 目的: Establish Vision and Scope Document 建立项目视图和范围文档

104 Template 模板

105 Total solution 项目范围 Location Determination Technologies Cell ID A/TOA
E-OTD A-GPS Network Firmware Applications Users Server Client Request Response Interface User 项目范围

106 Based on Vision and Scope Document Establishing Use Case Diagram
Brainstorming!!! Based on Vision and Scope Document Establishing Use Case Diagram Identify actors Identify use cases Roughly specify flows of events in each use case Don’t forget preconditions and post conditions for each use case Time: 20 mins

107 Based on Vision and Scope Document Establish Use Case Diagram
以组为单位简述所确定的use cases 每组一次描述一个use case 课后基于your product vision and scope完善所有use cases, they will be the basis for deriving the requirements

108 Q &A?


Download ppt "第三章 软件需求获取 周立新 博士 北京大学软件与微电子学院."

Similar presentations


Ads by Google