赤龙ERP系统设计篇--第8篇

用日志记录“开源软件”的诞生

赤龙 ERP 开源地址:

点亮星标,感谢支持,与开发者交流 kzca2000

码云:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp

赤龙ERP官网:https://www.redragon-erp.com

如何学习系统设计

笔者是软件专业出身,学了好多的理论知识,但我总结就是理论过于枯燥,而且在实战中基本用不上。所以今天就来说说我是如何学习系统设计的。还记得我刚刚毕业,第一次面对要独立做一个系统或网站时的困惑与迷茫。不知该做什么?不知该从何做起?来看看我的成长历程:

一、借鉴已有系统或网站

(1)没有人可以闭门造车:系统设计的初学者,要做的第一步应该是复刻别人的系统,记住是复刻不是复制。即用你自己的方式做一个尽量功能一致的系统。

(2)复刻并不简单:作为一个初学者复刻一个系统并不简单,这要有强大的系统分析能力。要有在不依赖文档的情况下,分析系统流程、功能及逻辑的能力。如果你无法直接做到,没关系,我们来一步一步实现。

(3)知晓需求:在分析系统前,首先要明确你分析的系统做的是什么内容,解决的什么问题,以及相关的业务流程是怎样的。不管是文档也好,还是网上搜索也好,有很多手段可以获取需求。

(4)抽丝剥茧的拆分:不管任何系统都有一个主流程,就像是大树的主干一样。主流程可以拆分出一个一个的节点,以及节点间的逻辑串联。紧接着再分析每个节点,即一个个的模块。模块再拆分成功能点。只要你拆分的够细,你会发现最后一定是增删改查。到此所有的功能已经展露在你的面前了。

(5)重新组装:经过上面的拆分,我们下面可以把所有拆分得到的功能,重新组装成一个完整流程了。当然在组装过程中一定会涉及到很多连接问题、逻辑问题,如果其中的实现方式并不明确,可以先采用你最了解的方式保证尽量的还原。

(6)过程中学习:复刻系统不是目的,目的是在复刻的过程中,学习别人的系统或网站在面对何种需求是如何设计的,并思考为什么人家会如此设计,如果对于相同需求有不同实现方案那就仔细比较下它们的区别和优劣势。

二、优化已有问题

首先要明确,你认为的问题不一定是真正的问题,那可能仅仅是你认为的问题而已。但为什么还要去做这一步呢?这是一个转化的过程,即把别人的东西转化成自己的东西,即使这是一个曲折的过程。只有发现、思考、解决,才可能在这一过程中打磨自己的系统设计方法和思路,并逐渐形成自己的体系。

三、创造新的亮点

当你逐渐形成了自己的系统设计理念,你就可以尝试创新了。创新并不容易,甚至可能会使你的系统走一些弯路或得到批评,但这才是你成长的基石,如果你可以做到不断坚持,最终的结果一定是你的设计亮点。

【赤龙ERP】的系统设计初探

之前的文章中介绍过,ERP系统的最大特点是流程明确、功能复杂、个性化强。下面我们就以上特点,来谈谈ERP系统设计需要注意的问题。

1、表结构设计

(1)单表字段多:单表字段多在ERP表结构里不可避免,所以没必要为了减少字段而合并。要明确每个字段的业务含义,有助于字段的设立。

(2)多表关系杂:由于ERP功能的复杂性,主表出现多个关联表,甚至关联表再套关联表是常见的现象。明确何时建立1对1、1对多、多对多关系,有助于降低表关联的复杂性。这里特殊说明一下头行结构,即头表和行表是1对多关系。(在业务中也经常见到,比如订单、发票)

(3)处理冗余:我的原则是避免冗余,但又可在场景需要的情况下增加冗余。

2、主流程设计

(1)一根主线:从业务到财务,围绕着对于企业资源的管理,只设计一个核心流程。并保证最少的流程节点,以及明确的流转过程。让用户在使用你系统的时候,永远不能脱离你的主线。

(2)分支清晰:首先设计分支一定是在主线中不能完成的业务,但要保证分支流程尽量的短,实现在一两个节点之内完成分支流转,并最终合并到主线。分支与主线不要出现重复步骤。

3、模块设计

(1)增删改查:对于功能设计来说一定是增删改查的重复使用,但要从整体模块来看,不能割裂的设计成一个个的增删改查,要让系统有业务感,让用户在场景下操作各种功能。

(2)功能解耦:这涉及到功能和功能间,模块和模块间的关联关系的设计。原则上除了主流程外,不设置强制耦合,即在没有一些数据的情况下,用户也可以处理某些业务。

