《計(jì)算機(jī)導(dǎo)論》課件-計(jì)算機(jī)導(dǎo)論第五章_第1頁
《計(jì)算機(jī)導(dǎo)論》課件-計(jì)算機(jī)導(dǎo)論第五章_第2頁
《計(jì)算機(jī)導(dǎo)論》課件-計(jì)算機(jī)導(dǎo)論第五章_第3頁
《計(jì)算機(jī)導(dǎo)論》課件-計(jì)算機(jī)導(dǎo)論第五章_第4頁
《計(jì)算機(jī)導(dǎo)論》課件-計(jì)算機(jī)導(dǎo)論第五章_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章程序設(shè)計(jì)和軟件工程5.1程序設(shè)計(jì)語言5.2程序設(shè)計(jì)方法5.3軟件工程

5.1程序設(shè)計(jì)語言5.1.1程序的概念5.1.2程序設(shè)計(jì)語言的分類5.1.3程序設(shè)計(jì)語言的選擇

5.1程序設(shè)計(jì)語言5.1.1程序的概念

簡單地說,程序就是解決實(shí)際問題的操作步驟,它是一個有限的操作序列。例如,求a、b、c、d四個數(shù)的最大值,可以使用以下的步驟來完成這一任務(wù):輸入a、b、c、d的值;比較a、b的大小,把較大值放入max;比較max與c的大小,把較大值重新放入max;比較max與d的大小,把較大值重新放入max;輸出max的值。顯然,如果程序是由人來執(zhí)行的,程序只要用自然語言來描述就行了,如果是由計(jì)算機(jī)來執(zhí)行的,則必須用計(jì)算機(jī)能夠接受和識別的計(jì)算機(jī)語言來描述。本章所說的程序就是用某種計(jì)算機(jī)語言描述的、可以用計(jì)算機(jī)能完成的操作指令序列。

5.1程序設(shè)計(jì)語言5.1.2程序設(shè)計(jì)語言的分類

根據(jù)程序設(shè)計(jì)語言發(fā)展的歷程,可將其大致分成四類:1.機(jī)器語言機(jī)器語言是用二進(jìn)制代碼表示的、能被計(jì)算機(jī)直接識別和執(zhí)行的機(jī)器指令的集合,也就是處理器的指令系統(tǒng)。機(jī)器語言的優(yōu)點(diǎn)在于它能被計(jì)算機(jī)直接識別,運(yùn)行速度快。2.匯編語言匯編語言是一種用助記符表示的仍然面向機(jī)器的計(jì)算機(jī)語言。匯編語言亦稱符號語言。3.高級語言這種與自然語言接近并能被計(jì)算機(jī)所接受和執(zhí)行的語言稱為高級語言。高級語言根據(jù)其發(fā)展歷程和應(yīng)用領(lǐng)域,可分為以下幾類:(1)傳統(tǒng)的高級程序設(shè)計(jì)語言。(2)通用的結(jié)構(gòu)化程序設(shè)計(jì)語言。(3)

專用語言。4.4GL語言4GL即第四代語言(Fourth-GenerationLanguage)。4GL是按計(jì)算機(jī)科學(xué)理論指導(dǎo)設(shè)計(jì)出來的結(jié)構(gòu)化語言。4GL具有簡單易學(xué)、用戶界面良好、非過程化程度高、面向問題等特點(diǎn),按照4GL的功能可以將它們劃分為:查詢語言和報(bào)表生成器、圖形語言、應(yīng)用生成器和形式規(guī)格說明語言。

5.1程序設(shè)計(jì)語言5.1.3程序設(shè)計(jì)語言的選擇

不同語言有不同的優(yōu)勢,在進(jìn)行程序設(shè)計(jì)時,選擇程序設(shè)計(jì)語言非常重要,若選擇了合適的語言,就能減少編碼的工作量,產(chǎn)生易讀、易測試、易維護(hù)的代碼,提高程序開發(fā)的效率。通常從以下因素來衡量某種程序設(shè)計(jì)語言是否適合特定的項(xiàng)目:

應(yīng)用領(lǐng)域;

算法和計(jì)算復(fù)雜度;

