程序設(shè)計和軟件工程基礎(chǔ)大學(xué)計算機(jī)基礎(chǔ)課程_第1頁
程序設(shè)計和軟件工程基礎(chǔ)大學(xué)計算機(jī)基礎(chǔ)課程_第2頁
程序設(shè)計和軟件工程基礎(chǔ)大學(xué)計算機(jī)基礎(chǔ)課程_第3頁
程序設(shè)計和軟件工程基礎(chǔ)大學(xué)計算機(jī)基礎(chǔ)課程_第4頁
程序設(shè)計和軟件工程基礎(chǔ)大學(xué)計算機(jī)基礎(chǔ)課程_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章程序設(shè)計和軟件工程基礎(chǔ)第六章程序設(shè)計和軟件工程基礎(chǔ)程序設(shè)計基礎(chǔ)計算機(jī)程序程序設(shè)計語言、語言處理程序及集成開發(fā)環(huán)境結(jié)構(gòu)化程序設(shè)計基礎(chǔ)知識、面向?qū)ο蟪绦蛟O(shè)計基本概念程序設(shè)計的基本風(fēng)格軟件工程基礎(chǔ)軟件的組成軟件生命周期與軟件工程過程結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法基本知識軟件測試基礎(chǔ)6.1程序設(shè)計基礎(chǔ)程序步驟1:打開方便面包裝;步驟2:把面餅和調(diào)料放入碗內(nèi);步驟3:沖入開水;步驟4:蓋上蓋子;步驟5:等待3分鐘;步驟6:吃方便面;步驟7:程序結(jié)束。計算機(jī)程序在計算機(jī)領(lǐng)域,程序是指導(dǎo)計算機(jī)為完成某項功能所需要執(zhí)行的命令序列A=1B=2C=A+BPRINTC程序設(shè)計過程提出和分析問題確定數(shù)學(xué)模型設(shè)計算法模塊化編程程序整個編譯、運行程序設(shè)計步驟程序設(shè)計過程1.分析問題要解決什么問題?需要輸入哪些信息?

期望的輸出結(jié)果是什么?數(shù)據(jù)具體的處理過程和要求是什么。從給定的輸入到期望輸出,必要的處理步驟有哪些?確定數(shù)學(xué)模型2.設(shè)計程序一元二次方程的根計算出實根并顯示

Delta=b2-4ac顯示無實根Delta>=0?輸入a,b,c系數(shù)開始結(jié)束圖6.1.1.1求一元二次方程根的流程圖YN程序設(shè)計過程3.程序編碼以及編輯、編譯和連接int

mian(void){floata,bc,x1,x2,deta;

cin>>a>>b>>c;deta=b*b-4*a*c;

if(deta>=0){x1=(-b+sqrt(deta))/(2*a);x2=(-b-sqrt(deta))/(2*a);

cout<<“x1=”<<x1<<”x2=”<<x2<<endl;

}elsecout<<”無實數(shù)解”;

}程序設(shè)計過程4.測試程序在程序的編寫中,查找和修改錯誤的過程為程序測試。5.編寫程序文檔對于由多人合作開發(fā)的軟件來說,由于每個人負(fù)責(zé)的功能模塊不同,讀起來有困難,需要編寫程序文檔。程序設(shè)計語言低級語言高級語言機(jī)器語言匯編語言計算機(jī)語言它是由“0”和“1”組成的二進(jìn)制代碼語言機(jī)器語言程序可以直接在計算機(jī)上運行人們采用符號和數(shù)字代替二進(jìn)制代碼指令,可用ADD代表加法、SUB表示減、JMP表示程序跳轉(zhuǎn)等等。接近于人們的自然語言和數(shù)學(xué)公式編寫程序的語言。語言處理程序語言處理程序編譯程序解釋程序匯編程序匯編程序把用匯編語言寫的匯編語言源程序翻譯成機(jī)器可執(zhí)行的由機(jī)器語言表示的目標(biāo)程序的翻譯程序程序執(zhí)行結(jié)果運行編譯程序是將用高級語言所編寫的源程序翻譯成與之等價的用機(jī)器語言表示的目標(biāo)程序的翻譯程序,其翻譯過程稱為編譯程序執(zhí)行結(jié)果運行解釋程序接受用某種程序設(shè)計語言(如Basic語言)編寫的源程序,然后對源程序進(jìn)行逐句分析,若沒有錯誤,將該語句翻譯成一個或多個機(jī)器語言指令,然后立即執(zhí)行這些指令;若解釋時發(fā)現(xiàn)錯誤會立即停止,報錯并提醒用戶更正代碼。解釋方式不生成目標(biāo)程序高級語言源程序解釋程序機(jī)器語言運行程序執(zhí)行結(jié)果集成開發(fā)環(huán)境

