體驗產(chǎn)品
作軟件工程師,難!在現(xiàn)實中,你要努力地求偶;而在程序的世界里卻要千方百計地解耦?,F(xiàn)實中的偶,成就美滿之家,而程序中的“耦”卻帶來煩惱。
解耦(Decouple),或者叫做“高類聚、低耦合”,是軟件工程的標(biāo)準(zhǔn)開發(fā)方法,是一種模塊化構(gòu)造技術(shù),旨在使得模塊之間的邏輯結(jié)構(gòu)更清晰,各個模塊的開發(fā)工作、調(diào)試工作更加獨立,各模塊之間主要以數(shù)據(jù)功用和參數(shù)傳遞實現(xiàn)更加獨立的部署組合的應(yīng)用,從而增強系統(tǒng)的彈性?;ヂ?lián)網(wǎng)化的系統(tǒng)需要更加開放,對現(xiàn)代開發(fā)技術(shù)的發(fā)展趨勢提出了更高的模塊化、分層設(shè)計的要求,而中國軟件企業(yè)的工程設(shè)計方法和體系還需要更大的標(biāo)準(zhǔn)化過程,解耦就是實現(xiàn)傳統(tǒng)作坊軟件開發(fā)向工業(yè)化開發(fā)的重要方法和手段。
致遠(yuǎn)V5軟件在2015年下半年經(jīng)歷了3個月的陣痛,實現(xiàn)了完整的“解耦”改造,這是在V5平臺上一個非常重要的里程碑,值得紀(jì)念!今天我們一起來談?wù)刅5解耦之美。
解耦與技術(shù)架構(gòu)
IT系統(tǒng)的通常由基礎(chǔ)框架、技術(shù)組件、應(yīng)用模塊、系統(tǒng)界面、數(shù)據(jù)結(jié)構(gòu)等等部件構(gòu)成,底層平臺框架為上層應(yīng)用模塊提供技術(shù)支撐,用戶通過系統(tǒng)界面與底層數(shù)據(jù)及邏輯進(jìn)行業(yè)務(wù)進(jìn)行交互,模塊與模塊之間要求盡快少的依賴,或者依賴的接口定義的非常清晰且被有效管理,即把可能變化的接口函數(shù)封裝起來,把不易變的和容易變的分離,從而使得某一個功能的變化不會波及到大范圍的變化,這就要求軟件系統(tǒng)在架構(gòu)上要有良好的分層管理或中間層模塊。
V5的解耦設(shè)計非常清晰,平臺統(tǒng)一命名為CTP,包括六大引擎,依次是ctp-core(MVC框架)、ctp-organization(組織權(quán)限)、ctp-portal(門戶)、ctp-workflow(工作流)、ctp-form(表單)、ctp-index(全文檢索),這些接口對上層應(yīng)用完全開放,并要求接口保持平滑升級,接口變更管理手段非常強烈;V5應(yīng)用命名為apps-xxx,比如:apps-collaboration(協(xié)同工作)、apps-doc(公文)、apps-meeting(會議)、apps-news(新聞)約48個模塊。
apps對ctp的依賴采用直接調(diào)用方式,直接高性能,apps之間通過maven代碼管理嚴(yán)格限制依賴,但apps之間存在相互調(diào)用,比如,協(xié)同審批后發(fā)出公告新聞等等,怎么辦?V5架構(gòu)引入中間層設(shè)計,命名為apps-api、apps-common,前者是各模塊間相互調(diào)用的接口,后者是基礎(chǔ)模塊,比如代理管理、常用格式等等,模塊調(diào)用必須經(jīng)過apps-api層,而且它的變更是經(jīng)過嚴(yán)格管理的,不能輕易變更。
解耦與應(yīng)用發(fā)展
根據(jù)上面的技術(shù)設(shè)計可以清晰的看出,CTP平臺接口是穩(wěn)定的、apps-api是穩(wěn)定清晰的,因此單一app就不會受到其它代碼的約束,是可以自由的發(fā)展和壯大。過去開發(fā)一個版本,通過每個模塊都會做提升完善,勢必造成有限開發(fā)資源的分散,可能造成的結(jié)果是每個模塊都沒有做深做透。解耦后,完全可以改變一種策略——按照模塊設(shè)計,每次1-3個模塊,投入重兵,從而使得這個模塊應(yīng)用的完備度、前瞻性、品質(zhì)都能得到保障,確保在這個領(lǐng)域具有領(lǐng)先地位,未來2-3年都不需要大的改造,轉(zhuǎn)而去改造其它模塊,這就是我們常常講到“按模塊發(fā)版”、“按模塊升級”。
解耦與商業(yè)價值
解耦背后目的,不僅僅是技術(shù)上更清晰,模塊發(fā)展更順暢,更重要是實現(xiàn)更宏偉的商業(yè)價值,它包括兩個層面:
簡單一點是按照模塊報價、授權(quán),V5 6.0版本增加“文化建設(shè)、目標(biāo)管理、會議管理、知識管理、協(xié)同駕駛艙、員工簽到”等等模塊,的獨立發(fā)布與應(yīng)用,使得客戶有更多的選擇自由,根據(jù)需要配置相應(yīng)的應(yīng)用特性,從而增強了系統(tǒng)高效可定制化的能力。
更為復(fù)雜的需求是通過解耦實現(xiàn)子產(chǎn)品、行業(yè)產(chǎn)品的封裝,從而實現(xiàn)公司產(chǎn)品序列更多元、更豐富、更貼近客戶的需求。舉個例子:某某集團需要一個可以滿足十三萬人使用的門戶,我們可以勾選“ctp-core、ctp-organization、ctp-portal、apps-news、apps-report、CMP/M3”等六個模塊,加上集群部署和增加數(shù)據(jù)緩存能力,再通過CIP(協(xié)同集成平臺)實現(xiàn)與其它異構(gòu)的待辦、消息、單點登錄集成,可以構(gòu)造一個最為常見的門戶系統(tǒng);如果結(jié)合協(xié)同應(yīng)用平臺CAP、移動應(yīng)用APP的M3、以及門戶不同模板風(fēng)格等技術(shù),協(xié)同應(yīng)用系統(tǒng)的想象空間變得更為巨大,可以封裝領(lǐng)域產(chǎn)品,如:HR系統(tǒng)、CRM系統(tǒng)、內(nèi)控系統(tǒng)等等,也可以封裝行業(yè)產(chǎn)品,如:律所業(yè)務(wù)管理系統(tǒng)、建筑公司項目協(xié)同管理系統(tǒng)。
這就是V5解耦之美、協(xié)同之美,大美美于斯...