




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章計算機軟件4.1
程序設計語言及其翻譯系統(tǒng)4.2數(shù)據(jù)結構4.3
算法4.4操作系統(tǒng)4.5軟件工程4.6工具軟件《計算機導論》
4.1.1
程序設計語言(PLD)
1.機器語言(machinelanguage)是由二進制編碼指令構成的語言,是一種依附于機器硬件的語言。每種處理器都有自己專用的機器指令集合,這些指令能夠被計算機直接執(zhí)行。處理器的設計者給每條指令指定一個二進制編號,用來表示這些指令。1952年之前,人們只能使用機器語言來編寫程序。特點:使用機器語言編寫的程序,計算機能夠直接理解并執(zhí)行,但編程和理解都十分的困難。4.1
程序設計語言及其翻譯系統(tǒng)
4.1.1
程序設計語言(PLD)
2.匯編語言(assemblylanguage)是由助記符指令構成的語言,也是一種依附于機器硬件的語言。使用“助記符”來表示指令的操作碼,使用存儲單元或寄存器的名字表示操作數(shù),以便于理解、記憶和書寫。由匯編語言編寫的程序,不能被計算機直接執(zhí)行。和機器語言相比,實現(xiàn)的功能相同,但指令容易記憶,程序容易編寫和理解。相對于機器語言,匯編語言有一定的優(yōu)勢,但仍存在許多不足,如:助記符對一般人來說是比較難記憶的,且要求編程人員對計算機的硬件結構有比較深入的了解。
4.1.1
程序設計語言(PLD)
3.高級語言(highlevellanguage)是一種與機器的指令系統(tǒng)無關、表達形式更接近于被描述的問題的程序設計語言。高級語言中的語句用英文和數(shù)學公式表示,更容易被編程人員理解和掌握。使用高級語言編寫的程序稱為高級語言源程序,它必須經過高級程序設計語言翻譯系統(tǒng)的處理后才能被計算機理解和執(zhí)行。翻譯程序有兩種模式:編譯程序模式:先把高級語言的源程序翻譯成目標程序,然后執(zhí)行目標程序。解釋程序模式:不需要把高級語言的源程序翻譯成目標程序,而是邊翻譯邊執(zhí)行。1.程序設計
程序設計:是一個使用程序設計語言產生一系列的指令以告訴計算機該做什么的過程。廣義的程序設計:
需求分析總體設計詳細設計編碼測試運行與維護4.1.2結構化程序設計2.結構化程序設計
采用自頂向下、逐步求精的設計方法(先全局后局部、先整體后細節(jié)、先抽象后具體)和單入口、單出口的控制成分(順序、分支和循環(huán))。TFTFAAB(a)順序結構(b)選擇分支結構(c)循環(huán)結構AB4.1.2結構化程序設計條件條件3.結構化程序設計語言
Pascal語言:是第一個結構化程序設計語言,是1971年尼克萊斯·沃思研發(fā)的。C語言:最初是為編寫UNIX操作系統(tǒng)而研發(fā)的,但由于其強大的功能和各方面的優(yōu)點而得以迅速傳播,成為當代最優(yōu)秀的程序設計語言之一。目前,在微型計算機上廣泛應用的版本有:TurboC、MSC、QuickC、C++、C#、VisualC++、VisualC++.net等。4.1.2結構化程序設計1.面向對象程序設計
結構化程序設計:“數(shù)據(jù)結構+算法”的面向過程的程序設計方法面向對象程序設計:“對象+消息”的面向對象的程序設計方法結構化程序設計強調了要實現(xiàn)功能的操作方法(模塊),而被操作的數(shù)據(jù)(變量)處于實現(xiàn)功能的從屬地位,即:程序模塊和數(shù)據(jù)結構是松散地耦合在一起。面向對象的方法不再將問題分解為過程,而是將分解為對象,對象將自己的屬性和方法封裝成一個整體,對象之間的相互作用通過消息傳遞來實現(xiàn)。4.1.3面向對象程序設計2.面向對象程序設計語言
C++語言:是以C語言為基礎的支持數(shù)據(jù)抽象和面向對象風范的通用程序設計語言。它支持數(shù)據(jù)的封裝、類的繼承和函數(shù)的多態(tài),故提高了程序的可擴展性和可重用性,進而提高了軟件開發(fā)的效率。Java語言:是由SunMicrosystems公司于1995年5月推出的一個支持網(wǎng)絡計算的面向對象程序設計語言。它吸收了C++語言的優(yōu)點,并增加了并發(fā)程序設計、網(wǎng)絡通信和多媒體數(shù)據(jù)控制等特性。4.1.3面向對象程序設計可視化(Visual)技術,是以圖形化的編程方式將面向對象技術的特性體現(xiàn)出來,通過用鼠標拖曳圖形化的控件就可以完成Windows風格界面的設計工作??梢暬绦蛟O計,大大減輕了程序設計人員的編程工作量,使得開發(fā)軟件這一原本枯燥、難以理解的工作變得相對輕松快捷??梢暬绦蛟O計語言:VisualBasic、
VisualFoxpro、
Visualc++、
VisualC++.net、C++Builder4.1.4可視化程序設計
4.1.5
良好的程序設計風格
標識符:按意命名、保留字用大寫字母、使用統(tǒng)一的縮寫規(guī)則。表達式:使用括號、使用庫函數(shù)、條件化簡、函數(shù)與過程模塊化:模塊的獨立性(高內聚、低耦合)、模塊的規(guī)模適中。程序行的排列格式:排列格式美觀、層次分明、使用統(tǒng)一的縮進格式,同一嵌套深度并列的語句對齊。注釋:添加必要的注釋,以說明程序、過程和語句等的功能及注意事項。4.1.6
程序設計語言翻譯系統(tǒng)
計算機硬件只能識別并執(zhí)行機器指令,但人們普遍習慣于使用高級語言或匯編語言來編寫程序。為了讓計算機能夠理解并執(zhí)行用高級語言或匯編語言編寫的程序,必須要為它配備一個“翻譯”,這就是所謂的程序設計語言翻譯系統(tǒng)。程序設計語言翻譯系統(tǒng)是一類系統(tǒng)軟件,它能夠將使用某一種源語言編寫的程序翻譯成為與其等價的使用另一種目標語言編寫的程序。使用源語言編寫的程序稱為源程序,使用目標語言編寫的程序稱為目標程序。源程序是程序設計語言翻譯系統(tǒng)加工的“原材料”,而目標程序則是程序設計語言翻譯系統(tǒng)加工的“最終產品”。程序設計語言翻譯系統(tǒng)大致上可以分成三類:匯編語言翻譯系統(tǒng)、高級程序設計語言編譯系統(tǒng)和高級程序設計語言解釋系統(tǒng)。這些翻譯系統(tǒng)之間的不同之處主要體現(xiàn)在它們生成計算機可以執(zhí)行的機器語言的過程中。4.1.6
程序設計語言翻譯系統(tǒng)
一、
匯編語言翻譯系統(tǒng)
匯編語言翻譯系統(tǒng)的主要功能是將用匯編語言書寫的程序翻譯成用二進制碼表示的等價的機器語言,形成計算機可以執(zhí)行的機器指令代碼。匯編程序的具體翻譯工作有如下幾步:(1)用機器操作碼代替符號化的操作符;(2)用數(shù)值地址代替符號名字;(3)將常數(shù)翻譯為機器的內部表示;(4)
分配指令和數(shù)據(jù)的存儲單元。匯編程序翻譯器示意圖匯編源程序二進制機器語言程序匯編程序翻譯器輸入
輸出一、
匯編語言翻譯系統(tǒng)
二、高級程序設計語言翻譯系統(tǒng)1.什么是程序設計語言翻譯系統(tǒng) 將高級語言書寫的源程序翻譯成等價的機器語言程序或匯編程序的處理系統(tǒng),也稱為編譯程序。以高級語言書寫的程序作為輸入,以機器語言或匯編語言表示的程序作為輸出。2.編譯程序的結構可以把編譯程序比喻成一個“信息加工流水線”。“源材料”是源程序,“最終產品”是目標程序。每一道“工序”以上一道工序得到的半成品作為輸入,輸出作為下一道“工序”的輸入,直到最后得到“最終產品”-目標程序。用C語言編寫的源程序
#include<stdio.h>main(){ inti,num; floatsum; printf("Enternumbers:\n"); sum=0; for(i=0;i<10;i++)
{ scanf("%d",&num); sum=sum+num;
}
printf("sum=%3.1f\n",sum); printf(“Average=%3.1f\n“,sum/10.0);}
編譯程序結構圖
目標程序優(yōu)化后的中間代碼
源程序
詞法分析
中間代碼生成
目標代碼生成
語法分析
優(yōu)化
出錯處理表格
管理單詞語法單位中間代碼
三、高級程序設計語言解釋系統(tǒng)
高級程序設計語言解釋系統(tǒng)是按照源程序中的語句的動態(tài)順序逐條翻譯并立即執(zhí)行相應功能的處理系統(tǒng)。源程序解釋系統(tǒng)(逐句解釋、執(zhí)行)
結果源程序解釋器原始數(shù)據(jù)
4.2
數(shù)據(jù)結構
數(shù)據(jù):描述客觀事物的數(shù)、字符以及所有能輸入到計算機并被計算機程序處理的符號的集合,如數(shù)值、字符、圖形、圖像、聲音等。數(shù)據(jù)結構:帶有結構的數(shù)據(jù)元素的集合,結構反映了數(shù)據(jù)元素相互之間存在的某種聯(lián)系。從學科的角度看,數(shù)據(jù)結構是計算機科學技術的一個分支,它主要研究數(shù)據(jù)的邏輯結構和物理結構以及它們之間的關系,并對這種結構定義相應的運算,設計出實現(xiàn)這些運算的算法。4.2.1
什么是數(shù)據(jù)結構1.線性表
線性表:是n個數(shù)據(jù)元素的有限序列。線性表的運算:設L為一個線性表置空表SETNULL(L)求表的長度LENGTH(L)取表元素GET(L,i)在表中查找特定元素LOCATE(L,x)插入新元素INSERT(L,i,b)刪除表元素DELETE(L,i)線性表的存儲結構:順序存儲結構:地址連續(xù)鏈式存儲結構:地址不一定連續(xù)4.2.2
幾種典型的數(shù)據(jù)結構2.堆棧
堆棧(stack):是一種受限的線性表,即只能在表的一端(表尾)進行插入和刪除操作。進棧和退棧操作按“后進先出”(LastInFirstOut,LIFO)的原則進行。堆棧的運算:設S為一個堆棧置空棧SETNULL(S)進棧PUSH(S,x)退棧POP(S)取棧頂元素TOP(S)判斷堆棧是否為空EMPTY(S)堆棧的存儲結構:順序存儲結構4.2.2
幾種典型的數(shù)據(jù)結構3.隊列
隊列(queue):也是一種受限的線性表,只能在表的一端(隊尾)進行插入,在表的另一端(隊首)進行刪除操作。進、出隊列操作按“先進先出”(FirstInFirstOut,F(xiàn)IFO)的原則進行。隊列的運算:設Q為一個隊列置空隊列SETNULL(Q)進入隊列ADDQUEUE(Q,x)退出隊列DELQUEUE(Q)取隊首元素FRONTQUE(Q)判斷隊列是否為空EMPTY(Q)隊列的存儲結構:鏈式存儲結構,一個鏈隊列需要設置隊首指針和隊尾指針。 4.2.2
幾種典型的數(shù)據(jù)結構
4.3
算法4.3.1解題步驟當使用計算機解決一些比較簡單的實際問題時,可以按照右邊的步驟進行。而對于一些大型軟件系統(tǒng)的開發(fā),則需要運用軟件工程的思想和方法來進行。
4.3.2
什么是算法算法:是由一系列規(guī)則組成的過程,這些規(guī)則確定了一個操作的順序,以便能在有限步驟內得到特定問題的解。算法的性質:確定性通用性有限性算法的描述工具:自然語言流程圖決策表算法描述語言歐幾里德算法(Euclid’sAlgorithm)例:若給定兩個正整數(shù)m和n,試寫出求它們的最大公因子的算法。該算法的步驟用文字表述如下: 第1步:讀入兩個正整數(shù)m和n(設m>n)。 第2步:求m和n的余數(shù)r=mod(m,n)。 第3步:用n的值取代m,用r的值取代n。 第4步:判別r的值是否為零,如果r=0,則m為最大公因子;否則返回第2步。 第5步:輸出m的值,即為最大公因子。
流程圖的規(guī)定符號:起止端點數(shù)據(jù)輸入輸出處理條件判斷
流程圖的基本結構ABABSSA1A2AnPPPP=1P=2P=nFFFFFFTTTTTT順序型選擇型先判定型循環(huán)后判定型循環(huán)多情況選擇型歐幾里德算法(流程圖表示)m=nBEGINREADm,nr=mod(m,n)n=rWRITEmr≠0ENDYN
歐幾里德算法(算法描述語言表示)PROCEDUREEuclid;
BEGINREAD(m,n);REPEAT;r:=MOD(m,n);m:=nn:=r;UNTILr=0; WRITE(m)
END4.3.3
算法評價1.算法的時間特性算法的時間特性是指依據(jù)算法編制成程序后,在計算機中運行時所耗費時間的大小。2.算法的空間特性算法的空間特性是指程序在計算機中運行時所占用的空間的大小。3.算法的易理解性算法的易理解性是衡量一個算法優(yōu)劣的重要指標。具有良好的結構、易理解、易維護和易測試的算法是追求的目標。
4.4
操作系統(tǒng)4.4.1
什么是操作系統(tǒng)操作系統(tǒng)(OperatingSystem,OS)是用來管理計算機系統(tǒng)的軟硬件資源、提高計算機系統(tǒng)資源的使用效率、方便用戶使用的程序集合,是人-機交互的接口。它是對計算機系統(tǒng)進行自動管理的控制中心。操作系統(tǒng)是計算機硬件(裸機)的直接外層,它對硬件的功能進行首次擴充。同時操作系統(tǒng)又是其他軟件運行的基礎。為了讓操作系統(tǒng)進行工作,首先要將它從外存儲器裝入主存儲器。這一安裝過程稱為引導系統(tǒng)。安裝完畢后,操作系統(tǒng)中的管理程序部分將保持在主存儲器中,稱其為駐留程序。其他部分在需要時再自動地從外存儲器調入主存儲器中,這些程序稱為臨時程序。
4.4.2
操作系統(tǒng)的功能
1、資源管理功能從資源管理的角度來看,操作系統(tǒng)的功能主要有以下4個方面。(1)處理機管理操作系統(tǒng)的重要任務是控制程序的執(zhí)行,它負責對系統(tǒng)中各個處理機及其狀態(tài)進行登記,管理各程序對處理機的要求,按照一定的策略將系統(tǒng)中的各個處理機分配給申請的用戶作業(yè)(進程)。(2)存儲器管理按照一定的策略為用戶作業(yè)分配存儲空間,記錄主存儲器使用情況,并對主存儲器中的信息提供保護,作業(yè)結束后占用的內存單元收回以便其他程序使用。(3)輸入/輸出設備管理由于輸入/輸出設備的速度遠遠低于CPU,操作系統(tǒng)應對設備的輸入/輸出性能有很清晰的分類,以便當外部有輸入/輸出要求時能及時地響應。操作系統(tǒng)記錄系統(tǒng)中各個輸入/輸出設備的狀態(tài),按照各個設備的不同特點采取不同的策略分配和回收外部設備以及控制外部設備按用戶程序的要求進行操作。1、資源管理功能35(4)文件管理操作系統(tǒng)的文件管理功能是對存放在計算機中的信息進行邏輯組織和物理組織、維護文件目錄的結構以及實現(xiàn)對文件的各種操作。有了文件管理,用戶可以按文件名存取數(shù)據(jù)而不必了解這些數(shù)據(jù)的確切物理位置。1、資源管理功能2、人機交互功能人機交互功能主要靠可以進行輸入/輸出的外部設備和相應的軟件來完成。軟件主要作用是控制有關設備的運行,理解并執(zhí)行通過人機交互界面?zhèn)鱽淼母鞣N命令和要求。早期廣泛使用并沿用至今的人機交互設備有鍵盤輸入設備和顯示器等,近年來語音輸入設備、文字讀入設備、圖形圖象掃描輸入設備等的使用也越來越普遍,使得計算機系統(tǒng)人機交互功能越來越強。
4.4.2
操作系統(tǒng)的功能
4.4.3
操作系統(tǒng)的分類
操作系統(tǒng)也有許多不同的分類方法:按計算機硬件的規(guī)模分:大型機操作系統(tǒng)、小型機操作系統(tǒng)和微型機操作系統(tǒng)。按操作系統(tǒng)的性能分:多道批處理操作系統(tǒng)、分時操作系統(tǒng)、實時操作系統(tǒng)和網(wǎng)絡操作系統(tǒng)。1、多道批處理操作系統(tǒng)多道程序設計是指在主存儲器中存放多道用戶的作業(yè),使其按照一定的策略插空在CPU上運行,共享CPU和輸入輸出設備等系統(tǒng)資源。多道批處理操作系統(tǒng)負責把用戶作業(yè)成批地接收進外存儲器,形成作業(yè)隊列,然后按一定的策略將作業(yè)隊列中的用戶作業(yè)調入主存儲器,并使得這些作業(yè)按其優(yōu)先級輪流占用CPU和外部設備等系統(tǒng)資源。宏觀上,計算機中有多個作業(yè)在運行;微觀上,對于單CPU計算機而言,在某一個瞬間只有一道作業(yè)在CPU上運行。2、分時操作系統(tǒng)分時是指多個用戶終端共享使用一臺計算機,即把計算機系統(tǒng)的CPU時間分割成一個個小的時間段(稱其為一個時間片),從而將CPU的工作時間分別提供給各個用戶終端。分時操作系統(tǒng)設計的主要目標是提高對用戶響應的及時性。它一般適用于帶有多個終端的小型機。
4.4.3
操作系統(tǒng)的分類
403、實時操作系統(tǒng)在計算機應用于過程控制系統(tǒng)時,通常要求計算機能夠對外部事件作出及時的響應并對其進行處理,這樣的系統(tǒng)稱為實時系統(tǒng)。實時操作系統(tǒng)強調對外部事件響應的及時性和快捷性及系統(tǒng)的可靠性。
4.4.3
操作系統(tǒng)的分類
4、網(wǎng)絡操作系統(tǒng)網(wǎng)絡操作系統(tǒng)是使網(wǎng)絡上的計算機能夠方便有效地共享網(wǎng)絡資源,為網(wǎng)絡用戶提供各種服務隊尾軟件和有關協(xié)議的集合。網(wǎng)絡操作系統(tǒng)除了應具有通常操作系統(tǒng)所具有的功能之外,還應該能夠提供高效、可靠的網(wǎng)絡通信以及多種網(wǎng)絡服務功能。網(wǎng)絡通信將按照網(wǎng)絡協(xié)議來進行。網(wǎng)絡服務包括文件傳輸、遠程登錄、電子郵件、信息檢索等。
4.4.4幾種常用的操作系統(tǒng)
1、MS-DOSMS-DOS是Microsoft磁盤操作系統(tǒng)(MicrosoftDiskOperatingSystem)的簡稱,是一個單用戶單任務的操作系統(tǒng)。MS-DOS的功能有以下三個方面:(1)磁盤文件管理(2)輸入輸出管理(3)
命令處理命令處理(COMMAND.COM)文件管理模塊(MSDOS.SYS)輸入/輸出管理模塊(IO.SYS)引導程序(Boot)磁盤文件核心程序外部命令+MS-DOS的構成MS-DOS由引導程序將系統(tǒng)裝入主存儲器。啟動計算機后引導程序檢查驅動器A或C中是否有裝有系統(tǒng)文件MSDOS.SYS和IO.SYS的系統(tǒng)盤。如果有,則將MS-DOS引導入主存儲器;否則,將顯示出錯信息。MS-DOS內部命令的一般格式是:〈命令動詞〉[〈參數(shù)〉]MS-DOS外部命令的一般格式是:[<驅動器名>][<路徑名>]<命令動詞>[<參數(shù)>]1.MS-DOS2.Windows
Windows是由Microsoft公司開發(fā)的一系列基于圖形界面的單用戶多任務操作系統(tǒng),又稱為視窗操作系統(tǒng)。在計算機與用戶之間打開了一個窗口,用戶通過這個窗口直接管理、使用和控制計算機。Windows2000/xp是目前個人計算機中使用最為廣泛的操作系統(tǒng)之一。Windows版本操作系統(tǒng)名稱發(fā)布日期類型Windows1.01983.10桌面操作系統(tǒng)Windows2.01987.10桌面操作系統(tǒng)Windows3.01990.5桌面操作系統(tǒng)Windows3.11992.4桌面操作系統(tǒng)WindowsNTworkstation3.51994.7桌面操作系統(tǒng)WindowsNT3.5x1994.9服務器操作系統(tǒng)Windows951995.8桌面操作系統(tǒng)2.Windows
WindowsNTworkstation4.x1996.7桌面操作系統(tǒng)WindowsNTSERVER4.01996.9服務器操作系統(tǒng)Windows981998.6桌面操作系統(tǒng)Windows20002000.2桌面操作系統(tǒng)Windows2000Server2000.2服務器操作系統(tǒng)WindowsXP2001.10桌面操作系統(tǒng)Windows72009.10桌面操作系統(tǒng)Windows版本2.Windows
3.Unix
Unix操作系統(tǒng)是20世紀60年代末由美國的電話電報公司(AT&T)貝爾(Bell)實驗室的計算機科學家K.Thompson和D.M.Ritchie等研制的。由于上述兩位學者對Unix操作系統(tǒng)的卓越貢獻,獲得了1983年的圖靈獎。
Unix是一個多用戶多任務的分時操作系統(tǒng),系統(tǒng)本身采用C語言編寫。Unix操作系統(tǒng)具有結構緊湊、功能強、效率高、使用方便和可移植性好等優(yōu)點,被國際上公認為是一個十分成功的通用操作系統(tǒng)。4.LinuxLinux是由芬蘭赫爾辛基大學的學生LinusTorvalds在1991年開發(fā)。
Linux是一個多用戶多任務的分時操作系統(tǒng)。Linux的開發(fā)及其源代碼完全免費的。但是這并不意味著Linux和它的一些周邊軟件發(fā)行版本也是免費的。Linux有著廣泛的用途,包括網(wǎng)絡應用、軟件開發(fā)、建立用戶平臺等?,F(xiàn)在主要流行的版本有:RedHatLinux、TurboLinux及我國自己開發(fā)的紅旗Linux、藍點Linux等。5.MacOSApple公司為它的計算機設計的操作系統(tǒng)大多稱為MacOS。MacOS是最早利用圖形用戶界面的操作系統(tǒng),它具有很強的圖形處理能力,被廣泛地用在桌面出版和多媒體應用等領域。由于MacOS在中國不普及,加上它以往的MacOS又和Windows操作系統(tǒng)缺乏兼容性,因而它的使用受到了限制。但它在北美和西歐占有不小份額。Apple公司推出的新一代操作系統(tǒng)MacOS
X是一個獨立開發(fā)的全新操作系統(tǒng)。
MacOSX的用戶界面圖4-8
一、為什么提出軟件工程
從20世紀40年代開始到軟件工程術語提出為止的20多年時間里,對軟件開發(fā)的理解就是編程序,那時的編程有以下特點:軟件規(guī)模相對較小,人們關心的是計算機硬件的發(fā)展。作為一個計算機專業(yè)人員,他必須懂得計算機的結構。作為一個機構,其大量資金也是用于計算機硬件開銷上,軟件只是作為展現(xiàn)其硬件性能的一種手段而投入的少量資金。編程僅作為一門技藝,大部分軟件技術人員不太關心他人的工作,決定軟件質量的惟一因素就是該編程人員的素質。缺少有效方法與軟件工具的支持。4.5
軟件工程4.5.1
軟件工程的概念由于重視個人技能,軟件開發(fā)過程能見度低,許多管理人員不知道他們的軟件技術人員工作究竟做得如何。由于人們重視個人技能,一旦需要做某些修改,就要原編程人員進行修改。這使得軟件開發(fā)后的維護工作很難進行。
20世紀60年代,國外在開發(fā)一些大型軟件系統(tǒng)時,遇到了許多困難:有些系統(tǒng)最終徹底失敗了;有些系統(tǒng)雖然完成了,但比原定計劃推遲了好幾年,而且費用大大超過了預算;有些系統(tǒng)未能圓滿地符合用戶當初的期望;有些系統(tǒng)則無法進行修改維護。
一、為什么提出軟件工程
這是由于大型軟件系統(tǒng)大大增加了軟件復雜性,軟件規(guī)模的增加使技術復雜性和管理復雜性呈指數(shù)上升。20世紀60年代末期所發(fā)生的軟件危機,體現(xiàn)在軟件可靠性沒有保障、軟件維護費用不斷上升、進度無法預測、成本增長無法控制、程序人員無限度地增加等各個方面,以致形成人們難以控制軟件開發(fā)的局面。軟件開發(fā)工程化的概念和方法應運而生。
一、為什么提出軟件工程
二、什么是軟件工程
軟件工程的定義:軟件工程是研究和應用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。軟件工程的內涵:是應用計算機科學、數(shù)學及管理科學等原理,借鑒傳統(tǒng)工程的原則、方法來創(chuàng)建軟件,從而達到提高質量、降低成本的目的。其中計算機科學和數(shù)學用于構造模型、分析算法,工程科學用于制定規(guī)范、明確樣例、評估成本、確定權衡,管理科學用于進度、資源、質量、成本等的管理。
軟件工程的目標:研制開發(fā)與生產出具有良好的軟件質量和費用合理的產品。費用合理是指軟件開發(fā)運行的整個開銷能滿足用戶要求的程度。軟件質量是指該軟件能滿足明確的和隱含的需求能力的有關特征和特性的總和,可用功能性、可靠性、易使用性、有效性、可維護性和易移植性6個特性來評價。
二、什么是軟件工程
三、軟件生存周期
“軟件”的定義: 軟件是程序以及開發(fā)、使用和維護程序所需的所有文檔和數(shù)據(jù),亦即“軟件=程序+數(shù)據(jù)+文檔”?!败浖嬷芷凇备拍睿?是一個從用戶需求開始,經過開發(fā)、交付使用,在使用中不斷地增補修訂,直至讓位于新的軟件的全過程,是指軟件產品從考慮其概念開始,到該軟件產品不再能使用為止的整個時期。一般包括:概念階段、需求階段、設計階段、實現(xiàn)階段、測試階段、安裝階段以及交付使用階段、運行階段和維護階段。從經濟學的意義上來說,考慮到軟件的龐大的維護費用遠比軟件開發(fā)費用要高,因而開發(fā)軟件不能只考慮開發(fā)期間的費用,而且應考慮軟件生存期的全部費用。因此,軟件生存期的概念就變得特別重要。4.5.2
軟件開發(fā)模型“軟件開發(fā)模型”的定義: 它是在軟件生存周期基礎上構造出的軟件開發(fā)全部過程、活動和任務的結構框架,又稱為軟件生存周期模型。軟件開發(fā)模型能清晰、直觀地表達軟件開發(fā)全過程,明確規(guī)定了要完成的主要活動和任務,用來作為軟件項目開發(fā)工作的基礎。一、瀑布模型
瀑布模型(WaterfallModel)是1970年WinstonRoyce提出的最早出現(xiàn)的軟件開發(fā)模型。它將軟件開發(fā)過程中的各項活動規(guī)定為依固定順序連接的若干階段工作,形如瀑布流水,最終得到軟件系統(tǒng)或軟件產品。每項開發(fā)活動的特點:從上一項開發(fā)活動接受該項活動的工作對象,作為輸入。利用這一輸入,實施該項活動應完成的工作內容。給出該項活動的工作成果,作為輸出傳給下一項開發(fā)活動。對該項活動的實施工作成果進行評審。若其工作成果得到確認,則繼續(xù)進行下一項開發(fā)活動;否則返回前一項,甚至更前項的活動。
瀑布模型
計劃需求分析
設計
編碼
測試運行維護定義階段開發(fā)階段維護階段二、增量模型
增量模型(IncrementalModel)亦稱有計劃的產品改進型,它從一組給定的需求開始,通過構造一系列可執(zhí)行中間版本來實施開發(fā)活動。第一個中間版本納入一部分需求,下一個中間版本納入更多的需求,依此類推,直到系統(tǒng)完成。每個中間版本都要執(zhí)行必要的過程、活動和任務。這種模型在開發(fā)每個中間版本時,開發(fā)過程中的活動和任務順序地或部分平行地使用。當相繼中間版本在部分并行開發(fā)時,開發(fā)過程中的活動和任務可以在各中間版本間平行地采用。
適合于用戶需求不太明確的軟件開發(fā)。三、噴泉模型噴泉模型(FountainModel)是由B.H.Sollers和J.M.Edwards于1990年提出的一種新開發(fā)模型。噴泉模型主要用于采用面向對象技術的軟件開發(fā)項目,認為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的特性。相互迭代是指軟件的某個部分常常被重復工作多次,相關對象在每次迭代中隨之加入漸進的軟件成分。無間隙是指在各項活動之間無明顯邊界,如分析和設計活動之間沒有明顯的界限。由于對象概念的引入,表達分析、設計、實現(xiàn)等活動只用對象類和關系,從而可以較為容易地實現(xiàn)活動的迭代和無間隙,使其開發(fā)自然地包括復用。
四、螺旋模型螺旋模型(SpiralModel)是由TRW公司的BarryBoehm于1988年提出的,它將瀑布模型和演化模型等結合起來,并且強調了其他模型均忽略了的風險分析。螺旋模型更適合于大型軟件的開發(fā)。該模型將開發(fā)劃分為制訂計劃、風險分析、實施開發(fā)和客戶評估4類活動。沿著螺旋線每轉一圈,表示開發(fā)出一個更完善的新的軟件版本。如果開發(fā)風險過大,開發(fā)機構和客戶無法接受,項目有可能就此終止。多數(shù)情況下,會沿著螺旋線繼續(xù)下去,自內向外逐步延伸,最終得到滿意的軟件產品。
五、演化模型
演化模型(EvolutionaryModel)主要針對事先不能完整定義需求的軟件項目開發(fā)。許多軟件開發(fā)項目由于人們對軟件需求的認識模糊,很難一次開發(fā)成功,返工再開發(fā)難以避免。為此,人們對需開發(fā)的軟件給出基本需求,作第一次試驗開發(fā),其目標僅在于探索可行性和弄清需求,取得有效的反饋信息,以支持軟件的最終設計和實現(xiàn)。通常把第一次試驗性開發(fā)出的軟件稱為原型(prototype)。
“丟棄型”:當原型開發(fā)后,已獲得了更為清晰的需求反饋信息,原型無需保留而丟棄,開發(fā)的原型僅以演示為目的,這往往用在軟件的用戶界面的開發(fā)上;
“樣品型”:原型規(guī)模與最終產品相似,只是原型僅供研究用;
“漸增式演化型”:把原型作為最終產品的一部分,它可滿足用戶的部分需求,經用戶試用后提出精化系統(tǒng)、增強系統(tǒng)能力的需求,開發(fā)人員根據(jù)反饋信息,實施開發(fā)的迭代過程。
演化模型的形式
信息流(細化)R:需求D:設計C/T:編碼/測試I/AS:安裝和驗收支持R1DC/TI/ASR2RnDDC/TC/TI/ASI/AS工作版本1工作版本2工作版本n
演化模型的例子
六、轉換模型
轉換模型是用形式化的方法自動生成程序,主要步驟為:
采用形式化的規(guī)格說明書。通過自動系統(tǒng)自動地變換成代碼。必要時做一些優(yōu)化,改進性能。交付用戶使用。根據(jù)使用的經驗來調整形式化的規(guī)格說明書。返回第一步重復整個過程。轉換模型的優(yōu)點:解決了代碼結構經多次修改而變壞的問題;減少了許多中間步驟,如設計、編碼、測試等等,是軟件自動生產的有意義的嘗試。但是,轉換模型仍有較大局限。七、智能模型智能模型(IntelligentModel)也稱為基于知識的軟件開發(fā)模型,它是知識工程與軟件工程在開發(fā)模型上結合的產物。它有別于上述的幾種開發(fā)模型,它的維護并不在程序一級上進行,而把精力更多集中于具體描述的表達上。具體描述可以使用形式有規(guī)約,也可以使用知識處理語言描述等。由于要將規(guī)則和推理機制應用到開發(fā)模型中,故必須建立知識庫,將模型本身、軟件工程知識和特定領域的知識分別存入知識庫,由此構成某一領域的軟件開發(fā)系統(tǒng)。智能模型獲取需求需求分析具體描述
優(yōu)化程序需求分析需求分析需求分析知識庫/專家系統(tǒng)
4.5.3
軟件開發(fā)方法軟件開發(fā)方法有些是針對某一活動的,屬于局部性的軟件開發(fā)方法。但實踐表明,針對分析和設計活動的軟件開發(fā)方法更為重要。評價一種具體軟件開發(fā)方法的4個特征:(1)技術特征:支持各種技術概念的方法特色(2)使用特征:用于具體開發(fā)時的有關特色(3)管理特征:增強對軟件開發(fā)活動管理的能力方面的特色(4)經濟特征:給軟件機構產生的在質量和生產力方面的可見效益。一、模塊化方法模塊化方法(ModularMethod)是把一個待開發(fā)的軟件分解成若干較為簡單的部分,稱為模塊(modules),每個模塊分別獨立地開發(fā)、測試,最后再組裝出整個軟件。把系統(tǒng)分解成模塊,應遵循的規(guī)則:(1)在一個模塊內部體現(xiàn)最大程度的關聯(lián),只實現(xiàn)單一功能的模塊具有這種特性。(2)最低的耦合度,即不同的模塊之間的關系盡可能弱。(3)模塊的層次不能過深,一般應盡量控制在7層以內。(4)接口清晰、信息隱蔽性好。(5)模塊大小適度。(6)盡量采用已有的模塊,提高模塊復用率。二、結構化方法結構化方法是強調結構的合理性以及所開發(fā)的軟件的結構合理性,由此提出了一組提高軟件結構合理性的準則,如分解和抽象、模塊的獨立性、信息隱蔽等。針對不同的開發(fā)活動,它有結構化分析、結構化設計、結構化編程和結構化測試。結構化分析方法給出一組產生功能規(guī)約的原理和技術,利用圖形表示用戶需求,以數(shù)據(jù)流圖和控制流圖為基礎,伴以數(shù)據(jù)詞典,并配上結構化語言、判定表和判定樹等手段,達到為問題的解決建立模型。三、面向數(shù)據(jù)結構方法
結構化方法以分析信息流為主,用數(shù)據(jù)流圖來表示信息流。面向數(shù)據(jù)結構方法,是從數(shù)據(jù)結構方面分析,即分析信息結構,并用數(shù)據(jù)結構圖來表示,再在此基礎上進行需求分析,導出軟件的結構。面向數(shù)據(jù)結構的開發(fā)方法包括分析和設計活動。由于一些應用領域的信息都有層次分明的信息結構,因此在分析活動時,可以用數(shù)據(jù)結構來分析和表示問題的信息域;在設計活動時,不同性質的數(shù)據(jù)結構可以用具有相應控制結構的程序來處理。面向數(shù)據(jù)結構方法有:Warnier法、Jachson法、DSSD法等。四、面向對象方法在軟件開發(fā)過程中把面向對象的思想運用其中并指導開發(fā)活動的系統(tǒng)方法,稱為面向對象方法(ObjectOrientedMethod),簡稱OO方法。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接的對應關系。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統(tǒng)。面向對象分析(OOA):從問題陳述入手,分析和構造所關心的現(xiàn)實世界問題的模型,并用相應的符號系統(tǒng)表示,明確抽象目標系統(tǒng)必須做的事,而不是如何做。面向對象設計(OOD)與實現(xiàn)。由于國際上出現(xiàn)了多種面向對象的方法,每種方法都有自己的表示法、過程和工具,甚至各種方法所使用的術語也不盡相同。這一現(xiàn)狀導致開發(fā)人員經常為選擇何種面向對象方法而爭論,但是每種方法都各有短長,很難找到一個最佳答案。統(tǒng)一建模語言(UnifiedModelingLanguage,UML)的初衷是結束面向對象領域中的方法大戰(zhàn),形成了大家公認的一套建模方法。UML的重要性:(1)可以消除一些潛在的不必要的差異,以免用戶混淆;(2)通過統(tǒng)一語義和符號表示,能夠穩(wěn)定面向對象技術市場,從而可以大大拓寬所研制與開發(fā)的軟件系統(tǒng)的適用范圍,并大大提高其靈活程度。四、面向對象方法五、軟件復用和構件技術軟件復用是指通過對已有軟件的各種有關知識來建立新的軟件,這些知識包括:領域知識、開發(fā)經驗、設計經驗、設計決定、體系結構、需求、設計、編碼、測試和文檔等。軟件復用的目的是降低軟件開發(fā)和維護的成本,提高軟件開發(fā)效率,提高軟件的質量。構件是一種可復用的一段軟件(可為二進制形式)。軟件構件與其他可復用軟件模塊的區(qū)別:它既能夠在設計時使用或進行修改;也能夠在二進制執(zhí)行模塊時使用或修改。開發(fā)和使用可復用的構件是從面向對象的技術發(fā)展而來的一項重要技術,通過構件達到全面應用對象技術與概念,成為開發(fā)出高效、低成本應用程序的重要的實現(xiàn)途徑。構件技術是一種社會化的軟件開發(fā)方法,它使得開發(fā)者可以將由不同語言、不同供應商開發(fā)的構件組合在一起來構造軟件。構件技術必須解決兩大問題:(1)復用,即構件具有通用的特性,所提供的功能能為多種系統(tǒng)使用;(2)互操作,即不同來源的構件能相互協(xié)調、通信,共同完成更復雜的功能。構件技術的優(yōu)點:提高開發(fā)速度。降低開發(fā)成本。增加應用軟件的靈活性。五、軟件復用和構件技術4.5.4軟件過程和過程改進軟件過程的工程含義:軟件過程不僅要有工程視面,也要有合同視面,軟件過程應當涉及獲取過程和供應過程。軟件過程包含管理視面,提高生產率和軟件質量這兩個目標能否實現(xiàn),其關鍵還在于管理和支持能力,為此軟件過程應當涉及管理過程和支持過程。軟件過程應包含運作視面,需要考慮與軟件運作相關的問題,運作過程要從工程過程中單獨考慮,形成相對獨立的過程。由于參與軟件過程人員類型不同,因而軟件過程研究的對象應擴展到從事軟件活動的各類人員上。
軟件過程工程:是為建立軟件過程所必須實施的一系列工程化的活動,它涉及與此有關的方法、工具和環(huán)境的研究。
軟件過程模型:軟件過程模型是對軟件過程的結構及其屬性的抽象描述與定義,是軟件過程工程中過程定義活動的結果。
過程建模:是指通過過程設計和過程定義而建立過程模型的活動。過程建?;顒邮擒浖^程工程整個系列活動中最主要的活動之一,所有其他的工程活動都是基于過程建模活動的結果來進行的。4.5.4軟件過程和過程改進
過程建模的目的:支持對軟件過程的理解和交流。支持對軟件過程的分析。支持軟件過程中的通信。支持對軟件過程的管理。支持對軟件過程的度量。支持對軟件過程的改進。支持軟件過程的復用。軟件過程改進“軟件過程改進”的定義:是在軟件過程工程中為了更有效地達到優(yōu)化軟件過程的目的所實施的改善或改變其軟件過程的一系列活動。過程改進的關鍵是發(fā)現(xiàn)軟件過程中所存在的問題和缺陷。與過程改進相關的兩個概念:(1)過程質量:指軟件過程描述本身所具備的屬性(靜態(tài)方面);以軟件過程所表現(xiàn)出的過程動作能力來衡量(動態(tài)方面)。(2)過程評價:指對過程建模方法的評價(靜態(tài)方面);指對過程能力的評價(動態(tài)方面)。軟件能力成熟度模型為了正確而有序地進行軟件過程中的活動,必須為軟件過程建立一種能夠良好地描述和表示的模型。有了這種模型,就可以更容易地確定各個階段所需要完成的任務和實現(xiàn)任務的評估方法,表達各個階段之間的次序和關系。軟件能力成熟度模型(CapabilityMaturityModelforSoftware,簡記為CMM)是在1990年提出草案,1991年8月提出CMM1.0版本的。其后于1993年提出了CMM1.1版。經過4年在廣泛范圍內的實施,從軟件過程評估中獲得了大量反饋,并據(jù)此不斷改進,于1998年初出版CMM2.0版。通過詳細闡述軟件開發(fā)成熟度框架得到的模型,為各軟件組織提供了更有效的指導來建立過程改進計劃。
CMM模型
CMM模型為較全面地描述和分析軟件過程能力的發(fā)展程度,建立了描述一個組織的軟件過程成熟程度的分級標準。提供了5個成熟度級別:初始級。軟件過程的特點是雜亂無章,有時甚至混亂,幾乎沒有明確定義的步驟,成功完全依賴個人努力和英雄式核心人物??芍貜图墶=⒘嘶镜捻椖抗芾磉^程來跟蹤成本、進度和機能。有必要的過程準則來重復以前在同類項目的成功。
確定級。管理和工程的軟件過程已文件化、標準化,并綜合成整個軟件開發(fā)組織的標準軟件過程。所有的項目都采用根據(jù)實際情況修改后得到的標準軟件過程來發(fā)展和維護軟件。
管理級。制定了軟件過程和產品質量的詳細的度量標準。軟件過程和產品的質量都被開發(fā)組織的成員所理解和控制。
優(yōu)化級。加強了定量分析,通過來自過程質量反饋和來自新觀念、新科技的反饋使過程能不斷持續(xù)地改進。
CMM模型優(yōu)化級(5)可管理級(4)確定級(3)可重復級(2)初始級(1)
不斷改進的過程
能預見的過程
標準一致的過程有紀律的過程
成熟度級別
CMM模型
軟件組織的成熟與不成熟不成熟的軟件組織:軟件過程一般不預先計劃,在項目進行中由實際工作人員及管理員臨時計劃。沒有客觀的標準來判斷產品質量,產品質量得不到保證。一些提高質量的環(huán)節(jié),如檢查、測試等經常由于要趕進度而減少或取消。產品在交付前,對客戶來說,一切都是不可見的。沒有長遠目標,管理員通常只關注解決任何當前的危機。超支、超時,或以加班加點方式趕進度。成熟的軟件組織:有全面而充分的組織和管理軟件開發(fā)和維護過程的能力。管理員監(jiān)視軟件產品的質量以及生產這些產品的過程。有一系列客觀標準來判別產品質量,分析產品和過程中的問題。進度和預算可以按照以前積累的經驗來制定,以保證其可行。預期的成本、進度、功能與性能和質量都能實現(xiàn),并達到目的。能準確及時地向工作人員通報實際軟件過程,并按照計劃有規(guī)則地工作。
軟件組織的成熟與不成熟4.6
工具軟件4.6.1
下載軟件
比較流行的有網(wǎng)際快車FlashGet(JetCar)、網(wǎng)絡螞蟻(NetAnts)、迅雷(Thunder)和GetRight
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南中鋼網(wǎng)集團招聘真題2024
- 管理學研究新探索
- 2025至2030年中國移動單折球桌數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國噴淋式前處理設備行業(yè)投資前景及策略咨詢報告
- 2025-2035年全球及中國羅紋煙片行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告
- 2025-2035年全球及中國個人牙水牙線行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展前景研究報告
- 2024年中國庭院門開門機市場調查研究報告
- 江蘇省南通市2024-2025學年七年級上學期期末語文試題
- 腰痛臨床分析模板
- 2025年醫(yī)療診斷服務合作協(xié)議書
- 家長會課件:六年級數(shù)學家長會老師課件
- avrt房室折返型心動過速
- 全國青少年機器人技術等級考試一二級講稿課件-參考
- 大學計算機概論(Windows10+Office2016)PPT完整全套教學課件
- 護理工作搶救制度
- 2023年教師招聘面試高中政治《堅持以人民為中心》試講稿 統(tǒng)編版 必修三
- “雙減”背景下初中英語作業(yè)優(yōu)化設計的實踐研究
- Barrett食管醫(yī)學知識講解
- DB3302T 1016-2018城市綠地養(yǎng)護質量等級標準
- 2023年寧波財經學院單招面試題庫及答案解析
- 數(shù)獨課件完整版
評論
0/150
提交評論