日照汇科信息科技有限公司





在线咨询
微信

微信扫一扫

长按二维码关注微信加好友

在线时间:7*24小时

   180 6331 7868

企业自研系统可以作为软件产品在市场上销售吗?



点击次数:306       更新时间:2022-07-22


微信图片_20220722151118.jpg

近年来,越来越多的企业,无论大小,都开发了自己的企业级信息系统。为了收回成本、品牌延伸、抢占企业软件市场等目的。,他们在市场上出售自己开发的系统。但现实情况是,即使客户出于对名气的仰慕、销售的说服等,购买了这些公司宣称是“产品”的自研软件。,交付质量往往很差。为了让客户满意,项目金额越大,亏损越大。在中国市场,企业自研系统作为软件产品销售的成功例子很少。

另一方面,实现软件包来开发定制系统的想法经常出错。前几天一个资深架构师跟我抱怨,他接手了一个企业的定制系统开发项目。眼前的资源规划师给他设了一个“7个业务顾问按模块设计系统,7个开发者负责开发”的局。同时,业务顾问比负责开发的程序员贵很多,项目预算的大头被只会画PPT的顾问拿走了。在开发阶段,没有资源.......................................................类似的事情也发生在我身上,我也有同感。

这些困境背后的原因是,企业自研系统与商品软件有着本质的区别,因此面向客户需求的项目交付方式也有很大的不同。我总结如下:


首先,自研系统是为了解决企业的具体应用需求。它的功能范围、系统架构和解决方案都是由项目管理决定的。它具有“基于项目开发”的特点,只要能保质保量按时交付,满足用户需求,就是成功的系统。

商品是需要在一定功能范围内设置的通用模型,是超越单个企业、面向行业或跨行业应用的抽象。定义商业企业软件的功能边界和内部组件意味着“企业架构”建模。例如,在传统的ERP软件和ERP软件内部,模块是根据其功能(财务会计、管理控制、物料管理、销售和分销等)进行划分的。,如下图所示)。今天,是否可以从端到端流程的角度而不是业务功能的角度来划分模块(如从订单到交付的OTD,从采购到支付的PTP等。)?


由于定位不同,在满足用户需求和交付的过程中,他们有不同的软件工程方法。自研系统多采用“硬编码”(以下也称“写代码”),而商业软件开发的是“可配置”的标准化产品,通过配置而不是写代码来满足用户的个性化业务需求。

“死代码”是指与业务相关的主要数据、参数和逻辑都是用代码写在软件程序中的。因为业务的变化,必须修改软件的源代码来修改这些对象。在软件工程的实践中,虽然有经验的架构师和程序员都尽力避免“死代码”,保持系统的灵活性和可扩展性,但由于项目式开发本身的“急功近利”特性,通过分析用户需求并加以实现就可以交付。开发人员在设计系统时,很难也没有必要考虑各种扩展的可能性,所以“死代码”其实是自研系统的普遍现象。

让我们以系统实现兰州拉面的业务为例。当我们穷尽地、逐一地列出一家兰州拉面馆能卖给顾客的所有产品时,每一种产品的选择都对应着不同的定价、制作工艺、成本等。比如红烧牛肉面是一个产品,浇头的量成了另一个产品,标准的卤汁浇头红烧牛肉浇头成了另一个产品。在做销售活动时,选择这个产品集的一个或几个产品进行销售,这是牛肉面商家的一个“死码”:


死代码模式存在灵活性问题。例如,如果客户想要一碗清汤牛肉和肉汁面条,或者创建一种新的浇头,系统无法处理它。但是,只要能满足企业用户的需求,系统都可以使用。即使系统交付后业务发生变化,由于是自研系统,有自己的源代码,负责其运维,可以找人改代码。这也是一些企业在购买商业软件时要求获得源代码的原因之一。“死代码”是他们根深蒂固的软件工程思想。

自研系统和商用软件对采购企业有不同的价值主张。几十年前,业内就有一个共识:自研系统是固化现有业务,简单来说就是在线化、数字化,而商品软件是代表先进企业的“最佳商业实践”,是外部知识对企业的输入。实施企业信息系统的目的是提高组织能力,外部投入是必要的。好的第三方产品和服务本质上是为企业持续输入有意义的外部知识。

抽象出每家面店的面条,甚至可以反映出整个面店行业的行业规则——“一碗面”是由面条、浇头、汤料等可选项目组成的,以及它们背后的可选规则。对于主数据的变更,可以通过调整参数来实现,不仅可以覆盖企业当前的业务,还可以在不改变源代码的情况下,扩展到行业标准的新产品。比如面条目前有刀切和拉面,你可以把拉面分为细条和粗条:


以下是SAP ERP的后台配置画面。SAP ERP可分为所谓的“后台配置”和“前台配置”:基础主数据和业务规则由系统管理员(或实施顾问)在后台配置,业务用户看不到;业务经理基于后台配置来配置业务流程规则,属于“前台配置”。例如,某集团某公司的物料移动的核算方式是由系统管理员在后台配置中预置的,而在业务流程中,适用于某一具体业务活动的核算方式是由业务经理在前台设置的,业务操作人员在操作时可以使用这些预置的流程规则;这也体现了大型企业管理软件的业务控制思想。


显然,能够实现“软件配置”的商业软件产品开发方式,需要在业务上有高度的抽象性,对行业或功能的外部性(而不是企业的内部视角)有非常高的认识广度和深度。“产品化”和“项目化”软件开发的复杂程度和难度,以及对软件产品负责人的要求,是不同数量级的。

因此,“自研系统”和“商业软件”的关键角色和技能也是不同的:前者需要“架构师”来转化用户的需求和实现技术的技术能力,基于项目的软件工程技能,包括今天流行的敏捷和DevOps方法。

后者的灵魂分为两个阶段。产品开发阶段是“产品经理”,对业务有非常开阔的视野和深刻的洞察力,高度的抽象能力和想象力,能够抽象出应该不断变化的产品特性。产品交付阶段是“实现顾问”,对复杂的软件产品有深入全面的了解。同时,他有很强的沟通和说服用户使用标准化功能的能力。

中国的企业软件产业方兴未艾,要把企业自研系统变成商业软件并不容易。对于那些准备走上这条路的传统企业的科技公司,我建议最好把产品团队和自研团队分开。他们的人才特点、运营方式、财务模式都不一样。