ch9 软件工程案例分析.ppt

上传人:小飞机 文档编号:6281129 上传时间:2023-10-13 格式:PPT 页数:62 大小:1.06MB
返回 下载 相关 举报
ch9 软件工程案例分析.ppt_第1页
第1页 / 共62页
ch9 软件工程案例分析.ppt_第2页
第2页 / 共62页
ch9 软件工程案例分析.ppt_第3页
第3页 / 共62页
ch9 软件工程案例分析.ppt_第4页
第4页 / 共62页
ch9 软件工程案例分析.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《ch9 软件工程案例分析.ppt》由会员分享,可在线阅读,更多相关《ch9 软件工程案例分析.ppt(62页珍藏版)》请在三一办公上搜索。

1、案例分析,第 9 章,一、银行网络系统ATM,二、医院病房监护系统,三、会议管理系统,案 例,采用OMT方法对银行网络系统ATM(Auto Trade Machine)进行分析和设计。一、问题的陈述银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。图给出了银行网络系统的示意图。,银行网络系统ATM(Auto Tra

2、de Machine),自动出纳机,自动出纳机,自动出纳机,出纳站,分理处计算机,分理处计算机,出纳站,帐户,帐户,图1 银行网络系统的示意图,用户,分行计算机,退出,首页,下页,末页,案例一,二、类的识别方法,常用的识别类的方法有:名词识别法、系统实体识别法、使用重用、从用例中识别类等。,、名词识别法识别问题域中的实体,实体的描述通常用名词、名词短语、名词性代词的形式出现。用指定语言对系统进行描述;从系统描述中标识名词、名词短语、名词性代词;识别确定(取、舍)类。、系统实体识别法不关心系统的运作流程及实体之间的通信状态,而只考虑系统中的人员、组织、地点、表格、报告等实体,经过分析将他们识别为

3、类(或对象)。被标识的实体有:系统需要存储、分析、处理的信息实体、系统内部需要处理的设备、与系统交互的外部系统、系统相关人员、系统的组织实体。在确定类时,常使用两类技术:分解技术将整体类和组合类分解。可控制单个类的规模。抽象技术根据一些类的相似性建立抽象类,并建立抽象类与这些类之间的继承关系。抽象类实现了系统内部的重用,很好地控制了复杂性,并为所有子类定义了一个公共的界面,使设计局部化,提高系统的可修改性和可维护性。,退出,上页,首页,下页,末页,三、建立对象模型,根据下述原则进一步确定类:去掉冗余类:如两个类表述同一信息,应保留最具有描述能力的类,如“用户”与“顾客”是重复的描述,由于“顾客

4、”更具有描述性,故保留它,删除“用户”。去掉不相干的类:删除与问题无关或关系不大的类,如“费用”。删除模糊的类:有些初始类边界定义不确切,或范围太广,应该删除。如“系统”、“安全措施”、“记录保管”、“银行网络”。删除那些性质独立性不强的,而应该是类“属性”的候选类:如“帐户数据”、“收据”、“现金”、“事务数据”。所描述的操作不适宜作为对象类,并被其自身所操纵,所描述的只是实现过程中的暂时的对象,应删去。如“软件”,“访问”。,(一)确定类采用名词识别法:检查问题陈述中的所有名词,得到初始类:软件银行网络分行计算机系统分行出纳站分理处分理处计算机自动出纳机出纳员帐户数据帐户现金卡事务数据用户

5、顾客收据记录保管 事务费用 安全措施访问现金,最终确定的类为:分行计算机分行出纳站出纳员分理处分理处计算机自动出纳机帐户现金卡事务顾客,退出,上页,首页,下页,末页,(二)为每个建模实体准备数据词典 描述模板对类进行精确描述,如系统中类的范围、成员、方法的限制等。(三)确定关联两个或多个类之间的相互依赖关系就是关联,实现关联的方式有多种。关联通常用描述性动词和动词词组表示。可以从问题陈述中抽去所有可能的关联表述,在银行网络系统示例中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。但在陈述中,有些动词词组表述的关联是不明显的,或在问题陈述中是找不到的,还有一些关联与客观世界或人的假设有

