趙占芳
摘要在高級語言程序設(shè)計教學(xué)中,普遍重視語法知識點(diǎn)的教學(xué),忽略了程序質(zhì)量的教學(xué)工作,因此造成了學(xué)校教學(xué)與實(shí)際工作需求嚴(yán)重脫節(jié)的情況。軟件質(zhì)量是軟件的生命線,因此在高級語言程序設(shè)計教學(xué)工作中,樹立編寫高質(zhì)量程序代碼的理念是至關(guān)重要的,將為學(xué)生順利走上工作崗位,打下良好的基礎(chǔ)。
關(guān)鍵詞程序設(shè)計高質(zhì)量代碼編程中圖分類號:TP31.5文獻(xiàn)標(biāo)識碼:A
0 引言
軟件質(zhì)量就是軟件的生命線。軟件代碼中一個微小的錯誤,就可能造成無法預(yù)計的重大損失。高級語言程序設(shè)計是本科生初次接觸軟件編程的一門入門級的課程,但是在這門課的教學(xué)中,教師普遍重視基本語法和知識點(diǎn)的講解,在程序設(shè)計教學(xué)中忽視了程序質(zhì)量的概念,教師們和學(xué)生們也很少自覺關(guān)心軟件的質(zhì)量。一些勤奮好學(xué)的程序員長期在低質(zhì)量的程序堆中滾爬,吃盡苦頭之后才有一些心得體會,并且長進(jìn)極慢。①
1 樹立高質(zhì)量程序設(shè)計理念的必要性
由于軟件本身特有的性質(zhì)決定了只要存在一個很小的錯誤,就可能帶來災(zāi)難性的后果。②千年蟲事件,僅僅是因?yàn)槌绦騿T為了節(jié)省寶貴的內(nèi)存資源和硬盤空間,在存儲日期時,只保留年份的后兩位,如“1990”年被保存成“90”,結(jié)果到2000年快要來臨的時候,為此一個簡單的設(shè)計缺陷,全世界付出了幾十億美元的代價。因?yàn)槿羰?990年的存款,到2000年取款的時候,存款年限就被計算為了-90年,以此錯誤數(shù)據(jù)計算的話,銀行要支付巨額利息。還有1999年的火星登錄事故,美國宇航局的火星基地登錄飛船在試圖登陸火星表面時突然墜毀失蹤,質(zhì)量管理小組觀測到故障,認(rèn)定出現(xiàn)錯誤動作的原因極可能是某一個數(shù)據(jù)位被意外更改了。由此可見,軟件質(zhì)量的問題造成的損失是巨大的,甚至是無法估計的。如果不懂得如何有效地提高軟件質(zhì)量,項目會付出巨大的維護(hù)和修補(bǔ)的代價,因此作為軟件的開發(fā)者,就應(yīng)該樹立編寫高質(zhì)量程序代碼的理念,將高質(zhì)量內(nèi)建于開發(fā)過程之中,這就是“預(yù)防勝于治療”的道理。
在當(dāng)前軟件行業(yè)迅猛的發(fā)展下,軟件逐漸走向大型化。在這種形勢下,一個軟件的開發(fā)勢必需要眾多人的參與。因此軟件的開發(fā)工作是一種工程,而不是一種個人藝術(shù)。由于大型產(chǎn)品的開發(fā)通常由很多的人協(xié)同作戰(zhàn),如果開發(fā)工作者沒有樹立編寫高質(zhì)量程序代碼的理念,不遵循統(tǒng)一的編程規(guī)范,最終合到一起的程序其可讀性將較差。這不僅給代碼的理解帶來障礙,增加維護(hù)階段的工作量,同時不規(guī)范的代碼隱含錯誤和缺陷的可能性也比較大。由此造成的測試和維護(hù)成本會遠(yuǎn)遠(yuǎn)大于開發(fā)成本。BELL實(shí)驗(yàn)室的研究資料表明軟件錯誤中50%左右產(chǎn)生于代碼編寫階段,因此在代碼開發(fā)階段程序員自覺的建立編寫高質(zhì)量程序代碼的理念,能夠自覺遵循相關(guān)規(guī)范,將有效的降低軟件后期的測試和維護(hù)費(fèi)用。
在學(xué)習(xí)程序設(shè)計語言之初,就建立編寫高質(zhì)量程序代碼的理念,對學(xué)生來說,將是受益終生??梢宰寣W(xué)生在學(xué)習(xí)的過程中少走彎路,可以使學(xué)生在邁上工作崗位之初,有效降低個人成長周期,快速的適應(yīng)工作環(huán)境,融入開發(fā)團(tuán)隊,快速成長為一名優(yōu)秀的軟件開發(fā)工作者。
2 高級語言程序設(shè)計教學(xué)中滲透高質(zhì)量程序設(shè)計理念
2.1 在教學(xué)過程中明確高質(zhì)量程序設(shè)計的概念
在教學(xué)過程,要通過實(shí)例講解什么是高質(zhì)量的程序,讓學(xué)生了解軟件質(zhì)量屬性的概念。明確“正確性”只是反應(yīng)軟件質(zhì)量的因素之一,且運(yùn)行正確的軟件也不一定就是高質(zhì)量的軟件。軟件運(yùn)行正確,但是內(nèi)存消耗過大,運(yùn)行速度低,可移植性差,那此軟件實(shí)際應(yīng)用價值就會大打折扣,這依然不是一個高質(zhì)量的軟件。
軟件的質(zhì)量屬性可以分為兩大類:“功能性”與“非功能性”,非功能性的質(zhì)量屬性也稱為是軟件的“能力”。功能性屬性主要包括:正確性、健壯性和可靠性。非功能性屬性主要包括:性能、易用性、清晰性、安全性、可擴(kuò)展性、兼容性和可移植性等等。高級語言程序設(shè)計是大部分學(xué)生初次接觸軟件編程的課程,在教學(xué)過程中,要向?qū)W生明確,正確性、健壯性、易用性、清晰性等的質(zhì)量屬性在初學(xué)程序設(shè)計的時候就要掌握,可靠性、性能、安全性、兼容性等屬性會在數(shù)據(jù)結(jié)構(gòu)和操作系統(tǒng)等后續(xù)課程的教學(xué)中講授。讓學(xué)生理解高質(zhì)量程序設(shè)計的概念也是貫穿于計算機(jī)軟件課程教學(xué)的始終的,并且深刻理解高質(zhì)量的程序設(shè)計理念對專業(yè)知識的學(xué)習(xí)有深刻的促進(jìn)作用。
2.2 在教學(xué)過程中滲透高質(zhì)量程序設(shè)計理念
2.2.1 遵循編程規(guī)范,養(yǎng)成良好的編程習(xí)慣
在學(xué)習(xí)程序設(shè)計入門之處,就要循環(huán)代碼編程的規(guī)范。這些規(guī)范包括:命名規(guī)范、連接規(guī)范、文件結(jié)構(gòu)規(guī)范、代碼版式規(guī)范等等。俗話說,“沒有規(guī)矩,不成方圓”,高質(zhì)量代碼編寫也是同樣的道理。遵循一定的編程規(guī)范,養(yǎng)成良好的編程習(xí)慣,是成為優(yōu)秀程序員的先決條件。從程序設(shè)計的入門階段就鍛煉編寫規(guī)范干凈的程序代碼,可以在程序開發(fā)過程中及后續(xù)的程序維護(hù)過程中不斷受益。
具有良好編程風(fēng)格的代碼,版式美觀,具有較好的清晰度,為代碼的后期維護(hù)升級提供了較好的基礎(chǔ)。成熟的IT企業(yè)都有自己內(nèi)部的軟件編程規(guī)范,遵循共同的規(guī)范編寫出的各模塊的代碼,具有了更好的整合性,可以大大降低軟件整合、測試的費(fèi)用,提高軟件的整體質(zhì)量,降低軟件的開發(fā)成本。
2.2.2 掌握簡單的軟件測試技術(shù)
軟件測試是提高軟件質(zhì)量的重要手段。一個程序能夠正確的運(yùn)行一次,是否就證明程序是正確的呢?答案當(dāng)然是否定的。例如對于分支結(jié)構(gòu)的程序設(shè)計中,我們常用的測試方法,就是路徑覆蓋測試和邊界測試。我們至少要設(shè)計多個測試用例把程序的分支結(jié)構(gòu)的每一條分支語句都要覆蓋一遍,來檢測程序的正確性。而且還要對分支結(jié)構(gòu)的邊界值進(jìn)行必要的檢測,因?yàn)楹芏嗟腻e誤的產(chǎn)生就是發(fā)生在輸入輸出的邊界點(diǎn)上。如果這些測試用例都能正確執(zhí)行,這僅僅是檢查了代碼的正確性。
除此之外,還要檢查代碼的健壯性和容錯能力。對需求之內(nèi)的數(shù)據(jù)設(shè)計測試用例,還要對需求之外的數(shù)據(jù)設(shè)計合適的測試用例,檢查程序的健壯性。程序的健壯性是指在發(fā)生異常的情況下,例如一旦有用戶輸入了意外的數(shù)據(jù),則程序有無容錯能力,有無出錯的處理,程序還能否正常運(yùn)行的能力。這些都要通過測試來檢查程序的健壯性。
2.2.3 建立模塊化的編程思想
在第一門程序設(shè)計語言教學(xué)中,學(xué)生必須掌握自頂向下,逐步求精的軟件模塊化思想。其基本理念就是將一個大的程序按功能分割成一些小模塊。軟件模塊化設(shè)計就是現(xiàn)實(shí)生活中“分而治之”思想的具體體現(xiàn)。并且保證各模塊之間要高內(nèi)聚、低耦合、結(jié)構(gòu)清晰、接口簡單。這樣既可以實(shí)現(xiàn)模塊的復(fù)用,也易于維護(hù)和功能擴(kuò)充,縮短開發(fā)周期。
總之,在程序設(shè)計教學(xué)中,讓學(xué)生牢固樹立編寫高質(zhì)量程序代碼的理念是至關(guān)重要的,這不僅能夠提高教學(xué)質(zhì)量,而且為學(xué)生后續(xù)的學(xué)習(xí)和工作打好了堅實(shí)的基礎(chǔ)。
注釋
①林銳,韓永泉.高質(zhì)量程序設(shè)計指南——C++/C語言(第3版)[M].北京:電子工業(yè)出版社,2011.
②朱少民.軟件測試方法和技術(shù)[M].北京:清華大學(xué)出版社,2005.