新聞中心
軟件設(shè)計(jì)面對(duì)的環(huán)境日趨復(fù)雜。對(duì)這種日趨復(fù)雜、難以駕馭的狀況,很多軟件人希望能有所改善。而標(biāo)準(zhǔn)化對(duì)提升架構(gòu)設(shè)計(jì)效率和提高軟件開(kāi)發(fā)成功率很有裨益。本文探討架構(gòu)演進(jìn)的另一個(gè)趨勢(shì),就是行業(yè)級(jí)標(biāo)準(zhǔn)化。

軟件設(shè)計(jì)面對(duì)的環(huán)境日趨復(fù)雜。背后原因不僅有技術(shù)發(fā)展本身帶來(lái)的復(fù)雜性,而且也有規(guī)模增大帶來(lái)的復(fù)雜性。
從最初面向小型群體、具體領(lǐng)域的程序設(shè)計(jì),到面向上億用戶、交叉需求的生態(tài)構(gòu)建,軟件設(shè)計(jì)似乎走上一條以復(fù)雜應(yīng)對(duì)復(fù)雜的發(fā)展之路。我們看到,從方法到概念都日趨復(fù)雜。
一開(kāi)始,很多軟件的早期版本較為清晰,后來(lái)逐漸走向“大泥球”模式。最終,它們“活成了我們最討厭的樣子”。
“技術(shù)債務(wù)”成為軟件生命周期中的常見(jiàn)問(wèn)題,所以,對(duì)軟件設(shè)計(jì)方法尤其是架構(gòu)方法的探索始終未停。這些探索與軟件工程方法的演進(jìn)互相作用。
對(duì)這種日趨復(fù)雜、難以駕馭的狀況,很多軟件人希望能有所改善。眾所周知,標(biāo)準(zhǔn)化對(duì)提升架構(gòu)設(shè)計(jì)效率和提高軟件開(kāi)發(fā)成功率很有裨益。在架構(gòu)方法發(fā)展的過(guò)程中,關(guān)于這個(gè)方面的標(biāo)準(zhǔn)化努力也一直在緩慢推進(jìn)。這個(gè)標(biāo)準(zhǔn)并非指軟件開(kāi)發(fā)標(biāo)準(zhǔn),比如國(guó)內(nèi)的 GB8567-88,而是指能直接應(yīng)用于具體開(kāi)發(fā)的設(shè)計(jì)參考,比如行業(yè)級(jí)標(biāo)準(zhǔn)化模型。
本文探討架構(gòu)演進(jìn)的另一個(gè)趨勢(shì),就是行業(yè)級(jí)標(biāo)準(zhǔn)化。
一、為何行業(yè)級(jí)標(biāo)準(zhǔn)化發(fā)展緩慢?
行業(yè)級(jí)標(biāo)準(zhǔn)化之所以較難達(dá)成,是因?yàn)楸澈笥性S多復(fù)雜因素。
首先,這是一項(xiàng)帶有公益性質(zhì)的工作。一旦做成功,大家都受益,但推動(dòng)者的付出與其收益之間不成比例,要靠一定的“奉獻(xiàn)”精神支撐。
其次,標(biāo)準(zhǔn)達(dá)成需要統(tǒng)一眾多觀點(diǎn)。而這種統(tǒng)一并非可以強(qiáng)制達(dá)成,標(biāo)準(zhǔn)本身的建立過(guò)程就會(huì)比較緩慢。時(shí)間一久,甚至不了了之。
最后,即便建立標(biāo)準(zhǔn),更新維護(hù)的主體通常也難以確定和維持,“保鮮”難度大。
如此困難之事,為何今日應(yīng)該重提?這又涉及另外兩個(gè)原因,而它們卻是今后軟件或者數(shù)字化的發(fā)展方向。
1. 軟件在生產(chǎn)、生活中的基礎(chǔ)性地位還不夠
我們現(xiàn)在常說(shuō),軟件、互聯(lián)網(wǎng)改變了人類(lèi)社會(huì),但實(shí)際上,并非所有行業(yè)和生活場(chǎng)景都充分線上化了。事實(shí)是,大部分行業(yè)中,軟件的基礎(chǔ)性地位還沒(méi)有達(dá)到人們通過(guò)宣傳所“認(rèn)為”的水平,并且,軟件行業(yè)總產(chǎn)值也沒(méi)在 GDP 中有很高占比。
這表明,軟件還未像工業(yè)制成品那樣深入到社會(huì)的各個(gè)角落,軟件生產(chǎn)也沒(méi)像工業(yè)生產(chǎn)那樣成為廣泛的社會(huì)性生產(chǎn)。
根據(jù)埃文斯數(shù)據(jù)公司 (Evans Data Corporation) 2019 年最新的統(tǒng)計(jì)數(shù)據(jù)顯示,2018 年全球共有 2300 萬(wàn)軟件開(kāi)發(fā)人員;到 2019 年底,這個(gè)數(shù)字將達(dá)到 2640 萬(wàn),而到 2023 年,這個(gè)數(shù)字是 2770 萬(wàn)。其中,它對(duì)軟件開(kāi)發(fā)人員的定義很廣泛,甚至包括技術(shù)作家。
與之相比,2018 年,世界各國(guó)青壯年和逐漸進(jìn)入的勞動(dòng)年齡段 (15 至 64 歲) 人口總數(shù)約為 49.6 億(數(shù)據(jù)來(lái)源于互聯(lián)網(wǎng))。也就是說(shuō),無(wú)論是從行業(yè)規(guī)模還是勞動(dòng)人口的數(shù)量來(lái)講,軟件行業(yè)仍處在上升階段,還沒(méi)有成為一個(gè)像農(nóng)業(yè)或者工業(yè)那樣可作為時(shí)代標(biāo)志的行業(yè),數(shù)字經(jīng)濟(jì)仍在發(fā)展初期。
從這種狀況,我們可以推想,多數(shù)對(duì)于行業(yè)級(jí)標(biāo)準(zhǔn)化的真實(shí)“焦慮”可能只存在于少數(shù)軟件從業(yè)者心里,還沒(méi)真正上升為企業(yè)“焦慮”,更未成為行業(yè)“焦慮”。
所以,在開(kāi)發(fā)中,盡管我們?cè)陧?xiàng)目管理中反復(fù)強(qiáng)調(diào)一些項(xiàng)目級(jí)的標(biāo)準(zhǔn)化要求,但這些要求沒(méi)有真正走出項(xiàng)目以外,沒(méi)有真正成為企業(yè)級(jí)、行業(yè)級(jí)的要求,所以行業(yè)級(jí)標(biāo)準(zhǔn)化的進(jìn)程也必然緩慢。
但是,數(shù)字經(jīng)濟(jì)的發(fā)展速度正在加快,不少人認(rèn)同未來(lái)的企業(yè)可能都是科技企業(yè)。軟件會(huì)成為主要的生產(chǎn)工具,這也許會(huì)改變經(jīng)濟(jì)數(shù)據(jù)的統(tǒng)計(jì)口徑,從而讓數(shù)字經(jīng)濟(jì)規(guī)模得到更準(zhǔn)確的計(jì)量。
隨著這種發(fā)展,即便出于讓工具更易用、更易得的角度,行業(yè)級(jí)標(biāo)準(zhǔn)化也應(yīng)得到更大重視。
企業(yè)之所以要為軟件付出更大代價(jià),很大一部分原因就是軟件無(wú)法像真正的工業(yè)制品一樣批量化制作與獲得,以及提供售后,甚至是其中無(wú)需太個(gè)性化的部分。當(dāng)企業(yè)、行業(yè)越來(lái)越依賴(lài)于軟件時(shí),軟件中的主要部分需要被標(biāo)準(zhǔn)化和真正量產(chǎn)。
當(dāng)過(guò)度強(qiáng)調(diào)軟件使用和軟件生產(chǎn)中的個(gè)性化因素,這會(huì)讓軟件行業(yè)面對(duì)與工業(yè)化早期類(lèi)似的問(wèn)題,尤其是在“B”端,過(guò)度的“自由”可能會(huì)帶來(lái)“不自由”。這些過(guò)度之處對(duì)“創(chuàng)新”的意義也許被夸大。
工業(yè)標(biāo)準(zhǔn)化沒(méi)有讓工業(yè)變得死板和缺乏創(chuàng)新,反而減少浪費(fèi),讓創(chuàng)新能更好地分層次進(jìn)行,比如設(shè)計(jì)創(chuàng)新、零件創(chuàng)新、材質(zhì)創(chuàng)新和集成創(chuàng)新等,而無(wú)需經(jīng)常從頭開(kāi)始。軟件行業(yè)也應(yīng)該通過(guò)行業(yè)級(jí)標(biāo)準(zhǔn)化減少“創(chuàng)新浪費(fèi)”,這樣才有可能讓軟件走出現(xiàn)在這種“大規(guī)模小團(tuán)隊(duì)手工作坊”的階段。所謂的 AI 設(shè)計(jì),需要的不也正是基礎(chǔ)性的標(biāo)準(zhǔn)化嗎?
也許滿足標(biāo)準(zhǔn)化,我們才能把精力花在更有價(jià)值的創(chuàng)新上,而不是整天修改別人也改過(guò)的 BUG,成天擔(dān)心踩別人踩過(guò)的坑。
標(biāo)準(zhǔn)化是工業(yè)成熟的體現(xiàn),也是其在整個(gè)社會(huì)生產(chǎn)中基礎(chǔ)性地位增強(qiáng)的必然結(jié)果,這也是軟件未來(lái)必須要走的路。
2. 架構(gòu)設(shè)計(jì)的開(kāi)放性不足
在發(fā)展的大部分時(shí)間中,軟件設(shè)計(jì)更多處理的是封閉邊界內(nèi)的封閉問(wèn)題域。當(dāng)處理復(fù)雜問(wèn)題時(shí),軟件設(shè)計(jì)者的思考習(xí)慣是盡可能將復(fù)雜問(wèn)題拆分成更小的獨(dú)立問(wèn)題。處理“封閉”空間會(huì)令軟件設(shè)計(jì)者感到“舒適”,而“開(kāi)放”空間則容易讓軟件設(shè)計(jì)者失去“焦點(diǎn)”,也會(huì)帶來(lái)更大的知識(shí)負(fù)擔(dān)。
處理好邊界是軟件設(shè)計(jì)的原則之一,不定義好邊界的軟件很可能無(wú)法交付。這種方式本身無(wú)可厚非,其隱含的問(wèn)題在于,多數(shù)軟件設(shè)計(jì)缺乏企業(yè)間的橫向聯(lián)通和行業(yè)級(jí)的定義。很多承載行業(yè)統(tǒng)一概念的行業(yè)術(shù)語(yǔ)雖然在設(shè)計(jì)過(guò)程中被軟件人員學(xué)習(xí)和思考,但并沒(méi)有發(fā)揮其在標(biāo)準(zhǔn)化方面應(yīng)有的作用,“封閉”也成了一個(gè)一個(gè)軟件實(shí)例的“封閉”。
現(xiàn)有的各類(lèi)技術(shù)標(biāo)準(zhǔn)多數(shù)無(wú)法幫軟件形成標(biāo)準(zhǔn)化的設(shè)計(jì)結(jié)果,它們更多是對(duì)工藝和技術(shù)的要求。
工業(yè)在發(fā)展早期,企業(yè)間的標(biāo)準(zhǔn)化和連通性也不強(qiáng),一度出現(xiàn)囊括生產(chǎn)鏈條大部分環(huán)節(jié)的超大型企業(yè)集團(tuán)。但是,隨著精細(xì)化分工的發(fā)展,企業(yè)最終放棄這種不經(jīng)濟(jì)的“全都干”模式,采用供應(yīng)鏈、生態(tài)圈模式。
標(biāo)準(zhǔn)化在提升企業(yè)協(xié)作上發(fā)揮至關(guān)重要的作用。
早在 1926 年,擁有國(guó)家級(jí)標(biāo)準(zhǔn)化組織的 25 個(gè)國(guó)家在國(guó)際上成立國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)國(guó)際聯(lián)合會(huì)(ISA),由此,標(biāo)準(zhǔn)化活動(dòng)從企業(yè)行為演進(jìn)為國(guó)家管理,進(jìn)而成為全球事業(yè),活動(dòng)范圍從機(jī)電行業(yè)擴(kuò)展到各行各業(yè)。標(biāo)準(zhǔn)化擴(kuò)散到全球經(jīng)濟(jì)的的各個(gè)領(lǐng)域,從保障互換性的手段,發(fā)展成保障資源合理配置、降低貿(mào)易壁壘和提高生產(chǎn)力的重要手段。
軟件行業(yè)現(xiàn)在也有些類(lèi)似工業(yè)早期的狀況,優(yōu)秀開(kāi)發(fā)資源的集中,從上到下的完整、個(gè)性化開(kāi)發(fā)比比皆是。
此外,企業(yè)習(xí)慣于“封閉”設(shè)計(jì)成果,因?yàn)檐浖坏└诵纳a(chǎn)領(lǐng)域接觸,就自然地牽連上各類(lèi)“商業(yè)秘密”,導(dǎo)致成果“封閉”,甚至包括設(shè)計(jì)過(guò)程中產(chǎn)生的模型資產(chǎn),這也是大家需要重復(fù)建設(shè)的原因之一。
綜上所述,軟件開(kāi)發(fā)中,思考方式、設(shè)計(jì)范圍、設(shè)計(jì)成果方面都具有不同程度的“封閉”傾向。當(dāng)然,這其中有其處理現(xiàn)實(shí)問(wèn)題方面的必要性,但是,這也導(dǎo)致架構(gòu)在設(shè)計(jì)標(biāo)準(zhǔn)和視野上不夠開(kāi)放,標(biāo)準(zhǔn)化發(fā)展緩慢。
現(xiàn)在,隨著互聯(lián)網(wǎng)技術(shù)對(duì)企業(yè)連接能力的進(jìn)一步加強(qiáng),生態(tài)圈構(gòu)建從業(yè)務(wù)層面將下沉到軟件層面,要求軟件層面更多地支持聯(lián)通和協(xié)同,這不僅僅是對(duì) API 的關(guān)注,還需要在架構(gòu)設(shè)計(jì)方面有更多的全局視野和開(kāi)放性。各類(lèi)新興技術(shù),無(wú)論是出于對(duì)應(yīng)用成本的考量,還是對(duì)應(yīng)用速度的考量,都需要其在轉(zhuǎn)換為軟件時(shí),提升通用性,提升標(biāo)準(zhǔn)化水平。
從企業(yè)內(nèi)部架構(gòu)走向開(kāi)放式架構(gòu)、推動(dòng)國(guó)民經(jīng)濟(jì)數(shù)字化轉(zhuǎn)型的過(guò)程中,軟件架構(gòu)順應(yīng)經(jīng)濟(jì)模式的發(fā)展,必須要解決標(biāo)準(zhǔn)化短板對(duì)開(kāi)放性、規(guī)?;闹萍s。這不僅有助于將設(shè)計(jì)人員從重復(fù)“搬磚”過(guò)程中解放出來(lái),也讓“磚”能更方便地蓋成“樓”,不能總把軟件設(shè)計(jì)當(dāng)做個(gè)體行為和個(gè)別實(shí)例。
二、行業(yè)級(jí)標(biāo)準(zhǔn)化的核心方向
軟件設(shè)計(jì)主要處理的對(duì)象就是數(shù)據(jù)和行為,架構(gòu)設(shè)計(jì)的關(guān)鍵其實(shí)也在識(shí)別數(shù)據(jù)結(jié)構(gòu),劃分處理數(shù)據(jù)的不同行為模塊。
所以,從設(shè)計(jì)結(jié)果角度出發(fā),架構(gòu)標(biāo)準(zhǔn)化主要是對(duì)數(shù)據(jù)和行為的標(biāo)準(zhǔn)化,而標(biāo)準(zhǔn)化的范圍,從對(duì)設(shè)計(jì)結(jié)果應(yīng)用的角度看,行業(yè)級(jí)的標(biāo)準(zhǔn)化是較為合適的層級(jí),這個(gè)層級(jí)具有合適的語(yǔ)境和語(yǔ)義范圍,也有行業(yè)術(shù)語(yǔ)作為統(tǒng)一概念基礎(chǔ)。
1. 數(shù)據(jù)標(biāo)準(zhǔn)化
數(shù)據(jù)是計(jì)算機(jī)程序的輸入和輸出,也是不同程序模塊間進(jìn)行銜接時(shí)必須要進(jìn)行標(biāo)準(zhǔn)化處理的部分。在軟件設(shè)計(jì)中,接口標(biāo)準(zhǔn)化已經(jīng)是大多數(shù)項(xiàng)目必備的設(shè)計(jì)要求。目前行業(yè)級(jí)的數(shù)據(jù)模型也有實(shí)例,比如 IBM 之前為金融領(lǐng)域設(shè)計(jì)的 FSDM(Financial Services Data Model) 數(shù)據(jù)模型。
FSMD 是上個(gè)世紀(jì) 90 年代,IBM 針對(duì)金融行業(yè)建立核心應(yīng)用系統(tǒng)或者數(shù)據(jù)倉(cāng)庫(kù)推出的數(shù)據(jù)模型。作為大機(jī)及大機(jī)開(kāi)發(fā)服務(wù)的主要供應(yīng)商,IBM 在這方面有獨(dú)特優(yōu)勢(shì),而金融行業(yè)也是大機(jī)的 VIP 級(jí)用戶,因此,IBM 根據(jù)其豐富的行業(yè)經(jīng)驗(yàn)設(shè)計(jì)這一經(jīng)典的行業(yè)級(jí)數(shù)據(jù)模型。
FSDM 是一種分層級(jí)、逐級(jí)細(xì)化的數(shù)據(jù)模型,包括“ABCD”四個(gè)大的層級(jí),具體分層如圖 1 所示:
圖 1 FSDM 數(shù)據(jù)模型的層級(jí)(來(lái)自網(wǎng)絡(luò))
FSDM 將數(shù)據(jù)分為九個(gè)大的類(lèi)別,各類(lèi)別概念如表 1 所示:
表 1 九大概念(來(lái)自網(wǎng)絡(luò))
九大概念之間具有一定的聯(lián)系,其相互關(guān)系如圖 2 所示:
圖 2 九大領(lǐng)域數(shù)據(jù)關(guān)系示例(來(lái)自網(wǎng)絡(luò))
FSDM 金融服務(wù)數(shù)據(jù)模型定義了金融服務(wù)機(jī)構(gòu)自身和業(yè)務(wù)運(yùn)作所需的基本數(shù)據(jù)概念以及相互關(guān)系,包含銀行業(yè)的絕大部分?jǐn)?shù)據(jù)。在實(shí)際設(shè)計(jì)中,數(shù)據(jù)模型會(huì)在九大領(lǐng)域下再細(xì)分為不同的數(shù)據(jù)主題域,主題域包含數(shù)據(jù)實(shí)體,實(shí)體下包含數(shù)據(jù)屬性,從而自上向下完成對(duì)數(shù)據(jù)的企業(yè)級(jí)模型化梳理工作。
FSDM 模型證明,只要堅(jiān)持積累和鉆研,構(gòu)建一個(gè)具有一定影響力的行業(yè)數(shù)據(jù)模型是完全可行的,而且確實(shí)可以給軟件設(shè)計(jì)提供一定的指導(dǎo)和便利。
但是 IBM 當(dāng)初畢竟是與其商業(yè)行為進(jìn)行一定的結(jié)合,有適當(dāng)?shù)尿?qū)動(dòng)力。在沒(méi)有足夠商業(yè)利益結(jié)合的情況下,如何推動(dòng)行業(yè)級(jí)標(biāo)準(zhǔn)化數(shù)據(jù)模型的建設(shè)是一個(gè)難題。此外,F(xiàn)SDM 更多承擔(dān)的是指導(dǎo)性作用,還沒(méi)有真的成為標(biāo)準(zhǔn),需要金融企業(yè)依據(jù)其指導(dǎo)建立數(shù)據(jù)模型并自行維護(hù)。
2. 行為標(biāo)準(zhǔn)化
相較于數(shù)據(jù)標(biāo)準(zhǔn)化,行為標(biāo)準(zhǔn)化更為困難。如果想要建立對(duì)軟件設(shè)計(jì)起行業(yè)級(jí)指導(dǎo)作用的標(biāo)準(zhǔn)化模型,這個(gè)模型必須能指導(dǎo)細(xì)粒度的開(kāi)發(fā),而非僅傳遞到概念層級(jí),如果比照工業(yè)標(biāo)準(zhǔn)的效果,應(yīng)當(dāng)可以指導(dǎo)或者直接生產(chǎn)出可供復(fù)用的軟件“零件”。
軟件設(shè)計(jì)一直在關(guān)注如何提升對(duì)已有軟件資產(chǎn)的復(fù)用,從對(duì)代碼的“復(fù)制粘貼”到模塊化、服務(wù)化、微服務(wù)化,通過(guò)對(duì)業(yè)務(wù)邏輯乃至數(shù)據(jù)封裝和接口開(kāi)放,實(shí)現(xiàn)軟件資產(chǎn)的可重復(fù)利用。各種設(shè)計(jì)思路中,筆者認(rèn)為,構(gòu)件化作為推廣標(biāo)準(zhǔn)化的理念而言,也許是更為合適的概念。
構(gòu)件化設(shè)計(jì),又稱(chēng) CBD(Component-Based Development,基于構(gòu)件的開(kāi)發(fā))或 CBSE(Component-Based,基于構(gòu)件的軟件工程)。關(guān)于該方法的討論比較早,文獻(xiàn)也較多,例如,Alan W.Brown 所著的《Large-Scale, Component-Based Development》(中譯本名稱(chēng)為《大規(guī)?;跇?gòu)件的開(kāi)發(fā)》,2003 年由機(jī)械工業(yè)出版社出版,趙文耘、張志等譯)。
按照構(gòu)件化設(shè)計(jì)理念,構(gòu)件可以獨(dú)立部署,但一個(gè)構(gòu)件可能會(huì)用到其它構(gòu)件或平臺(tái)提供的服務(wù),或者說(shuō)基于構(gòu)件的軟件系統(tǒng)通常是多個(gè)構(gòu)件協(xié)作完成一定功能,所以構(gòu)件依賴(lài)于組裝環(huán)境或稱(chēng)為語(yǔ)境(context),而構(gòu)件基礎(chǔ)設(shè)施應(yīng)是支持異構(gòu)構(gòu)件互操作的標(biāo)準(zhǔn)和通信平臺(tái),構(gòu)件框架則是構(gòu)件實(shí)例“即插即用”的支撐結(jié)構(gòu)。
CBD 的實(shí)現(xiàn)方式之一就是大家耳熟能詳?shù)摹猄OA(Service Oriented Architecture ,面向服務(wù)的體系結(jié)構(gòu))或者 SCA(Service Component Architecture ,服務(wù)組件體系結(jié)構(gòu))。從發(fā)展脈絡(luò)上講,1990 年左右就開(kāi)始出現(xiàn)面向構(gòu)件的技術(shù)思想,也即,編程方法在面向?qū)ο蠛笫敲嫦驑?gòu)件,然后才是面向服務(wù)。
關(guān)于構(gòu)件化設(shè)計(jì),國(guó)家標(biāo)準(zhǔn)也早已有之,比如 GB/T11457-2006 軟件工程過(guò)程、GB/T36445-2018 軟件構(gòu)件模型,都有相關(guān)技術(shù)標(biāo)準(zhǔn)約定,但是這些標(biāo)準(zhǔn)都未包含構(gòu)件的設(shè)計(jì)方法,實(shí)踐中大家更關(guān)心的是如何做出標(biāo)準(zhǔn)化構(gòu)件的方法論。
有人經(jīng)常用“樂(lè)高積木”一詞來(lái)形容構(gòu)件化或服務(wù)化設(shè)計(jì)方式,樂(lè)高積木之所以會(huì)吸引不同年齡段的人群,并能讓大家充分發(fā)揮創(chuàng)造力,主要原因不外乎兩點(diǎn):一是接口的高度標(biāo)準(zhǔn)化,可以簡(jiǎn)單搭接;二是使用者能很輕易地理解每個(gè)積木塊,自由運(yùn)用它。
構(gòu)件模型設(shè)計(jì)的關(guān)鍵也在于這兩點(diǎn)。設(shè)計(jì)行業(yè)級(jí)標(biāo)準(zhǔn)化構(gòu)件模型,首先是接口的高度標(biāo)準(zhǔn)化,這一點(diǎn)有賴(lài)于前文中提到的數(shù)據(jù)標(biāo)準(zhǔn)化;二是構(gòu)件功能的標(biāo)準(zhǔn)化和可理解性,這就涉及到對(duì)業(yè)務(wù)行為的標(biāo)準(zhǔn)化,或者說(shuō)對(duì)各種同類(lèi)型企業(yè)(也存在同類(lèi)型企業(yè)中按照規(guī)模等級(jí)再細(xì)分的可能)的業(yè)務(wù)活動(dòng)標(biāo)準(zhǔn)化,這種標(biāo)準(zhǔn)形成需要以業(yè)務(wù)為核心的建模方法,也需要通過(guò)作為參照系的標(biāo)桿企業(yè)來(lái)提煉標(biāo)準(zhǔn)業(yè)務(wù)行為。
在建模方法中,Alan W.Brown 在《Large-Scale, Component-Based Development》一書(shū)中給出的主要是基于 UML 的方法,該方法雖然與現(xiàn)實(shí)結(jié)合緊密,但對(duì)業(yè)務(wù)人員不夠友好;DDD 也是可以應(yīng)用于構(gòu)件化設(shè)計(jì)的建模方法,尤其是在以構(gòu)建微服務(wù)為應(yīng)用方向運(yùn)用 DDD 方法時(shí),該方法也充分考慮了業(yè)務(wù)含義。筆者在《企業(yè)級(jí)業(yè)務(wù)架構(gòu)設(shè)計(jì):方法論與實(shí)踐》一書(shū)中提到的構(gòu)件模型也是一種可用的構(gòu)建方式,其優(yōu)點(diǎn)是具有企業(yè)級(jí)視角,與業(yè)務(wù)和技術(shù)兩端結(jié)合緊密,也適合于推導(dǎo)行業(yè)標(biāo)準(zhǔn)模型這種精煉性工作。
綜上,數(shù)據(jù)標(biāo)準(zhǔn)化和行為標(biāo)準(zhǔn)化的探索一直有人在進(jìn)行,但需要更強(qiáng)有力的推動(dòng)來(lái)真正形成行業(yè)級(jí)的標(biāo)準(zhǔn),否則,軟件的發(fā)展有可能在“兇猛”的創(chuàng)新下反倒出現(xiàn)“作繭自縛”的情況。
三、行業(yè)級(jí)標(biāo)準(zhǔn)化的深遠(yuǎn)影響
行業(yè)級(jí)標(biāo)準(zhǔn)化的價(jià)值有很多,比如有助于提升軟件資產(chǎn)的可重用性、提升軟件質(zhì)量、減少不必要的改動(dòng)、提升互聯(lián)效率、提高需求質(zhì)量、提升需求形成效率等,這些價(jià)值很多文章都提出過(guò),筆者在本文中想闡述一個(gè)目前較少提及的遠(yuǎn)期價(jià)值:推動(dòng)數(shù)字化思維轉(zhuǎn)型。
數(shù)字化時(shí)代是依靠大規(guī)模軟件生產(chǎn)支持社會(huì)生產(chǎn)的時(shí)代,如同今天工業(yè)的作用。而大規(guī)模軟件生產(chǎn)能力的形成需要與之相匹配的思維方式,人們的思維方式總是要與時(shí)代的主要生產(chǎn)方式相適應(yīng),當(dāng)軟件成為主要的生產(chǎn)方式時(shí),結(jié)構(gòu)化思維就成為這個(gè)時(shí)代最基礎(chǔ)的思維方式,提升所有參與者的結(jié)構(gòu)化思維能力是面向數(shù)字化時(shí)代最重要的思維轉(zhuǎn)型方向,包括業(yè)務(wù)人員的思維轉(zhuǎn)型和技術(shù)人員的思維轉(zhuǎn)型。
業(yè)務(wù)人員思維轉(zhuǎn)型,是指能結(jié)構(gòu)化地看待業(yè)務(wù)、理解業(yè)務(wù),結(jié)構(gòu)化的業(yè)務(wù)視角更有利于將業(yè)務(wù)映射到技術(shù)實(shí)現(xiàn),也更有利于業(yè)務(wù)人員較為直接地應(yīng)用已有的軟件資產(chǎn),如同業(yè)務(wù)人員看到“樂(lè)高積木”,具備結(jié)構(gòu)化思維能力的業(yè)務(wù)人員,更容易適應(yīng)在數(shù)字化時(shí)代看到的“事物”和從事業(yè)務(wù)活動(dòng)、開(kāi)展業(yè)務(wù)創(chuàng)新的方式。
技術(shù)人員思維轉(zhuǎn)型,則是要能結(jié)構(gòu)化地看待業(yè)務(wù)構(gòu)成與技術(shù)實(shí)現(xiàn)的關(guān)系,從而更好地將業(yè)務(wù)分解成合適的“零件”,這是在技術(shù)人員原有結(jié)構(gòu)化思維方式上的一種深化。對(duì)技術(shù)人員而言,這還意味著要更主動(dòng)地去接受標(biāo)準(zhǔn)化的“約束”,從個(gè)體化的改進(jìn)軟件向公用化的改進(jìn)“標(biāo)準(zhǔn)”發(fā)展,這是數(shù)字化時(shí)代進(jìn)行大規(guī)模軟件生產(chǎn)需要的技術(shù)思維方式。
換句話說(shuō),就是在業(yè)務(wù)側(cè),應(yīng)當(dāng)能看到“業(yè)務(wù)服務(wù)化”、“服務(wù)編排化”,業(yè)務(wù)人員具有利用構(gòu)件化軟件資產(chǎn)、協(xié)助生產(chǎn)構(gòu)件化軟件資產(chǎn)的能力;在技術(shù)側(cè),應(yīng)當(dāng)能看到“服務(wù)業(yè)務(wù)化”、“編排服務(wù)化”,技術(shù)人員具有按照業(yè)務(wù)含義準(zhǔn)確設(shè)計(jì)標(biāo)準(zhǔn)化服務(wù),將編排作為一種服務(wù)向業(yè)務(wù)側(cè)提供的能力。
基于行業(yè)級(jí)標(biāo)準(zhǔn)化構(gòu)件,我們應(yīng)當(dāng)能實(shí)現(xiàn)更為標(biāo)準(zhǔn)化的企業(yè)架構(gòu),企業(yè)內(nèi)部以行業(yè)級(jí)標(biāo)準(zhǔn)化構(gòu)件為基礎(chǔ)搭建軟件,而具備這樣標(biāo)準(zhǔn)化架構(gòu)的企業(yè)也必然會(huì)成為開(kāi)放式架構(gòu)中的標(biāo)準(zhǔn)化元素,實(shí)現(xiàn)行業(yè)級(jí)、社會(huì)級(jí)的開(kāi)放互聯(lián)。如圖 3 所示:
圖 3 以標(biāo)準(zhǔn)化為基礎(chǔ)的企業(yè)架構(gòu)設(shè)計(jì)目標(biāo)
盡可能以標(biāo)準(zhǔn)化組件支持企業(yè)商業(yè)模式的構(gòu)建,能達(dá)成這樣的效果,軟件對(duì)企業(yè)生產(chǎn)的基礎(chǔ)性作用才能進(jìn)一步增強(qiáng),才能用軟件大規(guī)模覆蓋各類(lèi)型企業(yè)的生產(chǎn)、管理,這正是數(shù)字化轉(zhuǎn)型的前提。
數(shù)字化不是一個(gè)企業(yè)自己的數(shù)字化,而是整個(gè)行業(yè)、社會(huì)的數(shù)字化,也是所有從業(yè)人員的數(shù)字化。精煉行業(yè)級(jí)標(biāo)準(zhǔn)化構(gòu)件的過(guò)程,正是業(yè)務(wù)和技術(shù)兩側(cè)同時(shí)進(jìn)行數(shù)字化思維轉(zhuǎn)型的過(guò)程。
數(shù)字化時(shí)代,各類(lèi)企業(yè)都或多或少地轉(zhuǎn)型為一家科技企業(yè)。數(shù)字化轉(zhuǎn)型完成,大家走到同一起跑線,今天所謂的“跨界者”,在數(shù)字化時(shí)代將不復(fù)存在。大家比拼的是快速創(chuàng)新商業(yè)模式的能力,快速創(chuàng)新離不開(kāi)快速搭建。而快速搭建離不開(kāi)對(duì)標(biāo)準(zhǔn)化資產(chǎn)的快速利用,對(duì)要素的獨(dú)特組合能力才是大部分創(chuàng)新的主要表現(xiàn)形式,重復(fù)造輪子在今天也許還情有可原,而在數(shù)字化時(shí)代很可能就真是“無(wú)情的浪費(fèi)”。
可以回想下,對(duì)精益生產(chǎn)過(guò)程探索的動(dòng)力正是對(duì)杜絕“浪費(fèi)”的執(zhí)著,如果軟件生產(chǎn)想要靠近精益生產(chǎn),那就從杜絕“浪費(fèi)”開(kāi)始吧。
四、行業(yè)級(jí)標(biāo)準(zhǔn)化的發(fā)展思路:大教堂與集市
Eric S·Raymond 所著的《大教堂與集市》被認(rèn)為是詮釋開(kāi)源思想的最佳書(shū)籍之一。軟件系統(tǒng)的開(kāi)發(fā)模式因此出現(xiàn)“大教堂”和“集市”兩種比喻,前者是傳統(tǒng)的、大公司的軟件開(kāi)發(fā)模式,后者則是新興的、社區(qū)化的軟件開(kāi)發(fā)模式。
行業(yè)級(jí)標(biāo)準(zhǔn)化這個(gè)想法,初次聽(tīng)起來(lái),很多人自然會(huì)跟“大教堂”聯(lián)系到一起,畢竟行業(yè)級(jí)標(biāo)準(zhǔn)化聽(tīng)起來(lái)就有很多“中心化”因素在其中,需要標(biāo)準(zhǔn)、跨企業(yè)共識(shí)、組織推動(dòng)等等,而且,現(xiàn)有其他領(lǐng)域的標(biāo)準(zhǔn)化模式一般也都是“中心化”的,無(wú)論國(guó)內(nèi)國(guó)外,國(guó)家標(biāo)準(zhǔn)都是標(biāo)準(zhǔn)層級(jí)中非常有影響力的部分。
軟件行業(yè)是否會(huì)有些獨(dú)特之處呢?當(dāng)然會(huì)有,軟件是一組可工作的計(jì)算機(jī)代碼,而計(jì)算機(jī)代碼的特點(diǎn)是,很容易“沾染”開(kāi)發(fā)者的個(gè)人特點(diǎn),也很容易復(fù)制。因此,軟件制品同時(shí)具備“偶然性”和“難保護(hù)”的特點(diǎn),也正是“偶然性”使軟件的創(chuàng)新比現(xiàn)有工業(yè)制品更容易。
盡管應(yīng)當(dāng)保護(hù)開(kāi)發(fā)者付出的辛苦,但是無(wú)論是現(xiàn)有專(zhuān)利制度的效率,還是軟件保護(hù)本身給行業(yè)發(fā)展帶來(lái)的弊端,都足以讓所有人反思,軟件行業(yè)該采用什么樣的方式走向標(biāo)準(zhǔn)化,走向數(shù)字化時(shí)代。
軟件行業(yè)從業(yè)者的核心競(jìng)爭(zhēng)力到底是什么?Paul Graham 在《黑客與畫(huà)家》一書(shū)中曾指出,解決困難問(wèn)題才是程序員最核心的競(jìng)爭(zhēng)力,而這種能力并非來(lái)自于對(duì)代碼的保護(hù)。在國(guó)外,專(zhuān)利、收購(gòu)、訴訟等都是大公司經(jīng)常采用的保護(hù)手段,而非一個(gè)程序員可以輕易采取的手段。
解決困難問(wèn)題的能力也并非是編寫(xiě)“前無(wú)古人后無(wú)來(lái)者”的代碼,正如 Eric S·Raymond 所言,“好的程序員知道寫(xiě)什么,而偉大的程序員知道改寫(xiě)(或者重復(fù)使用)什么”。軟件行業(yè)進(jìn)一步發(fā)展,進(jìn)入大規(guī)模批量化軟件生成的數(shù)字化時(shí)代的前提條件,也許正是重新設(shè)置軟件行業(yè)的管理、保護(hù)機(jī)制,推動(dòng)開(kāi)源“標(biāo)準(zhǔn)化”模式的發(fā)展。
為提高生產(chǎn)效率和軟件質(zhì)量,我們需要通過(guò)開(kāi)源模式,提升構(gòu)件的標(biāo)準(zhǔn)化程度、可用性和易用性,建立國(guó)家運(yùn)營(yíng)的行業(yè)級(jí)開(kāi)源構(gòu)件庫(kù),形成類(lèi)似開(kāi)源社區(qū)的機(jī)制。優(yōu)秀程序員的價(jià)值既然可以通過(guò)在開(kāi)源社區(qū)的影響力獲得,也一樣可以通過(guò)對(duì)行業(yè)級(jí)開(kāi)源構(gòu)件庫(kù)的貢獻(xiàn)來(lái)建立,優(yōu)秀程序員依靠的并不是對(duì)他已有成果的封閉式保護(hù)。
對(duì)軟件開(kāi)發(fā)企業(yè)而言,企業(yè)的核心競(jìng)爭(zhēng)力也應(yīng)當(dāng)是其設(shè)計(jì)和集成解決方案的能力。從這個(gè)角度來(lái)講,構(gòu)件的標(biāo)準(zhǔn)化和開(kāi)源會(huì)對(duì)企業(yè)能力有更大的提升,“一招鮮吃遍天”并不是應(yīng)該鼓勵(lì)的發(fā)展模式。
對(duì)應(yīng)用軟件或者自主開(kāi)發(fā)內(nèi)部軟件的企業(yè)而言,軟件保護(hù)本就不應(yīng)該是其業(yè)務(wù)的核心,軟件代碼不是可樂(lè)配方,一成不變的代碼不會(huì)為企業(yè)帶來(lái)持久的競(jìng)爭(zhēng)力,只會(huì)隨著時(shí)間的變化快速衰減。此外,架構(gòu)并不是可以簡(jiǎn)單照搬照抄的東西,開(kāi)放架構(gòu)設(shè)計(jì)未必會(huì)讓競(jìng)爭(zhēng)對(duì)手快速趕超,不小心的追趕者甚至有可能掉進(jìn)無(wú)意設(shè)置的“陷阱”。
未面向數(shù)字化時(shí)代深入思考的軟件保護(hù)機(jī)制也許更多只是給行業(yè)籠罩了一層神秘面紗?!凹小狈绞讲⒉贿m合直接孕育一套可用的軟件,開(kāi)源“標(biāo)準(zhǔn)化”模式的建立也需要“第一推動(dòng)”?!凹小狈绞匠闪⒌那疤釛l件之一是要先提供一套可以運(yùn)行的軟件作為起點(diǎn),開(kāi)源“標(biāo)準(zhǔn)化”也需要逐步建立每個(gè)行業(yè)第一套可用的標(biāo)準(zhǔn)構(gòu)件庫(kù)或者開(kāi)源系統(tǒng),然后再通過(guò)社區(qū)化方式不斷發(fā)展為更具生命力的標(biāo)準(zhǔn)體系,這個(gè)“第一推動(dòng)”和對(duì)構(gòu)件標(biāo)準(zhǔn)體系的設(shè)計(jì)就是標(biāo)準(zhǔn)化組織的責(zé)任,這樣的組織也應(yīng)該是公益性的。
未來(lái)的大規(guī)模軟件生產(chǎn),也許正是用“集市”提供的構(gòu)件建設(shè)“大教堂”的模式,基于這個(gè)認(rèn)知,行業(yè)級(jí)標(biāo)準(zhǔn)化正是架構(gòu)演進(jìn)該有的趨勢(shì)。
作者簡(jiǎn)介:
付曉巖,《企業(yè)級(jí)業(yè)務(wù)架構(gòu)設(shè)計(jì):方法論與實(shí)踐》圖書(shū)作者,原國(guó)有大行資深業(yè)務(wù)架構(gòu)師,負(fù)責(zé)業(yè)務(wù)架構(gòu)設(shè)計(jì)、項(xiàng)目管理,熱衷新技術(shù)探索與實(shí)踐,具有豐富的銀行業(yè)務(wù)經(jīng)驗(yàn)和企業(yè)級(jí)項(xiàng)目業(yè)務(wù)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),曾主導(dǎo)客戶關(guān)系、金融市場(chǎng)、同業(yè)、資管、養(yǎng)老金等多個(gè)領(lǐng)域核心系統(tǒng)的業(yè)務(wù)架構(gòu)設(shè)計(jì),現(xiàn)就職于建信金融科技有限責(zé)任公司。即將發(fā)行新書(shū)《銀行數(shù)字化轉(zhuǎn)型》,公眾號(hào):曉談巖說(shuō)。
本文題目:怎樣才能實(shí)現(xiàn)軟件架構(gòu)的“代代相傳”?
轉(zhuǎn)載來(lái)源:http://m.fisionsoft.com.cn/article/djddcoj.html


咨詢(xún)
建站咨詢(xún)
