南京軍區(qū)南京總醫(yī)院博士后工作站 田 軍
軟件工程在博士后網(wǎng)絡(luò)辦公平臺開發(fā)中的應(yīng)用
南京軍區(qū)南京總醫(yī)院博士后工作站 田 軍
本文主要論述了在全國博士后網(wǎng)絡(luò)辦公平臺開發(fā)過程中,如何利用軟件工程的理論和方法指導(dǎo)和實(shí)施開發(fā)活動,使軟件實(shí)現(xiàn)快速交付的同時保證了軟件的高質(zhì)量。
軟件工程;面向?qū)ο?;進(jìn)度計劃;質(zhì)量保證;配置管理
我國博士后制度建立二十多年來,博士后規(guī)模發(fā)展異常迅速。博士后制度凝聚和培養(yǎng)了眾多高層次人才,催生了一大批優(yōu)秀科研成果,為我國的經(jīng)濟(jì)社會發(fā)展做出了重要貢獻(xiàn)。隨著博士后事業(yè)的發(fā)展壯大,我國博士后管理理念不斷創(chuàng)新,管理制度不斷完善,管理方式不斷改進(jìn)。因此,原有的全國博士后信息系統(tǒng)的功能已無法滿足電子化辦公的需求,開發(fā)一套博士后網(wǎng)絡(luò)辦公平臺,為各級地方博士后管理部門(博士后站、設(shè)站單位、省市管理部門、博管會)提供規(guī)范化的審批、管理,實(shí)現(xiàn)電子化辦公,顯得尤為必要。
自上世紀(jì)六十年代以來,計算機(jī)軟件的開發(fā)和維護(hù)過程遇到了“軟件危機(jī)”:開發(fā)成本日益增長、開發(fā)進(jìn)度難以控制、軟件質(zhì)量無法保證、軟件維護(hù)困難等。究其原因,主要在于所開發(fā)的軟件規(guī)模越來越大,復(fù)雜度越來越高,缺乏軟件開發(fā)方法學(xué)和工具方面的支持。這使得人們開始用工程化的方法進(jìn)行軟件的開發(fā)、管理和維護(hù),即軟件工程。
結(jié)合網(wǎng)絡(luò)辦公平臺功能復(fù)雜度高,擴(kuò)展性強(qiáng)的特點(diǎn)。也為了更好地提高開發(fā)的可見性和規(guī)范性,方便后期的運(yùn)維和擴(kuò)展,該系統(tǒng)平臺開發(fā)采用了軟件工程的理論方法貫穿設(shè)計、開發(fā)和運(yùn)維的整個階段,取得了不錯的效果。
軟件需求是指用戶對目標(biāo)軟件在功能、行為、性能、設(shè)計約束等方面的期望。通過對問題及其環(huán)境的理解與分析,為問題涉及的信息、功能及行為建立模型,將用戶需求精確化、完全化,最終形成需求規(guī)格說明,如圖2-1所示,整個活動構(gòu)成軟件開發(fā)生命周期的需求分析階段。需求分析階段是軟件項(xiàng)目開發(fā)中其他四個階段的必備條件。
在軟件工程理論誕生之前,傳統(tǒng)的軟件開發(fā)普遍存在這樣的問題:1)重視開發(fā),忽視前期的需求分析和設(shè)計;2)文檔不規(guī)范且不完備。這樣的做法固然可以將開發(fā)的階段提前,貌似加快了系統(tǒng)開發(fā)的進(jìn)度。其實(shí)不然,由于用戶的需求在開發(fā)的過程中具有漸進(jìn)性和增量變化的特點(diǎn),且軟件的需求、開發(fā)、測試、維護(hù)過程中,系統(tǒng)變更的代價呈非線性增長,不完備的需求和文檔會大大增加需求變更情況下的工作量,而且也增加了系統(tǒng)交付后培訓(xùn)和維護(hù)的工作量。
由于網(wǎng)絡(luò)辦公平臺最終目標(biāo)是滿足用戶的無紙化辦公,平臺能否滿足用戶的日常辦公需求是評價軟件是否成功的關(guān)鍵因素。我們將需求分析作為了一個重要的階段,其主要工作是獲取用戶需求、設(shè)計系統(tǒng)模型、編寫需求文檔。在立項(xiàng)前期,通過調(diào)研問卷以及各級管理部門代表研討的方式分析當(dāng)前網(wǎng)上辦公系統(tǒng)的特點(diǎn),了解當(dāng)前博士后網(wǎng)上辦公業(yè)務(wù)需求。從業(yè)務(wù)需求、用戶需求、功能需求、非功能需求四方面完成系統(tǒng)模型的初步設(shè)計,并以此為依據(jù)編寫規(guī)范的《項(xiàng)目需求分析說明書》,辦公平臺的基本功能需求如圖2-2。
系統(tǒng)常見的開發(fā)方法主要有結(jié)構(gòu)化方法、原型法、面向?qū)ο蟮脑O(shè)計方法。
結(jié)構(gòu)化方法是一種廣泛運(yùn)用的開發(fā)方法,是設(shè)計人員、開發(fā)人員以及最終用戶按照用戶至上的原則,自頂向下分析與設(shè)計和自底向上逐步實(shí)施的建立計算機(jī)信息系統(tǒng)的一個過程,是組織、管理和控制信息系統(tǒng)開發(fā)過程的一種基本框架。其特點(diǎn)有:1)自頂向下整體地進(jìn)行分析與設(shè)計和自底向上逐步實(shí)施的系統(tǒng)開發(fā)過程;2)用戶至上是影響成敗的關(guān)鍵因素,整個開發(fā)過程中,要面向用戶,用戶需求需要在系統(tǒng)建立之前就能被充分了解和理解;3)嚴(yán)格區(qū)分工作階段,把整個開發(fā)過程劃分為若干工作階段,每一個階段有明確的任務(wù)和目標(biāo)、預(yù)期達(dá)到的工作成效,以便計劃和控制進(jìn)度,協(xié)調(diào)各方面的工作。前一階段的工作成果是后一階段的工作依據(jù);4)充分預(yù)料可能發(fā)生的變化。其缺點(diǎn)是開發(fā)周期長,耗費(fèi)大,若用戶需求并不明確,會大大影響開發(fā)效率。
原型法是20世紀(jì)80年代提出的一種從設(shè)計思想、工具、手段都全新的系統(tǒng)開發(fā)方法。其特點(diǎn)有:1)系統(tǒng)開發(fā)循序漸進(jìn),需要反復(fù)修改原型;2)開發(fā)周期短,費(fèi)用相對少;3)由于有用戶的直接參與,系統(tǒng)更加貼近實(shí)際;4)應(yīng)變能力強(qiáng),減少用戶的培訓(xùn)時間。但缺點(diǎn)也比較明顯:不適合大規(guī)模系統(tǒng)的開發(fā);開發(fā)過程管理要求高,整個開發(fā)過程要經(jīng)過“修改—評價—再修改”的多次反復(fù);開發(fā)人員易將原型取代系統(tǒng)分析;缺乏規(guī)范化的文檔資料。
面向?qū)ο蟮拈_發(fā)方法是一種常見的系統(tǒng)開發(fā)方法。它將對象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性。其特點(diǎn)是:1)封裝性。面向?qū)ο蠓椒ㄖ?,程序和?shù)據(jù)是封裝在一起的,對象作為一個實(shí)體,其操作隱藏在方法中,從外界無從得知。封裝性構(gòu)成了面向?qū)ο蠓椒ǖ幕A(chǔ)。簡單地說,面向?qū)ο缶褪恰皩ο?屬性+方法”;2)抽象性。面向?qū)ο蠓椒ㄖ校褟木哂泄餐再|(zhì)的實(shí)體中抽象出的事物本質(zhì)特征概念,稱為“類”。類中封裝了對象共有的屬性和方法,通過實(shí)例化一個類創(chuàng)建的對象,自動具有類中規(guī)定的屬性和方法;3)多態(tài)性。多態(tài)性是用一個操作名稱實(shí)現(xiàn)不同數(shù)據(jù)類型的多種操作,運(yùn)算符重載、函數(shù)名重載都是多態(tài)性實(shí)現(xiàn)的主要方法。由于多態(tài)性這一特性,增強(qiáng)了軟件的靈活性和重用性。
根據(jù)需求分析,可以看出本辦公平臺開發(fā)具有以下特點(diǎn):1)系統(tǒng)功能復(fù)雜;2)開發(fā)過程管理要求高,需要規(guī)范化的管理;3)軟件復(fù)用要求高;4)需求功能相對明確。
因此,針對上述開發(fā)方法的特點(diǎn),我們采用了面向?qū)ο蠛徒Y(jié)構(gòu)化方法相結(jié)合的開發(fā)方式。
眾所周知,項(xiàng)目的成功很大程度上歸功于開發(fā)者在項(xiàng)目過程中對進(jìn)度的有效管理和控制。在軟件工程中,項(xiàng)目進(jìn)度管理包括6個管理過程,即活動定義、活動排序、活動資源估算、活動歷時估算、制定進(jìn)度表、進(jìn)度控制。
活動,是實(shí)施項(xiàng)目時安排工作的最基本的工作單元。活動定義過程就是要把完成項(xiàng)目的所有活動都找出來。在活動定義活動中,最基本也是最重要的工作就是工作分解結(jié)構(gòu)(WBS),工作結(jié)構(gòu)分解是對項(xiàng)目范圍的一種逐級分解的層次化結(jié)構(gòu)編碼,它以可交付成果為導(dǎo)向?qū)?xiàng)目要素進(jìn)行的分組,歸納和定義了項(xiàng)目的整個工作范圍每下降一層代表對項(xiàng)目工作的更詳細(xì)定義。
工作分解結(jié)構(gòu)應(yīng)按照實(shí)際工作經(jīng)驗(yàn)和系統(tǒng)工作的方法、工程的特點(diǎn)、項(xiàng)目管理者的要求進(jìn)行,其基本原則是:1)應(yīng)在各層次上保證項(xiàng)目內(nèi)容的完整性,不能遺漏任何必要的組成部分。2)一個項(xiàng)目單元只能從屬于某一上層單元,不能同時屬于兩個上層單元。3)項(xiàng)目單元應(yīng)能區(qū)分不同的責(zé)任者和不同的工作內(nèi)容,應(yīng)有較高的整體性和獨(dú)立性。4)應(yīng)考慮WBS與承包方式、合同結(jié)構(gòu)的影響。5)能夠符合項(xiàng)目目標(biāo)管理的要求,能方便的應(yīng)用工期、質(zhì)量、成本、合同、信息等手段。6)WBS不要太多層次,以四至六層為宜。最低層次的工作包的單元成本不宜過大、工期不要太長。
根據(jù)工作分解的基本原則,辦公平臺的開發(fā)工作從分析、設(shè)計、開發(fā)、測試、驗(yàn)收、運(yùn)維幾個方面被細(xì)分為50個基礎(chǔ)活動,通過活動資源估算和活動歷時估算,我們制定了詳細(xì)的進(jìn)度計劃,如圖4-1所示。
表5-1 工程活動審核表
表5-2 工作產(chǎn)品審核表
圖4-1
項(xiàng)目進(jìn)度計劃最終以甘特圖方式進(jìn)入項(xiàng)目配置庫,作為項(xiàng)目進(jìn)度控制的依據(jù)。如上圖所示,項(xiàng)目進(jìn)度計劃定義了項(xiàng)目中每一個主要任務(wù),并估算其所需時間和資源,為項(xiàng)目管理的評估和控制提供了一個清晰可見的框架。正因?yàn)閷?shí)施了有效的進(jìn)度管理,平臺開發(fā)工作順利地如期完成。在項(xiàng)目某一階段出現(xiàn)延遲時,規(guī)范的項(xiàng)目進(jìn)度計劃幫助我們及時發(fā)現(xiàn)延遲,找出延遲的原因,針對性地調(diào)整開發(fā)計劃,從而保證了項(xiàng)目的整體進(jìn)度。
軟件質(zhì)量保證(SQA)是建立一套有計劃,有系統(tǒng)的方法,來向管理層保證擬定出的標(biāo)準(zhǔn)、步驟、實(shí)踐和方法能夠正確地被項(xiàng)目所采用,如表5-1、5-2。它是貫穿于整個軟件過程的第三方獨(dú)立審查活動,其目的是使軟件過程對于管理人員來說是可見的。如果將一個軟件開發(fā)類比于一種產(chǎn)品的生產(chǎn)。那么生產(chǎn)線就是過程,產(chǎn)品按照生產(chǎn)線的規(guī)定過程進(jìn)行生產(chǎn)。軟件質(zhì)量保證的職責(zé)就是保證過程的執(zhí)行。
在本辦公平臺的項(xiàng)目組中,根據(jù)需要配備了專門的SQA人員。SQA人員活動貫穿了開發(fā)各個階段。在項(xiàng)目啟動階段,SQA人員就參與到制定《軟件開發(fā)計劃》的過程,根據(jù)項(xiàng)目的內(nèi)容制定了《軟件質(zhì)量保證計劃》。在軟件質(zhì)量保證過程中,SQA人員的主要工作包括:1)評審軟件工程活動,對其是否符合定義好的軟件過程進(jìn)行核實(shí),記錄、跟蹤與過程的偏差。2)評審軟件工作產(chǎn)品,對其是否符合事先定義好的需求進(jìn)行核實(shí),對產(chǎn)品進(jìn)行評審,識別、記錄和跟蹤出現(xiàn)的偏差并將工作結(jié)果向項(xiàng)目管理者報告。3)完成工程活動審核表、工作產(chǎn)品審核表,確保軟件工作及產(chǎn)品中的偏差已記錄在案,并根據(jù)預(yù)定的規(guī)程進(jìn)行處理。
我們知道,在軟件建立時變更是不可避免的,而變更加劇了項(xiàng)目中軟件開發(fā)者之間的混亂。軟件配置管理作為軟件工程中一項(xiàng)重要活動,應(yīng)用于整個軟件工程過程。軟件配置管理是一種標(biāo)識、組織和控制修改的技術(shù),目標(biāo)就是為了標(biāo)識變更、控制變更、確保變更正確實(shí)現(xiàn)并向其他有關(guān)人員報告變更。軟件配置管理可以提煉為兩個方面 的內(nèi)容:Version Control-版本控制;Process Support-過程支持。
博士后網(wǎng)絡(luò)辦公平臺采用的配置管理工具為VSS,VSS的全稱為Visual Source Safe,它提供了完善的版本和配置管理功能,以及安全保護(hù)和跟蹤檢查功能。VSS通過將有關(guān)項(xiàng)目文件(包括文本文件、圖像文件、二進(jìn)制文件、聲音文件、視頻文件、代碼文件)存入數(shù)據(jù)庫進(jìn)行項(xiàng)目配置管理工作。用戶可以根據(jù)需要隨時快速有效地共享文件。文件一旦被添加進(jìn)VSS,它的每次改動都會被記錄下來,用戶可以恢復(fù)文件的早期版本,項(xiàng)目組的其他成員也可以看到有關(guān)文檔的最新版本,并對它們進(jìn)行修改,VSS也同樣會將新的改動記錄下來。
VSS可以同Visual Studio開發(fā)環(huán)境以及Microsoft Office應(yīng)用程序集成在一起,提供了方便易用、面向項(xiàng)目的版本控制功能。VSS可以處理由各種開發(fā)語言、創(chuàng)作工具或應(yīng)用程序所創(chuàng)建的任何文件類型。在提倡文件再使用的今天,用戶可以同時在文件和項(xiàng)目級進(jìn)行工作。VSS面向項(xiàng)目的特性能更有效地管理工作組應(yīng)用程序開發(fā)工作中的日常任務(wù)。
用VSS來組織管理項(xiàng)目,項(xiàng)目組的所有工作成果被完整地保留下來,使得項(xiàng)目組間的溝通與合作更簡易而且直觀。開發(fā)的資源可以很好地被項(xiàng)目組成員分享利用,每一位成員獲取的代碼和文檔都是最新的且是同步的。VSS也能很好地解決傳統(tǒng)開發(fā)中容易出現(xiàn)的版本錯亂問題,使得版本的維護(hù)變得簡單、清晰。
隨著電子辦公模式的迅速發(fā)展,網(wǎng)上辦公的應(yīng)用越來越廣泛,用戶需求越來越復(fù)雜,采用傳統(tǒng)的軟件開發(fā)方法往往會失效。相對于傳統(tǒng)的軟件開發(fā)方法.軟件工程將軟件開發(fā)看成一項(xiàng)系統(tǒng)工程,一項(xiàng)需要需求分析、軟件開發(fā)過程、規(guī)范化的文檔和進(jìn)度管理、系統(tǒng)配置管理、系統(tǒng)質(zhì)量保證等方面工作互相配合,貫穿始終的工程,是人們在長期的軟件開發(fā)和維護(hù)的過程中積累下來的寶貴經(jīng)驗(yàn)。我們應(yīng)當(dāng)把它應(yīng)用到具體的開發(fā)過程中,進(jìn)行集成化開發(fā),工程化管理,只有這樣才能提高軟件開發(fā)的成功率,縮短開發(fā)周期,減少重復(fù)開發(fā),用較少的開發(fā)成本滿足用戶業(yè)務(wù)之需。
[1]夏雪剛.基于軟件工程的數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)[J].科技信息,2009(1).
[2]王巍,周沫.軟件工程在軟件開發(fā)中的應(yīng)用[J].軟件導(dǎo)刊,2010(9).
[3]王維國.淺談軟件工程中的面向?qū)ο蠓椒╗J].科協(xié)論壇,2012(3).
[4]谷鐵濤.兩類軟件工程的淺析——傳統(tǒng)軟件工程和面向?qū)ο筌浖こ蘙J].科技創(chuàng)新導(dǎo)報,2009(14).
[5]唐勇.建立規(guī)范的軟件文檔提高軟件工程化程度[J].燕山大學(xué)學(xué)報,2002(2).