现代软件工程系列 学生的精彩文章 (4) 为用户服务
from:
http://teamkingofcsharp.spaces.live.com/blog/cns!59FC2D3DD66822AA!421.entry
贊一下Office的用戶體驗
今天我做API Hook,開了個Word想截獲它的系統調用。結果由于我的程序寫屎了,Word一開就崩。崩了大概10次以后,再啟動Word的時候它給了這么一個提示:
?
我倒是第一次見到這個對話框,估計其他用戶也很少見得到。
用戶甚至根本不會想到他需要這樣一個feature。比如我要是把Office玩壞了,我就自己重裝一遍。即使Office沒有這個feature,用戶也不會感覺出什么異樣,然而M$還是把這樣的feature做進來了,要知道,雖然判斷一下程序是否頻繁崩潰并不難,但是后面的診斷和恢復可能就不那么容易做了(當然我沒試過它效果如何)。花這么大功夫去做一些很多用戶一輩子都用不到的功能,不得不說Office的開發人員是在很用心的做這個軟件,Office不愧是M$的搖錢樹啊。
?
另外一個值得思考的問題是,我們寫程序,首先關注的當然是程序的正確性,我們都在極力避免程序崩掉,我們可能會忽視了災難發生時的補救措施。我以前就有這樣的心態:我對我寫的程序很有信心,它肯定不會出錯,所以我沒必要寫補救的代碼以防萬一。然而,經歷過iHunter的開發以后,我意識到這種想法是片面和不現實的。首先,當程序寫到一定規模的時候,誰都不敢拍胸脯保證它不會出錯;其次,用戶會進行各種各樣的非法操作,甚至有刪文件等不可抗拒力,寫得再好的程序也可以把它搞崩。所以,不管是自己的錯還是用戶的錯,當發生了異常一定要處理,能恢復的就恢復,不能恢復的,至少告訴用戶“雖然我不知道為什么會這樣,但至少我知道它發生了,建議你接下來做這些事情……”,這比彈出一個“在某某地址讀寫錯誤”的用戶看不懂的系統錯誤對話框出來,用戶體驗要強多了。
?
話雖這么說,但這件事要做好可不容易。我在iHunter里寫的代碼,經常要跟插件進行交互。對于iHunter主程序來說,插件就是用戶了。于是高翔給我的要求是:無論插件給你返回什么樣的值,無論它拋什么異常出來,你都不能讓主程序崩掉。我寫起來才發現要做到這點真不容易。你必須在和插件的每一次交互中都小心翼翼地處理各種異常情況,必須考慮到它會怎樣陰你。還有數據一致性的問題,插件一次失敗的操作可能把數據給改了,怎樣把數據恢復過來?我們現在還不敢夸口說我們的程序堅不可摧,免疫插件的各種耍流氓行為。但我們在盡力處理這些可能根本就不會遇到的問題。如果從應付軟工課的角度來看,做這些努力根本是不必要的,因為現在我們的插件都是遵循接口要求寫的,根本不會出現各種各樣亂七八糟的異常;即使是將來有第三方為我們開發插件,也很難想像它會以搞崩我們的軟件為目的。然而,如果是想用心做一個好軟件的話,這些工作又的確是不得不做的。
?
-- 黃源河
總結
以上是生活随笔為你收集整理的现代软件工程系列 学生的精彩文章 (4) 为用户服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python执行oracle命令_如何使
- 下一篇: 同学, 有板砖么?