1.1   BXERP产品简介

1.1.1 BXERP是什么

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

1.1.2 BXERP可以带给你什么

  • 对于Java web开发者,可以快速照抄BXERP的Java后端框架。
  • 对于Android开发者,可以快速照抄一套网络请求框架。
  • 对于教师和学生,本项目将是你迅速提高教学质量、投身真实战场的不二选择。
  • 对于项目经理和企业管理者,可以快速组建一个具备先进开发流程的团队。
  • 对于零售企业,应用开源的BXERP可以低成本、快速、0试错搭建一个新的商业软件系统,尤其是N平台客户端1服务器的软件系统,BXERP可以为你节省大量成本(资金和时间)。
  • 对于收银设备厂商,应用开源的BXERP可创建自有品牌的收银系统,结合收银机等硬件设备销售从而来带更多收益(硬件+软件+微信支付商户平台分润)。

1.1.3 BXERP所能满足的用户需求

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

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

角色 角色说明
会员 即顾客群体当中认可商家,愿意提供手机号码进行注册为会员的顾客。
老板 即门店所有权人。
店长 即负责门店日常运作、处理的各类事项的管理人员。
收银员 即负责商品过机及收款的人员。
系统操作员(系统OP) 即BX公司内部负责为商家开通及配置BXERP的人员,通常由客户经理担任。

1.1.1 BXERP子系统结构及模块简介

BXERP子系统结构:

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

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

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

1.2   BXERP产品研发理念

1.2.1 研发团队做好事情的原则

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

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

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

    • 通过重复使事情逼近一个完美的状态,此重复即迭代。我们认为这是敏捷开发最大的精华。
    • 令重复的事情不重复。使用机器来代替人类的重复劳动,使得人类有精力完成更多的事情。譬如自动化测试可以解放大量的生产力。
    • 不能重复做的事情,想方设法重复做(针对事情本身或拆分后的局部,进行多次重复的仿真),以使真正第一次做时就成功。
    • 人类不是禽兽,通过重复做一件事,必定可以获得进步。

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

  • 第二、流程。结合业界的先进流程,探索以及不断优化一些适合BX研发团队的敏捷开发流程。一个产品从0到1,和从1到2,其流程是不同的。我们采用的软件工程流程如下:
阶段 主要活动 软件产出 服务器要求 作用
立项 主要论证市场需求和政策需求,即产品研发的原因。 立项书
需求分析 BA(商业洞察者)制作需求规格说明书。 需求规格说明书 商业角度看需求
RD(研发团队)将业务转化为BA和RD都可以理解的文档。 功能需求说明书 BA和RD对需求达成一致的理解
设计 RD将功能需求说明书细化成概要设计说明书甚至详细设计说明书,使得RD在开发、修改bug、迭代新功能时有据可依。如果没有这些文档,后面的沟通费时费力。在产品的维护期,一旦有问题出现,几乎无法轻松解决。故一般来说,缺乏本阶段的文档,产品没有很强的生命力,难以可持续发展。维护成本巨大,所有人都很头痛。 概要设计说明书、详细设计说明书、测试用例设计文档 RD内部对需求达成一致的理解
编码和测试 如之前所言,编码期,会进行手动测试和编写自动化测试。敏捷开发拥抱需求变化,所以在需求变化发生后,有些功能会回到设计阶段甚至需求阶段进行讨论。 代码、测试用例设计文档、测试脚本 1人1台开发机器
DEV 开发测试阶段。测试单项功能、手动单元测试,每天运行全部自动化测试并发送问题报告。版本更新非常频繁。 兼有运行测试、运行产品的服务器 1台服务器 确保单项功能没有问题
SIT 集成测试阶段。测试N项功能同时运行有没有问题。在DEV阶段开发得到稳定的版本后,再部署到本阶段的服务器。 运行产品的集成测试服务器 1台服务器 确保集成测试没有问题
UAT 用户验收阶段。用户验收功能是否正确。 运行产品的用户验收服务器 1台服务器 确保用户满意
Prod 生产环境阶段。用户使用。 运行产品的线上服务器,即生产环境 1台服务器或以上 产出用户价值
维护期 功能迭代。

1.2.1 敏捷开发方式

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

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

1.2.2 项目管理工具

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

1.2.3 软件工程流程细节

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

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

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

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

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

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

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

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

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

备注:

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

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


BX开源ERP代码及开发文档托管在GitHub:GitHub - Boxin-ChinaGD/BXERP: BX研发体系是一套关于博昕公司研发团队如何开展各项开发活动的体系。这套体系,可以让研发团队具备强大的生产力,这种生产力表现在高质量交付的过程和结果。

