数睿数据深度 | 关于软件自主可控,源代码向左,无代码向右
11-25
都快2022年了,为什么软件项目还要求厂商交付源代码?
千行代码万行愁,
一行注释思千秋。
若让我知谁人写,
定然让他断双手。
——佚名
这是笔者最近5G冲浪时看到的一首打油诗,用语文老师的套路来解读就是:这首诗通过夸张的比拟手法,深刻地体现了诗人对于代码维护的深恶痛绝之情。
如题所述,为什么甲方验收项目坚持要交付源代码?要到源码就能高枕无忧了吗?如何理性看待代码的商业价值?
为什么甲方要求交付源代码?
软件的交付就像是交付一栋建好的房子,那么建筑图纸、布线图什么都需要一并交付,以便房子的后期维护。在软件项目中,源代码就好比这些建筑图纸,项目验收时交付源代码以便于甲方后续对软件进行维护。
对于软件交付这种交钥匙工程,客户认为掌握源代码就掌握了软件主动权的钥匙,未来有新的需求变更可以自己修改代码来适应,不需要再付高昂的维护费用。
另外甲方会认为源代码是软件的核心价值,是原创标识,属于拥有者的知识产权。源代码上交后,有一定能力的甲方还能将代码二次修改后成为自己的东西,申请软著陈列在公司的荣誉柜里,或者自己接单继续做第二三个项目。
小编就听过一个电信软件供应商的A公司的朋友提到一个故事,当时国内开始推广虚拟运营商,某电商巨头J拿了工信部牌照,采购了A司的少量license的电信计费系统后并要求上缴所有的源代码。A司认为虚拟运营商在国内蓝海一片,愉快地签了合同。结果J司利用上缴的源代码重构了计费系统,第二年A上门收授权费时将A司一脚踢出门。
除了以上两种情况,在中国还有一种特殊情况,就是一些涉密行业的政策要求,对安全性要求很高的企业会扫描源代码来保障软件系统的整体合规性。
总结来说,甲方要源代码无非是为了自主可控、持续二开、安全合规。这么看来,只要合同中有相关条款,交付源代码合情合理,一本万利。
事实真是如此吗?
想实现“软件开发自由”,不能高估源代码的作用
来看一个源于生活的段子,说国内大厂的代码不愿意开放的重要原因是写得太烂了,一旦开源,就没人敢用他们的产品。这告诉我们,互联网上已经有许多非常优秀的像Linux的开源代码,千万不要高估自己或别人写的代码真的有巨大的“商业价值”。
政策说变就变,项目交付的时候还是二胎政策,刚交付完三胎政策开放了,需要加个流程。
领导把这个需求传递给开发经理,你想想办法把乙方代码改改用,下个月上线。
但如果单纯指望拥有源代码就能实现“软件开发自由”、可以为所欲为,恐怕要失望了。
前面也说了,软件开发就像建房子,代码就好比盖房子用的砖,当砖的质量不好,建造出来的系统的稳定性和可靠性都不能保证。我们要面对一个现实,有些公司为了赶项目进度其实交付的代码质量一般,程序员在写代码的时候也不会太多考虑复用的问题。
并不是所有公司都能提交出完全标准化的产品,甲方最终验收的也只是功能测试、性能测试,代码质量这一项无从考证。所以即使不情愿,也必须承认,乙方交付的代码能正常运行,且不出错,那就是牛x,不要指望质量有多高。
另外,交付源代码对乙方来说也有“砸自己饭碗”的风险,如果客户完全有能力自己维护、开发软件了,还找你干嘛。在不情不愿又不得不交付源码的这件事上,国内某论坛上祭出了“给一部分,他们只有一部分代码是没有太大用处的”、“给一些版本有误的”、“源代码文档给个简单点的”这样的建议。
千行代码万行愁,一行注释思千秋。
这样交付的代码有多难维护?这里引用看过的另一个帖子:程序员被公司辞退都12天了,原团队没人能接手他写的代码,前领导要求他回公司讲清楚代码,员工回复:一次一万。
自己团队产出的代码都没法接手,更别提是别人写出来的代码了。旧代码不易测试、无法保证新代码的正确性、或者改一个新需求引入旧功能报错...这些也会给系统带来极大的不稳定性。
修改乙方代码费时费力,实际能给甲方带来多少自主可控的空间?
这个问题很难答上来,烂代码本身就不是一个可以简单的可衡量的东西,没有可评估性。
最后,放大一点格局,交付源代码不利于软件行业的标准化发展。
把目光脱离源代码本身,来看看整个软件行业。2020年,SaaS在中国公有云中的占比仅为25.5%,远低于SaaS在美国公有云中的占比67.1%。
我们知道,软件的标准化将大大降低应用软件的总拥有成本(TCO),提高整个行业的效率。而国内由于市场竞争激烈、甲方客户对产品功能需求模糊、多变等原因,项目上定制化代码的占比越来越高,软件行业的标准化之路可谓说是任重道远。
软件厂商面临着大客户复杂的定制需求与高昂的人工成本,根本无暇顾及提升代码质量,打造标准化产品。
不需要源代码,依然可以实现自主可控
前面说了那么多,好像交付源代码是甲方原罪,都严重到影响中国软件业的标准化发展了。甲方爸爸何其无辜,他们只是想要自主可控而已啊!他们有什么错!
如果短期内无法解决代码质量的问题,拿到源代码进行二次开发不过是戴着脚链跳舞,想实现自主可控也不是只有源代码这一条路,我们逃避写代码不就可以了吗?逃避虽然可耻但有用。
试想一下,如果有这样的一个平台,平台将企业级软件中的各类元素,包括表单、导航、视图、菜单等高度抽象成一个个可拖拽的组件,用户无需写代码即可构建出企业级的应用,用来交付产品和项目,大大降低了开发的复杂度。更重要的是,构建出来的应用和写代码生成的应用一样可以通过甲方的功能测试和性能测试。
这样的平台,竟然真有厂商给做出来了,还是纯国产的——企业级无代码软件平台Smartdata。
使用Smartdata开发的软件项目在验收后,乙方无需交接代码,构建出来的应用作为标准化产品沉淀为企业资产,实现同类项目的规模化的复制交付;甲方无需接收和重构代码,透过平台“所见即所得”的应用构建界面,即可完成二次功能调整,非常方便,工作效率提升数倍, 甲乙方关系迅速升温。
实现了自主可控、持续二开之后,问题又来了:交付的应用能满足涉密企业的安全需求吗?能申请软著吗?
企业级无代码三把斧
1. 可以申请软著
通过企业级无代码平台Smartdata构建的应用包含了设计者和搭建者的知识与智慧,毫无疑问创作者(自然人和法人)都享有著作权,是可以申请软件著作权的。著作权保护的是指用户在平台基础上构筑的应用部分,而不包含平台本身。这就像通过Office创作小说的作家,只享有小说的知识产权,而不享有Office软件的著作权。
为配合无代码平台用户申请软件著作权的工作,Smartdata方面表示可以为签约用户在申请软件著作权时,提供相关的申请材料。
以上为平台用户申请软著中的软件应用(使用无代码平台构建)
2. 满足安全合规要求
在安全合规这方面,事实上可能与想得不太一样,无代码平台深受涉密企业的青睐。正是因为行业保密性和安全性要求极高,参与开发的外部人员越少安全泄漏风险越小。而无代码平台交付的产品,相关用户可自行调整内部需求,进行快速迭代,避免过多外部人员长期介入,大大提高系统的安全性。
3. 造福甲乙双方
使用无代码平台对于软件厂商(乙方)的收益显而易见,规模化的项目复制,可以比传统开发方式更加省时省力降成本,帮助企业快速扩张、占领市场。同时骨干的开发人员可以安排去做更高价值的事情,聚焦行业领域模型,投入新产品的创新,实现业务增长。
至于无代码平台对于甲方的价值,还是拿三胎政策的例子,需要添加三胎申请页面、审批流程、校验逻辑来算个账:
没有一劳永逸的成功。笔者不认为交付源代码是原罪,只是如果换个思路能给乙方更多利润空间,给甲方更多自主权利,能为当下的IT行业提供更强大的生产力,何不保持思想焕新、付诸实践试一下呢。