經(jīng)常遇到做軟件設(shè)計的朋友抱怨用戶的需求老是變化,自己不斷的修改自己的設(shè)計,結(jié)構(gòu)搞得自己疲憊不堪,而且軟件的應(yīng)用效果也不理想。其實類似的問題每個人都會遇到,關(guān)鍵是我們應(yīng)該如何對待,如果我們總是不斷的修改代碼以適應(yīng)用戶的要求,這時候我們應(yīng)該考慮軟件是否具備足夠的讓軟件開發(fā)人員自己比較舒適的適應(yīng)能力,如果不具備這種能力,則改進設(shè)計,甚至具備足夠的適應(yīng)能力,否則,軟件設(shè)計真的就成了苦差事。
軟件設(shè)計師不應(yīng)該害怕需求的變化,更不應(yīng)該為需求的變化而煩惱,任何需求的變化都可能蘊藏著巨大的機會,這種機會就是創(chuàng)新,這種創(chuàng)新就是未來的市場機遇,就是企業(yè)的進步的推動力。創(chuàng)新源于需求的不斷變化。這是多年來從事軟件開發(fā)工作的一點非常深刻的體會,這種變化包括各個方面的,可能是硬件的變化,可能是操作系統(tǒng)的變化,可能是用戶群的變統(tǒng)統(tǒng)可以歸結(jié)為用戶需求的變化。我們的軟件產(chǎn)品就是在需求不斷的變化之中發(fā)展的。
如果我們?yōu)橛脩艟帉懥艘粋€軟件,不管具體實現(xiàn)的功能如何,只要上述的幾種變化出現(xiàn),我們都不得不不對軟件的設(shè)計進行調(diào)整,有時可能需要對系統(tǒng)的整體框架進行調(diào),甚至重寫部分或全部的源代碼。剛開始學(xué)習編程的時,總是希望一條語句表達盡可能多的含義,夢想一個算法解決所有的問題,一個程序滿足所有用戶的要求,但這是不可能的,因為我們周圍的世界處于不斷的變化之中,今天你寫的程序完全滿足用戶要求,一段時間之后,用戶的系統(tǒng)升級了,你的程序在新的系統(tǒng)上運行就會產(chǎn)生錯誤,所以你必須更新程序以適應(yīng)這種變化。這種變化還包括機器主板的變化引起硬件的沖突,某種型號板卡的停產(chǎn)或改型,用戶特別指定的硬件設(shè)備等等。另外,我們的頭腦不可能聰明到完全可以預(yù)覽未來發(fā)生的事情,所有很難設(shè)計一個一勞永逸的軟件,另外市場的選擇,競爭對手的壓力,也逼著我們不斷的修改設(shè)計。
需求的變化是一個客觀存在的事實,軟件設(shè)計人員必須正確的面對這樣的事實,不要指望你辛辛苦苦編寫了一年的代碼之后,你就可以高枕無憂,盡管你對軟件的架構(gòu)、算法處理的非常好,甚至可以說是完美,然而所有的你所津津樂道的那些完美的設(shè)計,都是相對的,當用戶 的需求開始發(fā)生變化的時候,他們可能提出要增加一個新的功能,那么你很可能要改進設(shè)計。 除非你設(shè)計的東西沒有人使用,否則對設(shè)計的更改總是不可避免的。
2000年底的時候,我的第一個商品化軟件完成,盡管我不覺得多么好,但是在同其他廠商的競爭中贏得了用戶的青睞,聽到從市場上反饋的信息,我當時的感覺非常好,然而,很快我不得不修改我的代碼,除了程序中存在的一些BUG之外,在用戶群不到增加的情況下,用戶的要求開始發(fā)生變化了,例如:A用戶希望整個界面的字體采用楷體比較好,B用戶50多歲的人比較多,希望字體能夠大一些,可以看得清楚,C用戶希望界面上的“醫(yī)生”改為“醫(yī)師”,D用戶希望界面上的字段數(shù)量少一些,等等諸如此類的。關(guān)鍵是有些用戶的需求是存在沖突 的,如果程序滿足了張三的要求,而張三所要求的東西恰恰是李四要極力避免的,所以對于使用VB時間不長,經(jīng)驗不多的我來說,只能靠保留多個版本來解決這樣的問題,我為每個用戶保留一個備份,這樣每個用戶的要求都可以滿足了,但是后期的代碼的維護幾乎讓我陷入絕望的境地,試想一下,一個存在問題的函數(shù),需要你在10個甚至更多的版本上同時修改,是一種什么樣的感覺,而且每個版本的程序都多少有點區(qū)別,任何一次修改,你都必須小心翼翼,一不留神就會產(chǎn)生一個新的BUG,這種更改讓人精神緊張?;蛟S,我應(yīng)該使用VSS之類的工具管理代碼,但是我當時根本不知道世界上有這樣的一種工具。所以在萬般無奈之下,我必須想辦法拯救自己,可不能陷入
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html