【项目简介】BX开源ERP产品简介及研发理念相关推荐

  1. 【魅力开源】第7集:开源ERP系统Odoo发展史(Odoo中文社区野史2019版)

    文章目录 前言 历程 后记 前言 开源 ERP 系统 Odoo 的发展史. 历程 2002 年比利时13 岁开 始学习编程序的 Fabien Pinckaers 所创建创办了Tiny Sprl 公司. ...

  2. 蛇打七寸,开源ERP携掌融宝再次出击

    本文讲的是蛇打七寸,开源ERP携掌融宝再次出击,大背景下,中国政府已经将实现中国经济转型升级作为重要的战略目标,不仅意识到大企业在推动经济转型升级中的引领示范作用,更看到了数以千万计的中小企业才是决定 ...

  3. G4Studio开源产品简介

    1.1.G4Studio概述        G4Studio是一套基于JavaEE面向中小软件企业的集需求分析.软件设计.编码实现.运行测试.运营维护.软件项目管理等于一体,力求覆盖整个软件生命周期的 ...

  4. 最大开源代码sourceforge 简介 及视音频方面常用的开源代码

    所有的音视频凯源代码在这里:http://sourceforge.net/directory/audio-video/os:windows/,你可以下载分析,视频不懂请发邮件给我,帮你分析. 0.视频 ...

  5. G4Studio行业应用二次快速开发平台简介 支持开源软件

    1.1.G4Studio概述      G4Studio行业应用二次快速开发平台基于JavaEE技术体系,面向中小软件企业.以"标准功能可复用.通用模块可配置.行业需求快速开发.异构系统无缝 ...

  6. RichErp生产Erp系统简介

    RichErp生产Erp系统简介 20年专注于生产性ERP管理软件,采用.Net开发工具.研发的中小企业Erp系统 适用范围:适用于生产加工(机械加工)的中小企业. RichErp生产Erp管理系统系 ...

  7. 全球排名第一的免费开源ERP Odoo 12产品发布会北京站开始报名

    Odoo V12 产品(北京)发布会 暨企业数字化转型论坛 快速报名通道:http://odoochina.mikecrm.com/uG8nNu4 随着新版本Odoo 12的发布,开源智造(OSCG. ...

  8. 我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

    传统友商ERP的交付过程 一.先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行 ...

  9. 瑞芯微RK PX30中文详解(带开源资料)简介

    瑞芯微RK PX30中文详解(带开源资料)简介 非常感谢您选择九鼎创展PX30开发平台,本文档讲述PX30开发平台的硬件资源,电路原理以及支持的接口等. PX30开发板是基于瑞芯微PX30的一款高端开 ...

最新文章

  1. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载
  2. 2022图神经网络5篇最新的研究综述:双曲/图分类/联邦/等变/异质性
  3. runtime无法执行grep_让你的 Shell 命令执行可视化和告警
  4. 关于微信客服消息 40001和45015 模板消息 errcode:40037 遇到的自己挖的坑
  5. macbook不能进系统 备份数据_外卖骑手,困在系统里;绩效考核与奖惩激励,不能困在数据里...
  6. 合并有序数组java
  7. hive表名命名规范_数据仓库开发规范
  8. android开发答题app,Android APP编写简单答题器
  9. 【总结】最短路径条数问题
  10. STM32库函数: GPIO部分代码细究1
  11. 大量思科设备存在IPv6死亡之Ping漏洞
  12. 汽车电子电气架构EEA演变
  13. 经纬度坐标转换成px_(转)经纬度坐标转换为屏幕坐标
  14. 观察者模式和模拟wow插件的例子
  15. 002--YAML工具
  16. oracle的12012,Oracle 18.3 ORA-12012 ORA-20001
  17. mysql safe file priv_mysql --secure-file-priv问题解决方案
  18. FFA 2021 专场解读 - 平台建设
  19. 文字识别模型MNIST
  20. html的 作用 是什么,html的作用

热门文章

  1. Apache安装配置(Windows和Linux)-有手就行
  2. 一步一个脚印--开始
  3. 面试后的知识点梳理成长计划
  4. uC-OS2 V2.93 STM32L476 移植:系统移植篇
  5. css3 3D旋转特效
  6. java基础案例教程第二章_第2章Java编程基础_补充案例教程.doc
  7. Playbook剧本
  8. 医疗器械电子硬件·安规与EMC设计
  9. [open source]Lrc歌词解析器发布
  10. 【深度学习 理论】Logistic Regression