版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件工程軟件工程一、課程的性質(zhì)、任務(wù):“軟件工程”是高職高專院校計算機應(yīng)用與軟件技術(shù)專業(yè)教學(xué)計劃中一門核心基礎(chǔ)課程,它是研究軟件開發(fā)和軟件管理的一門工程科學(xué)。它的主要任務(wù)是掌握支持軟件開發(fā)和管理的理論、方法、技術(shù)、標準以及計算機輔助軟件工程的工具(Visio或Rose)環(huán)境等知識;使學(xué)生具有軟件開發(fā)能力(包括熟練進行程序設(shè)計語言的結(jié)構(gòu)化編碼與可視化設(shè)計能力;UML的閱讀和建模能力;培養(yǎng)用軟件工程化及項目化的思想處理解決問題的能力等)。一、課程的性質(zhì)、任務(wù):“軟件工程”是高職高專院校計算機應(yīng)用與概括說:軟件開發(fā)能力最關(guān)鍵的步驟有三步:軟件工程第一章緒論二、通過學(xué)習(xí)應(yīng)能達到如下目標:1.接受一種思想。掌握軟件工程的基本原理、概念與方法----主要包括軟件系統(tǒng)的可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、維護、面向?qū)ο?、項目管理等方面的基本知識與方法。
2.掌握軟件工程中的一些基本技術(shù)方法,如數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)分析方法(如Jackson方法等),面向?qū)ο蠓治龇椒ā⒓蓽y試方法、項目管理的基本方法等。
3.結(jié)合模擬案例,要求學(xué)生從實際中掌握從面向過程到面向?qū)ο笏枷肜碚摰幕痉椒ê图记?。掌握軟件開發(fā)文檔的組織編寫等。4.掌握一種工具。學(xué)期末能用Visio或Rose軟件完成大作業(yè)的設(shè)計(畫各種軟件工程圖)(指定或自找題目)5.把目前或以后要學(xué)的程序設(shè)計知識(C、Java、VB、VC++、VB.NET等)提高到一定理論高度認識:編程能否用?
學(xué)會思想比掌握一種工具更為重要。
小提示:二、通過學(xué)習(xí)應(yīng)能達到如下目標:小提示:三、幾點建議:“學(xué)知識,最重要的是融會貫通!”人類解決復(fù)雜問題時普遍采用的一個策略就是“各個擊破”,也就是對問題進行“分解,分解,再分解,然后再分別解決各個子問題!”三、幾點建議:“學(xué)知識,最重要的是融會貫通!”
“現(xiàn)在大家都已認識到,如果有哪個項目不遵循軟件工程原則必定會受到實踐的懲罰?!薄败浖こ陶n是我們參加工作以后最能直接應(yīng)用的一門專業(yè)課?!薄晃粍偖厴I(yè)參加工作的計算機專業(yè)學(xué)生“現(xiàn)在大家都已認識到,如果有哪個項目不遵循軟件工程原則必
什么是軟件
軟件的特點
軟件的發(fā)展
軟件生存期
什么是軟件工程
軟件工程的目的和要求第一章緒論什么是軟件第一章緒論先接受2個正確觀點:1、“開發(fā)軟件不等于編寫程序”
—
開發(fā)軟件應(yīng)該完成的工作遠遠多于編寫程序應(yīng)該完成的工作。設(shè)計算法(即完成指定功能的步驟),然后用程序設(shè)計語言(例如:C語言)表達該算法。而開發(fā)軟件并非就是編寫程序,事實上編寫程序僅僅是開發(fā)軟件所應(yīng)完成的工作的一部分,而且只占一小部分。為了開發(fā)出一個符合用戶需要、質(zhì)量合格的軟件,軟件工程師必須首先弄清楚用戶面臨的問題是什么,也就是要明確軟件的“主攻”方向;接下來應(yīng)該進行可行性研究方案,分析用戶面臨的問題是否有行得通的解決方案。為避免浪費資源,僅在該軟件的開發(fā)是可行的前提下,才進行實質(zhì)性的開發(fā)工作;1.1軟件工程簡述先接受2個正確觀點:1.1軟件工程簡述然后應(yīng)該進行需求分析工作,通過與用戶的反復(fù)交流,搞清楚用戶對該軟件的具體需求,這些需求是進行軟件設(shè)計的依據(jù);在編寫程序之前需要先進行設(shè)計。通常,大型軟件的設(shè)計工作又分成兩個階段進行,先進行總體設(shè)計(又稱為概要設(shè)計),再進行詳細設(shè)計;編寫程序?qū)嵸|(zhì)上是把設(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的程序;程序編寫出來之后,還需要經(jīng)過嚴格的測試過程(需要的工作量通常占軟件開發(fā)全部工作量的40%~50%),軟件確實符合用戶需求而且質(zhì)量合格,才能交付給用戶使用。然后應(yīng)該進行需求分析工作,通過與用戶的反復(fù)交流,搞清楚用戶對2、“錯誤做法會導(dǎo)致軟件危機”。開發(fā)軟件不等于編寫程序。但是,迄今為止,仍然有不少人錯誤地認為開發(fā)軟件就是編寫程序,或者認為開發(fā)軟件主要就是編寫程序。人們之所以有錯誤的認識并在開發(fā)軟件時采用了錯誤的做法,主要可歸因于在計算機系統(tǒng)發(fā)展的早期階段“開發(fā)軟件”的個體化特點。所謂軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。這些問題絕不僅僅是不能正常運行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。(軟件危機的具體表現(xiàn)在后面介紹)2、“錯誤做法會導(dǎo)致軟件危機”。1.1軟件工程簡述軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列。計算機程序包括源程序和目標程序。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(即數(shù)據(jù)的組織形式)。文檔是與程序開發(fā),維護和使用有關(guān)的圖文材料。1.1軟件工程簡述軟件是計算機系統(tǒng)中與硬件相互依存的另一部分1.1軟件工程簡述軟件的特點軟件是一種邏輯實體,而不是具體的物理實體。因此,它具有抽象性。軟件的生產(chǎn)與硬件不同,沒有明顯的制造過程。對軟件的質(zhì)量控制,必須立足于軟件開發(fā)方面。在軟件的運行和使用期間,沒有像硬件那樣的磨損、老化問題。軟件的開發(fā)和運行往往受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有不同程度的依賴性。1.1軟件工程簡述軟件的特點1.1軟件工程簡述
面向過程的程序=算法+數(shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮某绦?對象+消息面向構(gòu)件的程序=構(gòu)件+構(gòu)架軟件=程序+數(shù)據(jù)+文檔1.1軟件工程簡述面向過程的程序=算法+數(shù)據(jù)結(jié)構(gòu)軟件工程第一章緒論1.1軟件工程簡述軟件的特點(續(xù))迄今為止,軟件的開發(fā)尚未完全擺脫手工藝的方式。軟件本身是復(fù)雜的。軟件的成本相當(dāng)昂貴。(見下頁圖示)相當(dāng)多的軟件工作涉及到社會因素。1.1軟件工程簡述軟件的特點(續(xù))1.1軟件工程簡述軟件的分類按軟件的功能劃分:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件按軟件的規(guī)模劃分:微型、小型、中型、大型、超大型按軟件的工作方式劃分:實時、分時、交互、批處理按軟件服務(wù)對象的范圍劃分:項目軟件、產(chǎn)品軟件1.1軟件工程簡述軟件的分類1.1軟件工程簡述一、計算機軟件發(fā)展的各個時期1.第一代(60年代中期之前)程序設(shè)計階段硬件通用,軟件專用;程序規(guī)模小,編寫者和使用者為同一人(同組人)。2.第二代(60年代中期-70年代中期)程序系統(tǒng)階段出現(xiàn)“軟件作坊”、產(chǎn)品軟件;“個體化”開發(fā)方法。3.第三代(70年代中期之后)軟件工程階段軟件開發(fā)成為一門新興的工程學(xué)科——軟件工程。4.第四代(90年代后)現(xiàn)代軟件工程階段。1.1軟件工程簡述一、計算機軟件發(fā)展的各個時期計算機軟件發(fā)展的三個時期及特點
程序設(shè)計程序系統(tǒng)軟件工程現(xiàn)代軟件工程軟件的范疇程序程序及說明書產(chǎn)品軟件(項目軟件)項目工程主要程序設(shè)計語言匯編及機器語言高級語言高級語言系統(tǒng)、程序設(shè)計語言面向?qū)ο罂梢暬O(shè)計語言軟件工作范圍程序編寫包括設(shè)計和測試軟件生存期整個軟件生存期需求者程序設(shè)計者本人少數(shù)用戶市場用戶面向所有用戶
計算機軟件發(fā)展的三個時期及特點
程序設(shè)計程序系統(tǒng)軟件工程現(xiàn)計算機軟件發(fā)展的三個時期及特點計算機軟件發(fā)展的三個時期及特點1.1軟件工程簡述二、什么是軟件危機軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。主要是兩個問題。1.如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求。2.如何維護數(shù)量不斷膨脹的已有軟件1.1軟件工程簡述二、什么是軟件危機1.1軟件工程簡述三、軟件危機的主要表現(xiàn)1.對軟件開發(fā)成本和進度的估計不準確2.用戶不滿意3.軟件質(zhì)量不高、可靠性差4.軟件常常不可維護、錯誤難以改正。5.缺乏適當(dāng)?shù)奈臋n資料6.軟件成本占系統(tǒng)總成本的比例逐年上升7.軟件開發(fā)速度跟不上計算機發(fā)展速度1.1軟件工程簡述三、軟件危機的主要表現(xiàn)1.1軟件工程簡述四、產(chǎn)生軟件危機的原因1.與軟件本身的特點有關(guān)軟件不同于硬件,它是計算機系統(tǒng)的邏輯部件而不是物理部件。在寫出程序代碼并在計算機運行之前,軟件開發(fā)過程的進展情況較難衡量,軟件開發(fā)的質(zhì)量也較難評價。因此,管理和控制軟件開發(fā)過程相當(dāng)困難。2.軟件不易于維護(1)軟件維護通常意味著改正或修改原來的設(shè)計,客觀上使軟件較難維護。1.1軟件工程簡述四、產(chǎn)生軟件危機的原因1.1軟件工程簡述(2)軟件不同于一般程序,它的規(guī)模大,不易于維護。3.在軟件開發(fā)過程中,或多或少地采用了錯誤的方法和技術(shù)。4.對用戶需求沒有完整準確的認識,就匆忙著手編寫程序。1.1軟件工程簡述(2)軟件不同于一般程序,它的規(guī)模大,不易1.1軟件工程簡述五、解決軟件危機的途徑1.技術(shù)措施使用更好的軟件開發(fā)方法和開發(fā)工具2.組織管理措施軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。1.1軟件工程簡述五、解決軟件危機的途徑1.1軟件工程簡述一、什么是軟件工程軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來。軟件工程是一門涉及軟件計劃、需求分析、設(shè)計、編碼、測試和維護的原理、方法及工具的研究和應(yīng)用的學(xué)科。1.1軟件工程簡述一、什么是軟件工程1.1軟件工程簡述二、軟件工程的基本原理1968年,北大西洋公約組織(NATO),召開的有關(guān)計算機軟件會議上正式提出“軟件工程”術(shù)語。目前有100多條關(guān)于軟件工程的準則,其中最出名的是著名軟件工程專家B.W.Boehm在1983年提出的7條基本原理。1.1軟件工程簡述二、軟件工程的基本原理1.1軟件工程簡述1.用分階段的生命周期計劃嚴格管理經(jīng)統(tǒng)計表明,不成功的軟件項目中有一半左右是由于計劃不周造成的。Boehm認為,在軟件的整個生命周期中應(yīng)制定并嚴格執(zhí)行六類計劃:項目概要計劃、里程碑計劃、項目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護計劃。1.1軟件工程簡述1.用分階段的生命周期計劃嚴格管理1.1軟件工程簡述2.堅持進行階段評審大部分錯誤是在編碼之前造成的因此,在每個階段都進行嚴格的評審,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程的錯誤1.1軟件工程簡述2.堅持進行階段評審1.1軟件工程簡述3.實行嚴格的產(chǎn)品控制在軟件開發(fā)過程中不要隨意改變需求,因為改變某項需求往往需要付出較高的代價,但在實踐中用戶往往會提出需求變更,因此需要采取科學(xué)的產(chǎn)品控制技術(shù)。目前主要實行基準配置管理:基準配置是指經(jīng)過階段評審后的軟件配置成分,如各個階段產(chǎn)生的文檔或程序代碼。對涉及基準配置的修改,必須經(jīng)過嚴格的評審,通過后才能實施修改。1.1軟件工程簡述3.實行嚴格的產(chǎn)品控制1.1軟件工程簡述4.采用現(xiàn)代程序設(shè)計技術(shù)實踐表明:采用先進的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護的效率。80年代及之前:結(jié)構(gòu)化分析、設(shè)計技術(shù)90年代:面向?qū)ο蠓治?、設(shè)計技術(shù)1.1軟件工程簡述4.采用現(xiàn)代程序設(shè)計技術(shù)1.1軟件工程簡述5.結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,開發(fā)過程難以評價和管理。根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標準,使所得的結(jié)果能夠清楚地審查1.1軟件工程簡述5.結(jié)果應(yīng)能清楚地審查1.1軟件工程簡述6.開發(fā)小組的人員應(yīng)該少而精開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。開發(fā)小組人員數(shù)目的增加,使相互交流復(fù)雜、費用增加。1.1軟件工程簡述6.開發(fā)小組的人員應(yīng)該少而精1.1軟件工程簡述7.承認不斷改進軟件工程實踐的必要性遵循前6條基本原理,就能夠按照當(dāng)代軟件工程基本原理實現(xiàn)軟件的工程化生產(chǎn),但不能保證趕上時代前進的步伐。積極主動采納新的軟件技術(shù),且不斷總結(jié)經(jīng)驗。1.1軟件工程簡述7.承認不斷改進軟件工程實踐的必要性1.1軟件工程簡述三、軟件工程的目標及框架、原則⑴軟件工程的目標可概括為“生產(chǎn)具有正確性、可用性以及開銷合宜的產(chǎn)品”;⑵軟件工程的活動是“生產(chǎn)一個最終滿足需求且達到工程目標的軟件產(chǎn)品所需要的步驟”;⑶軟件工程實施過程中的四條基本原則:①
選取適宜的開發(fā)模型;②
采用合適的設(shè)計方法;③
提供高質(zhì)量的工程支持;④
重視開發(fā)過程的管理。1.1軟件工程簡述三、軟件工程的目標及框架、原則1.2軟件的生存周期及其開發(fā)模型1.“生命周期法”的起源。
軟件工程采用的“生命周期法”,就是從時間角度對軟件開發(fā)和維護的復(fù)雜問題進行分解,把軟件生存的漫長周期依次劃分為若干個階段,每個階段有相對獨立的任務(wù),然后再逐步完成每個階段的任務(wù).軟件生存周期包括問題定義、可行性分析和項目開發(fā)計劃、需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、維護等活動,可以將這些活動以適當(dāng)方式分配到不同階段去完成。1.2軟件的生存周期及其開發(fā)模型1.“生命周期法”的起源1.2軟件的生存周期及其開發(fā)模型2.生命周期劃分的原則任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜性,簡化不同階段之間的聯(lián)系,有利于軟件開發(fā)過程的組織管理。3.生命周期的劃分軟件生命周期一般分為:軟件定義(問題定義、可行性研究、需求分析)、軟件開發(fā)(總體設(shè)計、詳細設(shè)計、編碼和單元測試、綜合測試)、軟件使用與維護等三個時期。1.2軟件的生存周期及其開發(fā)模型2.生命周期劃分的原則1.2軟件的生命周期及其開發(fā)模型軟件定義問題定義可行性分析需求分析軟件開發(fā)系統(tǒng)設(shè)計編碼測試軟件與維護1.2軟件的生命周期及其開發(fā)模型軟件定義1.2軟件的生命周期及其開發(fā)模型軟件生命周期的各個階段:(1)問題定義(2)可行性分析(3)需求分析
分析軟件需求,編寫軟件需求規(guī)格說明(4)概要設(shè)計和詳細設(shè)計
確定軟件體系結(jié)構(gòu),設(shè)計軟件模塊(5)程序編寫(6)軟件測試(7)運行和維護1.2軟件的生命周期及其開發(fā)模型軟件生命周期的各個階段:1.2軟件的生存周期及其開發(fā)模型一、瀑布模型瀑布模型的優(yōu)點:通過設(shè)置里程碑,明確每階段的任務(wù)與目標。可為每階段制定開發(fā)計劃,進行成本預(yù)算,組織開發(fā)力量。通過階段評審,將開發(fā)過程納入正確軌道。嚴格的計劃性保證軟件產(chǎn)品的按時交付。瀑布模型的缺點:缺乏靈活性,不能適應(yīng)用戶需求的改變。開始階段的小錯誤被逐級放大,可能導(dǎo)致軟件產(chǎn)品報廢。返回上一級的開發(fā)需要十分高昂的代價。隨著軟件規(guī)模和復(fù)雜性的增加,軟件產(chǎn)品成功的機率大幅下降。瀑布模型的適應(yīng)范圍:它主要適應(yīng)于小規(guī)模的軟件開發(fā)。1.2軟件的生存周期及其開發(fā)模型一、瀑布模型軟件工程第一章緒論2.2軟件開發(fā)過程模型二、原型模型1.基本思想在獲取一組基本的需求定義后,利用高級軟件工具的可開發(fā)環(huán)境,快速地建立一個目標系統(tǒng)的最初版本,并把它交給用戶試用、補充和修改,再進行新的版本開發(fā)。反復(fù)進行這個過程,直到得出系統(tǒng)的“精確解”,即用戶滿意為止。經(jīng)過這樣一個反復(fù)補充和修改的過程,應(yīng)用系統(tǒng)的“最初版本”就逐步演變?yōu)橄到y(tǒng)的“最終版本”。2.2軟件開發(fā)過程模型二、原型模型1.2軟件的生存周期及其開發(fā)模型原型:一個具體的可執(zhí)行模型,它實現(xiàn)了系統(tǒng)的若干功能。原型法:不斷地運行系統(tǒng)“原型”來進行啟發(fā)、揭示和判斷的系統(tǒng)開發(fā)方法。1.2軟件的生存周期及其開發(fā)模型原型:一個具體的可執(zhí)行模型1.2軟件的生存周期及其開發(fā)模型原型法的主要思路:根據(jù)用戶的需求迅速構(gòu)造一個低成本的用于演示及評價的試驗系統(tǒng)(原型)由用戶對原型進行評價在用戶評價的基礎(chǔ)上對原型進行修改或重構(gòu)。
1.2軟件的生存周期及其開發(fā)模型原型法的主要思路:1.2軟件的生存周期及其開發(fā)模型有了滿意的系統(tǒng)原型,同時也積累了使用原型的經(jīng)驗,用戶常會提出新目標,從而進一步重新構(gòu)造原型周期。新目標的范圍要比修改或補充不滿意的原型大。(1)漸增型(2)用于驗證軟件需求的原型(3)用于驗證設(shè)計方案1.2軟件的生存周期及其開發(fā)模型有了滿意的系統(tǒng)原型,同時也積1.2軟件的生存周期及其開發(fā)模型3.軟件原型是軟件的最初版本,以最少的費用、最短的時間開發(fā)出的、以反映最后軟件的主要特征的系統(tǒng)。它具有以下特征:(1)它是一個可實際運行的系統(tǒng)。1.2軟件的生存周期及其開發(fā)模型3.軟件原型是軟件的最初版1.2軟件的生存周期及其開發(fā)模型(2)它沒有固定的生存期。一種極端是扔掉原型(以最簡便方式大量借用已有軟件,做出最后產(chǎn)品的模型,證實產(chǎn)品設(shè)想是成功的,但產(chǎn)品中并不使用);另一種極端是最終產(chǎn)品的一部分即增量原型(先做出最終產(chǎn)品的核心部分,逐步增加補充模塊),演進原型居于其中(每一版本扔掉一點,增加一點,逐步完善至最終產(chǎn)品)。1.2軟件的生存周期及其開發(fā)模型(2)它沒有固定的生存期。一1.2軟件的生存周期及其開發(fā)模型(3)從需求分析到最終產(chǎn)品都可作原型,即可為不同目標作原型。(4)它必須快速、廉價。(5)它是迭代過程的集成部分,即每次經(jīng)用戶評價后修改、運行,不斷重復(fù)雙方認可。1.2軟件的生存周期及其開發(fā)模型(3)從需求分析到最終產(chǎn)品都快速原型法的特點:有直觀的系統(tǒng)開發(fā)過程用戶參與系統(tǒng)開發(fā)的全過程可以逐步明確用戶需求用戶直接掌握系統(tǒng)的開發(fā)進度用戶接受程度高1.2軟件的生存周期及其開發(fā)模型快速原型法的特點:1.2軟件的生存周期及其開發(fā)模型1.2軟件的生存周期及其開發(fā)模型快速原型法的不足:不適用于擁有大量計算或控制功能的系統(tǒng)不適用于大型或復(fù)雜的系統(tǒng)容易掩蓋需求、分析、設(shè)計等方面的問題結(jié)果不確定——隨原型構(gòu)造評價過程而定整體考慮較少快速原型法主要適應(yīng)于:適用于解決有不確定因素的問題適用于對用戶界面要求高的系統(tǒng)適用于決策支持方面的應(yīng)用適用于中型系統(tǒng)1.2軟件的生存周期及其開發(fā)模型快速原型法的不足:1.2軟件的生存周期及其開發(fā)模型三、螺旋模型在原型基礎(chǔ)上,進行多次原型反復(fù)并增加風(fēng)險評估,形成螺旋模型。1.2軟件的生存周期及其開發(fā)模型三、螺旋模型1.2軟件的生存周期及其開發(fā)模型1.2軟件的生存周期及其開發(fā)模型1.2軟件的生存周期及其開發(fā)模型1.2軟件的生存周期及其開發(fā)模型1.2軟件的生存周期及其開發(fā)模型螺旋模型分析在螺旋模型結(jié)構(gòu)中,維護只是螺旋模型的另一個周期,在維護和開發(fā)之間本質(zhì)上并沒有區(qū)別,從而解決了做太多測試或未作足夠測試所帶來的風(fēng)險。適用條件內(nèi)部的大規(guī)模軟件的開發(fā),不太適合合同軟件。一般只適用于大規(guī)模軟件的開發(fā)1.2軟件的生存周期及其開發(fā)模型螺旋模型分析小結(jié)1、理解:程序、軟件、軟件工程的概念,軟件生存期各階段的特點和內(nèi)容,軟件危機產(chǎn)生的原因。2、應(yīng)用:軟件生存周期模型,快速原型法,螺旋模型,構(gòu)件組裝模型。3、了解:軟件發(fā)展的4個階段及特點,軟件危機的產(chǎn)生及其表現(xiàn)形式。4、關(guān)注:軟件工程的開發(fā)方法。小結(jié)1、理解:程序、軟件、軟件工程的概念,軟件生存期各階段的軟件工程軟件工程一、課程的性質(zhì)、任務(wù):“軟件工程”是高職高專院校計算機應(yīng)用與軟件技術(shù)專業(yè)教學(xué)計劃中一門核心基礎(chǔ)課程,它是研究軟件開發(fā)和軟件管理的一門工程科學(xué)。它的主要任務(wù)是掌握支持軟件開發(fā)和管理的理論、方法、技術(shù)、標準以及計算機輔助軟件工程的工具(Visio或Rose)環(huán)境等知識;使學(xué)生具有軟件開發(fā)能力(包括熟練進行程序設(shè)計語言的結(jié)構(gòu)化編碼與可視化設(shè)計能力;UML的閱讀和建模能力;培養(yǎng)用軟件工程化及項目化的思想處理解決問題的能力等)。一、課程的性質(zhì)、任務(wù):“軟件工程”是高職高專院校計算機應(yīng)用與概括說:軟件開發(fā)能力最關(guān)鍵的步驟有三步:軟件工程第一章緒論二、通過學(xué)習(xí)應(yīng)能達到如下目標:1.接受一種思想。掌握軟件工程的基本原理、概念與方法----主要包括軟件系統(tǒng)的可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、維護、面向?qū)ο?、項目管理等方面的基本知識與方法。
2.掌握軟件工程中的一些基本技術(shù)方法,如數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)分析方法(如Jackson方法等),面向?qū)ο蠓治龇椒?、集成測試方法、項目管理的基本方法等。
3.結(jié)合模擬案例,要求學(xué)生從實際中掌握從面向過程到面向?qū)ο笏枷肜碚摰幕痉椒ê图记?。掌握軟件開發(fā)文檔的組織編寫等。4.掌握一種工具。學(xué)期末能用Visio或Rose軟件完成大作業(yè)的設(shè)計(畫各種軟件工程圖)(指定或自找題目)5.把目前或以后要學(xué)的程序設(shè)計知識(C、Java、VB、VC++、VB.NET等)提高到一定理論高度認識:編程能否用?
學(xué)會思想比掌握一種工具更為重要。
小提示:二、通過學(xué)習(xí)應(yīng)能達到如下目標:小提示:三、幾點建議:“學(xué)知識,最重要的是融會貫通!”人類解決復(fù)雜問題時普遍采用的一個策略就是“各個擊破”,也就是對問題進行“分解,分解,再分解,然后再分別解決各個子問題!”三、幾點建議:“學(xué)知識,最重要的是融會貫通!”
“現(xiàn)在大家都已認識到,如果有哪個項目不遵循軟件工程原則必定會受到實踐的懲罰?!薄败浖こ陶n是我們參加工作以后最能直接應(yīng)用的一門專業(yè)課。”——一位剛畢業(yè)參加工作的計算機專業(yè)學(xué)生“現(xiàn)在大家都已認識到,如果有哪個項目不遵循軟件工程原則必
什么是軟件
軟件的特點
軟件的發(fā)展
軟件生存期
什么是軟件工程
軟件工程的目的和要求第一章緒論什么是軟件第一章緒論先接受2個正確觀點:1、“開發(fā)軟件不等于編寫程序”
—
開發(fā)軟件應(yīng)該完成的工作遠遠多于編寫程序應(yīng)該完成的工作。設(shè)計算法(即完成指定功能的步驟),然后用程序設(shè)計語言(例如:C語言)表達該算法。而開發(fā)軟件并非就是編寫程序,事實上編寫程序僅僅是開發(fā)軟件所應(yīng)完成的工作的一部分,而且只占一小部分。為了開發(fā)出一個符合用戶需要、質(zhì)量合格的軟件,軟件工程師必須首先弄清楚用戶面臨的問題是什么,也就是要明確軟件的“主攻”方向;接下來應(yīng)該進行可行性研究方案,分析用戶面臨的問題是否有行得通的解決方案。為避免浪費資源,僅在該軟件的開發(fā)是可行的前提下,才進行實質(zhì)性的開發(fā)工作;1.1軟件工程簡述先接受2個正確觀點:1.1軟件工程簡述然后應(yīng)該進行需求分析工作,通過與用戶的反復(fù)交流,搞清楚用戶對該軟件的具體需求,這些需求是進行軟件設(shè)計的依據(jù);在編寫程序之前需要先進行設(shè)計。通常,大型軟件的設(shè)計工作又分成兩個階段進行,先進行總體設(shè)計(又稱為概要設(shè)計),再進行詳細設(shè)計;編寫程序?qū)嵸|(zhì)上是把設(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的程序;程序編寫出來之后,還需要經(jīng)過嚴格的測試過程(需要的工作量通常占軟件開發(fā)全部工作量的40%~50%),軟件確實符合用戶需求而且質(zhì)量合格,才能交付給用戶使用。然后應(yīng)該進行需求分析工作,通過與用戶的反復(fù)交流,搞清楚用戶對2、“錯誤做法會導(dǎo)致軟件危機”。開發(fā)軟件不等于編寫程序。但是,迄今為止,仍然有不少人錯誤地認為開發(fā)軟件就是編寫程序,或者認為開發(fā)軟件主要就是編寫程序。人們之所以有錯誤的認識并在開發(fā)軟件時采用了錯誤的做法,主要可歸因于在計算機系統(tǒng)發(fā)展的早期階段“開發(fā)軟件”的個體化特點。所謂軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。這些問題絕不僅僅是不能正常運行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。(軟件危機的具體表現(xiàn)在后面介紹)2、“錯誤做法會導(dǎo)致軟件危機”。1.1軟件工程簡述軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列。計算機程序包括源程序和目標程序。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(即數(shù)據(jù)的組織形式)。文檔是與程序開發(fā),維護和使用有關(guān)的圖文材料。1.1軟件工程簡述軟件是計算機系統(tǒng)中與硬件相互依存的另一部分1.1軟件工程簡述軟件的特點軟件是一種邏輯實體,而不是具體的物理實體。因此,它具有抽象性。軟件的生產(chǎn)與硬件不同,沒有明顯的制造過程。對軟件的質(zhì)量控制,必須立足于軟件開發(fā)方面。在軟件的運行和使用期間,沒有像硬件那樣的磨損、老化問題。軟件的開發(fā)和運行往往受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有不同程度的依賴性。1.1軟件工程簡述軟件的特點1.1軟件工程簡述
面向過程的程序=算法+數(shù)據(jù)結(jié)構(gòu)面向?qū)ο蟮某绦?對象+消息面向構(gòu)件的程序=構(gòu)件+構(gòu)架軟件=程序+數(shù)據(jù)+文檔1.1軟件工程簡述面向過程的程序=算法+數(shù)據(jù)結(jié)構(gòu)軟件工程第一章緒論1.1軟件工程簡述軟件的特點(續(xù))迄今為止,軟件的開發(fā)尚未完全擺脫手工藝的方式。軟件本身是復(fù)雜的。軟件的成本相當(dāng)昂貴。(見下頁圖示)相當(dāng)多的軟件工作涉及到社會因素。1.1軟件工程簡述軟件的特點(續(xù))1.1軟件工程簡述軟件的分類按軟件的功能劃分:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件按軟件的規(guī)模劃分:微型、小型、中型、大型、超大型按軟件的工作方式劃分:實時、分時、交互、批處理按軟件服務(wù)對象的范圍劃分:項目軟件、產(chǎn)品軟件1.1軟件工程簡述軟件的分類1.1軟件工程簡述一、計算機軟件發(fā)展的各個時期1.第一代(60年代中期之前)程序設(shè)計階段硬件通用,軟件專用;程序規(guī)模小,編寫者和使用者為同一人(同組人)。2.第二代(60年代中期-70年代中期)程序系統(tǒng)階段出現(xiàn)“軟件作坊”、產(chǎn)品軟件;“個體化”開發(fā)方法。3.第三代(70年代中期之后)軟件工程階段軟件開發(fā)成為一門新興的工程學(xué)科——軟件工程。4.第四代(90年代后)現(xiàn)代軟件工程階段。1.1軟件工程簡述一、計算機軟件發(fā)展的各個時期計算機軟件發(fā)展的三個時期及特點
程序設(shè)計程序系統(tǒng)軟件工程現(xiàn)代軟件工程軟件的范疇程序程序及說明書產(chǎn)品軟件(項目軟件)項目工程主要程序設(shè)計語言匯編及機器語言高級語言高級語言系統(tǒng)、程序設(shè)計語言面向?qū)ο罂梢暬O(shè)計語言軟件工作范圍程序編寫包括設(shè)計和測試軟件生存期整個軟件生存期需求者程序設(shè)計者本人少數(shù)用戶市場用戶面向所有用戶
計算機軟件發(fā)展的三個時期及特點
程序設(shè)計程序系統(tǒng)軟件工程現(xiàn)計算機軟件發(fā)展的三個時期及特點計算機軟件發(fā)展的三個時期及特點1.1軟件工程簡述二、什么是軟件危機軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。主要是兩個問題。1.如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求。2.如何維護數(shù)量不斷膨脹的已有軟件1.1軟件工程簡述二、什么是軟件危機1.1軟件工程簡述三、軟件危機的主要表現(xiàn)1.對軟件開發(fā)成本和進度的估計不準確2.用戶不滿意3.軟件質(zhì)量不高、可靠性差4.軟件常常不可維護、錯誤難以改正。5.缺乏適當(dāng)?shù)奈臋n資料6.軟件成本占系統(tǒng)總成本的比例逐年上升7.軟件開發(fā)速度跟不上計算機發(fā)展速度1.1軟件工程簡述三、軟件危機的主要表現(xiàn)1.1軟件工程簡述四、產(chǎn)生軟件危機的原因1.與軟件本身的特點有關(guān)軟件不同于硬件,它是計算機系統(tǒng)的邏輯部件而不是物理部件。在寫出程序代碼并在計算機運行之前,軟件開發(fā)過程的進展情況較難衡量,軟件開發(fā)的質(zhì)量也較難評價。因此,管理和控制軟件開發(fā)過程相當(dāng)困難。2.軟件不易于維護(1)軟件維護通常意味著改正或修改原來的設(shè)計,客觀上使軟件較難維護。1.1軟件工程簡述四、產(chǎn)生軟件危機的原因1.1軟件工程簡述(2)軟件不同于一般程序,它的規(guī)模大,不易于維護。3.在軟件開發(fā)過程中,或多或少地采用了錯誤的方法和技術(shù)。4.對用戶需求沒有完整準確的認識,就匆忙著手編寫程序。1.1軟件工程簡述(2)軟件不同于一般程序,它的規(guī)模大,不易1.1軟件工程簡述五、解決軟件危機的途徑1.技術(shù)措施使用更好的軟件開發(fā)方法和開發(fā)工具2.組織管理措施軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。1.1軟件工程簡述五、解決軟件危機的途徑1.1軟件工程簡述一、什么是軟件工程軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來。軟件工程是一門涉及軟件計劃、需求分析、設(shè)計、編碼、測試和維護的原理、方法及工具的研究和應(yīng)用的學(xué)科。1.1軟件工程簡述一、什么是軟件工程1.1軟件工程簡述二、軟件工程的基本原理1968年,北大西洋公約組織(NATO),召開的有關(guān)計算機軟件會議上正式提出“軟件工程”術(shù)語。目前有100多條關(guān)于軟件工程的準則,其中最出名的是著名軟件工程專家B.W.Boehm在1983年提出的7條基本原理。1.1軟件工程簡述二、軟件工程的基本原理1.1軟件工程簡述1.用分階段的生命周期計劃嚴格管理經(jīng)統(tǒng)計表明,不成功的軟件項目中有一半左右是由于計劃不周造成的。Boehm認為,在軟件的整個生命周期中應(yīng)制定并嚴格執(zhí)行六類計劃:項目概要計劃、里程碑計劃、項目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護計劃。1.1軟件工程簡述1.用分階段的生命周期計劃嚴格管理1.1軟件工程簡述2.堅持進行階段評審大部分錯誤是在編碼之前造成的因此,在每個階段都進行嚴格的評審,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程的錯誤1.1軟件工程簡述2.堅持進行階段評審1.1軟件工程簡述3.實行嚴格的產(chǎn)品控制在軟件開發(fā)過程中不要隨意改變需求,因為改變某項需求往往需要付出較高的代價,但在實踐中用戶往往會提出需求變更,因此需要采取科學(xué)的產(chǎn)品控制技術(shù)。目前主要實行基準配置管理:基準配置是指經(jīng)過階段評審后的軟件配置成分,如各個階段產(chǎn)生的文檔或程序代碼。對涉及基準配置的修改,必須經(jīng)過嚴格的評審,通過后才能實施修改。1.1軟件工程簡述3.實行嚴格的產(chǎn)品控制1.1軟件工程簡述4.采用現(xiàn)代程序設(shè)計技術(shù)實踐表明:采用先進的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護的效率。80年代及之前:結(jié)構(gòu)化分析、設(shè)計技術(shù)90年代:面向?qū)ο蠓治?、設(shè)計技術(shù)1.1軟件工程簡述4.采用現(xiàn)代程序設(shè)計技術(shù)1.1軟件工程簡述5.結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,開發(fā)過程難以評價和管理。根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標準,使所得的結(jié)果能夠清楚地審查1.1軟件工程簡述5.結(jié)果應(yīng)能清楚地審查1.1軟件工程簡述6.開發(fā)小組的人員應(yīng)該少而精開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。開發(fā)小組人員數(shù)目的增加,使相互交流復(fù)雜、費用增加。1.1軟件工程簡述6.開發(fā)小組的人員應(yīng)該少而精1.1軟件工程簡述7.承認不斷改進軟件工程實踐的必要性遵循前6條基本原理,就能夠按照當(dāng)代軟件工程基本原理實現(xiàn)軟件的工程化生產(chǎn),但不能保證趕上時代前進的步伐。積極主動采納新的軟件技術(shù),且不斷總結(jié)經(jīng)驗。1.1軟件工程簡述7.承認不斷改進軟件工程實踐的必要性1.1軟件工程簡述三、軟件工程的目標及框架、原則⑴軟件工程的目標可概括為“生產(chǎn)具有正確性、可用性以及開銷合宜的產(chǎn)品”;⑵軟件工程的活動是“生產(chǎn)一個最終滿足需求且達到工程目標的軟件產(chǎn)品所需要的步驟”;⑶軟件工程實施過程中的四條基本原則:①
選取適宜的開發(fā)模型;②
采用合適的設(shè)計方法;③
提供高質(zhì)量的工程支持;④
重視開發(fā)過程的管理。1.1軟件工程簡述三、軟件工程的目標及框架、原則1.2軟件的生存周期及其開發(fā)模型1.“生命周期法”的起源。
軟件工程采用的“生命周期法”,就是從時間角度對軟件開發(fā)和維護的復(fù)雜問題進行分解,把軟件生存的漫長周期依次劃分為若干個階段,每個階段有相對獨立的任務(wù),然后再逐步完成每個階段的任務(wù).軟件生存周期包括問題定義、可行性分析和項目開發(fā)計劃、需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、維護等活動,可以將這些活動以適當(dāng)方式分配到不同階段去完成。1.2軟件的生存周期及其開發(fā)模型1.“生命周期法”的起源1.2軟件的生存周期及其開發(fā)模型2.生命周期劃分的原則任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜性,簡化不同階段之間的聯(lián)系,有利于軟件開發(fā)過程的組織管理。3.生命周期的劃分軟件生命周期一般分為:軟件定義(問題定義、可行性研究、需求分析)、軟件開發(fā)(總體設(shè)計、詳細設(shè)計、編碼和單元測試、綜合測試)、軟件使用與維護等三個時期。1.2軟件的生存周期及其開發(fā)模型2.生命周期劃分的原則1.2軟件的生命周期及其開發(fā)模型軟件定義問題定義可行性分析需求分析軟件開發(fā)系統(tǒng)設(shè)計編碼測試軟件與維護1.2軟件的生命周期及其開發(fā)模型軟件定義1.2軟件的生命周期及其開發(fā)模型軟件生命周期的各個階段:(1)問題定義(2)可行性分析(3)需求分析
分析軟件需求,編寫軟件需求規(guī)格說明(4)概要設(shè)計和詳細設(shè)計
確定軟件體系結(jié)構(gòu),設(shè)計軟件模塊(5)程序編寫(6)軟件測試(7)運行和維護1.2軟件的生命周期及其開發(fā)模型軟件生命周期的各個階段:1.2軟件的生存周期及其開發(fā)模型一、瀑布模型瀑布模型的優(yōu)點:通過設(shè)置里程碑,明確每階段的任務(wù)與目標??蔀槊侩A段制定開發(fā)計劃,進行成本預(yù)算,組織開發(fā)力量。通過階段評審,將開發(fā)過程納入正確軌道。嚴格的計劃性保證軟件產(chǎn)品的按時交付。瀑布模型的缺點:缺乏靈活性,不能適應(yīng)用戶需求的改變。開始階段的小錯誤被逐級放大,可能導(dǎo)致軟件產(chǎn)品報廢。返回上一級的開發(fā)需要十分高昂的代價。隨著軟件規(guī)模和復(fù)雜性的增加,軟件產(chǎn)品成功的機率大幅下降。瀑布模型的適應(yīng)范圍:它主要適應(yīng)于小規(guī)模的軟件開發(fā)。1.2軟件的生存周期及其開發(fā)模型一、瀑布模型軟件工程第一章緒論2.2軟件開發(fā)過程模型二、原型模型1.基本思想在獲取一組基本的需求定義后,利用高級軟件工具的可開發(fā)環(huán)境,快速地建立一個目標系統(tǒng)的最初版本,并把它交給用戶試用、補充和修改,再進行新的版本開發(fā)。反復(fù)進行這個過程,直到得出系統(tǒng)的“精確解”,即用戶滿意為止。經(jīng)過這樣一個反復(fù)補充和修改的過程,應(yīng)用系統(tǒng)的“最初版本”就逐步演變?yōu)橄到y(tǒng)的“最終版本”。2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年租賃合同中的維修責(zé)任
- 研究生復(fù)試課程設(shè)計問題
- 紅色課程設(shè)計思
- 幼兒園青蛙課程設(shè)計
- 步進式運輸機課程設(shè)計
- 舞蹈身材訓(xùn)練課程設(shè)計
- 班主任工作中的困惑與解決之道
- 電子心率計數(shù)器課程設(shè)計
- 硬件課程設(shè)計 函數(shù)
- 2024年物業(yè)管理年終工作總結(jié)范文(31篇)
- 銷售業(yè)務(wù)拓展外包協(xié)議模板2024版版
- 2024軟件維護合同范本
- 2022-2023學(xué)年北京市海淀區(qū)七年級上學(xué)期期末語文試卷(含答案解析)
- 汽車尾氣排放治理作業(yè)指導(dǎo)書
- 人教版初中美術(shù)八年級上冊 第一單元 第1課 造型的表現(xiàn)力 教案
- 云南省師范大學(xué)附屬中學(xué)2025屆高二生物第一學(xué)期期末聯(lián)考試題含解析
- 人教部編版初中八年級生物上冊知識梳理
- 預(yù)應(yīng)力錨索加固監(jiān)理實施細則
- 中職2024-2025學(xué)年高一上學(xué)期期末語文試題06(解析版)
- 土木工程材料期末考試試題庫
- 耕作學(xué)智慧樹知到期末考試答案章節(jié)答案2024年中國農(nóng)業(yè)大學(xué)
評論
0/150
提交評論