與正確性、精確性相關(guān)的質(zhì)量因素是容錯(cuò)性和可靠性。
容錯(cuò)性首先承認(rèn)軟件系統(tǒng)存在不正確與不精確的因素,為了防止?jié)撛诘牟徽_與不精確因素引發(fā)災(zāi)難,系統(tǒng)為此設(shè)計(jì)了安全措施。在一些高風(fēng)險(xiǎn)的軟件系統(tǒng),如航空航天、武器、金融等系統(tǒng)中,容錯(cuò)性設(shè)計(jì)非常重要。
可靠性是指在一定的環(huán)境下,在給定的時(shí)間內(nèi),系統(tǒng)不發(fā)生故障的概率?煽啃员緛(lái)是硬件領(lǐng)域的術(shù)語(yǔ)。比如某個(gè)電子設(shè)備,一開(kāi)始工作很正常,但由于工作中器件的物理性質(zhì)會(huì)發(fā)生變化(如發(fā)熱),慢慢地系統(tǒng)會(huì)失常。所以一個(gè)設(shè)計(jì)完全正確的硬件系統(tǒng),在工作中未必是可靠的。軟件在運(yùn)行時(shí)不會(huì)發(fā)生物理性質(zhì)的變化,人們常以為如果軟件的某個(gè)功能是正確的,那么它一輩子都是正確的?墒俏覀儫o(wú)法對(duì)軟件進(jìn)行徹底地測(cè)試,無(wú)法根除軟件中潛在的錯(cuò)誤。平時(shí)軟件運(yùn)行得好好的,說(shuō)不準(zhǔn)哪不正常了,如“2000年”問(wèn)題。因此把可靠性引入軟件領(lǐng)域是有意義的。我曾買了一本關(guān)于軟件可靠性的著作,此書(shū)充滿了數(shù)學(xué)公式。我發(fā)現(xiàn)以我目前的學(xué)歷實(shí)在難以看懂書(shū)上講了些什么。請(qǐng)寬恕我的愚昧,我把此書(shū)給“供”起來(lái),沒(méi)敢用筆畫(huà)一處記號(hào)。
性能與效率
用戶都希望軟件的運(yùn)行速度高些(高性能),并且占用資源少些(高效率)。舊社會(huì)地主是這么對(duì)待長(zhǎng)工的:干活要快點(diǎn),吃得要少點(diǎn)。程序員可以通過(guò)優(yōu)化算法、數(shù)據(jù)結(jié)構(gòu)和代碼組織來(lái)提高軟件系統(tǒng)的性能與效率。優(yōu)化的關(guān)鍵工作是找出限制性能與效率的“瓶頸”,不要在無(wú)關(guān)痛癢的地方瞎忙乎。如果你想職稱升得快,光靠增加課時(shí)能頂屁用;你該一年寫(xiě)它幾十篇文章,爭(zhēng)取破格升教授。
易用性
易用性是指用戶感覺(jué)使用軟件的難易程度。用戶可能是操作軟件的終用戶,也可能是那些要使用源代碼的程序員,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個(gè)方便。所以把易用性作為重要的質(zhì)量因素?zé)o可非議。
導(dǎo)致軟件易用性差的根本原因是開(kāi)發(fā)人員犯了“錯(cuò)位”的毛病:他以為只要自己用起來(lái)方便,用戶也一定會(huì)滿意。俗話說(shuō)“王婆賣瓜,自賣自夸”。當(dāng)程序員向用戶展示軟件時(shí),常會(huì)得意地講:“這個(gè)軟件非常好用,我操作給你看,……是很好用吧!”軟件的易用性要讓用戶來(lái)評(píng)價(jià)。當(dāng)用戶真的感到軟件很好用時(shí),一股溫暖的感覺(jué)油然而生,于是用“友好”來(lái)評(píng)價(jià)易用性。
可理解性與簡(jiǎn)潔性
可理解性表達(dá)了人們一種質(zhì)樸的愿望:我化錢買了它,總得讓我明白它是什么東西。我小時(shí)候的一個(gè)伙伴在讀中學(xué)時(shí),因無(wú)法理解電荷之分正負(fù),覺(jué)得很煩惱,便早早地綴學(xué)當(dāng)工人。
可理解性也是對(duì)用戶而言的。開(kāi)發(fā)人員只有在自己思路清晰時(shí)才可能寫(xiě)出讓別人能理解的程序。編程時(shí)還要注意不可濫用技巧,應(yīng)該用自然的方式編程。我們的確不知道自己的得意之舉究竟是錦上添花,還是畫(huà)蛇添足。象蒸出一籠饅頭,在上面插一朵鮮花,本想弄點(diǎn)詩(shī)情畫(huà)意,卻讓人誤以為那是一堆熱氣騰騰的牛糞。
簡(jiǎn)潔是一種美,不管是自己還是用戶都會(huì)有同感。在生活中,與簡(jiǎn)潔對(duì)立的是“羅里羅嗦”。中國(guó)小說(shuō)中“婆婆媽媽”的男人是唐僧。有一項(xiàng)民意調(diào)查:如果世上只有唐僧、孫悟空、豬八戒和沙僧這四類男人,你要嫁給哪一類?請(qǐng)列出優(yōu)先級(jí)。調(diào)查結(jié)果表明,現(xiàn)代女性毫不例外地把唐僧?dāng)[在老末。
一個(gè)原始的應(yīng)用問(wèn)題可能很復(fù)雜,但高水平的人能夠把軟件系統(tǒng)設(shè)計(jì)得很簡(jiǎn)潔。如果軟件系統(tǒng)臃腫不堪,它遲早會(huì)出問(wèn)題。簡(jiǎn)潔是人們對(duì)工作“精益求精”的結(jié)果。
廢話大師有句名言:“如果我令你過(guò)于輕松地明白了,那你一定是誤解了我說(shuō)的話。”我近有一種奇怪的體會(huì):如果把學(xué)術(shù)文章寫(xiě)得很簡(jiǎn)潔,讓人很容易理解,它往往中不了;只有加上一些玄乎的東西,把本來(lái)簡(jiǎn)單的弄成復(fù)雜的,才會(huì)增加投稿的命中率。事實(shí)上,我可以在5分鐘之內(nèi)說(shuō)清楚三年來(lái)讀博所做的工作,根本用不著寫(xiě)100多頁(yè)的博士論文。我是在臨近畢業(yè)時(shí),才發(fā)覺(jué)自己完全不適合讀博士學(xué)位。將來(lái)工作后,我一定要好好編程,重新做人。
可復(fù)用性與可擴(kuò)充性
復(fù)用的一種方式是原封不動(dòng)地使用現(xiàn)成的軟構(gòu)件,另一種方式是對(duì)現(xiàn)成的軟構(gòu)件進(jìn)行必要的擴(kuò)充后再使用。可復(fù)用性好的程序一般也具有良好的可擴(kuò)充性。
質(zhì) 量 檢 查
檢查是人們不信任自己和別人的一種行為。當(dāng)某些事情涉及到利益分配時(shí),更需要有檢查活動(dòng)來(lái)保證公平。估計(jì)即使進(jìn)入了共產(chǎn)主義社會(huì),也少不了檢查。
質(zhì)量檢查并不是要等到項(xiàng)目結(jié)束時(shí)才執(zhí)行的一次,應(yīng)該在每個(gè)實(shí)踐環(huán)節(jié)都要執(zhí)行。對(duì)應(yīng)于進(jìn)度表,在每個(gè)里程碑到達(dá)時(shí)執(zhí)行質(zhì)量檢查比較合理。質(zhì)量檢查的內(nèi)容有二:一是作出評(píng)審,是合格還是不合格?能打多少分?二是作出建議,對(duì)質(zhì)量為什么好為什么差進(jìn)行分析,以便“改差為好”、“好上加好”。
以下是人們經(jīng)常采用的軟件質(zhì)量檢查措施[Pressman 1999]:
(1)事先把檢查的主要內(nèi)容制成一張表,使檢查活動(dòng)集中在主要問(wèn)題上。
(2)只評(píng)審工作,不評(píng)審開(kāi)發(fā)者。評(píng)審的氣氛應(yīng)該是融洽的。存在的錯(cuò)誤應(yīng)該被有禮貌地指出來(lái),任何人的意見(jiàn)都不應(yīng)被阻撓或小看。
(3)建立一個(gè)議事日程并遵循它。檢查過(guò)程不能放任自由,必須排照既定的方向和日程進(jìn)行。
(4)不要化太多的時(shí)間爭(zhēng)論和辯駁。
(5)說(shuō)清楚問(wèn)題所在,但不要企圖當(dāng)場(chǎng)解決所有問(wèn)題。
(6)對(duì)檢查人員進(jìn)行適當(dāng)?shù)呐嘤?xùn)。
……
做好檢查工作并不是件容易的事。自古以來(lái)“上有政策,下有對(duì)策”。 虛假的質(zhì)量檢查還不如不檢查,下面講兩個(gè)故事作為解釋。
故事一
不久前我回到西北那所讀了六年多的大學(xué),驚奇地發(fā)現(xiàn)校園里房前屋后長(zhǎng)滿了待收割的小麥!這所大學(xué)是從事電子科技的,種小麥干啥呀?朱總理曾講過(guò):“目前糧食充足,再來(lái)三年自然災(zāi)害也不怕。”現(xiàn)在國(guó)泰民安,似乎用不著“深挖洞,廣積糧”。我素知學(xué)校提創(chuàng)勤儉節(jié)約、自力更生,但與其種小麥還不如種蔬菜呢。老同學(xué)告訴我,種小麥?zhǔn)菫榱藨?yīng)付“211”工程(為21世紀(jì)選拔100所重點(diǎn)大學(xué))的檢查團(tuán),因?yàn)?ldquo;211”工程有較高的綠化指標(biāo)。偏偏檢查趕在冬天,那時(shí)的西北極難長(zhǎng)草。我那所大學(xué)本來(lái)人多地少,地上一長(zhǎng)草馬上會(huì)被談戀愛(ài)的學(xué)生給折磨死。一到冬天,整個(gè)校園光禿禿一片。用小麥綠化校園可謂千古絕筆,檢查團(tuán)的那些權(quán)貴人士早已五谷不分,豈知所見(jiàn)的“草坪”乃是麥田。
檢查工作要預(yù)防被檢查者弄虛作假。
故事二
我上高中時(shí),班里舉行一次入團(tuán)評(píng)審。侯選人中有幾位是好學(xué)生,有幾位是壞學(xué)生。我心想“伸張正義”的機(jī)會(huì)到了,絕不能讓壞蛋混進(jìn)純潔的團(tuán)里?商熘缊F(tuán)支部書(shū)記是聰明絕頂還是蠢笨之極。他竟說(shuō):“班里還有一些同學(xué)沒(méi)有入團(tuán),現(xiàn)在他們申請(qǐng)入團(tuán),有不同意的請(qǐng)舉手。”我們都不知道該怎么辦了。書(shū)記接著說(shuō):“既然沒(méi)有人舉手反對(duì),表示全部同意,請(qǐng)大家鼓掌歡迎。”這次入團(tuán)評(píng)審不到一分鐘結(jié)束了,從此后我再也沒(méi)想過(guò)爭(zhēng)取入黨。
檢查工作要有科學(xué)的評(píng)審方式。
小 結(jié)
不知為什么,國(guó)內(nèi)很多大的企業(yè)都喊著要進(jìn)世界500強(qiáng)。如果真的實(shí)現(xiàn)了,世界500強(qiáng)還不全被中國(guó)霸占了。軟件的項(xiàng)目計(jì)劃和質(zhì)量管理都不是用來(lái)喊叫的口號(hào)。做項(xiàng)目計(jì)劃時(shí)切忌“冒進(jìn)”,不要指望在項(xiàng)目陷入困境后靠增加人手來(lái)解救。軟件的高質(zhì)量主要是設(shè)計(jì)出來(lái)的,不是“管”出來(lái)的,更不能依賴質(zhì)量檢查。為此程序員要充分了解軟件的質(zhì)量因素,只有提高設(shè)計(jì)水平,才能開(kāi)發(fā)出高質(zhì)量的軟件。