软件工程概论 上机实习指导书_第1页
软件工程概论 上机实习指导书_第2页
软件工程概论 上机实习指导书_第3页
软件工程概论 上机实习指导书_第4页
软件工程概论 上机实习指导书_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程概论上机实习任务与指导书计算机与信息工程系教师:桂兵祥实验一 “图书馆系统”结构化需求分析1、 上机任务:用结构化需求分析方法完成下列任务:1) 对“图书馆系统”问题进行描述;2) 对该系统进行功能分析;3) 建立数据流图;4) 建立实体-关系图;5) 建立数据字典;参考资料:图书馆系统的问题描述 一个图书馆藏有图书和期刊杂志两大类书籍,每种图书/杂志可以有多册。 图书馆可以维护(注册、更新和删除)图书资料。 图书馆管理员负责与借书者打交道。 借书者可以预约目前借不到的书或杂志。 所有人员都可以浏览图书馆的图书信息和各种告示。 系统能在流行的技术环境下运行,有一个良好的图形交互界面。

2、系统应具有良好的可扩展性。 图书馆系统功能分析 浏览功能:所有人员都可以浏览图书馆的图书信息。 借还功能:借书者可以借/续借、还、预约图书。 图书管理功能:图书管理人员可以做录入、更新和销毁等图书信息维护工作。 借书者管理:系统管理人员可以进行注册、更改、注销借书者信息等维护工作。 建立数据流图分析图书馆系统有哪些外部用户,即角色。图书馆系统主要有一般浏览者、借书者、一般管理员和系统管理员四类外部用户。 浏览者 浏览图书图3.16 图书馆系统的基本逻辑模型图书信息浏览命令借/还功能数据流图 图3.17 借/还功能(第一步)DFD 图3.18 借/还功能(修改)DFD借书者显示信息 借书 还书

3、续借 预约管理员借书者书目号和借书证号书目号书目号标题号和借书证号 借书 还书 续借 预约管理员借书者书目号和借书证号书目号书目号标题号和借书证号维护功能数据流图图3.19 维护功能(第一步)DFD 图3.20 维护功能(修改) DFD注册借书者注销借书者录入新书更改借者更新图书销毁图书处理罚金 管理员 管理员录入标题删除标题修改标题销毁书目修改书目录入新书 标题信息 标题号 标题号 书目信息 书目号 书目号 管理员管理员借书者验证借书者和图书书号借书证号创建借书记录显示失败信息更新借书者更新图书信息显示借书成功不允许借书记录图书信息允许图 借书功能细化的数据流图借书者建立实体-关系图图书馆系

4、统有“图书”和 “借书者”两个实体。在数据流图的分析中发现“图书”实体,没有真正区别借书和预约的关系。借书者是借一本具体的书,即“书目”,而预约图书指的是此类书,而不是指具体的某册书目。因此,要用“标题”实体区分二者,即预约的是书的“标题”,而不是“书目”。外部实体除了“借书者”,还有“系统管理员”。因此,必须考虑有严格授权进入的权限。 图书馆系统实体-关系图注册/更改/注册借书目条码号分类号ISBN录入/更新/删除ISBN号书名作者出版社馆藏数价格可借数图3.22 图书馆系统的实体-关系图系统管理工号姓名性别权限密码标题借书证号条码号借书日期归还日期续借次数借书记录借书证号姓名性别地址身份借

