基于模型设计系统

官网:https://haomo-tech.com

作者:毫末科技

邮箱:hxg@haomo-studio.com

概述

本章节介绍如何从一个系统的数据库设计模型出发,一步步设计一个系统。

在软件项目(尤其是外包软件项目)中,通常有两种情况:

  1. 客户提供软件需求书;
  2. 客户提供原型设计;

对于以上两种情况的项目,在开发的流程上是有很大的差别的,最大的差别就在于页面交互上。

  1. 客户提供软件需求书:页面数量及形态不确定,带来的复杂性也不确定;(所以,为了固化需求,通常会跟客户做出原型或者UI进行需求确认,跟客户的合同也会分阶段报价)
  2. 客户提供原型设计:页面数量及形态基本确定,需求评估较为容易。

当然,二者也有相同之处:不论提供了需求书或者原型/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

  • 查看表与表之间的关系(多跳)
  • 导出潜在的页面清单

参考