簡單易懂的軟件工程概述_第1頁
簡單易懂的軟件工程概述_第2頁
簡單易懂的軟件工程概述_第3頁
簡單易懂的軟件工程概述_第4頁
簡單易懂的軟件工程概述_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

簡單易懂的軟件工程概述第1章軟件工程概述

本章要點:軟件工程產生的原因軟件工程的基本原理軟件工程方法學和面向對象方法學基本原理軟件過程軟件工程有關工具和環(huán)境本章學習目標:了解軟件工程產生的原因掌握軟件工程的基本原理

了解軟件工程方法學和面向對象方法學基本原理了解軟件過程了解軟件工程有關工具和環(huán)境§1.1軟件工程的產生一、軟件發(fā)展經歷了三個階段:

1、程序設計時代(1946-1956年)

采用“個體生產方式”

2、程序系統(tǒng)時代(1956-1968年)

隨著軟件規(guī)模的擴大,個體生產已經不能夠滿足軟件生產的需要,一個軟件需要由幾個人協(xié)同完成,采用“生產作坊方式”,隨著軟件需求量、規(guī)模及復雜度的增大,生產作坊的方式已經不能夠適應軟件生產的需要,出現所謂“軟件危機”。

主要表現在兩個方面:(1)軟件產品質量低劣,甚至開發(fā)過程就夭折。(2)軟件生產率低,不能滿足需要。“軟件危機”產生的原因“軟件危機”(Software

crisis)的出現是由于軟件的規(guī)模越來越大,復雜度不斷增加,軟件需求量增大。而軟件開發(fā)過程是一種高密集度的腦力勞動,軟件開發(fā)的模式及技術不能適應軟件發(fā)展的需要。致使大量質量低劣的軟件涌向市場,有的軟件花費了大量人力財力,卻在開發(fā)過程中就夭折。3、軟件工程時代(1968年至今)為了克服軟件危機,適應軟件發(fā)展的需要,而采用“工程化的生產”方式。將工程學的某些原理和方法應用在軟件的設計和開發(fā)中來軟件工程研究的主要內容有以下兩個方面:1、軟件開發(fā)技術,它包括軟件開發(fā)方法、技術和軟件開發(fā)工具及環(huán)境、軟件管理技術。2、軟件規(guī)范(國際規(guī)范)包括:(1)軟件開發(fā)技術(軟件結構、開發(fā)方法、工具與軟件工程環(huán)境、軟件工程標準化)(2)軟件工程管理(質量管理,軟件工程經濟學:成本估算,計劃安排)軟件工程研究的目標是“以較少的投資獲取較高質量的軟件”。

§1.2軟件工程及其基本原理

一、軟件工程的的定義軟件工程是指導計算機軟件開發(fā)和維護的工程學科。采用工程學的概念、原理、技術和方法,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來開發(fā)與維護軟件。

二、有關概念程序:為了使計算機實現預期的目的(如解某一算題或控制某一過程)而編排的一系列步驟稱為程序。軟件:計算機的程序加上該程序的各種規(guī)格書或文檔。軟件方法是以大型程序為研究對象的。相應文檔是軟件的核心之一。

軟件工程:生產軟件的工程。研究軟件工程的學問叫軟件工程學(有時人們也把軟件工程學簡稱為軟件工程)。軟件可靠性:軟件在所給條件下和規(guī)定時間內,能完成所要求的功能的性質。

軟件可靠度:軟件在所給條件下和規(guī)定時間中,能完成所要求功能的概率。

軟件工程的基本原理

軟件工程的七條基本原理:

1.用分階段的生命周期計劃嚴格管理

2.堅持進行階段評審3.實行嚴格的產品控制4.采用現代程序設計技術

5.結果應能清楚地審查

6.開發(fā)小組的人員應該少而精

7.承認不斷改進軟件工程實踐的必要性

§1.3軟件生存期

軟件生存期又稱軟件生命周期,是指一個軟件系統(tǒng)從目標提出到最后丟棄的整個過程。軟件工程基本原理強調軟件生命周期的階段性,其基本思想是各階段任務相對獨立,具有明確的完成標志。階段的劃分使得人員分工職責清楚,項目進度控制和軟件質量得到確認。原則上,前一階段任務的完成是后一階段工作的前提和基礎;而后一階段的任務則是對于前一階段問題求解方法的具體化。

生存期瀑布模型

(目標與范圍說明書)(需求說明書)(設計文檔)(程序)(測試報告)(維護報告)(可行性論證報告)問題定義測試運行維護可行性分析需求分析設計編程設計時期開發(fā)時期運行時期圖1.1軟件生命周期的階段劃分一、問題定義問題定義階段必須回答的關鍵問題是:“要解決的問題是什么?”