6、关,必须同用户一起确定这种关联。即关联通常由以下方面确定:、银行网络系统问题陈述中抽取可能的关联(动词词组)、隐含的动词词组、基于问题域的知识、去掉不必要和不正确的关联,三、建立对象模型,退出,上页,首页,下页,末页,、银行网络系统问题陈述中的关联 银行网络包括出纳站和自动出纳机。分行共享自动出纳机分理处提供分理处计算机分理处计算机保存帐户分理处计算机处理帐户支付事务分理处拥有出纳站出纳站与分行计算机通信出纳员为帐户录入事务自动出纳机接受现金卡自动出纳机与用户接口自动出纳机发放现金自动出纳机打印收据系统处理并发访问分理处提供软件费用分摊给分理处,、基于问题域的知识 分理处雇佣的出纳员 现金卡访

7、问帐户,、隐含的动词词组分行由分理处组成分理处拥有帐户分行拥有分行计算机系统提供记录保管系统提供安全顾客有现金卡,(三)确定关联,退出,上页,首页,下页,末页,、去掉不必要和不正确的关联使用下列标准去掉不必要和不正确的关联:(1)若某个类已被删除,那么与它有关的关联也必须删除或者用其他类来重新表述。在示例中,删除了“银行网络”,相关的关联也要删除。()不相干的关联或实现阶段的关联。删除所有问题域之外的关联或涉及实现结构中的关联,如“系统处理并发访问”就是一种实现的概念。()动作。关联应描述应用域的结构性质而不是瞬时事件,因此应删除“自动出纳机接受现金卡”,“自动出纳机与用户接口”等。()派生关

8、联,省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。银行网络系统的初步对象图如图所示,其中含有关联。,(三)确定关联,退出,上页,首页,下页,末页,图初始对象图,建立对象模型,退出,上页,首页,下页,末页,(四)确定类属性属性通常用修饰性的名词词组来表示。属性一般不可能在问题陈述中完全表述出来,应分析应用领域,并考虑最主要的属性。只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性;找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。按下列标准删除不必要的和不正确的属性:(1)限定词:若属性值固定下来后,能减少关联的重数,则可考虑把该属性重新表述为一个限定词

9、。如银行码、站代码及雇员号等是限定词,不作为属性。(2)内部值:若属性描述了对象的非公开的内部状态,则应从对象模型中删除该属性。(3)细化:在分析阶段应忽略那些不可能对大多数操作有影响的属性。图给出了银行网络系统对象模型的部分属性。,退出,上页,首页,下页,末页,确定类属性,退出,上页,首页,下页,末页,(五)使用继承来细化类使用继承来共享公共结构,以此来重新组织类:、自底而上将现有类的共性一般化为父类。找出具有相同属性、关联、操作的类,来发现继承,例如:“出纳事务”和“远程事务”其属性与主要操作是是类似的,则将它们的共性一般化,得到父类“事务”。、自顶而下将现有类细化为更具体的子类。若假设的

10、具体化与现有的类发生冲突,则说明该类结构不恰当,当同一关联名多次出现,且意义也相同时,应尽量具体化为相联系的类。例如“事务”从“出纳站”和“自动出纳机”进入,“录入站”就是“出纳站”和“自动出纳机”的一般化。图给出了加入继承后银行网络系统的对象模型。,退出,上页,首页,下页,末页,图4,使用继承来细化类,退出,上页,首页,下页,末页,(六)完善对象模型,在软件开发的全过程中,需要不断地完善对象模型。可以从以下几方面考虑:、检查是否有缺少的对象 如果一个类中,存在毫无关系的属性和操作,则应该分解这个类。一般化体系不清楚,可分离为两个类。存在名称及目的相同的冗余关联,则通过一般化创建一个父类,并组

11、织关联。、查找多余的类若类中缺少属性、操作和关联,删除该类。、查找缺少的关联、系统的改进 现金卡有多个独立的特性,分解为卡片权限和现金卡。卡片权限是银行用来鉴别用户访问权限的卡片,表示一个或多个用户帐户的访问权限;各个卡片权限对象中可能具有好几个现金卡,每张都带有安全码、卡片码,它们附在现金卡上,表示银行的卡片权限。现金卡是自动出纳机得到标识码的数据卡片,它也是银行代码和现金卡代码的数据载体。为了“事务”与“帐户”之间的传输描述具有一般性,增加“更新”。因为一般在每个帐户中,一个“事务”包括一个或多个“更新”,一个“更新”是对帐户的一个动作,它们是取款、存款、查询之一。即事务由若干更新组成,更