軟件運(yùn)行環(huán)境;用戶需求中關(guān)于性能方面的要求;

數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性;軟件開發(fā)人員的知識水平和心理因素等。5.2程序設(shè)計(jì)方法5.2.1程序設(shè)計(jì)的基本過程5.2.2結(jié)構(gòu)化程序設(shè)計(jì)方法5.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)方法

5.2程序設(shè)計(jì)方法5.2.1程序設(shè)計(jì)的基本過程

程序設(shè)計(jì)就是針對具體問題,使用某種程序設(shè)計(jì)語言編寫程序代碼來驅(qū)動計(jì)算機(jī)完成特定功能的過程。程序設(shè)計(jì)的基本過程如圖:其基本步驟如下:分析問題。確定要解決的問題,對要解決的問題進(jìn)行調(diào)查分析,明確要實(shí)現(xiàn)的功能。確定解決方案。通過對問題的分析,找出其運(yùn)算和變化規(guī)律,確定解決方案,建立數(shù)學(xué)模型。當(dāng)一個問題有多個解決方案時,選擇適合計(jì)算機(jī)解決問題的最佳方案。設(shè)計(jì)算法。依據(jù)問題的解決方案確定數(shù)據(jù)結(jié)構(gòu)和算法,并用適當(dāng)?shù)墓ぞ呙枋鏊惴?。編寫程序。依?jù)算法描述,選擇一種合適的計(jì)算機(jī)語言編寫程序。調(diào)試和運(yùn)行程序。通過反復(fù)調(diào)試和運(yùn)行程序,找出程序中存在的錯誤,直到程序的運(yùn)行效果達(dá)到預(yù)期目標(biāo)。整理文檔。對解決問題的整個過程的相關(guān)資料進(jìn)行整理,編寫程序使用說明書,生成規(guī)范的程序文檔。5.2程序設(shè)計(jì)方法5.2.2結(jié)構(gòu)化程序設(shè)計(jì)方法

結(jié)構(gòu)化程序設(shè)計(jì)的設(shè)計(jì)思想主要有三個方面:1.“自頂向下,逐步細(xì)化,模塊化”的設(shè)計(jì)過程具體包括以下兩個方面:(1)將一個大問題分解為若干子問題(模塊)組成的層次結(jié)構(gòu)。(2)將模塊細(xì)化成更小、更簡單的模塊,直至能容易給出模塊的一系列處理步驟,并能由程序設(shè)計(jì)語言的語句來實(shí)現(xiàn)。2.把程序結(jié)構(gòu)限制為三種基本結(jié)構(gòu)(1)順序結(jié)構(gòu):最基本、最普通的程序結(jié)構(gòu),只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。如圖5.3所示,先執(zhí)行A再執(zhí)行B。5.2程序設(shè)計(jì)方法5.2.2結(jié)構(gòu)化程序設(shè)計(jì)方法

(2)選擇結(jié)構(gòu):又稱“分支結(jié)構(gòu)”,如圖5.4所示,其特點(diǎn)是先進(jìn)行一定的條件判斷,根據(jù)判斷的結(jié)果從兩組操作中選擇一組來執(zhí)行。

(3)循環(huán)結(jié)構(gòu):其特點(diǎn)是在一定的條件下重復(fù)執(zhí)行一組操作。5.2程序設(shè)計(jì)方法5.2.2結(jié)構(gòu)化程序設(shè)計(jì)方法

3.限制goto語句的濫用因?yàn)間oto語句是無條件轉(zhuǎn)移語句,使用goto語句會破壞程序的結(jié)構(gòu),降低程序的可讀性,因此不提倡使用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程序設(shè)計(jì)方法5.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)方法

1.面向?qū)ο蟮幕靖拍铑惡蛯ο笫敲嫦驅(qū)ο蟪绦蛟O(shè)計(jì)的基本概念,繼承性、封裝性和多態(tài)性是面向?qū)ο蟪绦虻幕咎卣鳌?.面向?qū)ο蟪绦蛟O(shè)計(jì)的思想面向?qū)ο蟪绦蛟O(shè)計(jì)的思想主要體現(xiàn)在以下幾方面:(1)從現(xiàn)實(shí)世界中客觀存在的事物(對象)出發(fā),盡可能運(yùn)用人類自然的思維方式去構(gòu)造軟件系統(tǒng)(2)將事物的本質(zhì)特征抽象后表示為軟件系統(tǒng)中的類和對象,以此作為構(gòu)造軟件系統(tǒng)的單位

