《軟件工程軟件工程介紹》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件工程軟件工程介紹(44頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,軟件工程,第,1,章,軟件工程介紹,1.1,軟件與軟件的復(fù)雜度,什么是軟件?(站在軟件工程的角度看),軟件就是:,一個(gè)或多個(gè)計(jì)算機(jī)程序,其執(zhí)行時(shí)能提供所期望的功能和性能,一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu),這些結(jié)構(gòu)使得程序能夠完全操縱信息,一個(gè)或多個(gè)文檔,這些文檔描述了程序分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)的細(xì)節(jié),軟件的定義:,面向過程的程序,=,算法,+,數(shù)據(jù)結(jié)構(gòu),面向?qū)ο蟮某绦?=,對(duì)象,+,消息,面向構(gòu)件的程序,=,構(gòu)件,+,構(gòu)架,50,年代:軟件,=,程序,60,年代:軟件,=,程序,+,文檔(分析、設(shè) 計(jì)、測(cè)試、維護(hù),但不
2、包括管理文檔),70,年代:軟件,=,程序,+,文檔,+,數(shù)據(jù)(初始化數(shù)據(jù)、測(cè)試數(shù)據(jù)、研發(fā)數(shù)據(jù)、運(yùn)行數(shù)據(jù)、維護(hù)數(shù)據(jù)、工程數(shù)據(jù)、項(xiàng)目管理數(shù)據(jù)等),1984,年美國(guó)開始認(rèn)識(shí)到軟件管理是一個(gè)過程管理,,1991,年出現(xiàn),CMM1.0,,,96,年出現(xiàn),UML,。,“軟件工作產(chǎn)品”,開發(fā)過程中產(chǎn)生的各種軟件,“軟件產(chǎn)品”,最后交付的軟件,1.1,軟件與軟件的復(fù)雜度,IEEE Standard Glossary of Software Engineering Terminology,給出了有關(guān)軟件的定義:,軟件是計(jì)算機(jī)程序、規(guī)程以及運(yùn)行計(jì)算機(jī)系統(tǒng)可能需要的相關(guān)文檔和數(shù)據(jù)。,計(jì)算機(jī)程序,是計(jì)算機(jī)設(shè)備可以接
3、受的一系列指令和說明,為計(jì)算機(jī)執(zhí)行提供所需的功能和性能。,數(shù)據(jù),是事實(shí)、概念或指令的結(jié)構(gòu)化表示,能夠被計(jì)算機(jī)設(shè)備接收、理解或處理。,文檔,是描述程序研制過程、方法及使用的圖文材料。,1.1,軟件與軟件的復(fù)雜度,IEEE Standard Glossary of Software Engineering Terminology,給出了有關(guān)軟件的定義(英文版):,Software.Computer programs,procedures,and possibly associated documentation and data peraining to the operation of a co
4、mputer system.,1.1,軟件與軟件的復(fù)雜度,軟件的分類:,(,1,)按功能分:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件,(,2,)按規(guī)模分:大型、中型、小型,(,3,)按工作方式分:實(shí)時(shí),/,分時(shí)、交互,/,批處理,(,4,),按服務(wù)對(duì)象分:定制軟件、產(chǎn)品軟件(或稱為通用軟件),(,5,)按銷售方式分:定單軟件、非定單軟件,1.1,軟件與軟件的復(fù)雜度,軟件的特征,軟件是設(shè)計(jì)開發(fā)的,而不是傳統(tǒng)意義上生產(chǎn)制造的,軟件不會(huì)磨損,大多數(shù)軟件仍然是定制的,而不是通過已有構(gòu)件組裝而成,雖然軟件業(yè)內(nèi)向著基于構(gòu)件的構(gòu)造模式發(fā)展,從對(duì)比的角度理解這三點(diǎn):,軟件是開發(fā)出來的,不是制造出來的,軟件可能被“廢棄”,
5、但不會(huì)“用壞”,軟件大部分是定制的,而不是裝配的,1.1,軟件與軟件的復(fù)雜度,軟件的特征,抽象性:邏輯實(shí)體,可記錄,但看不到,可復(fù)制性:與開發(fā)成本相比,復(fù)制成本很低,1.1,軟件與軟件的復(fù)雜度,軟件的復(fù)雜度,更高的技術(shù)復(fù)雜性,-,嵌入式,實(shí)時(shí)的,分布式的,不可出錯(cuò)的,-,定制的,空前的,可復(fù)用的,-,高性能的,較低的技術(shù)復(fù)雜度,-,大部分是4,GL,或基于組件技術(shù)的,-,應(yīng)用反向工程,-,基于交互式的對(duì)性能要求不高,較高管理復(fù)雜度,-,大范圍,-,合同契約性,-,受很多人制約的,-“,項(xiàng)目”型的,較低的管理復(fù)雜度,-,小范圍,-,非正式的,-,簡(jiǎn)單的資金運(yùn)作,-“,產(chǎn)品”型的,防御,MIS,系
6、統(tǒng),防御,武器系統(tǒng),信息,交換,CASE,工具,國(guó)際空中運(yùn)輸,控制系統(tǒng),企業(yè),IS,(IS,應(yīng)用),商業(yè),編譯器,商業(yè)制表軟件,IS,應(yīng)用,分布式對(duì)象,小型科學(xué)模擬,大型組織/實(shí)體仿真模擬,一個(gè)比較中等的項(xiàng)目,-5-10,人,-10-15,個(gè)月的開發(fā)周期,-3-5,個(gè)外部界面,-,一些不可知的事情&風(fēng)險(xiǎn),嵌入式,車用軟件,IS,應(yīng)用,GUI/RDB,計(jì)算機(jī)軟件發(fā)展的四個(gè)階段:,1.早期時(shí)代(60年代中期之前)程序設(shè)計(jì)階段,硬件通用,軟件專用;程序規(guī)模小,編寫者和使用者為同一人(同組人)。計(jì)算機(jī)的主要應(yīng)用為快速計(jì)算,出現(xiàn)了,Algol,、,Fortran,等編程語(yǔ)言。,2.第二代(60年代中期-
7、70年代中期)程序系統(tǒng)階段,出現(xiàn)“軟件作坊”、產(chǎn)品軟件;“個(gè)體化”開發(fā)方法。計(jì)算機(jī)的應(yīng)用開始涉及到各種以非數(shù)值計(jì)算的商業(yè)業(yè)務(wù)領(lǐng)域,交互技術(shù)、數(shù)據(jù)庫(kù)、操作系統(tǒng)等得到發(fā)展,出現(xiàn)了,Pascal,、,Cobol,等編程語(yǔ)言和關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)為標(biāo)志的,結(jié)構(gòu)化,軟件技術(shù)。瀑布模型得到普遍使用。,3.第三代(70年代中期之后,-80,年代)軟件工程階段,軟件開發(fā)成為一門新興的工程學(xué)科軟件工程。軟件開發(fā)過程得到管理、工程化了。出現(xiàn)了,COCOMO,模型、,CMM,等。以,Smalltalk,、,C+,為代表的面向?qū)ο蠹夹g(shù)崛起,傳統(tǒng)的結(jié)構(gòu)化技術(shù)受到嚴(yán)峻的考驗(yàn),1.1,軟件與軟件的復(fù)雜度,計(jì)算機(jī)軟件發(fā)展的四個(gè)
8、階段:,4.20,世紀(jì),90,年代,至今,Internet,技術(shù)的迅速發(fā)展使軟件系統(tǒng)從封閉走向開放,異構(gòu)環(huán)境下的分布式軟件的開發(fā)成為一種主流需求,軟件復(fù)用和構(gòu)件技術(shù)成為技術(shù)熱點(diǎn),出現(xiàn)了,J2EE,、,COM+,、,CORBA,為代表的,3,個(gè)分支。,現(xiàn)在網(wǎng)格計(jì)算、,Web Service,、云計(jì)算、普適計(jì)算(,Pervasive Computing,)等技術(shù)發(fā)展迅速。,1.1,軟件與軟件的復(fù)雜度,1.1,軟件與軟件的復(fù)雜度,1.1,軟件與軟件的復(fù)雜度,中國(guó)軟件產(chǎn)業(yè)大事記,1984,年:中國(guó)軟件行業(yè)協(xié)會(huì)成立,當(dāng)時(shí)的電子工業(yè)部部長(zhǎng)江澤民任名譽(yù)會(huì)長(zhǎng),楊天行任理事長(zhǎng)。,1985,年:成立中國(guó)軟件技術(shù)公
9、司(中軟總公司的前身);長(zhǎng)城,0520c,微型機(jī)漢字處理軟件,HM,和漢字排序軟件,SM,向國(guó)外出口。,1986,年:電子工業(yè)部向國(guó)務(wù)院報(bào)送了,關(guān)于建立和發(fā)展我國(guó)軟件產(chǎn)業(yè)的報(bào)告,。,1988,年第一次全國(guó)軟件會(huì)議召開;金山公司、用友公司成立。,1989,年:北大華光激光照排系統(tǒng)獲中國(guó)發(fā)明專利金獎(jiǎng)。,1990,年:原中國(guó)計(jì)算機(jī)軟件技術(shù)公司與中國(guó)計(jì)算機(jī)服務(wù)公司合并,成立中國(guó)計(jì)算機(jī)軟件與技術(shù)服務(wù)總公司,開始研發(fā)自主知識(shí)產(chǎn)權(quán)操作系統(tǒng)。,1991,年:,中華人民共和國(guó)著作權(quán)法,正式實(shí)施,,計(jì)算機(jī)軟件保護(hù)條例,頒布。,1992,年:,計(jì)算機(jī)軟件著作權(quán)登記辦法,頒布與實(shí)施。,1994,年:金山、巨人、王碼,
10、480,等,20,多種流行的字處理軟件進(jìn)入各類辦公系統(tǒng)中。,中國(guó)軟件產(chǎn)業(yè)大事記,1996,年:希望公司,UCDOS,占有當(dāng)時(shí),72,的中文平臺(tái)市場(chǎng);東軟公司上市。,1997,年:第一屆中國(guó)軟件博覽會(huì)召開,1998,年:,Linux,進(jìn)入中國(guó);國(guó)產(chǎn)財(cái)務(wù)軟件占有,65,的國(guó)內(nèi)市場(chǎng)份額。,2000,年:國(guó)務(wù)院頒布,鼓勵(lì)軟件和集成電路產(chǎn)業(yè)發(fā)展的若干政策,的第,18,號(hào)文件,雙軟認(rèn)證啟動(dòng)。,2001,年:信息產(chǎn)業(yè)部與原國(guó)家計(jì)委命名,11,個(gè)城市的軟件園為“國(guó)家軟件產(chǎn)業(yè)基地”;金蝶、用友上市。,2002,年:國(guó)務(wù)院下發(fā),振興軟件產(chǎn)業(yè)行動(dòng)綱要,的,47,號(hào)文件,以作為對(duì),18,號(hào)文精神的延續(xù)和細(xì)化,全國(guó),3
11、5,所高校的示范性軟件學(xué)院開始招生。,2003,年:國(guó)內(nèi)軟件行業(yè)共完成銷售收入,1633,億元,同比增長(zhǎng),48.5,。,1.2,軟件與軟件危機(jī),防不勝防的軟件錯(cuò)誤,例,1,:,1963,年,美國(guó),飛往火星的火箭爆炸,損失$10,million.,原因:,FORTRAN,循環(huán),DO 5 I=1,3,誤寫為,DO 5 I=1,.,3,例,3,:,1996年,,ESA,的火箭處女航失敗,升空后僅飛行40秒就偏離了其預(yù)定軌道,該火箭被遠(yuǎn)程控制所毀并失去她攜帶的4個(gè)衛(wèi)星,損失達(dá),5億美元,原因:,慣性參考系方面的問題,未經(jīng)討論和解決,例2:,1996年,美國(guó),飛往哥倫比亞城市,C,ali,的,客機(jī)失事,
12、,163人中僅4人生還,原因:,關(guān)于目的地坐標(biāo)的、由一個(gè)字符構(gòu)成的計(jì)算機(jī)命令的錯(cuò)誤輸入,兩,相距,132英里,的城,市,坐標(biāo)在南美航空表中,代碼相同,1.2,軟件與軟件危機(jī),防不勝防的軟件錯(cuò)誤,例,5,:,1994,年,英特爾奔騰浮點(diǎn)除法軟件缺陷,導(dǎo)致為自己的行為道歉并花費(fèi),4億多美元,更換壞芯片.,原因:,芯片發(fā)布前已發(fā)現(xiàn)問題,但,管理層忽略了,;軟件缺陷被發(fā)現(xiàn)時(shí),英特爾,試圖掩飾該問題的嚴(yán)重性,;受到壓力時(shí),英特爾承諾更換芯片但要求用戶證明自己受到軟件缺陷的影響,.,(4195835/3145727)3145727-4195835=0,例,4,:,1994-1995,年,迪斯尼的獅子王,第
13、一個(gè)面向兒童的多媒體光盤游戲,,投訴電話被打爆,.,原因:,未對(duì)市場(chǎng)上的各種,P,C,機(jī)型進(jìn)行正確測(cè)試,軟件在大眾使用的常見系統(tǒng)中難以運(yùn)行,1.2,軟件與軟件危機(jī),防不勝防的軟件錯(cuò)誤,例,7,:,1991,年,美國(guó)愛國(guó)者導(dǎo)彈防御系統(tǒng)在幾次對(duì)抗導(dǎo)彈戰(zhàn)役中失利,多哈戰(zhàn)誤擊斃,28名,美軍士兵.,原因:,一個(gè)很小的系統(tǒng)時(shí)鐘錯(cuò)誤積累,可能拖延,14小時(shí)并造成跟蹤系統(tǒng)失去準(zhǔn)確度,,多哈戰(zhàn)中系統(tǒng)拖延了,100多個(gè),小時(shí),例,6,:,1999,年,美國(guó)航天局火星基地登陸飛船在試圖登陸火星表面時(shí)失蹤.,原因:,為省錢而簡(jiǎn)化確定何時(shí)關(guān)閉推進(jìn)器的裝置,導(dǎo)致飛船著陸時(shí)誤更改一個(gè)數(shù)據(jù)位,兩個(gè)測(cè)試小組的獨(dú)立工作做的很好
14、,,但從未走在一起,防不勝防的軟件錯(cuò)誤,軟件開發(fā)成本,Cost,Testing,Requirements,Design and,Implementation,1.2,軟件與軟件危機(jī),60,年代(軟件史前)的軟件危機(jī):,(,1,)對(duì)軟件開發(fā)的進(jìn)度和成本無法估計(jì),(,2,)用戶對(duì)已經(jīng)開發(fā)完成的軟件的滿意度非常低,(,3,)軟件質(zhì)量無法保證,(,4,)軟件開發(fā)后的維護(hù)工作很難進(jìn)行,(,5,)軟件通常沒有合適的文檔資料,(,6,)軟件成本在系統(tǒng)總成本中所占的比例越來越高,(,7,)軟件開發(fā)的生產(chǎn)率跟不上需求,1962,年美國(guó)水手,號(hào)因?qū)Ш杰浖粋€(gè)語(yǔ)句的語(yǔ)義錯(cuò)誤,導(dǎo)致偏離航線,任務(wù)失敗。,阿波羅,8,號(hào)
15、因計(jì)算機(jī)軟件錯(cuò)誤,造成存儲(chǔ)器信息丟失。,阿波羅,14,號(hào)在飛行的,10,天中,出現(xiàn)了,18,個(gè)軟件錯(cuò)誤。,美國(guó),IBM,公司的,OS/360,系統(tǒng),花了幾千人很多年的努力而失敗,所以,在,20,世紀(jì),60,年代,就開始提出所謂“軟件危機(jī)”的概念,軟件危機(jī):,軟件的可靠性沒有保障、維護(hù)費(fèi)用不斷上升、進(jìn)度無法預(yù)測(cè)、成本增長(zhǎng)無法控制、程序員無限度增加等,形成軟件開發(fā)局面失控的狀態(tài),而另一方面,根據(jù)摩爾定律:硬件成本每隔,18,個(gè)月就降低一半,例如:存儲(chǔ)器每年降低,40%,、主機(jī)硬件的性價(jià)比每十年提高一個(gè)數(shù)量級(jí),軟件人從,60,年代開始,就面臨巨大的生存壓力,而其中最具典型的是美國(guó)人佛雷德里克,.,布
16、魯克斯(,Frederick P.Brooks JR.,)和他的,人月神化,1.2,軟件與軟件危機(jī),軟件危機(jī)的現(xiàn)實(shí)意義:,為什么要擔(dān)心軟件危機(jī)?,軟件作為一個(gè)產(chǎn)業(yè),什么時(shí)候可以開始贏利?,與其他產(chǎn)品的歷史發(fā)展不同,,軟件開發(fā)的歷史,具有最典型的社會(huì)歷史發(fā)展的特性,(,1,)與建筑技術(shù)、制造技術(shù)、計(jì)算機(jī)硬件技術(shù)不同,(,2,)雖然在工具、技術(shù)手段上,可以同步進(jìn)步,(,3,)方法、管理水平,不會(huì)自動(dòng)進(jìn)步,手工作坊依然普遍存在,原因是什么:,什么是手工作坊:,(,1,)個(gè)人對(duì)所負(fù)責(zé)的“局部”負(fù)責(zé)、在這個(gè)局部是完全個(gè)性化和自由的,系統(tǒng)就是由幾個(gè)這樣的“局部”構(gòu)成的,(,2,)沒有任何設(shè)計(jì)文檔和可用于維護(hù)的資料,(,3,)沒有評(píng)審和獨(dú)立的系統(tǒng)測(cè)試,(,4,)進(jìn)度、成本、質(zhì)量是不可預(yù)測(cè)的,1.2,軟件與軟件危機(jī),人月神話(,The Mythical Man-Month,),一本暢銷,20,年經(jīng)久不衰、具有深遠(yuǎn)影響的書。,作者美國(guó),IBM,公司,被認(rèn)為是,IBM System,/360,和,OS/360,之父,曾擔(dān)任,360,系統(tǒng)項(xiàng)目,經(jīng)理的,Frederick P.Brooks,博士。,1975,