12、多涉及到帐户。由于“分理处”与“分理处计算机”之间的区别不影响分析,可将“分理处计算机”并入“分理处”。同理,将“分行计算机”并入“分行”。以上改进如图所示。,退出,上页,首页,下页,末页,图5,完善对象模型,退出,上页,首页,下页,末页,图5 修改后的对象模型,四、建立动态模型,动态分析从寻找外部可见的模拟和响应事件开始,确定各对象的可能事件的顺序,在分析阶段不考虑算法的执行,它是实现模型的一部分。通常动态模型有:事件跟踪表、状态图。建立动态模型的步骤分为步:、准备典型的对话脚本脚本是事件序列,每当系统中的对象与外部用户发生互换信息时,就产生一个事件,所互换的信息值就是该事件的参数。对于各事

13、件,应确定触发事件的动作对象和该事件的参数。包括“正常脚本”、“例外脚本”,自动出纳机与用户交互的正常的脚本如下所示:自动出纳机请求用户插入卡片;用户插入现金卡。自动出纳机接受卡片并读出它的卡号。自动出纳机要求密码,用户键入密码“4011”。自动出纳机与分行确认卡号和密码;分理处检查它并通知承兑的自动出纳机。自动出纳机要求选择事务类型(取款、存款、转户及查询),用户选择取款。自动出纳机要求现金数量;用户输入¥100。自动出纳机要求分行处理事务;分行把要求转给分理处,确认事务成功。自动出纳机分发现金并且要求用户取现金;用户取现金。自动出纳机提示用户是否想继续;用户指出不继续。自动出纳机打印收据,

14、退出卡,并请求用户取出它们;用户拿走收据和卡。自动出纳机请求用户插入。,退出,上页,首页,下页,末页,自动出纳机与用户交互的例外的脚本如下所示:,自动出纳机请求用户插入卡;用户插入现金卡。自动出纳机接受卡并读它的卡号。自动出纳机要求密码;用户键入:9999:。自动出纳机与分行确认卡号和密码,在咨询分理处后拒绝它。自动出纳机指示密码错并要求重新键入;用户键入:4011:,分行确认成功。自动出纳机请求用户选择事务类型;用户选择取款。自动出纳机请求键入现金数量;用户改变选择并键入“CANCEL”(取消)。自动出纳机退出卡并且请求用户拿走卡;用户取出卡。自动出纳机请求用户插入卡。、确定事件 根据脚本确

15、定所有的外部事件,事件包括:发送者、接收者、外设信号、输入、中断、转换和动作等。使用脚本可以发现正常事件,但不要遗漏条件和异常事件。、画出事件跟踪表 把脚本表示成一个事件跟踪表,即不同对象间的事件排序表,图给出了银行网络系统的事件跟踪表。图7 给出了事件流图,它给出类之间的所有事件。事件流图是对象图的一个动态对照,对象图中路径反映了可能的信息流,而事件流图反映了可能的控制流。,退出,上页,首页,下页,末页,退出,上页,首页,下页,末页,图7系统的事件图,自动出纳机的事件流图,退出,上页,首页,下页,末页,图7 银行网络系统的事件图,用户,分理处,自动出纳机,分行,确认卡及银行,处理银行事务,分

16、理处事务成功、失败,分理处帐户正确,事务成功、事务失败、帐户正确、不正确帐户、密码、银行代码,插入卡,输入密码,类型,取现金,取卡,不显示主屏可读卡,要求密码、类型、数量,取消信息,分发现金,要求继续,不正确帐户信息,确认帐户处理事务,、构造状态图 对各对象类建立状态图,反映对象接收和发送的事件,每个脚本或事件跟踪表都对应于状态图中一条路径。在银行网络系统示例中,自动出纳机、出纳站、分行和分理处对象都是动作对象。用来互换事件,而现金卡、事务和帐户都是被动对象,不交换事件,顾客和出纳员都是动作对象,它们同录入站的交互作用已经表示出来了。但顾客和出纳员对象都是系统外部的因素,不在系统内部实现。图给

