软件开发可行性分析九个流程的理解
1.可行性分析
主要是對一個項目是否進行做出決定,一般由公司高層來決定,這種決策對公司尤其是創業公司至關重要。方向搞錯了,執行力再強也沒用。想創業的同學,這個問題定要多多思考哦。
可行性分析可能包括但不限于以下幾個步驟:市場調研、技術難度、盈利能力等諸多方面。
a. 市場調研:對市場做一些具體的調查,主要對一些問題做出回答,比如市場是否有對項目的切實需求、市場中是否已經有公司或組織在做、是否符合法律法規。
b. 技術難度:公司是否有技術實現這個項目,其中技術人才是一個重要因素。
c. 盈利能力:能給公司或者組織帶來多大的收入。
有的時候,是不需要考慮盈利能力的,比如第一次給其它公司做項目,只要成功了,今后自然還有項目再做。或者,這是一個公司內部的項目,主要是為了減少成本的。(我們也可稱之為盈利的)
思考:很多時候,探討一個項目是否值得做,價值不大。因為你只有去做了,可能是做了3年,
才發現這個項目有前景或者不值得做。不過Fans同學仍然認為,思考是有必要的。
2.需求分析
可行性分析中探討市場需求時,這時的需求很可能是一個比較大而抽象的需求,需要在需求分析階段細化需求。需求往往是很多的,而不是一個原子需求。
需求分類:功能需求、界面需求、性能需求。
a.功能需求:描述系統的功能,一般來說會細化成一個個的小功能,小到開發人員能夠實現。
每一個小功能通常都有一個編號,比如F000001.
b.界面需求:打個比喻,系統的功能好比人的內涵,需要一些時間才能理解。
系統的界面好比人的外貌,長得美帥很可能立即吸引一批人。
舉幾個界面需求的小例子,整體界面布局,色彩,字體大小。
這類需求往往會有一個解決方案:系統皮膚。
c.性能需求:描述系統的性能,比如頁面的響應時間,同時響應的請求數等。
d.穩定性需求:724365不停運作,商業重要項目中會有此要求;
每個月有一次或幾次維護,在網游行業非常常見。
e.安全性需求: 保護系統內部數據不外泄等安全方面的需求,比如用戶的帳號和密碼,個人其它隱私信息。
f.其它需求:…
思考:時間或者進度是需求么?
3.架構設計
架構設計是從技術角度對系統進行一個全方位的規劃,通常著眼于全局,而非局部細節。
沒有最好的架構,架構都是根據需求來做的。架構通常都會有架構師參與。
包括但不限于以下幾種事項:
a.選擇項目開發所使用的技術,可能包括編程語言,數據庫,框架或類庫或平臺。
b.定義系統技術基礎,比如分布式平臺的規劃和部署、數據的流轉等。
c.將系統劃分為不同的模塊,定義模塊與系統技術基礎之間的關系。
d.定義模塊之間的接口或通信或者交互。一個系統通常會包含很多個模塊,分模塊開發體現了一種
分而治之的思想方法。定義模塊之間的接口方便后期不同模塊的整合。
4.詳細設計
詳細設計是將架構設計進一步細化,通常會比較細致,一方面方便開發人員具體開發,
另一方便于項目經理跟蹤項目進度。
詳細設計通常由開發人員來制定,可能會有以下任務:
a.模塊內部的設計,大概怎么做得有個全局的思考,可能會書寫詳細設計文檔。
b.完成自己的模塊功能,通常會嚴格參照需求文檔或者功能列表文檔。
c.與其它模塊的交互。
5.編碼實現
一般來說,初級程序員編程時,對需求、架構、設計沒有深入的考慮,也不是很有必要。老師布置了
一個任務,或者自己想要做個小項目,通常在內心都有一些考慮,然后就開始敲代碼了。
生產環境下開發,急于編碼是個大忌,有經驗的人通常會認可此種觀點。
原因分析:
a.需求變化的概率是非常大的,根據確定的需求編碼往往不能適應變化。
b.即使需求不變,急于編碼很容易考慮不周,結果往往是只實現了功能,卻導致了性能差、邏輯不清、冗余代碼多等種種問題。
比如,同一個功能,為了用戶的方便,可能會有好幾種操作界面,后臺的功能實現既相似又有不同,急于編碼非常容易導致代碼冗余和混亂,維護起來非常費勁。尤其是在這次實習做項目中。o(︶︿︶)o
c.一旦編碼有了一定的進展,對大多數人來說,就失去了重新開始的勇氣。
有的時候,重新開始寫優于重構,尤其是在需求或者設計發生變化時。
6.測試
根據需求和功能列表,寫測試用例,然后測試系統。
根據Fans現在的經驗來看,人工測試占了很大一部分。比如為了測試用戶名和密碼,手動輸入 用戶名和密碼,且考慮到正確性和合法性等諸多情況,這樣為了測試一個功能,往往會有很多個測試用例。時間久了,會讓人感到厭煩和疲憊。
對于想在測試道路走下去的人,做個測試開發工程師、測試經理還是有挑戰的。
7.驗收
根據當初的項目計劃或者產品計劃,也可能是結合需求文檔,來檢查當前項目是否完全完成了當初的計劃。
驗收過程可能會和前面幾個流程有些重復的地方,我的理解是9個流程之間存在一條主線:項目開發和維護。
驗收的過程會涉及到很多事項,具體有哪些事項,可以"身臨其境"來想。
8.部署
項目計劃是振奮人心的,
需求分析是細致入微的,
架構設計是運籌帷幄的,
詳細設計是指導方針的,
編碼過程是艱苦卓絕的,
測試過程是精挑細選的,
驗收過程是中規中矩的,
部署過程是春種秋收的,
維護過程是精心呵護的。
9.維護
a.保證現有軟件持續正常運行
常見例子:
①服務器由于負荷太大,掛掉了,需要立即重啟;
②網游為了保證系統穩定運行,每過一段有幾個小時的維護時間。
③系統越來越慢,需要診斷原因,網絡帶寬問題還是內存泄漏還是CPU不夠用。
b.二次開發
常見例子:
①百度有海量的搜索請求,分析下搜索請求,挖掘一些信息,比如瀏覽器的市場份額情況、統計熱搜詞。
(側重于數據)
②使用系統API,做一些其它方面的功能。(側重于功能)
c.系統升級
常見例子:
①QQ空間由5.0升級到6.0,公司內部做好開發,普通用戶沒有多大的影響。
如果想升級,點擊一下按鈕-升級到6.0,就可以了。
②天龍八部由2.0升級到3.0,客戶端需要下載很多新的組件,然后更新,最后重新啟動。
以上介紹的只是一些概念上的流程,很多地方都是自己的個人揣摩和猜測。
實際過程中的開發流程,各式各樣,按照自己所在公司的流程來開發才是最合適的。
總結
以上是生活随笔為你收集整理的软件开发可行性分析九个流程的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (超实用、简单明了)Mysql变量定义与
- 下一篇: Leetcode刷题java之1079.