第一篇:基于UML的图书管理系统的需求分析与设计
基于UML的图书管理系统的需求分析与设计
摘要:本文对面向对象的概念、UML产生的背景及其基本内容进行了阐述,在对图书馆图书管理系统进行功能描述和需求分析的基础上,结合软件工程和面向对象需求分析,设计了基于UML的用例图、包图和顺序图,状态图等语言机制的图书馆图书管理系统模型。关键词: UML;建模语言;面向对象;需求分析;图书管理系统 1关于面向对象
面向对象是一种的程序设计方法,或者说它是一种程序设计类型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。它可以有不同层次的理解:
(1)从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
(2)从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。
(3)从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
面向对象的方法学包括了以下核心概念: 对象(object):即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。类(class):类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。类的概念来自于人们认识自然、认识社会的过程。
消息(Message): 消息是指对象间相互联系和相互作用的方式。一个消息主要由5部分组成:发送消息的对象、接收消息的对象、消息传递办法、消息内容(参数)、反馈。封装:对象间的相互联系和相互作用过程主要通过消息机制得以实现。对象之间并不需要过多的了解对方内部的具体状态或运动规律。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。类是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。在类中定义的接收对方消息的方法称为类的接口。
继承:类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系,以及对属性和操作的共享,即子类可以沿用父类的某些特征。重载:重载是指类的同名方法在给其传递不同的参数是可以有不同的运动规律。在对象间相互作用时,即使接收消息对象采用相同的接收办法,但消息内容的详细程度不同,接收消息对象内部的运动规律也可能不同。2 关于UML
UML(Unified Modeling Language)是在Booch方法、OOSE方法和OMT方法的基础上演化而来的基于面向对象技术的标准建模语言。它统一了面向对象建模的基本概念、术语和图示符号,描述了建模过程中所必须遵循的基本步骤,提供了一整套描述软件系统模型的概念和图形表示法,可从不同的视角为系统建模。统一建模语言UML是一种语义丰富、通用、可视化的建模语言和事实上的国际工业标准,易于理解和交流。UML提供的丰富的视图从多个视角描述系统的不同侧面,可以有效运用于软件的建模、分析与设计。标准建模语言UML的定义包括UML语义和UML表示法两个部分。UML语义通过其元模型来严格地定义。UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法来建模提供标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。UML的主要内容通常用用例图、类图、对象图、状态图、活动图、构件图、配置图、顺序图、协作图和包图等l0种图来描述,它们从不同的角度和层次为系统建模提供支持,完全可以描述系统的方方面面。
与传统的软件建模方法相比, UML 有如下一些特点:(1)UML 是一个可视化建模语言, 是一种图形化的面向对象的设计工具语言,而不是可视化程序设计语言,但用UML描述的模型可与各种编程语言直接相连,把UML 模型映射成编程语言。在不同程序中使用同样的UML 图表类型, 因为UML 具有任意程序的独立性,定义一个标准程序不是一个UML 的目标。
(2)UML 是一种可用于详细描述的语言,其所建立的模型是精确、无歧义和完整的。同时UML是一种文档化的语言,对其各建模元素可进行详细说明,并能生成所建模型的文档。标准建模语言UML支持面向对象的分析与设计,定义良好、易于表达、功能强大。它的最大用途是利用图形来描述真实世界各个对象的符合表示,让所有系统设计者在构建系统需求分析、对象模型化定义到对象设计的整个开发过程完全标准化。3 本课题的研究意义
一个图书馆的图书资料库在正常运转中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。图书馆作为一个信息资源的集散地,图书和用户借阅资料繁多,包含着很多的信息数据。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用人工检查,对借阅者的借阅权限以及借阅天数等采用人工计算、手抄进行,数据信息处理工作量大,容易出错和丢失。因此,建立一个智能化、系统化、信息化的图书资料库是十分重要的。使用计算机软件对图书进行管理,是计算机应用的一部分。充分利用计算机的功能,实现对读者管理、书籍管理等自动化控制,将会使图书资料库的工作强度大大减弱,可以实现图书检索迅速、可靠性高、存储量大、寿命长、成本低,能最大限度地提高图书管理的效率,也是图书管理信息化、正规化管理的必然趋势。4 基于UML的图书管理系统的需求分析与设计过程 图书管理系统的开发和应用主要通过两个步骤来实现:首先是基于系统功能的需求分析,其次是系统模型的设计和实现。4.1需求分析
需求分析是软件工程过程的一个重要阶段,其中一个主要任务是确定系统的功能需求,采用面向对象方法,基于UML的可视化系统需求分析,因为有用户的积极参与,既可以加快设计者对于问题的理解,又能够在系统描述方面减少语义差异,保证分析的正确性。需求分析的目标就是建立需求模型,即从功能需求出发建立用例模型, UML的用例视图从用户的需求中提取,以盒图的方式描述待开发的系统的功能需求。每个用例都指定了客户的需求即他们需要系统干什么。用例图为设计活动不仅记录需求而且还提供了一种挖掘的信息, 它记录了需求到设计结果之间的映射关系,能够确保设计结果具有明确的根据或者说具有可维护性,基于UML的软件开发过程是以用例驱动的。
首先我们进行角色识别,角色识别的任务是找出所有可能与系统发生交互行为的外部实体、对象、系统。它们的行为不受系统控制,但是可以提供输入给系统。对于一所大学的图书管理系统,基本的功能是完成图书的借阅和相关信息的管理,服务的对象有本科生,研究生,教师,及其他学校的学生,还有社会人员,这些人可归结为一类即读者。而为帮助读者顺利完成借还书的可以是工作人员,可以是自动借还书机,他们可以归结为一类即图书管理人员。因此对于一个图书管理系统主要有两类角色,读者、图书管理员。
其次,在主要角色的基础上,可以识别出与角色相应的用例,从而得到系统的用例模型。与读者相关的过程包括:借书、还书、预定、图书信息检索、借阅查询(如查询本人借书记录、还书期限、是否超期)、个人相关信息查询及修改(如学号、姓名、性别、年级、专业、家庭住址、联系电话、出生日期、民族、政治面貌、身份证号等)。与图书管理员相关的过程包括:办理借书、办理还书、解除预定、图书订购、读者信息管理(增加/删除读者、修改读者权限及密码、借阅超期罚款)、图书信息管理(增加/删除数目、图书类别等相关信息的修改、流通情况)。系统管理(系统的登陆、退出、日志维护、系统更新)。以上分析中,与读者,图书管理员相关的过程构成了本系统的基本用例。4.2 系统的整体结构
综上所述一个图书管理系统的整体结构可以分为三大模块:图书管理模块、读者管理模块、系统管理模块。
(1)图书管理模块包括与图书相关的一些过程,主要有图书的借出、图书的归还、预定、图书信息检索、图书订购、图书相关信息管理。
(2)读者管理模块主要包括与读者有联系相关的过程,主要有增加/删除读者、修改读者权限及密码、借阅信息查询、个人信息查询及修该、借阅超期和丢失罚款。(3)系统管理模块包括系统的登陆、退出、系统维护、系统更新。综上我们画出系统的整体结构,如图一所示:
图一 图书管理系统的整体结构 4.3 图书管理系统的用例图
从以上分析中我们不难得出系统的基本用例图,如图二所示:
图二系统的基本用例图
图书管理和图书管理是图书管理系统的重要组成部分,为此我们按照前文所述将图书管理模块和读者模块以及系统管理模块详细精化得出如下的用例图,如图
三、图
四、图五所示:
图三 图书管理模块的用例图
图四读者管理用例图
图五系统管理模块的用例图 4.4 图书管理系统的行为图 我们再进行动态建模分析。对于图书管理系统借书还书是两个重要的过程,我们先来分析一下借书、还书的一般过程,并由借书的一般过程画出其顺序图、协作图以及活动图。
(1)借书的过程:读者刷卡进入图书馆,或者先查询图书及个人借阅信息,或者直接去挑选图书,选择好图书后进入借书程序,管理员先检查读者的借书证件,查验能否借阅,比如:证件是否无效或书籍是否已经借满等,即检验其借书的合法性和有效性,如果是非法用户或借书数量范围外,则该读者不能借阅图书。如果满足借阅要求,则再获取所借书的标题以进行库内搜索,获取书目查询此书的数量,看是否还有此书,如果没有则阻止其他借书者可能进行的预订活动,将此书借出,根据书号将此书的借阅标志位取反以表示此书已借出,并将此书的书目减1。并为此读者记录借阅日期,以及归还日期,在归还日期内未能归还和续借的,并为其记录超借天数及罚款数额。
(2)还书过程:在返还图书的过程中,管理员首先获取读者的借阅信息和被归还的书籍的信息,如书标题信息,数量等,并一一审核每本书的归还日期是否超过应归还日期。在完成阶段,将此书的书号登记并设计标志位为已归还,以便读者网上预订和继续借阅,同时将此类图书的数量加1,如果读者超期或丢失所借书籍,则要进行赔偿处理。所以我们不难画出借书一般过程的顺序图,如图六所示:
图六借书一般过程的顺序图
有顺序图可得到协作图,如图七所示。仔细分析借书过程的细节,可以画出如图八所示的活动图,它表示了复杂算法的过程,尤其是过程中的判断、并发和同步。
图七借书一般过程的协作图
以上我们用多种语言机制分析了读者的主要相关事件流,下面我们绘制图书管理员使用系统的状态图分析图书管理员的主要事件流。从以上分析可知,图书管理员相关的过程包括:办理借书、办理还书、解除预定、图书订购、读者信息管理(增加/删除读者、修改读者权限及密码、借阅超期罚款)、图书信息管理(增加/删除数目、图书类别等相关信息的修改、流通情况)。由此我们可绘制如图九所示的图书管理员使用系统的状态图:
图九图书管理员使用系统的状态图 4.5 图书管理系统的静态图 定义并描述了各个类后,我们可以根据实际情况引入包来管理类,本图书馆管理系统可以划分为四个包:用户管理:对系统用户进行管理,为用户提供信息服务接口,便于对系统进行操作。借阅管理包括借书处理,还书处理和罚款处理等。读者管理包括对读者图书等信息进行维护,主要有读者信息的增删,对图书更新资料进行维护。系统服务:包括系统登录检查,安全维护等。系统的包图如图十所示:
图十系统包图
4.6 图书管理系统的实现 经过系统分析和设计后,就可以根据设计模型在具体的环境中实现系统,生成系统的源代码、可执行程序和相应的软件文档,建立一个可执行系统。进而需要对系统进行测试和排错,保证系统符合预定的要求,获得一个无错的系统实现。测试结果将确认所完成的系统可以真正使用。参考文献
[1] 齐治昌.谭庆平.宁洪.软件工程.北京:高等教育出版社 [2] 张海藩.软件工程.北京:人民邮电出版社
[3] 董翔.基于UML的图书管理系统的开发和应用.科技情报开发与经济2008年第l8卷第l2期
[4] 吴开华.邢养晓.罗德撤.数字图书馆元数据研究[J].中国图书馆学报,2002,(3). [5] 刘治国.构建基于B/S结构的图书管理系统[J].信息技术,2005(3):72—73. [6] 管斌.袁国忠译.用例驱动的UML对象建模应用-范例分析.北京:人民邮电出版社 结束语
本文以一个图书馆图书管理系统开发为背景,针对图书馆对图书资源进行有效利用和管理的功能需求,采用统一建模语言(UML)对图书资源进行面向对象的描述,通过利用统一建模语言UML中的各种图形,分析和设计图书管理系统,建起了图书管理的面向对象模型,探讨了基于UML的体系结构建模及其实现问题。由建模过程可以看出UML在体系结构建模方面存在很好的优势,不但从整体上正确描述了该图书管理系统的体系结构,并且可以充分利用UML面向对象的优势,从而实现整个软件系统面向对象的分析、设计与开发,大大缩短开发周期,最终使得项目成功完成,此管理系统节省了管理人员和读者的大量时间,有利于信息处理效率的提高。鉴于篇幅有限,本文只对主要部分和主要过程做了介绍,限于水平,欢迎各位读者对本文的缺点、错误提出批评。
第二篇:uml图书管理系统需求分析与设计
图书馆图书管理系统的需求分析与设计
一、本课题的研究意义
一个图书馆的图书资料库在正常运转中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。图书馆作为一个信息资源的集散地,图书和用户借阅资料繁多,包含着很多的信息数据。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用人工检查,对借阅者的借阅权限以及借阅天数等采用人工计算、手抄进行,数据信息处理工作量大,容易出错和丢失。因此,建立一个智能化、系统化、信息化的图书资料库是十分重要的。使用计算机软件对图书进行管理,是计算机应用的一部分。充分利用计算机的功能,实现对读者管理、书籍管理等自动化控制,将会使图书资料库的工作强度大大减弱,可以实现图书检索迅速、可靠性高、存储量大、寿命长、成本低,能最大限度地提高图书管理的效率,也是图书管理信息化、正规化管理的必然趋势。
二、图书馆图书管理系统的需求分析与设计过程
图书管理系统的开发和应用主要通过两个步骤来实现:首先是基于系统功能的需求分析,其次是系统模型的设计和实现。
2.1需求分析
需求分析是信息系统设计过程中的一个重要阶段,其中一个主要任务是确定系统的功能需求,并采用面向对象方法,即基于UML的可视化系统进行需求分析。需求分析的目标就是建立需求模型,即从功能需求出发建立图形模型, UML的视图从用户的需求中提取,以图形的方式描述待开发的系统的功能需求。每个图形都指定了客户的需求,即他们需要系统干什么。用图形为设计活动不仅记录需求而且还提供了一种挖掘的信息, 它记录了需求到设计结果之间的映射关系,能够确保设计结果具有明确的根据或者说具有可维护性,基于UML的信息系统设计过程是以建模图形驱动的。
首先我们进行角色的认识,对于一所大学的图书管理系统,基本的功能是完成图书的借阅和相关信息的管理,服务的对象有本科生,研究生,教师,及其他学校的学生,还有社会人员,这些人可归结为一类即读者。而为帮助读者顺利完成借还书的可以是工作人员,可以是自动借还书机,他们可以归结为一类即图书管理人员。因此对于一个图书管理系统主要有两类角色,读者、图书管理员。
其次,在主要角色的基础上,可以识别出与角色相应的用例,从而得到系统的用例模型图。与读者相关的过程包括:借书、还书、预借(想借的书已借出,预定要借的书籍)、图书信息检索、借阅查询(如查询本人借书记录、还书期限、是否超期)、个人相关信息查询及修改(如学号、姓名、性别、年级、专业、家庭住址、联系电话、出生日期、民族、政治面貌、身份证号等)。与图书管理员相关的过程包括:办理借书、办理还书、删除预借对象、图书订购、读者信息管理(增加/删除读者、修改读者权限及密码、借阅超期罚款)、图书信息管理(增加/删除数目、图书类别等相关信息的修改、流通情况)。系统管理(系统的登陆、退出、日志维护、系统更新)。以上分析中,与读者,图书管理员相关的过程构成了本系统的基本用例。
2.2 系统的整体结构
综上所述一个图书馆图书管理系统的整体结构可以分为三大模块:图书管理模块、读者管理模块、系统管理模块。
(1)图书管理模块包括与图书相关的一些过程,主要有图书的借出、图书的归还、预借、图书信息检索、图书订购、图书相关信息管理。
(2)读者管理模块主要包括与读者有联系相关的过程,主要有增加/删除读者、修改读者权限及密码、借阅信息查询、个人信息查询及修该、借阅超期和丢失罚款。
(3)系统管理模块包括系统的登陆、退出、系统维护、系统更新。综上我们画出系统的整体结构,如图一所示:
图一 图书管理系统的整体结构
2.3 图书管理系统的用例图
从以上分析中我们不难得出系统的基本用例图,如图二所示:
图二 系统的基本用例图
图书管理和图书管理是图书管理系统的重要组成部分,为此我们按照前文所述将图书管理模块和读者模块以及系统管理模块详细精化得出如下的用例图,如图
三、图
四、图五所示:
图三 图书管理模块的用例图
图四 读者管理用例图
图五 系统管理模块的用例图
2.4 图书管理系统的交互图
协作图
第三篇:图书管理系统UML分析与设计
1.系统需求
系统的功能性需求描述如下:
·
图书管理系统为管理员提供主功能界面。
·
图书管理系统在启动时要求管理员输人口令,只有口令正确,才可以进入系统的主功能界面。
·
管理员负责对图书管理系统的维护工作,因此系统应赋予管理员对图书信息、读者信息和出版社信息进行录入、修改、查询和删除等功能的操作权限。
·
管理员作为读者的代理实现借书与还书业务。
·
图书信息、读者信息和出版社信息保存在对应的数据库表中。
在上述功能性需求分析的基础上,可以写出较为详细的需求规格说明书,作为进行系统分析、设计和实现的依据。需求分析规格说明书由系统最终用户提出需求,系统分析人员负责编写。图书管理系统需求分析规格说明书如下:
·
这是一个图书馆图书借阅管理的应用系统;
·
图书管理系统负责将图书、杂志借给读者,前提条件是这些读者在系统进行了注册,图书和杂志也在系统中进行了注册;
·
图书馆负责新书的购买,当书和杂志已经过时或者破旧不堪时,可以将这些图书和杂志从图书馆管理系统中删除;
·
图书管理员是图书馆的员工,负责与读者打交道,并且是在系统提供的支持下开展工作;
·
图书管理系统能够容易地建立、修改和删除系统中的信息,包括图书信息、读者信息、以及出版社信息等;
·
图书管理系统能够在所有流行的平台环境(windows,uNIx等操作系统)上运行,并具有一个美观的图书用户界面;
·
图书管理系统容易扩展新功能。
2.分析建模
Use case diagram 分析
采用下列描述项撰写用例的脚本。
· 用例名称——表明用户的意图或用例的用途。
· 参与者——与该用例相关的参与者列表。
· 前置条件——一个条件列表,如果其中包含条件,则这些条件必须在访问用例之前得到满足。
· 后置条件——一个条件列表,如果其中包含条件,则这些条件将在用例完成以后得到满足。
· 基本事件流——描述用例中各项活动都正常进行时用例的工作方式。
· 分支事件流——描述用例中某项活动的子活动各项工作都正常进行时用例的工作式。
· 异常事件流——描述用例的变更工作方式,以及出现异常或发生错误的情况下所执行的路径。
图书管理系统中每个用例的脚本描述如下:
1.系统登录
用例名称:系统登录
参与者:图书管理员 1.1前置条件 无
1.2后置条件
如果用例成功,参与者可以启动系统,使用系统提供的功能。反之,系统的状态不发生变化。
1.3基本事件流
当图书管理员登录系统时,用例启动。
①系统提示用户输入用户名和密码。
②用户输入用户名和密码。
③系统验证输入的用户名和密码,若正确,则用户登录到系统中。
1.4异常事件流
如果用户输入无效的用户名/密码,则系统显示错误信息。用户可以选择返回基本事件流的起始点,重新输入正确的用户名/密码;或者取消登录,用例结束。
2.图书借阅
用例名称:借阅图书
参与者:读者,图书管理员 2.1前置条件
在这个用例开始之前,图书管理员必须登录到系统;否则,系统的状态不发生变化。
2.2后置条件
如果这个用例成功实现,则在系统中创建并存储借阅记录。2.3基本事件流
当读者借阅图书时,用例启动。
①登录系统。
②输人图书ID和读者ID。
③检索读者ID。
④检索图书ID。
⑤根据时间算法确定图书借出日期和归还日期。
⑥图书馆将图书借给读者。
⑦创建借阅记录。
⑧存储借阅记录。2.4异常事件流
①如果读者未注册,则系统显示提示信息,用例被终止。
②如果要借图书不存在,系统显示提示信息,用例被终止。
③如果要借图书都已借出,则系统提示信息,用例被终止。3.图书归还
用例名称:图书归还
参与者:读者,图书管理员 3.1前置条件
在这个用例开始之前,图书管理员必须登录到系统;否则,系统的状态不发生变化。
3.2后置条件
如果这个用例成功实现,则系统删除借阅记录;否则,系统的状态不发生变化。3.3基本事件流
当读者归还借阅的图书时,用例被启动。
①登录系统。
②输入图书ID和读者ID。③检索图书ID。
④检索读者ID。
⑤查询图书借阅记录。⑥删除借阅记录。3.4异常事件流
①如果归还图书不存在,则系统显示提示信息,用例被终止。②如果借阅记录不存在,则系统显示提示信息,用例被终止。4.读者维护
用例名称:读者维护 ‘ 参与者:图书管理员 ’ 4.1前置条件
在这个用例开始之前,图书管理员必须登录到系统;否则,系统的状态不发生变化。4.2后置条件
如果这个用例成功地实现,则系统添加、修改或检索读者信息;否则,系统的状态不发生变化。
4.3基本事件流
当图书管理员维护读者信息时,用例被启动。①登录系统。
②如果选择的活动是“添加读者信息”,则执行分支事件流4.3.1:添加读者信息。③如果选择的活动是“修改读者信息”,则执行分支事件流4.3.2:修改读者信息。④如果选择的活动是“检索读者信息”,则执行分支事件流4.3.3:检索读者信息。4.3.1分支事件流
①提供读者的信息,例如,读者ID,读者姓名、电话号码等。②系统存储读者信息。4.3.2分支事件流 ①输入读者ID。
②查询并显示读者信息。③更新系统中读者信息。4.3.3分支事件流 ①输入读者ID。
②查询并显示读者信息。4.4异常事件流
①如果读者已经存在,则系统显示提示信息,用例被终止。②如果查询不到读者,则系统显示提示信息,用例被终止。5.图书维护
用例名称:图书维护 参与者:图书管理员 5.1前置条件
在这个用例开始之前,图书管理员必须登录到系统;否则,系统的状态不发生变化。5.2后置条件
如果这个用例成功实现,则系统添加、修改或检索图书信息;否则,系统的状态不发生变化。
5.3基本事件流
当图书管理员维护图书信息时,用例被启动。①登录系统。
②如果选择的活动是“添加图书信息”,则执行分支事件流5.3.1:添加图书信息。③如果选择的活动是“修改图书信息”,则执行分支事件流5.3.2:修改图书信息。④如果选择的活动是“检索图书信息”,则执行分支事件流5.3.3:检索图书信息。5.3.1分支事件流
①提供图书的信息,例如,图书ID,图书名称、编著者、出版社、价格、出版年份筹 ②系统存储图书信息。5.3.2分支事件流 ①输人图书ID。
②查询并显示图书信息。⑨更新系统中图书信息。5.3.3分支事件流 ①输入图书ID。
②查询并显示图书信息。5.4异常事件流
①如果该图书已经存在,则系统显示提示信息,用例被终止。②如果查询不到该图书,则系统显示提示信息,用例被终止。
系统总体功能结构
根据用例图定义分析包以及分析包(子系统)之间的关系。
图书管理系统分析包详细结构
定义类、用例实现(序列图)、类关系图(1)系统登录
类图:
系统登录分析类图
用例实现:
登录系统成功顺序图
登录系统失败顺序图
(2)登录图书信息
类图:
登录图书信息分析类图
用例实现:
登录图书信息顺序图
(3)修改图书信息
类图:
修改图书信息分析类图
用例实现:
修改图书信息顺序图
(4)检索图书信息
类图:
检索图书信息分析类图
用例实现:
检索图书信息顺序图
(5)借阅图书 类图:
借阅图书分析类图
用例实现:
借阅图书顺序图
(6)归还图书
类图:
归还图书分析类图
用例实现:
归还图书顺序图
(7)借出图书一览表
类图:
借出图书一览表分析类图
用例实现:
借出图书一览表顺序图
(8)类关系图
系统实体类(业务类)之间的关系
(9)类的具体定义
1.图书表类
编号:A—l一0l
类名:图书表
职责:存放图书馆所能处理的所有图书的基本信息
属性:图书代号,图书名称,编著者,ISBN代码,出版社代码,出版年份,页数,价格,购入日期,过期日期,书架代码,备注
说明:该类存放所有图书类的公用信息,它是“图书借阅表”的父类。图书也有身份,可以通过不同的ISBN相区别。在图书管理系统中,图书也有相关的行为,图书因为使用期限等可以被销毁,所以图书表也是系统中的一个对象。
2.登录图书界面类
编号:A一1—02
类名:登录图书界面
职责:提供输入所有图书信息的界面
属性:图书代号,图书名称,编著者,ISBN代码,出版社代码,出版年份,页数,价格,购入日期,过期日期,书架代码,备注
说明:该类的所有属性是非持久性的,但它为用户保存永久性的图书属性提供了一个临时的输入接口。
3.登录图书信息控制类
编号:A—l—03
类名:登录图书信息控制类
职责:实现登录图书界面类与图书表类所提供信息的交互。
属性:图书代号,图书名称,编著者,ISBN代码,出版社代码,出版年份,页数,价 格,购人日期,过期日期,书架代码,备注
说明:该类的所有属性是非持久性的,但它为用户保存永久性的图书属性提供了一 个临时的输人接口。
4.出版社表类
编号:B—l—01
类名:出版社表
职责:存放图书表所使用的所有图书的出版单位
属性:出版社代码,出版社名称
说明:该类与出版社表之间存在着单向关联的关系。
5.读者表类
编号:C一1一Ol
类名:读者表
职责:存放图书馆的所有读者的基本信息
属性:读者代码,读者名,联络电话
说明:该类类描述了物理借阅者的信息,代表了系统中存储的物理借阅者的信息,即物理借阅者在系统中的账户。同时,读者表又是图书借阅表的组成成分之一。
6.图书借阅表类
编号:D—l—01
类名:图书借阅表
职责:存放图书馆所能处理的所有图书的基本信息
属性:图书代号,读者代号,借书日期,还书日期,说明:该类描述了从图书馆借阅图书的借阅记录。一个该类的对象对应一个借阅者和一本图书。该类的对象的存在表示借阅者借阅了借阅记录中记录的物理图书。当图书被归还时,要删除借阅记录(对象)。
形成系统分析规约(注意规约可能会有活动图、状态图等)
3.系统设计
设计模型的主要工作: 1).软件平台设计
软件平台是系统开发和运行的环境。图书管理系统的开发和运行环境如下:
· 操作系统——操作系统是计算机系统中最重要的系统软件。图书管理系统可以运行在Windows 95/98/2000/NT/Windows XP等桌面操作系统上。
· 支撑软件——支撑软件是协助人们开发和维护软件的工具和环境软件。数据库系统、集成开发环境等都属于支撑型软件,例如,Delphi、Oracle、Java等。图书管理系统使用的DBMS是Access 2003,数据库中间件是JDBC。
· CASE平台——采用CASE开发环境可保证系统开发质量,提高开发效率,保证文档的一致性。图书管理系统的分析、设计j实现和部署模型是在Rose 2003建模环境下创建的,清晰地表达了在不同的开发阶段的系统模型。2).结构设计
结构设计是把软件分解成为多个子系统,并确定出由各子系统及其接口构成的软件结构。子系统是对软件分解的一种中间形式,也是组织和描述软件的一种方法。由多个子系统构成系统软件,每一个子系统又包括多个用例设计、设计类和接口。结构设计具体要做的工作是将系统划分成相对独立、功能相对完整的子系统(包),将系统模型中的元素划分到不同的包中,说明在什么地方定义包,各个包之间的依赖性和主要通信机制。从而得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽量减少双向的依赖关系。3).详细设计与界面设计
详细设计是对软件结构中确定出的各个子系统内部的设计,需要分析和确定每一个子系统中的用例设计、设计类和接口。详细设计还要描述每个类的细节,并用动态模型描述类的实例在具体环境中的行为。
界面设计是对人和外部系统与系统之间交互界面的设计,包括输入界面、输出界面和输入/输出界面的设计。另外,界面设计还涉及到人机交互方式、人机交互流程、输入输出设备和媒体等内容。4).数据库设计
数据库是系统存储和管理数据的主要技术手段,数据库设计的任务是根据给定的系统应用需求和系统环境,设计出合理的数据库结构。数据库设计可分为概念设计、逻辑设计和物理设计3个阶段。用UML进行数据库设计的主要思想,是利用UML的扩展机制定义一些版型,用于表示与数据库相关的一些概念。Rose 2003提供了对数据库设计的支持,所设计的模型可以直接生成具体数据库中的表、触发器、存储过程等。
系统结构设计
系统框架视图
· 用户界面包(User Interface Package)——用于描述整个用户界面使用的类,这些类提供的操作允许用户浏览系统中的数据,允许用户输入新数据。用户界面类基于Java AWT包设计,AWT包是Java语言中用于编写用户界面应用程序的一个标准库。用户界面包与业务模型包相互协作,调用业务模型包中类实例的方法对图书信息进行检索和插入操作。
。业务模型包(Business Model Package)——包含分析阶段主要的类(借阅图书类、归还图书类、图书类、读者类、出版社类)。在设计阶段将进一步细化这些类,从而完整地定义它们的操作,并为它们增加永久性存储支持。业务模型包与数据库包相互协作,访问数据库中的数据。· 数据库包(Database Package)——为业务模型包中的类提供数据存取服务,以便这些类能够实现数据的永久性存储功能。
。组件包(Utility Package)——包含一些可以被系统中其他包所使用的服务。
界面设计
详细设计
图书信息管理详细设计:
1.设计类图
“图书信息管理’’是一个用例,在“图书信息管理”用例所提取的3个概念类的基础上,可以确定该用例有3个设计类:登录图书信息(LoginBook)、修改图书信息(UpdateBook)、检索图书信息(SelectRook)。如图13.2所示为“图书信息管理”用例的设计类图。
“图书信息管理”用例设计类图
·
BpFrame类——属于用户界面包,定义系统检索与修改界面的框架。
·
BpSelectFrame类——属于用户界面包,继承BpFrame类,定义检索界面框架。
·
BpUpdateFrame类——属于用户界面包,继承BpSelectFrame类,定义系统修改界面框架。
·
SelectBook类——属于用户界面包,继承BpSelectFrame类,与DbChoice类相关联,显示图书信息检索界面。
·
LoginBook类——属于业务模型包,继承BpUpdateFrame类,与DbChoice类相关联,实现图书信息登录功能。
·
UpdateBook类——属于业务模型包,继承BpUpdateFrame类,与DbChoice类相关联,实现图书信息修改功能。
·
DbChoice类——属于组件包,定义了用于数据库操作的实例变量和实例方法。
2.顺序图
为实现用例的功能,每个用例要实现的功能要通过用例中各个类的对象的操作的相互协作完成,这就要在顺序图或协作图中反映各个对象之间的消息调用过程。如图13.3所示为添加的图书ID不重复的情况下“登录图书信息”用例的顺序图。
“登录图书信息”顺序图
3.属性和方法设计
用例设计中识别出了大量的设计类,接下来要详细地设计所识别出来的每一个设计类,即设计类的属性和方法。属性设计应该注意的问题是:一要补充属性分析时没有考虑到的属性,确定属性的全部内容,其中包括属性名、可视性、范围、类型、初始值;二要尽量采用系统采用的程序设计语言的语法规范描述属性。
方法设计包括数据结构设计、算法设计和流程设计。方法设计要注意的是:一要立足于所采用的程序设计语言;二所选用的程序设计语言应该能够提供丰富的数据结构;三要根据所实现的功能确定算法设计;四是可以用程序流程图或活动图来描述流程设计的结果。
如图所示为添加了属性和方法“图书信息管理”用例的设计类图。
添加属性和方法后的“图书信息管理”类图
LoginBook类的属性和方法设计如下:
·
sql属性——定义执行插人操作的SQL命令字符串。
·
chpublish_id属性——定义出版社ID。
·
LoginBook()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供添加图书信息界面。
·
cheekInsea()方法——①检查各输入项的输人格式是否正确;②检查图书ID是否重复。
·
makelnsertStmt()方法——定义执行插人操作的SQL命令字符串。
·
afterlnsert()方法——清空登录图书界面的各输入项。
SelectBook类的属性和方法设计如下:
·
sql属性——定义执行插入操作的SQL命令字符串。
·
chpublish_id属性——定义出版社ID。
·
SelectBook()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供检索图书界面。
·
checkSelect()方法——检查是否输入要检索的图书ID。
·
makeSelectStmt()方法——定义执行检索操作的SQL命令字符串。
·
setSelectedData()方法——显示检索图书的结果。
·
clear()方法——清空图书检索界面各检索项。
UpdateBook类的属性和方法设计如下:
·
sql属性——定义执行插入操作的SQL命令字符串。
·
chpublish_id属性——定义出版社ID。
·
UpdateBook()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供检索图书界面;③提供修改图书功能。
·
checkSelect()方法——检查是否输人要检索的图书ID。
·
makeSelectStmt()方法——定义执行检索操作的SQL命令字符串。
·
setSelectedData()方法——显示检索图书的结果。
·
clear()方法——清空图书修改界面各修改项。
·
checkUpdate()方法——检查各修改项的修改格式是否正确。
·
makeUpdateStmt()方法——定义执行修改操作的SQL命令字符串。
读者信息管理详细设计: 1.设计类图
“读者信息管理”是一个用例,在“读者信息管理”用例确定了3个概念类:添加读者信息、修改读者信息、检索读者信息。但是,该用例的功能相对比较简单。可以用1个设计类Borrow实现这3个概念类的功能。如图所示为“读者信息管理”用例的设计类图。
图13.5 “读者信息管理”用例设计类图
· Borow类——属于业务模型包,继承BpupdateFrame类,实现读者信息添加修改和检索功能。
2.顺序图
如图13.6所示为添加的读者ID不重复的情况下“添加读者信息”用例的顺序图。
“添加读者信息”顺序图
通过分析如图所示的顺序图,可以得到下图所示为“读者信息管理”用例的设计类图。
图优化后的“读者信息管理”用例设计类图
3.属性和方法设计
如下图所示为添加了属性和方法“读者信息管理”用例的设计类图。
添加属性和方法后的“读者信息管理”类图
Borrow类的属性和方法设计如下:
· sql属性——定义执行插入操作的SQL命令字符串。
· Borrow()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供添加、修改和检索读者信
息界面。
· checkSelect()方法——检查是否输入要检索的读者ID。
· makeSeleetStmt()方法——定义执行检索操作的SQL命令字符串。
· setSelectedData()方法——显示检索读者的结果。
· ehecklnsert()方法——检查是否可执行插入操作。
· makeInsertStmt()方法——定义执行插入操作的SQL命令字符串。
· afterlnsert()方法——清空各输入项。
· checkUpdate()方法——检查是否可执行修改操作。
· makeUpdateStmt()方法——定义执行修改操作的SQL命令字符串。
· checkData()方法——检查各输入项的输人格式是否正确。
· clear()方法——清空各文本框。
出版社信息管理详细设计: 1.设计类图
“出版社信息管理”是一个用例,可以用1个设计类Publish实现添加出版社信息、修改出版社信息、检索出版社信息3个概念类。如图13.9所示为“出版社信息管理”用例的设计类图。
图13.9 “出版社信息管理”用例设计类图
· Publish类——属于业务模型包,继承BpUpdateFrame类,实现出版社信息添加、修改和检索功能。
2.顺序图
如图13.10所示为添加的出版社ID不重复情况下“添加出版社信息”用例的顺序图。
图13.10 “添加出版社信息”顺序图
3.属性和方法设计
如图13.1l所示为添加了属性和方法“出版社信息管理”用例的设计类图。
图13.11 添加属性和方法后的“出版社信息管理”类图
Publish类的属性和方法设计如下:
· sql属性——定义执行插入操作的SQL命令字符串。
· Publish()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供添加、修改和检索出版社信息界面。
· checkSelect()方法——检查是否输入要检索的出版社ID。
· makeSelectStmt()方法——定义执行检索操作的SQL命令字符串。· setSelectedData()方法——显示检索出版社的结果。· checklnsert()方法——检查是否可执行插入操作。
· makeInsertStmt()方法——定义执行插入操作的SQL命令字符串。· afterInsert()方法——清空各输人项。
· checkUpdate()方法——检查是否可执行修改操作。
· makeUpdateStmt()方法——定义执行修改操作的SQL命令字符串。· checkData()方法——检查各输入项的输人格式是否正确。· clear()方法——清空各文本框。
图书借还信息管理详细设计: 1.设计类图
“图书借还信息管理”是一个用例,在“图书信息管理”用例所提取的4个概念类的基础上,可以确定该用例有4个设计类:借阅图书(BorrowBook)、归还图书(RetumBook)、借出图书一览表(BorrowBookList)和未按期归还图书一览表(OverdueList)。如图所示为“图书借还信息管理”用例的设计类图。
图“图书借还信息管理”用例设计类图
· BorrowBook类——属于业务模型包,继承BpUpdateFrame类,与DbChoice类相关联,实现图书借阅功能。
· ReturnBook类——属于业务模型包,继承BpUpdateFrame类,与DbChoice类相关联,实现图书归还功能。
· BorrowBookList类——属于业务模型包,继承BpSelectFrame类,与DbChoice类相关联,显示借出图书清单一览表。
· OverdueList类——属于业务模型包,继承BpSelectFrame类,与DbChoice类相关联,显示未按期归还图书与读者清单一览表。
2.顺序图
如图所示为读者ID与图书ID都存在情况下的“借阅图书”用例的顺序图。
“登录图书信息”顺序图
3.属性和方法设计
如图所示为添加了属性和方法“图书借还信息管理”用例的设计类图。
添加属性和方法后的“图书借还信息管理”类图
BorrowBook类的属性和方法设计如下:
· sql属性——定义执行插入操作的SQL命令字符串。
· BorrowBook()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供添加图书信息界面。· checklnsert()方法——①检查各输入项的输入格式是否正确;②检查借阅图书ID是否存在。
· makeInsertStmt()方法——定义执行插入操作的SQL命令字符串。
· afterInsert()方法——清空借阅图书界面的各输入项。
· checkSelect()方法——检查是否输入读者ID和图书ID。
· makeSelectStmt()方法——显示检索结果。
· checkDelete()方法——检查是否可执行删除操作。
· makeDeleteStmt()方法——定义执行删除操作的SQL命令字符串。
· afterDelete()方法——清空删除操作后的各输入项。
· clear()方法——清空所有的文本框。ReturnBook类的属性和方法设计如下:
· sql属性——定义执行插人操作的SQL命令字符串。
· RetumBook()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供图书归还界面。
· checkUpdate()方法——检查各修改项的修改格式是否正确。
· makeUpdateStmt()方法——定义执行修改操作的SQL命令字符串。· afterUpdate()方法——清空所有的文本框。BorrowBookList类的属性和方法设计如下:
· sql属性——定义执行插入操作的SQL命令字符串。
· BorrowBookList()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供实现“借出图书一览表”功能的界面。
· makeSelectStmt()方法——定义执行检索操作的SQL命令字符串。
· setSelectedData()方法——显示检索结果。OverdueList类的属性和方法设计如下:
· sql属性——定义执行插入操作的SQL命令字符串。
· xOverdueList()方法——类的构造方法。①调用DbChoice类的对象实例,以实现加载JDBC驱动程序,创建数据库连接等功能;②提供实现“未按期归还图书一览表”功能的界面。
· makeSelectStmt()方法——定义执行检索操作的SQL命令字符串。
· setSelectedData()方法——显示检索结果。
组件包设计:
组件包包含被所有其他包使用的通用组件,图书管理系统的组件包由Const、DbChoice、BpUtil三个类组成,这三个类定义了系统所有其他类所使用的公共常量与公共方法。另外,IconCanvas(加载系统界面所使用的图标)、MsgDialog(信息显示对话框)、SQLExceptionDialog(显示数据库异常信息对话框)3个类也为系统所有其他类所公共使用。在此与组件包中的类一起进行说明。1.Const类
Const类定义了系统所使用的公共名称等常量,其类图如图所示。
Const类的类图
2.BpUtil类
BpUtil类定义了系统使用的公共方法,其类图如图所示。
BpUtil类的类图
BpUtil类的方法设计如下:
· repeateString()方法——返回指定个数的字符串对象。
· varchar2text()方法——返回按照指定长度调整的字符串对象。
· setComp()方法——在组件上按照CridBagConstraints布局配置Panel。· checkWaming()方法——检查数据库连接操作是否出现异常。· isNumeric()方法——验证字符串能否转换为数值。
· getToday()方法——以YYYY/MM/DD的格式返回今日的日期。
· getToday()方法——返回以今日为基点的指定为YYYY/MM/DD格式的日期。· isYMD()方法——验证能否识别YYYY/MM/DD格式的字符串。· GB2312Unicode()方法——GB2312转换为Unicode。· UnicodeGB2312()方法——Unicode转换为GB2312。
· getRowCount()方法——求数据表中满足条件的记录数。
· convYMD()方法——Java.util.Date类型数据转换为YYYY/MM/DD格式。
3.DbChoice类
DbChoice类定义了用于数据库操作的实例变量与实例方法,其类图如图所 示。
DbChoice类的类图
DbChoice类的属性和方法设计如下:
· con属性——定义用于数据库连接的实例变量。· query属性——定义用于SELECT语句的实例变量。· displayCol属性——定义用于检索结果的列数。
· valueCol属性——定义方法getSelectedVal()返回值的列数。
· vItem属性——定义用于保存方法getSelectedVal()返回值的Vector · DbChoice()方法——构造方法,用于初始化实例变量。· setQueryData()方法——执行检索操作。· getSelectedVal()方法——返回检索结果。· setValueCol()方法——设置列的值。· getValueCol()方法——返回列的值。
· setDisplayCol()方法——设置显示列的值。· getDisplayCol()方法——返回显示列的值。
· setDisplayhem()方法——设置显示项的列的值。4.IconCanvas类
IconCanvas类用于完成加载系统界面所使用图标的功能,其类图如图所示。
IconCanvas类的类图
IconCanvas类的方法设计如下:
· IconCanvas()方法——构造方法,用于完成加载图像文件的功能。· paint()方法——用于完成显示图像文件的功能。5.MsgDialog类
MsgDialog类用于完成显示系统界面所使用的信息对话框功能,其类图如图13.19所 示。
MsgDialog类的类图
MsgDialog类的属性和方法设计如下:
· MsgDialog()方法——构造方法,用于生成信息显示区域,定义信息对话框的标题、布局管理器等功能。
· actionPerformed()方法——用于处理发生的事件。
6.SQLExceptionDialog类
当发生数据库异常时,SQLExceptionDialog类定义了用于显示数据库异常信息对话框,其类图如图所示。
SQLExceptionDialog类的类图
SQLExceptionDialog类的属性和方法设计如下:
· SQLExceptionDialog()方法——构造方法,用于定义发生的SQL异常。· actionPerformed()方法——用于处理发生的事件。· setMessage()、方法——用于显示发生的异常信息。系统管理详细设计:
系统管理由Bookplate和LoginDialog两个类组成,Bookplate类用于显示系统主功能界面,LoginDialog类用于显示用户登录对话框界面。Bookplate类与LoginDialog类之间有单向关联关系,即Bookplate类中定义的实例变量dialog可以调用LoginDialog类的构造函数,以实现系统登录界面的显示,描述两者之间关系的类图如图所示。
“系统管理”用例设计类图
Bookplate类的方法设计如下:
· main()方法——系统执行的入口点,用于显示系统主功能界面。
· Bookplate()——构造方法,用于设置系统框架(Frame)、标题、菜单、按钮布局、标签等系统组件。
· aetionPerformed()——当用鼠标左键点击各功能按钮时,分别调用各个子功能系统,同时实现生成、显示和隐藏对应的框架的功能。LoginDialog类的方法设计如下:
· LoginDialog()方法——构造方法,用于设置用户登录对话框界面的标题、显示信息区域、设置标签和文本域、生成按钮等功能。
· actionPerformed()——当用鼠标左键点击功能按钮时,处理所触发的事件。· getStatus()——返回按钮的状态值。· getUserID()——返回用户ID。· getPassword()——返回用户口令。
数据库设计(表略)
完成设计规约
第四篇:基于UML的图书管理系统的分析与设计
基于UML的图书管理系统的需求分析与设计
摘要:本文对面向对象的概念、UML产生的背景及其基本内容进行了阐述,在对图书馆图书管理系统进行功能描述和需求分析的基础上,结合软件工程和面向对象需求分析,设计了基于UML的用例图、包图和顺序图,状态图等语言机制的图书馆图书管理系统模型。关键词: UML;建模语言;面向对象;需求分析;图书管理系统 1关于面向对象
面向对象是一种的程序设计方法,或者说它是一种程序设计类型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。它可以有不同层次的理解:
(1)从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
(2)从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。
(3)从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
面向对象的方法学包括了以下核心概念:
对象(object):即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。
类(class):类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。类的概念来自于人们认识自然、认识社会的过程。
消息(Message): 消息是指对象间相互联系和相互作用的方式。一个消息主要由5部分组成:发送消息的对象、接收消息的对象、消息传递办法、消息内容(参数)、反馈。
封装:对象间的相互联系和相互作用过程主要通过消息机制得以实现。对象之间并不需要过多的了解对方内部的具体状态或运动规律。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。类是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。在类中定义的接收对方消息的方法称为类的接口。
继承:类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系,以及对属性和操作的共享,即子类可以沿用父类的某些特征。
重载:重载是指类的同名方法在给其传递不同的参数是可以有不同的运动规律。在对象间相互作用时,即使接收消息对象采用相同的接收办法,但消息内容的详细程度不同,接收消息对象内部的运动规律也可能不同。关于UML UML(Unified Modeling Language)是在Booch方法、OOSE方法和OMT方法的基础上演化而来的基于面向对象技术的标准建模语言。它统一了面向对象建模的基本概念、术语和图示符号,描述了建模过程中所必须遵循的基本步骤,提供了一整套描述软件系统模型的概念和图形表示法,可从不同的视角为系统建模。统一建模语言UML是一种语义丰富、通用、可视化的建模语言和事实上的国际工业标准,易于理解和交流。UML提供的丰富的视图从多个视角描述系统的不同侧面,可以有效运用于软件的建模、分析与设计。标准建模语言UML的定义包括UML语义和UML表示法两个部分。UML语义通过其元模型来严格地定义。UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法来建模提供标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。UML的主要内容通常用用例图、类图、对象图、状态图、活动图、构件图、配置图、顺序图、协作图和包图等l0种图来描述,它们从不同的角度和层次为系统建模提供支持,完全可以 描述系统的方方面面。
与传统的软件建模方法相比, UML 有如下一些特点:(1)UML 是一个可视化建模语言, 是一种图形化的面向对象的设计工具语言,而不是可视化程序设计语言,但用UML描述的模型可与各种编程语言直接相连,把UML 模型映射成编程语言。在不同程序中使用同样的UML 图表类型, 因为UML 具有任意程序的独立性,定义一个标准程序不是一个UML 的目标。
(2)UML 是一种可用于详细描述的语言,其所建立的模型是精确、无歧义和完整的。同时UML是一种文档化的语言,对其各建模元素可进行详细说明,并能生成所建模型的文档。标准建模语言UML支持面向对象的分析与设计,定义良好、易于表达、功能强大。它的最大用途是利用图形来描述真实世界各个对象的符合表示,让所有系统设计者在构建系统需求分析、对象模型化定义到对象设计的整个开发过程完全标准化。3 本课题的研究意义
一个图书馆的图书资料库在正常运转中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。图书馆作为一个信息资源的集散地,图书和用户借阅资料繁多,包含着很多的信息数据。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用人工检查,对借阅者的借阅权限以及借阅天数等采用人工计算、手抄进行,数据信息处理工作量大,容易出错和丢失。因此,建立一个智能化、系统化、信息化的图书资料库是十分重要的。使用计算机软件对图书进行管理,是计算机应用的一部分。充分利用计算机的功能,实现对读者管理、书籍管理等自动化控制,将会使图书资料库的工作强度大大减弱,可以实现图书检索迅速、可靠性高、存储量大、寿命长、成本低,能最大限度地提高图书管理的效率,也是图书管理信息化、正规化管理的必然趋势。4 基于UML的图书管理系统的需求分析与设计过程
图书管理系统的开发和应用主要通过两个步骤来实现:首先是基于系统功能的需求分析,其次是系统模型的设计和实现。
4.1需求分析
需求分析是软件工程过程的一个重要阶段,其中一个主要任务是确定系统的功能需求,采用面向对象方法,基于UML的可视化系统需求分析,因为有用户的积极参与,既可以加快设计者对于问题的理解,又能够在系统描述方面减少语义差异,保证分析的正确性。需求分析的目标就是建立需求模型,即从功能需求出发建立用例模型, UML的用例视图从用户的需求中提取,以盒图的方式描述待开发的系统的功能需求。每个用例都指定了客户的需求即他们需要系统干什么。用例图为设计活动不仅记 录需求而且还提供了一种挖掘的信息, 它记录了需求到设计结果之间的映射关系,能够确保设计结果具有明确的根据或者说具有可维护性,基于UML的软件开发过程是以用例驱动的。
首先我们进行角色识别,角色识别的任务是找出所有可能与系统发生交互行为的外部实体、对象、系统。它们的行为不受系统控制,但是可以提供输入给系统。对于一所大学的图书管理系统,基本的功能是完成图书的借阅和相关信息的管理,服务的对象有本科生,研究生,教师,及其他学校的学生,还有社会人员,这些人可归结为一类即读者。而为帮助读者顺利完成借还书的可以是工作人员,可以是自动借还书机,他们可以归结为一类即图书管理人员。因此对于一个图书管理系统主要有两类角色,读者、图书管理员。
其次,在主要角色的基础上,可以识别出与角色相应的用例,从而得到系统的用例模型。与读者相关的过程包括:借书、还书、预定、图书信息检索、借阅查询(如查询本人借书记录、还书期限、是否超期)、个人相关信息查询及修改(如学号、姓名、性别、年级、专业、家庭住址、联系电话、出生日期、民族、政治面貌、身份证号等)。与图书管理员相关的过程包括:办理借书、办理还书、解除预定、图书订购、读者信息管理(增加/删除读者、修改读者权限及密码、借阅超期罚款)、图书信息管理(增加/删除数目、图书类别等相关信息的修改、流通情况)。系统管理(系统的登陆、退出、日志维护、系统更新)。以上分析中,与读者,图书管理员相关的过程构成了本系统的基本用例。
4.2 系统的整体结构
综上所述一个图书管理系统的整体结构可以分为三大模块:图书管理模块、读者管理模块、系统管理模块。
(1)图书管理模块包括与图书相关的一些过程,主要有图书的借出、图书的归还、预定、图书信息检索、图书订购、图书相关信息管理。
(2)读者管理模块主要包括与读者有联系相关的过程,主要有增加/删除读者、修改读者权限及密码、借阅信息查询、个人信息查询及修该、借阅超期和丢失罚款。
(3)系统管理模块包括系统的登陆、退出、系统维护、系统更新。综上我们画出系统的整体结构,如图一所示:
图书管理系统图书管理读者管理图一 图书管理系统的整体结构
系统管理 4.3 图书管理系统的用例图
从以上分析中我们不难得出系统的基本用例图,如图二所示:
借书/还书预定/解除预定图书检索图书信息管理图书订购借阅信息查询个人信息查询/修改读者信息管理 读者借阅超期罚款 图书管理员系统管理图二 系统的基本用例图
图书管理和图书管理是图书管理系统的重要组成部分,为此我们按照前文所述将图书管理模块和读者模块以及系统管理模块详细精化得出如下的用例图,如图
三、图
四、图五所示:
按年代查询图书借入借出管理出版社查询图书购入作者查询图书查询书名查询图书管理模糊查询图书管理员图书信息管理类别查询信息删除信息添加
图三 图书管理模块的用例图
信息修改增加/删除读者修改权限个人信息查询/修改图书管理员读者管理读者借阅信息查询读者办理挂失图四 读者管理用例图
超期/丢失罚款
登陆/退出软件更新系统管理系统更新 管理员系统维护硬件更新日志维护 图五 系统管理模块的用例图
4.4 图书管理系统的行为图
我们再进行动态建模分析。对于图书管理系统借书还书是两个重要的过程,我们先来分析一下借书、还书的一般过程,并由借书的一般过程画出其顺序图、协作图以及活动图。
(1)借书的过程:读者刷卡进入图书馆,或者先查询图书及个人借阅信息,或者直接去挑选图书,选择好图书后进入借书程序,管理员先检查读者的借书证件,查验能否借阅,比如:证件是否无效或书籍是否已经借满等,即检验其借书的合法性和有效性,如果是非法用户或借书数量范围外,则该读者不能借阅图书。如果满足借阅要求,则再获取所借书的标题以进行库内搜索,获取书目查询此书的数量,看是否还有此书,如果没有则阻止其他借书者可能进行的预订活动,将此书借出,根据书号将此书的借阅标志位取反以表示此书已借出,并将此书的书目减1。并为此读者记录借阅日期,以及归还日期,在归还日期内未能归还和续借的,并为其记录超借天数及罚款数额。
(2)还书过程:在返还图书的过程中,管理员首先获取读者的借阅信息和被归还的书籍的信息,如书标题信息,数量等,并一一审核每本书的归还日期是否超过应归还日期。在完成阶段,将此书的书号登记并设计标志位为已归还,以便读者网上预订和继续借阅,同时将此类图书的数量加1,如果读者超期或丢失所借书籍,则要进行赔偿处理。
所以我们不难画出借书一般过程的顺序图,如图六所示:
图书管理员读者信息图书信息修改图书借出刷卡进入并选书核对读者信息 图书扫描并消磁修改读者借阅信息图六 借书一般过程的顺序图
有顺序图可得到协作图,如图七所示。仔细分析借书过程的细节,可以画出如图八所示的活动图,它表示了复杂算法的过程,尤其是过程中的判断、并发和同步。
刷卡进入 读者挑选图书图书管理员 核对信息图书信息修改图书扫描 消磁读者借阅信息 修改读者信息图书借出
图七 借书一般过程的协作图
读者 管理系统N禁止入内刷卡是否为本馆服务对象Y输入卡号/密码选择图书N卡号密码正确?Y个人信息查询/修改Y借阅信息查询图书检索刷条形码显示读者相关信息能否借阅N确定借书NY刷图书条码更改改读者及图书的借阅信息退出是否借阅完毕YN图八 借书过程活动图
以上我们用多种语言机制分析了读者的主要相关事件流,下面我们绘制图书管理员使用系统的状态图分析图书管理员的主要事件流。从以上分析可知,图书管理员相关的过程包括:办理借书、办理还书、解除预定、图书订购、读者信息管理(增加/删除读者、修改读者权限及密码、借阅超期罚款)、图书信息管理(增加/删除数目、图书类别等相关信息的修改、流通情况)。由此我们可绘制如图九所示的图书管理员使用系统的状态图:
登陆关闭办理借书修改图书信息办理还书增加数目图书预留取消增加加读者解除预定删除读者查询数目存储信息修改读者权限查询读者信息图九图书管理员使用系统的状态图
4.5 图书管理系统的静态图
定义并描述了各个类后,我们可以根据实际情况引入包来管理类,本图书馆管理系统可以划分为四个包:用户管理:对系统用户进行管理,为用户提供信息服务接口,便于对系统进行操作。借阅管理包括借书处理,还书处理和罚款处理等。读者管理包括对读者图书等信息进行维护,主要有读者信息的增删,对图书更新资料进行维护。系统服务:包括系统登录检查,安全维护等。系统的包图如图十所示:
用户管理借阅管理读者及图书管理系统服务 图十 系统包图 4.6 图书管理系统的实现
经过系统分析和设计后,就可以根据设计模型在具体的环境中实现系统,生成系统的源代码、可执行程序和相应的软件文档,建立一个可执行系统。进而需要对系统进行测试和排错,保证系统符合预定的要求,获得一个无错的系统实现。测试结果将确认所完成的系统可以真正使用。参考文献
[1] 齐治昌.谭庆平.宁洪.软件工程.北京:高等教育出版社 [2] 张海藩.软件工程.北京:人民邮电出版社
[3] 董翔.基于UML的图书管理系统的开发和应用.科技情报开发与经济2008年第l8卷第l2期 [4] 吴开华.邢养晓.罗德撤
.数字图书馆元数据研究[J].中国图书馆学报,2002,(3).
[5] 刘治国.构建基于B/S结构的图书管理系统[J].信息技术,2005(3):72—73. [6] 管斌.袁国忠 译.用例驱动的UML对象建模应用-范例分析.北京:人民邮电出版社 结束语
本文以一个图书馆图书管理系统开发为背景,针对图书馆对图书资源进行有效利用和管理的功能需求,采用统一建模语言(UML)对图书资源进行面向对象的描述,通过利用统一建模语言UML中的各种图形,分析和设计图书管理系统,建起了图书管理的面向对象模型,探讨了基于UML的体系结构建模及其实现问题。由建模过程可以看出UML在体系结构建模方面存在很好的优势,不但从整体上正确描述了该图书管理系统的体系结构,并且可以充分利用UML面向对象的优势,从而实现整个软件系统面向对象的分析、设计与开发,大大缩短开发周期,最终使得项目成功完成,此管理系统节省了管理人员和读者的大量时间,有利于信息处理效率的提高。鉴于篇幅有限,本文只对主要部分和主要过程做了介绍,限于水平,欢迎各位读者对本文的缺点、错误提出批评。
第五篇:图书管理系统需求分析
云南工商学院09信息管理1班
图书管理系统需求分析
班级:09信息管理1班
组员: 唐学悦,段敏,杨文燕,胡勇毅,余科辑,林春宇,李波
任务分配情况:
云南工商学院09信息管理1班
目录 系统需求概述...............................................................................................................................3 1.1 图书管理系统功能概述....................................................................................................3 1.2 系统主要业务流程分析....................................................................................................3 1.3 系统功能模块分析............................................................................................................3 1.4 建立用例模型....................................................................................................................4 1.4.1 读者用例图.............................................................................................................4 1.4.2 图书管理员用例图.................................................................................................4 1.4.3 系统管理员用例图.................................................................................................5 1.5 详述用例............................................................................................................................5 2 系统分析.......................................................................................................................................6 2.1 类图....................................................................................................................................6 3 系统设计.......................................................................................................................................8 3.1 用例动态模型设计............................................................................................................8 3.1.1 实现“读者查询个人借阅信息”用例的动态模型.................................................8 3.1.2 实现“查询图书信息”用例的动态模型.................................................................9 3.1.3 实现“借阅图书”用例的动态模型.........................................................................9 3.2 类图设计..........................................................................................................................11 3.3 物理架构设计..................................................................................................................12 3.3.1 组件图...................................................................................................................12 3.3.2 配置图...................................................................................................................13 2
云南工商学院09信息管理1班
1.系统需求概述
1.1 图书管理系统功能概述
图书管理主要是借书、还书以及其他一些附带操作(例如,超期罚款、催还图书等)的处理。一个简单的图书管理系统应提供如下功能:
·借书处理:完成读者借书的流程处理。·还书处理:完成读者还书的流程处理。
·信息查询:包括图书信息查询和读者借阅情况查询。·图书管理:包括输入新书记录和删除旧书记录。
1.2 系统主要业务流程分析
与系统功能相对应,系统主要有4个流程:结束流程、还书流程、图书查询、图书资源管理。各流程的主要过程描述如下:
·借书流程:读者借阅所需的图书,借出后图书记录中的借阅标志被置为false(不能再借),借书文件中增加一个借书记录。
·还书流程:读者归还所借的图书,还书后图书记录中的借阅标志被置为true(可被外借),在借书文件中删除一个借书记录。
·图书查询:读者和工作人员可以进行图书信息查询,输入图书的编号或书名,可从图书对象列表中查找相应的记录。
·图书管理:首先由工作人员在“录入新书资料”和“删除旧书资料”两个选项中选择。若是“录入新书资料”,则由工作人员输入新书资料,将新书添加为对象列表的新纪录。若是“删除旧书资料”,则查找需要删除的图书,将其从图书对象列表中删除。
1.3 系统功能模块分析
满足上述需求的系统主要包括以下几个系统模块:
·基本业务处理模块:主要用于实现图书管理员对读者借阅图书和归还图书的处理。
·信息查询模块:重要用于实现读者对图书信息和自身借阅信息的查询。
云南工商学院09信息管理1班
·系统维护模块:主要用于实现系统管理员对读者信息、图书管理员信息、图书信息、和数据库的管理。
1.4 建立用例模型
根据功能需求构造用例模型,主要任务是识别系统中的所有参与者,并对每个参与者找出其用例,建立用例模型。
系统主要的参与者为“读者”、“图书管理员”、和“系统管理员”。各个参与者的用例图如下:
1.4.1 读者用例图
<
图1-1 读者用例图
1.4.2 图书管理员用例图
<
图1-2 图书管理员用例图
云南工商学院09信息管理1班
1.4.3 系统管理员用例图
添加书目添加读者删除书目删除读者系统管理员查询图书查询读者
图1-3 系统管理员用例图
1.5 详述用例
在识别了参与者和主要用例并创建了用例图之后,如果有必要,还可以按顺序详述每个用例,包括用例如何开始、结束以及如何与参与者进行交互。
表1-1 读者查找个人借阅信息用例
用例:读者查找个人借阅信息(用例名称)(唯一标识符)(涉及用例的参与者)(用例开始时,系统必须满足的条件)ID:1参与者:
1、读者前提条件: 读者已登录到系统事件流:
1、读者选择查找个人借阅信息界面
2、读者输入图书证编号
3、系统按图书证编号查找读者借阅信息结果:系统向读者显示读者借阅信息,该用例结束(用例中的实际步骤)(用例结束时,系统的状态)
云南工商学院09信息管理1班
表1-2 读者查找图书信息用例
用例:读者查找图书信息(用例名称)(唯一标识符)(涉及用例的参与者)ID:2参与者:
1、读者(用例开始时,系统必须满足的条件)前提条件: 读者已经启动图书管理系统,并已知书名或书号事件流:
1、读者选择查找图书信息界面
2、读者输入书名或书号
3、系统按书名或书号查找图书信息结果:系统向读者显示图书信息,该用例结束(用例中的实际步骤)(用例结束时,系统的状态)系统分析
2.1 类图
在定义系统需求后,下一步就是确定系统中存在的对象类。系统中对象类的识别可以使用名词/动词分析法来进行,即文本中的名词和名词短语暗示类或类的属性,动词和动词短语暗示职责或者类的操作。
通过用例图的分析可知,在图书管理系统中可以确定的主要对象类包括 “读者”,“图书”、“图书管理人员”和“系统管理员”。其中“读者”和“图书”通过借阅关系可以构成一个新类“借阅记录”。
另外,分析用例图可知,用例“身份验证”和“图书资料查询”是对象类“读者”和“工作人员”共同拥有的,并且用例“身份验证”是除用例“图书资料查询”之外其余用例执行的前提,因此可以将“身份验证”与“图书资料查询”定义为接口类中的操作(接口类是不含属性且操作函数没有具体实现的抽象类,接口类通过一个实现联系获得其它对象类的支持,这些对象类实现接口类中定义的全部操作)。其余用例则抽象为与该用例交互的参与者所属对象类的操作。因此,最后可获得的对象类图为:
云南工商学院09信息管理1班
系统管理员-name-password1*读者-name-number-password+借书()+还书()+借阅情况查询()***<
图1-4 系统对象类图
除了定义上述用于系统数据信息存储管理和业务逻辑控制的类之外,在用图形用户界面开发系统时,我们还可以定义一些相应的用户界面类:
(1)MainWindow类—MainWindow是图书管理员与系统交互的主界面,系统的主 界面具有菜单,当用户选择不同的菜单项时,MainWindow对象调用相应的方法完成功能操作。
(2)BorrowDialog类—BorrowDialog是进行借书操作时需要的对话框。(3)ReturnDialog类—ReturnDialog是进行还书操作时需要的对话框。(4)QueryDialog类—QueryDialog是查询某借阅者的借阅信息或图书库存信息的对话框。
(5)MaintenanceWindow类—MaintenanceWindow是系统管理员对系统进行维护的主界面,它也提供菜单项。
ReturnDialogBorrowDialogMainWindowQueryDialogMaintenanceDialog 图1-5图书管理系统的用户界面类
云南工商学院09信息管理1班 系统设计
系统设计的主要工作是用例实现—设计。即对每个用例进行动态建模,包括建立序列图、协作图等,描述如何通过类对象的协作来实现用例中的功能。随着动态建模的深入,会发现原来建立的类存在缺陷或不够完整,需要对分析中得到的类图进行不断的修正和调整。所以,还应该通过动态建模来修正和完善类图。
3.1 用例动态模型设计
3.1.1 实现“读者查询个人借阅信息”用例的动态模型
:MainWindow:QueryDialog:BorrowBookBorrower1:queryLoan2:createDialog3:queryLoanInfo4:getBook5:消息查询6:返回借阅信息7:显示借阅信息
图1-6 读者查询个人借阅信息序列图
1:queryLoan():MainWindowerBorrower6:显示借yLoanInfo()阅信息5:返回借阅信息:Borrower-Book4:getBook():QueryDialog2:createDialog()3:qu
图1-7 读者查询个人借阅信息协作图
云南工商学院09信息管理1班
3.1.2 实现“查询图书信息”用例的动态模型
:MainWindow:QueryDialog:BorrowBookBorrower1:queryLoan2:createDialog3:queryLoanInfo4:findBook5:图书信息查询6:返回图书信息7:显示图书信息 图1-8 读者查询图书序列图
1:queryLoan():MainWindowerBorrower6:显示图yLoanInfo()书信息5:返回图书信息:Borrower-Book4:findBook():QueryDialog2:createDialog()3:qu
图1-9 读者查询图书协作图
3.1.3 实现“借阅图书”用例的动态模型
云南工商学院09信息管理1班
:MainWindow:BorrowDialog:QueryDialogBorrower1:queryLoan2:createDialog4:查询图书库存5:返回图书是否可借6:修改读者的借阅信息及库存信息7:修改成功8:显示借书成功
图1-10 读者借阅图书序列图
2:createDialog()oan():MainWindow:BorrowDialogry1:queL息6:显示借书成功存库信书借存图可库询否及查是息功:4书信成图阅改修Borrower回借:7返者:读5改修:6:QueryDialog
图1-11 读者借阅图书协作图
云南工商学院09信息管理1班
3.1.4 实现“归还图书”用例的动态模型
:MainWindow:ReturnDialog:QueryDialogBorrower1:queryLoan2:createDialog3:修改读者的借阅信息及库存信息4:修改成功5:显示还书成功
图1-12 读者归还图书序列图
1:queryLoan():MainWindowBorrower6:显示还书成功4:修改成功:QueryDialog3:修改读者的借阅信息及库存信息:ReturnDialog2:createDialog()
图1-13 读者归还图书协作图
3.2 类图设计
进一步扩充和细化分析阶段定义的类,包括定义新的类来处理用户的需求。随着动态建模的深入,也会发现原来建立的类存在缺陷或不够完整,需要对分析中得到的类图进行不断的修正和调整。所以,还应该通过动态建模来修正和完善类图。
云南工商学院09信息管理1班
系统管理员-name:string-password:string+AddBook()+QueryBook()+AddBorrower()+QueryBorrower()借书记录-borrower:string-book:string-date:Date+newLoan()+getBorrower()+getBook()11*读者-name:string-number:string-password:string+Borrow()+Return()+QueryLoan()***<
图1-14 设计类图
3.3 物理架构设计
物理架构设计就是用UML图形描述系统软件和硬件的大致结构,包括画出组件图和配置图。
3.3.1 组件图
组件图:表示构成软件系统的各物理组件及其相互之间的联系。它能明确表示软件系统各部分的功能职责。图书管理系统的组件图如下所示,其中包含“借/还书处理”、“信息查询”、“图书资源管理”和“身份验证”等组件。
云南工商学院09信息管理1班
图书管理系统借/还处理信息查询图书资源管理身份验证图书信息借阅信息
图1-15 系统组件图
3.3.2 配置图
图书管理系统是一个基于网络和数据库的应用系统,可以采用B/S结构,系统配置图下图所示:
数据库服务器图书信息借阅信息读者客户端借/还书处理工作人员客户端公共客户端身份验证图书资源管理借阅信息图书资料查询 图1-16 系统配置图