17、出了自动出纳机的状态图,图给出了“分行”类的状态图,图给出了“分理处”类的状态图。,图8自动出纳机类的状态图,为重要的类建立状态图,退出,上页,首页,下页,末页,图9分行类的状态图,退出,末页,上页,首页,下页,五、建立功能模型,功能模型描述了值之间的依赖关系,通常用分层的数据流图描述。数据流图有助于表示功能依赖关系,其中的处理对应于状态图的活动和动作,其中的数据流对应于对象图中的对象或属性。建立功能模型的步骤是:、确定输入、输出值先列出输入、输出值,输入输出值是系统与外部世界之间的事件的参数。检测问题陈述,从中找出遗漏的所有输入输出值。由于所有系统与外部世界之间的交互都经过自动出纳机,因而所

18、有输入输出值都是自动出纳机事件的参数。图给出了自动出纳机的输入输出值。,退出,上页,首页,下页,末页,图11 自动出纳机的输入输出值,现金卡,用户,自动出纳机,银行码,卡片码,帐户类型,事务类型,密码,现金,收据,信息,图12 自动出纳机顶层数据流图,自动出纳机顶层数据流图,2、建立数据流图,退出,上页,首页,下页,末页,数据流图说明输出值是怎样从输入值 得来的,数据流图通常按层次组织。最顶层由单个处理组成,也可由收集输入、计算值及生成结果的一个综合处理构成。图给出自动出纳机顶层数据流图。将顶层图中的处理扩展成更低层次的数据流图,如果第二层次图中的处理仍包含一些可细化的处理,它们还可继续扩展,

19、图13是图12中“执行事务”处理的扩展。,现金卡,用户,读输入,执行事务,产生输出,帐户,结算,银行码,卡码,密码,数量,事务类型,现金,收据,信息,帐户类型,图13 自动出纳机“执行事务”数据流图,“执行事务”加工的分解,退出,上页,首页,下页,末页,3、描述处理,退出,上页,首页,下页,末页,当数据流图已细化到一定程度后,对各处理进行描述,描述方法用自然语言、伪码及判定树等,描述可以是说明的或过程的。说明性描述确定了输入、输出值之间的关系。说明性描述优于过程性描述,因为它隐含实现的考虑。过程性描述确定一个算法来实现处理功能,算法只是用来确定处理干什么。过程性描述实现起来较为容易。下面给出“

20、更新帐户”处理的描述:IF 取款数目超过当前帐户结算,退出事务,不发现金 IF 取款数目不超过当前帐户结算,记帐并分发要求的现金 IF 事务是存款,建立帐户并无现金分发 IF 事务是状态请求,无现金分发 在任何情况 收据显示自动出纳机编号、日期、时间、帐户编号,事务类型,数量(若有)以及新的结算。,更新病历,产生病情报告,一、问题的描述在医院的病房里,将病症监视器安置在每个病床,对病人进行监护。监视器将病人的病症信号(组合)实时地传送到中央监护系统进行分析处理。在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异

21、常时,系统会立即自动报警,并打印病情报告和更新病历。系统根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。,退出,下页,末页,病房,中央值班室,医院病房监护系统,案例二,二、简单的需求分析说明 系统名称:医院病房监护系统 根据分析系统主要实现以下功能:1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。2、中央监护系统将病人的病症信号与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。3、当病症信号异常时,系统自动更新病历并打印病情报告。4、值班护士可以查看病情报告并进行打印。5、医生可以查看病情报告,要求打印病情报告,也可以查

22、看或要求打印病历。6、系统定期自动更新病历。三、用UML的静态建模机制定义并描述本系统的静态结构(一)建立系统的用例图通过以下六个问题识别角色(1)谁使用系统的主要功能?(2)谁需要系统的支持以完成日常工作任务?(3)谁负责维护,管理并保持系统正常运行?(4)系统需要应付(或处理)哪些硬设备?(5)系统需要和哪些外部系统交互?(6)谁(或什么)对系统运行产生的结果(值)感兴趣?,退出,上页,首页,下页,末页,需求分析,通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。角色描述模板,通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标