(IDE,IntegratedDevelopmentEnvironment程序從編寫到調(diào)試執(zhí)行需要使用不同的工具完成;1.使用編輯器進(jìn)行程序源代碼的開發(fā)2.根據(jù)編程選用的語言,選擇使用語言處理對源代碼進(jìn)行處理3.使用代碼調(diào)試工具協(xié)助查找程序中的錯誤所謂集成開發(fā)環(huán)境是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,這個程序?qū)⒕帉懘a所使用的編輯器、編譯器、調(diào)試器和以及圖形用戶界面工具集成在一起。如微軟的VisualStudio系列,Borland的C++Builder、Delphi系列等。IDE通常具有代碼會自動生成,簡化程序的代碼編寫的工作。程序設(shè)計的兩種方法結(jié)構(gòu)化程序設(shè)計方法始于60年代面向?qū)ο蟮某绦蛟O(shè)計方法始于80年代結(jié)構(gòu)化程序設(shè)計基本原則模塊化的程序設(shè)計是結(jié)構(gòu)程序設(shè)計的精髓在程序設(shè)計時應(yīng)采用自頂向下,逐步細(xì)化的實施方法。避免使用goto語句模塊化一個大型程序應(yīng)按功能分割成一些功能模塊,并把這些模塊按層次關(guān)系進(jìn)行組織。功能分解的目的是將大規(guī)模的、復(fù)雜的問題分解成若干小規(guī)模的問題,采用分而治之的方法,降低程序設(shè)計的復(fù)雜性。結(jié)構(gòu)化程序設(shè)計基本原則模塊化的程序設(shè)計是結(jié)構(gòu)程序設(shè)計的精髓在程序設(shè)計時應(yīng)采用自頂向下,逐步細(xì)化的實施方法。避免使用goto語句自頂向下、逐步細(xì)化的實施方法。應(yīng)先考慮整體,再考慮細(xì)節(jié);先考慮全局目標(biāo),再考慮局部目標(biāo)。先從上層總目標(biāo)開始設(shè)計,使問題逐步具體化。結(jié)構(gòu)化程序設(shè)計基本原則模塊化的程序設(shè)計是結(jié)構(gòu)程序設(shè)計的精髓在程序設(shè)計時應(yīng)采用自頂向下,逐步細(xì)化的實施方法。避免使用goto語句避免使用goto語句goto語句是一個無條件的跳轉(zhuǎn)語句,goto語句會使得程序的執(zhí)行過程變得混亂,嚴(yán)重影響程序的可讀性。程序的三種基本結(jié)構(gòu)順序分支循環(huán)順序結(jié)構(gòu)語句塊1語句塊2順序結(jié)構(gòu)分支結(jié)構(gòu)條件成立不成立語句塊1語句塊2分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)語句塊1條件成立不成立循環(huán)直到型結(jié)構(gòu)成立不成立條件語句塊1循環(huán)當(dāng)型結(jié)構(gòu)面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計的基本思想是使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題?,F(xiàn)實世界是有各種實體組成比如一個學(xué)校,有學(xué)生、教師、各種教學(xué)輔助設(shè)施等等不同的實體組成實體之間通過消息傳遞(教師學(xué)生布置作業(yè)即是發(fā)送了消息,)進(jìn)行溝通交流,相互協(xié)作完成某項任務(wù)。對象(Object)對象是人們要進(jìn)行研究的任何事物,是現(xiàn)實世界中的一個實體。例如學(xué)生就是一個對象。任何對象都擁有一組數(shù)據(jù)和操作。對象所擁有的數(shù)據(jù)稱為對象的屬性。在現(xiàn)實世界中,對象都具有一定的行為,比如,學(xué)生要上課、下課、寫作業(yè)等等。對象所擁有的行為稱為對象的所具有的操作。對象實現(xiàn)了數(shù)據(jù)和操作的封裝。類(Class)類是對象的抽象。相同特征的一組對象進(jìn)行抽象形成了類。比如,可以對不同的學(xué)生個體進(jìn)行抽象,形成學(xué)生類。本質(zhì)上講,類是一種數(shù)據(jù)類型,是由程序員根據(jù)處理問題的需要自己創(chuàng)建的一種數(shù)據(jù)類型。任何一個對象都是通過類的實例化之后得到的。數(shù)據(jù)封裝(DataEncapsulation)把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一個單獨的單元(稱為類)的行為稱為封裝。數(shù)據(jù)封裝是類的最典型特點。在類中,被封裝的數(shù)據(jù)不能被外界訪問,只能被封裝在同一個類中的函數(shù)訪問。這些函數(shù)提供了對象數(shù)據(jù)和程序之間的接口。避免數(shù)據(jù)被程序直接訪問的概念被稱為信息隱藏。繼承(Inheritance)繼承是可以讓某個類型的對象獲得另一個類型的對象的屬性的一種技術(shù)。繼承的概念支持代碼的重用性(reusability)可以向一個已經(jīng)存在的類中添加新的特性多態(tài)性(Polymorphism)不同的對象,對同一消息的不同響應(yīng)。比如說加法操作,如果操作的數(shù)據(jù)是數(shù),它對兩個數(shù)求和。如果操作的數(shù)據(jù)是字符串,則它將連接兩個字符串。消息傳遞(Messagepassing)一個面向?qū)ο蟮某绦蛴稍S多對象組成,對象之間通過收發(fā)信息相互溝通,消息就是請求執(zhí)行某個過程,消息的接收對象會調(diào)用一個函數(shù)(過程),以產(chǎn)生預(yù)期的結(jié)果。程序設(shè)計風(fēng)格源程序的編寫風(fēng)格(1)標(biāo)識符的命名在符合詞法規(guī)則的基礎(chǔ)上,要做見名知意,以便理解程序功能,從而提高程序的可讀性。(2)在程序中利用空格、空行、鋸齒形縮進(jìn)等排版技巧使程序?qū)哟吻逦?3)正確的程序注釋語句,對程序中的語法成分進(jìn)行解釋。注釋語句包括序言性注釋和功能性注釋。序言性注釋對程序標(biāo)題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設(shè)計者、復(fù)審者、復(fù)審日期及修改日期等進(jìn)行說明。

