王鴻捷
在企業(yè)軟件開發(fā)管理部門的日常工作中,常常需要組織與開展大量的軟件開發(fā)需求定義、需求架構(gòu)評審和IT架構(gòu)設計審查工作??偨Y(jié)既往軟件用戶企業(yè)與IT之間所存在的問題,本文闡述了基于微服務技術(shù)理論和技術(shù)架構(gòu)下的、應用軟件開發(fā)過程中的、去流程化設計的技術(shù)原理,分析了這一技術(shù)理論的提出背景,創(chuàng)新提出了“業(yè)務流程”、“流程要素”、“流程要素知識庫”等認識論,論述了該技術(shù)理論的核心意涵與應用條件,簡要介紹了實踐中應用的情況,以促使更多的軟件開發(fā)管理同行或軟件開發(fā)服務商,對企業(yè)流程軟件的開發(fā)管理與架構(gòu)設計獲得新的思路,提升面向企業(yè)業(yè)務流程類軟件的業(yè)務粘度和使用彈性。
企業(yè)軟件開發(fā)管理的模式是多樣而復雜的。
第一類情況,在缺乏專職管理部門和運行機制所保障的企業(yè),面臨企業(yè)級、部門級、專業(yè)級三個層級的軟件開發(fā)工作時,通常采用了開發(fā)工作外包或者在商業(yè)軟件基礎(chǔ)上做定制開發(fā)的組織模式。
第二類情況,企業(yè)配置了專職或分管機構(gòu),也具備了軟件開發(fā)的管理流程與管理制度,在軟件自主開發(fā)組織與部分業(yè)務外包過程中,按照業(yè)務需求部門的委托或要求,組織開展業(yè)務流程梳理,并將梳理完成的業(yè)務流程作為招標技術(shù)要求的一部分或整體,進行選商、定商和軟件開發(fā)。
上述兩類情況,就軟件開發(fā)組織工作而言有著共同的思維特征和行為指向:
以業(yè)務流程為核心構(gòu)建軟件的開發(fā)需求;
招標技術(shù)文件所指明的軟件架構(gòu)設計重點以及IT服務商的工作重點側(cè)重于業(yè)務流程的IT化。
從筆者自身的從業(yè)經(jīng)歷來看,導致軟件后期運行過程中產(chǎn)生大量新增定制服務、乃至軟件生命周期較短難以可持續(xù)應用的問題根源,很大原因可能恰恰來源于此。
為此,本文試圖站在一個軟件開發(fā)管理者的視角,對這一問題產(chǎn)生的原因進行分析和總結(jié),提出并闡述“軟件開發(fā)的去流程化設計原理”的核心意涵與運用方法,從而找到一種更為科學軟件開發(fā)管理的方法,并使軟件具有更好的使用效果。
正如前文所述,將線下流程IT化以后抽象成軟件并交付用戶使用,這一傳統(tǒng)的軟件開發(fā)管理與組織策略,很可能帶來軟件在業(yè)務層面的使用彈性和可持續(xù)性問題。
分析這一問題產(chǎn)生的根源,需要對“流程”這一概念的理解入手。
筆者總結(jié)了“流程”的認識論與邏輯,主要包括以下幾個核心論點:
“流程”的形成,來源于“制度”和“生產(chǎn)組織方式”,而這二者不可能在一個企業(yè)的生產(chǎn)與經(jīng)營過程中保持永久不變。
一個流程的形成,是由多個“流程要素”構(gòu)成,而“流程要素”的實質(zhì)是“企業(yè)管理要素”,而“流程要素”的多少,取決于軟件用戶對于特定管理對象的定義,因此,不應該試圖用一個特定的“流程”去表達對多種管理形態(tài)的抽象。
與其說軟件用戶關(guān)注“業(yè)務流程”,倒不如說軟件用戶本質(zhì)關(guān)注的是“適用的業(yè)務流程要素環(huán)境可能提供的自定義流程的靈活性和便捷性”。
基于以上三點認識,軟件用戶、軟件開發(fā)組織者、IT承包商等軟件開發(fā)工作的干系人,應將對“流程”的關(guān)注,轉(zhuǎn)移到對“流程要素”的關(guān)注。
按照上述認識論,筆者于2014年提出了“軟件開發(fā)的去流程化設計”思想,并應用于企業(yè)“協(xié)同辦公系統(tǒng)開發(fā)”、“工程項目文檔編碼系統(tǒng)”、“企業(yè)數(shù)據(jù)云”等一系列軟件開發(fā)工作中,取得了良好的效果。
2018年,將上述思想和應用結(jié)果加以總結(jié),提出了“軟件開發(fā)的去流程化設計原理”技術(shù)理論,即:
企業(yè)的業(yè)務流程,是由企業(yè)管理制度和企業(yè)生產(chǎn)組織方式所決定的,將隨著企業(yè)管理制度創(chuàng)新、生產(chǎn)工具與新技術(shù)應用而不斷演化,沒有理由不應用一種業(yè)務流程的IT化去表達這一演化過程中所面臨的同類需求;
信息化工作的任務不是將現(xiàn)有的業(yè)務流程軟件化而是對流程要素加以關(guān)注和總結(jié),推動不同流程要素知識庫的形成;
表達在具體的軟件開發(fā)組織與架構(gòu)設計中,應采用基于類似于SOA微服務架構(gòu)的“第二次抽象”基礎(chǔ)上的“第三次抽象”(若流程的軟件化定義為“第一次抽象”的話),考慮實施“流程要素”的模塊化和知識化,同時在傳統(tǒng)軟件設計的基礎(chǔ)上,增加用戶“自定義流程”的軟件界面,并選擇適當?shù)牧鞒桃妫鳛檐浖軜?gòu)設計的核心思想;
用戶使用軟件時,按照“自定義流程”的方式,勾選“流程要素知識庫”中的“流程要素”,將本次使用的業(yè)務流程加以預置,通過軟件平臺內(nèi)的流程引擎快速實現(xiàn)特定流程的定制。
這一技術(shù)理論的核心意涵是:將軟件的“第三次抽象”中原來由軟件或其開發(fā)承包商完成的工作,交還給用戶自定義完成,以滿足當前或未來業(yè)務的適應性;而軟件開發(fā)架構(gòu)設計的要點,在于給用戶創(chuàng)建一個滿足其“自定義流程”或者“自定義規(guī)則”的快捷掌握和靈活高效的使用環(huán)境。
這一技術(shù)原理的應用條件是需要基于SOA微服務架構(gòu)。微服務架構(gòu)的理念是將應用解耦成多個可完成獨立功能的服務組件,每個微服務僅關(guān)注于完成一件任務并可很好地完成該任務,具體表現(xiàn)為:
軟件被分為不同的功能模塊,功能模塊之間是相對獨立、松耦合的關(guān)系,并可復用;
分解的功能模塊是一個可獨立維護、可替換的部件(Replacement Parts)。每個服務都可以作為單獨的進程運行,不會造成整個應用的失??;
每個服務都定義了明確的邊界,并且獨立部署存在、易擴展 。
因此微服務是一個彈性的應用架構(gòu),可為實現(xiàn)軟件的去流程化提供支撐。
案例1: 企業(yè)協(xié)同辦公系統(tǒng)設計
該系統(tǒng)的研發(fā),是立足一個商業(yè)協(xié)同平臺、開展的一系列業(yè)務流程的定制工作。研發(fā)團隊按照筆者提出的“自由流程”指導思想,設計并創(chuàng)建了“企業(yè)級人力資源數(shù)據(jù)庫”、業(yè)務類型庫、作業(yè)代碼庫、審批流程節(jié)點要素庫,作為用戶基于特定權(quán)限范圍內(nèi)的信息傳輸方式和業(yè)務流程自定義的關(guān)鍵。目前該系統(tǒng)已經(jīng)平穩(wěn)運行了4年。
案例2: 工程項目文件編碼系統(tǒng)
工程項目的圖紙或文件通常面對建設投資方、EPC總包商和本企業(yè)多個檔案管理系統(tǒng)所要求的文件編碼,如何快速有效保障項目的同一份文件、按照多個編碼體系提交給對應的文檔管理系統(tǒng),成為長期困擾工程公司和設計單位的一個問題。傳統(tǒng)的解決方案是采用一個項目配置多個文控人員的方式,成本和編碼錯誤率高。
研發(fā)這一系統(tǒng)的目的,是想要實現(xiàn)“一個文控、隨時自定義編碼規(guī)則、所有文件編制人軟件化使用”的目標。
本系統(tǒng)采用了“文件編碼審批流程自定義+人力資源公共數(shù)據(jù)庫+編碼層級知識庫+代碼知識庫”等流程要素的IT整合手段,實現(xiàn)了研發(fā)目的,目前已經(jīng)在企業(yè)正常運行2年,優(yōu)化了生產(chǎn)質(zhì)量、提高了生產(chǎn)效率。
該技術(shù)理論還在很多企業(yè)絕大多數(shù)與業(yè)務流程相關(guān)的軟件開發(fā)設計中得到了應用,應用效果良好。
作為一種創(chuàng)新的技術(shù)理論,“軟件開發(fā)的去流程化設計”的思想核心是關(guān)注流程產(chǎn)生的原因、流程軟件化后當前的使用效果和未來可能的變化。
“軟件開發(fā)的去流程化設計”所表達的,不能被簡單理解為“軟件開發(fā)不用關(guān)注流程”,而是對“流程要素”的關(guān)注遠遠重要于流程本身。
該技術(shù)理論不能被理解為“基于SOA微服務架構(gòu)的技術(shù)理論”,軟件設計中,兩者只有依托關(guān)系,而不是等同關(guān)系。
該技術(shù)理論應用中有一項重要的工作:將“流程要素”知識庫化。
作者單位:中國石油工程建設有限公司西南分公司