軟件工程課程設(shè)計(jì)_第1頁
軟件工程課程設(shè)計(jì)_第2頁
軟件工程課程設(shè)計(jì)_第3頁
軟件工程課程設(shè)計(jì)_第4頁
軟件工程課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件工程課程設(shè)計(jì)第一頁,共十四頁,編輯于2023年,星期三軟件工程軟件工程是一門研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計(jì)語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺(tái)、標(biāo)準(zhǔn)、設(shè)計(jì)模式等方面。軟件應(yīng)用于多個(gè)方面。典型的軟件比如有電子郵件、嵌入式系統(tǒng)、人機(jī)界面、辦公包、操作系統(tǒng)、編譯器、數(shù)據(jù)庫、游戲等。同時(shí),各個(gè)行業(yè)幾乎都有計(jì)算機(jī)軟件的應(yīng)用,比如工業(yè)、農(nóng)業(yè)、銀行、航空、政府部門等。而這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會(huì)的發(fā)展,提高人們的工作效率,同時(shí)提升了生活質(zhì)量。軟件工程師是對應(yīng)用軟件創(chuàng)造軟件的人們的統(tǒng)稱,軟件工程師按照所處的領(lǐng)域不同可以分為系統(tǒng)分析員、軟件設(shè)計(jì)師、系統(tǒng)架構(gòu)師、程序員、測試員等等。人們也常常用程序員來泛指各種軟件工程師。2023/6/142第二頁,共十四頁,編輯于2023年,星期三軟件工程的由來

鑒于軟件開發(fā)時(shí)所遭遇困境,北大西洋公約組織(NATO)在1968年舉辦了首次軟件工程學(xué)術(shù)會(huì)議,并于會(huì)中提出“軟件工程”來界定軟件開發(fā)所需相關(guān)知識,并建議“軟件開發(fā)應(yīng)該是類似工程的活動(dòng)”。軟件工程自1968年正式提出至今,這段時(shí)間累積了大量的研究成果,廣泛地進(jìn)行大量的技術(shù)實(shí)踐,借由學(xué)術(shù)界和產(chǎn)業(yè)界的共同努力,軟件工程正逐漸發(fā)展成為一門專業(yè)學(xué)科。

2023/6/143第三頁,共十四頁,編輯于2023年,星期三軟件工程的定義

創(chuàng)立與使用健全的工程原則,以便經(jīng)濟(jì)地獲得可靠且高效率的軟件。應(yīng)用系統(tǒng)化,遵從原則,可被計(jì)量的方法來發(fā)展、操作及維護(hù)軟件;也就是把工程應(yīng)用到軟件上。與開發(fā)、管理及更新軟件產(chǎn)品有關(guān)的理論、方法及工具。一種知識或?qū)W科(discipline),目標(biāo)是生產(chǎn)品質(zhì)良好、準(zhǔn)時(shí)交貨、符合預(yù)算,并滿足用戶所需的軟件。實(shí)際應(yīng)用科學(xué)知識在設(shè)計(jì)、建構(gòu)電腦程序,與相伴而來所產(chǎn)生的文件,以及后續(xù)的操作和維護(hù)上。使用與系統(tǒng)化生產(chǎn)和維護(hù)軟件產(chǎn)品有關(guān)之技術(shù)與管理的知識,使軟件開發(fā)與修改可在有限的時(shí)間與費(fèi)用下進(jìn)行。建造由工程師團(tuán)隊(duì)所開發(fā)之大型軟件系統(tǒng)有關(guān)的知識學(xué)科。對軟件分析、設(shè)計(jì)、實(shí)施及維護(hù)的一種系統(tǒng)化方法。系統(tǒng)化地應(yīng)用工具和技術(shù)于開發(fā)以計(jì)算機(jī)為主的應(yīng)用。2023/6/144第四頁,共十四頁,編輯于2023年,星期三軟件工程的內(nèi)核知識(SWEBOK)

ACM

