开源ERP产品简介及研发理念

标题:博开源ERP产品简介及研发理念

标签:开源ERP;零售业;Android开发者;Java web开发者;小程序

ERP产品简介

ERP是什么

ERP是帮助零售门店商家经营的ERP软件,在门店的顾客、员工、商品3者的数量达到一定程度后应用开源博ERP系统,能有效减轻商家经营负担、提升顾客满意度。目前博ERP已开发出满足单一门店经营需求的产品,我们把该产品称为博销宝ProSales Box)。

ERP可以带给你什么

l  对于Java web开发者,可以快速照抄博ERPJava后端框架。

l  对于Android开发者,可以快速照抄一套网络请求框架。

l  对于教师和学生,本项目将是你迅速提高教学质量、投身真实战场的二选择。

l  对于项目经理和企业管理者,可以快速组件一个具备先进开发流程的团队。

l  对于零售企业,应用开源的博ERP可以低成本、快速、0试错搭建一个新的商业软件系统,尤其是N平台客户端1服务器的软件系统,博ERP可以为你节省大量成本(资金和时间)。

软件定制开发业务联系:

QR 代码

描述已自动生成

ERP所能满足的用户需求

以小型单店为例,通常有如下类型的用户:顾客、老板、店长、收银员。其中顾客是核心用户类型,老板、店长和收银员均围绕顾客的购物需求开展经营活动。以下为各类型用户的基本需求:

 图示

描述已自动生成

根据用户需求分析,博研发团队定义了如下系统角色:

 

角色

角色说明

会员

即顾客群体当中认可商家,愿意提供手机号码进行注册为会员的顾客。

老板

即门店所有权人。

店长

即负责门店日常运作、处理的各类事项的管理人员。

收银员

即负责商品过机及收款的人员。

