收藏 分享(赏)

图书馆信息系统UML实例.ppt

上传人:hskm5268 文档编号:9817949 上传时间:2019-09-08 格式:PPT 页数:49 大小:414.50KB
下载 相关 举报
图书馆信息系统UML实例.ppt_第1页
第1页 / 共49页
图书馆信息系统UML实例.ppt_第2页
第2页 / 共49页
图书馆信息系统UML实例.ppt_第3页
第3页 / 共49页
图书馆信息系统UML实例.ppt_第4页
第4页 / 共49页
图书馆信息系统UML实例.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、2019/9/8,集美大学计算机工程学院,图书馆信息系统UML实例,2019/9/8,集美大学计算机工程学院,2,图书馆信息系统UML实例,本章将通过一个实例来说明在一个应用中如何使用UML通过前面的讨论首先在 分析模型中用用例和域分析来描述应用然后将分析模型扩展成设计模型描述技术上 的解决方案最后用Java语言编程具体实现可以运行的应用有一点需要说明的 是本章中讨论的例子并不包括所有的模型和图 本章讨论的案例是一个图书馆信息系统主要处理书和杂志的借阅和保存虽然它算不上是一个大的应用但可以对它作许多扩展.,2019/9/8,集美大学计算机工程学院,3,1.理解需求场景描述,下面是一份典型的文本

2、需求说明它是图书馆应用程序的需求说明是为系统的终端用户或客户而写的 它是图书馆的支持系统 图书馆将书和杂志借给读者,读者和书杂志一样必须在系统中注册 图书馆负责购买图书,对于流行的书一般要多买几本,如果旧书或杂志过期了或很破烂则可以从图书馆中删除 图书馆管理员是图书馆的雇员,负责与客户(借书者)打交道,他们的工作要得到系统的支持。,2019/9/8,集美大学计算机工程学院,4,1.1 理解需求一场景描述,借书者可以预订目前借不到的书或杂志,一旦预订的书被返还给图书馆或图书馆新购买书到达,就立即通知预订者 图书馆可以方便地产生更新和删除系统中与书目借书者借书(loan)和预订的有关信息 系统能够

3、在所有流行的技术环境下运行(UNIX,Windows,OS/2等等),还应该有一个非常好的图形用户界面(GUI) 系统应该具有很好的可扩展性,2019/9/8,集美大学计算机工程学院,5,2. 分析,分析就是描述系统的需求通过定义系统中的关键域类来建立模型分析的,根本目的是在开发者和提出需求的人(用户/客户)之间建立一种理解和沟通的机制,因此典型情下分析是开发人员同用户或客户一起来完成的。 分析不受技术方案或细节的限制,在分析阶段,开发人员不应该考虑代码或程序的问题,它是迈向真正理解需求和所要设计的系统的第一步。,2019/9/8,集美大学计算机工程学院,6,1. 用例视图描述图书馆系统的功能

4、,分析的第一步是定义用例,即描述图书馆系统的功能,确定系统的功能需求。用例分析主要涉及阅读和分析规格说明和系统的潜在用户讨论 图书馆中的角色为图书管理员和借书者,图书管理员是系统的用户,而借书者是客户,虽然偶尔图书馆管理员或另一个图书馆也可能是一个借书者。借书者的目的不是直接同系统交互,借书者的功能由图书管理员来实现。,2019/9/8,集美大学计算机工程学院,7,图书馆信息系统中的用例如下所示,借出书目(Lend Item) 返回书目(Return Item) 预订(Make Reservation) 删除预订(Remove Reservation) 增加标题(Add Title) 更新或删

5、除标题(Update or Remove Title) 增加书目(Add Item) 删除书目(Remove Item) 增加借书者(Add Borrower) 更新或删除借者书(Update or Remove Borrower),2019/9/8,集美大学计算机工程学院,8,标题(Title)和书目(Item),上述用例中出现的两个概念标题(Title)和书目(Item),因为在一个图书馆中一个流行的标题可能有好几本,因此系统必须将标题(可能是书名或书的作者)同其它的书目(代表一个指定标题的物理副本)区分开来,从图书馆借的是书目在图书馆拥有一本书的副本(书目)之前加一个标题到系统中是可能的

6、,这样做的目的是让借书者可以预 订。,2019/9/8,集美大学计算机工程学院,9,图书馆信息系统的分析可以用UML的用例图来描述如图所示,每个用例以文本的方式(可称为用例场景)来描述,描述的内容包括用例以及用例与角色交互的更详细的信息文本的内容,是通过与用户/客户讨论后确定的。,2019/9/8,集美大学计算机工程学院,10,用例借出书目的描述如下,2019/9/8,集美大学计算机工程学院,11,用例“借出书目”的场景描述-事件流,1如果借书者没有预订 a.标记标题 b.标记可用的该标题下的书目 c.标记借书者 d.图书馆借出标记的书目 e.增加一条新的借书记录,2019/9/8,集美大学计