二、可行性研究此階段的任務不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解決,是否有可行的解決辦法。三、需求分析這個階段的任務,主要是確定目標系統(tǒng)必須具備哪些功能。

四、總體設計這個階段必須回答的關鍵問題是:“應該如何解決這個問題?”

五、詳細設計詳細設計階段的任務就是把解法具體化,設計出程序的詳細規(guī)格說明,包括必要的細節(jié),程序員可以根據它們寫出實際的程序代碼。六、編碼和單元測試這個階段的任務是程序員根據目標系統(tǒng)的性質和實際環(huán)境,選取一種適當的高級程序設計語言(必要時用匯編語言),把詳細設計的結果翻譯成用選定的語言書寫的程序,并且仔細測試編寫出的每一個模塊。

七、綜合測試這個階段的任務是通過各種類型的測試,使軟件達到預定的要求。八、軟件維護維護階段的任務,是通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。

§1.4軟件工程方法學

軟件開發(fā)方法和技術可歸納為三大類:瀑布型模型、原型化模型和變換型。一、軟件開發(fā)的瀑布型模型嚴格按照軟件生命周期的階段劃分,順序執(zhí)行各階段構成軟件開發(fā)的瀑布型模型。瀑布模型的特點是:1.階段間具有順序性和依賴性

順序性要求每個階段工作開始的前提是其上一階段工作結束。因此前一階段輸出的文檔就是其后一階段的輸入文檔。依賴性是指各階段工作正確性依賴與上一階段工作的正確性。

2.推遲實現的觀點編碼開始的越早,項目完成的時間很可能越長。這是因為過早進入編碼往往意味著大量的返工。3.質量保證的觀點為保證軟件開發(fā)質量,瀑布型模型在生命周期的各階段強調:第一,制作規(guī)定的文檔是各階段完成的里程碑,沒有交出合格的文檔也就沒有完成該階段的任務。第二,每個階段結束之前都必須對完成的文檔進行評審,以便及早發(fā)現問題,改正錯誤。

二、原型化開發(fā)模型瀑布型模型的缺陷在于軟件開發(fā)階段推進是直線型的,工程實踐說明這是一個“理想化”模型,不完全符合人們認識問題的規(guī)律。原型化開發(fā)方法。其主要思想是:先建立一個能夠反映用戶需求的原型系統(tǒng)(“樣機”),使得用戶和開發(fā)者可以對目標系統(tǒng)的概貌進行評價、判斷。然后對原型進行若干輪反復的擴充、改進、求精,最終建立完全符合用戶需求的目標系統(tǒng)。初始原型可以非常簡單,它只實現未來系統(tǒng)的主要功能,系統(tǒng)主要模塊之間的重要接口。初始原型主要用于向用戶展示系統(tǒng)功能概貌。確認開發(fā)人員對系統(tǒng)主要功能的理解。對系統(tǒng)應該具備的功能的演示運行通常可以對用戶與開發(fā)人員之間的溝通起到催化劑作用,確立用戶對項目開發(fā)的信心。

基于初始原型的評價可以建立實驗性進化原型。實驗性進化原型的建立是一個逐步迭代的增量過程,每次迭代的新版本應該具有更強的功能,更優(yōu)的性能。當實驗性進化原型得到最終確認以后,開發(fā)進入目標系統(tǒng)的實現階段:將原型轉換為完全符合系統(tǒng)運行環(huán)境要求的目標系統(tǒng),并進行最終集成和驗收測試。由原型轉化為目標系統(tǒng)的途徑有:

(1)拋棄原型法:建立原型系統(tǒng)的目的主要是準確定義系統(tǒng)需求,嚴格驗證方案設計。原型使用完畢后拋棄,然后在重新建立目標系統(tǒng)。應用拋棄原型法建立原型的過程相當于瀑布型模型的需求分析和總體設計過程。(2)演化原型法:目標系統(tǒng)是對實驗性原型不斷擴充、完善送代的結果。每次迭代都要求再分析、再設計、再實現以及再測試評價。當認為問題求解基本滿意時就可以交付系統(tǒng)的初始版本了。演化原型法的實施要求用戶和開發(fā)人員在一個相當長的時期中對信息交流和系統(tǒng)修改持一種開放的態(tài)度。許多面向市場的軟件產品采用所謂β版發(fā)布,就是施行演化原型法開發(fā)的一種策略。

