《軟件工程基本原理》由會員分享,可在線閱讀,更多相關(guān)《軟件工程基本原理(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第1章 軟件工程的基本原理,目的要求,:,認(rèn)識軟件工程這門課的內(nèi)容和教學(xué)安排,了解計算機系統(tǒng)的發(fā)展歷程,軟件危機產(chǎn)生的原因及消除途徑;,掌握軟件工程的概念、基本原理。了解軟件過程的概念,掌握瀑布模型以及軟件生命周期方法學(xué)的階段劃分,了解快速原型模型、增量模型、螺旋模型、噴泉模型的基本思想。,教學(xué)目的、要求,重點、難點,教學(xué)重點:,講述軟件危機產(chǎn)生的原因;軟件工程的概念;軟件過程的概念,瀑布模型以及軟件生命周期方法學(xué)的階
2、段劃分;,教學(xué)難點:,螺旋模型、噴泉模型的基本思想;,講授內(nèi)容:,計算機系統(tǒng)發(fā)展歷程;軟件危機;軟件工程。軟件過程的概念,瀑布模型以及軟件生命周期方法學(xué)的階段劃分快速原型模型、增量模型、螺旋模型、噴泉模型。,計算機系統(tǒng)應(yīng)用的日益普及和深化。硬件和軟件的迅速發(fā)展。在計算機系統(tǒng)發(fā)展的早期時代所形成的一些錯誤概念和做法,已經(jīng)嚴(yán)重地阻礙了計算機軟件的開發(fā),為更有效地開發(fā)和維護軟件,軟件工作者在20世紀(jì)60年代后期開始認(rèn)真研究消除軟件危機的方法,從而形成了計算機科學(xué)技術(shù)領(lǐng)域中的一們新興學(xué)科:,計算機軟件工程學(xué),。,計算機系統(tǒng)已經(jīng)經(jīng)歷了4個不同的發(fā)展階段,計算機軟件也經(jīng)歷了4個階段。,60年代中期以前,:
3、,為具體應(yīng)用專門編寫,認(rèn)為無需預(yù)先計劃,規(guī)模較小,編寫者和使用者是同一人,無系統(tǒng)化方法,無管理,人們頭腦中的一個隱含過程,除程序清單無文檔資料。,60年代中期到70年代中期,:第二代,多道程序、多用戶系統(tǒng)的引入,數(shù)據(jù)庫系統(tǒng)的出現(xiàn),重要特征:軟件作坊,廣泛使用產(chǎn)品軟件,但仍使用個體化軟件開發(fā)方法。程序運行時發(fā)現(xiàn)的錯誤必須設(shè)法改正,用戶有了新的需求時必須相應(yīng)的修改程序,硬件或操作系統(tǒng)更新時通常需要修改程序以適應(yīng)新的環(huán)境。,第一節(jié) 軟件概述,一、軟件的發(fā)展與特點,1968年北大西洋公約組織的計算機科學(xué)家在聯(lián)邦德國召開國際會議,討論軟件危機問題,正式提出“軟件工程”。,從20世紀(jì)70年代中期開始的10
4、年,:分布式系統(tǒng),局域網(wǎng)、廣域網(wǎng)、寬帶數(shù)字通信等對軟件開發(fā)者提出了更高的要求,主要特點:出現(xiàn)了微處理器,及智能產(chǎn)品(個人計算機)。,計算機系統(tǒng)發(fā)展的第四代,:以硬件和軟件的綜合效果為主,復(fù)雜的操作系統(tǒng)控制的強大的桌面機及局域網(wǎng)、廣域網(wǎng),與先進的應(yīng)用軟件相配合,已經(jīng)成為當(dāng)前的主流。,計算機軟件發(fā)展的三個階段及其特點,特點,階段,程序設(shè)計,程序系統(tǒng),軟件工程,軟件所指,程序,程序及說明書,程序、文檔、數(shù)據(jù),主要程序設(shè)計語言,匯編及機器語言,高級語言,軟件語言*,軟件工作范圍,程序編寫,設(shè)計和測試,整個軟件生命周期,需求者,程序設(shè)計者,少數(shù)用戶,市場用戶,開發(fā)軟件的組織,個人,開發(fā)小組,開發(fā)小組及大
5、中型開發(fā)機構(gòu),軟件規(guī)模,小型,中、小型,大、中、小型,特點,階段,程序設(shè)計,程序系統(tǒng),軟件工程,決定質(zhì)量的因素,個人技術(shù),小組技術(shù)水平,技術(shù)與管理水平,開發(fā)技術(shù)和手段,子程序、程序庫,結(jié)構(gòu)化程序設(shè)計,數(shù)據(jù)庫,開發(fā)工具,集成開發(fā)環(huán)境,工程化開發(fā)方法,標(biāo)準(zhǔn)和規(guī)范,網(wǎng)絡(luò)及分布式開發(fā),OO,技術(shù),CASE,維護責(zé)任者,程序設(shè)計者,開發(fā)小組,專職維護人員,硬件的特征,高價、存儲量小、可靠性差,降價,速度、容量、可靠性明顯提高,向超高速,大容量,網(wǎng)絡(luò)化,微型化方向發(fā)展,軟件的特征,完全不受重視,軟件的技術(shù)發(fā)展不能滿足需求,開發(fā)技術(shù)有進步,但尚未完全擺脫軟件危機,指在計算機軟件開發(fā)和維護的過程中所遇到的一系
6、列嚴(yán)重問題。,概括的說:,如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。,具體的說:,主要有以下一些表現(xiàn):,1、對軟件開發(fā)成本和進度的估計常常很不準(zhǔn)確;,2、用戶對已完成的軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生;,3、軟件產(chǎn)品的質(zhì)量經(jīng)??坎蛔?;,4、軟件常常是不可維護的;,5、軟件通常沒有適當(dāng)文檔資料;,6、軟件成本在計算機系統(tǒng)總成本中中所占的比例逐年上升;,7、軟件開發(fā)的生產(chǎn)率提高的速度,既跟不上硬件發(fā)展的速度,也遠遠跟不上計算機應(yīng)用普及深入的趨勢。,二、軟件危機,IBM,公司的,OS/360,,共約,100,萬條指令,花費了,5000,個人年;經(jīng)費達數(shù)億美圓,而結(jié)果卻
7、令人沮喪,錯誤多達,2000,個以上,系統(tǒng)根本無法正常運行。,OS/360,系統(tǒng)的負責(zé)人,Brooks,這樣描述開發(fā)過程的困難和混亂:,“,像巨獸在泥潭中作垂死掙扎,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運。,”,1963,年美國飛往火星的火箭爆炸,造成,1000,萬美元的損失。原因是,FORTRAN,程序:,DO 5 I=1,,,3,誤寫為:,DO 5 I=1,.,3,1967,年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時,由于軟件忽略一個小數(shù)點,在進入大氣層時因打不開降落傘而燒毀。,在軟件開發(fā)和維護的過程中存在這么多嚴(yán)重問題,一方面與軟件本身的特點有關(guān),另一方面也和
8、軟件開發(fā)與維護的方法不正確有關(guān)。,1、軟件不同于硬件,:它是計算機系統(tǒng)中的邏輯部件,在寫出程序代碼并在計算機上運行之前,軟件開發(fā)過程的進展情況較難衡量,軟件開發(fā)的質(zhì)量也較難評價,因此管理和控制軟件開發(fā)過程相當(dāng)困難。,2、軟件在運行過程中不會因使用時間過長而被用壞,,如果運行中發(fā)現(xiàn)錯誤,很可能是遇到了一個在開發(fā)時期引入雜在測試階段沒能檢測出來的故障,因此軟件維護通常意味著改正或修改原來的設(shè)計。,產(chǎn)生軟件危機的原因,3、軟件不同于一般程序,:,規(guī)模龐大,必須有嚴(yán)格而科學(xué)的管理。,4、軟件專業(yè)人員對軟件開發(fā)和維護有不少的糊涂觀念,,,在實踐過程中或多或少地采用了錯誤的方法和技術(shù),忽視軟件需求分析的重
9、要性,認(rèn)為開發(fā)軟件就是寫程序并使之運行,輕視軟件維護,這可能是軟件危機的主要原因,。,硬件/軟件產(chǎn)品失效率曲線,磨合調(diào)整,磨損用壞,時間,失效率,修改點,實際曲線,時間,失效率,理想曲線,軟件產(chǎn)品,硬件產(chǎn)品,5,200,20,2000,1000,需求分析,結(jié)構(gòu)設(shè)計,詳細設(shè)計,編碼,集成測試,系統(tǒng)測試,現(xiàn)場,改正一個問題的估算費用/美元,改正一個問題的估算工作量/人日,0.05,0.5,2.5,改正一個問題需付出的代價,代價,早期 中期 晚期 時間,高,中,低,變更代價隨時間變化的趨勢,一個軟件從定義、開發(fā)、使用、維護,直到最終被廢棄,要經(jīng)歷一個漫長的時期,這就如同一個人要經(jīng)過胎兒、兒童、青年、
10、中年、老年,直到最終死亡的漫長時期一樣,通常把軟件經(jīng)歷的這個漫長時期稱為生存周期。,在軟件開發(fā)的不同階段進行修改需要付出的代價很不相同:,軟件工程學(xué)的一個重要目標(biāo)就是提高軟件的可維護性,減少軟件維護的代價。,生存周期:,1、軟件開發(fā)應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項目。,2、必須充分吸收和借鑒人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術(shù)和方法,特別是要吸取幾十年來從事計算機硬件研究和開發(fā)的經(jīng)驗教訓(xùn)。,3、應(yīng)該推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的 技術(shù)和方法。,4、應(yīng)該開發(fā)和使用更好的 軟件工具。,總之,為了解決軟件危機,既要有技術(shù)措施(方法
11、和工具),又要有必要的組織管理措施。軟件工程.正是從管理和技術(shù)兩方面研究如何更好的開發(fā)和維護計算機軟件的一門新興學(xué)科.,解決軟件危機的途徑,軟件工程,是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科.采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它,這就是軟件工程.,1983年,IEEE,給軟件工程的定義,:,“,軟件工程是開發(fā)、運行、維護和修復(fù)軟件的系統(tǒng)方法。,”,強調(diào),“,系統(tǒng)方法,”,不是,“,個人技巧,”,。,Fairly,認(rèn)為,:,“,軟件工程學(xué)是為了在成本限額以內(nèi)按時完成開發(fā)和修
12、復(fù)軟件產(chǎn)品所需要的系統(tǒng)生產(chǎn)和維護技術(shù)及管理學(xué)科,”,。強調(diào),“,成本限額以內(nèi),”,及,“,技術(shù)和管理兩個方面,”,。,第二節(jié) 軟件工程,一、軟件工程與方法學(xué),Fritz Bauer,認(rèn)為,:,“,軟件工程是為了經(jīng)濟地獲得可靠的且能在實際機器上有效地運行的軟件,而建立和使用的完善的工程化原則,”,。強調(diào),“,經(jīng)濟地開發(fā)出高質(zhì)量的軟件,應(yīng)建立和使用的完善的工程化原則,”,。,1993年,IEEE,進一步給出了一個更全面的定義,:,軟件工程是:(1)把系統(tǒng)化的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護的過程,也就是把工程化應(yīng)用于軟件中;(2)研究(1)中提到的途徑。,1、用分階段的生命周期計劃
13、嚴(yán)格管理,2、堅持進行階段評審,3、實行嚴(yán)格的產(chǎn)品控制,4、采用現(xiàn)代程序設(shè)計技術(shù),5、結(jié)果應(yīng)能清楚的審查,6、開發(fā)小組的人員應(yīng)該少而精,7、承認(rèn)不斷改進軟件工程實踐的必要性,二、軟件工程的基本原理,三、軟件 工程的內(nèi)容,軟件開發(fā)技術(shù),軟件開發(fā)方法學(xué),瀑布模型的生命周期方法、動態(tài)需求的快速原型、面向?qū)ο蟮姆椒ǎ?軟件工具,用來開發(fā)軟件的軟件。,軟件工程環(huán)境,支持軟件開發(fā)的環(huán)境、工具及其關(guān)系;,軟件工程管理,質(zhì)量管理,人力管理、進度安排、質(zhì)量保證、資源管理,軟件工程經(jīng)濟學(xué),以經(jīng)濟的觀點研究開發(fā)過程中的經(jīng)濟效益:成本估算、效益分析。,軟件工程包含:技術(shù)和管理。是技術(shù)和管理的緊密結(jié)合。通過計劃、組織和
14、控制等一系列活動,合理地配置和使用各種資源,以達到既定目標(biāo)的過程。,軟件工程方法學(xué)包括三個要素:,方法:,完成軟件開發(fā)的各項任務(wù)的技術(shù)方法;回答,“,如何做,”,的問題。,工具:,為方法的應(yīng)用提供或半自動的軟件支撐環(huán)境;,過程:,為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架、規(guī)定了完成各項任務(wù)的工作步驟。,四、軟件工程方法學(xué),劃分軟件生存周期階段的,基本原則,:使各階段的任務(wù)彼此間盡可能相對獨立,同一階段各項任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段之間的聯(lián)系,有利于軟件開發(fā)工程的組織管理.,面向?qū)ο蠓椒ǖ乃膫€要點:對象;類;父類(基類)和子類(派生類);消息。,面
15、向?qū)ο蠓椒▽W(xué)的出發(fā)點和基本原則,,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法和過程盡可能接近人類認(rèn)識世界解決問題的方法和過程,從而使描述問題的問題空間與實現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致。,傳統(tǒng)方法學(xué)(生命周期方法學(xué))或(結(jié)構(gòu)化范型):采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、結(jié)構(gòu)程序設(shè)計和結(jié)構(gòu)化測試)。,第三節(jié) 軟件工程過程,軟件工程,過程,是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,包括軟件工程活動和軟件管理活動。這些活動的執(zhí)行可以是有序的、循環(huán)的、嵌套的,也可以有條件引發(fā)的。,在完成開發(fā)任務(wù)時必須進行一些活動,并使用適當(dāng)?shù)馁Y源(人員、時間、計算機硬件、軟件工具等),在過程結(jié)束
16、時將把輸入(軟件需求)轉(zhuǎn)化為輸出(軟件產(chǎn)品)。,ISO9000,把過程定義為:,“,把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動,”,。,過程定義了運用方法的順序、應(yīng)交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施以及標(biāo)志軟件開發(fā)各個階段任務(wù)完成的里程碑。,軟件工程過程包括:開發(fā)過程、運作過程、維護過程、管理過程、支持過程、獲取過程、供應(yīng)過程、剪裁過程等,在美國,SEI(,軟件工程研究所,設(shè)在美國卡耐基-梅農(nóng)大學(xué),是致力于軟件過程改進的權(quán)威機構(gòu),)提出的,“,能力成熟度模型,”,(,CMM,C,apability,M,aturity,M,odule,),中,設(shè)定了52個目標(biāo),18個關(guān)鍵活動域和316個關(guān)鍵活動,能夠用來評價軟件開發(fā)組織的過程能力。,工作任務(wù),里程碑、交付物,軟件質(zhì)量保證點,任務(wù)集合,框架活動,公共過程框架,保護性輔助活動,軟件工程過程,通過定義適合于所有軟件項目的框架活動而建立。,每個集合由軟件工程工作任務(wù)、軟件項目里程碑、軟件工作產(chǎn)品和交付物以及質(zhì)量保證點組成。,獨立于任何一個框架,從宏觀上來看,所有的軟件開發(fā)過程都可以看成一個循環(huán)解決問題的過程。包括4個不