軟件開發(fā)項目做需求分析的一點心得
1、需求分析前的準(zhǔn)備
在軟件開發(fā)過程中,需求分析可以說是核心任務(wù)之一,就像一支將要遠(yuǎn)航的船隊,要在指定時間內(nèi)到達(dá)目錄地,他們需要一條正確的航線,才能到達(dá)目的地,如果航線有誤,他們將會誤時到達(dá),或是不回到原位將永遠(yuǎn)到達(dá)不了,這么重要的東西,但在國內(nèi)很多團(tuán)隊中缺少,雖然我也做了一些,但在項目完成的時候,回頭看看,其實我們做了很多不必要的事,浪費(fèi)了很多時間、人力和物力,為保證在今后的開發(fā)中減少這些錯誤的發(fā)生,現(xiàn)將一些問題記錄下來。
為了了解系統(tǒng)需求,先可以從概要式的需求著手,再細(xì)化需求,需求分析必須擬定文檔,在寫文檔之前我們必須做好尋求分析的范圍,總結(jié)為以下幾點:
1.1要做一個什么樣的系統(tǒng)
這個不說,我想做軟件開發(fā)的人都知道,擬定這個后,一切才可以擴(kuò)展開,比如我們要做一個B2C的商城,要賣母嬰用品,知道了這些,我們就可以找現(xiàn)在網(wǎng)站有的B2C網(wǎng)站做參考,分析系統(tǒng)構(gòu)架,系統(tǒng)功能等。
1.2系統(tǒng)將要在什么樣的環(huán)境下進(jìn)行
我上次經(jīng)歷的一個系統(tǒng),就是要用asp.net重新發(fā)一個B2C商城,但有一些前提條件,以前公司有網(wǎng)站,是用java+MYSQL開發(fā)的,但我們開發(fā)的新系統(tǒng)必須兼容以前的數(shù)據(jù),如客戶信息,商品信息,還有一些資源信息,并且還要兼容Google,baidu收錄的地址路徑,還有與原ERP的通訊等條件,這樣讓我們的開發(fā)很受限制,這些需求就是這樣,你無法改變,所以在設(shè)計新系統(tǒng)的同時你必須考慮,要花時間去了解以前系統(tǒng)的功能,接口等,如果不了解,等你把新系統(tǒng)開發(fā)完了才發(fā)現(xiàn)系統(tǒng)脫離了公司原有的業(yè)務(wù)流程,讓公司無法運(yùn)作,那就代表你開發(fā)的系統(tǒng)根本沒有價值,我想這不是我們想要的結(jié)果。
1.3要解決哪些問題
開發(fā)出來軟件系統(tǒng)就是為了解決客戶需求的,一個B2C網(wǎng)站就是賣商品,主要由客戶、商品、購物車、定單組成,將這些核心的功能定義好,我想其它的意外都不會太影響到整個系統(tǒng)的進(jìn)程。
1.4將來可能會有哪些變化
面對將來的發(fā)展,我們也許不能完全考慮到,但與公司的戰(zhàn)略發(fā)展,可以提前考慮些,能想到多少就想多少,多多益善,我們開發(fā)一個系統(tǒng)不是只滿足當(dāng)前的需求,如果眼光只放在眼前,那么你這個系統(tǒng)很快就會被淘汰,功能也許不需要現(xiàn)在實現(xiàn),但接口總得留下吧,不然想改進(jìn)都是很困難的事,如果一個稍微的小需求都要動系統(tǒng)構(gòu)架,我想這個系統(tǒng)會越來越不穩(wěn)定,作為系統(tǒng)分析師,這塊也是至關(guān)重要的。
1.5系統(tǒng)可以維持任務(wù)的周期是多少
系統(tǒng)周期與公司戰(zhàn)略發(fā)展是緊扣的,一個系統(tǒng)的功能不可能隨著社會的變化,能一直滿足市場需要的,在設(shè)計系統(tǒng)的時候,可以了解一下公司的戰(zhàn)略發(fā)展,比如公司三年之內(nèi)要做成什么樣,客戶多少,網(wǎng)站瀏量,可以做下評估,這樣就考慮系統(tǒng)構(gòu)架的問題,你開始就準(zhǔn)備構(gòu)架一個大胖子,但現(xiàn)在需求簡單,在實際的運(yùn)行中,速度緩慢,其實你構(gòu)架越復(fù)雜,系統(tǒng)運(yùn)行就越緩慢,雖說現(xiàn)在很多大系統(tǒng)運(yùn)行的都很好,但要想想,人家服務(wù)器,網(wǎng)絡(luò)構(gòu)架是什么樣的,你不可能讓你的系統(tǒng)一線就有這么好的環(huán)境,就算有,那成本也太大了,一般的公司也吃不消。
1.6系統(tǒng)分幾個階段實施
在開發(fā)初期,我們不可能將系統(tǒng)所有的功能都能完成的很好,為了加快開進(jìn)度,為了系統(tǒng)能盡早上線,我們得像建樓一樣,分階段進(jìn)行,分段實施,如果我們現(xiàn)在只是要在網(wǎng)上賣商品,那我們就得把客戶管理、商品管理、購物車、定單管理這幾大塊實現(xiàn),把一個系統(tǒng)根基打好,誰都想讓自己的系統(tǒng)變成最強(qiáng)大的系統(tǒng),但這個想法幾乎是不可能完成的,如果我們把根基打好了,再在上面加以改進(jìn),添磚添瓦,根據(jù)客戶或市場的需要來完善,我想這個系統(tǒng)就會慢慢變成一個成功的系統(tǒng),對于B2C網(wǎng)站來說,能完成商業(yè)的需要,能讓公司的流程走順,那就是個好系統(tǒng),沒有最好的系統(tǒng),只有最適合的系統(tǒng)。
分階段實施,可以有節(jié)約成本,也可以加快實施速度,不管是作為公司的管理人員還是開發(fā)人員,能盡快看到成果,會提高信心,可以舉個例子,在設(shè)計一個B2C商城的時候,我們除了客戶管理、商品管理、購物車、定單管理外,還要加入廣告管理、促銷管理、CPS、統(tǒng)計管理、用戶積分、虛擬幣、禮品、物流、接口等一些功能,如果開發(fā)周期只給兩個月,四個人,從系統(tǒng)設(shè)計到系統(tǒng)上線,怎么做?怎樣如期完成呢?如果你的團(tuán)隊都沒接觸過B2C這樣的系統(tǒng),開發(fā)起來是很難度的,在這樣的情況下,我們必須分段實施,抓主干,把核心的東西完成了,系統(tǒng)可以上線,雖然沒有理想的那么強(qiáng)大,但最少它能賺錢,再一個兩個月可以把客戶管理、商品管理、購物車、定單管理這幾塊主要的功能完善,公司業(yè)務(wù)可以進(jìn)行,后面的功能雖然很有必要,但也可以分個先后,系統(tǒng)上線了,能給大家看到東西,能用用,建議也會多些,對于系統(tǒng)的優(yōu)化改進(jìn),這個是無止盡的,如果沒有這些基本的東西,天天都會有人在你耳邊叫,你們什么時候上線呀,做了這么久,做的怎么樣了,讓你的團(tuán)隊心里承受著很大的壓力,就算你在兩個月內(nèi)把開發(fā)任務(wù)完成了,那你的測試通的過嗎,功能越多,問題越多,在后期維護(hù)問題越多,最后煩了,沒辦法,重構(gòu),那樣不是虧大了。
1.7確認(rèn)第一階段解決那些問題項目管理者聯(lián)盟
在一個新的環(huán)境中,一個新的團(tuán)隊,你說要在某一時間段里完成什么樣的系統(tǒng),你怎樣做到讓領(lǐng)導(dǎo)相信你,讓公司相信你,一個大一點的軟件系統(tǒng),少則幾個月,再多一點就一年半載,他們能等嗎,再說了他們不懂代碼,不會天天跟你的屁股后面問你,系統(tǒng)怎么樣了,做了哪些,就算這樣,我想你也進(jìn)了瘋?cè)嗽毫耍晕覀冏鱿到y(tǒng)要打好第一槍,這樣才會得到更多人的支持和理解,如果你不能理解,可以去看看商殃變法中的《徒木立信》的典故。
至于軟件第一開發(fā)第一階段要做哪些事,這個要根據(jù)一個系統(tǒng)的核心功能去了解,只有建立好了框架,不要太急于求成,沒什么好處,把根基打好了,再想怎么包裝,都不是件難事。
1.8系統(tǒng)開發(fā)團(tuán)隊由哪些人組成
一個好的團(tuán)隊,必定是發(fā)揮了團(tuán)隊中每個人的優(yōu)勢,在開發(fā)團(tuán)隊中,不是你技術(shù)能力強(qiáng),你就是最有價值的人,我相信在開發(fā)團(tuán)隊里沒有一個從頭到尾都能支持的能人,不是不沒,是我是覺得不可能存在,也許我么說有些人不服,其實我這么說也有我的理由,一個人也許有機(jī)會經(jīng)歷團(tuán)隊中的每個環(huán)節(jié),并且都能深入,但絕對不是一個機(jī)會,如果有,那就是一個人的開發(fā),一個人的開發(fā)我想也不能叫團(tuán)隊,有時候,一個人什么都能做,多了一個人,什么都做不好,但面對大的項目,不得不進(jìn)行團(tuán)隊合作。
我所在的公司,我進(jìn)去的時候,接到項目任務(wù),我開始還有些心虛,因為有些工作我也沒接觸過,但又不得不去做,但我很意外的時候,我們的團(tuán)隊中有一位項目助理,她的出現(xiàn)讓我們的團(tuán)隊協(xié)調(diào)管理得到了很好的實施,計劃任務(wù),可以做到很好的按排,但跟蹤管理,我能收集分配,但指定到人后,我很難看到進(jìn)展的情況,因為自身還有很多的工作,開始我部署了項目管理系統(tǒng)的,收集需求和BUG,也指定到人,但反饋往往不及時,因為我有時候隔一天才上去看,后來我將這項目工作交給了項目助理,讓她去管理這些,我發(fā)現(xiàn)她做的很好,她每天和我只花幾分鐘的時間做核對,出現(xiàn)意外情況我就出現(xiàn)解決,她的出現(xiàn)把我和團(tuán)隊中的每個開發(fā)人員的工作連接起來,讓項目管理得以順利的實施。
開發(fā)團(tuán)隊具體由哪些人組成,這是要根據(jù)公司實力,項目進(jìn)度和項目大小來定的,現(xiàn)在說幾個工作職則,可來靈活分配一下:
項目經(jīng)理:對項目的決策性問題進(jìn)行定位,一個功能做與不做,領(lǐng)導(dǎo)說的算
構(gòu)架師:控制技術(shù)問題,解決技術(shù)難題,對分配下來的任務(wù)進(jìn)行分析、評估,反饋給項目經(jīng)理,再進(jìn)行確定
項目助理:記錄團(tuán)隊會議內(nèi)容,協(xié)調(diào)工作中的日常事務(wù)
開發(fā)組長:調(diào)配開發(fā)組員,輔助組內(nèi)開發(fā)人員并對成員工作進(jìn)行監(jiān)管,一般由主程擔(dān)任
開發(fā)人員:負(fù)責(zé)編寫代碼,按需求完成任務(wù)
測試人員:對功能進(jìn)行測試
如果這里的每項目工作按排到個人,我想開發(fā)團(tuán)隊的協(xié)調(diào)管理最好。
1.9系統(tǒng)運(yùn)行環(huán)境是什么樣的
在系統(tǒng)構(gòu)架時,根據(jù)需要定義好,系統(tǒng)構(gòu)架、程序環(huán)境、網(wǎng)絡(luò)環(huán)境,如考慮分布式存儲,日均訪問量、系統(tǒng)安全、成本預(yù)算等。
asp.net的開發(fā)成本是要比java的開成本低的。
Sql server的運(yùn)營成本是要oracle低的,但oracle在大型數(shù)據(jù)處理上要優(yōu)于SQL Server,如果是SNS站我覺得上Oracle會好些。
選擇什么樣的環(huán)境,在沒有特定要求的情況下,根據(jù)團(tuán)隊的現(xiàn)狀去考慮我覺得就差不多了。
我們有了目的地將要遠(yuǎn)航,那么就得需要航海圖、船、船長、舵手、水手、水和食物,雖然這樣我們能保證100%完成任務(wù),因為大海中的意外誰也不會知曉,但我們理想的是我們能安全到達(dá),如果條件不允許,就算我們知道目的地在哪,出了海,我們將面對是一場艱辛冒險旅程。
2、收集需求
需求的收集是個很繁瑣的過程,收集的不夠,開發(fā)過程中變化會很多,特別是你上了一個演示版本后,開始別人一點意見都沒,一看你的演示,你就意見一大堆,這樣的問題我想在很多項目中都出現(xiàn)過,所以先在收集需求的時候要和客戶或相關(guān)部門一一確認(rèn),我們考慮需求要從種兩種角度去考慮,一種是用戶角度,另一種是開發(fā)者角度,所以在談需求時,必須邊聊邊記,把所談的話記錄整理,如果怕遺漏,可以錄音,然后將采用文檔的方式表達(dá)出來,將提出的需求加以分析,做下技術(shù)評估,如果有特別的難題可以提前讓開發(fā)人員做技術(shù)預(yù)研,在做評估后,需要分段實施的,就做好規(guī)劃,然后和提需求的人員確認(rèn),需求文檔的功能可以多寫點,根據(jù)企業(yè)的發(fā)展,能考慮的都考慮,這樣可以在系統(tǒng)構(gòu)架時,定位系統(tǒng)的生命周期時,給以更多的參考,在需求定出階段后,我們得把要馬上實施的功能放在當(dāng)前,加以強(qiáng)化、細(xì)化,反復(fù)的進(jìn)行,條件允許的時候應(yīng)該做些Demo來確認(rèn)。
posted on 2014-09-02 09:48 順其自然EVO 閱讀(712) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