功能性注釋一般嵌在源程序體中,用于描述其后的語句或程序的主要功能。程序設(shè)計風(fēng)格數(shù)據(jù)說明方法(1)數(shù)據(jù)說明的次序規(guī)范化各種不同種類的數(shù)據(jù)說明的次序,最好固定下來,易于查找數(shù)據(jù)屬性。(2)說明語句中變量安排有序化一個語句中需要聲明多個變量,應(yīng)按字母順序排列。(3)使用注釋來說明復(fù)雜數(shù)據(jù)的結(jié)構(gòu)程序設(shè)計風(fēng)格語句的結(jié)構(gòu)(1)一行內(nèi)只寫一個語句;數(shù)據(jù)結(jié)構(gòu)要有利于程序的簡化,程序要模塊化;程序編寫要做到清晰第一,效率第二。(2)盡量使用庫函數(shù);避免不必要的轉(zhuǎn)移,避免采用復(fù)雜的條件語句;不要修補(bǔ)不好的程序,要重新編寫。程序設(shè)計風(fēng)格輸入/輸出對輸入數(shù)據(jù)要檢查數(shù)據(jù)的合法性;交互式輸入數(shù)據(jù)時應(yīng)有必要的提示信息;應(yīng)允許缺省值,提高輸入數(shù)據(jù)的效率;若用戶輸入某些數(shù)據(jù)后可能產(chǎn)生嚴(yán)重后果,應(yīng)給用戶輸出必要的提示并要求用戶確認(rèn)(容錯處理);輸入格式要簡單,使得輸入的步驟和操作盡可能簡單;當(dāng)程序設(shè)計語言對輸入格式有嚴(yán)格要求時,應(yīng)保持輸入格式與輸入語句的一致性;輸出數(shù)據(jù)的格式應(yīng)清晰、美觀;輸出數(shù)據(jù)時要加上必要的提示信息。軟件工程基礎(chǔ)軟件的組成軟件生命周期與軟件工程過程結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法基本知識軟件測試基礎(chǔ)軟件(software)軟件程序=數(shù)據(jù)文檔++軟件分類系統(tǒng)軟件支撐軟件(中間件)應(yīng)用軟件計算機(jī)軟件最靠近硬件其他軟件通過系統(tǒng)軟件發(fā)揮作用操作系統(tǒng)和編譯器軟件等

