版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章程序設計和軟件工程5.1程序設計語言5.2程序設計方法5.3軟件工程
5.1程序設計語言5.1.1程序的概念5.1.2程序設計語言的分類5.1.3程序設計語言的選擇
5.1程序設計語言5.1.1程序的概念
簡單地說,程序就是解決實際問題的操作步驟,它是一個有限的操作序列。例如,求a、b、c、d四個數(shù)的最大值,可以使用以下的步驟來完成這一任務:輸入a、b、c、d的值;比較a、b的大小,把較大值放入max;比較max與c的大小,把較大值重新放入max;比較max與d的大小,把較大值重新放入max;輸出max的值。顯然,如果程序是由人來執(zhí)行的,程序只要用自然語言來描述就行了,如果是由計算機來執(zhí)行的,則必須用計算機能夠接受和識別的計算機語言來描述。本章所說的程序就是用某種計算機語言描述的、可以用計算機能完成的操作指令序列。
5.1程序設計語言5.1.2程序設計語言的分類
根據(jù)程序設計語言發(fā)展的歷程,可將其大致分成四類:1.機器語言機器語言是用二進制代碼表示的、能被計算機直接識別和執(zhí)行的機器指令的集合,也就是處理器的指令系統(tǒng)。機器語言的優(yōu)點在于它能被計算機直接識別,運行速度快。2.匯編語言匯編語言是一種用助記符表示的仍然面向機器的計算機語言。匯編語言亦稱符號語言。3.高級語言這種與自然語言接近并能被計算機所接受和執(zhí)行的語言稱為高級語言。高級語言根據(jù)其發(fā)展歷程和應用領域,可分為以下幾類:(1)傳統(tǒng)的高級程序設計語言。(2)通用的結構化程序設計語言。(3)
專用語言。4.4GL語言4GL即第四代語言(Fourth-GenerationLanguage)。4GL是按計算機科學理論指導設計出來的結構化語言。4GL具有簡單易學、用戶界面良好、非過程化程度高、面向問題等特點,按照4GL的功能可以將它們劃分為:查詢語言和報表生成器、圖形語言、應用生成器和形式規(guī)格說明語言。
5.1程序設計語言5.1.3程序設計語言的選擇
不同語言有不同的優(yōu)勢,在進行程序設計時,選擇程序設計語言非常重要,若選擇了合適的語言,就能減少編碼的工作量,產生易讀、易測試、易維護的代碼,提高程序開發(fā)的效率。通常從以下因素來衡量某種程序設計語言是否適合特定的項目:
應用領域;
算法和計算復雜度;
軟件運行環(huán)境;用戶需求中關于性能方面的要求;
數(shù)據(jù)結構的復雜性;軟件開發(fā)人員的知識水平和心理因素等。5.2程序設計方法5.2.1程序設計的基本過程5.2.2結構化程序設計方法5.2.3面向對象程序設計方法
5.2程序設計方法5.2.1程序設計的基本過程
程序設計就是針對具體問題,使用某種程序設計語言編寫程序代碼來驅動計算機完成特定功能的過程。程序設計的基本過程如圖:其基本步驟如下:分析問題。確定要解決的問題,對要解決的問題進行調查分析,明確要實現(xiàn)的功能。確定解決方案。通過對問題的分析,找出其運算和變化規(guī)律,確定解決方案,建立數(shù)學模型。當一個問題有多個解決方案時,選擇適合計算機解決問題的最佳方案。設計算法。依據(jù)問題的解決方案確定數(shù)據(jù)結構和算法,并用適當?shù)墓ぞ呙枋鏊惴?。編寫程序。依?jù)算法描述,選擇一種合適的計算機語言編寫程序。調試和運行程序。通過反復調試和運行程序,找出程序中存在的錯誤,直到程序的運行效果達到預期目標。整理文檔。對解決問題的整個過程的相關資料進行整理,編寫程序使用說明書,生成規(guī)范的程序文檔。5.2程序設計方法5.2.2結構化程序設計方法
結構化程序設計的設計思想主要有三個方面:1.“自頂向下,逐步細化,模塊化”的設計過程具體包括以下兩個方面:(1)將一個大問題分解為若干子問題(模塊)組成的層次結構。(2)將模塊細化成更小、更簡單的模塊,直至能容易給出模塊的一系列處理步驟,并能由程序設計語言的語句來實現(xiàn)。2.把程序結構限制為三種基本結構(1)順序結構:最基本、最普通的程序結構,只要按照解決問題的順序寫出相應的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。如圖5.3所示,先執(zhí)行A再執(zhí)行B。5.2程序設計方法5.2.2結構化程序設計方法
(2)選擇結構:又稱“分支結構”,如圖5.4所示,其特點是先進行一定的條件判斷,根據(jù)判斷的結果從兩組操作中選擇一組來執(zhí)行。
(3)循環(huán)結構:其特點是在一定的條件下重復執(zhí)行一組操作。5.2程序設計方法5.2.2結構化程序設計方法
3.限制goto語句的濫用因為goto語句是無條件轉移語句,使用goto語句會破壞程序的結構,降低程序的可讀性,因此不提倡使用goto語句。#include<stdio.h>int
n=0;int
main(void)
{
printf("input
a
string:
");
loop:
if
(getchar()!='\n')
{
n++;
goto
loop;
}
printf("output:
%d\n",n);}5.2程序設計方法5.2.3面向對象程序設計方法
1.面向對象的基本概念類和對象是面向對象程序設計的基本概念,繼承性、封裝性和多態(tài)性是面向對象程序的基本特征。2.面向對象程序設計的思想面向對象程序設計的思想主要體現(xiàn)在以下幾方面:(1)從現(xiàn)實世界中客觀存在的事物(對象)出發(fā),盡可能運用人類自然的思維方式去構造軟件系統(tǒng)(2)將事物的本質特征抽象后表示為軟件系統(tǒng)中的類和對象,以此作為構造軟件系統(tǒng)的單位
(3)使軟件系統(tǒng)能直接映射問題,并保持問題中事物及其相互關系的本質。3.面向對象程序設計的步驟面向對象程序設計的過程包括以下步驟:(1)面向對象分析(ObjectOrientedAnalysis,OOA)(2)面向對象設計(ObjectOrientedDesign,OOD)(3)面向對象編程(ObjectOrientedProgramming,OOP)(4)面向對象測試(ObjectOrientedTest,OOT)(5)面向對象維護(ObjectOrientedSoftwareMaintenance,OOSM)
5.3軟件工程5.3.1軟件危機5.3.2軟件工程5.3.3軟件生命周期5.3.4軟件工程方法學5.3.5軟件測試
5.3軟件工程5.3.1軟件危機
1.軟件危機的主要表現(xiàn)軟件開發(fā)進度難以預測。(2)軟件開發(fā)成本難以控制,投資一再追加,令人難于置信。(3)
用戶對產品功能難以滿足,開發(fā)人員和用戶之間很難溝通、矛盾很難統(tǒng)一。(4)
軟件產品質量無法保證,系統(tǒng)中的錯誤難以消除。(5)
軟件產品難以維護。(6)
軟件缺少適當?shù)奈臋n資料。2.軟件危機的主要原因用戶需求不明確。(2)
缺乏正確的理論指導,缺乏有力的方法學和工具方面的支持。(3)
軟件開發(fā)規(guī)模越來越大。(4)
軟件開發(fā)復雜度越來越高。
5.3軟件工程5.3.2軟件工程
1.軟件工程的定義
一是IEEE有1993年給出的定義:軟件工程是將系統(tǒng)化的、嚴格約束的、可量化的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中的方法的研究。二是《計算機科學技術百科全書》對軟件工程的定義:軟件工程是應用計算機科學、數(shù)學、邏輯學及管理科學等原理,開發(fā)軟件的工程。2.軟件工程的特殊性
軟件的特性與其他工程領域特性之間存在著本質上的不同。這些差別己經(jīng)影響了軟件工程項目,導致其花費的增加、推遲交付軟件產品和軟件產品不能滿足用戶的需求等后果。這些差別主要體現(xiàn)在:(1)處理通過常用的預先定制的構件來構建系統(tǒng)的能力(2)缺少度量技術
5.3軟件工程5.3.3軟件生命周期
2.傳統(tǒng)的開發(fā)階段
軟件作為一種工業(yè)化產品,也有其生命周期。軟件生命周期包括從提出軟件產品開始,直到該軟件產品被淘汰的全過程。1.周期是個整體軟件生命周期的傳統(tǒng)的開發(fā)階段的主要步驟是需求分析、設計、實現(xiàn)和測試
圖5.7表示的是軟件的生命周期,即軟件一旦開發(fā)完成,它就進入了一個既被使用又被維護的循環(huán),這個循環(huán)將永不停止,直至軟件生命周期結束。
5.3軟件工程5.3.4軟件工程方法學
瀑布模型是最經(jīng)典的并獲得最廣泛應用的軟件過程模型。
5.3軟件工程5.3.5軟件測試
軟件測試是保證軟件質量的重要手段,其主要過程涵蓋了軟件生命周期的全過程,包括需求定義階段的需求測試、編碼階段的單元測試、集成測試,以及后期的確認測試、系統(tǒng)測試,驗證軟件是否合格、能否交付用戶使用等。1.軟件測試的原則(1)盡早不斷測試的原則。(2)IPO原則(InProcessOut)。(3)獨立測試原則。(4)合法和非合法原則。(5)錯誤群集原則。(6)嚴格性原則。(7)覆蓋原則。(8)定義功能測試原則。(9)回歸測試原則。(10)錯誤不可避免原則。
5.3軟件工程5.3.5軟件測試
2.軟件測試方法軟件測試方法的分類有很多種,可以按不同的標準對其進行分類。
以測試過程中程序執(zhí)行狀態(tài)為依據(jù)可分為靜態(tài)測試(StaticTesting,ST)和動態(tài)測試(DynamicTesting,DT)。靜態(tài)測試的含義是被測程序不運行,只依靠分析或檢查源程序的語句、結構、過程等來檢查程序是否有錯誤。動態(tài)測試與靜態(tài)測試相對應,是通過運行被測試程序,對得到的運行結果與預期的結果進行比較分析,同時分析運行效率和健壯性能等。
以具體實現(xiàn)算法細節(jié)和系統(tǒng)內部結構的相關情況為根據(jù)可分黑盒測試、白盒測試和灰盒測試。黑盒測試被測程序看成是一個無法打開的黑盒,而工作人員在不考慮任何程序內部結構和特性的條件下,根據(jù)需求規(guī)格說明書設計測試實例,并檢查程序的功能是否能夠按照規(guī)范說明準確無誤的運行。其主要是對軟件界面和軟件功能進行測試。白盒測試從程序結構方面出發(fā)對測試用例進行設計,主要是借助程序內部的邏輯和相關信息,通過檢測內部動作是否按照設計規(guī)格說明書的設定進行,檢查每一條通路能否正常工作,主要用于檢查各個邏輯結構是否合理,對應的模塊獨立路徑是否正常以及內部結構是否有效?;液袦y試則介于黑盒測試和白盒測試之間。
5.3軟件工程5.3.5軟件測試
3.軟件測試的實施軟件測試過程分4個階段,即單元測試、集成測試、系統(tǒng)測試和確認測試。單元測試主要是對該軟件的模塊進行測試,通過測試以發(fā)現(xiàn)該模塊的實際功能出現(xiàn)不符合的情況和編碼錯誤。集成測試是軟件測試的第二階段,在這個階段,通常要對已經(jīng)嚴格按照程序設計要求和標準組裝起來的模塊同時進行測試。系統(tǒng)測試采用黑盒法來進行測試的,以此來檢查該系統(tǒng)是否符合軟件需求。本階段的主要測試內容包括健壯性測試、性能測試、功能測試、安裝或反安裝測試、用戶界面測試、壓力測試、可靠性及安全性測試等。驗收測試是最后一個階段的測試操作,是在軟件產品投入正式運行前所要進行的測試工作。驗收測試的主要目標是為向用戶展示所開發(fā)出來的軟件符合預定的要求和有關標準,并驗證軟件實際工作的有效性和可靠性,確保用戶能用該軟件順利完成既定的任務和功能。
5.4設計模式
設計模式(DesignPattern)是一套被反
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版部編歷史九年級下冊《第5課 第二次工業(yè)革命》聽課評課記錄
- 湘教版數(shù)學九年級上冊3.4.1《相似三角的判定》(第1課時)聽評課記錄
- 人教部編版九年級歷史下冊聽課評課記錄:第4課《日本明治維新》
- 北師大版歷史八年級上冊第2課《第二次鴉片戰(zhàn)爭》聽課評課記錄
- 蘇教版四年級數(shù)學上冊期末復習口算練習題一
- 蘇教版二年級數(shù)學下冊《兩位數(shù)減兩位數(shù)的口算》教學設計
- 上市或擬上市公司獨立董事聘任合同范本
- 孵化器委托運營協(xié)議書范本
- 企業(yè)承包合同范本
- 眾創(chuàng)空間入駐服務合同范本
- 2023年菏澤醫(yī)學專科學校單招綜合素質模擬試題及答案解析
- 鋁合金門窗設計說明
- 常見食物的嘌呤含量表匯總
- 小學數(shù)學-三角形面積計算公式的推導教學設計學情分析教材分析課后反思
- 人教版數(shù)學八年級下冊同步練習(含答案)
- SB/T 10752-2012馬鈴薯雪花全粉
- 2023年湖南高速鐵路職業(yè)技術學院高職單招(英語)試題庫含答案解析
- 秦暉社會主義思想史課件
- 積累運用表示動作的詞語課件
- 機動車登記證書英文證書模板
- 質量管理體系基礎知識培訓-2016
評論
0/150
提交評論