2019-03-25 10:28:51分類:軟件開發(fā)8535
工業(yè)軟件是相對比較寬泛的一個概念,從研發(fā)、生產(chǎn)、倉儲到管理等都是工業(yè)軟件的組成部分。同時工業(yè)軟件也是客戶個性化需求較高的軟件,會因為使用者的模式、特征、甚至是產(chǎn)品品類不同具有巨大的差異。例如:汽車制造的MES系統(tǒng)和服裝個性化定制的MES系統(tǒng)具有天壤之別。
由于工業(yè)軟件的特點決定了工業(yè)軟件的開發(fā)、交付與實施都周期比較長,成本比較高。并且造成很多失敗的案例。
那么,作為當(dāng)今智能制造升級核心的工業(yè)軟件如何開發(fā)才能走出作坊的誤區(qū),并且能夠做到在保證軟件質(zhì)量的前提下進(jìn)行高效交付呢?作為最早從事服裝個性化定制MES系統(tǒng)的開發(fā)者,昱辰泰克十多年來總結(jié)出一套軟件系統(tǒng)開發(fā)的方法論。簡單來說就是三個化:共性平臺化、知識模塊化、個性客戶化。
首先,工業(yè)軟件是典型的2B市場,對于2B市場面對的企業(yè)來說,需求的差異造成無法形成標(biāo)準(zhǔn)的軟件產(chǎn)品進(jìn)行銷售(CAD等工具軟件除外),特別是像MES這樣的軟件,由于直接參與到企業(yè)的管理流程、工藝流程和生產(chǎn)流程之中,所以可以說沒有任何一套軟件可以在不同的企業(yè)間使用。這就要求軟件架構(gòu)師在規(guī)劃產(chǎn)品時給客戶化留出空間。我們要承認(rèn)差異化的存在,并且要用架構(gòu)來應(yīng)對客戶的差異化,絕對不能掩耳盜鈴地認(rèn)為自己可以開發(fā)出一套放之四海而皆可應(yīng)用的工業(yè)軟件系統(tǒng)。
其次,我們承認(rèn)不同企業(yè)對工業(yè)軟件(我們以MES為例)的訴求不同,那么我們就需要為專門的客戶進(jìn)行軟件的客戶化,軟件的客戶化分為兩個層級,淺層的客戶化是進(jìn)行功能配置,深層次的客戶化是進(jìn)行功能開發(fā)。這樣我們把我們的MES軟件系統(tǒng)分解為可客戶化的功能和需要專門開發(fā)的功能。
第三,由于昱辰泰克僅開發(fā)時尚行業(yè)的MES系統(tǒng),借用行業(yè)的約束條件,我們的行業(yè)專家就可以抽象不同類型的企業(yè)特征,把這些行業(yè)特征定義為知識,通過軟件開發(fā)把抽象出來的知識進(jìn)行模塊化,之所以把知識進(jìn)行模塊化的最核心的原因是有些知識具有互斥性,也就是說,使用了知識A就不能使用知識B,所以需要把知識模塊化有利于后期的配置,在具體實施的時候使能某些知識,更好地為具體的客戶服務(wù)。
第四,行業(yè)中具有的共性屬性,例如服裝智能制造中所需要的靈活的流程、訂單到裁單的歸集與分解、工藝流程與生產(chǎn)流程的匹配等都屬于共性的內(nèi)容,這些內(nèi)容所有企業(yè)都需要,差別僅僅是復(fù)雜度的不同,那么這些功能我們定義為平臺屬性,通過軟件的靈活性實現(xiàn),例如:通過BPM系統(tǒng)實現(xiàn)流程的可定義等。
最后,當(dāng)我們把工業(yè)軟件的共性部分進(jìn)行平臺化,知識部分進(jìn)行模塊化,并且個性部分通過客戶化進(jìn)行交付后,我們會遇到很多個性化的要求,我們再在這些個性化的要求中尋找共性或知識,通過PDCA流程,把可以抽象到平臺的功能加入到平臺,把可以抽象為知識的開發(fā)為知識模塊,并且所有的平臺功能和知識模塊都使用微服務(wù)的原則開發(fā)。這樣的一個迭代流程會使產(chǎn)品越來越適合更多用戶的需求。按照我們在服裝智能制造十年的研發(fā)經(jīng)驗,大概三到五年需要一次重構(gòu)(我們十年時間已經(jīng)重構(gòu)過三次,現(xiàn)在我們服裝智能制造MES系統(tǒng)的主線版本是4.3),重構(gòu)需要特別注意的是對兼容的甄別,例如我們在版本4中為了更好地支持客戶體驗,用戶界面全部使用HTML5的特征,就會造成對以前使用老版本的Windows系統(tǒng)不兼容,實踐證明,這個取舍是值得的,因為隨著客戶的要求越來越高,重視客戶體驗一定會成為未來的趨勢。
通過站在不同的抽象層級把工業(yè)軟件分解為平臺、模塊和客戶化,既滿足了客戶價值的體現(xiàn),又能降低我們的交付難度,并且隨著時間的推移,能夠讓自己的產(chǎn)品不停地進(jìn)化,從而提升產(chǎn)品在市場上的競爭力。我們稱之為工業(yè)軟件開發(fā)的方法論。