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