




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