1 擴展閱讀
下面兩篇文章也說明了軟件估計的難度:
Steve McConnell 軟件估計的 10 種罪:
http://www.ewh.ieee.org/r5/central_texas/austin_cs/presentations/2004.08.26.pdf
Quora精選: 爲何軟件開發週期老是預估的2~3倍
http://jandan.net/2013/07/16/quora-software-development.htmlhtml
2 用戶調研的對象
咱們說了這麼多用戶調研,不少人假設評價軟件的就是購買軟件的,就是使用軟件的,可是未必。看下面的例子:
1. 你要寫一箇中學生學習英語的軟件,你找誰去作用戶調研?
中學生 - 最終用戶。
家長 - 他們是要掏錢的人,他們不會天天都用軟件,有些人都不太會英語,可是他們也有需求。
學校老師 - 他們是有巨大影響力的人,他們說不定立下一道規矩,咱們班級就用某某軟件!
2. 你要寫一個企業管理軟件, 你要找誰去作用戶調研? 請列出你認爲重要的用戶類型和你認爲合適的用戶調研的方式。程序員
在一個軟件項目中,軟件團隊預計天天的進度爲 30 小時(即,完成了30小時的工做量)。當項目完成了一半的總工做量的時候,你們發現實際的進度爲15小時/天,問:在餘下的時間中, 團隊的進度要到多少,才能在項目結束時讓整個項目的平均進度恢復到天天30小時工做量?ide
4. 一個目標/決心/估計的故事:某項目原本進行得很順利,大領導非要全體人員脫產開一天的動員大會,會議結束時, 領導熱情地問你們:你們對如期完成項目有信心麼? 這時,項目經理站起來講:咱們原本是能夠定期完成的,如今開了一天會,咱們已經延期了一天。工具
你們以爲這樣的項目經理是好仍是很差?學習
同窗們的意見:網站
果凍:首先,延期一天也叫延期嗎…其次竟然把進度卡這麼精確沒有緩衝時間我估計項目原本就得延期。。。ui
大牛:大部分狀況下項目定期完成並無多大價值,除非是爲了給團隊一點階段性的激勵spa
你有什麼意見?.net
大牛說,我接一個私活,很簡單的,就不用搞那麼多的形式主義了吧,咱們直接開幹,用代碼說話!請分析下面例子設計
http://www.cnblogs.com/yhyjy/p/4444094.html
若是你來接這個私活,應該怎麼作?
專家的意見供你們參考:
The two causes of runaways that stand head and shoulders above all others are poor (usually optimistic) estimation and unstable requirements.
Glass, Robert L. (2002-10-28). Facts and Fallacies of Software Engineering (Kindle Locations 736-737). Pearson Education. Kindle Edition.
Most software estimates are made either by upper management or by marketing, not by the people who will build the software or their managers. Estimation is, therefore, done by the wrong people.
Glass, Robert L. (2002-10-28). Facts and Fallacies of Software Engineering (Kindle Locations 853-854). Pearson Education. Kindle Edition.
5. 具體項目練習:
http://www.cnblogs.com/xinz/p/3308608.html
6. 看看縫紉機大叔是如何解決用戶需求的
http://weibo.com/2694810701/BpI8Km1UW#_rnd1412244033760
8. 用戶真正的需求和正確的解決方案
面對一個比較難的問題, 有時候項目經理或者程序員會想到一個奇妙的主意,哇,就這樣作吧,搞定! 可是一些聽上去很妙的辦法真的解決了用戶的問題? 請看這個例子,用戶發現 「原理」 以後的心情:
http://www.zhihu.com/question/26806900/answer/34095090
原理:什麼原理可以在不越獄的狀況下識別騷擾電話呢?
尼瑪原理就是在老子的通信錄裏面自動添加上了成千上萬個騷擾電話啊!
老子打開通信錄發現了從haoma1 到haoma7,這7個新添加的聯繫人啊!
每一個聯繫人裏面都儲存了成千上萬去TM的誰知道有多少個號碼啊!
而後統一整了個頭像是題主配的那個圖的樣子啊!
這樣就尼瑪的算是在不越獄下幫我識別騷擾電話了麼!
有更好的辦法麼?
9. 用戶的需求彷佛都被知足了,咋辦?
在市場上已經有一個主流軟件知足的大部分用戶的顯性需求的狀況下,後來者如何挖掘用戶需求?
http://www.zhihu.com/question/22310847
請爲後來者想幾個辦法, 用戶的需求真的被知足了麼?
10. 團隊練習 - NABCD 寫做,視頻,而且互評
請同窗們把本身項目的NABCD 都寫出來。
1) 列成詳細的條目,用具體的事實和分析說明。
2)把這些要點都組合成爲一段話 -- 當你要向別人兜售你的項目的時候, 你一般只有很短的時間 (電梯演說),可否天然而有條理地把項目說清楚? 請用你產品中實際的元素代替 <> 中的抽象概念。
各位領導/投資人/用戶/合做夥伴: 咱們的產品 <foo> 是爲了解決 <目標用戶> 的痛苦, 他們須要 <Need>, 可是現有的方案並無很好地解決這些需求,咱們有獨特的辦法 <Approach>, 它能給用戶帶來好處 <Benefit>, 遠遠超過目前市場上的競爭對手 <Competitor>。 同時,咱們有高效率的 <Delivery> 方法,能很快地讓大部分用戶知道咱們的產品,並進一步傳播。
3)把上面的這段話錄製爲視頻,上傳到視頻網站,並把連接發到我的/團隊博客上。
NABCD參考 (參見 http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html)
同窗們的實際做業例子:
http://www.cnblogs.com/liangzhilin/p/5462486.html
http://www.cnblogs.com/jjy520/p/5463552.html
http://www.cnblogs.com/hgf520/p/5457322.html
4) 每一個團隊發佈了博客/視頻以後, 其餘團隊對每個團隊的博客進行排名 (1,2,3... ) ,排名沒有並列。 而且把排名的理由寫到博客上, 對每一個團隊的分析不得少於 140 字 (除非這個團隊沒有寫博客或者提供足夠的材料) .
如何寫出140 字的分析?
對這個項目的一句話描述
這個項目的優勢
這個項目計劃的缺點 (需求符合實際麼? 符合你的認知麼?技術能知足用戶的需求麼? ...)
若是你來領導項目,你會作什麼不同的事情?
這個練習的目的是讓團隊運用掌握的軟工知識去評價別人作的需求分析。 而後助教本身也對全部團隊的 NABCD 博客排名, 這樣, 助教就可以比較快速地收集到全部團隊 需求分析的分數。
11. 用戶界面設計,快速設計並驗證需求
不要等到全部代碼寫好以後再去驗證需求,請用合適的原型設計工具描述用戶界面和需求,而後找用戶驗證。請用下面工具來描述你的產品原型:
工具 Axure http://www.cnblogs.com/powertoolsteam/p/4763010.html
墨刀: https://modao.cc/
MockPlus: mockplus
Balsamiq Mockup: https://balsamiq.com/products/
GUI Design Studio: https://www.carettasoftware.com/guidesignstudio/
12. 如何平衡各類需求, 若是隻知足其中部分需求, 會怎麼樣?
顧客對於要交付的軟件和服務,都是有不少美好的需求的,例如,交付要快, 人工要便宜, 質量要高,最好軟件自己是免費的。 可是一個軟件團隊的確不能同時知足這麼多需求,如何讓顧客知道她們的「多快好省」願望是不可能達到的呢?
在上圖中,用戶但願軟件開發的又快, 又便宜 (人工便宜),質量又好, 最好是免費的。 那麼,若是隻知足部分的需求, 咱們會獲得什麼樣的軟件呢?
例如,上圖的 ① 說明, 若是但願軟件作得又快,又低成本(人工便宜), 不考慮其餘要求, 那麼,咱們會獲得大體什麼樣的軟件呢?
例如,上圖的 ⑤ 說明, 若是但願軟件是免費的,並且要很快交付,越快越好, 那麼,這樣的軟件有什麼特色呢?
請把 ① 到 ⑦ 的需求組合會致使什麼樣的軟件, 會出現什麼樣的問題, 都列出來。