文章目录
软件体系结构文档模板
文档修改历史
| 修改人员 | 日期 | 修改原因 | 版本号 |
|---|---|---|---|
| 赵志翔 | 2020-04-23 | 补充文档内容 | v1.0 |
| 周润兴 | 2020-04-24 | 补充文档内容 | v1.1 |
目录
引言
编制目的
词汇表
| 词汇名称 | 词汇含义 | 备注 |
|---|---|---|
参考资料
产品概述
逻辑视图
-
处理静态设计模型
- 描述并绘制设计方案、逻辑表达
-
示意图
- 注意:逻辑表达需要更加细化
组合视图
开发包图
| 开发包 | 依赖的其他开发包 |
|---|---|
| mainui | adminui, hotelui, hotelManagerui, userui, orderui, couponui, vo |
| adminui | vo, adminblservice |
| adminblservice | vo |
| adminbl | adminblservice, admindataservice, hotelbl, po |
| admindataservice | po |
| admindata | databaseutility, po, admindataservice, hoteldataservice |
| userui | vo, userblservice |
| userblservice | vo |
| userbl | userblservice, userdataservice, po, orderbl |
| userdata | databaseutlity, po, userdataservice |
| userdataservice | po |
| orderui | orderblservice, vo |
| orderblservice | vo |
| orderbl | orderblservice, orderdataservice, po, userbl, hotelbl, couponbl |
| orderdata | databaseutility, po, orderdataservice |
| orderdataservice | po |
| hotelui | hotelblservice, vo |
| hotelManagerui | hotelblservice, vo |
| hotelblservice | vo |
| hotelbl | hotelblservice, hoteldataservice, po, orderbl |
| hoteldata | po, databaseutility , hoteldataservice |
| hoteldataservice | po |
| couponui | couponblservice, vo |
| couponblservice | po |
| couponbl | couponblservice, coupondataservice, po, orderbl, userbl |
| coupondata | databaseutility, po, coupondataservice |
| coupondataservice | po |
| databaseutility | mybatis依赖包 |
| util | |
| vo | |
| po |
运行时进程
在酒店预订系统中,会有多个用户端网页进程和一个服务器端进程,其进程图如图5所示。结合部署图,用户端进程是在用户端网页浏览器上进行,服务器端进程在服务器端机器上运行
物理部署
酒店预订系统服务器端是放在服务器端机器上,用户端需有支持网页浏览的浏览器,且客户端的浏览器需要兼容支持vue、javascript。系统部署图如图所示
架构设计
模块职责
-
模块视图
客户端模块和服务器模块视图分别如下图。 -
客户端各层职责
| 层 | 职责 |
|---|---|
| 启动模块 | 负责初始化网络通信机制,启动用户界面 |
| 用户界面层 | 基于web的互联网酒店预订系统客户端用户界面 |
| 业务逻辑层 | 对于用户界面的输入进行响应并进行业务处理逻辑 |
| 客户端网络模块 | 利用JavaRMI机制查找RMI服务 |
- 服务器端各层职责
| 层 | 职责 |
|---|---|
| 启动模块 | 负责初始化网络通信机制,启动用户界面 |
| 数据层 | 负责数据的持久化及数据访问接口 |
| 服务器端网络模块 | 利用JavaRMI机制开启RMI服务,注册RMI服务 |
- 层之间调用接口
| 接口 | 服务调用方 | 服务提供方 |
|---|---|---|
| AdminService CouponService HotelService RoomService OrderService AccountService |
客户端展示层 | 客户端业务逻辑层 |
| AdminMapper CouponMapper HotelMapper RoomMapper OrderMapper AccountMapper |
客户端业务逻辑层 | 服务器端数据层 |
用户界面层分解
-用户界面类图如下。
职责
| 模块 | 职责 |
|---|---|
| MainFrame | 界面Frame:负责界面的显示和界面的跳转 |
接口规范
供接口
| 接口名 | 语法 |
|---|---|
| MainFrame | 语法:init(args:String[]) 前置条件: 无 后置条件:显示Frame以及LoginPanel |
需接口
| 服务名 | 服务 |
|---|---|
| BLService.LoginBLService | 登录界面的业务逻辑接口 |
| BLService.*BLService | 每个界面都有一个相应的业务逻辑接口 |
业务逻辑层分解
-类图:业务逻辑层的设计如下图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAJL7rZJ-1587716382114)(https://s1.ax1x.com/2020/04/23/JUoCS1.jpg)]
职责
| 模块 | 职责 |
|---|---|
| adminbl | 负责实现酒店管理人员界面所需要的服务 |
| couponbl | 负责实现优惠策略界面所需要的服务 |
| hotelbl | 负责实现酒店及其房间信息界面所需要的服务 |
| orderbl | 负责实现订单页面所需要的服务 |
| userbl | 负责实现用户界面所需要的界面 |
接口规范
Adminbl
供接口
| 接口名 | 语法 |
|---|---|
| AdminService.addManager | 语法:public ResponseVO addManager(UserForm userForm) 前置条件:userForm的信息符合规范。 后置条件:数据库的酒店管理人员列表增加此用户,系统显示用户添加成功。 |
| AdminService.getAllManagers | 语法:public List getAllManagers(); 前置条件:已创建酒店管理人员列表。 后置条件:返回酒店管理人员列表。 |
需接口
| 服务名 | 服务 |
|---|---|
| AdminMapper.addManager(UserForm userForm) | 在酒店管理人员列表中插入持久化对象 |
| AdminMapper.getAllManagers() | 返回所有酒店管理人员对象集成的列表 |
| ResponseVO.buildSuccess(Object content) | 显示酒店管理人员是否添加成功 |
Couponbl
供接口
| 接口名 | 语法 |
|---|---|
| CouponService.getMatchOrderCoupon | 语法:List getMatchOrderCoupon(OrderVO orderVO) 前置条件:传入的订单已被创建。 后置条件:返回与该订单所匹配的优惠策略。 |
| CouponService.getHotelAllCoupon | 语法:List getHotelAllCoupon(Integer hotelId) 前置条件:该酒店已入驻本系统。 后置条件:返回该酒店所有的优惠策略。 |
| CouponService.addHotelTargetMoneyCoupon | 语法:CouponVO addHotelTargetMoneyCoupon(HotelTargetMoneyCouponVO couponVO) 前置条件:该优惠策略信息有效。 后置条件:数据库中的优惠策略表添加此优惠策略。 |
需接口
| 服务名 | 服务 |
|---|---|
| CouponMapper.selectByHotelId(Integer hotelId) | 根据酒店id返回该酒店的优惠策略。 |
| CouponMatchStrategy.isMCatch(OrderVO orderVO, Coupon coupon) | 返回订单值对象是否满足该优惠策略 |
| CouponMapper.insertCoupon(Coupon coupon) | 在数据库中插入相应的优惠策略 |
Hotelbl
供接口
| 接口名 | 语法 |
|---|---|
| HotelService.addHotel | 语法:publice void addHotel(HotelVO hotelVO) throws ServiceException 前置条件:该酒店的信息符合规范。 后置条件:数据库中添加一个入驻酒店。 |
| HotelService.updateRoomInfo | 语法:public void updateRoomInfo(Integer hotelId, String roomType,Integer rooms) 前置条件:传入的酒店已入驻系统且房型与房间数符合规范。 后置条件:该酒店的特定房型的数量得到更新。 |
| HotelService.retrieveHotels | 语法:public List retrieveHotels(); 前置条件:开启一个检索酒店信息回合。 后置条件:返回所有入驻酒店的值对象列表。 |
| HotelService.retrieveHotelDetails | 语法:publice HotelVO retrieveHotelDetails(Integer hotelId); 前置条件:该酒店已入驻系统。 后置条件:返回特定酒店的值对象。 |
| HotelService.getRoomCurNum | 语法:public int getRoomCurNum(Integer hotelId,String roomType) 前置条件:传入的酒店已入驻系统且房型符合规范。 后置条件:返回该酒店的特定房型的数量。 |
| HotelService.getHotelOrders | 语法:public List getHotelOrders(Integer hotelId) 前置条件:该酒店已入驻系统。 后置条件:返回该酒店的订单列表。 |
| RoomService.retrieveHotelRoomInfo | 语法:public List retrieveHotelRoomInfo(Integer hotelId) 前置条件:传入的酒店已入驻系统。 后置条件:返回该酒店的房间信息列表。 |
| RoomService.insertRoomInfo | 语法:public void insertRoomInfo(HotelRoom hotelRoom) 前置条件:酒店房间的信息符合规范。 后置条件:数据库中添加此房型信息。 |
| RoomService.getRoomCurNum | 语法:public int getRoomCurNum(Integer hotelId,String roomType) 前置条件:传入的酒店已入驻系统且房型符合规范。 后置条件:返回该酒店的特定房型的数量。 |
| RoomService.updateRoomInfo | 语法:public void updateRoomInfo(Integer hotelId, String roomType,Integer rooms) 前置条件:传入的酒店已入驻系统且房型与房间数符合规范。 后置条件:该酒店的特定房型的数量得到更新。 |
需接口
| 服务名 | 服务 |
|---|---|
| AccountService.getUserInfo(int id) | 根据用户id返回用户的个人信息。 |
| HotelMapper.insertHotel(Hotel hotel) | 数据库中插入此持久化对象 |
| RoomService.updateRoomInfo(Integer hotelId, String roomType,Integer rooms) | 在数据库中更新此持久化对象的信息 |
| RoomService.getRoomCurNum(Integer hotelId,String roomType) | 返回单一持久化对象的信息 |
| HotelMapper.selectAllHotel() | 返回酒店的值对象集成的列表 |
| Hotel.selectById(@Param(“id”) Integer id) | 返回特定酒店的值对象 |
| Room.retrieveHotelRoomInfo(Integer hotelId) | 检索特定酒店的所有房型信息 |
| OrderService.getAllOrders() | 返回订单持久化对象的列表 |
| RoomMapper.updateRoomInfo(@Param(“hotelId”) Integer hotelId,@Param(“roomType”) String roomType,@Param(“curNum”) Integer curNum) | 更新单一持久化对象 |
| RoomMapper.insertRoom(HotelRoom hotelRoom) | 增加单一持久化对象 |
| RoomMapper.selectRoomsByHotelId(@Param(“hotelId”) Integer hotelId) | 返回酒店的值对象集成的列表 |
| RoomMapper.getRoomCurNum(@Param(“hotelId”) Integer hotelId,@Param(“roomType”) String roomType) | 返回单一持久化对象的信息 |
Orderbl
供接口
| 接口名 | 语法 |
|---|---|
| OrderService.addOrder | 语法:publice ResponseVO addOrder(OrderVO orderVO) 前置条件:订单的信息符合规范。 后置条件:增加一个订单值对象。 |
| OrderService.getAllOrders | 语法:public List getAllOrders() 前置条件:开启一次检索所有订单回合。 后置条件:返回所有订单值对象。 |
| OrderService.getUserOrders | 语法:public List getUserOrders(int userid) 前置条件:用户id存在。 后置条件:返回该特定用户的所有订单值对象。 |
| OrderService.annulOrder | 语法:publice ResponseVO annulOrder(int orderid) 前置条件:该订单id存在且未被撤销。 后置条件:系统显示订单撤销成功。 |
需接口
| 服务名 | 服务 |
|---|---|
| HotelService.getRoomCurNum(Integer hotelId,String roomType) | 返回的单一持久化对象的信息 |
| AccountService.getUserInfo(int id) | 根据用户id返回用户的个人信息。 |
| HotelService.updateRoomInfo(Integer hotelId, String roomType,Integer rooms) | 在数据库中更新此持久化对象的信息 |
| OrderMapper.getAllOrders() | 返回所有订单持久化对象的列表 |
| OrderMapper.getUserOrders(@Param(“userid”) int userid) | 返回特定用户的所有订单信息 |
| OrderMapper.annulOrder(@Param(“orderid”) int orderid) | 删除单一持久化对象 |
Userbl
供接口
| 接口名 | 语法 |
|---|---|
| AccountService.addOrder | 语法:publice ResponseVO registerAccount(UserVO userVO) 前置条件:用户的信息符合规范。 后置条件:数据库中插入一个用户对象并显示注册成功。 |
| AccountService.login | 语法:public User login(UserForm userForm) 前置条件:用户的登录信息正确。 后置条件:登陆成功且用户信息被保存到session中。 |
| AccountService.getUserInfo | 语法:public User getUserInfo(int id) 前置条件:用户id存在。 后置条件:返回该特定用户值对象。 |
| AccountService.updateUserInfo | 语法:publice RResponseVO updateUserInfo(int id, String password,String username,String phonenumber) 前置条件:所有用户信息符合规范。 后置条件:用户值对象信息得到更新并显示更新成功。 |
需接口
| 服务名 | 服务 |
|---|---|
| AccountMapper.createNewAccount(User user) | 数据库增加一个用户持久化对象 |
| AccountMapper.getAccountByName(@Param(“email”) String email) | 根据用户名返回用户持久化对象。 |
| AccountMapper.getAccountById(@Param(“id”) int id) | 根据用户id返回用户持久化对象 |
| AccountMapper.updateAccount(@Param(“id”) int id, @Param(“password”) String password,@Param(“userName”) String username, @Param(“phoneNumber”) String phonenumber); | 更新单一用户持久化对象 |
数据层分解
职责
接口规范
信息视角
- 描述数据持久化对象(PO)
- 属性及其定义
- 类型