老菜鳥侃需求分析的“再回爐”


去年四月份即許諾為女兒寫個學習工具(妞妞加油站,有搞成系列的想法),卻由於一個軟件項目的開發工作一拖再拖,直到年底才騰出個把禮拜搞了個七七八八,正好趕上閨女的考試。小試了幾刀,感覺效果還是比較明顯,有興趣的家長可以down一下試試。CSDN上傳了一下,名字是“小學語文學習加油站(家長版)”,DelphiXE+Firebird,Ribbon2010風格,自動生成拼音,支持多音字,能按每一課、每單元、全書生成資料或測試卷子,區分了生字、多音字、成語、文言文、古詩、作家作品等單項知識,單純從語文基礎知識學習來看,應該能滿足要求了。

由於我是一個自由軟件人,經常會接一些朋友之間幫忙的活兒,年屆四十時,經常會小小自滿一下,一般數據庫項目哥都見過了,還有什么需求難得倒哥?孰不知,就是這個小小工具軟件讓我開始重新審視需求這兩個字,讓我意識到,需求的整理和落實是需要用戶和技術人員共同來“回爐”、“淬火”、“鍛造”的,而其中“回爐”竟是最令人頭大,卻又是最重要的一部分。

先說問題,談到小學語文,我的理解就是從拼音-詞語-句子-作文這樣一個過程來螺旋上升的,當初在軟件設計時,第一個目標就放在生字和詞語上,嘴里還念叨着,把生字、生詞都寫會了,至少能拿到五十分罷。正是因為這個想法,讓我實實在在體味了一下回爐的痛苦。

教訓之一、需求的理解切忌閉門造車、自編自演。

有了先前的想法,我的工作路子就很明顯了,把字詞句堆到數據庫里,然后再模仿孩子的的考卷用Word輸出來就得了。這不,板磚馬上就不請自來了:

孩子:我們上課又不是一下子把一本書學完,每次都寫那么多,作業怎么辦?

老師:其實我們最頭疼的工作主要是重復勞動太多,別的不說,就拿輸個拼音來說罷,雖然word里面有注音的工具,但效率還是不高。常常是這邊錄入那邊還錄...

我:每次出個卷子要么得選內容選半天,要么就一下出來五六張紙,孩子做完還好說,孩子不做,那紙不就浪費了?

我明白過來設計上出了偏差的時候,已經基本寫完了“詞語”、“字”兩部分。咬咬牙、跺跺腳,一邊兒調整數據結構,一邊兒重新梳理需求,所幸,我的技術設計框架抗擊打能力較強,才最終沒有淹沒在閨女的唾沫之下。

  心得:技術設計上必須不折不扣地堅持繼承等OO思想,必須着眼重用、擴展的“通用”思想,那樣子的程序,才不會怕“變”,才會耐“變”。當然,在編程之中,時時地通過重構來規范自己的代碼,使之沿續這種設計思想,落實這種設計思想就是程序員良好的職業養成了。

 

教訓之二、需求的落實必須堅決屏棄“補丁”思想,更多把功夫下在專業知識的學習上。

補丁歷來是用來救火的不得已手段,在時間能力允許的范圍內,還是不要用補丁罷。否則,補丁必然會越打越多,直到影響到程序本身的乳壯。這個感悟是在我遇到了近義詞反義詞、成語、造句時體會到的。當時,“詞語”一部分設計中我僅考慮了成語,其它幾部分雖然也有考慮,但重視不夠,心里想着:頂多就是再建一兩個從表嘛。等到我拿到老師用的《語文XX詳解》,我才意識到自己又犯了一個錯誤,首先,最優的錄入方案應該是在錄入時即進行勾選,哪個詞是成語,哪個詞可以用來造句,哪個詞的近義詞是什么,反義詞是什么,另起幾個窗體,再進行勾選,是絕對的費時費力。其次,加入幾個從表,就需要在界面上加入幾個按鈕,增加了軟件操作的繁瑣不說,也加大了軟件使用的難度。

又是一番的咬牙跺腳之后,把開發工作停下,靜下心來研究了《語狀》、《詳解》等多本學習參考工具書后,對數據庫進行了新一輪的重構。

心得:遇到問題后,不要急於下手改動,而要再次細細咀嚼需求,“回爐”后再“淬火”,補充專業知識,從全局來把握改動范圍,這樣才能真正做到有的放矢,從根本上避免補了舊洞又添新坑的尷尬。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM