XXXX秋 計算機學科概論 軟件工程概述_第1頁
XXXX秋 計算機學科概論 軟件工程概述_第2頁
XXXX秋 計算機學科概論 軟件工程概述_第3頁
XXXX秋 計算機學科概論 軟件工程概述_第4頁
XXXX秋 計算機學科概論 軟件工程概述_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程

SoftwareEngineering

2010秋1.1軟件危機

軟件危機的定義、含義、實質、具體表現、產生的原因、解決途徑1.2軟件工程

軟件工程的定義、基本原理、 軟件工程方法學、要素 結構化方法、面向對象方法1.3軟件生命周期

瀑布、快速原型、增量、螺旋、噴泉、RUP、敏捷、MS主要內容計算機系統(tǒng)的發(fā)展歷程 系統(tǒng)的概念(1)若干部件的集合;(2)每個部件有自己獨立的功能和邊界;(3)部件之間的關系構成系統(tǒng)的結構;(4)部件之間的相互作用構成系統(tǒng)的運動。軟件危機結構的概念:元素及關系。關系:1:11:mm:n系統(tǒng)的觀點:完整、層次、功能、運動計算機系統(tǒng)的發(fā)展歷程 過程文檔數據庫人員軟件硬件計算機系統(tǒng)的組成

所謂計算機系統(tǒng)就是指適當地組織在一起的一系列系統(tǒng)元素的集合,這些系統(tǒng)元素互相配合、相互協作,通過對信息的處理而完成預先定義的目標。計算機系統(tǒng)的發(fā)展歷程 計算機系統(tǒng)的發(fā)展歷程:經歷了四個不同的發(fā)展階段。個體開發(fā)(1950-1960)軟件工程(1970-1980)軟件作坊(1960-1970)軟件產業(yè)(1980-)4GT和4GL?1.1軟件危機計算機系統(tǒng)的發(fā)展歷程 計算機系統(tǒng)的發(fā)展軟件危機軟件危機“危機”:(1)是危險的環(huán)境中醞釀的機會,也是機遇背后暗藏的危險(2)危險的機會、矛盾、出事了(3)政治危機、經濟危機、金融危機、信任危機、心理危機、婚姻危機……1.1軟件危機軟件危機“危機”的含義一是指突發(fā)事件,出乎人們意料發(fā)生的,如地震、水災、空難、疾病爆發(fā)、恐怖襲擊、戰(zhàn)爭等;

二是指人所處的緊急狀態(tài)。

當個體遭遇重大問題或變化發(fā)生使個體感到難以解決、難以把握時,平衡就會打破,正常的生活受到干擾,內心的緊張不斷積蓄,繼而出現無所適從甚至思維和行為的紊亂,進入一種失衡狀態(tài),這就是危機狀態(tài)。危機意味著平衡穩(wěn)定的破壞,引起混亂、不安。危機出現是因為個體意識到某一事件和情景超過了自己的應付能力,而不是個體經歷的事件本身。軟件危機

軟件危機的定義軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。

即:效率和質量的問題。軟件危機軟件危機的具體表現(1)開發(fā)成本和進度估計不準。(2)用戶對“已完成的”軟件系統(tǒng)不滿意。(3)軟件質量往往靠不住。(4)軟件常常是不可維護的。(5)軟件通常沒有適當的文檔資料。(6)軟件成本逐年上升。(7)軟件開發(fā)生產率滯后于硬件和計算機應用普及。軟件危機機軟件開發(fā)發(fā)周期::一個軟件件從定義、開開發(fā)、使使用和維維護,直到最最終被廢棄,要經歷歷一個漫漫長的時時期,該該時期稱稱為軟件件的生命命周期。。軟件危機機軟件危機機案例8客戶所付的錢9上線后的技術支持7最后交付給用戶的軟件0客戶真正的需求1客戶解釋他們想要的4程序員寫出的代碼2項目負責人對客戶需求的認識3系統(tǒng)分析員分析的6項目文檔一片空白5顧問所描繪的情景軟件危機機產生軟件件危機的的原因::(1)軟軟件本身身的特性性缺乏可見見性、無無制造過過程、規(guī)規(guī)模龐大大(2)對對軟件開開發(fā)錯誤誤的認識識和做法法軟件就是是程序、、開發(fā)軟軟件就是是編程序序、輕視視文檔、、不懂測試試、不想想維護、、輕視管管理(3)開開發(fā)與維維護的方方法不正正確非工程化化(個體體、軟件件作坊))落后的方方法學((結構化化的、面面向對象象的)(4)概概念的商商業(yè)炒作作與迷信信軟件危機機仍然在在困擾我我們。軟件危機機不同時期期對軟件件修改付付出的代代價:引入同一一變動付付出的代代價隨時時間變化化的趨勢勢:越晚晚越大。。O早中晚變化出現現的時期期代價軟件危機機軟件危機機軟件危機機與《人人月神話話》焦油油坑史前史中中,沒有有別的場場景比巨巨獸在焦焦油坑中中垂死掙掙扎的場場面更令令人震撼撼。上帝帝見證著著恐龍、、猛犸象象、劍齒齒虎在焦焦油中掙掙扎。它它們掙扎扎得越是是猛烈,,焦油糾糾纏得越越緊,沒沒有任何何猛獸足足夠強壯壯或具有有足夠的的技巧,,能夠掙掙脫束縛縛,它們們最后都都沉到了了坑底。。軟件危機機軟件危機機與《人人月神話話》焦油油坑過去幾十十年的大大型系統(tǒng)統(tǒng)開發(fā)就就猶如這這樣一個個焦油坑坑,很多多大型和和強壯的的動物在在其中劇劇烈地掙掙扎。他他們中大大多數開開發(fā)出了了可運行行的系統(tǒng)統(tǒng)——不過,其其中只有有非常少少數的項項目滿足足了目標標、時間間進度和和預算的的要求。。各種團團隊,大大型的和和小型的的,龐雜雜的和精精干的,,一個接接一個淹淹沒在了了焦油坑坑中。表表面上看看起來好好像沒有有任何一一個單獨獨的問題題會導致致困難,,每個都都能被解解決,但但是當它它們相互互糾纏和和累積在在一起的的時候,,團隊的的行動就就會變得得越來越越慢。對對問題的的麻煩程程度,每每個人似似乎都會會感到驚驚訝,并并且很難難看清問問題的本本質。不不過,如如果我們們想解決決問題,,就必須須試圖先先去理解解它。軟件危機機消除軟件件危機的的途徑::(1)對對軟件正正確認識識。(2)推推廣使用用成功的的技術和和方法。。(3)研研究探索索更好更更有效的的技術和和方法。。(4)應應該開發(fā)發(fā)和使用用更好的的軟件工工具??傊瑸闉榱讼浖NC,既既要有技技術措施施(方法法和工具具),又又要有必必要的組組織管理理措施。。軟件工程程正是從從管理和技術兩方面研研究如何何更好地地開發(fā)和和維護計計算機軟軟件的一一門新興興學科。。(1)軟軟件是無無形的((intangible)比其他工工程產品品更加不不可捉摸摸。你無法感感覺軟件件產品的的形狀,,它的設設計也難難以直觀觀表示。。因此確確定軟件件產品的的質量或或者估計計其開發(fā)發(fā)的工作作量是非非常困難難的。這這就是人人們總是是低估系系統(tǒng)開發(fā)發(fā)時間的的一個原原因。軟件的特特性軟件的特特性(2)軟軟件副本本的大批批量生產產輕而易易舉絕大多數數其他類類型的工工程師非非常關心心每一個個部件耗耗費的成成本與勞勞動量。。換句話話說,對對于有形形產品,,設計完完成之后后的制作作過程往往往是代代價昂貴貴的部分分。與之相反反,軟件件產品能能通過網網絡下載載或制作作CD以以極低的的成本進進行復制制。因此此,幾乎乎全部的的軟件成成本都存存在于它它的開發(fā)發(fā)過程中中,而不不是制造造過程中中。軟件的特特性(3)軟軟件業(yè)是是勞動密密集型的的通過使用用機器,,制造業(yè)業(yè)與建筑筑業(yè)的許許多領域域已經實實現了自自動化;;因此其其他工程程分支可可以用更更少的勞勞動量生生產出更更多的產產品。但但是,使使軟件的的設計與與編程完完全實現現自動化化,需要要真正““智能””的機器器。目前前這個方方向上的的嘗試離離成功還還很遙遠遠。軟件的特特性(4)一一個沒有有經過充充分訓練練的軟件件開發(fā)人人員很容容易編寫寫出難以以理解和和修改的的軟件編程新手手可以創(chuàng)創(chuàng)建復雜雜的系統(tǒng)統(tǒng)完成有有用的功功能,但但它的設設計卻可可能極其其紊亂。。其他工工程領域域也可能能產生不不良的設設計,但但是這些些缺陷通通常比較較容易發(fā)發(fā)現,因因為它們們不會隱隱藏在上上千頁的的源代碼碼中。例例如,如如果土木木工程師師設計了了一座不不安全的的橋梁,,審查人人員一般般會比較較容易地地發(fā)現設設計中的的缺陷,,因為他他們清楚楚地知道道在每張張圖紙和和每次計計算中應應當尋找找什么。。軟件的特特性(5)軟件本身身很容易易修改但由于它它的復雜雜性,又又很難正正確地修修改人們總是是試圖在在尚未完完全了解解軟件的的時候就就去修改改它,而而這些修修改又會會帶來新新的錯誤誤。軟件的特特性(6)軟軟件不像像其他的的工業(yè)產產品那樣樣會因使使用而磨磨損,隨隨著反復復修改,,它的設設計會逐逐漸退化化對軟件的的修改很很容易引引入新的的缺陷,,因此修修改過的的軟件從從設計角角度講容容易變差差。隨著著時間的的流逝,,軟件后后續(xù)版本的設計可可能會表表現出嚴嚴重的退退化,這這時就需需要完全全重新設設計了。。軟件的特特性(6)軟軟件不像像其他的的工業(yè)產產品那樣樣會因使使用而磨磨損,隨隨著反復復修改,,它的設設計會逐逐漸退化化。軟件的特特性軟件的特特性造成成的問題題總而言之之,以上上這些特特性說明明,大部部分現有有軟件的的質量都都相對較較差,而而且還在在不斷地地變得更更差。同時,對對新的、、修改過過的軟件件的需求求旺盛,,客戶希希望它們們質量高高,并且且能夠很很快地生生產出來來。因此,軟軟件開發(fā)發(fā)人員常常常滿足足不了經經理與客客戶的期期望———許多軟軟件項目目不是根根本沒有有交付,,就是推推遲交付付而且超超出了預預算。此外,許許多已交交付的軟軟件系統(tǒng)統(tǒng)的問題題太多,,從未投投入使用用;而其其他一些些軟件在在使用前前需要做做較大的的修改。。什么是工工程對“工程程(engineering)”的理解解:大事情、施工的過程、工工程學科科。大事情::大的、復復雜的、、由眾多多的人共共同完成成的。如建筑工工程、三三峽工程程、航天天工程。。什么是工工程對“工程程(engineering)”的理解解:1.對““工程””的理解解:大事事情,施工的過程,工程程學科。。施工的過程:分析設計實現維護做啥,怎怎么做,,用什么么做(工工具、技技術),,誰作,,什么時時候做開始做:………做得怎么樣??持久使用:維維修是啥,要啥,,啥樣,理解解,搞清楚,,弄明白什么是工程1.對“工程程”的理解::大事情,施工的過程,工程學科科。工程學科的簡稱。文、理、法、、醫(yī)、農、工工……計算機工程、、化學工程、、機械工程、、電子工程………什么是工程1.對“工程程”的理解“人”與“草草”的區(qū)別“人”與其它它“動物”的的共性:面對對復雜性復雜性:體力力與智力受到到挑戰(zhàn)科學:揭示復復雜性技術:如何解解決復雜性工程:運用科科學與技術解解決復雜性軟件工程:靠靠計算機軟件件延伸人的智智力構建一個小狗狗屋可以由一個人人制造需求:最小的模型簡單的過程簡單的工具由一個團體建建設,并且需需要更高的效效率、更精確確的時間限制制,需求模型型,良好定義義的過程,功功能強大的工工具構造一棟房屋屋構建一個高層層建筑過程有限的理論知知識早期的結構現代的結構進步-先進的原原材料和先先進的分析范圍-Pantheon的的五倍范圍Cheops的3倍高高度房屋建?!肮こ獭钡亩ǘx定義有很多,,通常來說::用最少的代價價解決問題......目的的是處理實際際的難題......以科科學知識為手手段......建造造工具......服務務于人類目標:使普通人能做做以前只有專專家圣手才能能做的事情。。科學商業(yè)專業(yè)工程生產科學商業(yè)專業(yè)工程生產手工“工程”的進進化“工程”化化的步伐手工(Craft)商業(yè)(Commerical)工程(ProfessionalEngineering)行家里手和業(yè)余天才熟練的工匠受過系統(tǒng)教育的專業(yè)人員直覺與強力既定程序分析與理論偶然的進步注重實效地優(yōu)化以科學為指導地升級換代不經意的推廣言傳身教專業(yè)教育課程奢侈地使用原料注重成本與原料利用原料多次利用生產是為了使用而不是出售為銷售而生產市場份額規(guī)范化循環(huán)專門的解決方法土方法規(guī)范化模型與理論新的問題實踐提高討論工程、項目、、科學、技術術、方法、工工具、過程之之間的關系??軟件工程的背背景和歷史1968年由由NATO(北大西洋公公約組織)在在德國Garmish召開的學術會會議上,FeitzBauer首首先提出了““軟件工程””概念。北約(美國)、華約(蘇蘇聯)、第三三世界(中國國)軟件工程的概概念概括地說,軟軟件工程是指指導計算機軟軟件開發(fā)和維維護的工程學學科。采用工工程的概念、、原理、技術術和方法來開開發(fā)與維護軟軟件,把經過過時間考驗而而證明正確的的管理技術和和當前能夠得得到的最好的的技術方法結結合起來,以以經濟地開發(fā)出高質量的軟件并有效效地維護它,這就是軟軟件工程。軟件工程的概概念1993年IEEE的定定義:(1)把系統(tǒng)統(tǒng)化的、規(guī)范范的、可度量量的途徑應用用與軟件開發(fā)發(fā)、運行和維維護;(2)研究((1)中的途途徑。軟件工程的本本質特性1.關注大型型程序的構造造2.中心課題題是控制復雜雜性(分解便便于管理)3.軟件經常常變化4.開發(fā)效率率非常重要5.和諧協作作是關鍵6.軟件必須須有效地支持持用戶7.開發(fā)者與與使用者文化化不同(隔行行如隔山)軟件工程的基基本原理1.用分階段段的生命周期期計劃進行嚴嚴格管理2.堅持進行行階段評審3.實行嚴格格的產品控制制4.采用現代代程序設計技技術5.結果應能能清楚地審查查6.開發(fā)小組組的人員應該該少而精7.承認不斷斷改進軟件工工程實踐的必必要性軟件生命周期定義可研分析總體設計(概要、外部、方案)詳細設計(內部、算法、模塊)編碼測試維護定義分析設計實現維護開發(fā)維護軟件工程方法法學通常把在軟件件生命周期全全過程中使用用的一整套技術的集合稱為方法學(methodology),也稱稱為范型(paradigm)。在在軟件工程范范疇中,這兩兩個詞的含義義基本相同。。軟件工程方法法學軟件工程方法法學三要素,,這就是方法、工具和和過程。其中,方法法是完成軟件件開發(fā)的各項項任務的技術術方法,回答答“如何做””的問題;工工具是為方法法的運用提供供自動的或半半自動的軟件件支撐環(huán)境;;過程是為了了獲得高質量量的軟件所需需要完成的一一系列任務的的框架,它規(guī)定了完完成各項任務務的工作步驟驟。軟件工程:一一種層次化技技術工具方法過程質量焦點Softwareengineeringlayers軟件工程三要要素:方法、工具、、過程用什么做怎么做什么時候做什么做成什么樣軟件工程方法法學傳統(tǒng)方法學(結構化方法法學):SA、SD、、SP、ST面向對象方法法學:OOA、OOD、OOP、OOT4、軟件工程之過程生命周期LifeCycle系統(tǒng)規(guī)劃階段段明確系統(tǒng)規(guī)劃階段段明確系統(tǒng)規(guī)劃階段段明確系統(tǒng)開發(fā)請求修改初步調查可行性研究初步方案討論2系統(tǒng)分析階階段3系統(tǒng)設計階階段4系統(tǒng)實施階階段5系統(tǒng)運行階階段將此圖轉換為為程序流程圖圖?模型的發(fā)展瀑布模型瀑布模型(Waterfall)在20世紀80年代之前前,瀑布模型型一直是唯一一被廣泛采用用的生命周期期模型,現在在它仍然是軟軟件工程中應應用得最廣泛泛的過程模型型。特點:(1)階段段間具有順序序性和依賴性性(2)推遲遲實現的觀點點(3)質量量保證的觀點點瀑布模型analysisdesigncodetestdeploy瀑布模型analysisdesigncodetestdeploy瀑布模型analysisdesigncodetestdeploy瀑布模型ThewaterfallmodelofthelifecycleFEASIBILITYSTUDYREQUIREMENTSANALYSISSPECIFICATIONGLOBALDESIGNDETAILEDDESIGNIMPLEMENTATIONDISTRIBUTIONVALIDATION&VERIFICATIONPROJECTPROGRESS瀑布模型ThewaterfallmodelofthelifecycleFEASIBILITYSTUDYREQUIREMENTSANALYSISSPECIFICATIONGLOBALDESIGNDETAILEDDESIGNIMPLEMENTATIONDISTRIBUTIONVALIDATION&VERIFICATIONPROJECTTIMEDESIGNANDIMPLEMENTATION瀑布模型RequirementsDesignBuildTestDeploymentMaintenance傳統(tǒng)的瀑布模模型線性的需求分析驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護定義時期開發(fā)時期維護時期傳統(tǒng)的瀑布模模型線性的實際的瀑布模模型帶“反饋環(huán)””設計驗證規(guī)格說明驗證需求分析驗證編碼測試變化的需求驗證綜合測試維護RequirementsDesignBuildTestDeploymentMaintenance名人語錄TomGilb:“假如你不積積極地解決你你項目(Project)中存在的的風險(risk),它它們就會積極極地解決掉你你”。瀑布方法會掩掩飾項目中真真正的風險,,當你太晚發(fā)發(fā)現它們時已已無濟于事。??焖僭湍P托蚉rototype所謂快速原型是快速建立起起來的可以在在計算機上運運行的程序,,它所能完成成的功能往往往是最終產品品能完成的功功能的一個子子集。delivery交付付,移交快速原型模型型快速原型驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證維護過程開發(fā)過程快速原型的本本質是“快速速”。開發(fā)人人員應該盡可可能快地建造造出原型系統(tǒng)統(tǒng),以加速軟軟件開發(fā)過程程,節(jié)約軟件件開發(fā)成本。。原型的用途途是獲知用戶戶的真正需求求,一旦需求求確定了,原原型將被拋棄。樹:廣度優(yōu)先先增量模型IncrementalModels增量模型也也稱為漸增增模型。使使用增量模模型開發(fā)軟軟件時,把把軟件產品品作為一系系列的增量量構件來設設計、編碼碼、集成和和測試。每每個構件由由多個相互互作用的模模塊構成,,并且能夠夠完成特定定的功能。。使用增量量模型時,,第一個增增量構件往往往實現軟軟件的基本本需求,提提供最核心心的功能。。樹:深度優(yōu)優(yōu)先需求分析驗證規(guī)格說明驗證設計驗證維護針對每個構件完成詳細設計、編碼和集成,經測試后交付給用戶增量模型需求分析驗證規(guī)格說明驗證設計驗證維護針對每個構件完成詳細設計、編碼和集成,經測試后交付給用戶增量模型分析分析分析分析設計設計設計設計編碼編碼編碼編碼測試測試測試測試增量1增量2增量3增量4風險更大的的增量模型型規(guī)格說明設計編碼和集成交付客戶規(guī)格說明設計編碼和集成交付客戶規(guī)格說明設計編碼和集成交付客戶構件1:構件2:構件n:螺旋模型軟件開發(fā)幾幾乎總要冒冒一定風險險,因此,在軟軟件開發(fā)過過程中必須須及時識別別和分析風風險,并且且采取適當當措施以消消除或減少少風險的危危害。螺旋模型的的基本思想想是,使用用原型及其其他方法來來盡量降低低風險。理理解這種模模型的一個個簡便方法法,是把它它看作在每每個階段之之前都增加加了風險分分析過程的的快速原型型模型,如如圖2.6所示。完整的螺旋旋模型如圖圖2.7所所示。圖中中帶箭頭的的點劃線的的長度代表表當前累計計的開發(fā)費費用,螺線線旋過的角度度值代表開開發(fā)進度。。螺旋模型決定目標、、方案和限制制評價方案、、識別風險、、弱化風險開發(fā)、驗證證、下一級產品品計劃下一階階段集成測試螺旋模型圖2.6簡簡化的的螺旋模型型需求分析驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護變化的需求求驗證風險分析風險分析風險分析風險分析風險分析風險分析圖2.7完完整的的螺旋模型型圖2.7完完整的的螺旋模型型迭代模型:建立在BarryBoehm的的螺旋模型型基礎上的的迭代模型:建立在BarryBoehm的的螺旋模型型基礎上的的PlanningRequirementsAnalysis&DesignImplementati

溫馨提示

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

評論

0/150

提交評論