系统操作员(系统OP

即博公司内部负责为商家开通及配置博ERP的人员,通常由客户经理担任。

 

ERP子系统结构及模块简介

ERP子系统结构:

图示

描述已自动生成

ERP包含了nbr服务器端和客户端。

nbr服务器包含商家ERP子系统和客户管理子系统(CMS),它们的模块组成如图:

图示

描述已自动生成

 

用户客户端:POS机客户端(包含安卓应用软件和电脑桌面应用软件)、微信小程序、微信公众号

图示

描述已自动生成图示

描述已自动生成

ERP产品研发理念

研发团队做好事情的原则

2019327日,一个名为“996ICU”的项目在GitHub上传开,迅速火遍了全网。这一事件揭露出了国内程序员的加班现状,反应出了程序员们对这种加班状况的抗拒心理。2021年下半年,腾讯等互联网公司相继宣布取消996工作制,国内程序员是否迎来了不用加班的福音?短时间内恐怕还不行,不过这无疑是人心所向,是一种趋势。那么之前通过加班才能完成的工作,取消996工作制,还能按时按量的完成工作吗?答案是肯定的,不过需要找出一个科学有效的方法。

我们都知道,程序员加班很多时候并非开发一些新功能,而是陷入了修bugbug的泥潭中。如果能避免或减少这种情况,那么程序员就能高效率的完成工作。博研发团队开发博ERP时,始终没有忘记寻找科学有效的方法,让研发人员轻松地把事情做好。做好事情是许多团队的基本要求,但是轻松地做好,几乎是奢求。我们通过严格执行以下团队组织原则达成“轻松地做好事情”的目标:

第一,重复。其精华体现在以下几个方面:

l  通过重复使事情逼近一个完美的状态,此重复即迭代。我们认为这是敏捷开发最大的精华。

l  令重复的事情不重复。使用机器来代替人类的重复劳动,使得人类有精力完成更多的事情。譬如自动化测试可以解放大量的生产力。

l  不能重复做的事情,想方设法重复做(针对事情本身或拆分后的局部,进行多次重复的仿真),以使真正第一次做时就成功。

l  人类不是禽兽,通过重复做一件事,必定可以获得进步。

软件工程充满各种重复。据说Windows 2000大约有2000万行代码,由大约1000位软件工程师完成。假设他们事先得到了上帝的指引,编码完全不需要修改而且没有bug,那么,按照每人一天1000行代码的速度,这些工程师20天就可以开发一个Windows 2000。但是事实上并非如此,Windows 2000开发周期是三年左右。可见这些工程师花费了大量的时间做了重复的事情。如果我们在软件工程里面很好地控制重复的劳动,那么一定可以轻松地将事情做好。博ERP代码量大约100万行,测试用例大概是15000个(大部分是自动化测试),研发团队人数11人(绝大部分是实习生),开发周期是18个月左右,由于很好地遵循了重复的原则,加上以下第二点的流程,程序员几乎不加班,经常处于一种精神抖擞、斗志昂扬、活泼有趣的工作氛围中,工作效率比较高。

 

第二,流程。结合业界的先进流程,探索以及不断优化一些适合博研发团队的敏捷开发流程。一个产品从01,和从12,其流程是不同的。我们采用的软件工程流程如下:

阶段

主要活动

软件产出

服务器要求

作用

立项

主要论证市场需求和政策需求,即产品研发的原因。

立项书

 

 

需求分析

BA(商业洞察者)制作需求规格说明书。

需求规格说明书

 

商业角度看需求

RD(研发团队)将业务转化为BARD都可以理解的文档。

功能需求说明书

 

BARD对需求达成一致的理解

设计

RD将功能需求说明书细化成概要设计说明书甚至详细设计说明书,使得RD在开发、修改bug、迭代新功能时有据可依。如果没有这些文档,后面的沟通费时费力。

在产品的维护期,一旦有问题出现,几乎无法轻松解决。故一般来说,缺乏本阶段的文档,产品没有很强的生命力,难以可持续发展。维护成本巨大,所有人都很头痛。

概要设计说明书、详细设计说明书、

测试用例设计文档

 

RD内部对需求达成一致的理解

编码和测试

如之前所言,编码期,会进行手动测试和编写自动化测试。

敏捷开发拥抱需求变化,所以在需求变化发生后,有些功能会回到设计阶段甚至需求阶段进行讨论。

代码、测试用例设计文档、测试脚本

11台开发机器

 

DEV

开发测试阶段。测试单项功能、手动单元测试,每天运行全部自动化测试并发送问题报告。版本更新非常频繁。

兼有运行测试、运行产品的服务器

1台服务器

确保单项功能没有问题

SIT

集成测试阶段。测试N项功能同时运行有没有问题。在DEV阶段开发得到稳定的版本后,再部署到本阶段的服务器

运行产品的集成测试服务器

1台服务器

确保集成测试没有问题

UAT

用户验收阶段。用户验收功能是否正确。

运行产品的用户验收服务器

1台服务器

确保用户满意

Prod

生产环境阶段。用户使用。

运行产品的线上服务器,即生产环境

1台服务器或以上

产出用户价值

维护期

功能迭代。

 

 

 

 

敏捷开发方式

针对用户需求不是所有都明确的、可能发生改变的,敏捷开发可以很好地应对这种情况。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。敏捷开发属于增量式开发,在开发软件过程中,将软件分为一个个小的模块。先开发主要的模块,再开发次要模块,逐步完善,最终开发出符合需求的软件产品。它的最大特点是迭代,能更好的应对用户需求变更较多的情况。

我们特别重视“重复和流程”,这是我们在开发过程中总结出来的,认为做某一类事情的科学方法和步骤。然后不断的重复按照这个流程去做类似的事情,结果我们会越来越熟练,完成事情效率也会越高。开发人员应该也必须按照“重复和流程”做事情,我们也会不断的迭代已有的流程,让团队受益于新的更有效的做事方法,轻松做好事情。

项目管理工具

JIRAAtlassian公司出品的项目与事务跟踪工具,被广泛应用于敏捷管理、需求收集、任务跟踪、缺陷跟踪等工作领域。我们使用它来进行博ERP研发管理。博团队研发人员经过讨论,制定出一个Sprint冲刺(未来一个短时间段要完成的目标),项目管理人员根据目标细分任务,在上面创建、分配、追踪任务。将项目分为一个一个的Sprint冲刺去完成,能更好的应对用户需求的变化。程序员在分配的任务上编写工作计划、工作总结。工作计划就像茫茫大海中的指南针,让我们不会失去方向,或避免做了捡芝麻丢西瓜的事情。不管遇到好的坏的,我们都应该善于做工作总结,好的可以分享给其它队友,坏的可以提醒自己和他人注意,当下一次做类似事情的时候,势必会胸有成竹、马到成功。

软件工程流程细节

前面表格介绍了我们采用的软件工程流程包含了以下阶段:立项、需求分析、设计、编码和测试、DEVSITUATProd、维护期。在每一个阶段,我们都会产出一些文档。用文档记录思考或讨论好的事情,让我们智慧的结晶得以保存,也有利于后期的迭代完善。没有文档,我们就无章可循,像一只无头苍蝇乱撞,程序员与产品经理打架的悲剧也将不断重演。

       我们认为,需求分析在整个软件的开发周期中占比是最大的,在开发前期、开发期和开发后期都可能不断的做着需求分析的工作。所以在前期做需求分析的工作越充足,后面改动越少,额外花费的时间也会越少。产品经理根据市场调研编写出需求规格说明书,然后与开发人员根据需求规格说明书,编写出功能需求文档,开发人员最后根据功能需求说明书编写出数据库设计说明书和详细设计说明书。

       各个开发人员的代码体系不应各成一派,不利于后期的维护。在不断的迭代中,我们也有了自己的一套代码架构。该有的代码结构不能少,不该有的也不能画蛇添足。这样统一代码架构让队友间讨论彼此代码的时候能更迅速的了解对方的思路,甚至能指引新员工如何去写代码。在编码阶段,我们还会总结出很多好的做事方法,如怎样解决bug、如何进行代码的重构等,并记录到开发文档当中。

蚂蚁金服拥有30多万的测试用例,说明他们对测试用例是非常重视的。我们开发这个产品也是很注重测试的,认为测试用例越丰富、越全面,开发出来的软件越稳定、越符合需求。开发人员编写自动化测试代码代替重复的手动测试工作。开发人员对自己开发的功能编写测试用例,测试驱动开发,编写功能代码。写好功能代码后,根据测试用例编写自动化测试代码,确保测试通过,保证功能的稳定。以上的单元测试我们称为元粒度测试,除此之外,在不断地迭代过程我们还会产出以下粒度的测试:

1)细粒度测试:子系统级测试;

