到需求變化和版本層出不窮的深淵,于是我開始構(gòu)思下一版的軟件,這個(gè)軟必須能夠解決現(xiàn)有版本的程序所面臨的一切問題,同時(shí)可以支持網(wǎng)絡(luò)版的功能。
在2002年,與后來的兩個(gè)同時(shí)鼎力合作,終于在11月份完成的這個(gè)新版本的程序,整個(gè)程序界面上的控件都是在程序啟動(dòng)時(shí)動(dòng)態(tài)創(chuàng)建,可以直接編輯,編輯完成之后將界面信息保存到數(shù)據(jù)庫中,下次啟動(dòng)應(yīng)用程序時(shí)再從數(shù)據(jù)庫中動(dòng)態(tài)加載界面,界面上的字體,顏色,甚至整個(gè)界面的風(fēng)格都可以由用戶自己選擇。當(dāng)這個(gè)軟件第一次推出的時(shí)候,用戶也比較喜歡,很多設(shè)計(jì)非常新穎。直到今天,這個(gè)版本的程序還在不斷的完善,但是程序的樣子與2002年11月相比,已經(jīng)大不相同了,現(xiàn)在的程序更加美觀,看起來更加專業(yè),使用更為方便,也更穩(wěn)定。但是這個(gè)程序比較龐大,因?yàn)樗瑫r(shí)支持Access和SQL Server數(shù)據(jù)庫。這個(gè)程序也就成了我們的產(chǎn)品由單機(jī)版向網(wǎng)絡(luò)版過度的一個(gè)橋梁。這就是我們的第三版軟件。
可以說第三版軟件徹底解決了第二版軟件面臨的問題,但是在網(wǎng)絡(luò)方面遇到了挑戰(zhàn),那就是所有的網(wǎng)絡(luò)版軟件都面臨的問題:流程的變更和業(yè)務(wù)規(guī)則的變更。第三版的設(shè)計(jì)初衷就是為了解決第二版遇到的問題,不過為了節(jié)約工作量,同時(shí)兼顧了網(wǎng)絡(luò)版的功能,這就導(dǎo)致了第三版代碼比較多,其中經(jīng)常出現(xiàn)是單擊版還是網(wǎng)絡(luò)版的判斷。對于網(wǎng)絡(luò)版的用戶需求的適應(yīng)能力,第三版顯得有點(diǎn)吃力了,我們不得不在程序中專門為某個(gè)用戶增加一些特殊的處理,當(dāng)網(wǎng)絡(luò)版的用戶快接近10家的時(shí)候,我們的噩夢又開始了,當(dāng)然比第二版要樂觀一點(diǎn),因?yàn)閂C中可以使用預(yù)編譯條件解決了不少的問題,例如一個(gè)對話框資源可以根據(jù)不同的條件顯示不同的外觀等等。由于針對多家用戶添加的那些if else實(shí)在是太多了,修改一個(gè)地方,一不小心就會(huì)影響其他的功能。當(dāng)然這也與第三版程序結(jié)構(gòu)的設(shè)計(jì)不太合理有關(guān)系,因?yàn)檫@個(gè)版本的程序我依然是在現(xiàn)蒸現(xiàn)賣,賣到2005年底的時(shí)候,我對于VC才有了點(diǎn)感覺,什么是面向?qū)ο蟮脑O(shè)計(jì),什么是設(shè)計(jì)模式,系統(tǒng)架構(gòu)等等的概念開始接觸和學(xué)習(xí)。
在2003年非典剛剛開始的時(shí)候,我們的第一個(gè)網(wǎng)絡(luò)版用戶開始裝機(jī),從那時(shí)起第三版軟件開始了網(wǎng)絡(luò)版的考驗(yàn),從第三個(gè)網(wǎng)絡(luò)用戶開始我就不得不規(guī)劃第四版軟件了,這個(gè)新版本的軟件必須同時(shí)解決第二版和第三版所遇到的所有問題,同時(shí)可以非常方便的解決流程的變更和業(yè)務(wù)規(guī)則的變更問題。2004年2月,我正式開始設(shè)計(jì)第四版軟件,這個(gè)軟件可以設(shè)計(jì)界面,設(shè)計(jì)流程,增加和編輯業(yè)務(wù)規(guī)則,而且支持腳本和二次開發(fā),到2005年11月,我們的BUG管理器通過第四版軟件配置完成了,現(xiàn)在用得很好,到元旦前,估計(jì)我們得計(jì)劃管理器也可以配置出來。這個(gè)版本的軟件就像一個(gè)平臺(tái),可以搭建起幾乎所有的數(shù)據(jù)庫管理軟件實(shí)現(xiàn)的功能,從而開發(fā)人員可以自如的面對用戶需求 的變化。當(dāng)然,并不是所有的需求都可以在不改變程序代碼的情況下實(shí)現(xiàn),但是相對于第三版軟件,新版本的軟件已經(jīng)很優(yōu)秀了,至少我們不需要為了實(shí)現(xiàn)每個(gè)用戶的要求而修改程序的代碼。另外,同第三版軟件相比,該版軟件的系統(tǒng)架構(gòu)好多了,盡可能采用面向?qū)ο蟮脑O(shè)計(jì),關(guān)于設(shè)計(jì)模式的很多規(guī)則也應(yīng)用了不少。
軟件設(shè)計(jì)師就是為了解決麻煩而存在的,既要解決用戶的麻煩,也要解決自己的麻煩,在這樣的過程中不斷的進(jìn)步。抱著這樣的一種心態(tài),我們可以從容面對用戶需求的變化,如果我們設(shè)計(jì)的軟件不能夠做到隨需應(yīng)變,那么很可能軟件的結(jié)構(gòu)和設(shè)計(jì)上遇到了問題,我們必須考慮如何改進(jìn)設(shè)計(jì)以適應(yīng)這種變化,如果你絞盡腦汁之后發(fā)現(xiàn)修改代碼將會(huì)把一切搞得更糟,那么我們應(yīng)該考慮是否重新設(shè)計(jì)一個(gè)新的產(chǎn)品。
項(xiàng)目經(jīng)理勝任力免費(fèi)測評PMQ上線啦!快來測測你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html