第3章_需求获取.ppt
《第3章_需求获取.ppt》由会员分享,可在线阅读,更多相关《第3章_需求获取.ppt(157页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 需求获取1第3章 需求获取软件需求获取(简称需求获取)阶段的任务简单的说就是获取用户的需求信息。其过程如左图所示:确定非功能需求和约束条件实地收集用户需求信息确定调查对象建立项目范围和目标确定需求开发计划2第3章 需求获取3.1确定需求开发计划确定需求开发计划3.2确定项目的目标和范围确定项目的目标和范围3.3确定调查对象确定调查对象3.4实地收集需求信息实地收集需求信息3.5确定非功能需求确定非功能需求3.6在收集需求信息中应注意的问题在收集需求信息中应注意的问题3.7使用场景技术的需求获取使用场景技术的需求获取33.1确定需求开发计划确定需求开发计划确定需求开发计划的基本任务是确定
2、需求开发的实施步骤,并给出收集需求活动的具体安排和进度。需求开发计划需要注意以下几点:(1)只考虑与需求开发相关的工作;(2)应考虑困难性和灵活性;(3)应考虑书写和整理需求规格说明及其文档所花费的时间。43.2确定项目的目标和范围确定项目的目标和范围此阶段的基本任务是根据项目目标把项目相关人员定位到一个共同的和明确的方向上,并决定软件系统的范围。项目的范围与项目的目标特别是软件系统的目标需求是密切相关的。53.2确定项目的目标和范围确定项目的目标和范围在收集目标需求时,目标需求会来源于各个不同的人,这些人对要开发的软件系统及该系统最终能为用户或客户提供哪些价值有比较清楚的了解。63.3确定调
3、查对象确定调查对象本阶段的基本任务是明确地确定来自不同层次的需求来源和用户,并将其分类。应根据需求的层次来区分不同的用户:(1)提出目标需求的用户;(2)提出业务需求和功能需求的用户;(3)软件开发人员,主要是指系统分析员。73.3确定调查对象确定调查对象软件系统面临的用户是很多的,而这些用户由于所在的部门、职责和掌握的知识不同而存在差异,为了避免忽视和遗漏某些用户的情况,可以根据用户的某些方面将用户分类。83.3确定调查对象确定调查对象在将用户分类后,在分类的基础上进一步寻找每类用户的代表或联络人,这些人代表了一个特定的用户类,并可充当该用户类与开发人员之间的“窗口”。这些人也必须是真正的用
4、户,而不是单纯的代理人。93.3确定调查对象确定调查对象表3.1 用户代表的义务1)给分析人员讲解业务及说明业务方面的术语等专业问题。2)抽出时间清楚地说明需求并不断完善。3)当说明系统需求时,力求准确详细。4)需要时要及时对需求做出决策。5)要尊重开发人员的成本估算和对需求的可行性分析。6)对单项需求、系统特性或用例划分优先级。7)评审需求文档和原型。8)一旦知道要对项目需求进行变更,要马上与开发人员联系9)在要求需求变更时,应遵照开发组织确定的工作过程来处理。10)尊重需求工程中开发人员采用的流程(过程)。103.3确定调查对象确定调查对象软件需求可来自与各个方面,而且用户类也不一定都是指
5、人。有时也可以把其它应用系统或计算机硬件设备和接口等视为附加的用户类成员,这样就可确定软件系统与哪些外部应用系统或计算机硬件相关的需求。这就是说需求信息来源除了来自用户类外,还可来自于其它方面。113.3确定调查对象确定调查对象几个典型的软件需求来源:1.直接和间接使用软件系统的用户;2.系统需求规格说明;3.市场调查和用户问卷调查;4.已开发出的和待开发的同类软件系统的描述和文档;5.对人工系统的存在问题的报告和增强要求;6.观察正在工作的用户;7.用户工作内容的分析。123.3确定调查对象确定调查对象当确定了用户类及明确了用户需求的主要来源后,这样就可从不同的渠道和不同的人那里收集到大量的
6、需求信息。但这些需求信息既包含了明确的用户需求,也包含了一些不一致和含糊的需求,而且软件开发人员也难以解决。因此,这就需要寻找需求的决策者。在处理有问题的需求信息时,决策者并不是固定不变的,而是根据实际中可能发生的具体问题来确定。133.4实地收集需求信息实地收集需求信息在确定了需求的来源和调查对象后,下一步就是实地收集需求信息。实地收集需求信息阶段的任务就是到现场实地调查和与用户交流,收集和理解用户需求信息。143.4实地收集需求信息实地收集需求信息实地收集需求信息可能面临的困难:1.能提出软件需求的用户可能觉得他们没有充分的时间与开发人员进行交流和讨论;2.有时用户希望通过简单的方法和说明
7、,或者通过简单回答开发人员的询问后,软件开发人员就能清楚地理解他们的需求,而不需要花费太多的时间进行讨论;153.4实地收集需求信息实地收集需求信息3.用户和开发人员都只考虑自己的利益;如:有些用户由于缺乏使用计算机的经验,导致产生畏难情绪;有些用户认为开发软件系统自己的关系不大,对待需求信息的收集工作采取消极的态度。4.用户本身不能提出明确的需求;5.开发人员缺乏用户的业务知识,而用户也缺乏计算机方面的知识,导致双方在交流中产生许多的困难,以至收集工作难以进行。163.4实地收集需求信息实地收集需求信息实地调查的步骤:1.向掌握“全局”的负责人调查;2.向部门负责人调查;3.向业务人员调查。
8、步骤(2)和步骤(3)是一个反复的过程,而且每次调查之前要制定调查提纲,每次调查要作记录,并交由用户审查核实,以保证需求信息的可靠和准确。173.4实地收集需求信息实地收集需求信息实地收集需求信息的方式1.以座谈会的方式;2.以书面咨询的方式;3.利用用例表示方法。183.4实地收集需求信息实地收集需求信息需求信息可大致分类如下:1.目标需求;2.用例说明;3.业务规则;4.功能需求;5.性能需求;6.外部接口需求;7.限制 8.数据定义;9.解决思想。193.5确定非功能需求确定非功能需求非功能需求是衡量软件能良好运行的定性指标。由于缺乏定量指标,因此很难根据这些需求来评价软件系统,这也是开
9、发出来的软件系统与用户所满足的软件系统之间存在差异的主要原因。203.5确定非功能需求确定非功能需求用户所关心的非功能需求主要有:n可靠性;n可扩充性;n安全性;n互操作性;n健壮性;n易使用性;n可维护性 n可移植性;n可重用性。213.5确定非功能需求确定非功能需求在收集非功能需求信息时常用的方法:1.将不同用户类代表提出的可能很重要的非功能需求进行综合,并根据其中的每个需求设计出许多方法,然后根据用户的回答,使这些需求更明确化;2.开发人员与用户一起对每一个非功能需求制定可测试和可验证的具体标准;3.设计与非功能需求相冲突的假设示例,利用反例来提示用户。223.6 需求定义(RUP模型)
10、23关键五步:来源RUP的智慧在问题定义上达成共识理解根本原因问题背后的问题确定Stakeholder和用户定义解决方案系统的界限确定加在解决方案上的约束目标Stakeholder范围约束24寻找客户的需求 n了解用户需求的第一步是在有关问题的定义上和用户达成一致。n用户陈述的问题往往是表面现象,我们有必要和用户一起挖掘出问题背后的问题,即找出问题的根源,从而从根本上解决问题。n确定系统的涉众,除了开发团队和用户等直接涉众,我们还要找到间接的涉众。n系统边界确定了我们系统的内涵,即它究竟包括哪些功能,可以解决哪些问题。n确定解决方案的约束条件。253.6.1在问题定义上达成共识 描述问题的模版
11、 所谓的问题分析,就是理解真实世界中的问题和用户需求并提出满足这些多方面的解决方案的过程。第一步是把问题拿出来,达到所有人的共识,采用统一的格式,RUP为问题定义提供了统一的模板,如下:26n下表是一个银行信用卡机构整理的问题定义描述问题定义示例项目内容问题竞争性的市场使一家金融组织意识到,它必须开始利用日常交易中包含的大量信息。企业的资产很多,但它还具备预测信用卡使用情况和利润率的情况。影响信用卡部结果在信用卡营销方面针对性不强,导致利润降低优点有效标识出用户特点与信用卡使用情况的关系;标识出利润率较高的用户群体。27问题定义技巧:转换n马的遍历问题:寻找一系列的移动步骤,使马走完每个方块,
12、而落入任何一个方块有且只有一次28问题定义技巧:本源n问题:日内瓦湖上的山脉中建成了一条很长的汽车隧道,为了防止停电时发生灾难,必须提醒司机进入隧道之前把车灯打开。n解决方案一:“警告!前有隧道请打开车头灯警告!前有隧道请打开车头灯”n新问题:隧道出口风景很美,返回时发现汽车没电忘了关车头灯!n解决方案二:出口处立标牌出口处立标牌“关掉车灯关掉车灯”n新问题:夜行车也会关掉车灯?29n案例:n小林在一次电子政务项目中遇到了这样一个问题,用户要求对每个政务申请的各种处理都需要记录时间。由于他们选择的是C/S结构,因此取时间时就遇到问题,每台机器上的时间都不尽相同。n“不就是时间不统一吗,让所有客
13、户端登录时先从时间服务器上取一个时间就搞定了!”n但这个方案在实际的运行时却带来了不小的麻烦,由于时间服务器写的不够稳定,经常会自动退出,当这种情况出现客户端软件就根本无法进入,严重影响了客户的正常使用。在确定某问题的解决方案时,思考是否引发新问题在确定某问题的解决方案时,思考是否引发新问题30问题定义技巧:本源n解决方案三:建充电站建充电站n新问题:维护开支大,充电站也会坏n解决方案四:授权私人经营充电站授权私人经营充电站n新问题:风景区商业化,政府与游客均不接受31直接修改错误,不要用其他方案来弥补错误直接修改错误,不要用其他方案来弥补错误n案例:n在小程负责的一个客户关系管理系统项目中,
14、用户在使用了一段时间之后提出了这样一个问题:客户数据库的数据比较乱,有重名、同客户多条记录等现象。n小程毫不犹豫地说:“没关系,我可以为你们开发一个功能强大的客户数据清理工具,通过工具可以自动识别出这些混乱的数据,并且提供一些合并、汇总、删除功能”。n随着这个功能的开发,项目的范围也不断扩展,针对这个功能的需求也层出不穷。这就是软件开发过程中的“充电站”,成本付出了,但真的对项目有好处么?n这样做,似乎很多人会举手赞成,但是也付出了巨大的成本。如果我们细究一些,这个问题是怎么产生的呢?为什么数据会混乱呢?32n解决方案五:在隧道尽头,树立新标牌 如果是白天,并且车灯开着,请熄灭车灯;如果是白天
15、,并且车灯开着,请熄灭车灯;如果天色已晚,并且车灯没开,请打开车灯;如果天色已晚,并且车灯没开,请打开车灯;如果是白天,并且车灯没打,就别打开它;如果是白天,并且车灯没打,就别打开它;如果天色已晚,并且车灯开着,请别关掉它。如果天色已晚,并且车灯开着,请别关掉它。n新问题:谁能在行驶时读完?!问题定义技巧:本源33n在软件开发中,例如安装过程中的向导就是此类例子:明知道大家都是闭着眼睛点击“下一步”按钮的,那么为什么还要不断重复这样的设计呢?这难道不就是一个蹩脚的标牌吗?n如何解决?q关键在于对问题的定义,先确定到底存在什么样的问题?如下图分析:车没电司机忘关大灯缺乏提醒寻找问题的本源问题定义
16、技巧:本源34n终极解决方案:q在出口处立标牌:你的灯亮着吗?你的灯亮着吗?问题定义技巧:本源35影响人群分析的技巧n问题定义时,还可以对影响人群进行分析,得出推断和结论。q文氏图分析解决方案人群 影响 人群?Internet用户 婴幼儿 母亲和 祖辈?实例:2006年投资开办母婴网站363.6.2了解问题产生的根本原因了解问题产生的根本原因n问题定义达成共识后,下一步分析问题背后的问题,也就是寻找问题的本源。n两种实用工具:q一种是定性分析的鱼骨图q一种是定量分析的帕累托图37鱼骨图n鱼骨图也称为因果鱼骨图,它是一种以直观的图形找出问题或现象的所有潜在原因的方法,它有利于追踪出问题的根源。n
17、具有三个典型的好处:q使分析人员将问题的原因而不是症状放在首位。q提供了一种运用集体智慧解决问题的新方法。q直观、简明、易于操作。通常鱼骨图分析的过程会结合头脑风暴。38鱼骨图n绘制一个鱼骨图通常是一个团队在一起完成,具体步骤如下:q选择问题q头脑风暴q确定原因类型q分配原因q分析根本原因39n案例:开发一个在线图书借阅系统。传统的借书方式要求读者亲自来到图书馆,这显得非常不方便,而且随着藏书的增加和读者群的增长,大量的读者来到图书馆,使得图书馆的场地不足,工作人员也不够了。所以想到借助网络,让读者通过网络借/还书,这样可以节省大量的场地维护和工作人员成本支出,同时计算机可以方便地检索目录,让
18、读者可以足不出户借到需要的书。为了把书送到借阅人手里,联系了快递公司,初步达成协议,由他们往返借阅人和图书馆之间,把图书送出和收回。读者在网上出示和验证借书卡,找到他们需要的书,提交申请,图书管理员确认后,就会通知快递公司来取书。当然在这个过程中,读者是需要付费的。还书基本上也是同样的过程。40鱼骨图n选择问题q首先必须选择一个具体的问题或结果。在选择问题时,要保证问题是专门的、定义严谨的、范围相对较小的,并且保证所有参与人员能够切实理解分析的内容。对于上一步定义出来的每个问题都应该进行一次独立的鱼骨图分析。q先将问题定义在白板或纸上写出来,画出第一层鱼骨,如图所示:41鱼骨图n头脑风暴q就导
19、致问题的所有可能原因进行头脑风暴。如果在白板上进行,可以将大家提出的意见写在记事贴上,然后将它们贴到鱼骨图上。q注意:不能将原因和解决方案混为一谈。头脑风暴法(Brain StormingBS):一种通过集思广益、发挥团体智慧,从各种不同角度找出问题所有原因或构成要素的会议方法。BS有四大原则:严禁批评、自由奔放、多多益善、搭便车。42鱼骨图n确定原因类型q对头脑风暴的结果进行整理,确定出主要的原因类型。q经常使用的类型:人、设备、材料、环境、方法或过程。(划分出来的类型不应该超过6种)q将这些类型补充到鱼骨图上。43鱼骨图n分配原因q把头脑风暴得出的潜在原因放在鱼骨图中,并且确保每一项原因都
20、归类于适当的类别中。如果原因看起来可以放在多个类别中,就表示它是一个多重原因:这种情况多次出现,就表示这个分类有问题,应重新考虑分类是否合适。q相关的原因在组织时是可以分级整理的,可以通过提出“是什么?”、“为什么?”、“怎么样?”、“在那里?”等问题来进一步发展更细等级的原因。q注意:不要过于深究,否则陷入无尽的细节中,三层细节是图表的实际限制。44鱼骨图45鱼骨图n分析根本原因q接下来要对鱼骨图中罗列出来的所有潜在原因进行分析,考察造成某一结果的根本原因最有可能是什么,或者说哪些原因是最核心的,可以通过一些几个方面来考虑:n通过参与者之间的公开讨论来分享看法和经验;n寻找重复的原因,或与特
21、定类别有关的原因的数目;n使用检查表收集资料、制作流程图或进行客户调查,通过帕累托图分析法测试各种原因的相对强度;n一旦对一小部分主要原因达成一致意见,就可以用成对比较法进一步缩小范围;n有时只考虑那些能够影响到的因素是有好处的。46鱼骨图n小结q鱼骨图是一种因果分析工具,它在需求定义、项目管理、过程改进等活动中都是很有价值工作,可以用来:n关注原因而非表面的症状;n获取一个群体的集体知识和经验;n提供了展现导致问题发生的所有原因和全景图;n为进一步收集资料和行动提供了坚实的基础。47n定量分析n帕累托80/20原则q百分之八十的问题是百分之二十的原因所造成的。帕累托图在项目管理中主要用来找出
22、产生大多数问题的关键原因,用来解决大多数问题。n几个方面的作用q为80%的问题找到关键的20%的原因;q一目了然地显示出每个原因的相对重要程度;q有助于预防在解决了一些问题后,却使另外一些问题变得更糟的情况。帕累托图(Pareto Chart)482-8 原则*Walker Royce扩展了Barry Boehm提出的有关软件项目管理的“二八定理”,构成了现代软件管理过程框架的理论基础n 80%的工程活动是由20%的需求消耗的n 80%的软件成本是由20%的构件消耗的n 80%的缺陷是由20%的构件引起的n 80%的软件废品和返工是由20%的缺陷引起的n 80%的资源是由20%的构件消耗的n
23、80%的工程活动是通过20%的工具完成的n 80%的进展是20%的人完成的49帕累托图(Pareto Chart)503.6.3确定涉众和用户 n涉众(stakeholder),在软件开发项目中主要是指和这个项目有密切相关利益的人,他们共同感兴趣的就是需求分析阶段。这些涉众包括客户、用户、业务或需求分析员(负责收集客户需求并编写文档,以及负责客户与开发机构之间联系沟通的人)、开发人员、测试人员、用户文档编写者、项目管理者和客户管理者。51解析stakeholdern简单的项目健康评价方法q问项目经理一个这样的问题:你们的团队和哪一层客户打交道最多?n如果答案是操作层,那么很遗憾,你的项目出现延
24、误的可能性极大,几乎是难以避免的;其中原因很简单,操作层手中的筹码相对来说是很少的,可能只是几个铜板。n如果答案是中层管理人员,那么只要在项目过程中尽力,是有希望避免出现延误情况的,至少延误的比率相对较低;原因是中层手中有一定的筹码,加上人数较操作层少很多。n如果答案是高层管理人员,那么恭喜你,项目出现延误的可能性几乎是没有的;高层管理人员手握着最有分量的筹码,而且人数极少。52确定涉众的问题举例确定涉众的问题举例 53案例:在线图书借阅系统中的涉众 543.6.4 确定系统的界限 n定义系统的关键首先是要给出系统的边界。该边界把我们的系统和外部世界一分为二,换言之,系统边界确定了我们系统的内
25、涵,即它究竟包括哪些功能,可以解决哪些问题。我们可以根据确定的系统边界给出系统的环境模型。它指出了我们的系统以及其它和它交户的系统之间的关系。n绝大部分书籍推荐使用上下文关系图来确定系统范围,实际上就是 数据流图中的顶层图。55在线图书借阅系统的界限563.6.5确定解决方案的约束条件 n潜在的系统约束 57到期催还功能的约束分析 583.6.6 实例n问题描述:n一家制造和网上邮购物品公司,制造和销售家用物品和个人用品。由于公司发现效益太差的问题,采用了全质量管理(TQM)来解决问题。公司量化了非质量成本之后,怀疑生产浪费即“废品”是最主要原因。59n效益太差,找出“废品”的根本原因n鱼骨图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 获取
限制150内