1. 程式人生 > >《軟體工程》-程式編碼

《軟體工程》-程式編碼

【前言】
1.瞭解程式設計語言的分類和特點。
2.瞭解結構化程式設計是什麼。
3.什麼是結構化程式設計原則?
4.瞭解程式設計風格的相關內容。
5.掌握度量程式複雜性的方法。
【內容】
1.程式設計語言分類
1)程式設計語言的分類可分為組合語言和高階語言二大類。
(1)機器語言、彙編:
第一、第二代計算機用
(2)高階語言
同一個問題,高階語言編碼長度可比彙編少3-7倍;
按照軟體工程的分類,語言的發展大致分為4代、3階段:
在這裡插入圖片描述
2)從語言的內在特徵看,高階語言可分為:
系統實現語言、靜態高階語言、塊結構高階語言和動態高階語言四大類。
2.語言的選擇
(1)應用領域的不同決定選擇的語言


在這裡插入圖片描述
(2)系統使用者的要求決定
使用者使用他們熟悉的語言。
(3)可以使用的編譯程式
執行目標系統的環境中可以提供的編譯程式往往限制了對語言的選擇。
(4)程式設計師的經驗和知識(程式設計者對語言的熟悉程度
(5)軟體可移植性要求
(6)當工程規模很大時,而又沒有完全合適的語言,可編一個專用的語言。
(7)演算法與計算機複雜性、軟體的可靠性
(8)資料結構的複雜性,軟體的可維護性
(9)效率的考慮(處理器、儲存器、輸入和輸出)
(10)瞭解語言的發展前景

3.語言選擇的原則
(1)最少的工作量原則
(2)最少的技巧性原則
(3)最少錯誤原則
(4)最少維護原則
(5)減少記憶原則
4.程式編碼原則

(1)先求正確後求快
(2)先求清晰後求快
(3)求快不忘保持程式正確
(4)保持程式整潔以求快
(5)不要因效率而犧牲清晰
5.好程式標準
(1)易於測試和除錯
(2)易於維護
(3)易於修改
(4)設計簡單
(5)高效率
據統計,一個典型的程式的50%的執行時間被3%的語句所佔用,故這部分程式碼的效率很重要。
6.結構化程式設計
結構化程式設計主要包括兩方面:
(1)在編寫程式時,強調使用幾種基本控制結構(順序、選擇、迴圈)
(2)在程式設計過程中,儘量採用自頂向下和逐步細化的原則,由粗到細,一步步展開。
7.結構化程式設計的主要原則
(1)使用語言中的順序、選擇、重複等有限的基本控制結構表示程式邏輯;
(2)選用的控制結構只准許有一個入口和一個出口
(3)複雜結構應該用基本控制結構進行組合巢狀來實現。
8.程式設計風格

程式實際上也是一種供人閱讀的文章,有一個文章的風格問題。應該使程式具有良好的風格。
(1)源程式文件化
識別符號的命名:注意不要和關鍵字同名
安排註釋:給閱讀的人提供方便。
程式的視覺組織:佈局
(2)資料說明
為了使程式中資料說明更易於理解和維護,必須注意以下幾點:
a.資料說明的次序應當規範化
資料說明次序規範化,使資料屬性容易查詢,也有利於測試,排錯和維護。
b.說明語句中變數安排有序化
當多個變數名在一個說明語句中說明時,應當對這些變數按字母的順序排列。
c.使用註釋說明覆雜資料結構
如果設計了一個複雜的資料結構,應當使用註釋來說明在程式實現時這個資料結構的固有特點。
(3)語句結構
語句構造力求簡單,直接,不能為了片面追求效率而使語句複雜化。
1在一行內只寫一條語句
2程式編寫首先應當考慮清晰性
3程式要能直截了當地說明程式設計師的用意。
4除非對效率有特殊的要求,程式編寫要做到清晰第一,效率第二。
5首先要保證程式正確,然後才能提高速度。
6避免使用臨時變數而使可讀性下降。
7讓編譯程式做簡單的優化。
8儘可能使用庫函式。
9避免不必要的轉移。同時如果能保持程式可讀性,則不必用GOTO語句。
10儘量只採用三種基本的控制結構來編寫程式。
11避免使用空的ELSE語句和IF…THEN IF…的語句。這種結構容易使讀者產生誤解。
12避免採用過於複雜的條件測試
13儘量減少使用“否定”條件的條件語句。
14儘可能用通俗易懂的偽碼來描述程式的流程,然後再翻譯成必須使用的語言。
15資料結構要有利於程式的簡化。
16要模組化。
17利用資訊隱蔽,確保每一個模組的獨立性。
18從資料出發去構造程式。
19不要修補不好的程式,要重新編寫。
20對太大的程式,要分塊編寫、測試,然後再整合。
(4)輸入/輸出方法
輸入和輸出資訊是與使用者的使用直接相關的。輸入和輸出的方式和格式應當儘可能方便使用者的使用。
9.程式設計質量評價
正確性
(1)程式中沒有語法錯誤;
(2)程式執行時沒有發現明確的執行錯誤;
(3)程式中沒有不適當的語句;
(4)用有效的測試資料,得到程式的正確結果;
(5)用無效的測試資料,得到程式的正確結果;
(6)用任何可能的資料,使程式在執行時得到正確的結果。
結構清晰性
(1)是否用三種結構化格式表示程式的控制邏輯
(2)是否有一個入口,一個出口
(3)是否嚴格控制GOTO語句
易修改性
易讀性
簡單性

10.程式複雜性度量
程式複雜性主要指模組內程式的複雜性。
一.方法
(1)程式碼行度量法
方法的基本考慮是統計一個程式模組的原始碼行數目,並以原始碼行數作為程式複雜性的度量。
(2)McCabe度量法
又稱為環路複雜性度量,是一種基於程式控制流的複雜性度量方法。
說明:環路複雜度取決於程式控制結構的複雜度;環路複雜度是可加的;McCabe建議,對於複雜度超過10的程式,應分為幾個小程式,以減少程式中的錯誤。
二.計算方法
1.計算環路複雜性的方法
根據圖論,在一個強連通的有向圖G中,環的個數有以下公式給出
V(G)= m - n + p
其中,V(G)是有向圖G中環路個數,m是圖G弧數,n是圖G中結點數,p是圖G中強連通分量個數。
2.Halstead的軟體科學方法
Halstead軟體科學研究確定計算機軟體開發中的一些定量規律,它採用以下一組基本的度量值。
程式長令n1表示程式中不同運算子的個數,令n2表示程式中不同運算物件的個數,令H表示“程式長度”,則有
H = n1log2n1+n2log2n2
這裡,H是程式長度的預測值,它不等於程式中語句個數。
三.計算
1.程式量
在這裡插入圖片描述
2.程式量比率
在這裡插入圖片描述
3.程式設計師工作量
E = V / L
4.程式的潛在錯誤
在這裡插入圖片描述