23、准病症信号,病历管理,病情报告管理。顶层用例图为:,退出,上页,首页,下页,末页,角色描述,将用例细化,可以得到分解的用例:1、中央监护 分解为:a 分解信号 将从病症监护器传送来的组合病症信号分解为系统可以处理的信号。b 比较信号 将病人的病症信号与标准信号比较。c 报警 如果病症信号发生异常(即高于峰值),发出报警信号。d 数据格式化 将处理后的数据格式化以便写入病历库。2、病症监护 分解为:e 信号采集 采集病人的病症信号。f 模数转化 将采集来的模拟信号转化为数字信号。g 信号数据组合 将采集到的脉搏,血压等信号数据组合为一组信号数据。h 采样频率改变 根据病人的情况改变监视器采样频率

24、。3、提供标准病症信号 i(此用例不分解)4、病历管理 分解为:j 生成病历k 查看病历l 更新病历 m 打印病历 5、病情报告 分解为:n 显示病情报告 在显示器上显示病情o 打印病情报告 在打印机打印病情报告,退出,上页,首页,下页,末页,用例细化,给出细化的用例图,退出,上页,首页,下页,末页,细化的用例图,(二)识别系统的类通过名词识别法和系统实体识别法等方法可以识别出系统的十二个类,以下用类图这种简单明了的方法分别表示出类的名称,属性,操作。见下图:,退出,上页,首页,下页,末页,类的识别,再进一步在类图中标明类之间的关系:,退出,上页,首页,下页,末页,系统类图,(三)用包图和配置

25、图描述系统的体系结构通过一定的分组机制得到以下包图:,退出,上页,首页,下页,末页,包图,接下来用配置图进一步描述系统的网络结构,四、用UML的动态建模机制定义并描述系统结构元素的动态特性及行为(一)下面给出两个关系很紧密的状态图,退出,上页,首页,下页,末页,数据库服务器,标准病症信号库,病历库,TCP/IP,TCP/IP,状态图与配置图,(二)用时序图和合作图描述病人病情异常时系统的情况,其他情况从略。时序图:,退出,上页,首页,下页,末页,时序图与合作图,(三)用活动图描述系统在监护病人时的状态变化,退出,上页,首页,末页,活动图,一、问题陈述有一个对外营业的会议中心,有各种不同规格的会

26、议室,为用户提供以下服务:、用户可以按照会议人数、会议时间预订会议室。可以只预订次,也可预订定期召开的会议。、开会前允许修改会议时间、人数,重新选择会议室,甚至取消预订的会议。、确定会议预订后,会议中心负责会务管理:包括通过邮寄或电子邮件,通知开会人员有关会议信息,制作代表证等。、系统根据会议室的使用情况(紧张与否),调整、更改会议室和会议时间,并调整修改预订会议的时间。,会议管理系统,退出,下页,末页,案例三,二、建立用例模型,1、识别角色找出所有可能与系统发生交互行为的外部实体、对象、系统。考虑系统的主要功能的使用者,就会想到用户和系统管理者,但如果直接将用户定义为角色,系统的所有功能几乎

27、都由用户使用。根据问题的描述,系统要求将会议和会议的召开分开来。从会议的角度看,允许用户定义、更改或删除一个会议。从会议召开的角度看,允许用户为某个会议定义召开时间、参加人数、更改相应的数据或删除已定义的会议召开。因此,将用户识别为“会议管理者”和“会议申请者”两个角色。本系统定义以下角色:会议管理者(Meeting Administrator)会议申请者(Meeting Instance Requester)邮局(Post Office)会议人员管理(Attendee Management)系统维护者(System Maintainer),退出,上页,首页,下页,在识别角色的基础上,列出与角

