有幸看到了一家歐美公司開發(fā)的上位機軟件,直接把我給整崩潰了!不得不說,人家在做軟件的那一刻起就已經(jīng)為未來二次收費鋪好了道路,并且,如果你想找第三方公司重構(gòu)他們寫好的上位機軟件,還不行,事情到底是咋回事呢?
公司最近接到了一個項目,這個項目原來的乙方是歐洲某國的某公司開發(fā)的,甲方準(zhǔn)備在此基礎(chǔ)上進行二次開發(fā),但是不知道是乙方報價太高還是咋的,甲方?jīng)Q定跳過乙方,直接在國內(nèi)尋找供應(yīng)商去重構(gòu)這個上位機項目,于是,公司就派了幾個技術(shù)員去甲方那看項目,一來是看看項目難度,二來是看看這個項目有沒有利潤。
公司派了幾個上位機程序員,當(dāng)然和包括我,還有幾個搞機械和電路的,就到了甲方現(xiàn)場。搞機械的和搞電路的就在那研究設(shè)備,我和另外幾名上位機程序員就在那研究程序,最終,幾個上位機程序員一致認定,這個項目做倒是可以做,但是估計得重頭研究了!
事情是這樣的,別看是個上位機程序,但是他們搞得確是前后端分離的模式,前端是部署在一臺Linux系統(tǒng)上的,后端則部署在一臺Windows服務(wù)器上。
我們仔細研究了下程序,發(fā)現(xiàn)如果這個項目我們公司接了,估計光研究之前的業(yè)務(wù)邏輯和程序邏輯可能都要消耗幾個月的時間。
具體原因就出在程序架構(gòu)上,拋開前端不說,就這個后端程序都讓我們頭大,我不知道歐美那邊做上位機是不是都是這個模式,如果是,那我感覺我對歐美那邊的軟件開發(fā)又有了新的認識。
我們仔細研究了下這個上位機程序的后端架構(gòu),發(fā)現(xiàn)這個后端架構(gòu)是以一種類似樹狀結(jié)構(gòu)的規(guī)則執(zhí)行的。
具體來說,就是有一個主程序,還有將近一千個子程序,主程序和子程序之間沒有任何強關(guān)聯(lián),任何一個子程序似乎(這里是似乎)都可以單獨執(zhí)行。
這么看起來好像也沒那么難,但是,讓人崩潰的事情來了!
因為所有子程序都是可以單獨執(zhí)行的,所以,就沒有一個統(tǒng)一的配置文件去配置程序的通訊,因此,每一個程序都有一個單獨的配置文件去配置和硬件的通訊!
我的天,將近一千個子程序,那么就意味著有將近一千個配置文件了!并且沒有任何調(diào)度中心去調(diào)度這些配置!
如果在此基礎(chǔ)上進行重構(gòu),那我們就需要對每一個程序和配置文件進行分析,然后通過分析程序的執(zhí)行邏輯,然后才能搞清楚整個設(shè)備的運行邏輯!
公司在知道有這個項目的時候,我不知道老板對于這個項目的時間底線是多少,但我估計他以為有現(xiàn)成的程序,估計只需要花幾個月時間就可以重構(gòu)好,但是我們幾個高技術(shù)的經(jīng)過分析,要想做好這個項目,估計沒有個一兩年是搞不定的,而且客戶那邊保密性要求比較高,還只能在甲方現(xiàn)場開發(fā),因此,我們至少要安排專人駐扎在甲方現(xiàn)場才行。
回到公司,我們把情況匯報給了公司,在匯報之前,我們一行人私下里其實早有結(jié)論,如果時間、預(yù)算不充足的情況下,我們估計公司是吃不下這個項目的!
果然,這個項目最后公司還是沒有接!
結(jié)語
說到這里,我只能寫一個大大的服字,就這么一個軟件架構(gòu),放在哪個乙方手里估計都得顫一顫,因為逆向工程太大了,時間人力不足的情況下,根本沒法弄!
但是,如果找當(dāng)初寫這個項目的歐美公司去弄,估計人家隨便弄幾下就好了!
這讓人無路可走的設(shè)定,高!實在是高!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.