5、书数罚金借书者还包含续借借书证号ISBN预约日期图书号预约建立数据字典图书馆系统的图书信息分为“标题”和“书目”。标题描述抽象的书的信息,书目则是具体的每一本书的信息。 名称:标题别名:抽象的图书描述:描述一个抽象的图书的信息定义:标题=ISBN+书名+作者+出版社+出版日期版次+价格+目录+内容简介+馆藏数+可借数+预约数位置:图书查询,借书,还书,预约名称:书目别名:具体的书描述:对应标题的具体的一本书定义:书目=条码号+分类号+ISBN位置:借书、还书、更新图3.25 “标题”和“书目”的卡片描述实验二 “图书馆系统”OOA需求分析1、 上机实习目的理论联系实际,掌握面向对象分析(OOA

6、)和面向对象设计(OOD)技术,掌握软件开发过程中的需求分析与软件结构设计的基本方法。2、 上机实习内容“图书馆信息管理系统”的需求分析与软件结构设计;3、 上机实习要求a) 首先对该系统进行非形式化描述、并进行功能需求分析;b) 采用面向对象分析(OOA)的方法,用可视建模语言UML,给出该系统的用例视图、类图、借/还书功能的时序图和协作图、以及借/还书业务层的活动图;c) 采用面向对象设计(OOD)的方法,用可视建模语言UML,给出该系统的体系结构图、商业类模型、带有借书窗口的时序图、系统架构。4、 上机实习软件环境要求Visio或Rational Rose,OFFICE XP软件。5实习

7、报告提交要求 用WORD软件将实习内容、成果整理成文档,统一用A4纸打印,要求有封面和实习总结。1)问题描述: 一个图书馆藏有图书和期刊杂志两大类书籍,每种图书/杂志可以有多册。 图书馆可以维护(注册、更新和删除)图书资料。 图书管理员在系统的支持下,负责与借书者打交道。 借书者可以预约目前借不到的书或杂志。 所有人员都可以浏览图书馆的图书信息和各种告示。 系统能够在所有流行的技术环境下运行,有一个良好的图形交互界面。 系统应该具有良好的可扩展性。2)图书馆系统的OOA采用面向对象方法开发的图书馆系统,主要从借书者的角度分析系统的各种行为。 图书馆系统有借书者、管理员、系统管理员和一般浏览者四

8、种角色。1. 建立用例模型 给出图书馆系统的用例视图。 给出系统每个用例的脚本描述,包括正常情景和异常情景的脚本描述。 图书馆系统的用例视图查询图书查询系统信息系统管理员借书者一般浏览者普通管理员借书还书续借预约查询账户注册借书者更新借书者注销借书者更新标题删除标题录入书目更新书目删除书目管理借书者管理书目管理标题录入标题2. 建立侯选类给出非形式化描述:借书者可以借、还、续借图书馆的图书;图书馆的管理员维护借书者、图书目录和书目信息;借书者还可以预约没有归还的图书或新书,也可以取消预约,浏览和查询个人和图书信息;每本图书可以有多本,借书者不能借超过规定数目的图书;如果借书者有超期的图书或罚金

9、额度超过2元,则不能借书。通过筛选的侯选类有:借书者、图书标题和图书书目,分别建立它们的CRC卡。 图书馆系统的CRC卡协作者 :图书书目类责任:维护一个抽象书的数据,知道该书的可借数、预约数 图书标题类 协作者 :图书标题类责任:维护一个具体书目数据,通知相应的图书标题完成借、还功能 图书书目类 协作者 :图书书目类 责任:维护借的书目的数据和罚金,请求借、还、续借书目功能 借书者类 3. 构建类图需要一个“借/还”类来存储借书者的借书记录,一个预约者的“预约”类来存储预约记录。最终的类:借书者、图书标题、图书书目、借/还、预约。建立图书馆系统的类图。图书馆系统的类图1n借/还预约借书者图书

10、标题图书书目图5.13 图书馆系统的类图包含11nn借/还/续借预约/删除预约4. 动态建模 图书馆系统借书(未预约)功能的动态建模可以选择使用时序图、协作图、状态图和活动图描述。 图书馆系统的时序图:借书者:图书书目:图书标题2.1验证可借图5.14 图书馆系统借书功能的时序图:借书者借书2.借书3.创建借书记录4.更新图书标题5.更新图书书目6.更新借书者:借/还1.验证可借性图书馆系统的协作图1.验证可借性:借书者借书:借书者6.更新借书者:借/还 new:图书书目:图书标题图5.15 图书馆系统借书功能的协作图2.1验证可借4.更新图书标题2.借书5.更新图书书目3.创建借书记录图书馆