28、色相关的用例,有的用例与多个角色相关,经过分析,确定系统的用例(打)。,与会议管理者相关的用例:定义一个会议(Define Meeting)更改一个会议(Alter Meeting)删除一个会议(Remove Meeting)与会议申请者相关的用例:申请会议召开(Request Meeting Instance)更改申请(Chang Request)取消申请(Cancel Request)定义参加人员(Add Attendee)归还会议室(Release Room),2、用例识别,退出,上页,首页,下页,2、用例识别 与邮局相关的用例:申请会议召开(Request Meeting Instan

29、ce)更改申请(Modify Request)取消申请(Cancel Request)与会议人员管理相关的用例:定义参加人员(Add Attendee)取消申请(Cancel Request)申请会议召开(Request Meeting Instance)更改申请(Modify Request)与系统维护者相关的用例:会议室维护(Meeting Room Maintenance)设定预定时限(Set Reservation Tome Limit)在确定角色和用例的基础上,画出用例图(图)。,退出,上页,首页,下页,3、会议管理系统的Use case图,退出,上页,首页,下页,用例1、定义会议(

30、Define Meeting)输入会议名称确定会议规模确定会议类型其中会议规模是指参会人数范围。,用例、更改会议(Alter Meeting)改变会议名称改变会议规模改变会议召开频度,用例、删除会议(Remove Meeting)如果该会议没有召开申请从会议列表中删除如果该会议有召开申请取消与之相关的会议召开信息删除该会议使用:用例8 删除参加人员(Remove Attendee)用例6 取消申请(Cancel Request),4、对用例的进一步描述,用例4、申请会议召开(Request Meeting Instance)确定召开时间(年、月、日)确定参加人员确定侯选会议室发会议通知使用:用

31、例11 发会议通知(Inform of Meeting)用例13 选择参加组(Select Group Attendee)扩展:如果召开时间在申请时限之外 用例12 申请拒绝(Request Rejection)如果还没定义参加人员用例7 定义参加人员(Add Attendee),用例5:更改申请(Modify Request)更改召开时间更改参加人员更改取得会议室发会议更改通知使用:用例13 选择参加组(Select Group Attendee)用例11 发会议通知(Inform of Meeting)扩展:如果更改的时间不合法 用例12 申请拒绝(Request Rejection)用例

32、7 定义参加人员(Add Attendee),退出,上页,首页,下页,用例6:取消会议召开(Cancel Request)、取消申请归还会议室发会议取消通知使用:用例8 归还会议室(Release Room)用例14 发会议取消通知(Inform Rejection)扩展:如果会议已召开用例12 申请拒绝(Request Rejection),用例7:定义参加人员(Add Attendee)输入参加人员的详细信息定义参加组,用例9:会议维护(Meeting Room Maintenance)加入一个会议室(用例15)标记一个会议室不可用(用例16)查询会议室预定情况(用例17)用例10:设置预

33、定时限制(Set Reservation Tome Limit)设置时间限用例11:发会议通知(Inform of Meeting)从会议人员管理获得参加人员的投递地址填写通知(会议召开时间、会议室号码)发送通知用例12:申请拒绝(Request Rejection)作废当前的一切输入中字止用户当前的操作用例13:选择会议参加人员组(Select Group Attendee)浏览会议组成员选择参加组用例14:会议取消通知(Inform of Cancellation)从会议人员管理处获取参加人员地址填写通知发送通知,用例:归还会议室(Release Room)输入会议室号码输入使用时间删除参

34、加人员归还会议室使用:用例会议室维护(Meeting Room Maintenance)用例18 删除参加人员(Remove Attendee),退出,上页,首页,下页,用例15:增加会议室(Add Meeting Room)输入会议室号码输入会议室规模输入会议室可使用状态(可使用、不可使用)加入该会议室用例16:设置会议室不可使用(Set Unusable Flag)输入会议室号码通知该会议室的预定者标记该会议室的可所以状态为不可用用例17:查询会议室的使用情况(Browse Meetingroom usage)输入会议室号码查询本用例返回会议室的使用状态(已使用、空闲)和会议室的可否使用情

35、况。用例18:删除会议参加人员(Remove Attendee)删除参加人员删除参加组图2描述了会议管理系统完整的用例模型。,退出,上页,首页,下页,5、完整的会议管理系统的Use case图,图2 完整的会议管理系统Use case图,退出,上页,首页,下页,除了用例模型外,其它模型都依赖于类模型,因此,类模型是方法的核心,类模型从对象的角度描述系统的组成,描述类(对象)及相互间的关系。为了建立类模型,首先要识别类,鉴于篇幅,这里就不再讨论类的识别过程。通过分析,识别以下类:1、Meeting类,标识一个会议(名称、类型、规模)。2、MeetingInstance类,Meeting类的子类,

