广州大学学生实验报告(三)
开课学院及实验室:
学院 | 年级/专业/班 | 姓名 | 学号 | ||||
实验课程名称 | 软件工程导论实验 | 成绩 | |||||
实验项目名称 | 软件设计 | 指导老师 |
一、实验目的
掌握软件设计建模技术,能够撰写软件设计文档。
二、实验器材
- 计算机一台;
- Rational Rose 等支持软件设计建模的软件。
三、实验内容
本实验需要完成如下任务:
- 实现类图建模;
类图表示类以及类与类之间的关系,显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
类图中存在的类有游客类、用户类、收件人类、商家类、客服类、物流公司类、账号类、个人信息类、浏览记录类、产品类、图书类、订单类、送货单类、订单项类。各个类中包含的具体内容如下:
(1)游客类包括游客昵称、游客号。
(2)用户类包括用户账号、用户账号密码、微信号、QQ号、收货地址、电话号、用户昵称、个人简介。
(3)收件人类包括收件人地址、姓名、手机号。
(4)商家类包括商家号、商家账号密码、商家地址、商家昵称。
(5)客服类包括客服账号、客服账号密码、客服昵称。
(6)物流公司类包括物流公司号、物流公司地址。
(7)账号类包括用户账号、用户账号密码、微信号、QQ号、电话号、账号状态、注册时间、最后登录时间。
(8)个人信息类包括用户账号、用户账号密码、微信号、QQ号、收货地址、电话号、用户昵称、个人简介。
(9)浏览记录类包括浏览时间、浏览内容、浏览记录号。
(10)产品类包括图书型号、图书数量、图书名。
(11)图书类包括图书号、图书名称、图书型号、图书价格、作者、出版社。
(12)订单类包括订单号、下单时间、订单地址、总计、支付类型。
(13)送货单类包括送货单号、发货时间、发货地址、收货地址、
(14)订单项类包括图书号、订单项号、商家号、图书型号、单价、送货状态。
- 绘制出相应的顺序图并生成协作图;
2.1生成订单的顺序图和协作图
其能够清晰描述网络书城商品管理子系统中生成订单的流程,其一共设计了五个类的对象,包括:用户、图书界面、图书、产品、支付。
首先用户请求图书下单界面,然后图书界面通过图书对象和产品对象分别获取图书号、图书型号和图书号对应的库存量。若库存量为空,则图书界面显示缺货提示;否则要求用户填写订单界面。用户选择单品数量,提交订单,图书界面返回订单生成界面给用户,要求用户进行订单支付。若用户成功支付,系统自动修改产品库存量,并显示订单成功支付界面;否则,显示订单待支付界面。
2.5 更新库存的顺序图和协作图
其能够清晰描述网络书城商品管理子系统中更新库存的流程,其一共设计了五个类的对象,包括:商家、图书库存信息修改界面、身份管理系统、库存管理系统、产品。
首先商家请求图书库存更新界面,然后身份管理系统检查商家身份。若商家身份异常,则由图书库存信息修改界面显示无法进行图书库存更新的提示;否则,库存管理系统从产品对象中获取图书类型和图书数量,然后再递交给图书库存信息修改界面进行图书库存信息显示。然后由商家指定需要更新库存量的图书类型,然后交由库存管理系统进行更新。若当前图书类型的库存数量为空,则图书库存信息修改界面显示图书库存更新失败提示;否则图书库存量更新成成功,显示图书库存量更新成功提示。
2.6 拆分订单的顺序图和协作图
其能够清晰描述网络书城商品管理子系统中拆分订单的流程,其一共设计了六个类的对象,包括: 拆分订单:订单、某订单:订单、订单项、图书、产品、送货单。
首先由系统自动执行拆分订单,然后某订单通过订单项获取商家号和图书型号,然后订单项再通过图书来获取商家号和图书型号,然后再依次由图书、订单项把图书号和图书型号递交给某订单。然后某订单再向产品类获取商家号对应的图书型号的库存。若库存为空,则拆分失败;否则,若商家号及其对应的图书型号的库存不为空且不存在于送货单中,则为送货单创建商家号并添加产品号;若商家号及其对应的图书型号的库存不为空且存在于送货单中,则只需添加产品号。最后显示拆分结果。
- 绘制相应的状态图;
3.1 订单状态图
事件开始(用户下单)后,订单处于待支付状态。若用户在规定时间(一天)内完成付款操作,订单状态转向已支付状态;否则订单逾时自动取消,事件结束。订单用户完成付款后,就会进入备货中的状态。订单中的商品发货后,就会进入运输中状态。在已支付、备货中、运输中这三种状态时,用户均可取消订单。订单中的商品送达目的地后,状态变为已送达,待确认收货。若用户签收并点击确认收货或用户签收后超过7天后自动确认收货,订单状态转为订单完成,事件结束;若用户拒绝签收,用户退货,订单状态转为退货中。商品退回时,订单状态变为已送达商家收货地址,待商家确认收货后,订单状态转为订单完成,事件结束。
3.2 库存查询状态图
事件开始(商家点击库存查询按钮)后,状态处于库存查询提示的状态。商家输入库存查询条件后,状态转向图书号已写入的状态。待商家点击库存查询提价按钮后,状态变为等待库存查询结果的状态。若无查询结果,则状态变为图书不存在的状态,事件结束;否则,状态变为图书数量显示状态,事件结束。
- 绘制相应的活动图。
4.3 创建订单活动图
事件开始(用户下单)后,系统自动创建订单,然后等待用户进行支付订单。用户支付订单后,商家进行备货,然后交由物流公司进行商品运输,待物流公司将商品送达至客户时,判断用户是否签收商品。若用户拒绝签收,用户选择进行退货,则用户将商品交由物流公司退回运输,待物流公司将商品送回至商家后,商家进行确认收货,最终订单完成,事件结束。若用户签收商品,则订单完成,事件结束。
4.4 拆分订单活动图
事件开始(用户下单)后,系统自动生成订单,然后进行拆分订单。系统获取商家号和商品型号,然后获取商家号对应的商品型号的库存。判断库存是否为空,若为空,订单拆分失败,事件结束;否则,判断商家号和商品型号是否存在于送货单中,若不存在,则为送货单创建商家号并添加产品号;若存在,则直接添加产品号。最后显示订单拆分结果,事件结束。
- 实验感想
1、在本实验中,我根据实验一中的用例图来进行网络书城地类图的设计,在类图中绘制了用户类、个人信息类、订单类等相关类,并绘制类与类之间的关系,其中尤为需要注意不要出错的是订单和订单项的关系是聚合关系。
2、在绘制网络书城系统的商品管理相关的顺序图过程中,我一开始没有将类设置为类的三种版型,在具体询问老师之后,明白了顺序图中大多数类都描述成实体类,很少使用控制类。课堂上提到的“界面”相关的类使用边界类的这种版型,“用户”、“游客”等相关类使用实体类的这种版型。在考虑到这些问题之后,我对顺序图进行了重新绘制。
3、顺序图和协作图是统一建模语言中两种不同但密切相关的图表,它们均用于描述系统中的交互和通信,均属于UML的行为图。顺序图主要关注系统中对象之间的交互信顺序和信息传递,展示生命周期中某特定时间点上对象之间的相互作用。协作图则强调对象之间结构和协作关系,显示对象之间的关联以及它们如何一起协作完成某个功能。在实验过程中,每个绘制出来的顺序图可以通过rational rose中的F5键进行直接转化为,非常方便。
4、通过绘制订单状态图,我能够清晰地描述了订单的整个生命周期,从用户下单到订单完成的各个阶段都有详细的状态和事件定义。这有助于理解订单在不同阶段的状态转换和用户与系统之间的交互。尤其是在用户取消订单、确认收货和退货的情境下,状态图很好地捕捉了用户的各种操作和系统的响应。库存查询状态图展示了商家进行库存查询的流程。通过定义不同的状态和事件,呈现了商家查询库存的步骤,包括输入查询条件、提交查询请求以及处理查询结果的过程。
5、在绘制创建订单互动图中,我明确地描述了商家、物流公司和用户之间的协同流程。此外,我还考虑到了用户拒绝签收并选择退货的情景。在绘制拆分订单活动图中,展示了系统如何处理订单的拆分过程。