(3)使軟件系統(tǒng)能直接映射問題,并保持問題中事物及其相互關(guān)系的本質(zhì)。3.面向?qū)ο蟪绦蛟O(shè)計(jì)的步驟面向?qū)ο蟪绦蛟O(shè)計(jì)的過程包括以下步驟:(1)面向?qū)ο蠓治觯∣bjectOrientedAnalysis,OOA)(2)面向?qū)ο笤O(shè)計(jì)(ObjectOrientedDesign,OOD)(3)面向?qū)ο缶幊蹋∣bjectOrientedProgramming,OOP)(4)面向?qū)ο鬁y試(ObjectOrientedTest,OOT)(5)面向?qū)ο缶S護(hù)(ObjectOrientedSoftwareMaintenance,OOSM)

5.3軟件工程5.3.1軟件危機(jī)5.3.2軟件工程5.3.3軟件生命周期5.3.4軟件工程方法學(xué)5.3.5軟件測試

5.3軟件工程5.3.1軟件危機(jī)

1.軟件危機(jī)的主要表現(xiàn)軟件開發(fā)進(jìn)度難以預(yù)測。(2)軟件開發(fā)成本難以控制,投資一再追加,令人難于置信。(3)

用戶對產(chǎn)品功能難以滿足,開發(fā)人員和用戶之間很難溝通、矛盾很難統(tǒng)一。(4)

軟件產(chǎn)品質(zhì)量無法保證,系統(tǒng)中的錯誤難以消除。(5)

軟件產(chǎn)品難以維護(hù)。(6)

軟件缺少適當(dāng)?shù)奈臋n資料。2.軟件危機(jī)的主要原因用戶需求不明確。(2)

缺乏正確的理論指導(dǎo),缺乏有力的方法學(xué)和工具方面的支持。(3)

軟件開發(fā)規(guī)模越來越大。(4)

軟件開發(fā)復(fù)雜度越來越高。

5.3軟件工程5.3.2軟件工程

1.軟件工程的定義

一是IEEE有1993年給出的定義:軟件工程是將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中的方法的研究。二是《計(jì)算機(jī)科學(xué)技術(shù)百科全書》對軟件工程的定義:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。2.軟件工程的特殊性

軟件的特性與其他工程領(lǐng)域特性之間存在著本質(zhì)上的不同。這些差別己經(jīng)影響了軟件工程項(xiàng)目,導(dǎo)致其花費(fèi)的增加、推遲交付軟件產(chǎn)品和軟件產(chǎn)品不能滿足用戶的需求等后果。這些差別主要體現(xiàn)在:(1)處理通過常用的預(yù)先定制的構(gòu)件來構(gòu)建系統(tǒng)的能力(2)缺少度量技術(shù)

5.3軟件工程5.3.3軟件生命周期

2.傳統(tǒng)的開發(fā)階段

軟件作為一種工業(yè)化產(chǎn)品,也有其生命周期。軟件生命周期包括從提出軟件產(chǎn)品開始,直到該軟件產(chǎn)品被淘汰的全過程。1.周期是個整體軟件生命周期的傳統(tǒng)的開發(fā)階段的主要步驟是需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測試

圖5.7表示的是軟件的生命周期,即軟件一旦開發(fā)完成,它就進(jìn)入了一個既被使用又被維護(hù)的循環(huán),這個循環(huán)將永不停止,直至軟件生命周期結(jié)束。

5.3軟件工程5.3.4軟件工程方法學(xué)

瀑布模型是最經(jīng)典的并獲得最廣泛應(yīng)用的軟件過程模型。

5.3軟件工程5.3.5軟件測試

