劉志強
(科爾沁藝術(shù)職業(yè)學(xué)院,內(nèi)蒙古 通遼 028000)
人們總是希望編制清晰、緊湊、高效的程序,但這些特性在編碼時往往互相矛盾,一般應(yīng)依次考慮下列原則:
(1)程序的正確性與可靠性
程序的價值首先在于能夠運行并正確地解決問題,即在預(yù)定的條件下輸入必要的數(shù)據(jù)后,能得到正確的輸出結(jié)果。其次,還要求程序必須穩(wěn)定可靠,在遇到意外情況時能自動進(jìn)行適當(dāng)?shù)奶幚怼@?,程序能識別由于誤操作輸入的不合理數(shù)據(jù),并能采取適當(dāng)?shù)膶Σ撸源_保程序的運行不受干擾??煽啃灾傅氖浅绦蛘9ぷ鞯哪芰?,一般用平均無故障時間來衡量。
(2)程序的可讀性
現(xiàn)代計算機的應(yīng)用程序往往由若干人分工合作完成。某個人編寫的程序不僅自己能讀懂,還要使其他人也能夠讀懂,這樣才便于整個程序系統(tǒng)的調(diào)試、組裝。為此,應(yīng)盡可能在程序中關(guān)鍵的位置上使用注釋語句,說明程序模塊的功能、變量的作用等。
(3)程序的可維護(hù)性
程序運行時可能出現(xiàn)故障。出現(xiàn)故障后檢查故障的原因、確定程序中的錯誤位置、修正程序中的錯誤等操作需要一定的時間。程序可維護(hù)性的優(yōu)劣就是以這類操作所需時間的長短來體現(xiàn)的。
(4)程序的重用
程序的重用是降低軟件開發(fā)成本、提高軟件質(zhì)量的有效途徑,盡可能編寫可重用的模塊,減少重復(fù)的勞動。
(5)程序的可移植性
程序的可移植性指的是在某一種型號的計算機上編寫的程序,轉(zhuǎn)到其它型號的計算機上運行的能力。
(6)程序的可擴充性
程序的可擴充性指的是在不改變整體結(jié)構(gòu)的前提下,經(jīng)過某些處理使程序的功能有所擴充。
(7)程序的效率
程序的效率主要是指程序運行時所占有的系統(tǒng)資源與程序本身處理功能的比率。
程序結(jié)構(gòu)的主要原則:
(1)使用語言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。
(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個入口和一個出口。
(3)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實現(xiàn)。
(4)嚴(yán)格控制GOTO語句。
良好的程序設(shè)計風(fēng)格是軟件開發(fā)人員應(yīng)該具備的基本素質(zhì)。良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯,也有助于軟件開發(fā)人員之間的協(xié)作。
(1)源程序文檔化。正確、適當(dāng)?shù)厥褂米⑨專‘?dāng)?shù)厥褂脴?biāo)識符,完整地編制文檔。
(2)數(shù)據(jù)說明的次序應(yīng)標(biāo)準(zhǔn)化,對于復(fù)雜數(shù)據(jù)結(jié)構(gòu),應(yīng)說明實現(xiàn)這個數(shù)據(jù)結(jié)構(gòu)的方法和特點。
(3)語句結(jié)構(gòu)應(yīng)該簡單而直接。如不要為了節(jié)省空間而把多個語句寫在同一行。
(4)輸入/輸出。對所有輸入輸出數(shù)據(jù)都進(jìn)行檢驗,對輸入數(shù)據(jù),說明其可用的選擇或邊界值;輸出的內(nèi)容應(yīng)保持格式一致。
(5)盡可能提高程序的效率。
采用模塊化程序設(shè)計可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計,也容易閱讀和理解。因為程序錯誤通常局限于有關(guān)的模塊以及它們之間的接口之中,所以模塊化程序設(shè)計使軟件容易測試和調(diào)試,有助于提高軟件的可靠性。
根據(jù)人們解決問題的一般規(guī)律,將一個復(fù)雜的問題分解成若干個較小的問題,能夠減小解題所需要的總工作量。
每個模塊是一個特定子功能,模塊之間僅僅交換那些為完成系統(tǒng)功能必須交換的信息,相對于其它模塊獨立。模塊的獨立程度可以用兩個定性標(biāo)準(zhǔn)來度量,一是內(nèi)聚,二是耦合。
4.2.1 內(nèi)聚
(1)偶然性內(nèi)聚
模塊內(nèi)各成分在功能上互不相關(guān),即使有關(guān)系,也很松散。
(2)邏輯性內(nèi)聚
模塊完成的各項任務(wù)邏輯上相關(guān),通常由若干個邏輯功能相似的成分組成。
(3)時間性內(nèi)聚
模塊包含的各項任務(wù)必須在同一時間段內(nèi)執(zhí)行。
(4)過程性內(nèi)聚
一個模塊內(nèi)處理的元素是相關(guān)的,而且必須按照某一特定次序執(zhí)行。
(5)通信性內(nèi)聚
模塊內(nèi)部的各成分都使用同一種輸入數(shù)據(jù),或產(chǎn)生同一個輸出數(shù)據(jù),它們靠公用數(shù)據(jù)聯(lián)系在一起。
(6)順序性內(nèi)聚
模塊內(nèi)各組成部分必須順序執(zhí)行,前一部分的輸出就是后一部分的輸入。
(7)功能性內(nèi)聚
模塊內(nèi)所有成分結(jié)合在一起,用于完成一個單一的功能。
內(nèi)聚度越高越好,設(shè)計程序時,應(yīng)該能夠識別內(nèi)聚度的高低,盡可能地提高模塊的內(nèi)聚度,從而獲得較高的模塊獨立性。
4.2.2 耦合
(1)非直接耦合
兩個模塊之間任何一個都能夠不依賴于其它模塊而獨立工作,相互之間沒有信息傳遞。
(2)數(shù)據(jù)耦合
如果模塊之間通過參數(shù)交換信息,而信息僅限于數(shù)據(jù),則構(gòu)成數(shù)據(jù)耦合。
(3)特征耦合
模塊之間不僅僅交換數(shù)據(jù),而且交換數(shù)據(jù)結(jié)構(gòu)。
(4)控制耦合
模塊間傳遞的信息中含有控制信息。
(5)外部耦合
若干個模塊與同一個外部環(huán)境關(guān)聯(lián)。
(6)公共耦合
若干個模塊訪問同一個全局性的數(shù)據(jù)結(jié)構(gòu)。
(7)內(nèi)容耦合
兩個模塊之間出現(xiàn)一個模塊使用另一個模塊內(nèi)部的數(shù)據(jù)或控制信息,或者一個模塊直接轉(zhuǎn)移到另一個模塊的內(nèi)部。
在程序設(shè)計時應(yīng)追求盡可能松散耦合。因為耦合松散的程序?qū)δK的設(shè)計、測試和維護(hù)相對獨立。模塊間的耦合程度直接影響程序的可理解性、可測試性和可維護(hù)性。
質(zhì)量是軟件需求方最關(guān)心的問題。軟件設(shè)計成功的標(biāo)準(zhǔn)是用戶使用你所設(shè)計的軟件可以很容易完成要完成的任務(wù)。軟件的質(zhì)量因素有很多,主要有以下方面:
正確性與精確性:軟件開發(fā)人員要為“正確”、“精確”四個字竭盡全力。
性能與效率:用戶都希望軟件的運行速度高些,并且占用資源少些。
易用性:由于人們的專業(yè)領(lǐng)域不同、操作習(xí)慣不同等原因,對軟件的感覺與要求差異很大,軟件開發(fā)人員要多從用戶的角度來考慮問題。
可理解性與簡潔性:編程時還要注意不可濫用技巧,應(yīng)該用自然的方式編程,簡潔是一種美。
程序的正確性是保證程序質(zhì)量的前提。軟件開發(fā)人員的工作是創(chuàng)建正確的、完全符合要求的代碼。保證代碼的正確性是軟件開發(fā)人員的責(zé)任,因此,軟件開發(fā)人員在把代碼提交給編譯器之前必須徹底地檢查代碼的正確性。采用一個良好的定義過程是第一道防線,其次是進(jìn)行檢查。質(zhì)量與生產(chǎn)率之間有著內(nèi)在的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提。
[1]張忠林,王堅生,蘭麗.軟件項目管理思想在“軟件工程”實踐教學(xué)中的應(yīng)用[J].計算機教育,2010,(05):157-160.
[2]王美華,張剛,丁京柱.面向?qū)ο蟮某绦蛟O(shè)計[J].河北工業(yè)科技.1999,(12):26-30.
[3]王華勝,王停.面向?qū)ο蟮能浖こ谭椒╗J].河北省科學(xué)院學(xué)報.2003,(05):103-106.