解析低代碼+DDD:企業(yè)數(shù)字化轉(zhuǎn)型的利器(低代碼是什么)
增強(qiáng)數(shù)字化能力,是企業(yè)降本增效的好手段。本文將解析低代碼 DDD,使軟件系統(tǒng)的開發(fā)更加高效,質(zhì)量更加穩(wěn)定,一起探討一下對于每個企業(yè)推進(jìn)數(shù)字化的進(jìn)程有幫助的一些方向,一起來深入了解一下吧。
2023年,中國的企業(yè)數(shù)字化轉(zhuǎn)型過程發(fā)生了一起里程碑式的事件,就是華為內(nèi)部替換完全國產(chǎn)自主研發(fā)的MetaERP,標(biāo)識著中國企業(yè)信息化的離完全地自主可控更近一步。首先華為從內(nèi)部立項(xiàng)到最后推動上線的前因后果我們也不便于去過多解讀,大家只要讀懂「企業(yè)數(shù)字化能力強(qiáng),則企業(yè)強(qiáng);企業(yè)強(qiáng),則國強(qiáng)」的信號即可。
可能華為的戰(zhàn)略動作不是中國萬千企業(yè)能去參考或者執(zhí)行的,但是有一個點(diǎn):就是增強(qiáng)企業(yè)的數(shù)字化能力,是降本增效的好手段,正所謂無利不起早;讓我們來探討一下對于每個企業(yè)推進(jìn)數(shù)字化的進(jìn)程有幫助的一些方向。
一、ERP是什么?
首先我們來了解下ERP是個什么東西?ERP是企業(yè)資源計(jì)劃(Enterprise Resource Planning)的縮寫。它是一種企業(yè)管理軟件,通過整合不同部門的業(yè)務(wù)流程和信息技術(shù),將企業(yè)的各種資源(包括人員、物質(zhì)、財(cái)務(wù)資產(chǎn)等)有機(jī)結(jié)合起來,對企業(yè)進(jìn)行全面的管理。
ERP有以下幾個主要的功能:
- 可以整合企業(yè)中各個部門的業(yè)務(wù)流程和信息,降低信息孤島問題,提高信息流通度;
- 可以自動化業(yè)務(wù)處理流程,提高工作效率,降低人為錯誤率;
- 可以實(shí)現(xiàn)對企業(yè)各種資源的全面監(jiān)控,提高企業(yè)的運(yùn)營效率和決策水平;
- 可以幫助企業(yè)優(yōu)化資源配置,實(shí)現(xiàn)資源的有效利用,降低企業(yè)成本;
總之,ERP能夠幫助企業(yè)整合管理各項(xiàng)業(yè)務(wù),提高企業(yè)的管理效率和決策能力,從而提高企業(yè)的盈利能力。
二、數(shù)字化轉(zhuǎn)型需要的是「套模版」嗎?
那么大家聽了這么多年ERPERPERP的,企業(yè)資源計(jì)劃它真的需要這么高大上嗎?再看看CRM、OA、EAM、PLM、BI等等各種縮寫,它們真的有那么高大上嗎?
我們通過抽象的視角看來一下這些系統(tǒng)都給企業(yè)員工提供了什么樣的直接效果,回歸到本質(zhì)上來,這些各色各樣的系統(tǒng)本質(zhì)上就是提供了讓企業(yè)的業(yè)務(wù)流程線上化的能力,讓企業(yè)戰(zhàn)略的規(guī)劃者可以通過不同的軟件系統(tǒng)來落地不同的業(yè)務(wù)流程,并起到監(jiān)控調(diào)整的作用,系統(tǒng)做得好不好,無非是看是否足夠貼合當(dāng)前業(yè)務(wù)發(fā)展,以及響應(yīng)業(yè)務(wù)變化是否足夠敏捷。
過往的幾十年時間內(nèi),之所以我們的企業(yè)會主動采購國外企服巨頭的ERP系統(tǒng),是因?yàn)樗麄兲峁┑牟皇且粋€系統(tǒng),而是一個企業(yè)的經(jīng)營方法論,一個把管理手段、業(yè)務(wù)流程沉淀好的系統(tǒng),中國企業(yè)普遍認(rèn)為可以通過使用企服巨頭的系統(tǒng)得到有效的管理手段,而忘記了東施效顰的典故。
但是在當(dāng)前的商業(yè)環(huán)境下,ERP做得好不好和這個系統(tǒng)是哪家公司提供的,不再是強(qiáng)相關(guān)關(guān)系,因?yàn)樯虡I(yè)環(huán)境變化速度太快,企業(yè)的業(yè)務(wù)戰(zhàn)略規(guī)劃變化得也需要足夠快,否則就沒辦法生存下去;簡單地「套模版」已經(jīng)不再適用,企業(yè)需要的數(shù)字化轉(zhuǎn)型是能高效低成本地把規(guī)劃好的業(yè)務(wù)流程落實(shí)到系統(tǒng)上,在推進(jìn)業(yè)務(wù)落地的過程及時敏捷地調(diào)整系統(tǒng)。
看到這里,需要給大家點(diǎn)明一個數(shù)字化轉(zhuǎn)型很關(guān)鍵的核心思想:一切的數(shù)字化軟件系統(tǒng)的建設(shè)都要以幫助業(yè)務(wù)流程落地為中心。說明白點(diǎn)就是以業(yè)務(wù)流程驅(qū)動數(shù)字化系統(tǒng)的建設(shè),不要去偷戰(zhàn)略性懶。
三、領(lǐng)域驅(qū)動設(shè)計(jì)
2023年的時鐘往前倒撥20年,讓我們回到2003年,此時一位叫Eric Evans的程序員提出了DDD(Domain-Driven Design)的概念,后來被世人熟知的“領(lǐng)域驅(qū)動設(shè)計(jì)之父”,世界杰出軟件建模專家。Eric Evans創(chuàng)建了Domain Language公司,致力于幫助公司機(jī)構(gòu)創(chuàng)建與業(yè)務(wù)緊密相關(guān)的軟件,旨在幫助開發(fā)團(tuán)隊(duì)與業(yè)務(wù)團(tuán)隊(duì)之間更好地協(xié)作。
領(lǐng)域驅(qū)動設(shè)計(jì)(DDD)是一種軟件系統(tǒng)的設(shè)計(jì)方法論,DDD認(rèn)為軟件系統(tǒng)的核心在于業(yè)務(wù)領(lǐng)域。因此,系統(tǒng)的設(shè)計(jì)應(yīng)該反映出業(yè)務(wù)領(lǐng)域的知識和規(guī)則,而不是純粹為了技術(shù)而設(shè)計(jì)。軟件設(shè)計(jì)時應(yīng)用領(lǐng)域驅(qū)動設(shè)計(jì)的方法可以幫助開發(fā)者更好地理解并實(shí)現(xiàn)業(yè)務(wù)的需求,進(jìn)而構(gòu)建出更符合實(shí)際要求的軟件系統(tǒng)。
領(lǐng)域驅(qū)動設(shè)計(jì)的優(yōu)勢
在實(shí)際應(yīng)用中,DDD給企業(yè)數(shù)字化轉(zhuǎn)型帶來了很多優(yōu)勢,包括:
- 更貼近實(shí)際業(yè)務(wù)場景:開發(fā)者可以通過深入理解業(yè)務(wù)領(lǐng)域以及業(yè)務(wù)規(guī)則來設(shè)計(jì)出更符合實(shí)際需求的軟件系統(tǒng);
- 更高的軟件系統(tǒng)可擴(kuò)展性:在DDD中,軟件系統(tǒng)的整個設(shè)計(jì)都是為了盡可能貼近業(yè)務(wù)領(lǐng)域。這意味著,當(dāng)業(yè)務(wù)需求發(fā)生變化時,軟件系統(tǒng)更容易進(jìn)行相應(yīng)的調(diào)整和升級,而不會像傳統(tǒng)的面向?qū)ο笤O(shè)計(jì)一樣,需要重構(gòu)整個系統(tǒng);
- 更好的軟件架構(gòu):DDD可以幫助開發(fā)者將業(yè)務(wù)邏輯分離出來,避免將過多的業(yè)務(wù)邏輯耦合到單個方法或類中,這有助于更好地分離關(guān)注點(diǎn),并要求開發(fā)人員思考如何更好地分離不同的領(lǐng)域概念;
四、低代碼開發(fā)
低代碼開發(fā)是一種通過可視化圖形化手段進(jìn)行軟件開發(fā)的模式,將復(fù)雜的業(yè)務(wù)流程開發(fā)過程轉(zhuǎn)換為用戶友好的界面,讓非專業(yè)人士也能快速構(gòu)建出自己的軟件系統(tǒng)。
低代碼平臺可以自動生成代碼,并提供自定義軟件組件和模塊的能力,使普通用戶可以通過可視化接口進(jìn)行自定義構(gòu)建。這種方法省去了大量的手工編程工作,提高了軟件開發(fā)的效率。
簡單點(diǎn)說:就是通過可視化手段降低了軟件開發(fā)的門檻和提升了部分效率。
低代碼開發(fā)的優(yōu)勢
低代碼的優(yōu)勢則在于:
- 提高了軟件開發(fā)的效率。低代碼允許非專業(yè)人士也能快速構(gòu)建出自己的軟件系統(tǒng)。這種方法省去了大量的手工編程工作,提高了軟件開發(fā)的效率;
- 更快的迭代周期。低代碼平臺允許用戶隨時修改和重新調(diào)整軟件組件和模塊,讓開發(fā)迭代更快,加快企業(yè)業(yè)務(wù)轉(zhuǎn)型;
- 更易于維護(hù)和升級。低代碼平臺可以自動生成代碼,將復(fù)雜的業(yè)務(wù)需求歸納為更簡單的模塊,并在需要更新或升級時輕松升級整個系統(tǒng);
隨著近幾年來低代碼開發(fā)技術(shù)的蓬勃發(fā)展,通過可視化建模與組合的手段提高了軟件開發(fā)的效率,成為了DDD在軟件開發(fā)中的可能落地手段。那么DDD如何結(jié)合低代碼開發(fā)模式,在軟件開發(fā)中實(shí)現(xiàn)更高效、敏捷、低成本的實(shí)施效果呢?讓我們進(jìn)入暢想時刻!
五、DDD如何結(jié)合低代碼技術(shù)?
在企業(yè)數(shù)字化轉(zhuǎn)型的過程中,DDD與低代碼開發(fā)的結(jié)合可以極大地提高軟件開發(fā)效率和質(zhì)量,將復(fù)雜的業(yè)務(wù)需求轉(zhuǎn)化為可控的可視化系統(tǒng)。那么,在低代碼開發(fā)過程中,DDD可以如何應(yīng)用到實(shí)際的項(xiàng)目中呢?
- 制定完整的領(lǐng)域模型和邊界:在設(shè)計(jì)一款軟件之前,需要對該系統(tǒng)將涉及的領(lǐng)域和業(yè)務(wù)邏輯進(jìn)行詳細(xì)的分析和規(guī)劃。根據(jù)領(lǐng)域模型的特點(diǎn)和領(lǐng)域邏輯進(jìn)行拆解,構(gòu)建出完整的領(lǐng)域模型和邊界。這樣做可以減少開發(fā)范圍,在可視化界面中簡單操作,快速應(yīng)對版本迭代。
- 設(shè)計(jì)與實(shí)現(xiàn)領(lǐng)域模型:設(shè)計(jì)領(lǐng)域模型時需要考慮包括領(lǐng)域事實(shí)和規(guī)則在內(nèi)的各種因素,以及何時和如何將它們映射到軟件系統(tǒng)中的代碼。在低代碼開發(fā)中,用戶可以通過可視化界面進(jìn)行業(yè)務(wù)需求的模擬和實(shí)現(xiàn),為后續(xù)代碼生成提供規(guī)范和數(shù)據(jù)。
- 嚴(yán)格維護(hù)領(lǐng)域模型:領(lǐng)域模型應(yīng)該是完全與業(yè)務(wù)邏輯相關(guān)的模型,需要與實(shí)驗(yàn)室環(huán)境以及運(yùn)維、測試等部門溝通,應(yīng)用價值要經(jīng)過實(shí)踐考核。用戶以一種更接近實(shí)際邏輯的方式來處理業(yè)務(wù),因此領(lǐng)域驅(qū)動設(shè)計(jì)在低代碼開發(fā)中更加重要。
關(guān)鍵動作1:可視化領(lǐng)域建模
這里需要借用DDD的一個老圖通俗易懂地解釋下「領(lǐng)域建?!?,我用的這個圖出自ThoughtWorks的《企業(yè)架構(gòu)白皮書》,只因?yàn)樗嫷帽容^好看哈哈,具體內(nèi)容建議大家自行問問GPT讓它解答一下,需要深刻了解建議還是去研讀DDD的相關(guān)書籍!
那么這就是可視化領(lǐng)域建模了嗎?是但是又不完全是,這是在紙上把企業(yè)內(nèi)部的業(yè)務(wù)領(lǐng)域劃分了一遍,最后還是得體現(xiàn)在系統(tǒng)架構(gòu)上,甚至是系統(tǒng)功能上。我們把業(yè)務(wù)領(lǐng)域建模也當(dāng)成一個業(yè)務(wù)流程,再套用回前文的思想,我們也需要圍繞了業(yè)務(wù)領(lǐng)域建模這個業(yè)務(wù)流程來建設(shè)能力,只是恰好這個系統(tǒng)能力是用于領(lǐng)域建模的,這種能力才是我所說的「可視化領(lǐng)域建模」,也是DDD思想在低代碼開發(fā)中的第一大重要體現(xiàn);具體的表現(xiàn)形式我不放圖到本文中,有興趣可以去各大低代碼開發(fā)平臺參考,但是我更希望有高手可以不受現(xiàn)有模式的影響,創(chuàng)造出更好用的模式,我補(bǔ)充幾點(diǎn)它應(yīng)該有的特征:
- 提供可視化建模設(shè)計(jì),基于元數(shù)據(jù)模型的建模與管理,通過數(shù)據(jù)實(shí)體、屬性、關(guān)系等元數(shù)據(jù)配置響應(yīng)業(yè)務(wù)需求變化,除了快速響應(yīng)業(yè)務(wù)外,還有要幫助企業(yè)內(nèi)部各個業(yè)務(wù)領(lǐng)域統(tǒng)一語言,說白了就是要復(fù)用,尤其是通用業(yè)務(wù)領(lǐng)域的復(fù)用,比如說人力資源領(lǐng)域的人崗架屬性;
- 領(lǐng)域模型的可注冊性,因?yàn)椴灰姷靡粋€企業(yè)的全部系統(tǒng)都是從低代碼開發(fā)平臺上長出來的,所以必定存在部分系統(tǒng)完全和低代碼開發(fā)無關(guān),但是這部分系統(tǒng)背后的領(lǐng)域模型仍然需要注冊到平臺上來,通過可視化建模手段一并管理,這樣才方便統(tǒng)一調(diào)用,也能通過注冊這個過程重新梳理業(yè)務(wù)模型的合理性,是一個審視的過程;
- 支持多種模型類型:支持多種模型類型,如實(shí)體關(guān)系模型、流程模型和決策表模型等,能夠適應(yīng)不同的應(yīng)用場景;
- 提供版本控制管理功能,能夠?qū)崿F(xiàn)對模型的版本控制及版本回溯,方便項(xiàng)目的管理和維護(hù);
關(guān)鍵動作2:領(lǐng)域模型組件
只有模型可視化是不能幫助企業(yè)進(jìn)行數(shù)字化轉(zhuǎn)型的,最終還是得落實(shí)到系統(tǒng)上來,落實(shí)到企業(yè)員工實(shí)實(shí)在在操作的界面上來,如果員工無法完全在線上的系統(tǒng)完成他的日常業(yè)務(wù)流程,那這可不能稱之為數(shù)字化轉(zhuǎn)型,很有可能都比不上員工直接發(fā)郵件 excel表格來得高效。
那么企業(yè)員工每一分鐘實(shí)實(shí)在在操作的界面是什么?是由一個個前端組件組成的界面,員工在界面上執(zhí)行的是企業(yè)的業(yè)務(wù)流程,所以,界面上的組件是需要能直接反映業(yè)務(wù)流程的,這是就需要業(yè)務(wù)模型驅(qū)動界面設(shè)計(jì),領(lǐng)域模型組件由此誕生。
這里舉一個簡單的例子,一個選擇員工的場景,它可能是人事部門在執(zhí)行組織架構(gòu)調(diào)整的業(yè)務(wù)流程,也可能是個人審批流程抄送關(guān)聯(lián)部門特定崗位成員的業(yè)務(wù)流程,還可能是供應(yīng)鏈部門分配跟單人員的業(yè)務(wù)流程。
但是不管他是什么業(yè)務(wù)流程,里面的某個業(yè)務(wù)動作就是「選擇員工」,背后的模型就是「員工模型」。員工在界面上使用的很具體的一個選擇員工的選擇器,它就可以是一個通過對「員工模型」封裝以及對業(yè)務(wù)流程抽象后可配置的領(lǐng)域模型組件,企業(yè)在數(shù)字化轉(zhuǎn)型的過程中就可以通過這樣的領(lǐng)域模型組件來快速構(gòu)建業(yè)務(wù)流程,即幫助了各個業(yè)務(wù)部門統(tǒng)一數(shù)據(jù),也提升了系統(tǒng)建設(shè)的效率。
結(jié)論
領(lǐng)域驅(qū)動設(shè)計(jì)(DDD)是一項(xiàng)非常有價值的軟件設(shè)計(jì)方法,因?yàn)樗屜到y(tǒng)建設(shè)者天然地關(guān)注業(yè)務(wù)流程,以業(yè)務(wù)流程為中心,能讓開發(fā)者都能深度了解業(yè)務(wù)的企業(yè),數(shù)字化轉(zhuǎn)型能差到哪里去呢,企業(yè)發(fā)展又會差到哪里去呢?
在低代碼開發(fā)中,了解DDD的核心概念,以及掌握如何應(yīng)用DDD,可以更好地了解DDD在低代碼開發(fā)中的意義和應(yīng)用。
低代碼開發(fā)平臺的普及為DDD在軟件設(shè)計(jì)與開發(fā)中增添了一個全新的動力,同時也降低了越來越多的企業(yè)及開發(fā)者將其應(yīng)用于企業(yè)架構(gòu)建設(shè)與軟件設(shè)計(jì),使軟件系統(tǒng)的開發(fā)更加高效,質(zhì)量更加穩(wěn)定。
DDD與低代碼技術(shù)結(jié)合,為軟件設(shè)計(jì)與開發(fā)提供了更大的空間和創(chuàng)新,使軟件系統(tǒng)的開發(fā)更加高效,質(zhì)量更加穩(wěn)定。
本文由 @陳起gogogo 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。