大型MIS軟件的開發(fā)工作是一項(xiàng)復(fù)雜而艱巨的系統(tǒng)工程,它涉及到軟件工程、數(shù)據(jù)庫設(shè)計(jì)、應(yīng)用業(yè)務(wù)、項(xiàng)目控制、人員管理和計(jì)算機(jī)技術(shù)等多種知識(shí)和經(jīng)驗(yàn),因此任何一項(xiàng)大型MIS軟件的開發(fā)成功都是一
一件極不容易的事。雖然當(dāng)今的軟件工程理論和數(shù)據(jù)庫設(shè)計(jì)理論為我們提供了多種系統(tǒng)開發(fā)的方法和手段,但在實(shí)際開發(fā)工作中經(jīng)常遇到的情況卻是:做出來的系統(tǒng)不符合要求,需要大量修改;開發(fā)工作進(jìn)度難以控制,工期一拖再拖;甚至有些通過了驗(yàn)收的項(xiàng)目也難逃在實(shí)際使用過程中擱淺而被束之高閣的厄運(yùn)。在這里筆者姑且不對(duì)造成這種情況的原因和當(dāng)前一些項(xiàng)目驗(yàn)收中存在的問題進(jìn)行分析,而是就避免這些問題發(fā)生的一些做法與從事軟件開發(fā)工作的同行進(jìn)行一下探討。
在多年的開發(fā)工作中,筆者主持過許多類型管理系統(tǒng)的設(shè)計(jì)、開發(fā)和項(xiàng)目管理工作,包括:學(xué)籍和考試管理、汽車租賃管理、圖書館管理、公路管理、MRPⅡ和ERP管理等。在這些項(xiàng)目的系統(tǒng)調(diào)研、總體設(shè)計(jì)、模塊設(shè)計(jì)、編程、測試和項(xiàng)目管理工作中,我深切體會(huì)到,要想高效率、高質(zhì)量地完成項(xiàng)目開發(fā)工作,應(yīng)努力做好下面的幾項(xiàng)工作。
一、制定開發(fā)規(guī)范
MIS軟件,特別是大型的MIS軟件是一項(xiàng)浩大的工程,需要十幾個(gè)人、幾十個(gè)人甚至幾百個(gè)人合作開發(fā)幾個(gè)月、十幾個(gè)月甚至幾年。要保證系統(tǒng)的協(xié)調(diào)性、統(tǒng)一性和連續(xù)性,就需要在開發(fā)之前制定嚴(yán)格、詳細(xì)的開發(fā)規(guī)范。
開發(fā)規(guī)范的內(nèi)容主要包括:系統(tǒng)設(shè)計(jì)規(guī)范、程序開發(fā)規(guī)范和項(xiàng)目管理規(guī)范等。系統(tǒng)設(shè)計(jì)規(guī)范規(guī)定字段、數(shù)據(jù)庫、程序和文檔的命名規(guī)則,應(yīng)用界面的標(biāo)準(zhǔn)和風(fēng)格,各類報(bào)表的輸出格式等。程序開發(fā)規(guī)范對(duì)應(yīng)用程序進(jìn)行分類,如可將程序分成代碼維護(hù)類、業(yè)務(wù)處理類、業(yè)務(wù)查詢類和統(tǒng)計(jì)報(bào)表類等。并給出各類應(yīng)用程序的標(biāo)準(zhǔn)程序流程,有必要時(shí)可編制出標(biāo)準(zhǔn)程序。項(xiàng)目管理規(guī)范規(guī)定項(xiàng)目組中各類開發(fā)人員的職責(zé)和權(quán)力,開發(fā)過程中各類問題(如設(shè)計(jì)問題、程序問題等)的處理規(guī)范和修改規(guī)則,開發(fā)工作的總體進(jìn)度安排和獎(jiǎng)懲措施等。
開發(fā)規(guī)范的制定需要花費(fèi)一定的時(shí)間和精力,但是"磨刀不誤砍柴功",它相當(dāng)于把今后開發(fā)過程中開發(fā)人員都要遇到的問題提前做了一個(gè)考慮。有了開發(fā)規(guī)范,在后續(xù)的開發(fā)過程中,設(shè)計(jì)人員就不必每次考慮如何為一個(gè)字段命名,編程人員也不必去想某個(gè)程序的結(jié)構(gòu)和布局應(yīng)當(dāng)怎樣,測試人員也有了判斷程序?qū)﹀e(cuò)的標(biāo)準(zhǔn)。
開發(fā)規(guī)范在項(xiàng)目開發(fā)工作中起著事前約定的作用,需要所有開發(fā)人員共同遵守。它約束開發(fā)人員的行為和設(shè)計(jì)、編程風(fēng)格,使不同子系統(tǒng)和模塊的設(shè)計(jì)、編程人員達(dá)成默契,以便形成整個(gè)系統(tǒng)的和諧步調(diào)和統(tǒng)一風(fēng)格,也便于今后的系統(tǒng)維護(hù)和擴(kuò)展工作。
二、合理的人員構(gòu)成與管理
開發(fā)項(xiàng)目的成功需要有一個(gè)好的開發(fā)組。高效的開發(fā)小組要有一個(gè)合理的人員構(gòu)成。一般開發(fā)組應(yīng)包括項(xiàng)目負(fù)責(zé)人、系統(tǒng)分析員、系統(tǒng)設(shè)計(jì)員、程序員和測試人員等。開發(fā)組的人員要分層次,下層人員要服從上層人員的領(lǐng)導(dǎo)。
項(xiàng)目組要有一個(gè)項(xiàng)目負(fù)責(zé)人,他對(duì)整個(gè)項(xiàng)目有控制和決定權(quán),對(duì)項(xiàng)目開發(fā)的成敗負(fù)責(zé)。軟件開發(fā)中遇到問題的答案往往不止一個(gè),因此需要有人對(duì)這些問題有決定權(quán),避免扯皮。大型項(xiàng)目的負(fù)責(zé)人應(yīng)有豐富的項(xiàng)目管理經(jīng)驗(yàn)和數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn),另外還需對(duì)用戶的實(shí)際業(yè)務(wù)有較全面和深入的理解。
系統(tǒng)分析員協(xié)助項(xiàng)目負(fù)責(zé)人進(jìn)行系統(tǒng)分析工作,并負(fù)責(zé)某一方面的具體設(shè)計(jì)工作;系統(tǒng)設(shè)計(jì)員幫助系統(tǒng)分析員進(jìn)行模塊設(shè)計(jì);程序員按照模塊設(shè)計(jì)進(jìn)行編程;測試人員直接受項(xiàng)目負(fù)責(zé)人領(lǐng)導(dǎo),為整個(gè)項(xiàng)目的質(zhì)量把關(guān)。所有項(xiàng)目組人員都應(yīng)對(duì)用戶的實(shí)際業(yè)務(wù)有不同程度的了解,這樣有助于系統(tǒng)的開發(fā)工作和系統(tǒng)最后的成功。
三、嚴(yán)格控制開發(fā)進(jìn)度
項(xiàng)目進(jìn)度管理是軟件開發(fā)中最難以做好的一項(xiàng)工作。編程工作本身是一個(gè)難以量化的工作,再加上開發(fā)過程中對(duì)設(shè)計(jì)的修改等因素,使得項(xiàng)目開發(fā)工作經(jīng)常不能按預(yù)計(jì)的時(shí)間完成。
為了管理好項(xiàng)目進(jìn)度,首先要制定一個(gè)可行的項(xiàng)目進(jìn)度計(jì)劃。一開始,項(xiàng)目進(jìn)度計(jì)劃只能根據(jù)項(xiàng)目的內(nèi)容、工作量和參加人員進(jìn)行大致地估算,包括系統(tǒng)分析和設(shè)計(jì)時(shí)間,編程、測試時(shí)間和文檔制作時(shí)間,估算時(shí)應(yīng)根據(jù)業(yè)務(wù)復(fù)雜程度加入一些緩沖時(shí)間。系統(tǒng)分析、設(shè)計(jì)完成后,根據(jù)程序清單可估算出每個(gè)程序的編程時(shí)間(根據(jù)程序類型和復(fù)雜程度),并在此基礎(chǔ)上估算這種程序量下的測試、文檔制作和緩沖時(shí)間,經(jīng)過這樣估算再做出的進(jìn)度計(jì)劃已經(jīng)可以做到相當(dāng)準(zhǔn)確和細(xì)致了。實(shí)際上項(xiàng)目進(jìn)度計(jì)劃是一個(gè)由粗到細(xì)且不斷調(diào)整的計(jì)劃。
每周要將項(xiàng)目進(jìn)度情況與項(xiàng)目進(jìn)度計(jì)劃進(jìn)行對(duì)比。對(duì)于拖延的工作如無充份理由,則應(yīng)督促有關(guān)人員加班或提高工作效率趕上進(jìn)度;如有正常理由,在無法追回的情況下可以修改進(jìn)度計(jì)劃,申請(qǐng)延期。
項(xiàng)目進(jìn)度管理一定要細(xì)致和嚴(yán)格,像設(shè)計(jì)、編程這種難以量化的工作是很難籠統(tǒng)地去控制進(jìn)度的。
四、系統(tǒng)設(shè)計(jì)要超越業(yè)務(wù)
軟件設(shè)計(jì)的好壞直接關(guān)系到項(xiàng)目開發(fā)的成敗。在設(shè)計(jì)之前一定要對(duì)用戶的業(yè)務(wù)做系統(tǒng)的調(diào)研,深入、全面地了解用戶業(yè)務(wù)。在調(diào)查時(shí)要注意以下幾點(diǎn):
1.有時(shí)某個(gè)部門的業(yè)務(wù)由幾個(gè)業(yè)務(wù)人員分管,調(diào)查時(shí)不能只聽一個(gè)人的敘述。
2.要詳細(xì)了解一個(gè)部門與其他業(yè)務(wù)部門的業(yè)務(wù)關(guān)系。
3.要了解當(dāng)前業(yè)務(wù)的難點(diǎn),在設(shè)計(jì)時(shí)著重解決。
4.用戶不可能一次將所有業(yè)務(wù)描述清楚,所以調(diào)查要由淺入深,分多次進(jìn)行。
5.調(diào)研要以我為主,圍繞主題提出問題,不要陷入用戶的瑣碎業(yè)務(wù)中。
[NextPage]
6.要注意收集原始憑證、報(bào)表和文字資料。
在根據(jù)調(diào)研結(jié)果做設(shè)計(jì)的時(shí)候,不要過于迷信一些教科書上介紹的數(shù)據(jù)庫設(shè)計(jì)方法。在多年的實(shí)踐中,我發(fā)現(xiàn)許多方法不但沒用而且還增加工作量,在業(yè)務(wù)關(guān)系比較復(fù)雜的情況下,一些數(shù)據(jù)庫設(shè)計(jì)方法是根本不能推導(dǎo)出設(shè)計(jì)結(jié)果的。而且直接根據(jù)收集資料和現(xiàn)行業(yè)務(wù)去推導(dǎo)數(shù)據(jù)庫結(jié)構(gòu)的做法也是不可取的。這是因?yàn)?雜的情況下,一些數(shù)據(jù)庫設(shè)計(jì)方法是根本不能推導(dǎo)出設(shè)計(jì)結(jié)果的。而且直接根據(jù)收集資料和現(xiàn)行業(yè)務(wù)去推導(dǎo)數(shù)據(jù)庫結(jié)構(gòu)的做法也是不可取的。這是因?yàn)?
1.用戶描述的業(yè)務(wù)可能不是一個(gè)好的管理方法。
2.用戶描述的各部門間的業(yè)務(wù)數(shù)據(jù)傳遞仍是手工做法。
3.用戶描述的業(yè)務(wù)不是規(guī)律性的業(yè)務(wù)流程,因此會(huì)經(jīng)常發(fā)生改變。
4.用戶描述的業(yè)務(wù)不適合于用計(jì)算機(jī)去實(shí)現(xiàn)。
5.用戶的輸出表格為固定的內(nèi)容,不能適應(yīng)業(yè)務(wù)的變化和擴(kuò)展。
所以在系統(tǒng)設(shè)計(jì)時(shí)要超越當(dāng)前的業(yè)務(wù),抽象出業(yè)務(wù)中的管理思想和規(guī)律性的東西。為了適應(yīng)
計(jì)算機(jī)管理,有時(shí)也要改變用戶的業(yè)務(wù)流程,這時(shí)要與用戶協(xié)商,讓其理解這種改變的意義。另
外設(shè)計(jì)還應(yīng)留有可擴(kuò)展的余地。
五、程序設(shè)計(jì)要實(shí)用
MIS軟件最終的目的是要用戶使用。因此在程序設(shè)計(jì)時(shí)必須立足于操作簡單、實(shí)用,并真正能為用戶解決實(shí)際的業(yè)務(wù)問題。不能因?yàn)榕戮幊搪闊┒鴮⒊绦蚬δ茉O(shè)計(jì)得過于簡陋。
為方便用戶使用,應(yīng)用程序中起碼應(yīng)具有下面這些功能:
1.提示功能。屏幕上的代碼信息(如客戶代碼、科目代碼等)要有提示操作,使用戶不必記憶很多的代碼。
2.操作確認(rèn)。對(duì)于一些不可恢復(fù)的操作(如記錄刪除等)應(yīng)有操作確認(rèn),避免誤操作。
3.數(shù)據(jù)校驗(yàn)。對(duì)于一些有限制條件的輸入信息,可以自動(dòng)校驗(yàn)其正確性,避免錯(cuò)誤數(shù)據(jù)進(jìn)入系統(tǒng)。
4.錯(cuò)誤恢復(fù)。用戶無意中進(jìn)行了錯(cuò)誤操作,應(yīng)能有相應(yīng)的處理程序挽回錯(cuò)誤。
5.缺省賦值。對(duì)于一些常用信息可以設(shè)置缺省值,使用戶不必每次都輸入這些信息。
6.記錄復(fù)制。用戶可以復(fù)制一條或多條已存在的記錄,并可修改復(fù)制結(jié)果,形成新的記錄。
六、測 試
測試是保證程序質(zhì)量的一項(xiàng)重要工作。但測試只能證明程序有錯(cuò),而不能證明程序無錯(cuò)。所以任何軟件系統(tǒng)都不能保證內(nèi)部沒有錯(cuò)誤。為了確保軟件系統(tǒng)的安全與可*性,一方面要加大測試力度,另一方面要抓住測試重點(diǎn)。
從測試的角度來說,可將MIS軟件的程序分為兩類:修改數(shù)據(jù)庫類和信息輸出類。前一類主要是業(yè)務(wù)處理程序,是測試重點(diǎn)。對(duì)于前一類程序還可以進(jìn)一步細(xì)分為:基礎(chǔ)數(shù)據(jù)采集程序和數(shù)據(jù)處理統(tǒng)計(jì)程序。數(shù)據(jù)采集程序主要記錄原始憑證信息(如發(fā)票、憑證、入/出庫單等),數(shù)據(jù)處理統(tǒng)計(jì)程序是對(duì)數(shù)據(jù)采集程序記錄下來的數(shù)據(jù)繼續(xù)做加工。這兩類程序中基礎(chǔ)數(shù)據(jù)采集程序又是測試的重點(diǎn)。