支撐軟件的開發(fā)和維護(hù)數(shù)據(jù)庫管理系統(tǒng)、網(wǎng)絡(luò)軟件

特定應(yīng)用領(lǐng)域的軟件,包括辦公軟件、電子商務(wù)軟件、通信軟件、行業(yè)軟件,游戲軟件等等。

軟件危機(jī)軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件成本不斷提高;軟件開發(fā)生產(chǎn)效率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長;軟件通常缺少適當(dāng)?shù)奈臋n資料。軟件工程多種定義軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護(hù)軟件,以及如何把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來。通過將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù)軟件,即把工程化應(yīng)用到軟件軟件工程的主要內(nèi)容(1)軟件開發(fā)技術(shù)軟件開發(fā)方法學(xué)軟件開發(fā)過程軟件工具和軟件工程環(huán)境。

(2)軟件工程管理軟件管理學(xué)軟件經(jīng)濟(jì)學(xué)軟件心理學(xué)。軟件工程三要素方法是為軟件開發(fā)提供“如何做”的技術(shù)。工具是為軟件工程方法提供自動或半自動的軟件支撐環(huán)境。過程是將軟件工程中的方法和工具綜合起來以達(dá)到合理、及時地進(jìn)行計算機(jī)軟件開發(fā)的目的。因此,方法、工具、過程又被稱為軟件工程三要素總體規(guī)劃可行性分析建立系統(tǒng)邏輯模型建立系統(tǒng)物理模型編寫代碼進(jìn)行各種測試軟件生命周期問題的定義與規(guī)劃需求分析設(shè)計編碼測試維護(hù)定義期生產(chǎn)期維護(hù)期結(jié)構(gòu)化分析方法需求分析方法設(shè)計方法測試方法調(diào)試方法需求分析需求獲取需求分析編寫需求說明書需求評審確定未來系統(tǒng)要實現(xiàn)的功能以及與系統(tǒng)有關(guān)的其他外圍環(huán)境的特征對系統(tǒng)的需求進(jìn)行綜合的分析與綜合,給出系統(tǒng)的解決方案

在需求分析說明書中需要對系統(tǒng)的功能、性能、驗收標(biāo)準(zhǔn)等各個方面進(jìn)行描述對需求分析階段的工作進(jìn)行審查

需求分析方法結(jié)構(gòu)化的分析方法面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(SA,StructureAnalysis),面向數(shù)據(jù)結(jié)構(gòu)的Jackson(JSD,JacksonSystemDevelopment)方法面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化系統(tǒng)開發(fā)方法(DSSD,DataStructureSystemDevelopment)面向?qū)ο蟮姆治龇椒ǎ∣OA,ObjectOrientAnalysis)需求分析方法結(jié)構(gòu)化需求分析方法面向?qū)ο笮枨蠓治龇椒ńY(jié)構(gòu)化需求分析方法數(shù)據(jù)流圖(DFD,DataFlowDiagram)數(shù)據(jù)字典判定樹判定表等為工具數(shù)據(jù)流圖(DFD,DataFlowDiagram是結(jié)構(gòu)化分析方法中使用的工具它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。數(shù)據(jù)流圖的基本符號(成分)數(shù)據(jù)流數(shù)據(jù)源加工數(shù)據(jù)存儲數(shù)據(jù)流。由一組成分

溫馨提示

  • 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

提交評論