原始用戶需求初始原型快速生成評價∕確認實驗性原型進化最終確認目標系統(tǒng)實現目標系統(tǒng)測試系統(tǒng)交付展示∕理解∕溝通補充∕確認∕優(yōu)化三、變換型變換型開發(fā)方法是一種形式化軟件開發(fā)方法。它從軟件需求的形式化規(guī)格說明出發(fā),經過一系列的程序變換,得到最終的程序系統(tǒng)。軟件需求形式化規(guī)格說明,也往往經過原型檢查和確認。如能保證形式化規(guī)格說明是正確的,在逐級變換中所使用的變換規(guī)則是保持正確性的變換規(guī)則,那么就可確認,變換最后所得到的程序系統(tǒng)一定是正確的。變換型開發(fā)方法必須有嚴格的數學理論和形式化技術的支持,目前這種開發(fā)方法尚處于研究和實驗階段。

1.4.2面向對象方法

面向對象方法學的基本思想是,在問題求解過程中,應該盡可能符合人類習慣的思維方式。軟件開發(fā)的方法應該過程與人類認識世界解決問題習慣的方法與過程接近,也就是使描述問題的問題空間與問題求解的解空間在結構上盡可能一致。客觀世界的問題都是由客觀世界中的實體和實體之間的相互聯系構成的。對象(Object)是客觀世界中的實體在問題域中的抽象。對象的概念是抽象數據類型概念的發(fā)展。面向對象的方法的基本出發(fā)點是,將描述實體對象靜態(tài)屬性的數據與描述實體動態(tài)行為的操作統(tǒng)一為一個不可分割的整體。對象與傳統(tǒng)數據類型的區(qū)別在于:(1)對象不是被動地等待外部對其施加操作。對象是進行操作的主體,通過消息發(fā)送請求對象主動地執(zhí)行某些操作,處理其私有數據。

面向對象的方法學可以概括為:面向對象的方法=對象+類+繼承+消息通信

(1)客觀世界是由各種對象組成的。對象是可以分解的:復雜對象可以由比較簡單的對象組合構成。因此面向對象的軟件系統(tǒng)是若干對象的有機集合。(2)所有對象按其結構成分,可以劃對分為各種對象類。

(3)局部于一個對象的私有成分都被“封裝”在對象內部,外部不能訪問。對象之間僅能通過消息傳遞互相作用。

面向對象方法的主要優(yōu)點是:(1)使用現實世界的概念抽象地思考問題從而自然地解決問題。

(2)保證軟件系統(tǒng)的穩(wěn)定性。(3)軟件系統(tǒng)具有可重用性。

(4)軟件系統(tǒng)具有良好的可維護性。

§1.5軟件過程軟件過程(SoftwareProcesses)也稱為軟件生存周期過程或軟件過程組,是指軟件生存周期中的一系列相關過程(Process)。過程就是活動的集合,活動是任務的集合,任務則起到把輸入加工成輸出的作用。活動的執(zhí)行可以是順序的、迭代的(重復的)、并行的、嵌套的或者是有條件地引發(fā)的。軟件過程應當包含以下3個含義:·個體含義:即指軟件或系統(tǒng)在生存周期中的某一類活動的集合,如獲取過程、供應過程、開發(fā)過程、管理過程等。·整體含義:即指軟件或系統(tǒng)在所有上述含義下的軟件過程的總體。·工程含義:即指解決軟件過程的工程,它應用軟件工程的原則、方法來構造軟件過程模型,并結合軟件的具體要求進行例化,以及在用戶環(huán)境中運作,以此進一步提高軟件開發(fā)率、降低成本。工程含義還可以包含如下幾個方面:(1)軟件過程不僅要有工程視面,也要有合同視面(包括系統(tǒng)視面和用戶視面)。

(2)軟件過程包含管理視面。

(3)軟件過程應包含運作視面。

(4)不同角色由于其視面不同,所參與的軟件過程亦不相同。

2、軟件過程的基本成分軟件過程涉及軟件生存周期中相關的過程與活動,其中“活動”是構成軟件過栓的最基本的成分之一。此外,軟件開發(fā)是由多人分工協(xié)作、并使用不同的硬件環(huán)境和軟件環(huán)境來完成的,因此軟件過程還包括支持人與人之間進行協(xié)調與通信的組織結構、資源及約束等因素。因而,過程活動、活動中所涉及的人員、軟件產品、所用資源和各種約束條件是軟件過程的基本成分。

3、軟件過程標準

1995年8月1日,ISO/IEC經過多次討論和修改后,正式發(fā)布了ISO/IEC12207第一版“信息技術軟件生存周期過程”國際標準。我國則根據該草案于1995年頒布GB/T8566一1995《信息技術軟件生存周期過程》國家標準;

