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

下載本文檔

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

文檔簡(jiǎn)介

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

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

Delta=b2-4ac顯示無(wú)實(shí)根Delta>=0?輸入a,b,c系數(shù)開(kāi)始結(jié)束圖6.1.1.1求一元二次方程根的流程圖YN程序設(shè)計(jì)過(guò)程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<<”無(wú)實(shí)數(shù)解”;

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

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

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

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

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

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

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

在需求分析說(shuō)明書(shū)中需要對(duì)系統(tǒng)的功能、性能、驗(yàn)收標(biāo)準(zhǔn)等各個(gè)方面進(jìn)行描述對(duì)需求分析階段的工作進(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)開(kāi)發(fā)方法(DSSD,DataStructureSystemDevelopment)面向?qū)ο蟮姆治龇椒ǎ∣OA,ObjectOrientAnalysis)需求分析方法結(jié)構(gòu)化需求分析方法面向?qū)ο笮枨蠓治龇椒ńY(jié)構(gòu)化需求分析方法數(shù)據(jù)流圖(DFD,DataFlowDiagram)數(shù)據(jù)字典判定樹(shù)判定表等為工具數(shù)據(jù)流圖(DFD,DataFlowDiagram是結(jié)構(gòu)化分析方法中使用的工具它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過(guò)程它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。數(shù)據(jù)流圖的基本符號(hào)(成分)數(shù)據(jù)流數(shù)據(jù)源加工數(shù)據(jù)存儲(chǔ)數(shù)據(jù)流。由一組成分

溫馨提示

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

評(píng)論

0/150

提交評(píng)論