與IEEEComputerSociety聯(lián)合修定的SWEBOK(SoftwareEngineeringBodyofKnowledge)提到,軟件工程領(lǐng)域中的內(nèi)核知識包括:軟件需求(Softwarerequirements)軟件設(shè)計(jì)(Softwaredesign)軟件建構(gòu)(Softwareconstruction)軟件測試(Softwaretest)軟件維護(hù)與更新(Softwaremaintenance)軟件構(gòu)型管理(SoftwareConfigurationManagement,SCM)軟件工程管理(SoftwareEngineeringManagement)軟件開發(fā)過程(SoftwareDevelopmentProcess)軟件工程工具與方法(Computer-AidedSoftwareEngineering,CASE)軟件品質(zhì)(SoftwareQuality)2023/6/145第五頁,共十四頁,編輯于2023年,星期三軟件工程與計(jì)算機(jī)科學(xué)

軟件的開發(fā)到底是一門科學(xué)還是一門工程,這是一個(gè)被爭論了很久的問題。實(shí)際上,軟件開發(fā)兼有兩者的特點(diǎn)。但是這并不意味著它們可以被互相混淆。很多人認(rèn)為軟件工程基于計(jì)算機(jī)科學(xué)和信息科學(xué)就如傳統(tǒng)意義上的工程學(xué)之于物理和化學(xué)一樣。在美國,大約40%的軟件工程師具有計(jì)算機(jī)科學(xué)的學(xué)位。在世界其他地方,這個(gè)比例也差不多。他們并不一定會(huì)每天使用計(jì)算機(jī)科學(xué)方面的知識,但是他們每天都會(huì)使用軟件工程方面的知識。2023/6/146第六頁,共十四頁,編輯于2023年,星期三軟件工程與計(jì)算機(jī)科學(xué)的差別[11]軟件工程計(jì)算機(jī)科學(xué)目標(biāo)在時(shí)間、資源、人員這3個(gè)主要限制條件下構(gòu)建滿足用戶需求的軟件系統(tǒng)。探索正確的計(jì)算和建模方法,從而改進(jìn)計(jì)算方法本身。產(chǎn)品軟件(比如辦公包和編譯器)。算法(比如希爾排序法)和抽象的問題(比如哲學(xué)家進(jìn)餐問題)。進(jìn)度與時(shí)間表軟件項(xiàng)目都有特定的進(jìn)度與時(shí)間表研究項(xiàng)目一般不具有設(shè)置的進(jìn)度與時(shí)間表關(guān)注點(diǎn)軟件工程關(guān)注如何為用戶實(shí)現(xiàn)價(jià)值。軟件理論關(guān)注的是軟件本身運(yùn)行的原理,比如時(shí)間復(fù)雜度,空間復(fù)雜度,和算法的正確性。變化程度隨著技術(shù)和用戶需求的不斷變化,軟件開發(fā)人員必須時(shí)刻調(diào)整自己的開發(fā)以適應(yīng)當(dāng)前的需求。同時(shí)軟件工程本身也處于不斷的發(fā)展中。對于某一種特定問題的正確解決方法將永遠(yuǎn)不會(huì)改變。需要的其他知識相關(guān)領(lǐng)域的知識。數(shù)學(xué)。著名的探索者和教育家BarryBoehm,DavidParnas,andFrederickP.Brooks。EdsgerDijkstra,高德納,RobertTarjan,PeterSlater,艾倫·圖靈,姚期智。著名的實(shí)踐者JohnBackus,DanBricklin,蒂姆·伯納斯-李,林納斯·托瓦茲,理查德·馬修·斯托曼。無。2023/6/147第七頁,共十四頁,編輯于2023年,星期三軟件工程與計(jì)算機(jī)程序設(shè)計(jì)

