本文結(jié)合自己的經(jīng)驗,從實踐的角度,對項目軟件的分析工作從7個方面進(jìn)行了闡述,并指出一些容易失誤的做法。希望能對從事分析工作的同仁有所參考。
軟件從使用范圍的角度,可分為項目軟件和產(chǎn)品軟件。
項目軟件:即針對特定某個客戶的要求,并僅為其使用的軟件。又稱工程軟件,特點是有明確的合同,嚴(yán)格的工期,約定的維護(hù)期等。如"XXX公司XXX系統(tǒng)"。
產(chǎn)品軟件:即針對某一領(lǐng)域客戶的共有需求而開發(fā)的軟件。特點是通用、功能豐富而冗余,通過一次性的購買行為獲得等。如操作系統(tǒng)軟件、數(shù)據(jù)庫軟件、CAD軟件等。
本文就項目軟件的需求分析,結(jié)合自身的體會,提出一些看法和建議。
1、 依據(jù)分析階段確定合適的客戶方配合人員
這一點對于獲取真正的用戶要求非常重要。通常,客戶方會組織專工以上層次的人或在單位小有名氣的計算機能手來和開發(fā)方分析人員配合,共同整理需求。
應(yīng)該對客戶方配合人員進(jìn)行分類,層次化,使之和分析的各階段相對應(yīng)。
分析的初期,即總體分析階段,需要得到整體意義上的輪廓需求,此時,應(yīng)與客戶方總工以上層次的人員進(jìn)行交流,這一層次的人,對未來的系統(tǒng)會有完整的描繪,可以劃分出子系統(tǒng),及其之間的關(guān)系,這也是高級管理層對系統(tǒng)的期望。可以以此作為綱領(lǐng)性的文檔指導(dǎo)進(jìn)一步的分析,并約束后續(xù)的分析過程,避免需求范圍漫無邊際的擴大;
專業(yè)系統(tǒng)分析階段,通常,客戶單位都會有專業(yè)分工,彼此之間既相互獨立,又會在某些點上發(fā)生聯(lián)系。此階段應(yīng)與客戶方專工層次的人員進(jìn)行深入的討論。這一層次的人,對自己的專業(yè)相當(dāng)熟悉,對專業(yè)內(nèi)的需求會非常到位,大都年富力強,有相當(dāng)?shù)拈啔v和理解能力,甚至自己都可以繪制業(yè)務(wù)流圖,總結(jié)業(yè)務(wù)功能點。對他們應(yīng)充分鼓勵,盡量調(diào)動其積極性;
系統(tǒng)關(guān)聯(lián)分析階段,在各專業(yè)系統(tǒng)得到充分分析的基礎(chǔ)上,緊接著就要理清它們之間的關(guān)系,這是提升需求檔次的關(guān)鍵階段,也是高級領(lǐng)導(dǎo)層和專工都關(guān)心的階段。通常,客戶單位都會有一些零散的軟件,如財務(wù)軟件,部頒軟件等,這些專業(yè)軟件都發(fā)揮著重要的作用,但都是些信息孤島,客戶會很自然的希望能把這些信息融合到整個系統(tǒng)中來,為更多的人所共享。同時,也希望數(shù)據(jù)能夠在各專業(yè)系統(tǒng)間順暢的流動,從而減少重復(fù)勞動,提高工作效率。此階段應(yīng)把總工層和專工層召集到一起,共同理清系統(tǒng)間的接口。
經(jīng)過這三個階段,對需求的描述將比較準(zhǔn)確和完整。
2、 多方位描述同一需求
有一些需求貫穿了從基層人員到高層領(lǐng)導(dǎo),對此需求應(yīng)該從各個角度、各個方位給以描述,總結(jié)之后才能得到完整的表達(dá),否則可能會漏掉一些信息。這也為后續(xù)的設(shè)計工作打好了基礎(chǔ)。
比如,在設(shè)備管理類軟件中,有一個概念叫"缺陷",指由于材料老化或外力作用,使得設(shè)備處于不正常的運行狀態(tài),但還沒有到立刻就釀成"事故"的程度,但如不及時檢修,就可能出事。對于設(shè)備缺陷業(yè)務(wù),就涉及到從班組人員到領(lǐng)導(dǎo),上上下下對此都非常關(guān)心,但各層次的人關(guān)心的側(cè)重點卻不盡相同:領(lǐng)導(dǎo)關(guān)心"消缺率"(即缺陷消除率)、"消缺及時率";專工關(guān)心缺陷類型和處理方法;班組人員關(guān)心消缺工作的人員安排及時間地點。缺陷的業(yè)務(wù)處理流程依賴于"設(shè)備缺陷單"(用于記錄缺陷及消除情況),如果僅僅局限于從由基層得到的設(shè)備缺陷單上的數(shù)據(jù)結(jié)構(gòu)(設(shè)備名稱、缺陷發(fā)現(xiàn)人、發(fā)現(xiàn)時間、二級單位確認(rèn)時間、缺陷性質(zhì)、安排消缺時間、消缺人員、消除日期、處理方法),無法滿足專工層的分析要求:對設(shè)備的缺陷情況按類型、零部件、型號、生產(chǎn)廠家等分類統(tǒng)計,為設(shè)備采購時作為選型參考、調(diào)整設(shè)備及其零部件的檢修周期以減少缺陷發(fā)生的頻率等,因此需要在原來的設(shè)備缺陷單上增加一些相關(guān)信息。
3、 清晰化每一數(shù)據(jù)項
由于需求將作為設(shè)計的基礎(chǔ),弄清所有的數(shù)據(jù)項的來龍去脈對于設(shè)計是必不可少的。不能有模糊不清的地方,同時通過對數(shù)據(jù)項來源的分析,可以讓分析人員更清楚的看到數(shù)據(jù)的流動情況,也會發(fā)現(xiàn)一些新的需求點。
4、 充分挖掘潛在需求
由于分析人員對軟件技術(shù)非常熟悉,一些由于技術(shù)所帶來的潛在需求對于客戶來說,一般很難被發(fā)現(xiàn)。不實現(xiàn)這些需求,對整個系統(tǒng)也沒什么實質(zhì)性的影響;實現(xiàn)這些需求,則會錦上添花。
對這些潛在需求,會有兩種處理方式:告訴客戶,客戶會得到啟發(fā),可能進(jìn)一步提出新的需求,會有一些更大膽的想法,從而擴大了需求范圍,增加了工作量,甚至?xí)绊懙焦て?;不告訴客戶,等客戶想到了再說。
這些需求如果對于產(chǎn)品軟件,可能會是一個賣點,要盡可能的去挖掘。但對項目軟件,考慮各種風(fēng)險,有時候可能會回避,或?qū)蛻綦[瞞。
我覺得,不管是否告訴客戶,分析人員還是應(yīng)該去挖掘,最起碼可以作為自己的知識積累。
5、 采用科學(xué)的分析報告模板
分析完成后,需要形成《需求分析報告》,應(yīng)采用規(guī)范科學(xué)的報告模板,通過ISO或CMM的企業(yè),其模板大都非常詳盡,不僅僅作為報告模板,還可以指導(dǎo)分析過程。
比如,我所在的企業(yè)除了有規(guī)范的需求分析報告編寫指南、報告模板,還有"需求分析矩陣"和"需求變更報告"用于管理需求和控制變更。
6、 積累領(lǐng)域知識
領(lǐng)域知識對于分析人員很重要,這些知識的廣度和深度影響分析結(jié)果的準(zhǔn)確性和分析進(jìn)度。分析人員應(yīng)該通過各種途徑去獲取這些,不斷積累,并進(jìn)行比較和總結(jié)。
7、 抱著學(xué)習(xí)與指導(dǎo)并存的態(tài)度
面對一個新的客戶時,分析人員首先必須抱著謙遜的學(xué)習(xí)的態(tài)度,把這看成是豐富領(lǐng)域知識的機會。但并非客戶單位的任何層次的人都有值得學(xué)習(xí)的東西,隨著分析人員接觸的領(lǐng)域客戶不斷增多,分析人員對該領(lǐng)域的理解也會越來越深,逐漸會成長為領(lǐng)域?qū)<遥瑫泻芏嗟胤匠^客戶對領(lǐng)域的理解,此時,要以自己的深入理解去指導(dǎo)客戶,說服客戶,甚至糾正客戶的一些錯誤的認(rèn)識,得到客戶的信任與尊敬,這對迅速順利的完成需求分析會很有幫助。
8、 誤區(qū)
在進(jìn)行需求分析的時候,容易陷入一些誤區(qū),導(dǎo)致分析結(jié)果不理想。
分析結(jié)果越復(fù)雜越好
這是技術(shù)型分析人員經(jīng)常碰到的情況,認(rèn)為分析出錯綜復(fù)雜的關(guān)系,花哨的圖表才能顯示出分析水平高,其實,分析經(jīng)常要經(jīng)歷"簡單-復(fù)雜-簡單"的過程,前一個簡單表現(xiàn)為分析人員"認(rèn)為簡單";隨著分析的深入,原以為簡單的問題會越來越復(fù)雜;最后,經(jīng)過概括、消化、分解,使得需求簡單明了。
必須一次到位
由于項目工期緊,或者客戶單位地理位置偏遠(yuǎn),不想反復(fù)去現(xiàn)場,希望通過一次需求分析就能得到完整的不再改變的結(jié)果。有這種情況時,表現(xiàn)為分析人員對客戶方配合人員窮追猛問,或堅持要求配合人員做出保證,承諾需求范圍不再擴大等等。結(jié)果往往是雙方關(guān)系緊張,配合人員怕?lián)?zé)任,提出過多的靈活的、可配置的一些要求,無端增加了后續(xù)設(shè)計和編碼的工作量。一次到位的想法是不現(xiàn)實的,隨著開發(fā)工作的進(jìn)行,用戶經(jīng)常會提出以前沒想到的需求,或者更改已有的需求。需求必然有一個迭代的過程,變是不可避免的,關(guān)鍵是對于變化的控制,比如通過正規(guī)而繁復(fù)的流程提高需求變化時客戶付出的代價:告知客戶如此變化將會使工期延長,或需要追加資金等等,盡管對于"軟件屬于買方市場"的現(xiàn)狀來說,開發(fā)方往往叫不起這個板,但這樣的控制還是有一定的效果的。
客戶的需求必須全部滿足
陷入這一誤區(qū)的分析人員,往往自己的領(lǐng)域知識欠缺,對客戶的需求是否合理,缺乏分辨能力,只能由客戶牽者走,這樣會帶來很大的風(fēng)險:造成需求冗余,項目返工,更有對需求變化失去控制的危險,隨著項目的開展,整個開發(fā)團(tuán)隊會越來越痛苦。所以必須加深自己的領(lǐng)域知識,變被動接受為主動引導(dǎo),進(jìn)而拒絕客戶的不合理需求。
以上所述僅為個人體會,都是些做分析時的基本要求,要做好需求分析工作,還有賴于其他很多因素,如分析方法及輔助分析工具的掌握程度、個人交際能力的高低、語言溝通能力的高低等等,歡迎同行廣泛交流,共同進(jìn)步