7、算机工程学院,12,用例“借出书目”的场景描述-事件流,2如果借书者已经预订 a.标记借书者 b.标记标题 c.标记可用的该标题下的书目 d.图书馆借出标记的书目 e.增加一条新的借书记录 f.删除预订记录,2019/9/8,集美大学计算机工程学院,13,读者可以照此法描述其它的用例。在整个系统开发过程中,用例描述系统的功能需求,在分析阶段利用它们来检查某一域类是否已定义,在设计阶段可以用来证实技术方案是否能够处理要求的功能,可以在序列图中可视化用例。,2019/9/8,集美大学计算机工程学院,14,2. 领域分析-类图的建立,分析是将系统中的领域和关键类条理化,为了进行领域分析,需要阅读规格

8、说明和用例,了解系统要处理的概念(类),或将用户领域专家组织在一起开一个讨论会,设法确定所有必须处理的概念以及概念间的关系。 图书馆信息系统中的域类主要有读者,标题,书的标题,杂志标题,书目,预订和借书。,2019/9/8,集美大学计算机工程学院,15,2. 领域分析-类图的建立,有一点要强调的是在本阶段域类还是处于草图状态,定义的操作和属性不是最后的版本,只是在现阶段看来这些操作和属性是比较合适的,一些操作是在序列图的草图中而不是在用例中定义的。,2019/9/8,集美大学计算机工程学院,16,Item(书目)类的定义,2019/9/8,集美大学计算机工程学院,17,Title(主题)类的定

9、义,2019/9/8,集美大学计算机工程学院,18,Item与Title的关系,2019/9/8,集美大学计算机工程学院,19,Title(主题)的继承类,2019/9/8,集美大学计算机工程学院,20,2019/9/8,集美大学计算机工程学院,21,设计阶段和最后的UML模型是将设计阶段的模型进行扩展和细化,主要考虑所有的技术问题和限制。设计的目的是产生一个可用的解决方案,并且能够比较容易地将方案转换成程序代码。在分析阶段定义的类被进一步细化,定义新的类来处理技术方面的问题,如数据库用户接口通信设备等等。,2019/9/8,集美大学计算机工程学院,22,描述域类的动态行为,为了描述域类的动态

10、行为,任何动态UML图都可以使用序列图、协作图或活动图。例如,序列图的基础是用例,在序列图中说明域类如何协作来操作系统中的用例,很自然地,当建立这些序列图时将会发现新的操作,并将它们加到类中。,2019/9/8,集美大学计算机工程学院,23,用例借出书目的序列图(没有预订的情况),2019/9/8,集美大学计算机工程学院,24,用户接口的设计,当用序列图建模时很显然需要窗口或对话窗,作为到角色的接口。在下图中借出书目的窗口是存在的,在分析时意识到需要窗口来标识基本的接口就可以了,借出、预订和返还书目都需要窗口。维护窗口也是必要的。 详细的用户接口是设计阶段的一部分 在分析阶段为了将域类同窗口类

11、分开,将窗口类组装成一个GUI包(称为GUI包)将域类组装成业务包(Business Package)。,2019/9/8,集美大学计算机工程学院,25,Loan的新增操作,2019/9/8,集美大学计算机工程学院,26,某些类用UML状态图来显示类的对象的不同的状态以及改变状态的事件,有状态图的类有书目和标题,标题类的状态图如图所示。,2019/9/8,集美大学计算机工程学院,27,标题类的状态图,2019/9/8,集美大学计算机工程学院,28,3. 架构设计,一个设计良好的架构是系统可扩展和可改变的基础。包关心的是某一指定功能域或技术域的处理。将应用逻辑(域类)和技术逻辑分开是很关键的,从

12、而使得任何一个改变不至于对其它部分有太多的影响。在定义架构时需要描述的关键事情是标识和建立包间相关性规则,使得包间不存在双方相关性(避免包紧耦合在一起)。,2019/9/8,集美大学计算机工程学院,29,包或子系统的设计,本例中的包或子系统或层有如下几个: 用户接口包(User Interface Package),通过用户接口类用户可以浏览系统中的数据,输入新的数据这些用户接口类都是基于Java的AWT包。Java的AWT包是Java中用来写用户接口应用的标准库。该包同包含存储数据的类的业务包协作来完成任务用户接口包调用业务包中的操作来检索和插入数据。,2019/9/8,集美大学计算机工程学

13、院,30,业务对象包,业务对象包(Business Object Package),业务对象包包含分析模型中的域类如 Borrower Information,Title,Item,Loan,等等,这些类的所有细节都已有明确定义,所以类中的操作都已定义好了并支持加入持续性属性。业务对象包同数据包协作完成任务,因为所有的业务对象类必须从数据包中的持续性类(Persistent class)中继承下来。,2019/9/8,集美大学计算机工程学院,31,数据库包,数据库包(Database Package):数据库包提供服务给业务对象包中的类,所以可以永久地保存它们在当前版本中,持续性类将它的子类的