ISO/IEC12207國際標準集各種相關標準的優(yōu)點于一體,把軟件生存周期的各個過程分成三類,即主要生存周期過程、支持生存周期過程和組織的生存周期過程,軟件人員可以根據具體的軟件項目進行剪裁。主要生存周期過程包括:(1)獲取過程:確定需方和組織向供方獲取系統(tǒng)、軟件或軟件服務的活動。(2)供應過程:確定供方和組織向需方提供系統(tǒng)、軟件或軟件服務的活動。(3)開發(fā)過程:確定開發(fā)者和組織定義并開發(fā)軟件的活動。(4)操作過程:確定操作者和組織在規(guī)定的環(huán)境中為其用戶提供運行計算機系統(tǒng)服務的活動。(5)維護過程:確定維護者和組織提供維護軟件服務的活動。

支持生存周期過程包括8個過程,其目的是支持其他過程,作為其組成部分,它們有助于軟件項目的成功和質量提高。它包括:

(1)文檔編制過程:確定記錄生存周期過程產生的信息所需的活動。(2)配置管理過程:確定配置管理活動。(3)質量保證過程:確定客觀地保證軟件和過程符合規(guī)定的要求以及已建立的計劃所需的活動。(4)驗證過程:根據軟件項目要求,按不同深度確定驗證軟件所需的活動。

5)確認過程:確定確認軟件所需的活動。(6)聯合評審過程:確定評價一項活動的狀態(tài)和產品所需的活動。(7)審核過程:確定為判斷符合要求、計劃和合同所需的活動。(8)問題解決過程:確定一個用于分析和解決問題的過程(包括不合格)。

組織的生存周期過程包括4個過程,它們被一個軟件組織用來建立和實現構成相關生存周期的基礎結構和人事制度,并不斷改進這種結構和過程。具體包括:

(1)管理過程:確定生存周期過程中的基本管理活動。(2)建立過程:確定建立生存周期過程基礎結構的基本活動。(3)改進過程:確定一個組織為建立、測量、控制和改進其生存周期過程所需開展的基本活動。(4)培訓過程:確定提供經適當培訓的人員所需的活動。

4、軟件過程工程的定義

軟件過程工程就是為建立軟件過程所必須實施的一系列工程化的活動。它涉及與此有關的方法、工具和環(huán)境的研究。

5、軟件過程工程和軟件項目工程如果說軟件過程工程是以軟件過程為中心的工程活動,那么在這種理念形成之前的軟件工程所進行的是以軟件開發(fā)為中心的工程活動,因而被稱之為軟件項目工程。

6、軟件過程周期軟件過程周期,也稱其為軟件過程生存周期或軟件過程生命周期,它是指一個軟件過程從孕育、誕生、成長、衰老的全部歷程。

§1.6軟件工程工具和環(huán)境一、軟件工程環(huán)境的概念和類型

1.按軟件生產的不同方面、不同階段分類

1)軟件開發(fā)環(huán)境:這類環(huán)境目前數量最多,它支持軟件的需求分析、設計、編碼或測試等。這類環(huán)境中有的主要支持編程,也稱為程序設計環(huán)境。如UNIX程序設計環(huán)境

2)軟件項目管理環(huán)境:它們支持軟件的項目管理,諸如計劃、人員組織、成本估算等。

3)軟件質量保證環(huán)境:這類軟件環(huán)境包括程序正確性證明、驗證以及軟件測討的功能GYPSY,AFFIRM,SPECIAL等屬于這一類。

4)軟件維護環(huán)境。

2.按是否與軟件開發(fā)方法有關分類

1)不依賴于軟件開發(fā)方法的環(huán)境:工具箱是這類環(huán)境的主要的一種。它并不依賴于某種件開發(fā)方法,而是將最常用的軟件工具組成一個軟件包,供用戶使用。

2)支持某種軟件開發(fā)方法的環(huán)境:為使軟件開發(fā)建立在更嚴謹的科學基礎之上,許多計算機科學家在形式方法上做了大量研究。

3.按工作方式分類

1)交互式軟件環(huán)境

2)批處理軟件開發(fā)環(huán)境

二、軟件工程環(huán)境的發(fā)展前景整體化是指軟件工程環(huán)境應支持軟件生產的各個階段,應有統(tǒng)一的知識庫支持和統(tǒng)一的用戶界面,各工具間應有一致的接口。有了整體化的軟件工程環(huán)境的支持就能大大改善軟件生產的質量和效率。智能化是指將人們在軟件生產中的豐富知識和經驗收集和歸納起來放入知識庫。這可使當前的交互式軟件工程環(huán)境有大量知識作后盾,交互能力得到進一步提高,以便加快軟件的開發(fā)過程,并大大改善軟件的維護效率。形式化是指將實際應用系統(tǒng)的面向用戶的非形式描述和實現該系統(tǒng)的計算機形式化表示之間盡可能縮短距離,

溫馨提示

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

最新文檔

評論

0/150

提交評論