11、系统的活动图图书馆管理员图5.16 图书馆系统借/还书业务层的活动图借书者图书馆成员查找图书还书者排队等待还书借书记录还书图书回架记录借书准备为下一个成员服务实验三 “图书馆系统”OOD设计图书馆系统的OOD 1领域建模对图书馆系统进一步分析,将系统中的领域和关键类条理化,得出商业域类模型。图书馆系统类操作的细化,分析时通过协作图、时序图、活动图等给出描述了。其中,当使用时序图建模时,很显然需要窗口(或对话框)作为与角色的接口。借书、还书、预约、续借等都需要窗口,维护窗口也是必要的。图书馆系统商业域类模型 be loaned in a be reserved in a <Business

12、 Object>Item-id: integer+findonTitle()+findonid()+findonReservation() create()destroy<Business Object>Title-bookid: string-borrowednum: integer-reservatednum: integer+finde()create()destroycopy of <Business Object>Loan-id: integer-borroweddate: date-returndate: date-borrowerid: intege

13、rcreate()destroy<Business Object>Borrower-borrowerid: integer-name: string-borrowednum: integer-fine: number+find()create()destroyhas has <Business Object>Reservation-reserveddate: date-noticedate:date-borrowerid:integer-isbn:string+find()create()destroy图书馆系统时序图(有借书窗口)图5.27 带有借书窗口的时序图1.1

14、.1:okToBorrow2.1:borrow()2.1.1:oktoborrow3.1:loan()3.2:update()3.3:updatetitle()3.4:update()1.1:find(id):借书窗口:借书者:借书者Thecopy :图书书目thebook:图书标题:借还1:find member()2:find item()3:borrow(id, thecopy)2结构设计图书馆系统的架构用UML的包图描述 。图书馆系统架构设计成四个子系统包: 用户接口包 业务对象包 数据库包 应用包 图书馆系统的系统架构包图图5.28 图书馆系统的系统架构的包图(四个子系统)应用包用户

15、接口包业务对象包数据库包图书借阅子系统包图图5.25 图书借阅子系统子系统更新数据预约借还书标题子系统交互界面界面控制借书者书目子系统标识书目书目子系统标识借书者借书者3细节设计 UML中的动态模型被用来显示类的对象在指定的情况下如何动作,用例描述被用来验证用例在设计中的处理。还必须进行以下一些类/对象的细节设计: 永久存储对象 细化业务对象 用户界面类 图书馆系统(部分)类属性和操作<<Business Object>>BookItem-itemid:int-title:ObjId-loan:ObjId+BookItem()+getTitleName():string

16、+getId():int+setLoan()+getLoan():Loan+isBorrowed():boolean+write()+read()<<Business Object>>Loan-Item:ObjId-Borrower:ObjId-borrowDate:date-returnDate:date-extendTimes:int+Loan()+getBorrower():Borrower+getItem():Item+setItemId():int+getTitleName():string+getExtendTimes():int+setExtendTime

17、s()+setReturnDate()+getReturnDate():date+write()+read()Persistentabstract-ObjId:int-iter:RandomAccessFile+Persistent()+getObjId():ObjId+getObject():Object+store()+delete()+update()+iterate():Object+write() abstract+read() abstract用户接口(部分)包类图LendingWindow-borrower:Borrower-title:Title+LendingWindow()

18、+OkButtonClicked()+CancelButtonClicked()+borrowEditEnter()MainWindow+paint()+LendingItemAction()+ReturnItemAction()+ReservationAction()+MainWindow()+BorrowerAction()+TitleAction()+ExitAction()ReturnWindow-title:Title+ReturnWindow()+OkButtonClicked()+CancelButtonClicked()ReservationWindow-borrower:Bo