36、对会议时间、人数等进行描述。3、MeetingRoom类,描述会议室的有关信息。4、MeetingAdministration类,管理会议。5、Attendee类,描述参会人员(姓名、性别、地址、头衔等)。6、GroupAttende类,创建一个参加会议的组。7、Address类,描述邮寄地址E-mail地址。8、PostOffic类,负责发送邮寄通知。9、AttendeeManagement类,数据库管理。10、ReservationCriteria类,定义会议室预定准则。11、Information类,构造一条通知。,三、建立类模型,退出,上页,首页,下页,该类与会议召开不同,它标识了一个

37、会议(图3),因此,其属性包括会议名称、类型、规模(参加会议的人数)。其操作则有:增加会议、取消会议。一个会议往往有多个子会议(子类)的召开,因此,必须描述Meeting类与其子类MeetingInstance类之间的关联,如图4所示。,2、MeetingInstance类MeetingInstance类是Meeting类的子类,描述会议的具体情况,会议的开始(Start Time)、结束时间(End Time),参会的人数(AttendeeNumber),其操作有:添加参加人员AddAttendee()、添加参加人员组AddGroupAttendee(),而AttachMeetingRoom

38、()表示为该类分配一个会议室,而Cancel()则表示取消该会议的召开。,1、Meeting类,退出,上页,首页,下页,图5 MeetingRoom类图,该类描述了有关会议室的情况,因此MeetingRoom类的属性包括:会议室的规模Capacity,位置BuildingCode、DoorCode,使用状态Status(正在使用、已预定、空闲和不可用)等。该类的操作有:AssignMeetingInstance()将 MeetingRoom 分配给 MeetingInstance 对象,而SetInvalidate()则表示当会议室出现故障时,将其状态设置为不可用。Release()为归还会议

39、室。当会议被预定后,为了便于查询某个会议室预定给了哪个会议,应建立类MeetingRoom 与类MeetingInstanc之间的双向关联,这里定义为1:1。,3、MeetingRoom类,退出,上页,首页,下页,Attendee类描述参加会议人员的有关信息,如:姓名、性别、地址、E-mail地址、头衔等。MeetingInstance类与Attendee类之间有一对多的关联“1.*”。,5、GroupAttendee类,该类可创建一个参加会议的组,便于按照小组选择参加会议的人员。MeetingInstance类与GroupAttendee类之间有一对多的关联“0.*”。,4、Attendee

40、类,退出,上页,首页,下页,系统中有两种地址:电子邮件地址(EmailAddress)和邮寄地址(PostAddress),而且,每个参加会议的人,可以有一个或者多个邮寄地址,有0个或多个Email地址。有关地址的属性,在再内这里不再讨论。,负责发送邮寄通知。PostOffice类分别与PostAddress、EmailAddress和Information之间有一对多的关联。,7、PostOffice类,1.*,Information,EmailAddress,1.*,PostAddress,1.*,(from Use Case View),DelieverInformation(),图9

41、PostOffice类图,PostOffice,6、Address类,退出,上页,首页,下页,图10 Information类图,该类用于构造一条通知,由于在本系统中,通常有三种:会议召开通知,会议更改通知,会议取消通知。如下例所示,通知的内容常包括标题、接受者、会议内容、会议时间及发通知的时间等。,8、Information类,退出,上页,首页,下页,八、Iformation类,该类使用数据库对参加会议的人员进行管理。分析阶段只确定该类与系统的接口,有关数据库的设计在设计阶段解决。该类与GroupAttendee类及Attendee类的关联如图11所示。,10、ReservationCrit

42、eria类,该类定义了预定会议室的准则(如时间),并建立会议实例(MeetingInstanee 类)与该类之间的联系。,图12 ReservationCriteria类图,9、AttendeeManagement类,退出,上页,首页,下页,八、Iformation类,该类管理系统中由用户定义的所有会议,并提供给用户友好的用户界面。由于该类有定义会议(DefineMeeting)、更改会议(AlterMeeting)、删除会议(RemoveMeeting)等操作,建立与Meeting类之间的关联关系。,图13 MeetingAdministration类图,11、MeetingAdminist

43、ration类,退出,上页,首页,下页,会议管理系统类图,退出,上页,首页,下页,四、建立系统包图,引入包图来对类进行管理,图本系统的包图。,系统由会议包(MeetingPack)、人员包(AttendeePack)和邮寄包(PostOfficePack)三类包组成。图16、图17、图18分别描述了这三类包的构成。,退出,上页,首页,下页,1、会议包(MeetingPack),2、人员包(AttendeePack)3、邮寄包(PostOfficePack),GroupAttendee,图17 人员包构成,0.*,1.*,1.*,1,图18 邮寄包构成,1.*,0.*,包图,退出,上页,首页,下

