第三章软件需求获取周立新博士北京大学软件与微电子学院课程提纲1.软件需求基本理论和概念2.软件需求工程过程3.软件需求获取4.软件需求分析5.软件需求规格说明6.软件需求验证7.软件需求管理8.软件需求实现9.软件需求工程新进展10.软件需求开发与需求管理工具内容提要•建立项目视图和范围•需求获取一.项目视图和范围文档1.业务需求2.项目视图解决方案3.范围和局限性4.业务环境5.产品成功的因素6.基于项目视图和范围的管理项目视图和范围文档1.业务需求–为什么开发该项目?新产品为客户和软件开发者带来的利益a)背景b)业务机遇c)业务目标d)客户需求e)业务风险项目视图和范围文档a)背景总结新产品的理论基础产品开发的历史背景b)业务机遇描述产品竞争的市场及运用的环境现有产品评价及存在的问题新产品的竞争优势项目视图和范围文档c)业务目标描述产品所带来的商业利润客户获得的价值,如提高生产率、节省开支、符合产业标准、提高可用性等产品预算和交付日期项目视图和范围文档d)客户需求描述典型客户的需求客户对现有产品使用所遇到的问题通过原型或举例阐述新产品的使用方法确定新产品运行的软、硬平台定义较高层次的关键接口产品的性能要求项目视图和范围文档e)业务风险市场竞争带来的风险产品预算和交付日期带来的风险用户是否可以接受实现技术的可行性预测每一项风险的严重性制定风险应对或减轻措施项目视图和范围文档2.项目视图解决方案–长远项目视图,业务目标,决策信息等a)项目视图陈述–开发新系统(产品)的目的简要陈述b)产品主要性能列表–强调区别于以往产品和竞争产品的特性c)主要假设和产品依赖的环境项目视图和范围文档3.范围和局限性–确定项目基本解决方案及适用范围,产品应包含和不应包含的性能a)Release1.0首次发行(开发)的范围,目的(争夺市场优先权?)b)Release2.0随后发行(开发)的范围c)Release相关的产品局限性和专用性项目视图和范围文档4.业务环境–客户分类概述和项目管理优先级a)不同客户群的特征,包括客户能获得的益处,对新产品的态度,对产品哪些特性最感兴趣,使用该产品的可能性有多大,客户的限制b)项目优先级,通过对产品性能、质量、开发计划、开发成本、可用资源(主要为人力)的分析建立项目开发优先级项目视图和范围文档5.产品成功的因素a)产品成功的定义和测量b)影响产品成功的主要因素c)与所有关键风险承担者达成一致一.项目视图和范围文档6.基于项目视图和范围的管理a)新的需求或特性出现时确认是否在项目范围之内。b)当不得不改变项目范围时,必须重新商定预算、资源和进度安排。为应对较小改变可能带来的麻烦,最初计划中留有余地,如25%,会是较现实的做法.c)通常拒绝一个新的需求因缺乏根据难以做到,但基于项目视图和范围文档却可以合理地拒绝这些新的要求。需求获取的三个主要方面:应获取什么信息?应使用何种信息来源?应采用什么获取技术?二.软件需求获取1.需求获取的信息获取信息就是为了能够得到产生需求文档和规格说明所必需的信息:–问题域的描述–要求解决的问题列表(需求)–用户对解系统的行为或结构施加的任何约束2.信息来源1)高层系统需求SystemRequirements2)客户(实际的和潜在的)Customers3)客户的“规格说明书”CRS4)原有解系统(即运行在问题域中,执行与预期的新的解系统相似功能的系统)及其文档5)原有系统的用户6)竞争对手的产品7)应用领域专家8)定义了任何接口系统的特征和行为的文档9)相关的技术标准和法规2.1IdentifyingRequirementsInfoSourcesAsastartpoints,youfirstneedtoidentifyKeystakeholders-aswelearnedbefore,theyareusers,customersanddevelopersPotentialusersandoperatorswhoneedthisproductHistoricaldata,includingprocessdataBecausetheyareeasytoidentify?No,becausetheyareimportant!2.1IdentifyingRequirementsInfoSourcesoBaselinedocuments基线文档Sourcerequirementsdocuments原始需求Contracts合同Proposal提案StandardsProductvisionsandscopeRegulationsCustomerrequirements2.1IdentifyingRequirementsInfoSourcesoAuxiliarydocuments补充文档EarlysystemconceptstudiesUserprofiles用户概况MarketingstudyInterviewingnotesCurrenttechnologyWhitepapersLessonslearnedstudy2.1IdentifyingRequirementsInfoSourcesoRelatedsystemsSimilarsystemsPredecessorsystemsPrototypesInterfacingsystemsExistedsubsystems2.1IdentifyingRequirementsInfoSourcesInterviewsanddiscussionswithpotentialusersMarketingsurveysanduserquestionnaires调查表ObservingusersatworkScenarioanalysisofusertasksEvents(stimulus)andresponses(forrealtimesystem)2.2EvaluateRequirementsInfoSourcesRefereddocumentsversion,isitlatest?AvoidtouseoutdatedsourcedocumentsRefereddocumentsarecomplete?Theinformationsourcesarerelevanttocurrentproduct?Doyouinterviewtherightperson?Whytheyarereluctanttoprovideinformation?课程项目课堂分组讨论目的:(1)描述问题域(2)确定该系统需求信息来源课程项目课堂分组讨论要求:1)对项目从问题域加以描述(关键点即可)2)指明已有信息和待挖掘信息并分类3)对不确定的信息计划如何获取4)确定信息来源可能的困难5)每小组选一位代表(moderator)加以陈述6)将结果完整记录(记录关键点,课后整理)7)小组讨论20分钟,每组陈述3~5分钟3.需求获取技术一旦确定了可能的信息来源,接下来的工作是通过选择合适的获取技术来挖掘所需的信息。3.需求获取技术3.1面谈Interviewing面谈是最直接的获得需求的方法–结构化面谈,集中讨论一组事先计划好的问题;–非结构化面谈,面谈进行时通过临场发挥获得问题的答案;–对面谈主题做充分的准备可以大大提高面谈效率,例如对被咨询人的预先了解及期望获取的答案;–面谈进程控制–面谈信息记录3.需求获取技术3.2调查表Surveys–当事先可以很好地确定问题时,调查表方法提供了一个高效的需求获取方法;–对问题列表预先作充分的准备,以便使问题易于理解,最小化二义性;–调查表可以认为是结构化面谈的最终表现形式,可作为面谈技术的补充方法。3.需求获取技术3.3用例(UseCase)和场景(Scenario)分析–一个精确定义的UseCase是面向解系统的而非问题域的。–UseCase的观点和方法论对需求开发是极有帮助的,因为它可以描述用户使用系统所要完成的所有任务。–Scenario描述了系统对用户特定的输入存在的可能的响应,可以和UseCase联合使用。–经常和分析阶段一起使用。3.需求获取技术3.4头脑风暴Brainstorming用于复杂、含糊不清的需求获取。通过一个短暂、集中式的讨论,使关键系统需求浮出水面。在这里,参加人员应包括各关键性领域代表,讨论将是自由式的,着重的是想法而不是辩论和批评。3.需求获取技术3.5需求裁剪RequirementsTailoring当存在一份客户需求规格说明书,或者存在一份相似的已有产品需求规格说明书时,就可使用这种技术。需求裁剪可以是手工的,也可以通过工具来完成。3.需求获取技术KeyPoints:•Actually,allthetechniquecanbecombinedtogether,在需求获取过程中它们并非独立进行的。•与Stakeholders的交流(communication)与沟通(interaction)是需求获取过程中的关键能力体现。3.1InterviewingThe80/20Rule80%ofthetalkingshouldbedonebythecustomersorusers20%ofthetalkingshouldbedonebytherequirementengineer(interviewer)3.1InterviewingKeyskillsforsuccessfulinterview①Preparation②Askingtherightquestions③Carefullistening④Checkingfortheunderstanding⑤Recordinginformation3.1Interviewing①Preparation准备–EnvironmentalScanning环境审查•Customer’sbusiness客户的业务领域•Customer’sneeds客户的需要•Resourceanddocumentaskedfor打算获得什么信息和文档资料•Prepareforpresentation,demonstration准备你的陈述和演示等3.1Interviewing①Preparation准备–EstablishmentofRapport建立和谐的环境•Userelaxedandapproachablemanner平易近人的态度•Usenon-technicallanguage,Nojargon!少用专业语言,行话•Establishcomfortabletimeframe建立客户满意的时间表3.1Interviewing②Askingtherightquestions–询问问题是最直接的信息获取方法–从最容易回答的问题着手,可以使用户容易进入角色–过程中通过询问确信懂得对方的想法–正确跟踪确认前面的问题–正确地总结关键点并加以确认3.1InterviewingClosedquestions直接的问题–Answer:YesorNo–例如:•你是该项目的负责人吗?•谁是该项目的财务经理?•六个月的开发周期是否现实?3.1Interviewing直接问题的优点:•可以有效地控制问题范围和答案•在短时间内包含较多的问题•答案容易记录和分析•客户容易回答3.1Interviewing直接问题的缺点:•因回答过于简单,不能得到充分的信息,需要有后续的问题进一步获取更多的信息•其回答可能不代表客户的真实想法•尖锐的问题可能会被隐藏•采访者占用太长谈话时间3.1Interviewing直接问题适合的场合:•复杂问题的前奏•采集简单的事实数据•确认对问题的理解3.1InterviewingOpenquestions间接问题–客户/用户决定提供什么信息,回答过程可能比较复杂–能够派生新的想法–例如:•你是该项目中担任什么角色?•为什么该系统需要改进?•这是我们提出的初步解决方案,你