有幸看到了一家欧美公司开发的上位机软件,直接把我给整崩溃了!不得不说,人家在做软件的那一刻起就已经为未来二次收费铺好了道路,并且,如果你想找第三方公司重构他们写好的上位机软件,还不行,事情到底是咋回事呢?
公司最近接到了一个项目,这个项目原来的乙方是欧洲某国的某公司开发的,甲方准备在此基础上进行二次开发,但是不知道是乙方报价太高还是咋的,甲方决定跳过乙方,直接在国内寻找供应商去重构这个上位机项目,于是,公司就派了几个技术员去甲方那看项目,一来是看看项目难度,二来是看看这个项目有没有利润。
公司派了几个上位机程序员,当然和包括我,还有几个搞机械和电路的,就到了甲方现场。搞机械的和搞电路的就在那研究设备,我和另外几名上位机程序员就在那研究程序,最终,几个上位机程序员一致认定,这个项目做倒是可以做,但是估计得重头研究了!
事情是这样的,别看是个上位机程序,但是他们搞得确是前后端分离的模式,前端是部署在一台Linux系统上的,后端则部署在一台Windows服务器上。
我们仔细研究了下程序,发现如果这个项目我们公司接了,估计光研究之前的业务逻辑和程序逻辑可能都要消耗几个月的时间。
具体原因就出在程序架构上,抛开前端不说,就这个后端程序都让我们头大,我不知道欧美那边做上位机是不是都是这个模式,如果是,那我感觉我对欧美那边的软件开发又有了新的认识。
我们仔细研究了下这个上位机程序的后端架构,发现这个后端架构是以一种类似树状结构的规则执行的。
具体来说,就是有一个主程序,还有将近一千个子程序,主程序和子程序之间没有任何强关联,任何一个子程序似乎(这里是似乎)都可以单独执行。
这么看起来好像也没那么难,但是,让人崩溃的事情来了!
因为所有子程序都是可以单独执行的,所以,就没有一个统一的配置文件去配置程序的通讯,因此,每一个程序都有一个单独的配置文件去配置和硬件的通讯!
我的天,将近一千个子程序,那么就意味着有将近一千个配置文件了!并且没有任何调度中心去调度这些配置!
如果在此基础上进行重构,那我们就需要对每一个程序和配置文件进行分析,然后通过分析程序的执行逻辑,然后才能搞清楚整个设备的运行逻辑!
公司在知道有这个项目的时候,我不知道老板对于这个项目的时间底线是多少,但我估计他以为有现成的程序,估计只需要花几个月时间就可以重构好,但是我们几个高技术的经过分析,要想做好这个项目,估计没有个一两年是搞不定的,而且客户那边保密性要求比较高,还只能在甲方现场开发,因此,我们至少要安排专人驻扎在甲方现场才行。
回到公司,我们把情况汇报给了公司,在汇报之前,我们一行人私下里其实早有结论,如果时间、预算不充足的情况下,我们估计公司是吃不下这个项目的!
果然,这个项目最后公司还是没有接!
结语
说到这里,我只能写一个大大的服字,就这么一个软件架构,放在哪个乙方手里估计都得颤一颤,因为逆向工程太大了,时间人力不足的情况下,根本没法弄!
但是,如果找当初写这个项目的欧美公司去弄,估计人家随便弄几下就好了!
这让人无路可走的设定,高!实在是高!