基于模型设计系统
作者:毫末科技
邮箱:hxg@haomo-studio.com
概述
本章节介绍如何从一个系统的数据库设计模型出发,一步步设计一个系统。
在软件项目(尤其是外包软件项目)中,通常有两种情况:
- 客户提供软件需求书;
- 客户提供原型设计;
对于以上两种情况的项目,在开发的流程上是有很大的差别的,最大的差别就在于页面交互上。
- 客户提供软件需求书:页面数量及形态不确定,带来的复杂性也不确定;(所以,为了固化需求,通常会跟客户做出原型或者UI进行需求确认,跟客户的合同也会分阶段报价)
- 客户提供原型设计:页面数量及形态基本确定,需求评估较为容易。
当然,二者也有相同之处:不论提供了需求书或者原型/UI设计,接下来需要做的重要事项都是设计数据库模型。
本文不讨论如何设计数据库模型,而是讨论如何基于数据库模型,去发散思考如何设计系统的界面交互(或者说是原型设计)。
本文主要为毫末科技的工程师围绕设计云设计系统提供方法、步骤和工具。
步骤
基于模型设计系统界面交互,主要包括这么几个步骤:
- 思考有哪些基本页面(菜单权限)
- CRUD界面
- 关系表及关系相关页面(如:作者的书籍页面)
- 统计分析页面
- Dashboard或大屏可视化页面
- 不同角色的页面
- 用户个人相关页面:个人信息页、关联用户表对应的页面
- 跟组织权限相关的页面:如部门详情页
- 系统管理相关页面
- 设计便捷的用户交互(功能权限)
- 权限控制导致的不同角色交互
- 流程控制交互
- 方便用户做某种频繁、快速操作的功能/界面(如探探的划一划、导入导出等)
- 思考不同用户的数据权限范围(数据权限)
- 不同用户,看到的同一个表的同一条数据的内容不同(如:用户密码字段)
- 跟企业组织结构相关的数据权限控制。例如:部门经理查看部门成员数据(成员间数据不能互看)
方法和工具
方法
为了让整个系统更加丰富,需要一定的方法,去逐步丰富整套系统。以下介绍几种基本的方法:
- 基于知识图论进行发散:基本实体及实体间的关系本质上是一张图。假设数据库中的所有表都是实体,一共有M个实体,N条连线,那么可以推导出来的页面清单如下:
- CRUD页面:M * 4 (查询列表、查询单个、新增单个、编辑单个)
- 关系页面:
- 1跳关系(1主:N从,如部门为主,用户为从):N * 4 (查询主对应从的列表、新增主的从、编辑主的从、查看主从汇总列表)
- 2跳关系(例如部门<-用户<-书籍,这里假设2跳有 N2 种可能):
- A->B->C:
- A->B<-C:
- A<-B->C:通常可能B是多对多表,也可能不是。这里不考虑多对多表(因为它可以简化为A和C的关系)。
- 3跳关系(这里假设3跳有 N3 种可能):
- 统计分析页面:
- 单表统计:M * 1
- 关系统计
- 1跳关系:N * 1
- 2跳关系:N2 * 1
- A->B->C:
- A->B<-C:
- A<-B->C:
- 3跳关系:N3 * 1
- 基于用户故事进行发散。所谓用户故事,指的是思考用户如何来使用本系统。
- 用户的一步操作:如点赞、收藏、评论等,会衍生出更多表,进而基于图论可以产生更多的页面;
- 用户的二步操作:如注册流程,输入基本信息->要求输入手机号;
- 用户的三步操作:如购买流程,添加到购物车->购物车操作->付款;
工具
PowerDesigner
毫末Model Browser
- 查看表与表之间的关系(多跳)
- 导出潜在的页面清单