19、rrower-title:Title+ReservationWindow()+OkButtonClicked()+CancelButtonClicked()+findTitlebuttonClicked()TitleLoanItemBorrower4设计进化面向对象设计方法一个重要优势是开发的系统易维护。这是因为对象是可以被当作一个独立的实体去理解和修改的,变更对象的实现和添加新的服务不会影响系统中其他对象;对象也可以作为可复用的组件,这减少了设计、编程和维护的成本,降低了开发的风险。例如,在图书馆的借/还书功能中,若现在要考虑预约功能,那么只需要增加一个预约类,同时在“Borrower”类中

20、增加预约操作就可以了。 实验四 电梯控制系统OOA需求分析问题描述:在一幢有m层的大厦中安装一套n部电梯的产品,按照下列条件求解电梯在各楼层之间移动的逻辑关系: 每部电梯有m个按钮,每一个按钮代表一个楼层。当按下一个按钮时该按钮指示灯亮,同时电梯驶向相应的楼层,当到达相应楼层时指示灯熄灭。 除了最底层和最高层之外,每一层楼都有两个按钮分别指示电梯上行和下行。按钮按下时指示灯亮,当电梯到达此楼层时指示灯熄灭,并向所需要的方向移动。 当电梯无升降运动时,关门并停在当前楼层。电梯控制系统的OOA1. 类建模非形式化描述:在一幢m层楼的大厦里,用电梯内的和每个楼层的按钮来控制n部电梯的运行。当按下电梯

21、按钮以请求在某一指定楼层停下时,按钮指示灯亮;当请求获得满足时,指示灯熄灭。当电梯无升、降操作时,关门,并停在当前楼层。标识候选类:三个候选类电梯、按钮和门,按钮的两个子类电梯按钮和楼层按钮。电梯系统的类模型(1)图5.17 电梯的基本类模型(第一次迭代)通信通信2m-2mn 1按钮请求/指示灯 电梯按钮请求/指示灯 楼层按钮请求/指示灯 1 控制 1电梯电梯门电梯系统的类模型(2)按钮指示灯 电梯按钮指示灯 楼层按钮指示灯 1 控制 n电梯控制器电梯图5.18 电梯系统的基本类模型(第二次迭代) 控制2m-2mn mn 2m-21 11 1 n更新 控制 1 1 1请求电梯门更新通信2. 动

22、态建模给出正常的和异常的用例描述。根据用例描述,给出电梯系统的时序图或协作图。电梯控制器在电梯系统中起到至关重要的作用。为了更清楚地分析控制器的细节,可以建立电梯控制器的状态图。 电梯系统的时序图图5.19 电梯系统的时序图用户:楼层按钮:电梯按钮:电梯控制器:电梯:电梯门通知电梯控制器加亮楼层按钮熄灭楼层按钮按下楼层按钮按下电梯按钮通知电梯控制器加亮电梯按钮熄灭电梯按钮移动电梯 开始延时*移动电梯 开始延时*移动电梯开门关门开门关门:电梯门:电梯控制器:电梯按钮:楼层按钮开门 关门开门 关门移动电梯*移动电梯*移动电梯加亮按钮熄灭按钮通知控制器 通知控制器按下楼层按钮按下电梯按钮加亮按钮 熄

23、灭按钮启动延时启动延时用户A图5.20 电梯系统的协作图:电梯按下按钮电梯向d方向移动,f是下一层电梯停,有待处理的请求电梯停,没有待处理的请求用户要求停在f层图5.21 电梯控制器的状态图电梯控制器的循环控制开始 没有待处理的请求,电梯关门用户无要求处理请求,若灯不亮,接通按钮,并更新请求检测请求,决定是否有停止请求处理下一个请求,若灯亮关闭楼层按钮,关门,电梯按下一个请求的方向移动进入等待状态,关闭电梯门停在f层,开门。若灯亮,关灯,并更新请求继续向d方向移动电梯实验五 电梯控制系统OOD设计电梯控制系统的OOD 1. 确定类的行为(方法)电梯系统有7个类模型,即按钮、电梯、电梯按钮、电梯门、电梯控制器、楼层按钮、请求。电梯系统的功能模型必须包含设计的各种行为描述,反映行为的数据如何流动,而不反映行为的次序。一个行为可以分配给一个对象,也可以分配给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论