軟件工程軟件工程概述課件



軟件工程軟件工程概述軟件工程軟件工程概述ppt課件課件1、戰(zhàn)鼓一響,法律無聲英國2、任何法律的根本;不,不成文法本身就是講道理法律,也-即明示道理愛科克3、法律是最保險(xiǎn)的頭盔愛科克4、一個(gè)國家如果綱紀(jì)不正,其國風(fēng)一定頹敗塞內(nèi)加5、法律不能使人人平等,但是在法律面前人人是平等的波洛克1.軟件的定義 軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的一部分,它是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合其中,程序是指按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是指使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是指與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料2.軟件的分類1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件2)按軟件規(guī)模微型軟件小型軟件中型軟件大型軟件甚大型軟件極大型軟件3.軟件的特點(diǎn)軟件是一種邏輯實(shí)體,而不是物理實(shí)體軟件的生產(chǎn)過程是開發(fā),而不是制造軟件不存在磨損、老化現(xiàn)象軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制軟件是復(fù)雜的年 份軟 件指 令 條 數(shù)1963水星計(jì)劃系統(tǒng)200萬條1967雙子星座計(jì)劃系統(tǒng)400萬條1973阿波羅計(jì)劃系統(tǒng)1000萬條1979哥倫比亞航天飛機(jī)系統(tǒng)4000萬條美國宇航局的軟件系統(tǒng)一覽表圖1-1 計(jì)算機(jī)系統(tǒng)中軟硬件成本所占比例的變化1.1.2 軟件生產(chǎn)的發(fā)展程序設(shè)計(jì)時(shí)期(約為20世紀(jì)5060年代)程序系統(tǒng)時(shí)期(約為20世紀(jì)6070年代)軟件工程時(shí)期(20世紀(jì)70年代以后)時(shí) 期特 點(diǎn)程 序 設(shè) 計(jì)程 序 系 統(tǒng)軟 件 工 程軟件的含義程序程序及規(guī)格說明書程序、文檔、數(shù)據(jù)主要程序設(shè)計(jì)語言匯編語言、機(jī)器語言高級(jí)語言 高級(jí)語言、各種開發(fā)工具軟件使用者程序員本人少數(shù)用戶市場用戶軟件規(guī)模小型中型大型開發(fā)軟件需要的人力個(gè)人開發(fā)小組開發(fā)小組及大中型軟件開發(fā)機(jī)構(gòu)軟件開發(fā)涉及的工作編碼設(shè)計(jì)、編碼、測試軟件生命周期的各個(gè)階段1.1.3 軟件開發(fā)面臨的主要問題 西方計(jì)算機(jī)科學(xué)家在20世紀(jì)6070年代總結(jié)了軟件開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題,表現(xiàn)為以下幾方面:對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確,開發(fā)成本超出預(yù)算,實(shí)際進(jìn)度相比預(yù)定計(jì)劃一再拖延。
用戶對(duì)“已完成”系統(tǒng)不滿意的現(xiàn)象時(shí)有發(fā)生軟件質(zhì)量常常不可靠,“缺陷”和“補(bǔ)丁”不斷軟件的可維護(hù)程度非常低軟件通常沒有相應(yīng)的文檔資料軟件成本不斷提高軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長1.1.4 軟件危機(jī)的提出1968年,北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國召開國際會(huì)議,第一次討論了“軟件危機(jī)”問題軟件危機(jī)”是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題,這類問題不僅僅是“不能正常運(yùn)行的軟件”才具有的,實(shí)際上幾乎所有軟件都不同程度地存在這類問題概括來說,軟件危機(jī)包含兩方面的問題:一是如何開發(fā)軟件,以滿足不斷增長、日趨復(fù)雜的需求;二是如何維護(hù)規(guī)模不斷膨脹的軟件產(chǎn)品這次會(huì)議同時(shí)提出了解決“軟件危機(jī)”的途徑,即采用工程化的思想來管理軟件開發(fā)的過程,并正式提出“軟件工程”一詞,從此一門新興的工程學(xué)科軟件工程應(yīng)運(yùn)而生1.2 軟件工程1.2.1 軟件工程的定義軟件工程是導(dǎo)軟件開發(fā)和維護(hù)的一門工程學(xué)科它采用工程的概念、原理、技術(shù)和方法,把經(jīng)過時(shí)間檢驗(yàn)而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,用于開發(fā)和維護(hù)軟件軟件工程是一門綜合性的交叉學(xué)科,它涉及哲學(xué)、計(jì)算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)及應(yīng)用領(lǐng)域知識(shí)。
2.軟件的分類1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件1.2.2 軟件工程的內(nèi)容和目標(biāo)軟件工程的三個(gè)要素軟件工程方法軟件工具軟件工程的過程軟件工程的目標(biāo)付出較低的開發(fā)成本達(dá)到要求的軟件功能取得較好的軟件性能開發(fā)的軟件易于移植需要較低的維護(hù)費(fèi)用能按時(shí)完成開發(fā)工作,及時(shí)交付使用1.2.3 軟件工程的作用(1)從軟件企業(yè)的專業(yè)人才來講,其作用體現(xiàn)在以下幾個(gè)方面:高層管理人員利用軟件工程的理論和方法來管理整個(gè)公司中層項(xiàng)目經(jīng)理和軟件工程師:利用軟件工程的理論和方法,來管理項(xiàng)目組的軟件開發(fā)軟件藍(lán)領(lǐng)工人利用軟件工程的理論和方法來實(shí)現(xiàn)軟件的開發(fā)軟件營銷人員利用軟件工程的理論和方法與客戶進(jìn)行溝通,以贏得客戶的信任軟件實(shí)施和維護(hù)人員:利用軟件工程的理論和方法,來實(shí)現(xiàn)軟件的功能、性能與接口的實(shí)施和維護(hù)軟件售前人員利用軟件工程的理論和方法,來提高投標(biāo)成功的把握2)從軟件項(xiàng)目管理來講,其作用體現(xiàn)在:在規(guī)定的時(shí)間內(nèi)按照規(guī)定的成本實(shí)現(xiàn)符合預(yù)期的質(zhì)量目標(biāo)(軟件的功能、性能和接口達(dá)到需求說明書的要求)的軟件3)從軟件企業(yè)本身來講,其作用體現(xiàn)在:持續(xù)地規(guī)范軟件開發(fā)過程和軟件管理過程,不斷地優(yōu)化軟件組織的個(gè)人素質(zhì)和集體素質(zhì),從而逐漸增強(qiáng)軟件企業(yè)的市場競爭實(shí)力。
4)從軟件企業(yè)發(fā)展進(jìn)程來講,其作用體現(xiàn)在:克服軟件危機(jī),控制軟件開發(fā)進(jìn)度,節(jié)約開發(fā)成本,提高軟件質(zhì)量2.軟件的分類1)按軟件功能系統(tǒng)軟件支撐軟件應(yīng)用軟件1.2.4 軟件工程的基本原則用分階段的生存周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.3 軟件生命周期1.3.1 軟件生命周期的定義可行性分析需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測試維護(hù)可行性分析 在項(xiàng)目進(jìn)入具體開發(fā)之前,首先需要進(jìn)行的步驟是可行性分析這一步驟必須回答的問題是“將要開發(fā)的軟件系統(tǒng)是做什么的?在經(jīng)濟(jì)上、技術(shù)上和操作上是否可行?”,具體來說,需要考慮的問題有:該軟件項(xiàng)目的性質(zhì)是什么、它是數(shù)據(jù)處理問題還是實(shí)時(shí)控制問題、它是科學(xué)計(jì)算問題還是人工智能問題等,以及該問題是否有行得通的解決辦法,若有解決問題的辦法,則需要多少費(fèi)用、多少資源(包括硬件、軟件和人員)、多少時(shí)間需求分析 這一階段主要要解決的是系統(tǒng)“做什么”的問題用戶了解他們所面對(duì)的問題,知道必須做什么,但是通常不能完整地、準(zhǔn)確地表達(dá)出來,也不知道怎樣用計(jì)算機(jī)解決他們的問題而軟件開發(fā)人員雖然知道怎樣用軟件完成人們提出的各種功能要求,但是,對(duì)用戶的具體業(yè)務(wù)和需求不完全清楚,這是需求分析階段的困難所在。
概要設(shè)計(jì) 這一階段主要解決的是系統(tǒng)“怎么做”的問題具體來說,開發(fā)人員要把確定的各項(xiàng)功能需求轉(zhuǎn)換成相應(yīng)的軟件體系結(jié)構(gòu),在該結(jié)構(gòu)中,每個(gè)成分都是意義明確的模塊,即每個(gè)模塊都和某些功能需求相對(duì)應(yīng)因此,概要設(shè)計(jì)的核心內(nèi)容就是設(shè)計(jì)軟件的結(jié)構(gòu),弄清該結(jié)構(gòu)由哪些模塊構(gòu)成,每個(gè)模塊的功能是什么,這些模塊之間的層次結(jié)構(gòu)是怎樣的同時(shí),還要設(shè)計(jì)該應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲(chǔ)什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等可行性分析 在項(xiàng)目進(jìn)入具體開發(fā)之前,首先需要進(jìn)行的步驟是可行性分析這一步驟必須回答的問題是“將要開發(fā)的軟件系統(tǒng)是做什么的?在經(jīng)濟(jì)上、技術(shù)上和操作上是否可行?”,具體來說,需要考慮的問題有:該軟件項(xiàng)目的性質(zhì)是什么、它是數(shù)據(jù)處理問題還是實(shí)時(shí)控制問題、它是科學(xué)計(jì)算問題還是人工智能問題等,以及該問題是否有行得通的解決辦法,若有解決問題的辦法,則需要多少費(fèi)用、多少資源(包括硬件、軟件和人員)、多少時(shí)間詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)階段就是對(duì)每個(gè)模塊要完成的功能具體描述為精確的、結(jié)構(gòu)化的過程描述,即該模塊的控制結(jié)構(gòu)是怎樣的,先做什么,后做什么,有什么樣的條件判定,有哪些重復(fù)處理等,然后用相應(yīng)的工具把這些控制結(jié)構(gòu)表示出來。
編碼 編碼階段就是把每個(gè)模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計(jì)算機(jī)可接受的程序代碼,即用種某特定程序設(shè)計(jì)語言編寫的“源程序清單”編寫出的程序應(yīng)該結(jié)構(gòu)好、清晰易讀,并與設(shè)計(jì)一致測試 軟件測試階段的主要任務(wù)是發(fā)現(xiàn)和排除錯(cuò)誤,也就是對(duì)軟件系統(tǒng)進(jìn)行從上到下的全面的測試和檢驗(yàn),看它是否符合軟件總體設(shè)計(jì)方案規(guī)定的功能和要求測試分為模塊測試、集成測試、確認(rèn)測試模塊測試是查找各模塊在功能和結(jié)構(gòu)上存在的問題集成測試是將各模塊按一定順序組裝起來進(jìn)行的測試,主要是查找各模塊之間的接口問題確認(rèn)測試是按需求說明書對(duì)軟件的功能逐項(xiàng)進(jìn)行測試,以確定軟件功能是否符合用戶的需求,開發(fā)的軟件是否合格,能否交付用戶使用維護(hù) 軟件維護(hù)是軟件生存周期中時(shí)間最長的階段己交付的軟件正式投入使用后便進(jìn)入了軟件維護(hù)階段,它可以持續(xù)幾年甚至幾十年在軟件運(yùn)行過程中,可能由于各方面的原因需要對(duì)其進(jìn)行修改,如運(yùn)行中發(fā)現(xiàn)了軟件隱含的錯(cuò)誤而需要修改,為了適應(yīng)變化了的軟件運(yùn)行環(huán)境而需要做適當(dāng)?shù)刈兏?,也可能是因?yàn)橛脩魳I(yè)務(wù)發(fā)生變化而需要擴(kuò)充和增強(qiáng)軟件的功能等1.4 軟件開發(fā)方法1.4.1 結(jié)構(gòu)化開發(fā)方法1978年,E.Yourdon和L.L.Constan-tine提出SASD(Structured Analysis and Structured Design)方法,也可稱為面向功能的軟件開發(fā)方法,或面向數(shù)據(jù)流的軟件開發(fā)方法結(jié)構(gòu)化開發(fā)方法的指導(dǎo)思想是自頂向下、逐步求精,基本原則是功能分解與抽象,它由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)成1.4.2 面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法以數(shù)據(jù)結(jié)構(gòu)為驅(qū)動(dòng)的以1975年M.A.Jackson提出的Jackson方法和1974年J.D.Warnier提出的Warnier方法最有代表性主要思想是:一個(gè)問題的數(shù)據(jù)結(jié)構(gòu)與處理該問題數(shù)據(jù)結(jié)構(gòu)的控制結(jié)構(gòu)有著驚人的相似之處,根據(jù)這一思想,從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可以得到完整的程序結(jié)構(gòu)圖對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效1.4.3 面向?qū)ο蟮拈_發(fā)方法面向?qū)ο箝_發(fā)方法的基本出發(fā)點(diǎn)是盡可能按照人類認(rèn)識(shí)世界的方法和思維方式來分析和解決問題。
客觀世界是由許多具體的事物、事件、概念和規(guī)則組成的,這些均可看成對(duì)象面向?qū)ο驩O(Object-Oriented)技術(shù)在需求分析、可維護(hù)性和可靠性這3個(gè)軟件開發(fā)的關(guān)鍵環(huán)節(jié)和質(zhì)量指標(biāo)上有了實(shí)質(zhì)性的突破,徹底解決了在這些方面存在的問題1.5 軟件開發(fā)模型1.5.1 瀑布模型 瀑布模型是由溫斯頓羅伊斯(Winston Royce)在1970年提出的,其核心思想是按工序?qū)栴}簡化,將功能的實(shí)現(xiàn)與設(shè)計(jì)分開,便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試、軟件運(yùn)行和維護(hù)6個(gè)階段,并規(guī)定了它們自上而下、相互銜接的固定次序瀑布模型的特點(diǎn)十分明顯:軟件生存周期的順序性盡可能推遲軟件的編碼強(qiáng)調(diào)文檔瀑布模型的主要問題:各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量由于開發(fā)模型是線性的,用戶只有等到整個(gè)過程的末期才能見到開發(fā)成果,從而增加了開發(fā)的風(fēng)險(xiǎn)早期的錯(cuò)誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重的后果1.5.2 快速原型模型 快速原型模型主要是針對(duì)在軟件開發(fā)過程中需求分析不明確的情形而提出的,它又稱為原型模型。
采用快速原型模型進(jìn)行開發(fā)的過程是:在開發(fā)真實(shí)系統(tǒng)之前構(gòu)造一個(gè)原型,在該原型的基礎(chǔ)上逐漸完成整個(gè)系統(tǒng)的開發(fā)工作與瀑布模型相比,快速原型模型克服了瀑布模型的缺點(diǎn),減少了由于軟件需求不明確而帶來的開發(fā)風(fēng)險(xiǎn);軟件原型直觀、形象,更多地遵循了人們認(rèn)識(shí)事物的規(guī)律,因而更容易被人們接受;采用模擬的方法,縮短了用戶和系統(tǒng)分析、設(shè)計(jì)人員之間的距離;在整個(gè)系統(tǒng)開發(fā)過程中反饋及時(shí),標(biāo)準(zhǔn)統(tǒng)一,因而可及時(shí)地暴露問題;充分利用了新一代軟件開發(fā)工具,使系統(tǒng)開發(fā)和運(yùn)行的效率都大大提高快速原型模型的不足之處在于:快速建立起來的系統(tǒng)結(jié)構(gòu)加上連續(xù)的修改可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量低下1.5.3 漸增模型與瀑布模型相比,快速原型模型克服了瀑布模型的缺點(diǎn),減少了由于軟件需求不明確而帶來的開發(fā)風(fēng)險(xiǎn);軟件原型直觀、形象,更多地遵循了人們認(rèn)識(shí)事物的規(guī)律,因而更容易被人們接受;采用模擬的方法,縮短了用戶和系統(tǒng)分析、設(shè)計(jì)人員之間的距離;在整個(gè)系統(tǒng)開發(fā)過程中反饋及時(shí),標(biāo)準(zhǔn)統(tǒng)一,因而可及時(shí)地暴露問題;充分利用了新一代軟件開發(fā)工具,使系統(tǒng)開發(fā)和運(yùn)行的效率都大大提高快速原型模型的不足之處在于:快速建立起來的系統(tǒng)結(jié)構(gòu)加上連續(xù)的修改可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量低下1.5.4 螺旋模型 螺旋模型將軟件開發(fā)劃分為制訂計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施開發(fā)和客戶評(píng)估4類活動(dòng),活動(dòng)描述如下:制訂計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,明確項(xiàng)目開發(fā)的限制條件。
風(fēng)險(xiǎn)分析:分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn)實(shí)施開發(fā):實(shí)施軟件開發(fā)仍然按照瀑布模型中的分析、設(shè)計(jì)、編碼、測試等步驟進(jìn)行客戶評(píng)估:評(píng)價(jià)軟件的功能和性能,并提出修改意見1.5.5 噴泉模型1.5.6 構(gòu)件化開發(fā)模型 用于演化式的開發(fā)或迭代式的開發(fā),它從與客戶的交流開始,首先獲得問題的定義,同時(shí)標(biāo)識(shí)基本的類,然后對(duì)項(xiàng)目進(jìn)行計(jì)劃與風(fēng)險(xiǎn)分析在進(jìn)入開發(fā)階段后,首先從候選類的標(biāo)識(shí)開始,在已有的類庫中查找相應(yīng)的類是否存在,如果已經(jīng)存在則提取出來進(jìn)行復(fù)用;如果候選類不存在,就要利用面向?qū)ο蟮姆椒▌?chuàng)建并存放到類庫中,初步完成系統(tǒng)的構(gòu)造后,再送客戶進(jìn)行評(píng)估,這樣即完成了第一次迭代如此反復(fù)迭代,螺旋向前,逐步完成項(xiàng)目的開發(fā)1.6 軟件工具及支撐環(huán)境1.6.1 軟件工具的分類需求分析工具設(shè)計(jì)工具編碼工具確認(rèn)工具維護(hù)工具1.6.2 軟件開發(fā)支撐環(huán)境軟件開發(fā)支撐環(huán)境是指在基本硬件與軟件的基礎(chǔ)上,提供一組能支持軟件生存周期的工具,即提供能支持軟件開發(fā)、維護(hù)、管理和質(zhì)量控制等各個(gè)方面,而且能適應(yīng)多種用戶要求的工具軟件開發(fā)支撐環(huán)境一般由數(shù)據(jù)庫、一組工具和一組統(tǒng)一的命令或調(diào)用方式3部分組成1.6.3 常用CASE工具VisioIBM Rational系列Power Designer第第1章結(jié)束章結(jié)束 謝謝!END16、業(yè)余生活要有意義,不要越軌。
華盛頓17、一個(gè)人即使已登上頂峰,也仍要自強(qiáng)不息羅素貝克18、最大的挑戰(zhàn)和突破在于用人,而用人最大的突破在于信任人馬云19、自己活著,就是為了使別人過得更美好雷鋒20、要掌握書,莫被書掌握;要為生而讀,莫為讀而生。