2)中粒度测试:跨子系统级测试;

3)大粒度测试测试:用户接受度测试;

4)在这一阶段会产出功能代码、测试代码、测试用例文档。

在一次次的部署中我们发现,将代码部署到服务器是一个步骤比较多、比较复杂的过程,人工去完成这些操作会出现遗忘某些步骤、在某些步骤容易出错的情况。我们就思考能不能把这些操作交给机器去完成,避免这样的情况发生。于是我们应用了Jenkins,它是一个持续集成工具,结合SVNMAVENpython脚本完成自动化部署,可以提高效率和避免手动部署的出错。Jenkins还可以很好地结合TestNG,使用它运行自动化测试代码、生成测试报告并发送给开发人员。Jenkins相关用例图如图所示:

图示

描述已自动生成

备注:

皇后”Windows服务和“小王子”是我们自行开发的工具。“皇后”Windows服务用来创建数据库,她在接到nbr服务器创建数据库的请求后开始执行任务。

“小王子”是用来刷新数据库或配合Jenkins任务启动tomcat的。

 

 

开源ERP代码及开发文档托管在GitHubhttps://github.com/Boxin-ChinaGD/BXERP

技术博客:https://www.cnblogs.com/BXERP/

 

© 2014-2022 广州市博信息技术有限公司 版权所有 粤ICP备15067421