軟件工程存在于各種應(yīng)用中,存在于軟件開發(fā)的各個(gè)方面。而程序設(shè)計(jì)通常包含了程序設(shè)計(jì)和編碼的反復(fù)迭代的過程,它是軟件開發(fā)的一個(gè)階段。軟件工程力圖對軟件項(xiàng)目的各個(gè)方面作出指導(dǎo),從軟件的可行性分析直到軟件完成以后的維護(hù)工作。軟件工程認(rèn)為軟件開發(fā)與各種市場活動(dòng)密切相關(guān)。比如軟件的銷售,用戶培訓(xùn),與之相關(guān)的軟件和硬件安裝等。軟件工程的方法學(xué)認(rèn)為一個(gè)獨(dú)立的程序員不應(yīng)當(dāng)脫離團(tuán)隊(duì)而進(jìn)行開發(fā),同時(shí)程序的編寫不能夠脫離軟件的需求,設(shè)計(jì),以及客戶的利益。軟件工程的發(fā)展是計(jì)算機(jī)程序設(shè)計(jì)工業(yè)化的體現(xiàn)。2023/6/148第八頁,共十四頁,編輯于2023年,星期三軟件危機(jī)

軟件工程的興起要根源于20世紀(jì)60,70和80年代的軟件危機(jī)。在那個(gè)時(shí)代,很多的軟件最后都得到了一個(gè)悲慘的結(jié)局。很多的軟件項(xiàng)目開發(fā)時(shí)間大大超出了規(guī)劃的時(shí)間表。一些項(xiàng)目導(dǎo)致了財(cái)產(chǎn)的流失,甚至某些軟件導(dǎo)致了人員傷亡。同時(shí)軟件開發(fā)人員也發(fā)現(xiàn)軟件開發(fā)的難度越來越大。OS360操作系統(tǒng)被認(rèn)為是一個(gè)典型的案例。到現(xiàn)在為止,它仍然被使用在IBM360系列主機(jī)中。這個(gè)經(jīng)歷了數(shù)十年,極度復(fù)雜的軟件項(xiàng)目甚至產(chǎn)生了一套不包括在原始設(shè)計(jì)方案之中的工作系統(tǒng)。OS360是第一個(gè)超大型的軟件項(xiàng)目,它使用了1000人左右的程序員。FredBrooks在隨后他的大作《人月神話》(TheMythicalMan-Month)中曾經(jīng)承認(rèn),在他管理這個(gè)項(xiàng)目的時(shí)候,他犯了一個(gè)價(jià)值數(shù)百萬美元的錯(cuò)誤。財(cái)產(chǎn)的損失:軟件的錯(cuò)誤可能導(dǎo)致巨大的財(cái)產(chǎn)損失。歐洲阿里亞娜火箭的爆炸就是一個(gè)最為慘痛的教訓(xùn)。2023/6/149第九頁,共十四頁,編輯于2023年,星期三方法學(xué)

軟件工程的方法有很多方面的意義。包括項(xiàng)目管理,分析,設(shè)計(jì),程序的編寫,測試和質(zhì)量控制。軟件設(shè)計(jì)方法可以區(qū)別為重量級的方法和輕量級的方法。重量級的方法中產(chǎn)生大量的正式文檔。著名的重量級開發(fā)方法包括ISO9000,CMM,和統(tǒng)一軟件開發(fā)過程(RUP)。輕量級的開發(fā)過程沒有對大量正式文檔的要求。著名的輕量級開發(fā)方法包括極限編程(XP)和敏捷過程(AgileProcesses)。2023/6/1410第十頁,共十四頁,編輯于2023年,星期三根據(jù)《新方法學(xué)》這篇文章的說法,重量級方法呈現(xiàn)的是一種“防御型”的姿態(tài)。在應(yīng)用“重量級方法”的軟件組織中,由于軟件項(xiàng)目經(jīng)理不參與或者很少參與程序設(shè)計(jì),無法從細(xì)節(jié)上把握項(xiàng)目進(jìn)度,因而會(huì)對項(xiàng)目產(chǎn)生“恐懼感”,不得不要求程序員不斷撰寫很多“軟件開發(fā)文檔”。而輕量級方法則呈現(xiàn)“進(jìn)攻型”的姿態(tài),這一點(diǎn)從XP方法特別強(qiáng)調(diào)的四個(gè)準(zhǔn)則—“溝通、簡單、反饋和勇氣”上有所體現(xiàn)。目前有一些人認(rèn)為,“重量級方法”適合于大型的軟件團(tuán)隊(duì)(數(shù)十人以上)使用,而“輕量級方法”適合小型的軟件團(tuán)隊(duì)(幾人、十幾人)使用。當(dāng)然,關(guān)于重量級方法和輕量級方法的優(yōu)劣存在很多爭論,而各種方法也在不斷進(jìn)化中。一些方法論者認(rèn)為人們在開發(fā)中應(yīng)當(dāng)嚴(yán)格遵循并且實(shí)施這些方法。但是一些人并不具有實(shí)施這些方法的條件。實(shí)際上,采用何種方法開發(fā)軟件取決于很多因素,同時(shí)受到環(huán)境的制約。2023/6/1411第十一頁,共十四頁,編輯于2023年,星期三軟件開發(fā)過程

