1、收集需求PPT课件2022-12-1226.1 引言需求阶段的目标:检查业务上下文:开发软件的原因,理解业务 描述系统需求:系统功能,约束条件(包括性能、开发成本、资源等等)2022-12-123引言系统需求分类:功能需求:系统必须完成的工作 非功能需求:需求指定的其他需求2022-12-1246.2 系统的诞生客户提供的材料:详细的文档,一般包括专用布局和目录 任务陈述,对新业务的简短描述2022-12-125系统的诞生开发人员的工作:把客户的需求文档或任务陈述转换为完整的、清晰的、可用于开发系统的陈述,采用客户能够理解的、认可的标准格式。2022-12-126案例分析Nowhere Car
2、s 任务陈述 商店将汽车的跟踪自动化了使用条形码、柜台终端和激光阅读器,这有许多优点:租赁助手的效率提高了20,汽车很少失踪,客户群很快变大(根据市场调查,其部分原因至少是专业化和效率的显著提高)2022-12-127案例分析Nowhere Cars 任务陈述 管理层认为,Internet会提供进一步提高效率、降低成本的机会。例如,现在不是打印可用汽车的目录,而可以让每个Internet冲浪人员在线浏览这些目录。对于有特权的客户,可以提供额外的服务,例如通过鼠标点击进行预约。这个领域的目标是每个商店的运营成本降低15。2022-12-128案例分析Nowhere Cars 任务陈述 在两年内,
3、使用电子商务的所有功能,通过Web浏览器提供所有的服务,在客户家中完成汽车的交付和收回,以达到虚拟租赁公司的最终目标,将未预约业务的运营成本降低到最低。2022-12-129案例分析上述内容包含的信息?公司的自动化历史;客户对日期的满意度;在线目录和预约;有特权和无特权的客户;节约成本的历史和目标;公司的最终目标2022-12-1210补充:需求工程需求工程师找出功能性需求优先排序需求跟踪用例和需求设计师找出非功能性需求2022-12-12116.3 用例用例:定义部分业务或系统的使用方式,用于描述系统功能需求内容包括:记录对业务运作方式的理解 业务需求建模 指定新软件系统应能完成的工作 系统
4、需求建模2022-12-1212用例用例开始于一个参与者(actor);之后是业务或系统,最后返回到参与者采用用例驱动,有助于找出对象、属性和操作2022-12-1213案例分析Nowhere Cars 任务陈述“会员预约汽车型号”是一个业务用例,描述了会员的预约方式。(在业务建模过程中查找业务用例,这是需求分析的第一步。业务用例可以使用已有的软件系统,也可以根本不涉及计算机)2022-12-1214案例分析Nowhere Cars 任务陈述“预约”是一个系统用例,描述了要开发的系统如何让Nowhere Cars通过Internet进行预约。(系统用例描述了新系统或替代系统要提供的一个服务)2
5、022-12-12156.4 业务说明建立业务模型是建立系统功能(用例)模型的前提条件用例可以完成业务建模,用例模型包括:参与者表(带有描述)术语表 用例(带有描述和细节)通信图(协作图,可选)活动图(可选)2022-12-12166.4.1 标识业务参与者参与者是在业务中扮演某个角色的人、部门或独立的软件系统2022-12-1217案例分析Nowhere Cars 业务参与者表 助手(员工)顾客 会员 非会员 Auk:已有系统 债务部门 法律部门2022-12-12186.4.2 编写项目术语表术语表(glossary):数据字典的现代代替品,将数据和过程进行统一存储2022-12-1219
6、案例分析Nowhere Cars术语表术术 语语定定 义义Car(业务对象)(业务对象)由商店保存的、用于出租的由商店保存的、用于出租的CarModel实例实例CarModel(业务对(业务对象)象)目录中的一个模型,可用于预约目录中的一个模型,可用于预约Customer(业务参与(业务参与者、业务对象)者、业务对象)为获得一个标准服务而付费的人为获得一个标准服务而付费的人Member(业务对象)(业务对象)其身份和信用状况已得到验证的客户,因其身份和信用状况已得到验证的客户,因此可以访问特定的服务(例如电话预约或此可以访问特定的服务(例如电话预约或通过通过Internet预约)预约)2022
7、-12-1220术语表 术语表可以记录每个术语与开发阶段之间的关系,如:业务参与者 业务对象 系统参与者 系统对象 分析对象 部署制品 设计对象 设计节点 设计层 设计包2022-12-12216.4.3 标识业务用例每个用例都是业务的一部分如何设置好的用例?常识、逻辑和经验 和客户一起工作2022-12-1222案例分析iCoot 业务用例表 B1:顾客租用汽车:顾客租用从可用汽车中选择出来的汽车 B2:会员预约汽车型号:当有该型号的汽车时,会员应得到通知 B3:非会员预约汽车型号:当有该型号的汽车时,非会员交纳了押金,就应得到通知 B4:顾客取消预约:顾客通过电话或亲自取消未结束的预约20
8、22-12-1223案例分析iCoot 业务用例表 B5:顾客交还汽车:顾客交还所租用的汽车 B6:顾客获知有某型号的汽车:当有该型号的汽车时,助手会与顾客联系 B7:报告失踪:顾客或助手发现汽车失踪 B8:顾客重新预约:超过一星期后,顾客可以重新预约2022-12-1224案例分析iCoot 业务用例表 B9:顾客访问目录:顾客在店内或在家中浏览目录 B10:顾客因没有取预约的车而接受罚款:顾客没有取预约好的车 B11:顾客取预约好的车:顾客取预约好的车 B12:顾客成为会员:顾客提供信用卡信息和地址证明,成为会员2022-12-1225案例分析iCoot 业务用例表 B13:通知顾客汽车已
9、超过租用期限:助手与顾客联系,警告顾客他租用的汽车已超过租用期限一星期 B14:顾客丢失钥匙:为丢钥匙的顾客提供备用钥匙 B15:更新会员卡:当会员卡过期时,助手与顾客联系,更新会员卡 B16:汽车不能还回来:汽车出事或坏了2022-12-1226案例分析B3:非会员预约汽车型号(Nowhere Cars)1.非会员告诉助手要预约的汽车型号2.助手在Auk中查找汽车型号3.助手请求非会员为预约交纳押金4.助手请求非会员提供驾照和电话号码5.助手检查非会员的驾照6.如果驾照没有问题,助手就会创建新的预约,并记录驾照号码、电话号码,在Auk中扫描驾照7.助手给非会员一个预约卡,其中包含唯一的预约号
10、2022-12-12276.4.4 在通信图中演示用途通信图显示了参与者和对象之间的一系列交互顺序图关注的是交互本身和交互发生的顺序2022-12-1228非会员预约汽车型号的通信图:非会员:Auk接口a:助手1:预约汽车型号2:查找汽车型号:汽车型号:预约3:获取押金,驾照4:创建预约5:确认预约2022-12-12296.4.5 在活动图中演示用例在从初始点到最终目标的过程中,活动图显示了(顺序或并行)活动之间的依赖关系2022-12-1230非会员预约汽车型号的活动图(非会员)告诉助手要预约的汽车型号(助手)请求押金和驾照(非会员)查找押金(非会员)查找驾照(助手)在Auk上查找汽车型号
11、(助手)检查押金和驾照(助手)进行预约无效有效2022-12-12316.5 开发人员的说明无论记录业务是选择使用简短的域模型、完全成熟的用例模型,还是更详细的模型,软件系统的需求都应通过用例模型来分析系统的用例模型比业务的用例模型更详细、更具说明性2022-12-1232补充:处理过程找出参与者和用例系统分析师业务模型或领域模型补充需求特征列表用例模型概况的项目词汇表2022-12-1233补充:小组成员分工系统分析师找出参与者和用例组织用例模型优先排序用例设计师详细用例用例阐释员原型化用户界面用户界面设计员2022-12-1234Ripple中系统用例模型组成要素参与者表(带有描述)用例列
12、表(带有描述)用例图(UML用例图)用例细节(包括所有相关的非功能需求)用例调查辅助需求(不符合任何用例的系统需求)用户界面草图2022-12-1235Ripple中系统用例模型组成要素改进的术语表用例的优先级2022-12-1236案例分析iCoot系统选择 是扩展Auk系统还是替代Auk系统?2022-12-12371.标识系统参与者在客户的帮助下标识和描述系统参与者需求阶段,参与者只包括直接与系统交互的人(和外部系统),而不包括更宽泛的业务环境中的参与者2022-12-1238案例分析iCoot系统参与者表顾客:使用Web浏览器访问iCoot的人会员:在一家商店提供姓名、地址和信用卡信息
13、的顾客;每个会员都有一个Internet密码和一个会员号助手:商店的一个员工,负责与会员联系,并告诉预约的进展情况2022-12-12392.标识系统用例从客户获取帮助,每个用例都必须有简短的说明2022-12-1240案例分析iCoot系统用例表U1:浏览索引:顾客浏览汽车型号的索引U2:查看结果:给顾客显示检索到的汽车型号子集U3:查看汽车型号的细节:给顾客显示检索到的汽车型号细节,例如描述和广告U4:搜索:顾客指定类别、构造和引擎规格,搜索汽车型号2022-12-1241案例分析iCoot系统用例表U5:登录:会员使用会员号和当前密码登录iCootU6:查看会员信息:会员查看iCoot存
14、储的会员信息子集,例如姓名、地址和信用卡信息U7:进行预约:会员在查看汽车型号的细节时,预约一种汽车型号U8:查看租用情况:会员查看当前租用的汽车汇总信息2022-12-1242案例分析iCoot系统用例表U9:修改密码:会员修改用于登录的密码U10:查看预约情况:会员查看还没有结束的预约汇总信息,例如日期、时间和汽车型号U11:取消预约:会员取消还没有结束的预约U12:注销:会员从iCoot中注销2022-12-1243iCoot的一个简单用例图U5:登录U6:查看会员信息U8:查看租用情况U9:修改密码U10:查看预约情况U12:注销会员U1:浏览索引U4:搜索U2:查看结果顾客U3:查看
15、汽车型号的细节U11:取消预约助手U7:进行预约2022-12-1244用例调查用例调查:说明一组用例如何组合在一起用例调查是开发人员与客户一起研究用例图时生成的叙述用例调查允许客户在没有开发人员的帮助下,也能很好地理解用例2022-12-1245案例分析iCoot用例调查 已成为会员的顾客可以登录(U5),访问额外的服务。额外的服务有进行预约(U7),取消预约(U11),检查会员信息(U6),查看已有的预约(U10),修改登录密码(U9),查看已有的租用记录(U8)和注销(U12)2022-12-1246案例分析iCoot用例调查 任何顾客都可以浏览汽车型号索引(U1),或通过搜索(U4)在
16、目录中查找汽车型号。在后一种情况下,顾客要指定他们感兴趣的类别、构造和引擎规格。无论采用哪种方式,在每次检索后,都会给客户显示匹配汽车型号的集合(U2)和基本信息,例如汽车型号的名称。然后,顾客就可以选择查看特定汽车型号的其他信息,例如描述和广告(U3)2022-12-12476.5.1 使参与者特殊化在参与者之间出现继承关系2022-12-1248案例分析iCoot带继承的系统参与者表顾客:使用Web浏览器访问iCoot的人会员:在一家商店提供姓名、地址和信用卡的顾客;每个会员都有一个Internet密码和一个会员号。(特殊化顾客)非会员:不是会员的顾客。(特殊化顾客)助手:商店的一个员工,
17、他与会员联系,告诉他们预约的进展情况2022-12-1249显示参与者之间继承关系的用例图U5:登录U6:查看会员信息U8:查看租用情况U9:修改密码U10:查看预约情况U12:注销会员U1:浏览索引U4:搜索U2:查看结果顾客U3:查看汽车型号的细节U11:取消预约助手U7:进行预约非会员2022-12-1250补充:参与者继承CustomerListProductsOrderProductsPurchaserAcceptPaymentSalesAgentCalculateCommission2022-12-12516.5.2 用例的关系用例之间的关系 特殊化关系(specialize)包含
18、(include)扩展(extend)2022-12-1252用例的特殊化表征用例之间的继承关系为了避免重新定义步骤和添加额外步骤,可以只特殊化抽象的用例抽象用例唯一的目的是组合其它用例例如:抽象用例“U13:查找汽车模型”,特殊用例“U1:浏览搜索”和“U4:搜索”2022-12-1253补充:用例的特殊化FindBookCustomerFindProductFindCD2022-12-1254用例的包含关系如果第一个用例有一些是第二个用例提供的完整步骤,则前者包含后者例如:“U1:浏览搜索”在其行为的某个地方包含“U2:查找结果”的全部步骤包含用例用于将相同的步骤提取到许多用例中,或者把大
19、的用例分解为更容易管理的模块2022-12-1255补充:用例的包含关系FindEmployeeDetailsChangeEmployeeDetailsViewEmployeeDetailsManagerDeleteEmployeeDetails2022-12-1256用例的扩展关系第一个用例给第二个用例增加步骤,称为扩展第二个用例例如:在查看结果(U2)时,顾客可以选择查看细节(U3)扩展关系用于增加可选的额外步骤2022-12-1257补充:用例的扩展关系ReturnBookBorrowBookLibrarianFindBookIssueFine2022-12-1258包含与扩展的区别在包
20、含关系中,源用例没有目的用例就不能工作;而在扩展关系中,源用例即使没有目的用例也能工作得很好2022-12-1259举例客户预定房间预定服务等候名单处理登记入住核对房间详情总台服务员离店结账2022-12-1260案例分析iCoot用例关系U1:浏览索引:顾客浏览汽车型号的索引(特殊化U13,包含U2)U2:查看结果:给顾客显示检索到的汽车型号子集(被U1和U4包含,被U3扩展)U3:查看汽车型号的细节:给顾客显示检索到的汽车型号细节,例如描述和广告(扩展U2,被U7扩展)U4:搜索:顾客指定类别、构造和引擎规格,搜索汽车型号(特殊化U13,包含U2)2022-12-1261案例分析iCoot
21、用例关系U5:登录:会员使用会员号和当前密码登录iCoot(由U6、U8、U9、U10和U12扩展)U6:查看会员信息:会员查看iCoot存储的会员信息子集,例如姓名、地址和信用卡信息(扩展U5)U7:进行预约:会员在查看汽车型号的细节时,预约一种汽车型号(扩展U3)U8:查看租用情况:会员查看当前租用的汽车汇总信息(扩展U5)2022-12-1262案例分析iCoot用例关系U9:修改密码:会员修改用于登录的密码(扩展U5)U10:查看预约情况:会员查看还没有结束的预约汇总信息,例如日期、时间和汽车型号(扩展U5,被U11扩展)U11:取消预约:会员取消还没有结束的预约(扩展U10)U12:
22、注销:会员从iCoot中注销(扩展U5)2022-12-1263案例分析iCoot用例关系U13:查找汽车型号:顾客从目录表中检索汽车型号的子集(抽象,被U1和U4一般化)2022-12-1264iCoot的最终用例图U1:浏览索引U4:搜索U2:查看结果U3:查看汽车型号的细节助手非会员顾客是已登录的会员U6:查看会员信息U8:查看租用情况U9:修改密码U10:查看预约情况U12:注销U11:取消预约U7:进行预约顾客U13:查看汽车型号会员U5:登录2022-12-1265案例分析iCoot用例调查(完整)任何顾客都可以浏览汽车型号索引(U1),或通过搜索(U4)在目录中查找汽车型号。在后
23、一种情况下,顾客要指定他们感兴趣的类别、构造和引擎规格。无论采用哪种方式,在每次检索后,都会给客户显示匹配汽车型号的集合(U2)和基本信息,例如汽车型号的名称。然后,顾客就可以选择查看特定汽车型号的其他信息,例如描述和广告(U3)2022-12-1266案例分析iCoot用例调查(完整)顾客有两种情况:会员和非会员。已成为会员的顾客可以登录(U5),访问额外的服务。额外的服务有进行预约(U7),取消预约(U11),检查会员信息(U6),查看已有的预约(U10),修改登录密码(U9),查看已有的租用记录(U8)和注销(U12)。2022-12-1267案例分析iCoot用例调查(完整)为了预约汽
24、车型号,会员必须查看其细节(非会员不能预约,即使他们在查看细节也不行)。要取消预约,会员必须查看已有的预约。2022-12-12686.5.3 系统用例的细节UML没有指定应包含哪些用例细节或如何安排它们对于Ripple,系统用例的细节包括 用例号和标题 用例是否为抽象的 与其它用例的关系 前提条件(在执行用例之前必须满足的条件)步骤(假定满足了前提条件)2022-12-1269系统用例的细节-后置条件(在完成用例后保证满足的条件)-异常路径和在这些情况下应做什么-与这个用例相关的非功能需求2022-12-1270系统用例细节的格式标号,标题(关系)前提条件步骤后置条件异常路径非功能需求202
25、2-12-1271举例1U1:浏览索引(特殊化U13,包含U2)前提条件:无1.顾客选择一个索引标题2.顾客选择查看选中索引标题的汽车型号3.包含U2后置条件:无2022-12-1272举例2U3:查看汽车型号的细节(扩展U2,被U7扩展)前提条件:无1.顾客选择一个匹配的汽车型号2.顾客请求选中汽车型号的细节3.iCoot显示选中汽车型号的细节(构造、引擎规格、价格、描述、广告和海报)4.如果顾客是一个已登录的会员,就用U7扩展后置条件:iCoot显示选中汽车的细节非功能需求:r1.广告应使用流协议,而不应要求下载2022-12-1273举例3U5:登录(由U6、U8、U9、U10和U12扩
26、展)前提条件:会员从本商店获得一个密码1.会员输入会员号2.会员输入密码3.iCoot强制会员必须登录,所以会员可以选择到盗取已有的会话4.会员选择登录5.用U6、U8、U9、U10和U12扩展后置条件:会员登录异常路径:a1:如果会员和密码组合不正确,iCoot会通知会员,登录有误a2:如果会员和密码组合正确,但会员已经登录,其没有选择盗取会话,iCoot会通知会员2022-12-1274举例4U13:查看汽车型号(抽象,有U1和U4特殊化)前提条件:无后置条件:给顾客显示检索到的汽车型号汇总信息2022-12-12756.5.4 前提条件、后置条件和继承1.当一个用例特殊化另一个用例时,会
27、继承父用例的前提条件,作为起点。子用例添加的新前提条件只能弱化继承的前提条件(使用or合并)分析:如果父用例的前提条件是“无”,其子用例的前提条件也必须是“无”2022-12-1276分析2.对于后置条件,子用例的起点是父用例的后置条件。子用例添加的新后置条件只能强化继承的后置条件(使用and合并)分析:如果父用例的后置条件是“无”,子用例可以指定需要的后置条件2022-12-1277前提条件、后置条件和继承3.子用例添加的前提条件和后置条件对父用例的前提条件和后置条件没有影响。分析:子不能影响父的行为2022-12-12786.5.5 辅助需求在大多数情况下,可以把非功能需求关联到特定的用例
28、上例如:非功能需求“广告应使用流协议显示,而不需下载”,用于保证用户看到广告2022-12-1279案例分析辅助需求S1:客户小程序必须运行在JDK 1.2(或更高版本)上S2:iCoot必须能处理100,000种汽车型号S3:iCoot必须能同时给一百万个顾客服务,且性能没有明显的降低2022-12-12806.5.6 用户界面草案界面可以在早期阶段与客户一起讨论,并把结果记录为用户界面草案(user interface sketches)这些草案应看做是基本指南,而不是专业的GUI设计,它们有助于标识和分解能根据个人喜欢来实现的功能2022-12-1281补充:网站界面设计草图2022-1
29、2-12826.5.7 系统用例的优先级按照实现的优先级给系统需求分级,尤其是在递增开发过程中,就更应分级在用例建模过程中,通过用例分级,表示其紧急程度优先级和紧急程度有助于规划其他开发过程和进一步的递增开发过程2022-12-1283系统用例的优先级有效的打分技术交通灯:(绿色)该用例必须在当前的递增开发过程中实现;否则就意味着项目没有达到其最低目标该用例在当前的递增开发过程中是可选的,只有在完成了绿色的用例之后才能尝试完成它(用于增加客户印象)。未在交付日期之前完成的黄色用例必须完全舍弃2022-12-1284系统用例的优先级(红色)即使时间允许,也不能在当前的递增开发过程中实现;它们在当
30、前的递增开发过程之外,一般不允许完成2022-12-1285系统用例的优先级用例的优先级不仅取决于期望,还取决于当前的递增开发过程中为各个用例投入的系统体系结构和编码工作量2022-12-1286系统用例的优先级 如果在递增开发过程中的最后还有时间(完成绿色用例和所有的黄色用例),就应:检查项目的状态 完成下一个递增开发过程的规划(例如,对未完成的用例再次分级)做一些无关的工作 开一个办公室Party.2022-12-1287案例分析iCoot用例的优先级绿色:U1:浏览索引U4:搜索U2:查看结果U3:查看汽车型号的细节U5:登录:U12:注销U6:查看会员信息U7:进行预约U10:查看预约
31、情况2022-12-1288案例分析iCoot用例的优先级红色:U11:取消预约U8:查看租用情况U9:修改密码2022-12-1289系统用例的优先级在完成业务建模之后,交通灯用于开发的其他阶段(绿色)该组中的用例应完成系统需求、分析、系统设计、子系统设计、规范、实现和测试该组中的用例应完成系统需求,分析和系统设计应完成或接近完成,子系统设计、规范、实现和测试是可选的2022-12-1290系统用例的优先级(红色)该组中的用例应完成系统需求,分析是可选的,系统设计应支持这些用例,自系统设计、规范、实现和测试不应完成 注意:在螺旋式、迭代式和递增过程中,“完成”是相对的2022-12-12916.5 小结 在编码开始之前,需求阶段应指功能需求和非功能需求 使用高级业务用例给业务上下文和系统功能建模,并标识参与者 用完整的用例模型给系统需求建模,完整的用例包括用例、用例图、辅助需求、用户界面草案、用例优先级和紧急程度。在这个阶段,通信图和活地图是可选的,但术语表是必须有的