软件体系结构文档模板

文档修改历史

修改人员 日期 修改原因 版本号
赵志翔 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)
    • 属性及其定义
    • 类型

相关文章: