標籤:style java io strong 資料 ar art 問題 代碼
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系統Team Dev由哪些人組成
一個好的團隊,必定是發揮了團隊中每個人的優勢,在Team Dev中,不是你技術能力強,你就是最有價值的人,我相信在Team Dev裡沒有一個從頭到尾都能支援的能人,不是不沒,是我是覺得不可能存在,也許我麼說有些人不服,其實我這麼說也有我的理由,一個人也許有機會經曆團隊中的每個環節,並且都能深入,但絕對不是一個機會,如果有,那就是一個人的開發,一個人的開發我想也不能叫團隊,有時候,一個人什麼都能做,多了一個人,什麼都做不好,但面對大的項目,不得不進行團隊合作。
我所在的公司,我進去的時候,接到專案工作,我開始還有些心虛,因為有些工作我也沒接觸過,但又不得不去做,但我很意外的時候,我們的團隊中有一位項目助理,她的出現讓我們的團隊協調管理得到了很好的實施,計劃任務,可以做到很好的按排,但跟蹤管理,我能收集分配,但指定到人後,我很難看到進展的情況,因為自身還有很多的工作,開始我部署了專案管理系統的,收集需求和BUG,也指定到人,但反饋往往不及時,因為我有時候隔一天才上去看,後來我將這項目工作交給了項目助理,讓她去管理這些,我發現她做的很好,她每天和我只花幾分鐘的時間做核對,出現意外情況我就出現解決,她的出現把我和團隊中的每個開發人員的工作串連起來,讓專案管理得以順利的實施。
Team Dev具體由哪些人組成,這是要根據公司實力,項目進度和項目大小來定的,現在說幾個工作職則,可來靈活分配一下:
專案經理:對項目的決策性問題進行定位,一個功能做與不做,領導說的算
構架師:控制技術問題,解決技術難題,對分配下來的任務進行分析、評估,反饋給專案經理,再進行確定
項目助理:記錄團隊會議內容,協調工作中的日常事務
開發組長:調配開發組員,輔助組內開發人員並對成員工作進行監管,一般由主程擔任
開發人員:負責編寫代碼,按需求完成任務
測試人員:對功能進行測試
如果這裡的每項目工作按排到個人,我想Team Dev的協調管理最好。
1.9系統運行環境是什麼樣的
在系統構架時,根據需要定義好,系統構架、程式環境、網路環境,如考慮分布式儲存,日均訪問量、系統安全、成本預算等。
asp.net的開發成本是要比java的開成本低的。
Sql server的運營成本是要oracle低的,但oracle在大型資料處理上要優於SQL Server,如果是SNS站我覺得上Oracle會好些。
選擇什麼樣的環境,在沒有特定要求的情況下,根據團隊的現狀去考慮我覺得就差不多了。
我們有了目的地將要遠航,那麼就得需要航海圖、船、船長、舵手、水手、水和食物,雖然這樣我們能保證100%完成任務,因為大海中的意外誰也不會知曉,但我們理想的是我們能安全到達,如果條件不允許,就算我們知道目的地在哪,出了海,我們將面對是一場艱辛冒險旅程。
2、收集需求
需求的收集是個很繁瑣的過程,收集的不夠,開發過程中變化會很多,特別是你上了一個示範版本後,開始別人一點意見都沒,一看你的示範,你就意見一大堆,這樣的問題我想在很多項目中都出現過,所以先在收集需求的時候要和客戶或相關部門一一確認,我們考慮需求要從種兩種角度去考慮,一種是使用者角度,另一種是開發人員角度,所以在談需求時,必須邊聊邊記,把所談的話記錄整理,如果怕遺漏,可以錄音,然後將採用文檔的方式表達出來,將提出的需求加以分析,做下技術評估,如果有特別的難題可以提前讓開發人員做技術預研,在做評估後,需要分段實施的,就做好規劃,然後和提需求的人員確認,需求文檔的功能可以多寫點,根據企業的發展,能考慮的都考慮,這樣可以在系統構架時,定位系統的生命週期時,給以更多的參考,在需求定出階段後,我們得把要馬上實施的功能放在當前,加以強化、細化,反覆的進行,條件允許的時候應該做些Demo來確認。
軟體開發項目做需求分析的一點心得