ch9 软件工程案例分析fuh.pptx
案例分析案例分析案例分析案例分析第第第第 9 9 章章章章一、一、银行网络系统银行网络系统银行网络系统银行网络系统ATMATMATMATM二、医院病房监护系统二、医院病房监护系统二、医院病房监护系统二、医院病房监护系统三、会议管理系统三、会议管理系统三、会议管理系统三、会议管理系统案案 例例 采用OMT方法对银行网络系统ATM(AutoTradeMachine)进行分析和设计。一、问题的陈述一、问题的陈述一、问题的陈述一、问题的陈述银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。图给出了银行网络系统的示意图。银行网络系统银行网络系统银行网络系统银行网络系统ATM(Auto Trade Machine)ATM(Auto Trade Machine)自动出纳机自动出纳机自动出纳机自动出纳机自动出纳机自动出纳机出纳站出纳站分理处分理处计算机计算机分理处分理处计算机计算机出纳站出纳站帐户帐户帐户帐户图1银行网络系统的示意图用户用户分行计算机分行计算机退出退出首页首页下页下页末页末页案例一案例一 二、二、类的识别方法类的识别方法常用的识别类的方法有:名词识别法、系统实体识别法、使用重用、从用例中识别类等。、名词识别法、名词识别法识别问题域中的实体,实体的描述通常用名词、名词短语、名词性代词的形式出现。用指定语言对系统进行描述;从系统描述中标识名词、名词短语、名词性代词;识别确定(取、舍)类。、系统实体识别法、系统实体识别法不关心系统的运作流程及实体之间的通信状态,而只考虑系统中的人员、组织、地点、表格、报告等实体,经过分析将他们识别为类(或对象)。被标识的实体有:系统需要存储、分析、处理的信息实体、系统内部需要处理的设备、与系统交互的外部系统、系统相关人员、系统的组织实体。在确定类时,常使用两类技术:在确定类时,常使用两类技术:分解技术分解技术将整体类和组合类分解。可控制单个类的规模。抽象技术抽象技术根据一些类的相似性建立抽象类,并建立抽象类与这些类之间的继承关系。抽象类实现了系统内部的重用,很好地控制了复杂性,并为所有子类定义了一个公共的界面,使设计局部化,提高系统的可修改性和可维护性。退出退出上页上页首页首页下页下页末页末页 三、建立对象模型三、建立对象模型三、建立对象模型三、建立对象模型根据下述原则进一步确定类:去掉冗余类:如两个类表述同一信息,应保留最具有描述能力的类,如“用户”与“顾客”是重复的描述,由于“顾客”更具有描述性,故保留它,删除“用户”。去掉不相干的类:删除与问题无关或关系不大的类,如“费用”。删除模糊的类:有些初始类边界定义不确切,或范围太广,应该删除。如“系统”、“安全措施”、“记录保管”、“银行网络”。删除那些性质独立性不强的,而应该是类“属性”的候选类:如“帐户数据”、“收据”、“现金”、“事务数据”。所描述的操作不适宜作为对象类,并被其自身所操纵,所描述的只是实现过程中的暂时的对象,应删去。如“软件”,“访问”。(一)确定类(一)确定类采用名词识别法:检查问题陈述中的所有名词,得到初始类:软件银行网络分行计算机系统分行出纳站分理处分理处计算机自动出纳机出纳员帐户数据帐户现金卡事务数据用户顾客收据记录保管 事务费用 安全措施访问现金最终确定的类为:分行计算机分行出纳站出纳员分理处分理处计算机自动出纳机帐户现金卡事务顾客退出退出上页上页首页首页下页下页末页末页 (二)为每个建模实体准备数据词典二)为每个建模实体准备数据词典 描述模板描述模板对类进行精确描述,如系统中类的范围、成员、方法的限制等。(三)确定关联(三)确定关联两个或多个类之间的相互依赖关系就是关联,实现关联的方式有多种。关联通常用描述性动词和动词词组表示。可以从问题陈述中抽去所有可能的关联表述,在银行网络系统示例中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。但在陈述中,有些动词词组表述的关联是不明显的,或在问题陈述中是找不到的,还有一些关联与客观世界或人的假设有关,必须同用户一起确定这种关联。即关联通常由以下方面确定:、银行网络系统问题陈述中抽取可能的关联(动词词组)、隐含的动词词组、基于问题域的知识、去掉不必要和不正确的关联三、建立对象模型三、建立对象模型三、建立对象模型三、建立对象模型退出退出上页上页首页首页下页下页末页末页 、银行网络系统问题陈述中的关联、银行网络系统问题陈述中的关联银行网络包括出纳站和自动出纳机。分行共享自动出纳机分理处提供分理处计算机分理处计算机保存帐户分理处计算机处理帐户支付事务分理处拥有出纳站出纳站与分行计算机通信出纳员为帐户录入事务自动出纳机接受现金卡自动出纳机与用户接口自动出纳机发放现金自动出纳机打印收据系统处理并发访问分理处提供软件费用分摊给分理处、基于问题域的知识、基于问题域的知识 分理处雇佣的出纳员 现金卡访问帐户、隐含的动词词组、隐含的动词词组分行由分理处组成分理处拥有帐户分行拥有分行计算机系统提供记录保管系统提供安全顾客有现金卡(三)确定关联(三)确定关联退出退出上页上页首页首页下页下页末页末页 、去掉不必要和不正确的关联、去掉不必要和不正确的关联使用下列标准去掉不必要和不正确的关联:(1)若某个类已被删除,那么与它有关的关联也必须删除或者用其他类来重新表述。在示例中,删除了“银行网络”,相关的关联也要删除。()不相干的关联或实现阶段的关联。删除所有问题域之外的关联或涉及实现结构中的关联,如“系统处理并发访问”就是一种实现的概念。()动作。关联应描述应用域的结构性质而不是瞬时事件,因此应删除“自动出纳机接受现金卡”,“自动出纳机与用户接口”等。()派生关联,省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。银行网络系统的初步对象图如图所示,其中含有关联。(三)确定关联(三)确定关联退出退出上页上页首页首页下页下页末页末页 图初始对象图建立对象模型建立对象模型图2银行网络系统的初始对象类图分行分行分理处分理处帐户帐户顾客顾客分行计算机分行计算机自动出纳机自动出纳机远程事务远程事务分理处计算机分理处计算机出纳员出纳员现金卡现金卡出纳站出纳站出纳事务出纳事务通通信信通通信信所所有有所所有有所所有有雇雇佣佣涉涉及及涉涉及及访访问问认认可可有有有有拥有拥有组成组成录入录入由由录录入入录入录入退出退出上页上页首页首页下页下页末页末页 (四)确定类属性(四)确定类属性属性通常用修饰性的名词词组来表示。属性一般不可能在问题陈述中完全表述出来,应分析应用领域,并考虑最主要的属性。只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性;找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。按下列标准删除不必要的和不正确的属性:(1)限定词:若属性值固定下来后,能减少关联的重数,则可考虑把该属性重新表述为一个限定词。如银行码、站代码及雇员号等是限定词,不作为属性。(2)内部值:若属性描述了对象的非公开的内部状态,则应从对象模型中删除该属性。(3)细化:在分析阶段应忽略那些不可能对大多数操作有影响的属性。图给出了银行网络系统对象模型的部分属性。退出退出上页上页首页首页下页下页末页末页 确定类属性确定类属性确定类属性确定类属性退出退出上页上页首页首页下页下页末页末页图3银行网络系统的部分属性自动出纳机自动出纳机分发现金分发现金远程事务远程事务种类种类,日期日期,时间时间,数量数量顾客顾客名字名字地址地址现金卡现金卡密码密码雇员号雇员号站代码站代码分理处分理处名字名字帐户号帐户号卡片码卡片码银行码银行码分理处计算机分理处计算机帐户帐户余额、类型余额、类型贷款限定贷款限定出纳员出纳员名字名字出纳事务出纳事务出纳站出纳站银行码银行码分行分行分行计算机分行计算机银行码银行码站代码站代码 (五)使用继承来细化类(五)使用继承来细化类使用继承来共享公共结构,以此来重新组织类:、自底而上、自底而上将现有类的共性一般化为父类。找出具有相同属性、关联、操作的类,来发现继承,例如:“出纳事务”和“远程事务”其属性与主要操作是是类似的,则将它们的共性一般化,得到父类“事务”。、自顶而下、自顶而下将现有类细化为更具体的子类。若假设的具体化与现有的类发生冲突,则说明该类结构不恰当,当同一关联名多次出现,且意义也相同时,应尽量具体化为相联系的类。例如“事务”从“出纳站”和“自动出纳机”进入,“录入站”就是“出纳站”和“自动出纳机”的一般化。图给出了加入继承后银行网络系统的对象模型。退出退出上页上页首页首页下页下页末页末页图4使用继承来细化类使用继承来细化类使用继承来细化类使用继承来细化类退出退出上页上页首页首页下页下页末页末页图4银行网络系统的对象模型银行码银行码出纳站出纳站录入站录入站远程事务远程事务帐户帐户余额、类型余额、类型贷款限定贷款限定顾客顾客名字名字地址地址出纳员出纳员名字名字现金卡现金卡密码密码事务事务种类种类,日期日期,时间时间,数量数量分行计算机分行计算机银行码银行码站代码站代码银行码银行码分行分行自动出纳机自动出纳机分发现金分发现金出纳事务出纳事务雇雇员员号号站站代代码码分理处分理处名字名字帐户号帐户号卡片码卡片码银行码银行码分理处计算机分理处计算机 (六)完善对象模型(六)完善对象模型在软件开发的全过程中,需要不断地完善对象模型。可以从以下几方面考虑:、检查是否有缺少的对象、检查是否有缺少的对象如果一个类中,存在毫无关系的属性和操作,则应该分解这个类。一般化体系不清楚,可分离为两个类。存在名称及目的相同的冗余关联,则通过一般化创建一个父类,并组织关联。、查找多余的类、查找多余的类若类中缺少属性、操作和关联,删除该类。、查找缺少的关联、查找缺少的关联、系统的改进、系统的改进现金卡有多个独立的特性,分解为卡片权限和现金卡。卡片权限是银行用来鉴别用户访问权限的卡片,表示一个或多个用户帐户的访问权限;各个卡片权限对象中可能具有好几个现金卡,每张都带有安全码、卡片码,它们附在现金卡上,表示银行的卡片权限。现金卡是自动出纳机得到标识码的数据卡片,它也是银行代码和现金卡代码的数据载体。为了“事务”与“帐户”之间的传输描述具有一般性,增加“更新”。因为一般在每个帐户中,一个“事务”包括一个或多个“更新”,一个“更新”是对帐户的一个动作,它们是取款、存款、查询之一。即事务由若干更新组成,更多涉及到帐户。由于“分理处”与“分理处计算机”之间的区别不影响分析,可将“分理处计算机”并入“分理处”。同理,将“分行计算机”并入“分行”。以上改进如图所示。退出退出上页上页首页首页下页下页末页末页 图5完善对象模型完善对象模型完善对象模型完善对象模型退出退出上页上页首页首页下页下页末页末页图5修改后的对象模型录入站录入站远程事务远程事务现金卡现金卡银行名、卡片码银行名、卡片码安全号安全号出纳员事务出纳员事务出纳员出纳员名字名字出纳站出纳站分行分行银行码银行码站代码站代码帐户帐户余额、类型余额、类型贷款限定贷款限定顾客顾客名字名字地址地址自动出纳机自动出纳机分发现金分发现金事务事务种类、日期、时间、数量种类、日期、时间、数量卡片权限卡片权限密码、限制密码、限制更新更新数量、类型数量、类型雇雇员员号号站站代代码码分理处分理处名字名字帐户号帐户号卡片码卡片码录入录入组成组成拥拥有有拥拥有有雇雇用用访问访问标识标识发行发行被被录录入入开开始始涉涉及及维持维持有有有有 四、四、四、四、建立动态模型建立动态模型建立动态模型建立动态模型动态分析从寻找外部可见的模拟和响应事件开始,确定各对象的可能事件的顺序,在分析阶段不考虑算法的执行,它是实现模型的一部分。通常动态模型有:事件跟踪表、状态图。建立动态模型的步骤分为步:、准备典型的对话脚本、准备典型的对话脚本脚本是事件序列,每当系统中的对象与外部用户发生互换信息时,就产生一个事件,所互换的信息值就是该事件的参数。对于各事件,应确定触发事件的动作对象和该事件的参数。包括“正常脚本”、“例外脚本”,自动出纳机与用户交互的正常的脚本如下所示:自动出纳机请求用户插入卡片;用户插入现金卡。自动出纳机接受卡片并读出它的卡号。自动出纳机要求密码,用户键入密码“4011”。自动出纳机与分行确认卡号和密码;分理处检查它并通知承兑的自动出纳机。自动出纳机要求选择事务类型(取款、存款、转户及查询),用户选择取款。自动出纳机要求现金数量;用户输入¥100。自动出纳机要求分行处理事务;分行把要求转给分理处,确认事务成功。自动出纳机分发现金并且要求用户取现金;用户取现金。自动出纳机提示用户是否想继续;用户指出不继续。自动出纳机打印收据,退出卡,并请求用户取出它们;用户拿走收据和卡。自动出纳机请求用户插入。退出退出上页上页首页首页下页下页末页末页 自动出纳机与用户交互的例外的脚本如下所示:自动出纳机请求用户插入卡;用户插入现金卡。自动出纳机接受卡并读它的卡号。自动出纳机要求密码;用户键入:9999:。自动出纳机与分行确认卡号和密码,在咨询分理处后拒绝它。自动出纳机指示密码错并要求重新键入;用户键入:4011:,分行确认成功。自动出纳机请求用户选择事务类型;用户选择取款。自动出纳机请求键入现金数量;用户改变选择并键入“CANCEL”(取消)。自动出纳机退出卡并且请求用户拿走卡;用户取出卡。自动出纳机请求用户插入卡。、确定事件、确定事件根据脚本确定所有的外部事件,事件包括:发送者、接收者、外设信号、输入、中断、转换和动作等。使用脚本可以发现正常事件,但不要遗漏条件和异常事件。、画出事件跟踪表、画出事件跟踪表 把脚本表示成一个事件跟踪表,即不同对象间的事件排序表,图给出了银行网络系统的事件跟踪表。图7 给出了事件流图,它给出类之间的所有事件。事件流图是对象图的一个动态对照,对象图中路径反映了可能的信息流,而事件流图反映了可能的控制流。退出退出上页上页首页首页下页下页末页末页退出退出上页上页首页首页下页下页末页末页 图6银行网络系统的事件追综图用户用户自动出纳机自动出纳机分行分行分理处分理处确认帐号确认帐号插入卡插入卡要求密码要求密码输入密码输入密码要求类型要求类型输入类型输入类型要求数量要求数量输入数量输入数量分发现金分发现金要求取现金要求取现金取现金取现金提示继续提示继续终止终止打印收椐打印收椐退出卡退出卡要求取卡要求取卡取卡取卡显示屏显示屏确认银行卡确认银行卡银行帐户正确银行帐户正确处理银行事务处理银行事务银行事务成功银行事务成功帐户正确帐户正确处理事务处理事务事务成功事务成功 图7系统的事件图自动出纳机的事件流图自动出纳机的事件流图退出退出上页上页首页首页下页下页末页末页图7银行网络系统的事件图用户用户分理处分理处自动出纳机自动出纳机分行分行确认卡及银行,处理银行事务确认卡及银行,处理银行事务分理处事务成功、失败,分理处帐户正确分理处事务成功、失败,分理处帐户正确事事务务成成功功、事事务务失失败败、帐帐户户正正确确、不不正正确确帐帐户户、密码、银行代码密码、银行代码插入卡,输入密码,类型,取现金,取卡插入卡,输入密码,类型,取现金,取卡不显示主屏可读卡不显示主屏可读卡,要求密码、类型、数量要求密码、类型、数量,取消取消信息,分发现金,要求继续,不正确帐户信息信息,分发现金,要求继续,不正确帐户信息确认帐户确认帐户处理事务处理事务、构造状态图、构造状态图对各对象类建立状态图,反映对象接收和发送的事件,每个脚本或事件跟踪表都对应于状态图中一条路径。在银行网络系统示例中,自动出纳机、出纳站、分行和分理处对象都是动作对象。用来互换事件,而现金卡、事务和帐户都是被动对象,不交换事件,顾客和出纳员都是动作对象,它们同录入站的交互作用已经表示出来了。但顾客和出纳员对象都是系统外部的因素,不在系统内部实现。图给出了自动出纳机的状态图,图给出了“分行”类的状态图,图给出了“分理处”类的状态图。图8自动出纳机类的状态图为重要的类建立状态图为重要的类建立状态图退出退出上页上页首页首页下页下页末页末页图8“自动出纳机”类的状态图检查检查do:要求密码要求密码核对核对do:确认帐户确认帐户选择选择do:要求类型要求类型输数据输数据do:要求数量要求数量开始开始do:显示屏显示屏插插入入插入插入密码密码帐户帐户正确正确输入输入类型类型取取卡卡片片不可读不可读do:不可读卡信息不可读卡信息取消取消do:取消信息取消信息帐户错误帐户错误do:帐户错误信息帐户错误信息失败失败do:失败信息失败信息取取消消取取消消插插入入卡卡卡片退出卡片退出do:退出卡退出卡,取卡片取卡片结束结束do:打印收据打印收据继续否继续否do:请求继续请求继续发现金发现金do:请求继续请求继续事物事物do:处理事务处理事务事务事务成功成功取现金取现金终终止止取取消消输输入入事事务务帐帐户户错错取消取消取取消消密码错密码错事事务务失失败败等等秒秒图9分行类的状态图退出退出末页末页 图9“分行”类的状态图do:处理处理分理处事务分理处事务do:确认确认分理处代码分理处代码do:确认确认卡卡正确代码正确代码分理处事务成功事务成功分理处事务成功事务成功处理事务处理事务确认帐户确认帐户错误代码错的分理处代码错误代码错的分理处代码错的分理处帐户错的分理处帐户 错的帐户错的帐户错的分理处帐户错的分理处帐户 错的密码错的密码分理处密码分理处密码 帐户帐户分理处事务失败事务失败分理处事务失败事务失败上页上页首页首页下页下页do:更新更新帐户帐户do:确认确认卡片号卡片号do:确认确认密码密码有效有效成功分理处事务成功成功分理处事务成功处理分理处事务处理分理处事务确认分理处与卡片确认分理处与卡片无效错的分理处帐户无效错的分理处帐户无效错的分理处密码无效错的分理处密码 有效有效 分理处帐户分理处帐户失败分理处事务失败失败分理处事务失败图10“分理处”类的状态图 五、五、建立功能模型建立功能模型功能模型描述了值之间的依赖关系,通常用分层的数据流图描述。数据流图有助于表示功能依赖关系,其中的处理对应于状态图的活动和动作,其中的数据流对应于对象图中的对象或属性。建立功能模型的步骤是:、确定输入、输出值、确定输入、输出值先列出输入、输出值,输入输出值是系统与外部世界之间的事件的参数。检测问题陈述,从中找出遗漏的所有输入输出值。由于所有系统与外部世界之间的交互都经过自动出纳机,因而所有输入输出值都是自动出纳机事件的参数。图给出了自动出纳机的输入输出值。退出退出上页上页首页首页下页下页末页末页图11自动出纳机的输入输出值现金卡现金卡用户用户自动出纳机自动出纳机银行码银行码卡片码卡片码帐户类型帐户类型事务类型事务类型密码密码现金现金收据收据信息信息 图12自动出纳机顶层数据流图自动出纳机顶层数据流图2 2、建立数据流图、建立数据流图退出退出上页上页首页首页下页下页末页末页数据流图说明输出值是怎样从输入值 得来的,数据流图通常按层次组织。最顶层由单个处理组成,也可由收集输入、计算值及生成结果的一个综合处理构成。图给出自动出纳机顶层数据流图。将顶层图中的处理扩展成更低层次的数据流图,如果第二层次图中的处理仍包含一些可细化的处理,它们还可继续扩展,图13是图12中“执行事务”处理的扩展。现金卡现金卡用户用户读输入读输入执行事务执行事务产生输出产生输出帐户帐户结算结算银行码银行码 卡码卡码密码密码数量数量事务类型事务类型现金现金收据收据信息信息帐户类型帐户类型图13自动出纳机“执行事务”数据流图“执行事务执行事务执行事务执行事务”加工的分解加工的分解加工的分解加工的分解退出退出上页上页首页首页下页下页末页末页图13自动出纳机“执行事务”数据流图更新帐户更新帐户选择帐户选择帐户确认密码确认密码选择卡选择卡选择分理处选择分理处分行分行银行码银行码银行码银行码卡码卡码无效卡码无效卡码不正确密码不正确密码卡授权密码卡授权密码密码密码帐户类型帐户类型帐户帐户不正确帐户不正确帐户无效事务无效事务现金、收据现金、收据数量、事务类型数量、事务类型帐户帐户不正确的银行码不正确的银行码 3、描述处理、描述处理退出退出上页上页首页首页下页下页末页末页当数据流图已细化到一定程度后,对各处理进行描述,描述方法用自然语言、伪码及判定树等,描述可以是说明的或过程的。说明性描述确定了输入、输出值之间的关系。说明性描述优于过程性描述,因为它隐含实现的考虑。过程性描述确定一个算法来实现处理功能,算法只是用来确定处理干什么。过程性描述实现起来较为容易。下面给出“更新帐户”处理的描述:IF取款数目超过当前帐户结算,退出事务,不发现金IF取款数目不超过当前帐户结算,记帐并分发要求的现金IF事务是存款,建立帐户并无现金分发IF事务是状态请求,无现金分发在任何情况收据显示自动出纳机编号、日期、时间、帐户编号,事务类型,数量(若有)以及新的结算。监视监视病情病情更新病历更新病历产生产生病情报告病情报告一、问题的描述一、问题的描述一、问题的描述一、问题的描述在医院的病房里,将病症监视器安置在每个病床,对病人进行监护。监视器将病人的病症信号(组合)实时地传送到中央监护系统进行分析处理。在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异常时,系统会立即自动报警,并打印病情报告和更新病历。系统根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。退出退出下页下页末页末页病房中央值班室医院病房监护系统医院病房监护系统案例二案例二二、简单的需求分析说明二、简单的需求分析说明二、简单的需求分析说明二、简单的需求分析说明系统名称:医院病房监护系统根据分析系统主要实现以下功能:1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。2、中央监护系统将病人的病症信号与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。3、当病症信号异常时,系统自动更新病历并打印病情报告。4、值班护士可以查看病情报告并进行打印。5、医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。6、系统定期自动更新病历。三、用三、用三、用三、用UMLUML的静态建模机制定义并描述本系统的静态结构的静态建模机制定义并描述本系统的静态结构的静态建模机制定义并描述本系统的静态结构的静态建模机制定义并描述本系统的静态结构(一)建立系统的用例图(一)建立系统的用例图通过以下六个问题识别角色(1)谁使用系统的主要功能?(2)谁需要系统的支持以完成日常工作任务?(3)谁负责维护,管理并保持系统正常运行?(4)系统需要应付(或处理)哪些硬设备?(5)系统需要和哪些外部系统交互?(6)谁(或什么)对系统运行产生的结果(值)感兴趣?退出退出上页上页首页首页下页下页末页末页需求分析需求分析通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。角色描述模板角色:病人角色职责:提供病症信号角色职责识别:负责生成、实时提供各种病症信号。角色:值班护士角色职责:负责监视病人的病情变化角色职责识别:(1)使用系统主要功能(2)对系统运行结果感兴趣角色:标准病症信号库角色职责:负责向系统提供病症信号的正常值角色职责识别:(1)负责保持系统正常运行(2)与系统交互角色:医生角色职责:对病人负责,负责处理病情的变化角色职责识别:(1)需要系统支持以完成其日常工作(2)对系统运行结果感兴趣通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:退出退出上页上页首页首页下页下页末页末页提供标准病症信号病历管理病人标准病症信号库医生值班护士病症监护病情报告管理中央监护使用使用使用角色描述角色描述将用例细化,可以得到分解的用例:1 1、中央监护、中央监护、中央监护、中央监护分解为:a 分解信号分解信号将从病症监护器传送来的组合病症信号分解为系统可以处理的信号。b 比较信号比较信号将病人的病症信号与标准信号比较。c 报警报警如果病症信号发生异常(即高于峰值),发出报警信号。d数据格式化数据格式化将处理后的数据格式化以便写入病历库。2 2、病症监护、病症监护、病症监护、病症监护分解为:e 信号采集信号采集采集病人的病症信号。f 模数转化模数转化将采集来的模拟信号转化为数字信号。g 信号数据组合信号数据组合将采集到的脉搏,血压等信号数据组合为一组信号数据。h 采样频率改变采样频率改变根据病人的情况改变监视器采样频率。3 3、提供标准病症信号提供标准病症信号提供标准病症信号提供标准病症信号 i(此用例不分解)4 4、病历管理、病历管理、病历管理、病历管理分解为:j 生成病历生成病历k 查看病历查看病历l 更新病历更新病历m 打印病历打印病历5 5、病情报告、病情报告、病情报告、病情报告分解为:n 显示病情报告显示病情报告在显示器上显示病情o 打印病情报告打印病情报告在打印机打印病情报告退出退出上页上页首页首页下页下页末页末页用例细化用例细化给出细化的用例图给出细化的用例图给出细化的用例图给出细化的用例图退出退出上页上页首页首页下页下页末页末页病人模数转化数据格式化值班护士报警信号采集比较信号标准病症信号库医生信号数据组合采样频率改变提供标准病症信号生成病历查看病历更新病历打印病历显示病情报告打印病情报告分解信号ExtendExtendExtenduseuseuseuseuseuseuseuse细化的用例图细化的用例图(二)识别系统的类(二)识别系统的类(二)识别系统的类(二)识别系统的类通过名词识别法和系统实体识别法等方法可以识别出系统的十二个类,以下用类图这种简单明了的方法分别表示出类的名称,属性,操作。见下图:医生用户名密码查看病情报告()要求打印病情报告()查看病历()要求打印病历()病人姓名性别年龄病症提供病症信号()病症监视器采集频率病症信号格式化信号数据()采集信号()信号组合()报警信号声音灯光文字报警()数模转化()病历库类型大小容量生成病历()更新病历()查看病历()打印病历()病人病症信号脉搏血压体温生成病症信号()病历格式病人基本情况打印时间生成病历()查看病历()打印病历()标准病症信号脉搏血压体温生成标准信号()用户名密码查看病情报告()打印病情报告()值班护士类型大小容量提供标准信号()标准病症信号库标题格式生成病情报告()查看病情报告()打印病情报告()病情报告输入输出分解信号()比较信号()报警()数据格式化()中央监护系统退出退出上页上页首页首页下页下页末页末页类的识别类的识别再进一步在类图中标明类之间的关系:退出退出上页上页首页首页下页下页末页末页*1111111111111111值班护士医生病人病症监视病人病症信号病历病历库病情报告报警信号中央监护系统标准病症信号标准病症信号库111报警监视系统类图系统类图(三)用包图和配置图描述系统的体系结构(三)用包图和配置图描述系统的体系结构(三)用包图和配置图描述系统的体系结构(三)用包图和配置图描述系统的体系结构通过一定的分组机制得到以下包图:用户医生值班护士病人病历管理病历用户界面病情报告局部监视报警信号病症监视器中央监护系统病人病症信号标准病症信号数据库病历库标准病症信号库用户层用户界面层应用层数据库层退出退出上页上页首页首页下页下页末页末页包图包图接下来用配置图进一步描述系统的网络结构四、用四、用四、用四、用UMLUML的动态建模机制定义并描述系统结构元素的动态特性及行为的动态建模机制定义并描述系统结构元素的动态特性及行为的动态建模机制定义并描述系统结构元素的动态特性及行为的动态建模机制定义并描述系统结构元素的动态特性及行为(一)下面给出两个关系很紧密的状态图(一)下面给出两个关系很紧密的状态图(一)下面给出两个关系很紧密的状态图(一)下面给出两个关系很紧密的状态图退出退出上页上页首页首页下页下页末页末页病症监视器的状态图信号采集模数转化数据信号组合发送信号数据局部显示开解信号开解信号数据比较数据信号异常比较数据信号正常格式化的数据报警更新病历更新日期到发生病情异常发送报警标志数据格式化数据格式化打印请求中央监护系统的状态图打印病情报告数据库服务器标准病症信号库病历库TCP/IPTCP/IP应用服务器中央监护系统局部监视客户端用户界面状态图与配置图状态图与配置图(二)用时序图和合作图描述病人病情异常时系统的情况,其他情况从略(二)用时序图和合作图描述病人病情异常时系统的情况,其他情况从略(二)用时序图和合作图描述病人病情异常时系统的情况,其他情况从略(二)用时序图和合作图描述病人病情异常时系统的情况,其他情况从略。时序图时序图:病情报告监视器采集信号发送信号信号异常返回打印更新中央监视系统病历报警信号退出退出上页上页首页首页下页下页末页末页合作图:合作图:采集信号发送信号信号异常打印更新监视器中央监视系统报警信号病情报告病历时序图与合作图时序图与合作图(三)用活动图描述系统在监护病人时的状态变化(三)用活动图描述系统在监护病人时的状态变化(三)用活动图描述系统在监护病人时的状态变化(三)用活动图描述系统在监护病人时的状态变化退出退出上页上页首页首页末页末页信号正常更新时间到信号异常时间间隔未到采集信号分析比较信号判断是否正常判断更新时间报警更新病历打印病情报告活动图活动图一、问题陈述一、问题陈述有一个对外营业的会议中心,有各种不同规格的会议室,为用户提供以下服务:、用户可以按照会议人数、会议时间预订会议室。可以只预订次,也可预订定期召开的会议。、开会前允许修改会议时间、人数,重新选择会议室,甚至取消预订的会议。、确定会议预订后,会议中心负责会务管理:包括通过邮寄或电子邮件,通知开会人员有关会议信息,制作代表证等。、系统根据会议室的使用情况(紧张与否),调整、更改会议室和会议时间,并调整修改预订会议的时间。会议管理系统退出退出下页下页末页末页案例三二、建立二、建立二、建立二、建立用例模型用例模型用例模型用例模型1 1、识别角色、识别角色找出所有可能与系统发生交互行为的外部实体、对象、系统。考虑系统的主要功能的使用者,就会想到用户和系统管理者,但如果直接将用户定义为角色,系统的所有功能几乎都由用户使用。根据问题的描述,系统要求将会议和会议的召开分开来。从会议的角度看,允许用户定义、更改或删除一个会议。从会议召开的角度看,允许用户为某个会议定义召开时间、参加人数、更改相应的数据或删除已定义的会议召开。因此,将用户识别为“会议管理者”和“会议申请者”两个角色。本系统定义以下角色:会议管理者(Meeting Administrator)会议申请者(Meeting Instance Requester)邮局(Post Office)会议人员管理(Attendee Management)系统维护者(System Maintainer)退出退出上页上页首页首页下页下页在识别角色的基础上,列出与角色相关的用例,有的用例与多个角色相关,经过分析,确定系统的用例(打 )。与会议管理者相关的用例:与会议管理者相关的用例:定义一个会议(DefineMeeting)更改一个会议(AlterMeeting)删除一个会议(RemoveMeeting )与会议申请者相关的用例:与会议申请者相关的用例:申请会议召开(RequestMeetingInstance)更改申请(ChangRequest)取消申请(CancelRequest)定义参加人员(AddAttendee)归还会议室(ReleaseRoom)2 2、用例识别、用例识别退出退出上页上页首页首页下页下页2 2 2 2、用例识别、用例识别、用例识别、用例识别 与邮局相关的用例:与邮局相关的用例:申请会议召开(RequestMeetingInstance)更改申请(ModifyRequest)取消申请(CancelRequest )与会议人员管理相关的用例:与会议人员管理相关的用例:定义参加人员(AddAttendee)取消申请(CancelRequest)申请会议召开(RequestMeetingInstance)更改申请(ModifyRequest)与系统维护者相关的用例:与系统维护者相关的用例:会议室维护(MeetingRoomMaintenance)设定预定时限(SetReservationTomeLimit)在确定角色和用例的基础上,画出用例图(图)。退出退出上页上页首页首页下页下页3、会议管理系统的Use case图图1会议管理系统的Usecase图归还会议室归还会议室申请会申请会议召开议召开更改申请更改申请取消申请取消申请定义参定义参加人员加人员会议召开申会议召开申请者请者邮局邮局会议会议人员人员管理管理设置预设置预定时限定时限会议室会议室维护维护定义会议定义会议更改会议更改会议删除会议删除会议系统维护者系统维护者会议管理员会议管理员退出退出上页上页首页首页下页下页 用例用例1 1、定义会议、定义会议(Define Meeting)输入会议名称确定会议规模确定会议类型其中会议规模是指参会人数范围。用例、更改会议用例、更改会议(Alter Meeting)改变会议名称改变会议规模改变会议召开频度用例、删除会议用例、删除会议(Remove Meeting)如果该会议没有召开申请从会议列表中删除如果该会议有召开申请取消与之相关的会议召开信息删除该会议使用:用例8 删除参加人员(Remove Attendee)用例6 取消申请(Cancel Request)4 4、对用例的进一步描述、对用例的进一步描述用例用例4 4、申请会议召开、申请会议召开(Request Meeting Instance)确定召开时间(年、月、日)确定参加人员确定侯选会议室发会议通知使用:用例11 发会议通知(Inform of Meeting)用 例 13 选 择 参 加 组(Select Group Attendee)扩展:如果召开时间在申请时限之外 用例12 申请拒绝(Request Rejection)如果还没定义参加人员用例7 定义参加人员(Add Attendee)用例用例5 5:更改申请:更改申请(Modify Request)更改召开时间更改参加人员更改取得会议室发会议更改通知使用:用例13 选择参加组(Select Group Attendee)用例11 发会议通知(Inform of Meeting)扩展:如果更改的时间不合法 用例12 申请拒绝(Request Rejection)用例7 定义参加人员(Add Attendee)退出退出上页上页首页首页下页下页用例用例6 6:取消会议召开:取消会议召开(Cancel Request)、取消申请归还会议室发会议取消通知使用:用例8 归还会议室(ReleaseRoom)用例14 发会议取消通知(InformRejection)扩展:如果会议已召开用例12 申请拒绝(RequestRejection)用例用例7 7:定义参加人员:定义参加人员(Add Attendee)输入参加人员的详细信息定义参加组用例用例9 9:会议维护:会议维护(MeetingRoomMaintenance)加入一个会议室(用例15)标记一个会议室不可用(用例16)查询会议室预定情况(用例17)用例用例1010:设置预定时限制:设置预定时限制(SetReservationTomeLimit)设置时间限用例用例1111:发会议通知:发会议通知(Inform of Meeting)从会议人员管理获得参加人员的投递地址填写通知(会议召开时间、会议室号码)发送通知用例用例1212:申请拒绝:申请拒绝(Request Rejection)作废当前的一切输入中字止用户当前的操作用例用例1313:选择会议参加人员组: