版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程概述第1章1【本章引言】
自從1946年第一臺電子計算機誕生以來,計算機的研究生產和應用得到迅猛的發(fā)展,計算機系統(tǒng)已經經歷了四個不同的發(fā)展階段,計算機科學成為當今世界上發(fā)展最快和應用最廣的學科之一。然而,我們仍然沒有徹底擺脫“軟件危機”困擾,軟件已經成為限制計算機系統(tǒng)發(fā)展的關鍵因素。為了克服這種困擾,軟件工作者在不斷的研究消除軟件危機的方法,從而逐步形成了計算機科學技術領域中的一門新興的工程學科—軟件工程。本章將對軟件概念、軟件分類、軟件發(fā)展、軟件危機、軟件工程概念等方面做簡要的介紹,通過本章學習,可為后幾章軟件工程的深入學習打下基礎。2第一章軟件工程概述
1.1軟件概述1.2軟件危機1.2軟件工程3【本章重點】軟件工程概念軟件的特點4【學習目標】理解軟件工程的基本概念了解軟件危機的表現形式51.1軟件工程的產生和發(fā)展軟件工程(SoftwareEngineering)是在克服20世紀60年代末所出現的“軟件危機”的過程中逐漸形成與發(fā)展的。由于軟件工程是一門指導計算機軟件系統(tǒng)開發(fā)和維護的工程學科,是一門新興的邊緣學科,涉及到計算機科學、工程科學、管理科學、數學等多學科,研究的范圍廣,主要研究如何應用軟件開發(fā)的科學理論和工程技術來指導大型軟件系統(tǒng)的開發(fā)。例如現代操作系統(tǒng)的開發(fā),如果不采用軟件工程的方法是不可能的。
61.1.1軟件的概念1.1.2軟件的分類1.1.3軟件的發(fā)展1.1軟件概述71.1.1軟件的概念
軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數據及其相關文檔的完整集合。其中,程序是按事先設計的功能和性能要求執(zhí)行的指令序列;數據是使程序能正常操縱信息的數據結構;文檔是與程序開發(fā)、維護和使用有關的圖文材料。8軟件的特點軟件是一種邏輯實體,不是具體的物理實體軟件產品的生產主要是研制軟件具有“復雜性”,其開發(fā)和運行常受到計算機系統(tǒng)的限制軟件成本昂貴,其開發(fā)方式目前尚未完全擺脫手工生產方式軟件不存在磨損和老化問題,但存在退化問題91.1.2軟件的分類
按軟件的作用,一般可以分為以下幾類。1.系統(tǒng)軟件
系統(tǒng)軟件(systemsoftware)是指能與計算機硬件緊密配合在一起,使計算機系統(tǒng)各個部件、相關的軟件、和數據協調高效地工作的軟件。系統(tǒng)軟件是計算機系統(tǒng)的重要組成部分,它支持應用軟件的開發(fā)和運行。系統(tǒng)軟件包括:操作系統(tǒng)、網絡軟件、編譯程序、數據庫管理程序、文件編輯系統(tǒng)、系統(tǒng)檢查與診斷軟件等。102.應用軟件
應用軟件(applicationsoftware)則是在系統(tǒng)軟件基礎上,為解決特定的領域應用而開發(fā)的軟件。按其性質不同可以分為以下幾類:事務軟件
事務信息處理是一個最大的軟件應用領域。如工資單、收/支計算、存貨盤點報表等。這些獨立的系統(tǒng)可以組成管理信息系統(tǒng)(MIS)軟件,它從一個或多個裝有事務信息的數據庫中存取數據。1.1.2軟件的分類11實時軟件
監(jiān)視、分析和控制現實世界中發(fā)生的事件,能以足夠快的速度對輸入信息進行處理并在規(guī)定的時間內作出反應的軟件,稱之為實時軟件。實時系統(tǒng)必須在嚴格的時間范圍內響應,因此實時軟件和計算機系統(tǒng)必須有很高的可靠性和安全性。1.1.2軟件的分類12工程和科學軟件
工程和科學軟件具有數值算法的特點。其應用范圍從天文學到火山學;從自動應力分析到空間航天飛機軌道動力學;從分子生物學到自動化制造。但是,在工程和科學領域中的新的應用已經遠離傳統(tǒng)的數值算法。計算機輔助設計(CAD)、系統(tǒng)模擬和其他交互應用系統(tǒng)已經做到具有實時和系統(tǒng)軟件的特點。1.1.2軟件的分類13嵌入式軟件
嵌入式計算機系統(tǒng)將計算機嵌入在某一系統(tǒng)之中,使之成為該系統(tǒng)的重要組成部分、控制該系統(tǒng)的運行,進而實現一個特定的物理過程。大型的嵌入式計算機系統(tǒng)軟件可用于航空航天系統(tǒng)、指揮控制系統(tǒng)、武器系統(tǒng)等;小型的嵌入式計算機系統(tǒng)軟件可用于工業(yè)的智能化產品之中,這時嵌入式軟件駐留在只讀存儲內,為該產品提供各種控制功能和儀表的數字或圖形顯示功能等。如汽車的剎車控制,空調機、洗衣機的自動控制等。1.1.2軟件的分類14個人計算機軟件
字處理、電子報表、計算機圖形、家庭游戲、數據庫管理、個人和事務財務應用、外部網絡或數據庫存取等數百種應用?;赪eb的軟件人工智能軟件
1.1.2軟件的分類153.工具軟件
是系統(tǒng)軟件和應用軟件之間的支持軟件。一般用來輔助和支持開發(fā)人員開發(fā)和維護應用軟件,以提高軟件的開發(fā)質量和生產率。它包括需求分析工具、設計工具、編碼工具、測試工具、維護工具和管理工具等。工具軟件又可分為垂直工具軟件和水平工具軟件。垂直工具軟件是指生命周期的某一階段特定活動所使用的工具軟件,如分析、設計、測試等活動;水平工具軟件是指整個生命周期活動所使用的工具軟件,如項目管理、配置管理等活動。164.可重用軟件
如各種標準程序庫,通常它是計算機廠家提供的系統(tǒng)軟件中的一部分,對這些標準程序庫里的標準子程序稍加改造,甚至不經改造就可以把它們編入新開發(fā)的程序。今天,世界已把可重用范圍擴展到算法以外,數據結構也可以重用。20世紀90年代的可重用構件則是把數據和相應的操作兩者封裝在一起(通常叫做類或對象),使軟件工程師能夠用可重用構件來建立新的應用程序。171.1.3軟件的發(fā)展1.程序設計時代(1946-1956年)采用“個體生產方式”,即軟件開發(fā)完全依賴于程序員個人的能力水平。2.程序系統(tǒng)時代(1956-1968年)由于軟件應用范圍及規(guī)模的不斷擴大,個體生產已經不能夠滿足軟件生產的需要,一個軟件需要由幾個人協同完成,采用“生產作坊方式”。該階段的后期,隨著軟件需求量、規(guī)模及復雜度的增大,生產作坊的方式已經不能夠適應軟件生產的需要,出現所謂“軟件危機”。183.軟件工程時代(1968年至今)這階段的主要任務是為了克服軟件危機,適應軟件發(fā)展的需要,而采用“工程化的生產”方式。19程序設計程序系統(tǒng)軟件工程軟件的范疇程序程序及說明書產品軟件(項目軟件)主要程序設計語言匯編及機器語言高級語言高級語言系統(tǒng)、程序設計語言軟件工作范圍程序編寫包括設計和測試軟件生存期需求者程序設計者本人少數用戶市場用戶維護責任者
程序設計者開發(fā)小組專職維護人員硬件特征價高、存儲小、可靠性差降價;速度、容量、可靠性明顯提高向超高速、大容量、微型化發(fā)展軟件特征完全不受重視軟件技術的發(fā)展不滿足需要,出現軟件危機開發(fā)技術有進步,但未獲得突破性進展,軟件危機未完全擺脫20
“軟件危機”(Softwarecrisis)的出現是由于軟件的規(guī)模越來越大,復雜度不斷增加,軟件需求量增大。而軟件開發(fā)過程是一種高密集度的腦力勞動,軟件開發(fā)的模式及技術不能適應軟件發(fā)展的需要。致使大量質量低劣的軟件涌向市場,有的花費大量人力財力,而在開發(fā)過程中就夭折。
1.2軟件危機211.軟件危機的含義
軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。這些問題絕不僅僅是不能正常運行的軟件才具有的。實際上,幾乎所有軟件都不同程度地存在這些問題。概括地說,軟件危機包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。鑒于軟件危機的長期性和癥狀不明顯的特征,近年來有人建議把軟件危機更名為“軟件蕭條(depression)”或“軟件困擾(afflication)”。22例如:
IBM公司的OS/360,共約100萬條指令,花費了5000個人年;經費達數億美元,而結果卻令人沮喪,錯誤多達2000個以上,系統(tǒng)根本無法正常運行。OS/360系統(tǒng)的負責人Brooks這樣描述開發(fā)過程的困難和混亂:“…像巨獸在泥潭中作垂死掙扎,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運?!?/p>
1963年,美國飛往火星的火箭因為一個軟件錯誤而爆炸。
1967年8月23日,原蘇聯”結盟一號”載人宇宙飛船也因軟件錯誤燒毀。23“軟件危機”主要表現在兩個方面:(1)軟件產品質量低劣,甚至開發(fā)過程就夭折(2)軟件生產率低,不能滿足需要其他:軟件產品的質量往往靠不住軟件常常是不可維護的軟件通常沒有適當的文檔資料2425上帝見證著恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越猛烈,焦油糾纏得越緊,沒有任何猛獸足夠強壯或具有足夠的技巧,能夠掙脫束縛,最后它們都沉到了坑底。26過去幾十年的大型軟件系統(tǒng)開發(fā)就猶如這樣一個焦油坑,很多大型和強壯的動物在其中劇烈地掙扎。他們中大多數開發(fā)了可運行的系統(tǒng)——不過只有極少數的項目滿足了目標、進度和預算的要求。各種團隊,大型的和小型,龐雜的和精干,一個接一個淹沒在了焦油坑中。表面上看起來好像沒有任何一個單獨的問題會導致困難,每個問題都能獲得解決,但是當它們相互糾纏和積累在一起的時候,團隊的行動就會變得越來越慢272.產生軟件危機的原因由于缺乏軟件開發(fā)經驗和有關軟件開發(fā)數據的積累,使得開發(fā)工作的計劃很難制定,以致經常出現超出經費預算,無法遵循進度計劃,完成開發(fā)的期限一再拖延等情況。軟件需求在開發(fā)的初期階段不夠明確,或是未能得到確切的表達。開發(fā)工作開始后,軟件人員和用戶又未能及時交換意見,造成矛盾在開發(fā)后期集中暴露。開發(fā)過程沒有統(tǒng)一、公認的方法論和規(guī)范進行指導,參加開發(fā)的人員各行其事。另外,設計和實現過程的資料很難維護。未能在測試階段做好充分的檢測工作,提交至用戶的軟件質量差,在運行過程中暴露出大量的問題。283.軟件危機的解決方法
首先應該對計算機軟件有一個正確的認識。應該徹底清除在計算機系統(tǒng)早期發(fā)展階段形成的“軟件就是程序”的錯誤概念。一個軟件必須由一個完整的配置組成。事實上,軟件是程序、數據及相關文檔的完整集合。1983年IEEE為軟件下的定義是:計算機程序、方法、規(guī)則、相關的文檔資料以及在計算機上運行程序時所必須的數據。雖然表面上看來在這個定義中列出了軟件的5個配置成分,但是方法和規(guī)則通常是在文檔中說明并在程序中實現的。29
必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程項目。必須充分吸取和借鑒人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術和方法,特別要吸取幾十年來人類從事計算機硬件研究和開發(fā)的經驗教訓。應該推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并且研究探索更好更有效的技術和方法,盡快消除在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤的概念和做法。30
應該開發(fā)和使用更好的軟件工具。正如機械工具可以“放大”人類的體力一樣,軟件工具可以“放大”人類的智力。在軟件開發(fā)的每個階段都有許多繁瑣重復的工作需要做,在適當軟件工具輔助下,開發(fā)人員可以把這類工作做得既快又好。如果把各個階段使用的軟件工具有機地集合成一個整體,支持軟件開發(fā)的主過程,則稱為軟件工程支撐環(huán)境??傊瑸榱讼浖C,既要有技術措施(方法和工具),又要有必要的組織管理措施。軟件工程正是從管理和技術兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。311.3軟件工程的概念1.3.1軟件工程的定義和原理1.3.2軟件工程的目標1.3.3軟件工程的原則321.3.1軟件工程的定義和原理1.軟件工程的定義
軟件工程(software
engineering)這個名詞是北大西洋公約組織(NATO)科學技術委員會1968年秋在當時的聯邦德國召集了近50名第一流的編程人員、計算機科學家和工業(yè)界巨頭,制定擺脫軟件危機的辦法時提出來的。331.3.1軟件工程的定義和原理
關于什么是軟件工程的定義,每一位軟件工程的作者都給出了自己的不同理解。我們把它定義為:運用工程學的原理和方法來組織和管理軟件的生產和維護,以保證軟件產品開發(fā),運行和維護的高質量和高生產率。1993年,IEEE在《IEEEStandard
Collecation:SoftwareEngineering》給出了以下全面的定義:應用系統(tǒng)的、規(guī)范的和可量化的方法去開發(fā)、運行和維護軟件,即軟件的工程化應用。對(1)中所述方法的研究。34方法過程質量焦點工具軟件工程三要素:方法、工具和過程35軟件工程三要素:方法、工具和過程軟件工程方法:研究軟件開發(fā)“如何做”的技術。軟件工具:研究支撐軟件開發(fā)方法的工具、軟件工具的集成環(huán)境—計算機輔助軟件工程CASE。軟件工程過程:將軟件工程方法與軟件工具相結合實現合理、及時地進行軟件開發(fā)的目的。36軟件工程研究的內容
-----研究內容軟件工程是一門新興的邊緣學科,涉及的學科多,研究的范圍廣。歸結起來軟件工程研究的主要內容有以下幾方面:}軟件開發(fā)軟件開發(fā)方法、技術軟件開發(fā)工具及環(huán)境軟件管理技術軟件規(guī)范(國際規(guī)范)}軟件管理37
(1)軟件開發(fā)技術(軟件結構、開發(fā)方法、工具與軟件工程環(huán)境、軟件工程標準化)
(2)軟件工程管理(質量管理,軟件工程經濟學:成本估算,計劃安排)軟件工程研究的目標是“以較少的投資獲取較高質量的軟件”。本課程主要討論:381.3.1軟件工程的定義和原理2.軟件工程的基本原理
著名的軟件工程專家B.W.Boehm綜合這些學者們的意見并總結了TRW公司多年開發(fā)軟件的經驗,于1983年在一片論文中提出了軟件工程的7條基本原理。他認為這7條原理是確保軟件產品質量和開發(fā)效率原理的最小集合。這7條原理是互相獨立的,其中任意6條原理的組合都不能代替另一條原理。391.3.1軟件工程的定義和原理用分階段的生命周期計劃嚴格管理在軟件開發(fā)與維護的漫長生命周期中,需要完成許多性質各異的工作。這條基本原理意味著,應該把軟件生命周期劃分成若干個階段,并相應地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發(fā)與維護工作進行管理。
不同層次的管理人員都必須嚴格按照計劃各盡其職地管理軟件開發(fā)與維護工作,絕不能受客戶或上級人員的影響而擅自背離預定計劃。40堅持進行階段評審軟件的質量保證工作不能等到編碼階段結束之后再進行。理由:第一,大部分錯誤是在編碼之前造成的。例如,根據Boehm等人的統(tǒng)計,設計錯誤占軟件錯誤的63%,編碼錯誤僅占37%;第二,錯誤發(fā)現與改正得越晚,所需付出的代價也越高。因此,在每個階段都進行嚴格評審,以便盡早發(fā)現在軟件開發(fā)過程中所犯的錯誤1.3.1軟件工程的定義和原理41
有人說:軟件開發(fā)時,一個錯誤發(fā)現得越晚,為改正它所付出的代價就越大。對否?請解釋你的回答。42
在1970年代,IBM等三家公司對此問題做了獨立研究,最后它們得到相似的結論:43實行嚴格的產品控制
在軟件開發(fā)過程中不應隨意改變需求,因為改變一項需求往往需要付出較高的代價。但是,在軟件開發(fā)過程中改變需求又是難免的。由于外部環(huán)境的變化,相應地改變用戶需求是一種客觀需要,顯然不能硬性禁止客戶提出改變需求的要求,而只能依靠科學的產品控制技術來順應這種要求。1.3.1軟件工程的定義和原理44采用現代程序設計技術
20世紀60年代末提出的結構程序設計技術,已經成為絕大多數人公認的程序設計技術。以后又進一步發(fā)展出各種結構分析(SA)與結構設計(SD)技術。近年來,面向對象技術已經在許多領域中迅速地取代了傳統(tǒng)的結構開發(fā)方法。實踐證明,采用先進的技術不僅可以提高軟件開發(fā)和維護的效率,而且可以提高軟件產品的質量。1.3.1軟件工程的定義和原理45結果應能清楚地審查
軟件產品不同于一般的物理產品,它是看不見摸不著的邏輯產品。軟件開發(fā)人員(或開發(fā)小組)的工作進展情況可見性差,難以準確度量,從而使得軟件產品的開發(fā)過程比一般產品的開發(fā)過程更難于評價和管理。為了提高軟件開發(fā)過程的可見性,更好地進行管理,應該根據軟件開發(fā)項目的總目標及完成期限,規(guī)定開發(fā)組織的責任和產品標準,從而使得所得到的結果能夠清楚地審查。1.3.1軟件工程的定義和原理46開發(fā)小組的人員應該少而精
軟件開發(fā)小組的組成人員的素質應該好,而人數則不宜過多。開發(fā)小組人員的素質和數量,是影響軟件產品質量和開發(fā)效率的重要因素。素質高的人員的開發(fā)效率比素質低的人員的開發(fā)效率可能高幾倍至幾十倍,而且素質高的人員所開發(fā)的軟件中的錯誤明顯少于素質低的人員所開發(fā)的軟件中的錯誤。此外,隨著開發(fā)小組人員數目的增加,因為交流情況討論問題而造成通信開銷也急劇增加。1.3.1軟件工程的定義和原理47承認不斷改進軟件工程實踐的必要性Boehm提出應把承認不斷改進軟件工程實踐的必要性作為軟件工程的第七條基本原理。按照這條原理,不僅要積極主動地采納新的軟件技術,而且要注意不斷總結經驗。例如,收集進度和資源耗費數據,收集出錯類型和問題報告數據等。這些數據不僅可以用來評價新的軟件技術的效果,而且可以用來指明必須著重開發(fā)的軟件工具和應該優(yōu)先研究的技術。1.3.1軟件工程的定義和原理481.3.2軟件工程的目標
組織實施軟件工程項目,從技術上和管理上采取了多項措施以后,最終希望得到項目的成功。成功指的是達到以下幾個主要的目標:付出較低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護費用;能按時完成開發(fā)工作,及時交付使用。。49501.3.3軟件工程的原則
軟件工程的目的是提高軟件生產率,提高軟件質量,降低軟件成本。為了達到這個目的,在軟件的開發(fā)過程中必須遵循以下軟件工程原則。抽象
抽象事物最基本的特征和行為,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山西省腦癱康復醫(yī)院公開招聘編制外合同制工作人員備考題庫完整參考答案詳解
- 廈門市大嶝中學2025-2026學年下學期公開招聘非在編合同教師備考題庫及1套參考答案詳解
- 2025河南大學護理與健康學院誠聘人才筆試備考重點題庫及答案解析
- 2025云南昆明市衛(wèi)生學校秋季學期招聘11人筆試備考重點試題及答案解析
- 2025年黃岡市興黃投資引導基金有限公司面向社會公開招聘備考題庫及答案詳解參考
- 西華大學2025年美術與設計學院碩士教師招聘(2人)筆試備考重點題庫及答案解析
- 2025年天津藝考美術試卷及答案
- 2025陜西西北工業(yè)大學繼續(xù)教育學院非事業(yè)編人員招聘2人備考考試題庫及答案解析
- 2025廣西北海市產業(yè)園區(qū)改革發(fā)展辦公室招錄公益性崗位人員1人筆試備考重點題庫及答案解析
- 2025江西吉安市贛州橙芷酒店有限公司井岡山分公司招聘員工17人筆試參考題庫附帶答案詳解(3卷合一版)
- 2025年植物標本采集合同協議
- 2025天津市第二批次工會社會工作者招聘41人考試筆試參考題庫及答案解析
- 膽管重復畸形健康宣教
- 校園反恐防暴2025年培訓課件
- 2026年安徽城市管理職業(yè)學院單招職業(yè)技能測試模擬測試卷附答案
- 2025年秋季學期國家開放大學《人文英語4》期末機考精準復習題庫
- 護工的溝通技巧
- 浮選藥劑及其作用原理資料課件
- 國開電大軟件工程形考作業(yè)3參考答案
- 皮部經筋推拿技術操作方法及常見疾病的皮部經筋推拿技術
- 冠脈痙攣診療進展
評論
0/150
提交評論