14、对象存放在文件系统中的文件。,2019/9/8,集美大学计算机工程学院,32,应用包,应用包(Utility Package):应用包提供服务给系统中其它种类的包。,2019/9/8,集美大学计算机工程学院,33,包及包间相关性的类图,2019/9/8,集美大学计算机工程学院,34,用户接口设计,在设计阶段进行的一项特殊活动是产生用户接口,定义用户接口的“外观和感觉”,这项活动是在分析阶段初始化且与其它活动分开来做,但同其它的工作同步进行。,2019/9/8,集美大学计算机工程学院,35,用户接口设计,基于用例的图书馆应用中的用户接口被分成四部分,每一部分在主窗口菜单中有一个独立的菜单包,如下

15、所示: 功能(Functions):系统中的基本功能窗口,也就是说借书、还书和预订。 信息(Information):浏览系统中的信息窗口有关标题和借阅者的信息 维护(Maintenance):维护系统的窗口也就是说增加、更新、删除标题、借阅者和书目。,2019/9/8,集美大学计算机工程学院,36,增加标题(Add Title)用例的序列图,2019/9/8,集美大学计算机工程学院,37,4.构造或实现阶段,构造或实现阶段是指编程实现类.在系统需求中,要求系统可以运行在许多不同的处理器和操作系统上,所以选择Java来实现系统. Java很容易将逻辑类映射到代码组件,因为这种映射是类和 Jav

16、a代码文件之间的一对一的映射(和一对一地映射到一个可执行的.class文件)Java也要求文件名应该同它包含的类的类名一样.,2019/9/8,集美大学计算机工程学院,38,组件图,下图说明设计模型中的组件图包含(在本例中)一个从逻辑的类到组件的简单映射。每个组件包含一条到逻辑类的描述的链接使得可以方便地在逻辑视图与组件视图间切换(即使在本例中使用的仅仅是文件名)。组件间相关性不在组件图中表示(除了业务对象包)因为相关性可以从逻辑类图中得到。,2019/9/8,集美大学计算机工程学院,39,2019/9/8,集美大学计算机工程学院,40,对于编码从下列设计模型中的图获得规格说明,类说明(Cla

17、ss Specifications)每一个类的规格说明详细显示必须有的属性和操作 类图(Class Diagrams):类图显示类的静态结构和类间的关系。 状态图:类的状态图显示类的所有可能到达的状态以及需要处理的状态转移(以及触发状态转移的操作) 动态图(序列图协作图活动图)显示类中方法的实现以及其它对象如何使用类的对象。 用例图和说明:当开发人员需要了解更多有关如何使用系统的信息时(当开发人员感到他正从细节中迷失时),可以通过该图来了解使用系统的结果。,2019/9/8,集美大学计算机工程学院,41,很自然地,在编码阶段设计模型中的缺陷可能会体现出来,因此可能增加新的操作或修改已有的操作,

18、也就是说开发人员不得不改变设计模型,所有的工程都可能会碰到这种情况。重要的是使设计模型与编码同步起来,使得模型可以作为系统的最终文档。,2019/9/8,集美大学计算机工程学院,42,Loan类的部分Java代码,这里给出的Java代码例子是有关Loan类和TitleFrame类,当研究这些代码时脑海中想着UML模型,并试图了解如何将UML结构转移成代码。,2019/9/8,集美大学计算机工程学院,43,Loan类的代码示例,/Loan.java;represents a loan.The loan refers to one title and one borrower. package b

19、o; import util.ObjId; import db.*; import java.io.*; import java.util.*;,2019/9/8,集美大学计算机工程学院,44,public class loan extends Persistent private ObjId item; private ObjId borrower; public Loan() public Loan(ObjId it,ObjId b) item=it; borrower=b; ,2019/9/8,集美大学计算机工程学院,45,public BorrowerInformation getBo

20、rrower() BorrowerInformation ret=(BorrowerInformation) Persistent.getObject(borrower); return ret; public String getTitleName() Item it=(Item)Persistent.getObject(item); return it.getTitleName(); ,2019/9/8,集美大学计算机工程学院,46,public Item getItem() Item it=(Item)Persistent.getObject(item); return it; publ

21、ic int getItemId() ,2019/9/8,集美大学计算机工程学院,47,5.测试和配置,当然必须对应用进行测试,对这个例子而言,首先用最初的用例来测试,检查应用是否支持这些用例,以及应用是否按照用例中所描述的那样运行。还需将应用交给用户进行测试。一个大规模的应用则要求更形式化的描述和错误报告。,2019/9/8,集美大学计算机工程学院,48,布署图用于表示系统配置,系统配置是指将系统提交给用户包括所有的文档。在一个实际的工程中,用户手册一般也是文档的一部分。还应该提交一个系统的物理配置图如下图所示。本例中的系统可以安装在任何支持Java的计算机上,注意根据需要可能还需要一台打印机。,2019/9/8,集美大学计算机工程学院,49,6.小结,本章通过一个具体的例子来说明分析模型的产生,并将分析模型扩展和细化成设计模型,最终用Java来实现系统。例子的不同部分由一组人员来共同实现,如同一个真正的工程一样。虽然不同的阶段和活动看起来好像是分离的,以及严格地按一定顺序进行。但是这项工作在实践中却是可重复的,根据设计中的经验和教训来更改分析模型,根据实现中发现的问题来指导对设计模型的修改,这就是最常见的面向对象系统的开发方式。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报