如何分析企業(yè)管理信息系統(tǒng)的需求
張靖笙舊作新改
摘要:
文章分析了企業(yè)管理信息系統(tǒng)需求的特點(diǎn),結(jié)合作者在工作實(shí)踐中分析了傳統(tǒng)需求分析方法在開發(fā)企業(yè)管理信息系統(tǒng)中遇到的問題,提出相應(yīng)的解決方法。
關(guān)鍵字:
軟件工程,需求分析,企業(yè)管理信息系統(tǒng)
前言:
作者曾在一家大型國(guó)有商業(yè)銀行擔(dān)任軟件工程師工作多年,按照軟件工程理論組織開發(fā)工作一直是我對(duì)于自己的要求,但為單位開發(fā)信息系統(tǒng)的過程中工作實(shí)踐中,我發(fā)現(xiàn)嚴(yán)格套用傳統(tǒng)軟件工程理論在需求分析方面的規(guī)范比較困難。
傳統(tǒng)需求分析規(guī)范在實(shí)踐中的遇到的矛盾
需求分析階段關(guān)系到一個(gè)軟件開發(fā)的成敗,這已經(jīng)得到了普遍的認(rèn)識(shí),然而,根據(jù)作者在實(shí)際開發(fā)工作的自身經(jīng)歷,以及作者曾主動(dòng)地和許多同行的交流中發(fā)現(xiàn),發(fā)現(xiàn)現(xiàn)在國(guó)內(nèi)的許多軟件開發(fā)的需求分析階段,基本沒有按照嚴(yán)格的軟件工程的規(guī)范要求,可以說,在許多開發(fā)項(xiàng)目中,按照傳統(tǒng)軟件工程規(guī)范要求的需求分析往往是一個(gè)非常尷尬的過程,為什么呢?
這是因?yàn)檐浖_發(fā)人員沒有工程觀念嗎?國(guó)際軟件工程理論和技術(shù)引入我國(guó)也差不多二十年了,特別是在二十世紀(jì)九十年代,我國(guó)計(jì)算機(jī)軟件產(chǎn)業(yè)得到了長(zhǎng)足的發(fā)展,涌現(xiàn)了大量成功的軟件開發(fā)成果,培養(yǎng)了相當(dāng)規(guī)模的軟件開發(fā)隊(duì)伍。作為軟件開發(fā)生力軍的年輕的軟件工程師大多數(shù)是剛剛從學(xué)校畢業(yè)的大學(xué)生,學(xué)校教育中軟件工程是一門非常重要的課程,可以說現(xiàn)在的絕大部分程序員在這方面經(jīng)過了嚴(yán)格的教育和訓(xùn)練,而為什么在實(shí)際工作中出現(xiàn)了很大的偏差?
根據(jù)我在實(shí)際工作中的經(jīng)驗(yàn),問題主要來自以下方面:
1.需求分析本身的難度。需求的任務(wù)是了解和描述軟件用戶對(duì)軟件的需求,即明確做什么。但在實(shí)際的軟件開發(fā)中,用戶了解他們的專業(yè)領(lǐng)域,但計(jì)算機(jī)知識(shí),特別是軟件知識(shí)往往比較薄弱,而開發(fā)人員與此恰好相反,而在需求分析的過程中,雙方面對(duì)的往往不是一個(gè)可見的產(chǎn)品,而只是頭腦中的構(gòu)思和想象,由于專業(yè)的差異和溝通的有限,用戶的許多需求對(duì)開發(fā)人員來說往往是難于理解的和準(zhǔn)確把握。
2.傳統(tǒng)軟件工程規(guī)范沒有量化需求分析工作。傳統(tǒng)軟件工程理論中對(duì)需求分析工作的要求只是對(duì)軟件要求整體上的分析,不要求陷入實(shí)現(xiàn)上的細(xì)節(jié)。但實(shí)際工作中,在許多類型的應(yīng)用系統(tǒng)開發(fā)中,許多技術(shù)細(xì)節(jié)本身就關(guān)系到需求能否實(shí)現(xiàn)或正確實(shí)現(xiàn),如有企業(yè)管理信息系統(tǒng)程序開發(fā)經(jīng)驗(yàn)的人誰都知道,根本不可能拋開數(shù)據(jù)類型去定義一個(gè)數(shù)據(jù)實(shí)體的屬性。所以在實(shí)際的工作中忽略這些至關(guān)重要的細(xì)節(jié)的需求分析往往是不完整的,造成的混亂往往嚴(yán)重影響后續(xù)的開發(fā)。所以需求分析工作到底深入到什么程度,這個(gè)并沒有確定的標(biāo)準(zhǔn)。
3. 傳統(tǒng)軟件工程規(guī)范在需求分析的嚴(yán)格執(zhí)行有實(shí)際管理上的難度。在廣大的應(yīng)用軟件開發(fā)部門,軟件開發(fā)工作的地位往往只是本單位業(yè)務(wù)的輔助,一般沒有專職的而且非常有經(jīng)驗(yàn)的系統(tǒng)分析員,需求分析往往由主管經(jīng)理和開發(fā)程序員簡(jiǎn)單進(jìn)行,而領(lǐng)導(dǎo)往往重成績(jī)多于重過程,對(duì)于一個(gè)沒有顯效的需求分析過程,領(lǐng)導(dǎo)的耐心往往有限,這就造成了對(duì)需求分析缺乏嚴(yán)格的管理和要求。
4.嚴(yán)格按照傳統(tǒng)規(guī)范要求進(jìn)行需求分析在時(shí)間和開發(fā)成本的限制。由于用戶對(duì)軟件技術(shù)的認(rèn)識(shí)水平,他們對(duì)軟件的開發(fā)在時(shí)間上往往要求過高,他們狠不得明天就可以使用軟件。如果你在那里分析來分析去不動(dòng)手,在實(shí)際工作中,特別當(dāng)用戶是單位的上層領(lǐng)導(dǎo),他們往往覺得這種對(duì)他們而言空洞無物的分析是開發(fā)人員的紙上談兵,時(shí)間一長(zhǎng)不免就會(huì)流露出不滿。這令開發(fā)人員非常尷尬,往往非常嚴(yán)重地打擊他們的自信心和士氣。
綜上所述,傳統(tǒng)軟件工程規(guī)范中需求分析理論在實(shí)踐中的矛盾是成本,效率和規(guī)范要求間的矛盾。而忽略規(guī)范要求的代價(jià)也是慘重的,那我們能找到一種方法解決以上矛盾嗎?我覺得提高軟件工程規(guī)范要求中在需求分析階段的可操作性是解決問題的關(guān)鍵。當(dāng)然由于計(jì)算機(jī)應(yīng)用的多樣性,我們不可能找到能醫(yī)百病的靈丹妙藥,但在開發(fā)比較常見的企業(yè)管理信息系統(tǒng)中,下文試圖提出一種比較有針對(duì)性的需求分析方法。
企業(yè)管理信息系統(tǒng)程序的需求特點(diǎn)
數(shù)據(jù)庫(kù)技術(shù)的核心思想是數(shù)據(jù)的獨(dú)立與共享,所以開發(fā)企業(yè)管理信息系統(tǒng),就是利用計(jì)算機(jī)數(shù)據(jù)庫(kù)技術(shù)來組織,管理和使用企業(yè)經(jīng)營(yíng)和管理活動(dòng)中的各種信息。不同形式的企業(yè)管理信息系統(tǒng)可謂多種多樣,但功能需求的核心是圍繞著數(shù)據(jù)庫(kù)管理的信息來展開的。筆者曾開發(fā)過多個(gè)不同應(yīng)用領(lǐng)域的數(shù)據(jù)庫(kù)的應(yīng)用,我發(fā)現(xiàn)在企業(yè)管理信息系統(tǒng)中雖然功能很多,許多功能在邏輯上相似,往往只是處理的數(shù)據(jù)不同,很多時(shí)候,信息管理軟件功能基本上是數(shù)據(jù)的查詢,更新,維護(hù),并不需要復(fù)雜的算法。所以,我認(rèn)為企業(yè)管理信息系統(tǒng)需求分析應(yīng)該圍繞數(shù)據(jù)(信息),而不是功能展開。這與傳統(tǒng)的需求分析中以分析功能需求為核心有明顯的不同。從這個(gè)意義上,如果傳統(tǒng)需求分析階段是“做什么”,在企業(yè)管理信息系統(tǒng)需求分析階段就是先要解決“有什么”,然后再明確“做什么”。
企業(yè)管理信息系統(tǒng)的需求特征
需求分析作為軟件工程的第一階段,是整個(gè)軟件開發(fā)項(xiàng)目進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)的基礎(chǔ),決定了一個(gè)項(xiàng)目的成敗。但是需求分析不能只看成是一個(gè)獨(dú)立的階段,第一個(gè)階段了解的需求也只是初步的需求,對(duì)需求的了解貫穿整個(gè)項(xiàng)目的始終,了解需求的過程是一個(gè)逐步細(xì)化,逐步深入的過程,整個(gè)項(xiàng)目自始而終都需要與用戶交流。
既然企業(yè)管理信息系統(tǒng)需求以數(shù)據(jù)為中心,在需求分析階段就強(qiáng)調(diào)數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)的分析一點(diǎn)也不過分。所以,對(duì)于企業(yè)管理信息系統(tǒng)系統(tǒng),應(yīng)該把數(shù)據(jù)庫(kù)的詳細(xì)設(shè)計(jì)向前移,即從傳統(tǒng)軟件工程階段的詳細(xì)設(shè)計(jì)階段提前到需求分析階段進(jìn)行。
需求分析大體上分為以下幾個(gè)階段:
1)模型需求分析(總體設(shè)計(jì))
2)概念需求分析(概念設(shè)計(jì))
3)細(xì)節(jié)需求分析(詳細(xì)設(shè)計(jì))
4)輸入輸出需求分析(界面設(shè)計(jì))
這些需求分析貫穿整個(gè)項(xiàng)目的各個(gè)環(huán)節(jié)中,與設(shè)計(jì)是穿插在一起。
需求分析過程活動(dòng)
1)模型需求分析
這個(gè)階段體現(xiàn)了系統(tǒng)的總體構(gòu)思與設(shè)計(jì),任務(wù)是了解系統(tǒng)的組織形式和功能需求概貌,解決“是什么”的問題。我認(rèn)為模型需求分析主要任務(wù)是系統(tǒng)架構(gòu)的定義,這涉及到硬件,用戶環(huán)境,系統(tǒng)功能等多方面的全局考慮。如系統(tǒng)是C/S模式還是Internet模式,如何進(jìn)行功能的分層。這些都需要在模型需求分析過程中決定。
模型需求分析工作是項(xiàng)目的早期,所以對(duì)功能的描述應(yīng)該有高度的抽象性,在理想的情況下,一個(gè)系統(tǒng)最好由一句話或一張紙內(nèi)描述,便于開發(fā)人員對(duì)系統(tǒng)目標(biāo)的整體把握,也保持了與用戶交流的靈活性和一致性。所以在項(xiàng)目初期,我不贊成用功能模塊圖對(duì)功能需求做太多層次的金字塔式羅列,特別如果是系統(tǒng)的分布式分層設(shè)計(jì),詳細(xì)的功能模塊圖在項(xiàng)目早期沒有什么實(shí)際意義,反而容易舍本求末。
我們完全可以把完整的功能模塊圖放在細(xì)節(jié)需求分析階段完成。
2)概念需求分析
概念需求分析的任務(wù)是對(duì)系統(tǒng)中涉及的概念進(jìn)行調(diào)查和分析,分析有什么信息,如何組織和描述數(shù)據(jù),數(shù)據(jù)由那些數(shù)據(jù)項(xiàng)組成,各數(shù)據(jù)項(xiàng)是什么含義,數(shù)據(jù)的走向是什么樣的?概念需求分析的目的是建立系統(tǒng)的概念模型,主要是建立描述數(shù)據(jù)的靜態(tài)模型和描述系統(tǒng)運(yùn)行流程的動(dòng)態(tài)模型,解決“有什么”問題。
當(dāng)完成模型需求分析后,就要進(jìn)入到概念需求分析。做概念需求分析,首先要收集原始資料,然后請(qǐng)用戶講述手工的工作流程,根據(jù)用戶提供的原始資料和對(duì)工作流程的了解的基礎(chǔ)上,我們才可以著手進(jìn)行概念設(shè)計(jì)。
3)細(xì)節(jié)需求分析
細(xì)節(jié)需求分析要在完成概念設(shè)計(jì)之后進(jìn)行,這個(gè)階段是分析如何具體實(shí)現(xiàn)用戶需求,就是解決“怎么做”的問題。這個(gè)階段要對(duì)用戶的需求完整而清晰地確定下來,所以與用戶的交流比前兩個(gè)階段多,交流的內(nèi)容應(yīng)該更加具體。
細(xì)節(jié)分析的具體任務(wù)是要根據(jù)概念設(shè)計(jì)定義的概念模型制定具體的實(shí)現(xiàn)細(xì)節(jié)。對(duì)于靜態(tài)模型,要給出詳細(xì)的數(shù)據(jù)字典,包括了表,數(shù)據(jù)項(xiàng),數(shù)據(jù)項(xiàng)限制條件等詳細(xì)信息。對(duì)于動(dòng)態(tài)模型,要給出具體的狀態(tài)定義,事件定義,狀態(tài)改變的流程,對(duì)數(shù)據(jù)所有操作的定義等等詳細(xì)的設(shè)計(jì)信息。要求根據(jù)細(xì)節(jié)需求分析的成果應(yīng)該能成為編碼和建庫(kù)的依據(jù)。
4)輸入輸出需求分析
用戶能否用好軟件最終決定項(xiàng)目的成敗,良好的用戶使用界面是不可忽視的。用戶界面的好壞并不是追求界面的花巧(這是程序員經(jīng)常犯的毛病),而是界面的設(shè)計(jì)是否能提高用戶使用軟件的效率,這需要了解用戶的使用環(huán)境,操作水平,操作習(xí)慣,個(gè)人喜好等多方面。輸入輸出需求分析要做到界面設(shè)計(jì)和概念設(shè)計(jì)的相互獨(dú)立,不能因?yàn)榻缑娴谋硎居绊懜拍钤O(shè)計(jì)的穩(wěn)定,同時(shí)也要保持能適應(yīng)用戶各種不同操作要求的靈活性。具體可以先和用戶共同草擬一些界面設(shè)計(jì)大綱,在開發(fā)過程中邀請(qǐng)用戶試用軟件,根據(jù)反饋意見不斷改進(jìn)和修改。
分析信息內(nèi)容的工具選擇
我們分析“有什么”信息,傳統(tǒng)的需求分析理論用數(shù)據(jù)流圖和數(shù)據(jù)字典來表達(dá)“有什么”信息。數(shù)據(jù)流圖核心是功能,而在許多企業(yè)管理信息系統(tǒng)特別是信息管理系統(tǒng)開發(fā)初期,在沒有清晰完整的信息構(gòu)成分析前,功能的需求往往難以穩(wěn)定。在開發(fā)企業(yè)管理信息系統(tǒng)的需求分析初期,我不提倡使用數(shù)據(jù)流圖,因?yàn)樵谄髽I(yè)管理信息系統(tǒng)中,數(shù)據(jù)流圖往往不能令人滿意地說明信息構(gòu)成問題,而且隨著數(shù)據(jù)的增加,功能流程的變遷需要經(jīng)常修改早期的設(shè)計(jì),這會(huì)造成工作的反復(fù)。數(shù)據(jù)字典可以表達(dá)數(shù)據(jù)的構(gòu)成,但卻沒有定義數(shù)據(jù)的類型。在一個(gè)企業(yè)管理信息系統(tǒng)中,數(shù)據(jù)的類型的通過字段類型表達(dá),有開發(fā)經(jīng)驗(yàn)的人應(yīng)該知道,清楚每一個(gè)數(shù)據(jù)字段的含義和類型在開發(fā)企業(yè)管理信息系統(tǒng)中有重要的意義,試想一下,如果一個(gè)字段是圖象型,對(duì)數(shù)據(jù)的功能需求不言而喻。而傳統(tǒng)的需求分析過程不要求確定數(shù)據(jù)的具體類型,而在開發(fā)一個(gè)企業(yè)管理信息系統(tǒng)時(shí),需求分析階段忽略了這一步就會(huì)毫無疑問地造成對(duì)需求理解的模糊,并使得需求分析變成空洞無物的紙上談兵。
小結(jié)
設(shè)計(jì)過程更要和人工智能,知識(shí)庫(kù),程序語義等最新研究成果結(jié)合起來,實(shí)現(xiàn)用邏輯方法檢驗(yàn)數(shù)據(jù)庫(kù)設(shè)計(jì)的完整性,用推理方法使許多設(shè)計(jì)步驟可以自動(dòng)進(jìn)行,并開發(fā)自動(dòng)編碼功能,把詳細(xì)設(shè)計(jì)的成果直接轉(zhuǎn)換成SQL代碼,更大地提高開發(fā)效率。進(jìn)一步我們應(yīng)該把這些成果產(chǎn)品化,開發(fā)一系列CASE工具,最終發(fā)展成為一個(gè)全功能的軟件開發(fā)平臺(tái)。
參考文獻(xiàn):
[1]中山大學(xué)軟件所:設(shè)計(jì)規(guī)范與實(shí)例分析
[2]張海藩:軟件工程導(dǎo)論,清華大學(xué)出版社,1998年1月
[3]Roger S.Pressman:Software engineering,a practitioner’sapproach,Fourth Edition,McGraw-Hill ,1997
[4]鄭人杰,殷人昆,陶永雷:實(shí)用軟件工程第二版,清華大學(xué)出版社,1997年4月
注:本文的原稿2001年6月2日發(fā)表在核心學(xué)術(shù)雜志《中國(guó)計(jì)算機(jī)工程與應(yīng)用》,當(dāng)時(shí)作者是在讀中山大學(xué)軟件研究所碩士研究生。