林國富
(廣州大學(xué)松田學(xué)院 廣東 廣州 511370)
在我們國家,政府采購是政府財(cái)政支出的重要部分。隨著國家GDP 的日益增長(zhǎng),國家財(cái)政收入和支出也日益增長(zhǎng),政府采購已經(jīng)成為社會(huì)主義經(jīng)濟(jì)的重要經(jīng)濟(jì)行為。為了提高政府采購效率和規(guī)范采購行為,適應(yīng)市場(chǎng)經(jīng)濟(jì)的發(fā)展,杜絕各種可能滋生腐敗的行為。某市信息化建設(shè)中心面向社會(huì)公開招標(biāo)開發(fā)一套政府采購系統(tǒng)。我司中標(biāo)了該項(xiàng)目,我負(fù)責(zé)架構(gòu)設(shè)計(jì)和項(xiàng)目技術(shù)相關(guān)事務(wù),全程參與了整個(gè)項(xiàng)目的開發(fā)[1]。
根據(jù)客戶業(yè)務(wù)需求,政府采購系統(tǒng)由政府采購監(jiān)督管理平臺(tái)、政府采購項(xiàng)目管理平臺(tái)、基礎(chǔ)庫建設(shè)、數(shù)據(jù)服務(wù)四個(gè)子系統(tǒng)組成。政府采購監(jiān)督管理平臺(tái)包括項(xiàng)目監(jiān)管、代理機(jī)構(gòu)監(jiān)管、采購人監(jiān)管、專家監(jiān)管、統(tǒng)計(jì)報(bào)表等。政府采購項(xiàng)目管理平臺(tái)包括采購預(yù)算管理、采購計(jì)劃管理、采購項(xiàng)目管理、招投標(biāo)管理、專家抽取、采購門戶等。專家?guī)旖ㄔO(shè)包括專家?guī)?、采購人、代理機(jī)構(gòu)庫、供應(yīng)商庫等。數(shù)據(jù)服務(wù)包括對(duì)下級(jí)單位提供數(shù)據(jù)采集服務(wù),對(duì)上級(jí)單位提供數(shù)據(jù)上報(bào)服務(wù)。
除了業(yè)務(wù)功能需求,客戶還提出系統(tǒng)使用簡(jiǎn)單(操作性需求)、易于擴(kuò)展和維護(hù)(可維護(hù)性)、運(yùn)行穩(wěn)定(可用性)等非功能性需求。
為了實(shí)現(xiàn)系統(tǒng)功能,按時(shí)按質(zhì)完成系統(tǒng)開發(fā)。經(jīng)過分析,我們?cè)谙到y(tǒng)中使用了復(fù)合架構(gòu)的設(shè)計(jì)方案,同時(shí)使用了B/S 架構(gòu)、面向構(gòu)件的架構(gòu)、面向服務(wù)的架構(gòu)等架構(gòu)設(shè)計(jì)。
B/S 架構(gòu)即瀏覽器(browser)/服務(wù)器(server)架構(gòu),是相對(duì)于C/S(客戶端/服務(wù)器)架構(gòu)來說的。也可以把B/S 架構(gòu)看成是C/S 架構(gòu)的一種特殊形式。在一般的C/S 架構(gòu)中,用戶需要在本地終端(如電腦、手機(jī)等)安裝對(duì)應(yīng)的客戶端程序才能使用系統(tǒng)。對(duì)用戶來說不太方便。B/S 架構(gòu)只需要客戶終端有瀏覽器就可以直接訪問系統(tǒng)??蛻綦娔X、手機(jī)等終端一般都安裝有瀏覽器,所以使用起來很方便。因此,系統(tǒng)采用B/S 架構(gòu)設(shè)計(jì)。
面向構(gòu)件的軟件架構(gòu)是基于構(gòu)件來構(gòu)造應(yīng)用系統(tǒng)。它主要包含構(gòu)件的標(biāo)識(shí)、檢索與提取,修改或開發(fā)新構(gòu)件,更新構(gòu)件的相互作用,組裝構(gòu)件,系統(tǒng)測(cè)試等工作。
目前軟件行業(yè)間的競(jìng)爭(zhēng)很激烈,很多公司都采用996工作時(shí)間,對(duì)于開發(fā)公司來說,開發(fā)的很多產(chǎn)品存在重復(fù)的功能模塊,直接導(dǎo)致了項(xiàng)目周期以及成本不必要的增加。因此,利用已有的軟件項(xiàng)目構(gòu)造新的系統(tǒng),可以提高開發(fā)效率,降低客戶的成本,提高公司利潤。另一方面,面向構(gòu)件的架構(gòu)可以通過加載不同的構(gòu)件來增加或刪減系統(tǒng)的功能,如果要修改系統(tǒng)某個(gè)功能,只需要修改或替換對(duì)應(yīng)的構(gòu)件。系統(tǒng)具備很好的可維護(hù)性,更好地滿足客戶需求。因此,政府采購系統(tǒng)使用了面向構(gòu)件的架構(gòu)設(shè)計(jì)。
擁有構(gòu)件庫是基于構(gòu)件開發(fā)軟件的前提。因此,我們?cè)谝呀?jīng)成功實(shí)施的項(xiàng)目中,提取一些共有的模塊作為單獨(dú)的組件,封裝其內(nèi)部操作,對(duì)外提供一致的調(diào)用接口。例如,一些常用的模塊例如登錄模塊、權(quán)限管理模塊,只需要很少的改動(dòng)就可以復(fù)用到新的系統(tǒng)中。通過提取整理,形成了公司的企業(yè)構(gòu)件庫,為基于構(gòu)件的架構(gòu)開發(fā)準(zhǔn)備提供了基礎(chǔ)。
選用合適的構(gòu)件是基于構(gòu)件開發(fā)的重要步驟。構(gòu)件的選擇有多種途徑:一是從構(gòu)件庫中提取符合要求的構(gòu)件,二是從遺留系統(tǒng)中提取合適的構(gòu)件,三是從市場(chǎng)上購買現(xiàn)成的或使用開源的構(gòu)件,四是開發(fā)新的構(gòu)件。在本次項(xiàng)目中,我們選擇的構(gòu)件包括了三種來源。下面介紹政府采購系統(tǒng)采用的主要構(gòu)件。
(1)從以前成功的項(xiàng)目案例中,我們提取出了很多構(gòu)件,形成了公司的企業(yè)構(gòu)件庫。我從中選取了合適的作為新系統(tǒng)的構(gòu)件,有登錄注冊(cè)構(gòu)件、權(quán)限管理構(gòu)件、菜單導(dǎo)航構(gòu)件、流程審批構(gòu)件、組織機(jī)構(gòu)管理構(gòu)件等。
(2)系統(tǒng)使用NHibernate 開源的第三方構(gòu)件作為對(duì)象/關(guān)系數(shù)據(jù)庫映射構(gòu)件。
(3)政府采購系統(tǒng)根據(jù)需求還開發(fā)了智能搜索構(gòu)件。新系統(tǒng)需要提升用戶體驗(yàn),采用即時(shí)響應(yīng)的搜索技術(shù),在用戶輸入搜素文字時(shí),提示用戶備選文字選擇,并快速響應(yīng)用戶的搜素結(jié)果。以前的系統(tǒng)沒有這個(gè)功能,考慮到以后這個(gè)功能的需求是通用的,所以開發(fā)了這個(gè)新構(gòu)件[2-3]。
政府采購系統(tǒng)的數(shù)據(jù)服務(wù)子系統(tǒng)的需求包括對(duì)下級(jí)單位提供數(shù)據(jù)采集服務(wù),對(duì)上級(jí)單位提供數(shù)據(jù)上報(bào)服務(wù)。經(jīng)過和客戶的深入溝通,客戶原有系統(tǒng)由其他公司研發(fā)和維護(hù),基于安全考慮,不提供其系統(tǒng)所使用的技術(shù)、文檔、數(shù)據(jù)庫等任何資料,如舊系統(tǒng)有變更需要?jiǎng)t由該開發(fā)公司完成。因此,我們對(duì)客戶的其他系統(tǒng)情況一無所知,不能根據(jù)特定系統(tǒng)使用定制方法進(jìn)行對(duì)接。經(jīng)過分析,我們建議使用面向服務(wù)架構(gòu)設(shè)計(jì)數(shù)據(jù)服務(wù)功能,同時(shí)需要客戶其他系統(tǒng)通過訪問政府采購系統(tǒng)的數(shù)據(jù)服務(wù),配合完成上傳和采集數(shù)據(jù),客戶采用了我們的建議。
面向服務(wù)架構(gòu)(SOA)是一種應(yīng)用框架,將企業(yè)業(yè)務(wù)應(yīng)用劃分為單獨(dú)的業(yè)務(wù)功能服務(wù)和流程,通過采用良好定義的接口和標(biāo)準(zhǔn)協(xié)議將這些服務(wù)關(guān)聯(lián)起來?;赟OA系統(tǒng)架構(gòu)的應(yīng)用系統(tǒng)之間的交互,不受操作系統(tǒng)、程序設(shè)計(jì)語言及運(yùn)行環(huán)境的限制,從而提高業(yè)務(wù)流程的靈活性,降低企業(yè)開發(fā)成本。Web Service 是目前實(shí)現(xiàn)SOA主要的技術(shù)手段。SOA 的設(shè)計(jì)原則是無狀態(tài),單一實(shí)例,明確定義接口,自包含和模塊化,粗粒度,可重用,互操作性。
在政府采購系統(tǒng),用戶有兩個(gè)數(shù)據(jù)需求需要和已有系統(tǒng)對(duì)接:(1)新系統(tǒng)需要能夠從客戶下級(jí)單位舊系統(tǒng)里對(duì)接數(shù)據(jù)到新系統(tǒng),減少人工錄入數(shù)據(jù)。例如,下級(jí)單位把采購預(yù)算的數(shù)據(jù)從舊系統(tǒng)自動(dòng)傳輸?shù)叫孪到y(tǒng);(2)新系統(tǒng)需要能夠把數(shù)據(jù)自動(dòng)上報(bào)到上級(jí)單位的其他系統(tǒng)里。例如,把中標(biāo)項(xiàng)目的數(shù)據(jù)發(fā)送到上級(jí)平臺(tái)進(jìn)行統(tǒng)一監(jiān)管和統(tǒng)計(jì)。我們使用Web Service 實(shí)現(xiàn)了數(shù)據(jù)采集和數(shù)據(jù)上報(bào)兩個(gè)服務(wù)。同時(shí)客戶也需要對(duì)原有系統(tǒng)進(jìn)行增量開發(fā),增加了使用我方服務(wù)上傳和接收數(shù)據(jù)的功能開發(fā)。雖然涉及到了客戶原有系統(tǒng)的變更,但是面向架構(gòu)服務(wù)的開發(fā)是自包含和模塊化、粗粒度的,客戶原有系統(tǒng)只是增添了組件,對(duì)原有業(yè)務(wù)功能沒有影響,變更的成本比較低,客戶可以接受。
政府采購系統(tǒng)采用基于B/S 架構(gòu)開發(fā),其中政府采購監(jiān)督管理平臺(tái)、政府采購項(xiàng)目管理平臺(tái)、基礎(chǔ)庫建設(shè)采用了面向構(gòu)件的架構(gòu)設(shè)計(jì),數(shù)據(jù)服務(wù)采用了面向服務(wù)的架構(gòu)。項(xiàng)目自啟動(dòng)后,歷時(shí)10 個(gè)月成功上線,系統(tǒng)上線后運(yùn)行穩(wěn)定,獲得了客戶的好評(píng)。該項(xiàng)目能夠順利完成,一方面得益于公司的大力支持、團(tuán)隊(duì)的共同努力,另一方面也得益于應(yīng)用了復(fù)合架構(gòu)的設(shè)計(jì)。