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