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