軟件開發(fā)過程是隨著開發(fā)技術(shù)的演化而隨之改進(jìn)的。從早期的瀑布式(Waterfall)的開發(fā)模型到后來出現(xiàn)的螺旋式的迭代(Spiral)開發(fā),以致最近開始興起的敏捷開發(fā)方法(Agile),他們展示出了在不同的時(shí)代軟件產(chǎn)業(yè)對于開發(fā)過程的不同的認(rèn)識,以及對于不同類型項(xiàng)目的理解方法。注意區(qū)分軟件開發(fā)過程和軟件過程改進(jìn)之間的重要區(qū)別。諸如像ISO15504,ISO9000,CMM,CMMI這樣的名詞闡述的是一些軟件過程改進(jìn)框架,他們提供了一系列的標(biāo)準(zhǔn)和策略來指導(dǎo)軟件組織如何提升軟件開發(fā)過程的質(zhì)量、軟件組織的能力,而不是給出具體的開發(fā)過程的定義。2023/6/1412第十二頁,共十四頁,編輯于2023年,星期三軟件工程的發(fā)展方向

“敏捷開發(fā)”(AgileDevelopment)被認(rèn)為是軟件工程的一個(gè)重要的發(fā)展。它強(qiáng)調(diào)軟件開發(fā)應(yīng)當(dāng)是能夠?qū)ξ磥砜赡艹霈F(xiàn)的變化和不確定性作出全面反應(yīng)的。敏捷開發(fā)被認(rèn)為是一種“輕量級”的方法。在輕量級方法中最負(fù)盛名的應(yīng)該是“極限編程”(ExtremeProgramming,簡稱為XP)。而與輕量級方法相對應(yīng)的是“重量級方法”的存在。重量級方法強(qiáng)調(diào)以開發(fā)過程為中心,而不是以人為中心。重量級方法的例子比如CMM/PSP/TSP。面向方面的程序設(shè)計(jì)(AspectOrientedProgramming,簡稱AOP)被認(rèn)為是近年來軟件工程的另外一個(gè)重要發(fā)展。這里的方面指的是完成一個(gè)功能的對象和函數(shù)的集合。在這一方面相關(guān)的內(nèi)容有泛型編程(GenericProgramming)和模板。2023/6/1413第十三頁,共十四頁,編輯于2023年,星期三參考

^F.L.Bauer,NATOSoftwareEngineeringConference,1968.^

IEEE標(biāo)準(zhǔn)電腦字典,610.12,1990^I.Sommerville,SoftwareEngineering,7thed.:Addison-WesleyLongmanPublishingCo.,Inc.Boston,MA,USA,2004.^S.R.Schach,SoftwareEngineering:AskenAssociatesPacificPalisades,CA,USA,1990.^B.W.Boehm,SoftwareEngineeringEconomics:PrenticeHallPTRUpperSaddleRiver,NJ,USA,1981.^R.Fairley,SoftwareEngineeringConcepts:McGraw-Hill,Inc.NewYork,NY,USA,1985.^C.Ghezzi,M.Jazayeri,andD.Mandrioli,FundamentalsofSoftwareEngineering,2nded.:PrenticeHall,2002.^TheFreeOn-LineDictionary

溫馨提示

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

評論

0/150

提交評論