范曉峰,李 明,徐煜明,宋 鈺
(中國鐵路南寧局集團(tuán)有限公司 信息技術(shù)所,1.高級工程師,2.工程師,廣西 南寧 530029)
軟件研制過程包括需求調(diào)研、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試、投產(chǎn)等生命周期。一個軟件研發(fā)團(tuán)隊在沒有積累的情況下完成這些工作,會耗費較大的人力和時間成本,即使在團(tuán)隊本身有大量代碼積累時去實施研發(fā),也會由于對積累代碼缺乏管理和控制導(dǎo)致開發(fā)風(fēng)險急劇上升。當(dāng)團(tuán)隊中的骨干開發(fā)人員發(fā)生崗位變更時,這種風(fēng)險又將被放大,嚴(yán)重制約著項目的健康發(fā)展。
傳統(tǒng)的軟件開發(fā)模式,從了解需求開始,搭建系統(tǒng)框架,編寫系統(tǒng)代碼,開發(fā)效率低。即使開發(fā)是從原有積累代碼開始,也會因為對原始代碼缺乏管理、缺乏重構(gòu),導(dǎo)致不可預(yù)知的開發(fā)風(fēng)險。因此,研究構(gòu)建基于軟件模板的快速開發(fā)體系,結(jié)合長期積累的開發(fā)經(jīng)驗,重視軟件模板整體性、高復(fù)用性、高可用性和高效率性設(shè)計,總結(jié)并形成具有普遍代表意義的公共基礎(chǔ)模塊,提高模塊間的復(fù)用性,優(yōu)化管理軟件模板,降低模板之間耦合度,使模板更具靈活性、擴(kuò)充性和移植性,適應(yīng)更多軟件項目設(shè)計要求。
為了有效地提高軟件研制效率和控制風(fēng)險,建立一套軟件項目快速開發(fā)管理體系勢在必行,該體系應(yīng)包括一個用于積累團(tuán)隊技術(shù)資源、研發(fā)模板的平臺和團(tuán)隊合作銜接的技術(shù)規(guī)范;將一些已經(jīng)在各項目中應(yīng)用成熟的低風(fēng)險的軟件模板集成至其中,這些模板是從各個項目中提煉出來的共用部分,并通過良好的架構(gòu)設(shè)計和項目本身脫離了耦合關(guān)系,可以服務(wù)于絕大多數(shù)其他項目的研制工作。
構(gòu)建軟件項目快速開發(fā)管理體系能簡化軟件研制過程,利于團(tuán)隊開發(fā),控制項目風(fēng)險,節(jié)省項目開發(fā)時耗費的人力和時間成本,節(jié)省項目維護(hù)升級時耗費的人力和時間成本,使開發(fā)人員把更多時間投入到對鐵路運輸業(yè)務(wù)的梳理、研究中去,開發(fā)出更能貼合鐵路運輸實際,超越鐵路運輸要求,為鐵路運輸安全、效率、效益提供可靠支持的信息系統(tǒng)。
為了應(yīng)對大量具有一般普遍性需求的傳統(tǒng)應(yīng)用系統(tǒng),將快速開發(fā)模式盡可能的覆蓋大多數(shù)應(yīng)用開發(fā),首先要理清應(yīng)用系統(tǒng)的一般開發(fā)方式,通??梢酝ㄟ^歸納需求而將系統(tǒng)分成三個層次:即用戶界面層、應(yīng)用服務(wù)層和數(shù)據(jù)持久層。三個層次具有普遍意義的代表性,用戶界面層通常作為人機(jī)交互的接口而存在,即基于B/S模式的Web瀏覽器和基于C/S模式的應(yīng)用客戶端;應(yīng)用服務(wù)層接收業(yè)務(wù)請求,進(jìn)行業(yè)務(wù)處理,其中包含了與數(shù)據(jù)庫層的交互和業(yè)務(wù)的邏輯封裝,因業(yè)務(wù)需求通常是復(fù)雜而特殊,所以該層是三層中最具特殊性和靈活性的一層,同時也是三層應(yīng)用的核心;數(shù)據(jù)庫層完成了對象的持久化存儲,各數(shù)據(jù)庫廠商已為不同的開發(fā)語言適配了相應(yīng)的數(shù)據(jù)存儲接口,通用性和可靠性已今非昔比,目前數(shù)據(jù)庫層的重點已轉(zhuǎn)移到對數(shù)據(jù)安全的保障。
構(gòu)建面向傳統(tǒng)三層應(yīng)用系統(tǒng)的管理體系,可以采用由上到下或是由整體到局部的設(shè)計思路,規(guī)劃每個層次的主要方面。體系結(jié)構(gòu)如圖1所示。
圖1 體系結(jié)構(gòu)圖
2.1.1 數(shù)據(jù)實體類的描述方式 數(shù)據(jù)庫表是對實體類的抽象表示,實體類是數(shù)據(jù)庫表的形象表示又可以抽象為業(yè)務(wù)邏輯的最小組成單元,將實體類映射為數(shù)據(jù)庫表的一個個持久化類,該類由一條或多條記錄組成,表述業(yè)務(wù)對象并實現(xiàn)持久化存儲。
2.1.2 數(shù)據(jù)的存取方式 采用數(shù)據(jù)庫永久存儲數(shù)據(jù)實體,涉及如何映射表與實體對象的關(guān)系,以何種格式作為約定來達(dá)到便捷交互、快速存取的目的。
2.1.3 業(yè)務(wù)邏輯的組織方式 傳統(tǒng)的應(yīng)用系統(tǒng)是基于面向?qū)ο笤O(shè)計與開發(fā),業(yè)務(wù)邏輯通常構(gòu)建在實體對象上,通常實體對象中承載了用來標(biāo)記業(yè)務(wù)狀態(tài)和傳遞消息的邏輯字段,在進(jìn)行應(yīng)用服務(wù)層的設(shè)計時需要花費大量精力來處理業(yè)務(wù)邏輯的組織方式,力求做到保證邏輯處理的正確性和可靠性,字段的表述清晰明了,選取的標(biāo)志具有規(guī)范性和限制性。
2.1.4 業(yè)務(wù)服務(wù)的提供方式 傳統(tǒng)應(yīng)用努力將復(fù)雜的業(yè)務(wù)邏輯以模塊化的方式劃分并以接口的方式對外提供相應(yīng)的服務(wù),通過應(yīng)用服務(wù)層將復(fù)雜的業(yè)務(wù)邏輯封裝,盡可能地劃分業(yè)務(wù)邏輯邊界,為更方便更清晰的組織業(yè)務(wù)邏輯服務(wù),與表示層進(jìn)行交互;另一方面,模塊間的功能調(diào)用也可以作為服務(wù)提供方式,保證系統(tǒng)的高內(nèi)聚低耦合,提高系統(tǒng)的容錯性,降低開發(fā)風(fēng)險。
結(jié)合實際應(yīng)用,對用戶界面層、應(yīng)用服務(wù)層和數(shù)據(jù)庫層的三層結(jié)構(gòu)進(jìn)行了進(jìn)一步的擴(kuò)展。將應(yīng)用服務(wù)層分為四個子層,即實體定義層、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和業(yè)務(wù)外觀層。
2.2.1 實體定義層 以XML或其他格式描述數(shù)據(jù)實體結(jié)構(gòu),不僅需要清晰映射數(shù)據(jù)實體與數(shù)據(jù)表的字段信息,還要清晰描述各數(shù)據(jù)表間的關(guān)聯(lián)信息、各表的關(guān)鍵字段。同時,實體定義層的數(shù)據(jù)描述需要符合相應(yīng)的對象實體描述語言規(guī)范,數(shù)據(jù)訪問層需要借助實體描述實現(xiàn)關(guān)系映射與數(shù)據(jù)存取。
2.2.2 數(shù)據(jù)訪問層 數(shù)據(jù)訪問層定義了一系列抽象的數(shù)據(jù)庫對象(表、視圖和存儲過程等)的操作方法,并將這些方法置于接口內(nèi),作為外界訪問的唯一標(biāo)準(zhǔn)。數(shù)據(jù)訪問層根據(jù)不同的數(shù)據(jù)庫(如:SQLServer、Oracle、MySQL、SQLite等)分 別 提 供 適 配 器(Adapter)實現(xiàn)上述接口。這樣的設(shè)計徹底解除了業(yè)務(wù)邏輯層對不同數(shù)據(jù)庫訪問語法的耦合關(guān)系。使得業(yè)務(wù)邏輯層可以用同樣方式訪問不同的數(shù)據(jù)庫,消除了業(yè)務(wù)邏輯層對某種具體數(shù)據(jù)庫的直接依賴,最終使得項目能適應(yīng)更廣泛的數(shù)據(jù)環(huán)境。
2.2.3 業(yè)務(wù)邏輯層 出于快速構(gòu)建的目標(biāo),針對常用的業(yè)務(wù)規(guī)則(如某業(yè)務(wù)對象的CRUD方法、批量生成和刪除方法、權(quán)限控制、合法性判斷等)提供參數(shù)化定義,并以XML方式進(jìn)行描述,然后根據(jù)規(guī)則,使用可復(fù)用的通用程序庫(非代碼生成)實現(xiàn)常用業(yè)務(wù)的零代碼構(gòu)建。另外,如果某些實際業(yè)務(wù)和通用業(yè)務(wù)存在略微差異,再根據(jù)實際需求對復(fù)用的程序進(jìn)行擴(kuò)展、重寫或棄用。基于配置的快速構(gòu)建加自由擴(kuò)展的業(yè)務(wù)邏輯層構(gòu)建方式可以極大地提高軟件項目的開發(fā)效率。
2.2.4 界面層 界面層負(fù)責(zé)通過友好可視的人機(jī)交互界面接收用戶的各類指令,完成與用戶的交互過程。出于快速構(gòu)建的目標(biāo),針對常用的界面模塊風(fēng)格,使用可復(fù)用的腳本庫實現(xiàn)常用界面風(fēng)格的零代碼構(gòu)建,擴(kuò)展部分通過腳本的“注入”和“事件響應(yīng)”等方式實現(xiàn)交互界面重新布局,風(fēng)格變化、自定義用戶控件等。基于腳本復(fù)用的快速構(gòu)建模式可以使軟件開發(fā)工作從一個很高的起點開始。
為了使應(yīng)用程序的結(jié)構(gòu)和編碼風(fēng)格標(biāo)準(zhǔn)化,便于開發(fā)人員的后期維護(hù),提高開發(fā)維護(hù)效率,制定一套開發(fā)規(guī)范和標(biāo)準(zhǔn)勢在必行。為此,確定了命名規(guī)范、代碼書寫規(guī)范、類成員使用規(guī)范和數(shù)據(jù)庫設(shè)計開發(fā)規(guī)范,用于快速構(gòu)建可復(fù)用的代碼庫、腳本庫、資源及文檔首先使用該開發(fā)規(guī)范進(jìn)行開發(fā)實現(xiàn)。
統(tǒng)一認(rèn)證模塊具備統(tǒng)一授權(quán)和身份認(rèn)證兩個基本功能,可以為不同的業(yè)務(wù)系統(tǒng)提供一套標(biāo)準(zhǔn)、安全、可靠的授權(quán)方式,減少重復(fù)編碼工作,也可有效整合團(tuán)隊使用技術(shù)架構(gòu)不統(tǒng)一造成后期整合困難的問題。用戶通過統(tǒng)一認(rèn)證模塊訪問各業(yè)務(wù)系統(tǒng)時,模塊提供用戶訪問的身份認(rèn)證工作,校驗身份的合法性,實現(xiàn)用戶在不同業(yè)務(wù)系統(tǒng)之間的一站用戶登錄。管理員可以通過統(tǒng)一認(rèn)證模塊,對用戶進(jìn)行不同系統(tǒng)使用、操作權(quán)限的設(shè)置。
2.4.1 擴(kuò)展性 系統(tǒng)設(shè)計時需要考慮到系統(tǒng)的可擴(kuò)展性,隨著接入應(yīng)用的增多,系統(tǒng)也要支持橫向擴(kuò)展來滿足高并發(fā)的需求。
2.4.2 安全性 設(shè)計時需要考慮系統(tǒng)應(yīng)用的安全性,從數(shù)據(jù)安全到傳輸安全,保證認(rèn)證平臺安全穩(wěn)定運行。
2.4.3 跨平臺 用不同技術(shù)開發(fā)的系統(tǒng),可以按統(tǒng)一認(rèn)證接口進(jìn)行認(rèn)證。例如,用NET開發(fā)平臺或Java技術(shù)開發(fā)的系統(tǒng)都可以通過統(tǒng)一認(rèn)證模塊實現(xiàn)統(tǒng)一認(rèn)證,進(jìn)而實現(xiàn)跨平臺的一站式用戶登錄。
貨運基礎(chǔ)管理平臺就是該模塊的一個應(yīng)用實例,通過該平臺可以為平臺內(nèi)不同應(yīng)用系統(tǒng)進(jìn)行統(tǒng)一用戶權(quán)限分配,提供統(tǒng)一用戶認(rèn)證,實現(xiàn)用戶在這些系統(tǒng)內(nèi)的用戶一站式登錄。
使用軟件項目快速開發(fā)體系進(jìn)行信息應(yīng)用系統(tǒng)開發(fā),開發(fā)前期的需求調(diào)查、需求分析、功能設(shè)計、數(shù)據(jù)表設(shè)計,這些步驟與傳統(tǒng)模式相同。而在系統(tǒng)的詳細(xì)設(shè)計上則有很大區(qū)別,開發(fā)者不再是通過寫代碼方式實現(xiàn)系統(tǒng),而很大程度上是通過對應(yīng)系統(tǒng)進(jìn)行配置來實現(xiàn)系統(tǒng)的各項功能。
具體搭建一個新應(yīng)用系統(tǒng),需要進(jìn)行的配置有:菜單配置、數(shù)據(jù)表配置、插件配置、系統(tǒng)后臺配置等。
自軟件項目快速開發(fā)管理體系研究構(gòu)建后,中國鐵路南寧局集團(tuán)有限公司信息技術(shù)所已經(jīng)利用該體系開發(fā)了多個信息系統(tǒng),取得良好效果?!惰F路局貨運營銷決策支持系統(tǒng)》是應(yīng)用該體系進(jìn)行研發(fā)的典型。在收到研發(fā)任務(wù)后,研發(fā)人員緊扣業(yè)務(wù)需求,應(yīng)用該體系在1個月內(nèi)迅速構(gòu)建出系統(tǒng)原型,然后每半個月按業(yè)務(wù)部門需求對原型進(jìn)行一次完善,3個月內(nèi)實現(xiàn)了系統(tǒng)在全局的試用。如果采用常規(guī)的開發(fā)模式,從了解需求,再從頭搭建系統(tǒng)框架,編寫系統(tǒng)代碼,至少需要一年的開發(fā)周期。而通過使用軟件項目快速開發(fā)管理體系,使研發(fā)人員更專注到業(yè)務(wù)需求的了解、概括、抽象,并快速實現(xiàn),同時體系更適合團(tuán)隊開發(fā)的特點也得到突出體現(xiàn)。系統(tǒng)的快速、高質(zhì)量的研發(fā)和應(yīng)用,使貨運營銷體系改革能夠迅速鋪開,貨運管理人員、營銷人員通過該系統(tǒng)可以掌握全局貨運情況包括貨運生產(chǎn)信息、貨場設(shè)施、營銷方向,掌握集團(tuán)公司54家大客戶在內(nèi)的廠礦企業(yè)的原料、產(chǎn)品運量、去向、價格,以及這些企業(yè)通過公路、水路、鐵路等運輸方式的發(fā)運情況等,為最終實現(xiàn)全局貨運精準(zhǔn)營銷,全局貨運運量的突破提供了有力支持。
在中國國家鐵路集團(tuán)有限公司不斷深化強(qiáng)基達(dá)標(biāo)、提質(zhì)增效工作中,信息技術(shù)不斷創(chuàng)新是一個重要支撐。而軟件項目快速開發(fā)管理體系的研究和應(yīng)用,節(jié)省了項目開發(fā)人力和時間,提高了信息系統(tǒng)的研發(fā)效率,縮短了信息系統(tǒng)的研發(fā)周期,更好地滿足了鐵路安全、生產(chǎn)、經(jīng)營對信息系統(tǒng)研發(fā)的需求,為交通強(qiáng)國、鐵路先行提供了有力的信息技術(shù)支持。