4、交互设计

(1)单页面操作简化:尽量减少单页面的可操作功能,这样用户很容易明确自己在当前页面可以实现哪些功能,步骤是什么。

(2)可培养的用户习惯:设计一些创新的亮点,适当的培养用户的使用习惯,当习惯落成,必定会大大简化用户的操作。(比如:精确与模糊搜索匹配、快速可复制的数据录入)

(3)适配终端:让用户在不同的终端具备一致的操作体验。

【赤龙ERP】设计优与劣

上述设计的目的只有一个:让复杂的事情简单化。当然这其中肯定也各有优劣。

(1)优势:让ERP的使用不再繁重而复杂

(2)优势:让用户使用得更加灵活和个性

(3)劣势:限制少了,业务的严谨程度降低了;逻辑简化了,中大型企业的业务匹配度降低了

希望您读完本文可以帮助笔者进入【码云】或【GitHub】(可搜索“赤龙ERP”)点击星标。等待着您的支持!

说说ERP软件的系统设计--开源软件诞生8的更多相关文章

  1. 为什么要做一款ERP软件——开源软件诞生7

    技术之外的探讨--第7篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址: 点亮星标,感谢支持,与开发者交流 kzca2000 码云:https://gitee.com/redragon/redra ...

  2. ERP与EHR系统的恩怨纠葛--开源软件诞生13

    ERP中需要EHR的存在吗--第13篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon ...

  3. ERP订单管理的操作与设计--开源软件诞生19

    赤龙ERP订单模块讲解--第19篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  4. ERP仓库管理的操作与设计--开源软件诞生20

    赤龙ERP库房管理讲解--第20篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  5. ERP应收应付的操作与设计--开源软件诞生21

    赤龙ERP应收应付讲解--第21篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  6. ERP收付款的操作与设计--开源软件诞生22

    赤龙ERP收款付款讲解--第22篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redra ...

  7. ERP的财务凭证的操作与设计--开源软件诞生23

    赤龙ERP财务凭证讲解--第23篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redra ...

  8. ERP的权限管理的操作与设计--开源软件诞生24

    赤龙ERP用户与权限管理讲解--第24篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/re ...

  9. ERP的主数据的操作与设计--开源软件诞生25

    赤龙ERP主数据管理讲解--第25篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redr ...

随机推荐

  1. python智能图片识别系统(图片切割、图片识别、区别标识)

    @ 目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行 ...

  2. c cpp编程用到的系统边角与其拾遗

    拾遗 Q:unix编程怎么查一个函数在哪个头文件中 A: 可以用诸如 man 3 printf Q: man后面接个数字什么意思,如man 3 printf A:如下 man man中的引用 下表显示 ...

  3. Android 禁止ViewPager左右滑动的功能实现

    来来来,各位看官~ Look here!!! Android    禁止ViewPager左右滑动的功能实现!! I think it`s so easy,无需重写ViewPager!!! JUST ...

  4. 斗地主小游戏随机发牌PHP代码

    <?php header("Content-Type:text/html;charset=UTF-8"); $num=['A','2','3','4','5','6','7' ...

  5. 记一次因为Gradle与Lombok不兼容导致编译时的内存溢出 Expiring Daemon because JVM heap space is exhausted

    1.现象 版本 Gradel:6.1.1 / 6.5.1 Lombok:1.8.6 / 1.8.10 截图 解决过程 调大idea的堆内存 不行 × idea安装目录中找到 idea64.exe.vm ...

  6. Shell编程—结构化命令(2)

    1for命令 for命令的基本格式: for var in list do commands done 在list参数中,你需要提供迭代中要用到的一系列值. 1.1读取列表中的值 例子: $ vim ...

  7. Navicat Premium 12免费版安装

    前言 这几年的工作过程中使用了很多的数据库工具,比如Sqlyog,DBeaver,sqlplus等工具,但是个人觉得很好用的还是Navicat. 不如人意的就是目前Navicat都在收费,今天就来分享 ...

  8. Java开发环境搭建的准备工作

    Java开发环境搭建的准备工作 网络配置(修改hosts) 什么时候需要 比如我们在安装homeBrew的时候会遇到 curl: (7) Failed to connect to raw.github ...

  9. js中call,apply和bind

    1,首先先做一个定义:每个函数都包含两个非继承的方法:apply()和call(),apply和call这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值,两者唯一的 ...

  10. windows版redis报错:本地计算机上的Redis服务启动后停止

    解决 1.如果需要临时启动Redis 使用命令:redis-server.exe   redis.windows.conf   --maxheap 200m 说明:200m是指定最大堆内存是200m, ...