1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,SRE 案例,化学制品跟踪系统,前景,“化学制品跟踪系统”可使科学家查询到化学制品仓库或供应商将提供的化学制品容器。系统可随时了解公司中每一个化学制品容器所处的位置,容器中所剩余的药品剂量,任何时候每个容器所处的位置和用法的历史记录。通过充分利用公司内部的可用化学制品,废弃极少量已使用或过期失效的化学制品,使用标准的化学制品的购买过程等将在化学制品上节省,25%开支。“化学制品跟踪系统”还能产生符合政府部门规定所要求的全部报表,包括化学制品的使用、存储和废弃等报表。,关联图,公司总是发购买化学制品的订单给化学制
2、品供应商,并从供应商那里得到装有化学制品的容器和发票,而供应商则得到支票。然而,这些过程发生在“化学制品跟踪系统”范围之外,并作为购买和进货部门日常事务的一部分。系统并不直接与供应商订货、进货、或付账。,“化学制品跟踪系统”的用户类和其特征,药剂师,药剂师将使用系统请求来自供应商和仓库的化学制品。药剂师每天多次使用系统,主要用于跟踪进出实验室的化学制品容器。药剂师需要在供应商目录中查找指定化学制品。,采购者,采购者在采购部门处理其他用户所提交的化学制品请求,他们与外部的供应商建立联系,制定并发出订单。采购者对化学制品几乎不了解,因此将需要简单的查询机制来查找供应商目录。采购者不使用系统中容器跟
3、踪这一特性。每个采购者平均每天使用系统,10次。,“化学制品跟踪系统”的用户类和其特征,化学制品仓库人员,化学制品仓库人员包括三个技师,管理着多达,500 000,种化学制品容器。他们将处理来自药剂师的请求并提供可用的容器,向供应商请求新的化学制品以及跟踪进出仓库的所有容器的流向,他们是货存清单和化学制品使用报告特性的唯一使用者。由于交易量大,化学制品仓库人员所使用的系统功能必须是自动化并且高效。,卫生和安全人员,卫生和安全人员使用系统是为了生成符合官方关于化学制品使用和处理规则的季度报表。这些报表必须提前定义,并不需要特别查询能力,当官方的规则改变时,卫生和安全管理人员可能每年多次要求变化报
4、表中的内容。报表变更优先级最高。,“化学制品跟踪系统”中产品代表者模型,四个用户类,项目总经理对应建立四个产品代表者小组以从各个渠道收集有效的需求,采购人员和卫生与安全用户类很小,他们的需求也不多所以由一个分析员来完成,“请求一种化学制品”使用实例,“请求一种化学制品”使用实例,“请求一种化学制品”使用实例,设置需求优先级,“化学制品跟踪系统”的大部分用户需求编写成文档以后,项目经理Dave和需求分析员Lori接见了两个产品代表。T代表了药剂师群体,而R,则代表了化学制品仓库人员。,“就像你们所知道的那样”,,Dave开始说:“产品代表为化学制品跟踪系统收集了许多需求,但我们不能在产品的首发版
5、中包含你们所需的全部功能。由于大部分需求来自药剂师和化学制品仓库,所以我想与你们谈一谈关于设定需求优先级的问题。”,T感到很困惑。“你为什么要设定需求优先级?它们全都很重要,否则我们不会向你们提出这些需求。”,Dave解释说:“我知道它们都很重要,但我们不能做到同时交付一个包罗万象并且具有高质量的产品。由于没有更多的可用资源,所以我们需要为下一季度末就要交付的产品确定最重要的需求。我们希望你们帮助我们把首发版中必须包括的需求与可以放入以后版本的需求区分开。”,设置需求优先级,“我知道卫生和安全办公室已向政府提交的化学制品使用和销毁的报表必须在这个季度末完成”R指出,“如果有必要的话,我们可以多
6、使用几个月化学制品仓库现行的存货清单系统。但是条形码标签和扫描功能是必须的,这比药剂师所需的可查找的供应商目录更为重要。”,T提出抗议:“我已向药剂师保证,为他们提供在线的目录查询功能,以节省他们的时间。所以目录查询从项目刚开始就必须考虑”。,分析员Lori,说:“当我与药剂师共同探讨使用实例时,有一些使用实例似乎经常执行而其它的则很少有人使用。我们可以分析全部的使用实例,并确定那些你们不会马上就用到的使用实例。如果我们可以这样做,那么是否可以推迟决定那些高优先级的使用实例?“,对于必须等待系统部分功能的实现,,T和R并没有感到很惊讶。然而他们意识到如果开发组不能在发行1.0版本时实现全部需求
7、那么最好每个人都赞成首先实现需求的子集。,设置需求优先级,设置需求优先级,数据流图-0层图,“化学制品请求单”的状态图,“一种化学制品使用”实例的对话图,需求验证,在每次获取需求的专题讨论会之后代表不同用户类的小组对渐增性软件需求规格说明进行非正式评审,立刻发现了许多错误。,在需求获取完成以后,由一个系统分析员整理出一份大约有,50,页的文档。两个分析员、一个开发人员、三个产品代表者、项目经理以及一个测试人员一起在三次长达两个小时的审查会上对软件需求规格说明进行审查。审查小组发现了,223,个错误,其中包括几十个重大缺陷。所有的审查员一致认为在审查会上所花的时间(一次一个需求),从长远目标来
8、看,节省了项目开发小组大量的时间。,软件需求规格说明的审查清单,组织和完整性,所有对其它需求的内部交叉引用是否正确?,所有需求的编写在细节上是否都一致或者合适?,需求是否能为设计提供足够的基础?,是否包括了每个需求的实现优先级?,是否定义了所有外部硬件、软件和通信接口?,是否定义了功能需求内在的算法?,软件需求规格说明中是否包括了所有客户代表或系统的需求?,是否在需求中遗漏了必要的信息?如果有的话,就把它们标记为待确定的问题。,是否记录了所有可能的错误条件所产生的系统行为?,正确性,是否有需求与其它需求相冲突或重复?,是否简明、简洁、无二义性地表达每个需求的?,是否每个需求都能通过测试、演示、
9、审查得以验证或分析?,是否每个需求都在项目的范围内?,软件需求规格说明的审查清单,是否每个需求都没有内容上和语法上的错误?,在现有的资源限制内,是否能实现所有的需求?,是否任一个特定的错误信息都具有唯一性和明确的意义?,质量属性,是否合理地确定了性能目标?,是否合理地确定了安全与保密方面的考虑?,在确定了合理的折衷情况下,是否详实地记录了其它相关的质量属性?,可跟踪性,是否每个需求都具有唯一性并且可以正确地识别它?,是否可以根据高层需求(如系统需求或使用实例)跟踪到软件功能需求?,特殊的问题,是否所有的需求都是名副其实的需求而不是设计或实现方案?,是否确定了对时间要求很高的功能并且定义了它们的
10、时间标准?,是否已经明确地阐述了国际化问题?,测试需求,业务需求,“化学制品跟踪系统”通过鼓励重复使用公司中可用的那些化学制品容器以降低购买费用。,用例,“请求一种化学制品”,它包括允许用户请求化学制品仓库中已有的化学制品的路径。,请求者通过输入化学制品的,ID号或从化学制品绘图工具导入(import)化学结构来请求一种化学制品。系统则通过向请求者提供来自化学制品仓库的一个新的或已用过的化学制品容器或者让请求者向外部供应商发送订单,从而满足请求者的要求。,测试需求,功能需求,以下是关于让用户选择可用的化学制品的一些功能,而不是向外部供应商发送订单:,如果请求化学制品仓库中的容器,系统将显示可用
11、容器的列表,用户就可以选择一个容器或要求向外部供应商订购一个新容器。,对话图,测试需求,“请求化学制品”用例的部分对话图,测试需求,测试用例,该用例有许多可能的执行路径,所以可以有许多测试用例来阐明普通过程、可选过程和例外。,以下只是一个测试用例,该测试用例是以向用户显示化学制品仓库中可用容器列表为基础的。该测试用例是从该用户任务的用例说明和对话图中派生出来的:,在,DB40对话框中,输入一个合法的化学制品ID号;化学制品仓库中有两个这种化学制品的容器。此时出现了DB50对话框,并带有两个容器号码。选择第二种容器。关闭DB50,此时容器2被加入DB70对话框中当前化学制品请求列表的底部。,测试
12、需求,测试用例,根据理解,编写诸多这样测试用例后,把每个测试用例映射到相应的功能需求上,以保证现有的需求集合可以“执行”每个测试用例,并且至少使每个测试用例覆盖每个功能需求。,下一步,用高亮度的笔跟踪对话图中每个测试用例的执行路径,描绘上面的测试用例样本是如何跟踪进入对话图的。,测试需求,测试用例,通过跟踪每个测试用例的可执行路径,可以发现不正确和遗漏的需求,并在对话图中纠正错误,精化测试用例。,例如,假设以这种方式执行完所有测试用例后,对话图中从,DB50到DB60之间标有“订购新容器”的导航线未被加亮。可能有两种解释:,该导航是一个非法的系统行为。这条线必须从对话图中移去,并且如果软件需求
13、规格说明中包含有这样过渡的需求,那么也应该移去这一需求。,该导航是合法的系统行为,但是遗漏了验证这一系统行为的测试用例。,测试需求,测试用例,例如:一个测试用例说明了用户可以采取一些措施从,DB40直接移到DB70。而对话图中没有包含这样的导航线,所以测试用例不能以现有的需求来执行。因此,又存在两种解释,要判断哪一个是对的:,从DB40到DB70的导航是一个非法的系统行为,所以测试用例是错误的。,从DB40到DB70的导航是一个合法的系统行为,则可能是对话图或可能是软件需求规格说明遗漏了用于执行测试用例的需求。,变更请求数据项,“,化学制品跟踪系统,”,跟踪能力矩阵的一部分,“,化学制品跟踪系统,”,跟踪能力矩阵的一部分,