44、页,静态模型关注的是系统各成分的组织结构,而动态模型则要描述系统各成分之间的交互行为,即系统的动态特征。结合本系统,建立动态模型,包括交互图、合作图、活动图。,(一)对象交互模型 在面向对象的方法中,一切元素都与对象紧密相关,事件也不例外。因此,对象在其生命期中不断地与其它对象交互。使用对象交互模型来描述用例图中的每个用例,从对象观点来描述用例的动态交互过程。在中,交互模型由两类图来描述:顺序图(Sequence diagram)强调的是对象交互行为的时间“顺序”,直观描述了对象的生存期,用消息传送来清晰地描述了在对象生存期中某一时刻的动态行为。只适宜描述简单的对象交互情况。合作图(Colla

45、boration diagram)强调的是对象合作的交互行为关系,对象间由各种关联连接,对象之间的合作情况(交互情况)使用消息流来表示,但消息没有发送时间和传送时间的概念。适宜描述对象数目较多,交互情况教复杂的情况。,五、建立动态模型,退出,上页,首页,下页,当用户向会议中心申请召开会议时,首先要定义一个会议。会议管理者发送DefineMeeting消息给Meeting Administration对象,消息参数是有关会议的一个临时对象(meeting),根据该临时对象检查会议是否存在?若不存在,创建新会议:2:new(meeting),若当条件表达式为真时:IsMeetingExisted=

46、.T.,表示会议已经被定义,不需要再定义。,1、用例:定义会议(Define Meeting)的顺序图,退出,上页,首页,下页,当用户确定要取消某个会议时,首先检查会议是否定义,如果没有可以直接删除,否则要先取消相关的会议。如图20所示,首先系统用户对象MeetingAdministrator发出RemoveMeeting(MeetingName)消息给对象MeetingAdministration,通过消息的参数检索要取消的会议对象,并向该对象发出取消会议召开的消息。表达式“IsOpen=.F.”表示如果会议不处于召开状态,就取消它。表达式“IsAllMeetingInstancesCanc

47、eled=.T.”表示该会议的所有会议召开都已经被取消,则会议管理就发出取消会议召开的消息。否则返回取消失败(如会议正在召开)的消息。,2、用例:取消会议(Remove Meeting)的顺序图,退出,上页,首页,下页,、用例:撤消会议召开(Cancel Requestment)的顺序图,要撤消某个会议召开,发送Cancel 信息给MeetingInstance对象。该对象先要在Meeting对象中注销自己,再归还已分配的会议室,并向参会人员发撤消会议的通知。图21中会议管理对象发送给会议对象的消息CancelMeetingInstance(Instance)中的参数用于检索会议召开。条件表达

48、式IsOpen=.F.表示如会议召开未进行,则撤消会议召开。如果会议已进行,则返回失败消息(图中未列出)。,退出,上页,首页,下页,、用例:申请会议召开(Request Meeting Instance)的顺序图,用户申请一个会议召开时,应该指定会议召开的名称,召开的时间,及会议参加人员。图22中instance、member、grou、room、info都是临时对象,instance记录了用户指定的会议属性(时间、参加人数等),member为一个参会代表,是Attendee group参会人员组的对象;而room是满足要求的会议室。,、用例:申请会议召开,退出,上页,首页,下页,六、合作图与活动图,对于简单的对象交互情况,顺序图可以作很好的描述,可是,当交互对象数目增加,交互情况复杂时,顺序图就很难描述清楚了,可用合作图来描述。合作图描述了系统中所有对象之间的交互合作关系,注重对象之间的整体交互情况,交互关系由消息流来表示。在Rose中,还可以将顺序图与合作图进行转换。本案例不再给出合作图。,七、活动图活动图模型主要用于描述系统在问题域空间中的活动流程,活动图可以方便地描述系统中的并发活动。由于本例中并没有复杂的并发活动,而且也也没有明显的基于核心的、具有复杂状态和行为的对象,所以可以不必画出合作图和活动图。,六、合作图,退出,上页,首页,下页,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号