图书馆信息系统面向对象分析实例。总体问题的陈述:本项目的目的是创建一个用于对图书馆的图书进行管理的图书管理系统。该项目的用户:该项目的用户是一个某大学的图书馆,它负责对其顾客提供图书借阅服务。该项目的目标:总体上来说,项目的目标是提高图书管理的自动化水平,为图书业务过程提供更快捷的、更好的和更准确的服务。具体来讲,系统的目标包括:为借书者提供快速借书的服务;进行快速准确的图书和借书者的信息维护;图书管理和查询的自动化。该系统的功能:系统功能是系统应该做的事情,例如系统提供的预定功能。应该识别出这些功能并把它们列入到逻辑相关联的功能组中。注意:要验证某一个描述是否真是一个系统的功能,如下的判断语句应该成立:系统应该做某一个描述例如,系统应该做图书的预定。然而,系统的属性是系统的非功能性的特性,这些非功能性特性和系统功能经常被混淆。例如,“易于使用”就是一个非功能性的特性。它是不符合我们上述的验证语句:“系统应该做易于使用”。系统属性不应该是功能规格说明书中的一部分,而应该是一个单独的系统属性规格说明文档。对于系统的功能,我们应该对其分类,以便区分开各类功能的优先次序和识别出哪些是理所当然应该具备的系统功能。功能的分类包括:明显的:应该履行的功能,并且用户应该知道这个功能是否已经被履行。隐藏的:应该履行的功能,但功能的履行对用户不可见。很多使用底层技术的服务确实符合这种情况,例如,将数据保存到一个持久化存储机构中。隐藏的功能经常在采集需求的过程中被遗漏。修饰性的:可选的,增加这些功能不会对成本和其它系统造成重要影响。为此,我们给出该系统的借书基本功能如下:F1.1记录借出的图书----借阅事件明显的F1.2查找书库中是否存在这种图书明显的F1.3从借书卡中读取借书者信息,并校验该信息明显的F1.4查找书库中这本书是否还有副本隐藏的F1.5当一次借阅完成后,削减该书的副本存书数量隐藏的F1.6管理员要使用系统,必须输入ID号和密码才行明显的F1.7查询显示借书信息明显的F1.8提供一个持久化存储机制隐藏的F1.9提供过程间的和系统间的通信机制隐藏的系统属性:系统属性是系统的特性,它们并不是系统的功能,例如:易用、容错、响应时间、界面形式、平台等。系统属性具有一组可能的属性细节,这些属性细节往往是属性的一些离散的、表达模糊的符号值,例如:响应时间=(生理上能够接受的时间段)界面形式=(图形化的,基于表的,彩色比较平淡的)在我们的案例中,要求借书查找时间小于1秒。我们结合上面的图书馆管理系统的案例,来给出图书管理系统的问题域模型。我们首先看问题域中的图书、借阅、书目和借书者这四个类。系统将通过计算机来处理图书、副本、借书者和借阅。借书者要求借书,给出要借图书的名称,出示借书证。系统查找所借的图书是否存在,若存在,同时还要查看该图书是否还有副本,如果有,再查询该借书者提供的借书证是否合法的注册用户,如果是,则办理借阅手续(登记借阅信息)。图书是存放在图书馆中的一个书的名称,副本是一个图书的具体实例。一个图书可能有多个副本,一个副本一定会对应一个图书。为简化起见,我们假定一次借阅(登记)只能借一本图书,同时会对应着一个借书证信息。一个借书者可以进行多次借阅。首先找出业务对象:图书、副本、借书证。系统需要处理的现实世界中的对象和概念:借阅、预定。将要发生或已经发生的事件:已经预定。下面给出其UML表示的问题域的类图。副本借阅10..110..1参考借书证10..n10..n具有预定0..n图书0..n10..n1拥有0..n具有0..n参考0..n图-2-1图书管理系统中的问题域主要概念类图问题域类图中的关系说明如下:1、一个图书名称可以有多个同样图书的副本。2、每一个副本一定要对应一个图书名称。3、一次借阅必须记录一个图书的副本和一个借书证信息。4、一个副本可以被借阅,也可以不被借阅。5、一个借书证可以借多本书,也可以不借一本书。6、一个借书证可以进行多个图书名称的预定,也可以不进行预定。7、一次预定必须记录一个图书名称信息和一个借书证信息。8、一个图书名称可以被多次预定,也可以不被预定。术语表也是一个重要的内容,下面我们给出图书管理系统的术语表:图书:图书是图书馆内最重要的对象,它是系统处理主要对象,图书是本书的信息描述,它包含了图书的名称,图书的作者以及图书的ISBN统一出版编号等内容。副本:副本是图书的一个实例,一个图书信息可以有多个副本,也可以没有副本。副本是借书时的真正对象。只有一个图书有可以供借阅的副本时,借书者才可以对其借阅。借书证:业务中的借书证记录了借书者的信息,从计算机使用软件开发的角度来看,如果组织对象,应该叫“借书者信息”更确切。借阅:借阅是图书管理中的一个最重要的业务活动,它需要进行一系列的操作才能完成一个借阅业务,包括查找图书、查找副本、核对借书证(借书者信息)等步骤。预定:预定是图书管理中的一个业务活动,它也需要一系列的操作才能完成。书籍:书籍是图书的一种形式。杂志:杂志也是图书的一种形式。图书管理员:图书馆的工作人员,直接为借书者提供服务的人,也是系统的直接使用者。借书者:到图书馆借书的人,属于图书馆的用户(服务对象)。借书者信息:一个记录了借书者完整信息的卡片,包括借书者的姓名、居住地址,所在城市和电话号码等内容。有关的术语可能还有很多,这里就不再一一列出。对于图书管理系统的业务模型,我们可以采用逐步描述的方式来建立:一、确定业务系统的参和者系统的参和者:借书者业务系统:图书馆二、确定业务系统的参和者的目标对于借书者的目标我们可以描述如下:1借书usecsae12还书usecase33预定usecase34取消预定usecase4三、绘制图书馆业务系统的Usecase模型图四、在以上四个usecase中挑选一个作为首先实现的目标。选择:usecase1,借书作为我们首先分析和实现的目标。五、了解业务系统的参和者的期望,导出系统责任。写出usecase描述的事件流。Businessusecase描述:借书借书者到图书馆里选择了喜欢的图书之后,要求图书馆办理借书手续,图书馆登记所借图书的借阅资料,查找所借的图书是否存在以及所借图书是否还有副本,请借书者提供借书证。借书者请图书馆登记借书证上的借书者信息,图书馆登记完成后,将借书者所要借的图书交给借书者,借书者拿着图书离开图书馆。六、绘制业务系统的顺序图(Sequencediagram)根据事件流的描述,绘出业务系统的顺序图,见图2-2。通过该图我们可以看到,图书馆这个业务系统需要向借书者提供以下的服务:1、受借书请求。2、提示借书者提供所要借的图书名称3、接受借书者提供的图书名称4、查找书名5、查找副本6、提示借书者给出借书者信息7、接受借书者给出的借书者信息8、核对借书者信息并记录借阅信息9、将图书送出,提示借书者拿走图书:借书者:图书馆1:要求借书2:请给出书名3:给出书名4:查找书名5:查找副本6:请给出借书者信息7:给出借书者信息9:请把书拿走8:核对借书者信息图2-2业务系统级的顺序图七、打开业务系统,找出业务系统内部的业务对象模型元素根据前面的需求说明,我们知道图书馆内部情况如下:作为图书馆工作人员的图书管理员,他们负责为借书者服务,并操作各种业务实体来完成图书馆的各种业务流程。作为图书馆内部的业务实体有:图书借阅登记、图书预定登记、图书信息卡、图书副本、借书人信息等。每登记一次图书借阅,需要登记图书名称、借书者名称以及图书副本号等信息。每登记一次图书预定,需要登记图书名称和借书者信息。具体的系统内部结构图见图2-3。图2-3图书馆业务系统内部业务对象模型元素八、写出详细的事件处理流描述事件流描述:借书借书者到图书馆里选择了喜欢的图书之后,要求图书管理员办理借书手续,图书管理员使用图书管理系统登记所借图书的借阅资料。首先,图书管理员向图书借阅登记输入图书名称,图书借阅登记请图书信息卡查找所借的图书是否存在,如果该图书存在,则图书信息卡请图书副本检查该图书是否还有副本,如果有,进行下面的工作;图书管理员请借书者提供借书者信息。借书者请图书管理员登记借书者信息,图书管理员向图书借阅登记输入借书者信息,图书借阅登记请借书者信息核对该信息是否有效;如果有效,图书借阅登记将登记相应的借书者信息、图书信息卡和图书副本。处理完成后,提示图书管理员登记完毕,图书管理员将借书者所要借的图书交给借书者,借书者拿着图书离开图书馆。九、绘制业务系统详细顺序图(Sequencediagram)根据上面的借书事件流描述,我们可以给出借书业务的顺序图,如图2-4。通过顺序图我们可以看到每一个对象的责任:借书者:通过请求借书,启动借书流程;向图书管理员提供图书名称和借书者信息;拿走图书。图书管理员:接受借书请求,启动系统的借书流程;接受借书者提供的图书名称、借书者信息;向图书借阅登记对象提供图书名称和借书人名称;提示借书人拿走图书。图书借阅登记:接受并执行借书登记;接受并执行查找图书;接受并执行核对借书人信息。图书信息卡:负责查找图书。图书副本:负责查找核实空闲的副本。借书人信息:负责查找核实借书人,确认其为合法的借书人。应当注意的是,借书事件流的描述并非只有以上的一种描述方式,它将随着业务处理方式的不同而改变。比如,我们也可以这样描述:借书者到图书馆里选择了喜欢的图书之后,将选定的图书名称和借书者信息交给图书管理员,要求图书管理员办理借书手续,图书管理员使用图书管理系统登记所借图书的借阅资料。首先,图书管理员向图书借阅登记输入图书名称和借书者信息,请图书借阅登记处理借书登记业务,图书借阅登记请图书信息卡查找所借的图书是否存在,如果该图书存在,则请图书副本检查该图书是否还有副本,如果有,进行下面的工作;图书借阅登记请借书者信息核对该信息是否有效,如果有效,图书借阅登记将登记相应的借书者信息、图书信息卡和图书副本。处理完成后,提示图书管理员登记完毕,图书管理员将借书者所要借的图书交给借书者,借书者拿着图书离开图书馆。这样的操作过程必然产生不同的顺序图。它明显地减少了图书管理员和借书者之间的交互次数。这种方式所产生的顺序图见图2-5。:借书人:图书管理员:图书借阅登记:图书信息卡:图书副本:借书人信息1:请求借书服务3:请给出所借图书名称4:请接受图书名称5:查找图书信息6:查找图书信息7:查找副本信息8:请给出借书人信息9:请接受借书人信息13:请拿走图书10:请核对借书人信息11:请核对借书人信息12:登记借书信息2:请求借书登记图2-4业务系统打开后的顺序图在建立业务模型时,术语表也是一个重要的内容,它是在前面已经建立的问题域模型的基础上进行增补而形成的。下面我们给出图书管理系统业务模型的术语表:图书信息卡:图书信息卡是图书馆内最重要的对象,它是系统处理主要对象,图书信息卡是某一本图书的信息描述,它包含了图书的名称,图书的作者以及图书的ISBN统一出版编号等内容。图书副本:图书副本是图书的一个实例,一个图书信息卡可以有多个图书副本,也可以没有图书副本。图书副本是借书时的真正对象。只有一个图书信息卡有可以供借阅的图书副本时,借书者才可以对其借阅。借书者信息:业务中的借书者信息记录了借书者的重要信息,包括借书者的姓名、住址、居住城市、居住省、身份证号码、邮政编码、电话号码等内容。图书借阅登记:图书借阅登记是图书管理中的一个最重要的业务活动,它需要进行一系列的操作才能完成一个图书借阅登记业务,包括查找图书、查找副本、核对借书证(借书者信息)等步骤。预定:预定是图书管理中的一个业务活动,它也需要一系列的操作才能完成。书籍:书籍是图书的一种形式。杂志:杂志也是图书的一种形式。图书管理员:图书馆的工作人员,直接为借书者提供服务的人,也是系统的直接使用者。借书者:到图书馆借书的人,属于图书馆的用户(服务对象)。:借书人:图书管理员:图书借阅登记:图书信息卡:图书副本:借书人信息1:请求借书服务(图书名称,借书者信息)7:请拿走图书2:请求借书登记(图书名称,借书者信息)3:请