设计工作对象转向目标系统,强调“如何做”,即技术方案。构建逻辑模型(类似工程图纸,零件设计图)。
特别注意:编程工作之前完成。物理无关,不涉及具体实现(如Java、Mysql、代码、SQL语句)。

1 引言

1.1 版本更新记录

编号 内容 作者 更新时间
1 架构设计 汪天沛 2022.2.28

1.2 迭代目标

完成程序的整体框架

2 界面原型设计

  • 原型工具设计界面原型

    3 面向对象设计

  • 设计软件对象,定义方法、设计对象之间协作。

  • 模型: 主要为UML类图+顺序图

    4 数据存储与处理设计

    4.1 数据库设计

  • 结合ER模型,遵循范式理论,根据数据存储及功能需求设计数据库表逻辑结构。

  • 模型:数据库表逻辑结构

    4.2 NoSQL设计

  • 非数据库数据存储处理方案

5 架构设计

5.1 设计模式

MVC模式, 单例模式, 装饰器模式

5.2 技术栈选型

系统环境

  • Java EE 8
  • Apache Maven 3

主框架

  • Spring Boot 2.6.4
  • Spring Framework 5.2.x

持久层

  • Apache MyBatis 3.5.x
  • Alibaba Druid 1.2.x

视图层

  • vue

    5.3 分包策略

    项目分为四个模块:
    mis-core:核心框架模块,通用功能
    mis-hot:酒店业务功能模块
    mis-sys:系统管理模块, 用于后期实现用户登录功能
    mis-web:web模块,编写Restful接口
    hot和sys模块依赖core,web模块依赖lib和sys,maven依赖分模块导入

    mis-core模块

    edu.scau.mis.core.config
    edu.scau.mis.core.utils
    edu.scau.mis.core.security
    edu.scau.mis.core.redis

    mis-lab模块

    edu.scau.mis.lab.service
    edu.scau.mis.lab.mapper
    edu.scau.mis.lab.entity

    mis-sys模块

    edu.scau.mis.sys.service
    edu.scau.mis.sys.mapper
    edu.scau.mis.sys.entity

    mis-web模块

    edu.scau.mis.lab.controller
    edu.scau.mis.sys.controller

5.4 开发规范

数据库

数据库表名含模块名,如hot_room表字段名多个单词下划线连接,对应Java命名遵循驼峰原则
如数据库room_name, Java则为roomName
SQL语句DDL全大写,表名字段名全小写。如SQL语句过长,为便于阅读,应进行多行排版

后端

学习并遵循alibaba Java开发规范,此外命名规范也要遵循所选框架的约定。
domain类命名遵循”模块名+类名”,如HotRoom
mapper接口: RoomMapper
mapper映射文件:RoomMapper.xml,映射文件以模块名分目录管理,如hot/RoomMapper.xml
mapper方法命名 queryById,queryAll,queryByPage,insert,update,deleteById,count,….
Service接口及实现类: IXxxService, XxxServiceImpl;
Service方法命名与Mapper保持一致。
Controller类:XxxController
Controller方法命名:list,getByXxx,add,edit,deleteById, …
Restful接口路径: 如 /room/list, /room/1

前端

前端文件以模块名分目录管理,如api/hot/room.js, views/hot/room.vue
前端axios api方法命名:listXxx,getXxx,addXxx,updateXxx,deleteXxx,……

以下设计内容可选,根据迭代任务及目标,选择对应设计内容,包括但不限于:

  • 架构设计:功能及性能对架构影响,技术栈选型,分层分包策略,设计模式,开发规范等
  • 接口设计:硬件及软件接口设计
  • 算法设计:复杂功能实现算法
  • 报表设计:设计报表样式、表体、数据筛选等
  • 安全设计:如网络安全、数据安全、操作日志、系统安全等