軟件的質(zhì)量因素很多,如正確性、精確性、可靠性、容錯(cuò)性、性能、效率、易用性、可理解性、簡(jiǎn)潔性、可復(fù)用性、可擴(kuò)充性、兼容性等等(還可以列出十幾個(gè))。這些質(zhì)量因素之間“你中有我,我中有他”,非常纏綿。
“運(yùn)行正確”的程序就是高質(zhì)量的程序嗎?不貪污的官就是好官嗎?時(shí)下老百姓對(duì)一些腐敗的地方政府深痛惡絕,對(duì)“官”不再有質(zhì)量期望。只要當(dāng)官的不貪污,哪怕毫無(wú)政績(jī),也算是“好官”。也有一些精明的老百姓打出旗號(hào):寧要貪污犯,不要大笨蛋。相比之下,程序員是夠幸福的了。因?yàn)槲覀兡芡ㄟ^努力,由自己來(lái)把握軟件的命運(yùn)。那么就不要輕易放棄提高軟件質(zhì)量的權(quán)利了?!斑\(yùn)行正確”的程序不見得就是高質(zhì)量的程序。這個(gè)程序也許運(yùn)行速度很低并且浪費(fèi)內(nèi)存;也許代碼寫得一塌糊涂,除了開發(fā)者本人誰(shuí)也看不懂也不會(huì)使用。正確性只是反映軟件質(zhì)量的一個(gè)因素而已。
1、正確性與精確性
正確性與精確性之所以排在質(zhì)量因素的第一位,是因?yàn)槿绻浖\(yùn)行不正確或者不精確,就會(huì)給用戶造成不便甚至造成損失。機(jī)器不會(huì)主動(dòng)欺騙人,軟件運(yùn)行不正確或者不精確一般都是人造成的。即使一個(gè)軟件能100% 地按需求規(guī)格執(zhí)行,但是如果需求分析錯(cuò)了,那么對(duì)客戶而言這個(gè)軟件也存在錯(cuò)誤。即使需求分析完全符合客戶的要求,但是如果軟件沒有100% 地按需求規(guī)格執(zhí)行,那么這個(gè)軟件也存在錯(cuò)誤。開發(fā)一個(gè)大的軟件項(xiàng)目,程序員要為“正確”、“精確”四個(gè)字竭盡精力。
與正確性、精確性相關(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è)備,一開始工作很正常,但由于工作中器件的物理性質(zhì)會(huì)發(fā)生變化(如發(fā)熱),慢慢地系統(tǒng)就會(huì)失常。所以一個(gè)設(shè)計(jì)完全正確的硬件系統(tǒng),在工作中未必就是可靠的。軟件在運(yùn)行時(shí)不會(huì)發(fā)生物理性質(zhì)的變化,人們常以為如果軟件的某個(gè)功能是正確的,那么它一輩子都是正確的。可是我們無(wú)法對(duì)軟件進(jìn)行徹底地測(cè)試,無(wú)法根除軟件中潛在的錯(cuò)誤。平時(shí)軟件運(yùn)行得好好的,說不準(zhǔn)哪一天就不正常了,如“2000年”問題。因此把可靠性引入軟件領(lǐng)域是有意義的。我曾買了一本關(guān)于軟件可靠性的著作,此書充滿了數(shù)學(xué)公式。我發(fā)現(xiàn)以我目前的學(xué)歷實(shí)在難以看懂書上講了些什么。請(qǐng)寬恕我的愚昧,我把此書給“供”起來(lái),沒敢用筆畫一處記號(hào)。
2、性能與效率
用戶都希望軟件的運(yùn)行速度高些(高性能),并且占用資源少些(高效率)。舊社會(huì)地主就是這么對(duì)待長(zhǎng)工的:干活要快點(diǎn),吃得要少點(diǎn)。程序員可以通過優(yōu)化算法、數(shù)據(jù)結(jié)構(gòu)和代碼組織來(lái)提高軟件系統(tǒng)的性能與效率。優(yōu)化的關(guān)鍵工作是找出限制性能與效率的“瓶頸”,不要在無(wú)關(guān)痛癢的地方瞎忙乎。如果你想職稱升得快,光靠增加課時(shí)能頂屁用;你就該一年寫它幾十篇文章,爭(zhēng)取破格升教授。
3、易用性
易用性是指用戶感覺使用軟件的難易程度。用戶可能是操作軟件的最終用戶,也可能是那些要使用源代碼的程序員?,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個(gè)方便。所以把易用性作為重要的質(zhì)量因素?zé)o可非議。
導(dǎo)致軟件易用性差的根本原因是開發(fā)人員犯了“錯(cuò)位”的毛?。核詾橹灰约河闷饋?lái)方便,用戶也一定會(huì)滿意。俗話說“王婆賣瓜,自賣自夸”。當(dāng)程序員向用戶展示軟件時(shí),常會(huì)得意地講:“這個(gè)軟件非常好用,我操作給你看,……是很好用吧!”軟件的易用性要讓用戶來(lái)評(píng)價(jià)。當(dāng)用戶真的感到軟件很好用時(shí),一股溫暖的