軟件測試是保證軟件質(zhì)量的重要手段,其主要過程涵蓋了軟件生命周期的全過程,包括需求定義階段的需求測試、編碼階段的單元測試、集成測試,以及后期的確認(rèn)測試、系統(tǒng)測試,驗(yàn)證軟件是否合格、能否交付用戶使用等。1.軟件測試的原則(1)盡早不斷測試的原則。(2)IPO原則(InProcessOut)。(3)獨(dú)立測試原則。(4)合法和非合法原則。(5)錯誤群集原則。(6)嚴(yán)格性原則。(7)覆蓋原則。(8)定義功能測試原則。(9)回歸測試原則。(10)錯誤不可避免原則。

5.3軟件工程5.3.5軟件測試

2.軟件測試方法軟件測試方法的分類有很多種,可以按不同的標(biāo)準(zhǔn)對其進(jìn)行分類。

以測試過程中程序執(zhí)行狀態(tài)為依據(jù)可分為靜態(tài)測試(StaticTesting,ST)和動態(tài)測試(DynamicTesting,DT)。靜態(tài)測試的含義是被測程序不運(yùn)行,只依靠分析或檢查源程序的語句、結(jié)構(gòu)、過程等來檢查程序是否有錯誤。動態(tài)測試與靜態(tài)測試相對應(yīng),是通過運(yùn)行被測試程序,對得到的運(yùn)行結(jié)果與預(yù)期的結(jié)果進(jìn)行比較分析,同時分析運(yùn)行效率和健壯性能等。

以具體實(shí)現(xiàn)算法細(xì)節(jié)和系統(tǒng)內(nèi)部結(jié)構(gòu)的相關(guān)情況為根據(jù)可分黑盒測試、白盒測試和灰盒測試。黑盒測試被測程序看成是一個無法打開的黑盒,而工作人員在不考慮任何程序內(nèi)部結(jié)構(gòu)和特性的條件下,根據(jù)需求規(guī)格說明書設(shè)計(jì)測試實(shí)例,并檢查程序的功能是否能夠按照規(guī)范說明準(zhǔn)確無誤的運(yùn)行。其主要是對軟件界面和軟件功能進(jìn)行測試。白盒測試從程序結(jié)構(gòu)方面出發(fā)對測試用例進(jìn)行設(shè)計(jì),主要是借助程序內(nèi)部的邏輯和相關(guān)信息,通過檢測內(nèi)部動作是否按照設(shè)計(jì)規(guī)格說明書的設(shè)定進(jìn)行,檢查每一條通路能否正常工作,主要用于檢查各個邏輯結(jié)構(gòu)是否合理,對應(yīng)的模塊獨(dú)立路徑是否正常以及內(nèi)部結(jié)構(gòu)是否有效。灰盒測試則介于黑盒測試和白盒測試之間。

5.3軟件工程5.3.5軟件測試

3.軟件測試的實(shí)施軟件測試過程分4個階段,即單元測試、集成測試、系統(tǒng)測試和確認(rèn)測試。單元測試主要是對該軟件的模塊進(jìn)行測試,通過測試以發(fā)現(xiàn)該模塊的實(shí)際功能出現(xiàn)不符合的情況和編碼錯誤。集成測試是軟件測試的第二階段,在這個階段,通常要對已經(jīng)嚴(yán)格按照程序設(shè)計(jì)要求和標(biāo)準(zhǔn)組裝起來的模塊同時進(jìn)行測試。系統(tǒng)測試采用黑盒法來進(jìn)行測試的,以此來檢查該系統(tǒng)是否符合軟件需求。本階段的主要測試內(nèi)容包括健壯性測試、性能測試、功能測試、安裝或反安裝測試、用戶界面測試、壓力測試、可靠性及安全性測試等。驗(yàn)收測試是最后一個階段的測試操作,是在軟件產(chǎn)品投入正式運(yùn)行前所要進(jìn)行的測試工作。驗(yàn)收測試的主要目標(biāo)是為向用戶展示所開發(fā)出來的軟件符合預(yù)定的要求和有關(guān)標(biāo)準(zhǔn),并驗(yàn)證軟件實(shí)際工作的有效性和可靠性,確保用戶能用該軟件順利完成既定的任務(wù)和功能。

5.4設(shè)計(jì)模式

設(shè)計(jì)模式(DesignPattern)是一套被反

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論