![經(jīng)濟學軟件工程-課件_第1頁](http://file4.renrendoc.com/view/9611448965f52e4583a3135e271519e3/9611448965f52e4583a3135e271519e31.gif)
![經(jīng)濟學軟件工程-課件_第2頁](http://file4.renrendoc.com/view/9611448965f52e4583a3135e271519e3/9611448965f52e4583a3135e271519e32.gif)
![經(jīng)濟學軟件工程-課件_第3頁](http://file4.renrendoc.com/view/9611448965f52e4583a3135e271519e3/9611448965f52e4583a3135e271519e33.gif)
![經(jīng)濟學軟件工程-課件_第4頁](http://file4.renrendoc.com/view/9611448965f52e4583a3135e271519e3/9611448965f52e4583a3135e271519e34.gif)
![經(jīng)濟學軟件工程-課件_第5頁](http://file4.renrendoc.com/view/9611448965f52e4583a3135e271519e3/9611448965f52e4583a3135e271519e35.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1講軟件和軟件工程賀志軍
北師大珠海分校信息技術學院勵耘樓small308軟件工程之用工程化的方法來開發(fā)軟件?CopyrightZhijunHe1軟件和軟件工程第1講軟件和軟件工程賀志軍軟件工程之用工程化的方法來本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe2軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig計算機軟件什么是計算機軟件計算機軟件的特點?CopyrightZhijunHe3軟件和軟件工程計算機軟件什么是計算機軟件?CopyrightZhijun可執(zhí)行部分不可執(zhí)行部分文檔1文檔2文檔3什么是計算機軟件?計算機系統(tǒng)中的程序及其文檔的集合,文檔是為了便于了解程序所需的闡明性資料,文檔一般是給人看的,不一定裝入計算機程序?CopyrightZhijunHe4軟件和軟件工程可執(zhí)行部分不可執(zhí)行部分文檔1文檔2文檔3什么是計算機軟件?計什么是程序(1/2)程序:由程序設計語言所描述的、能為計算機所識別、理解和處理的語句序列程序例子Main(){inti,j;//變量定義charStr[10];i=i+j;//語句說明……}?CopyrightZhijunHe5軟件和軟件工程什么是程序(1/2)程序:由程序設計語言所描述的、能為計算什么是程序(2/2)程序設計語言具有良好、嚴格語法和語義目前程序設計語言主要有以下幾種類型面向機器:如匯編語言、機器語言等面向過程:如Fortran,Pascal,C等等面向對象:如Java等等面向問題:如結構化查詢語言SQL等等?CopyrightZhijunHe6軟件和軟件工程什么是程序(2/2)程序設計語言具有良好、嚴格語法和語義?CEvolutionofsoftware早期
第二階段
第三階段第四階段面向批處理
多用戶
分布式系統(tǒng)
強大的桌面系統(tǒng)有限的分布
實時
嵌入“智能”面向對象技術自定義軟件
數(shù)據(jù)庫
低成本硬件
專家系統(tǒng)
軟件產(chǎn)品
消費者的影響
人工神經(jīng)網(wǎng)絡
并行計算
網(wǎng)絡計算機195019601970198019902000Evolutionofsoftware早期軟件的發(fā)展
1946-1956年從計算機問世到實用的高級程序語言出現(xiàn)前存儲容量比較小,運算速度比較慢采用個體工作方式,用低級語言編寫程序應用領域主要是以數(shù)值數(shù)據(jù)處理為主的科學計算,其特點是輸入、輸出量較小衡量程序質量的標準主要是功效,即運行時間省、占用內存小主要研究內容是科學計算程序、服務性程序和程序庫,研究對象是順序程序?CopyrightZhijunHe8軟件和軟件工程軟件的發(fā)展1946-1956年?CopyrightZhi1956-1968年
從實用的高級程序語言出現(xiàn)到軟件工程出現(xiàn)前存儲器容量大,外圍設備得到迅速發(fā)展,出現(xiàn)了高級程序設計語言應用領域包括數(shù)據(jù)處理(非數(shù)值數(shù)據(jù)),其特點是計算量不大,但輸入、輸出量卻較大高速主機與低速外圍設備的矛盾突出,出現(xiàn)了操作系統(tǒng)、并發(fā)程序、數(shù)據(jù)庫及其管理系統(tǒng)20世紀60年代初提出了軟件一詞,開始認識到文檔的重要性研究高級程序設計語言、編譯程序、操作系統(tǒng)、支持編程的工具及各種應用軟件工作方式逐步從個體方式轉向合作方式出現(xiàn)軟件危機?CopyrightZhijunHe9軟件和軟件工程1956-1968年?CopyrightZhijunHe1968年-至今從軟件工程出現(xiàn)到現(xiàn)在硬件向巨型機和微型機二個方向發(fā)展,出現(xiàn)了計算機網(wǎng)絡,軟件方面提出了軟件工程,出現(xiàn)了“計算機輔助軟件工程”(CASE)計算機的應用領域滲透到各個業(yè)務領域,出現(xiàn)了嵌入式應用,其特點是受制于它所嵌入的宿主系統(tǒng)開發(fā)方式逐步由個體合作方式轉向工程方式軟件工程方面的研究主要包括軟件開發(fā)模型、軟件開發(fā)方法及技術、軟件工具與環(huán)境、軟件過程、軟件自動化系統(tǒng)等軟件方面研究以智能化、自動化、集成化、并行化、以及自然化為標志的軟件開發(fā)新技術?CopyrightZhijunHe10軟件和軟件工程1968年-至今?CopyrightZhijunHe10程序模型演化追求更具表達能力、更符合人類思維模式、易構造、易演化的計算模型軟件基本模型=實體元素+連接和交互?CopyrightZhijunHe11軟件和軟件工程程序模型演化追求更具表達能力、更符合人類思維模式、易構造、易程序開發(fā)技術演化盡可能提高軟件開發(fā)的效率和質量凝練共性并復用?CopyrightZhijunHe12軟件和軟件工程程序開發(fā)技術演化盡可能提高軟件開發(fā)的效率和質量?Copyri軟件特點開發(fā)而成非制造產(chǎn)生的,邏輯產(chǎn)品(智力,無形)非物理產(chǎn)品維護困難和復雜(完善,糾錯,…...)不會老化磨損,只會失效,維護引起的副作用?CopyrightZhijunHe13軟件和軟件工程軟件特點開發(fā)而成非制造產(chǎn)生的,?CopyrightZhij軟件失效曲線?CopyrightZhijunHe14軟件和軟件工程軟件失效曲線?CopyrightZhijunHe14軟件軟件特點生產(chǎn)只需復制軟件開發(fā)性質如成本、進度等難以估計軟件的開發(fā)更加依賴于開發(fā)人員的業(yè)務素質、智力、人員的合作、組織和管理軟件的開發(fā)和運行常受到計算機硬件的限制,對計算機硬件有著不同程度的依賴性軟件的開發(fā)至今尚未完全實現(xiàn)自動化軟件成本相當昂貴相當多的軟件工作涉及到社會因素?CopyrightZhijunHe15軟件和軟件工程軟件特點生產(chǎn)只需復制?CopyrightZhijunHe軟件的分類按工作范圍和使用特點分:系統(tǒng)軟件:系統(tǒng)軟件是一組為其他程序服務的程序。一些系統(tǒng)軟件(如編譯器、編輯器和文件管理程序)處理復雜的但也是確定的信息結構。其他的系統(tǒng)應用(如操作系統(tǒng)、驅動程序和通訊進程等)則處理大量的非確定的數(shù)據(jù)。不管哪種情況,系統(tǒng)軟件均具有以下特點:與計算機硬件頻繁交互;多用戶支持;需要精細調度、資源共享及靈活的進程管理的并發(fā)操作;復雜的數(shù)據(jù)結構;及多外部接口。?CopyrightZhijunHe16軟件和軟件工程軟件的分類按工作范圍和使用特點分:?CopyrightZh軟件的分類商業(yè)軟件:商業(yè)信息處理是最大的軟件應用領域。具體的“系統(tǒng)”(如工資表、帳目支付和接收、存貨清單等)均可歸為管理信息系統(tǒng)(MIS)軟件,它們可以訪問一個或多個包含商業(yè)信息的大型數(shù)據(jù)庫。該領域的應用將已有的數(shù)據(jù)重新構造,變換成一種能夠輔助商業(yè)操作和管理決策的形式。除了傳統(tǒng)的數(shù)據(jù)處理應用之外,商業(yè)軟件應用還包括交互式的和客戶機/服務器式的計算(如POS事務處理)。?CopyrightZhijunHe17軟件和軟件工程軟件的分類商業(yè)軟件:商業(yè)信息處理是最大的軟件應用領域。具體的軟件的分類實時軟件:管理、分析、控制現(xiàn)實世界中發(fā)生的事件的程序稱為實時軟件。實時軟件的組成包括:一個數(shù)據(jù)收集部件,負責從外部環(huán)境獲取和格式化信息;一個分析部件,負責將信息轉換成應用時所需要的形式;一個控制/輸出部件,負責響應外部環(huán)境;及一個管理部件,負責協(xié)調其他各部件,使得系統(tǒng)能夠保持一個可接受的實時響應時間(一般從1毫秒到1分鐘),應該注意到術語“實時”不同于“交互”或“分時”。一個實時系統(tǒng)必須在嚴格的時間范圍內響應。而一個交互系統(tǒng)(或分時系統(tǒng))的響應時間可以延遲,且不會帶來災難性的后果。?CopyrightZhijunHe18軟件和軟件工程軟件的分類實時軟件:管理、分析、控制現(xiàn)實世界中發(fā)生的事件的程軟件的分類工程和科學計算軟件:工程和科學計算軟件的特征是“數(shù)值分析”算法。此類應用含蓋面很廣,從天文學到火山學;從汽車壓力分析到航天飛機的軌道動力學;從分子生物學到自動化制造。不過,目前工程和科學計算軟件已不僅限于傳統(tǒng)的數(shù)值算法。計算機輔助設計、系統(tǒng)仿真和其他交互應用已經(jīng)開始具有實時軟件和系統(tǒng)軟件的特征。?CopyrightZhijunHe19軟件和軟件工程軟件的分類工程和科學計算軟件:工程和科學計算軟件的特征是“數(shù)軟件的分類嵌入式軟件:智能產(chǎn)品在幾乎每一個消費或工業(yè)市場上都是必不可少的,嵌入式軟件駐留在只讀內存中,用于控制這些智能產(chǎn)品。嵌入式軟件能夠執(zhí)行很有限但專職的功能(如微波爐的按鈕控制),或是提供比較強大的功能及控制能力(如汽車中的數(shù)字控制,包括燃料控制、儀表板顯示,剎車系統(tǒng)等)?CopyrightZhijunHe20軟件和軟件工程軟件的分類嵌入式軟件:智能產(chǎn)品在幾乎每一個消費或工業(yè)市場上都軟件的分類個人計算機軟件::個人計算機軟件市場是在過去十年中萌芽和發(fā)展起來的。字處理、電子表格、計算機圖形、多媒體、娛樂、數(shù)據(jù)庫管理、個人及商業(yè)金融應用、外部網(wǎng)絡或數(shù)據(jù)庫訪問,這些僅僅是成百上千這類應用中的幾種?CopyrightZhijunHe21軟件和軟件工程軟件的分類個人計算機軟件::個人計算機軟件市場是在過去十年中軟件的分類人工智能軟件:人工智能(AI)軟件利用非數(shù)值算法去解決復雜的問題,這些問題不能通過計算或直接分析得到答案。一個活躍的AI領域是專家系統(tǒng),也稱為基于知識的系統(tǒng)。AI軟件的其他應用領域還包括模式識別(圖象或聲音)、定理證明和游戲。最近,AI軟件的一個新分支,稱為人工神經(jīng)網(wǎng)絡,得到了很大進展。神經(jīng)網(wǎng)絡仿真人腦的處理結構(生物神經(jīng)系統(tǒng)的功能),這有可能導致一個全新類型的軟件登場,它不僅能夠識別復雜的模式,而且還能從過去的經(jīng)驗中自行學習進步。?CopyrightZhijunHe22軟件和軟件工程軟件的分類人工智能軟件:人工智能(AI)軟件利用非數(shù)值算法去
按軟件工作方式劃分:實時處理軟件分時軟件交互式軟件批處理軟件按軟件服務對象的范圍劃分:項目軟件產(chǎn)品軟件
?CopyrightZhijunHe23軟件和軟件工程按軟件工作方式劃分:?CopyrightZhijun
按使用的頻度進行劃分:
一次使用頻繁使用按軟件失效的影響進行劃分:
高可靠性軟件一般可靠性軟件?CopyrightZhijunHe24軟件和軟件工程按使用的頻度進行劃分:?CopyrightZhijun軟件語言
softwarelanguage
軟件語言是用于書寫計算機軟件的語言。它主要包括:
需求定義語言功能性語言設計性語言實現(xiàn)性語言(即程序設計語言)文檔語言?CopyrightZhijunHe25軟件和軟件工程軟件語言
softwarelanguage軟件語言是需求定義語言
requirementsdefinitionlanguage需求定義語言用來書寫軟件需求定義。軟件需求定義是軟件功能需求和非功能需求的定義性描述。軟件功能需求刻畫軟件“做什么”,軟件非功能需求刻畫諸如功能性限制、設計限制、環(huán)境描述、數(shù)據(jù)與通信規(guī)程及項目管理等典型的需求定義語言有PSL語言(ProblemStatementLanguage問題陳述語言)?CopyrightZhijunHe26軟件和軟件工程需求定義語言
requirementsdefinition功能性語言
functionallanguage功能性語言用來書寫軟件功能規(guī)約(functionalspecification)軟件功能規(guī)約是軟件功能的嚴格而完整的陳述。通常它只刻畫軟件系統(tǒng)“做什么”的外部功能,而不涉及系統(tǒng)“如何做”的內部算法。典型的功能性語言有廣譜語言、Z語言。?CopyrightZhijunHe27軟件和軟件工程功能性語言
functionallanguage功能性語言設計性語言
designlanguage設計性語言用來書寫軟件設計規(guī)約(designspecification)軟件設計規(guī)約是軟件設計的嚴格而完整的陳述。一方面,它是軟件功能規(guī)約的算法性細化,刻畫軟件“如何做”的內部算法,另一方面,它是軟件實現(xiàn)的依據(jù)。典型的設計性語言有PDL語言(ProgramDesignLanguage)?CopyrightZhijunHe28軟件和軟件工程設計性語言
designlanguage設計性語言用來書寫實現(xiàn)性語言
實現(xiàn)性語言用來書寫計算機程序實現(xiàn)性語言也稱編程語言或程序設計語言(programminglanguage)程序設計語言可按語言的級別、對使用者的要求、應用范圍、使用方式、成分性質等多種角度進行分類
?CopyrightZhijunHe29軟件和軟件工程實現(xiàn)性語言實現(xiàn)性語言用來書寫計算機程序?Copyright按語言級別分:低級語言和高級語言
低級語言是與特定計算機體系結構密切相關的程序設計語言,如機器語言、匯編語言。其特點是與機器有關,功效高,但使用復雜,開發(fā)費時,難維護。
高級語言是不反映特定計算機體系結構的程序設計語言,它的表示方法比低級語言更接近于待解問題的表示方法。其特點是在一定程度上與具體機器無關,易學、易用、易維護。但高級語言程序經(jīng)編譯后產(chǎn)生的目標程序的功效往往較低。?CopyrightZhijunHe30軟件和軟件工程按語言級別分:低級語言和高級語言?CopyrightZh按用戶要求分:過程式語言和非過程式語言
過程式語言(procedurallanguage)是通過指明一列可執(zhí)行的運算及運算次序來描述計算過程的程序設計語言。如FORTRAN、COBOL、C等。
非過程式語言(nonprocedurallanguage)是不顯式指明處理過程細節(jié)的程序設計語言。在這種語言中盡量引進各種抽象度較高的非過程性描述手段,以期做到在程序中增加“做什么”的描述成分,減少“如何做”的細節(jié)描述。如第四代語言(4GL)、函數(shù)式語言、邏輯式語言。?CopyrightZhijunHe31軟件和軟件工程按用戶要求分:過程式語言和非過程式語言?Copyright也可稱:命令式語言和申述式語言
命令式語言(imperativelanguage)即過程式語言。
申述式語言(declarativelanguage)是著重描述要處理什么,而非描述如何處理的語言。申述式語言程序是關于問題解的約束陳述,這些約束迫使含于實現(xiàn)中的算法處理機制生成一個解或一組解。如函數(shù)式語言、邏輯式語言。?CopyrightZhijunHe32軟件和軟件工程也可稱:命令式語言和申述式語言?CopyrightZhij復旦大學計算機科學與工程系軟件工程課程33/154
函數(shù)式語言(functionalprogramminglanguage)中函數(shù)是構造程序的基本成分,它提供一些設施用于構造更為復雜的函數(shù)。程序人員根據(jù)提出的問題去定義求解函數(shù)(即主程序),其中可能包含一些輔助函數(shù)。如Lisp語言。
邏輯式語言(logicprogramminglanguage)的基本運算單位是謂詞。謂詞定義了變元間的邏輯關系。例如,Prolog語言的基本形式是Horn子句,其程序圍繞著某一主題的事實、規(guī)則和詢問三類語句組成。這三類語句分別用來陳述事實、定義規(guī)則和提出問題。?CopyrightZhijunHe33軟件和軟件工程復旦大學計算機科學與工程系軟件工程課程33/154
按應用范圍分:通用語言和專用語言
通用語言指目標非單一的語言,如FORTRAN、COBOL、C等。
專用語言指目標單一的語言,如自動數(shù)控程序APT。?CopyrightZhijunHe34軟件和軟件工程按應用范圍分:通用語言和專用語言?CopyrightZh
按使用方式分:交互式語言和非交互式語言
交互式語言指具有反映人機交互作用的語言,如BASIC。
非交互式語言指不反映人機交互作用的語言,如FORTRAN、COBOL。?CopyrightZhijunHe35軟件和軟件工程按使用方式分:交互式語言和非交互式語言?Copyright
按成分性質分:順序語言、并發(fā)語言、分布語言
順序語言指只含順序成分的語言,如FORTRAN、C。
并發(fā)語言指含有并發(fā)成分的語言,如Modula、Ada、并發(fā)Pascal。
分布語言指考慮到分布計算要求的語言,如Modula。?CopyrightZhijunHe36軟件和軟件工程按成分性質分:順序語言、并發(fā)語言、分布語言?Copyrig文檔語言
documentationlanguage
文檔語言用來書寫軟件文檔。計算機軟件文檔是計算機開發(fā)、維護和使用過程的檔案資料和對軟件本身的闡述性資料。通常用自然語言或半形式化語言書寫。?CopyrightZhijunHe37軟件和軟件工程文檔語言
documentationlanguage文檔什么是文檔文檔:記錄軟件開發(fā)活動和階段性成果、理解軟件所必需的闡述性資料需求分析文檔軟件設計文擋等編寫文檔目的促進對軟件的開發(fā),管理和維護;便于各種人員(用戶,開發(fā)人員)的交流?CopyrightZhijunHe38軟件和軟件工程什么是文檔文檔:記錄軟件開發(fā)活動和階段性成果、理解軟件所必文檔例子RUP文檔模板?CopyrightZhijunHe39軟件和軟件工程文檔例子RUP文檔模板?CopyrightZhijunH本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe40軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig軟件危機什么是軟件危機軟件危機的表現(xiàn)產(chǎn)生軟件危機的根源解決危機的技術途徑解決危機的管理途徑Crisis!?CopyrightZhijunHe41軟件和軟件工程軟件危機什么是軟件危機Crisis!?CopyrightZ什么是軟件危機軟件在開發(fā)和維護過程中遇到的一系列問題藝術vs.標準化錯誤的發(fā)現(xiàn)軟件需求獲取軟件支持和維護開發(fā)速度vs.市場需求開發(fā)周期過長、開發(fā)成本過高研發(fā)風險軟件Trouble軟件開發(fā)中的復雜的協(xié)作(人員,問題,過程)不同角色的軟件神話(管理者,用戶,開發(fā)者,大眾)?CopyrightZhijunHe42軟件和軟件工程什么是軟件危機軟件在開發(fā)和維護過程中遇到的一系列問題?Cop軟件危機的表現(xiàn)(1of3)成本高IBM360OS,5000多人年,耗時4年(1963-1966),花費2億多美元美國空軍:1955年軟件占總費用(計算機系統(tǒng))的18%,70年60%,85年達到85%美國全球軍事指揮控制系統(tǒng),硬件1億美元,軟件高達7.2億美元計算機軟件和硬件費用比?CopyrightZhijunHe43軟件和軟件工程軟件危機的表現(xiàn)(1of3)成本高?CopyrightZ軟件危機的表現(xiàn)(2of3)軟件質量得不到保證軟件應用面的擴大:科學計算、軍事、航空航天、工業(yè)控制、企業(yè)管理、辦公、家庭軟件越來越多的應用于安全猶關(safetycritical)的系統(tǒng),對軟件質量提出更高的要求80年代歐洲亞麗安娜火箭的發(fā)射失敗,原因是軟件錯誤美國阿托拉斯火箭的發(fā)射失敗,原因是軟件故障英國1986年開發(fā)的辦公室信息系統(tǒng)Folios經(jīng)4年,因性能達不到要求,1989年取消日本第5代機因為軟件問題在投入50億美元后于1993年下馬由于軟件質量問題導致失敗的軟件項目非常多?CopyrightZhijunHe44軟件和軟件工程軟件危機的表現(xiàn)(2of3)軟件質量得不到保證?Copyr軟件危機的表現(xiàn)(3of3)進度難以控制項目延期比比皆是由于進度問題而取消的軟件項目較常見只有一小部分的項目能夠按期完成維護非常困難軟件維護的多樣性軟件維護的復雜性軟件維護的副作用?CopyrightZhijunHe45軟件和軟件工程軟件危機的表現(xiàn)(3of3)進度難以控制?Copyrigh產(chǎn)生軟件危機的根源邏輯產(chǎn)品,不同于物理產(chǎn)品復雜性高邏輯產(chǎn)品,邏輯復雜性,遠高于硬件復雜性軟件的復雜性隨規(guī)模呈指數(shù)級上升規(guī)模大應用擴大,代碼量,1000萬行,仍在不斷膨脹影響軟件生產(chǎn)率和質量的因素比較復雜人員的能力和水平團隊合作缺乏有效、系統(tǒng)原理、原則、方法和工具的指導和輔助?CopyrightZhijunHe46軟件和軟件工程產(chǎn)生軟件危機的根源邏輯產(chǎn)品,不同于物理產(chǎn)品?Copyrigh對軟件開發(fā)的深層次認識開發(fā)一個具有一定規(guī)模和復雜性的軟件系統(tǒng)與編寫一個簡單的程序不一樣正如建設狗窩和高樓大廈大型、復雜軟件系統(tǒng)的開發(fā)是一項工程,必須按照工程化的方法組織軟件的生產(chǎn)和管理,必須經(jīng)過分析、設計、實現(xiàn)、測試、維護等一系列軟件過程和活動?CopyrightZhijunHe47軟件和軟件工程對軟件開發(fā)的深層次認識開發(fā)一個具有一定規(guī)模和復雜性的軟件系統(tǒng)解決危機的技術途徑20世紀60年代爆發(fā),然而實際上軟件危機隨著計算機軟件的產(chǎn)生而產(chǎn)生,只是在此之前其問題的嚴重性沒有引起人們的關注和重視提出有效的方法和工具支持軟件開發(fā)1968年提出軟件工程概念和思想20世紀70年代的結構化軟件開發(fā)方法20世紀80年代的面向對象的軟件開發(fā)方法新的技術:軟件重用、快速原型、需求工程典型技術:COM,Java,C++,J2EE,.Net,….支撐工具和環(huán)境:Eclipse,VisualStudio,WebLogic,Rose,CVS…?CopyrightZhijunHe48軟件和軟件工程解決危機的技術途徑20世紀60年代爆發(fā),然而實際上軟件危機隨技術手段不能完全解決軟件危機到了20世紀90年代,軟件危機依然存在,甚至更為嚴重應用牽引技術的發(fā)展瀑布模型結構化軟件開發(fā)方法OO軟件開發(fā)方法技術推動應用的深化應用的擴大和深入應用變得越來越大和復雜,技術變得更加力不從心錯誤的觀念“只要有好的軟件開發(fā)方法和工具就能高效率地開發(fā)出高質量的軟件”?CopyrightZhijunHe49軟件和軟件工程技術手段不能完全解決軟件危機到了20世紀90年代,軟件危機依解決危機的管理途徑問題出在哪里?20世紀80年代末,美國DoD和工業(yè)界開始認識到管理的重要性美國DoD的一項研究表明,70%的項目由于管理不善導致難以控制進步、成本和質量;進一步的研究發(fā)現(xiàn):管理是影響軟件項目成功開發(fā)的全局性因素,而技術只影響局部如果軟件開發(fā)組織不能對軟件項目進行有效管理,就不能充分發(fā)揮軟件開發(fā)方法和工具的潛力,也就不能高效率地開發(fā)出高質量的軟件產(chǎn)品?CopyrightZhijunHe50軟件和軟件工程解決危機的管理途徑問題出在哪里??CopyrightZhi本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe51軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig軟件工程軟件危機-->根源-->解決途徑:軟件工程產(chǎn)生:1968年NATO計算機科學會議,F(xiàn)ritzBauer在會議上給出的定義:
“軟件工程是為了經(jīng)濟地獲得可靠的和能在實際機器上高效運行的軟件而確立和使用的健全的工程原理(方法)?!?CopyrightZhijunHe52軟件和軟件工程軟件工程軟件危機-->根源-->解決途徑:軟件工程?Copy軟件工程IEEE【IEE93】給出了一個更加綜合的定義:
“(1)將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中。(2)
(1)中所述方法的研究?!避浖こ淌沁\用工程的、數(shù)學的、計算機等科學概念、方法和原理來指導軟件開發(fā)和管理和維護的一門學科?CopyrightZhijunHe53軟件和軟件工程軟件工程IEEE【IEE93】給出了一個更加綜合的定義:?C
軟件工程是一種層次化的技術任何工程方法(包括軟件工程)必須以有組織的質量保證為基礎。全面的質量管理和類似的理念刺激了不斷的過程改進,正是這種改進導致了更加成熟的軟件工程方法的不斷出現(xiàn),以及支持方法的工具的出現(xiàn)。支持軟件工程的根基就在于對質量的關注工具方法過程質量焦點RogerS.Pressman?CopyrightZhijunHe54軟件和軟件工程軟件工程是一種層次化的技術任何工程方法(包括軟件工程)必須
軟件工程的過程層軟件工程過程是將技術層結合在一起的凝聚力,使得計算機軟件能夠被合理地和及時地開發(fā)出來。過程定義了一組關鍵過程區(qū)域的框架,這對于軟件工程技術的有效應用是必須的。關鍵過程區(qū)域構成了軟件項目的管理控制的基礎,并且確立了上下各區(qū)域之間的關系,其中規(guī)定了技術方法的采用、工程產(chǎn)品(模型、文檔、數(shù)據(jù)、報告、表格等)的產(chǎn)生、里程碑的建立、質量的保證及變化的適當管理質量焦點?CopyrightZhijunHe55軟件和軟件工程軟件工程的過程層軟件工程過程是將技術層結合在一起的凝聚力,軟件工程的方法層軟件工程的方法層提供了建造軟件在技術上需要“如何做”。方法涵蓋了一系列的任務:需求分析、設計、編程、測試和維護。軟件工程方法依賴于一組基本原則,這些原則控制了每一個技術區(qū)域,且包含建?;顒雍推渌枋黾夹g。?CopyrightZhijunHe56軟件和軟件工程軟件工程的方法層軟件工程的方法層提供了建造軟件在技術上需要“軟件工程的工具層軟件工程的工具層對過程和方法提供了自動的或半自動的支持。當這些工具被集成起來使得一個工具產(chǎn)生的信息可被另外一個工具使用時,一個支持軟件開發(fā)的系統(tǒng)就建立了,稱為計算機輔助軟件工程(CASE)。CASE集成了軟件、硬件和一個軟件工程數(shù)據(jù)庫(一個倉庫,其中包含了關于分析、設計、編程和測試的重要信息),從而形成了一個軟件工程環(huán)境,它類似于硬件的CAD/CAE(計算機輔助設計/工程)。?CopyrightZhijunHe57軟件和軟件工程軟件工程的工具層軟件工程的工具層對過程和方法提供了自動的或半軟件工程是一門交叉學科軟件工程主要研究內容(從學科角度)1、軟件開發(fā)技術:軟件開發(fā)方法學軟件開發(fā)過程
軟件工具和軟件工程環(huán)境2、軟件工程管理:軟件管理學軟件經(jīng)濟學軟件心理學軟件工程所包含的內容不是一成不變的,隨著人們對軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解。應用發(fā)展的眼光看待它。軟件工程是一門交叉學科軟件工程主要研究內容(從學科角度)軟件工程研究的內容(實踐的角度)(1).軟件開發(fā)過程模型,如:瀑布模型、增量模型、原型模型、螺旋模型、迭代模型等。(2).軟件開發(fā)模型和方法,如:面向過程的方法、面向數(shù)據(jù)的方法、面向對象的方法(包括面向業(yè)務基礎平臺的方法、面向工作流方法、面向主體的方法、面向方面的方法、面向代理的方法等等),以及形式化方法。?CopyrightZhijunHe59軟件和軟件工程軟件工程研究的內容(實踐的角度)(1).軟件開發(fā)過程模型,(3).軟件支持過程(工具),如:CASE工具Rose、北大青鳥系統(tǒng)、PowerDesigner、ERWin,以及配置管理工具等。(4).軟件管理過程,如:ISO9000、CMM/CMMI、軟件企業(yè)文化(微軟企業(yè)文件、敏捷文化現(xiàn)象、IBM企業(yè)文化)。?CopyrightZhijunHe60軟件和軟件工程(3).軟件支持過程(工具),如:CASE工具Rose、北軟件工程研究內容(簡單理解)?CopyrightZhijunHe61軟件和軟件工程軟件工程研究內容(簡單理解)?CopyrightZhiju軟件工程發(fā)展主要歷程?CopyrightZhijunHe62軟件和軟件工程軟件工程發(fā)展主要歷程?CopyrightZhijunHe軟件工程發(fā)展里程碑軟件工程技術呈多線、并行、交叉發(fā)展,每個線路都有各自的里程碑?CopyrightZhijunHe63軟件和軟件工程軟件工程發(fā)展里程碑軟件工程技術呈多線、并行、交叉發(fā)展,?Co實踐參考:rational統(tǒng)一開發(fā)過程軟件開發(fā)隊伍的最佳實踐?CopyrightZhijunHe64軟件和軟件工程實踐參考:rational統(tǒng)一開發(fā)過程軟件開發(fā)隊伍的最佳實踐
統(tǒng)一軟件開發(fā)過程RUPRUP(RationalUnifiedProcess)是Rational公司1998年發(fā)布的通用的軟件開發(fā)過程框架RUP是一種軟件工程過程;統(tǒng)一了各種開發(fā)方法;使用統(tǒng)一建模語言UML
RUP和CMM相輔相成;軟件企業(yè)使用RUP很容易達到CMM3級的要求;RUP可以作為CMM3級所要求的機構標準軟件過程;?CopyrightZhijunHe65軟件和軟件工程統(tǒng)一軟件開發(fā)過程RUPRUP(RationalUn軟件工程執(zhí)行框架可用性性性確正經(jīng)濟選取適宜的過程模型采用合適開發(fā)方法提供高質量的工程支持重視軟件工程的管理基本過程原則
目標過
程支持過程組織過程軟件工程執(zhí)行框架可用性性性確正經(jīng)濟選取適宜的過程模型采用合適軟件工程目標(1/2)正確性滿足用戶的需求(功能、性能等)可靠性具有能夠防止因概念、設計和結構等方面的不完善而造成的系統(tǒng)失效,具有挽回因操作不當造成軟件系統(tǒng)失效的能力可維護性便于對軟件增加新功能、改進性能、修改錯誤、移植可重用性軟件易于被再次使用?CopyrightZhijunHe67軟件和軟件工程軟件工程目標(1/2)正確性?CopyrightZhiju軟件工程目標(2/2)可追蹤性對軟件進行正向和反向追蹤的能力可移植性從一個環(huán)境搬遷到另一個環(huán)境可互操作性多個軟件要素相互通訊協(xié)同完成任務能力有效性充分利用計算機的時間和空間資源?CopyrightZhijunHe68軟件和軟件工程軟件工程目標(2/2)可追蹤性?CopyrightZhij軟件工程原則選取適宜的過程模型采用合適的分析設計方法提供高質量的工程支持--人力、軟、硬件基礎設施重視軟件過程管理?CopyrightZhijunHe69軟件和軟件工程軟件工程原則選取適宜的過程模型?CopyrightZhij本講小結軟件是程序以及相關文檔的集合軟件危機的表現(xiàn),根源之一在于缺乏系統(tǒng)的方法和工具的指導軟件工程:方法,工具和過程軟件工程的目標和原則?CopyrightZhijunHe70軟件和軟件工程本講小結軟件是程序以及相關文檔的集合?CopyrightZQ&AAnIntroductiontoSoftwareEngineeringPractice,Practice,andPractice?CopyrightZhijunHe71軟件和軟件工程Q&AAnIntroductiontoSoftwa第1講軟件和軟件工程賀志軍
北師大珠海分校信息技術學院勵耘樓small308軟件工程之用工程化的方法來開發(fā)軟件?CopyrightZhijunHe72軟件和軟件工程第1講軟件和軟件工程賀志軍軟件工程之用工程化的方法來本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe73軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig計算機軟件什么是計算機軟件計算機軟件的特點?CopyrightZhijunHe74軟件和軟件工程計算機軟件什么是計算機軟件?CopyrightZhijun可執(zhí)行部分不可執(zhí)行部分文檔1文檔2文檔3什么是計算機軟件?計算機系統(tǒng)中的程序及其文檔的集合,文檔是為了便于了解程序所需的闡明性資料,文檔一般是給人看的,不一定裝入計算機程序?CopyrightZhijunHe75軟件和軟件工程可執(zhí)行部分不可執(zhí)行部分文檔1文檔2文檔3什么是計算機軟件?計什么是程序(1/2)程序:由程序設計語言所描述的、能為計算機所識別、理解和處理的語句序列程序例子Main(){inti,j;//變量定義charStr[10];i=i+j;//語句說明……}?CopyrightZhijunHe76軟件和軟件工程什么是程序(1/2)程序:由程序設計語言所描述的、能為計算什么是程序(2/2)程序設計語言具有良好、嚴格語法和語義目前程序設計語言主要有以下幾種類型面向機器:如匯編語言、機器語言等面向過程:如Fortran,Pascal,C等等面向對象:如Java等等面向問題:如結構化查詢語言SQL等等?CopyrightZhijunHe77軟件和軟件工程什么是程序(2/2)程序設計語言具有良好、嚴格語法和語義?CEvolutionofsoftware早期
第二階段
第三階段第四階段面向批處理
多用戶
分布式系統(tǒng)
強大的桌面系統(tǒng)有限的分布
實時
嵌入“智能”面向對象技術自定義軟件
數(shù)據(jù)庫
低成本硬件
專家系統(tǒng)
軟件產(chǎn)品
消費者的影響
人工神經(jīng)網(wǎng)絡
并行計算
網(wǎng)絡計算機195019601970198019902000Evolutionofsoftware早期軟件的發(fā)展
1946-1956年從計算機問世到實用的高級程序語言出現(xiàn)前存儲容量比較小,運算速度比較慢采用個體工作方式,用低級語言編寫程序應用領域主要是以數(shù)值數(shù)據(jù)處理為主的科學計算,其特點是輸入、輸出量較小衡量程序質量的標準主要是功效,即運行時間省、占用內存小主要研究內容是科學計算程序、服務性程序和程序庫,研究對象是順序程序?CopyrightZhijunHe79軟件和軟件工程軟件的發(fā)展1946-1956年?CopyrightZhi1956-1968年
從實用的高級程序語言出現(xiàn)到軟件工程出現(xiàn)前存儲器容量大,外圍設備得到迅速發(fā)展,出現(xiàn)了高級程序設計語言應用領域包括數(shù)據(jù)處理(非數(shù)值數(shù)據(jù)),其特點是計算量不大,但輸入、輸出量卻較大高速主機與低速外圍設備的矛盾突出,出現(xiàn)了操作系統(tǒng)、并發(fā)程序、數(shù)據(jù)庫及其管理系統(tǒng)20世紀60年代初提出了軟件一詞,開始認識到文檔的重要性研究高級程序設計語言、編譯程序、操作系統(tǒng)、支持編程的工具及各種應用軟件工作方式逐步從個體方式轉向合作方式出現(xiàn)軟件危機?CopyrightZhijunHe80軟件和軟件工程1956-1968年?CopyrightZhijunHe1968年-至今從軟件工程出現(xiàn)到現(xiàn)在硬件向巨型機和微型機二個方向發(fā)展,出現(xiàn)了計算機網(wǎng)絡,軟件方面提出了軟件工程,出現(xiàn)了“計算機輔助軟件工程”(CASE)計算機的應用領域滲透到各個業(yè)務領域,出現(xiàn)了嵌入式應用,其特點是受制于它所嵌入的宿主系統(tǒng)開發(fā)方式逐步由個體合作方式轉向工程方式軟件工程方面的研究主要包括軟件開發(fā)模型、軟件開發(fā)方法及技術、軟件工具與環(huán)境、軟件過程、軟件自動化系統(tǒng)等軟件方面研究以智能化、自動化、集成化、并行化、以及自然化為標志的軟件開發(fā)新技術?CopyrightZhijunHe81軟件和軟件工程1968年-至今?CopyrightZhijunHe10程序模型演化追求更具表達能力、更符合人類思維模式、易構造、易演化的計算模型軟件基本模型=實體元素+連接和交互?CopyrightZhijunHe82軟件和軟件工程程序模型演化追求更具表達能力、更符合人類思維模式、易構造、易程序開發(fā)技術演化盡可能提高軟件開發(fā)的效率和質量凝練共性并復用?CopyrightZhijunHe83軟件和軟件工程程序開發(fā)技術演化盡可能提高軟件開發(fā)的效率和質量?Copyri軟件特點開發(fā)而成非制造產(chǎn)生的,邏輯產(chǎn)品(智力,無形)非物理產(chǎn)品維護困難和復雜(完善,糾錯,…...)不會老化磨損,只會失效,維護引起的副作用?CopyrightZhijunHe84軟件和軟件工程軟件特點開發(fā)而成非制造產(chǎn)生的,?CopyrightZhij軟件失效曲線?CopyrightZhijunHe85軟件和軟件工程軟件失效曲線?CopyrightZhijunHe14軟件軟件特點生產(chǎn)只需復制軟件開發(fā)性質如成本、進度等難以估計軟件的開發(fā)更加依賴于開發(fā)人員的業(yè)務素質、智力、人員的合作、組織和管理軟件的開發(fā)和運行常受到計算機硬件的限制,對計算機硬件有著不同程度的依賴性軟件的開發(fā)至今尚未完全實現(xiàn)自動化軟件成本相當昂貴相當多的軟件工作涉及到社會因素?CopyrightZhijunHe86軟件和軟件工程軟件特點生產(chǎn)只需復制?CopyrightZhijunHe軟件的分類按工作范圍和使用特點分:系統(tǒng)軟件:系統(tǒng)軟件是一組為其他程序服務的程序。一些系統(tǒng)軟件(如編譯器、編輯器和文件管理程序)處理復雜的但也是確定的信息結構。其他的系統(tǒng)應用(如操作系統(tǒng)、驅動程序和通訊進程等)則處理大量的非確定的數(shù)據(jù)。不管哪種情況,系統(tǒng)軟件均具有以下特點:與計算機硬件頻繁交互;多用戶支持;需要精細調度、資源共享及靈活的進程管理的并發(fā)操作;復雜的數(shù)據(jù)結構;及多外部接口。?CopyrightZhijunHe87軟件和軟件工程軟件的分類按工作范圍和使用特點分:?CopyrightZh軟件的分類商業(yè)軟件:商業(yè)信息處理是最大的軟件應用領域。具體的“系統(tǒng)”(如工資表、帳目支付和接收、存貨清單等)均可歸為管理信息系統(tǒng)(MIS)軟件,它們可以訪問一個或多個包含商業(yè)信息的大型數(shù)據(jù)庫。該領域的應用將已有的數(shù)據(jù)重新構造,變換成一種能夠輔助商業(yè)操作和管理決策的形式。除了傳統(tǒng)的數(shù)據(jù)處理應用之外,商業(yè)軟件應用還包括交互式的和客戶機/服務器式的計算(如POS事務處理)。?CopyrightZhijunHe88軟件和軟件工程軟件的分類商業(yè)軟件:商業(yè)信息處理是最大的軟件應用領域。具體的軟件的分類實時軟件:管理、分析、控制現(xiàn)實世界中發(fā)生的事件的程序稱為實時軟件。實時軟件的組成包括:一個數(shù)據(jù)收集部件,負責從外部環(huán)境獲取和格式化信息;一個分析部件,負責將信息轉換成應用時所需要的形式;一個控制/輸出部件,負責響應外部環(huán)境;及一個管理部件,負責協(xié)調其他各部件,使得系統(tǒng)能夠保持一個可接受的實時響應時間(一般從1毫秒到1分鐘),應該注意到術語“實時”不同于“交互”或“分時”。一個實時系統(tǒng)必須在嚴格的時間范圍內響應。而一個交互系統(tǒng)(或分時系統(tǒng))的響應時間可以延遲,且不會帶來災難性的后果。?CopyrightZhijunHe89軟件和軟件工程軟件的分類實時軟件:管理、分析、控制現(xiàn)實世界中發(fā)生的事件的程軟件的分類工程和科學計算軟件:工程和科學計算軟件的特征是“數(shù)值分析”算法。此類應用含蓋面很廣,從天文學到火山學;從汽車壓力分析到航天飛機的軌道動力學;從分子生物學到自動化制造。不過,目前工程和科學計算軟件已不僅限于傳統(tǒng)的數(shù)值算法。計算機輔助設計、系統(tǒng)仿真和其他交互應用已經(jīng)開始具有實時軟件和系統(tǒng)軟件的特征。?CopyrightZhijunHe90軟件和軟件工程軟件的分類工程和科學計算軟件:工程和科學計算軟件的特征是“數(shù)軟件的分類嵌入式軟件:智能產(chǎn)品在幾乎每一個消費或工業(yè)市場上都是必不可少的,嵌入式軟件駐留在只讀內存中,用于控制這些智能產(chǎn)品。嵌入式軟件能夠執(zhí)行很有限但專職的功能(如微波爐的按鈕控制),或是提供比較強大的功能及控制能力(如汽車中的數(shù)字控制,包括燃料控制、儀表板顯示,剎車系統(tǒng)等)?CopyrightZhijunHe91軟件和軟件工程軟件的分類嵌入式軟件:智能產(chǎn)品在幾乎每一個消費或工業(yè)市場上都軟件的分類個人計算機軟件::個人計算機軟件市場是在過去十年中萌芽和發(fā)展起來的。字處理、電子表格、計算機圖形、多媒體、娛樂、數(shù)據(jù)庫管理、個人及商業(yè)金融應用、外部網(wǎng)絡或數(shù)據(jù)庫訪問,這些僅僅是成百上千這類應用中的幾種?CopyrightZhijunHe92軟件和軟件工程軟件的分類個人計算機軟件::個人計算機軟件市場是在過去十年中軟件的分類人工智能軟件:人工智能(AI)軟件利用非數(shù)值算法去解決復雜的問題,這些問題不能通過計算或直接分析得到答案。一個活躍的AI領域是專家系統(tǒng),也稱為基于知識的系統(tǒng)。AI軟件的其他應用領域還包括模式識別(圖象或聲音)、定理證明和游戲。最近,AI軟件的一個新分支,稱為人工神經(jīng)網(wǎng)絡,得到了很大進展。神經(jīng)網(wǎng)絡仿真人腦的處理結構(生物神經(jīng)系統(tǒng)的功能),這有可能導致一個全新類型的軟件登場,它不僅能夠識別復雜的模式,而且還能從過去的經(jīng)驗中自行學習進步。?CopyrightZhijunHe93軟件和軟件工程軟件的分類人工智能軟件:人工智能(AI)軟件利用非數(shù)值算法去
按軟件工作方式劃分:實時處理軟件分時軟件交互式軟件批處理軟件按軟件服務對象的范圍劃分:項目軟件產(chǎn)品軟件
?CopyrightZhijunHe94軟件和軟件工程按軟件工作方式劃分:?CopyrightZhijun
按使用的頻度進行劃分:
一次使用頻繁使用按軟件失效的影響進行劃分:
高可靠性軟件一般可靠性軟件?CopyrightZhijunHe95軟件和軟件工程按使用的頻度進行劃分:?CopyrightZhijun軟件語言
softwarelanguage
軟件語言是用于書寫計算機軟件的語言。它主要包括:
需求定義語言功能性語言設計性語言實現(xiàn)性語言(即程序設計語言)文檔語言?CopyrightZhijunHe96軟件和軟件工程軟件語言
softwarelanguage軟件語言是需求定義語言
requirementsdefinitionlanguage需求定義語言用來書寫軟件需求定義。軟件需求定義是軟件功能需求和非功能需求的定義性描述。軟件功能需求刻畫軟件“做什么”,軟件非功能需求刻畫諸如功能性限制、設計限制、環(huán)境描述、數(shù)據(jù)與通信規(guī)程及項目管理等典型的需求定義語言有PSL語言(ProblemStatementLanguage問題陳述語言)?CopyrightZhijunHe97軟件和軟件工程需求定義語言
requirementsdefinition功能性語言
functionallanguage功能性語言用來書寫軟件功能規(guī)約(functionalspecification)軟件功能規(guī)約是軟件功能的嚴格而完整的陳述。通常它只刻畫軟件系統(tǒng)“做什么”的外部功能,而不涉及系統(tǒng)“如何做”的內部算法。典型的功能性語言有廣譜語言、Z語言。?CopyrightZhijunHe98軟件和軟件工程功能性語言
functionallanguage功能性語言設計性語言
designlanguage設計性語言用來書寫軟件設計規(guī)約(designspecification)軟件設計規(guī)約是軟件設計的嚴格而完整的陳述。一方面,它是軟件功能規(guī)約的算法性細化,刻畫軟件“如何做”的內部算法,另一方面,它是軟件實現(xiàn)的依據(jù)。典型的設計性語言有PDL語言(ProgramDesignLanguage)?CopyrightZhijunHe99軟件和軟件工程設計性語言
designlanguage設計性語言用來書寫實現(xiàn)性語言
實現(xiàn)性語言用來書寫計算機程序實現(xiàn)性語言也稱編程語言或程序設計語言(programminglanguage)程序設計語言可按語言的級別、對使用者的要求、應用范圍、使用方式、成分性質等多種角度進行分類
?CopyrightZhijunHe100軟件和軟件工程實現(xiàn)性語言實現(xiàn)性語言用來書寫計算機程序?Copyright按語言級別分:低級語言和高級語言
低級語言是與特定計算機體系結構密切相關的程序設計語言,如機器語言、匯編語言。其特點是與機器有關,功效高,但使用復雜,開發(fā)費時,難維護。
高級語言是不反映特定計算機體系結構的程序設計語言,它的表示方法比低級語言更接近于待解問題的表示方法。其特點是在一定程度上與具體機器無關,易學、易用、易維護。但高級語言程序經(jīng)編譯后產(chǎn)生的目標程序的功效往往較低。?CopyrightZhijunHe101軟件和軟件工程按語言級別分:低級語言和高級語言?CopyrightZh按用戶要求分:過程式語言和非過程式語言
過程式語言(procedurallanguage)是通過指明一列可執(zhí)行的運算及運算次序來描述計算過程的程序設計語言。如FORTRAN、COBOL、C等。
非過程式語言(nonprocedurallanguage)是不顯式指明處理過程細節(jié)的程序設計語言。在這種語言中盡量引進各種抽象度較高的非過程性描述手段,以期做到在程序中增加“做什么”的描述成分,減少“如何做”的細節(jié)描述。如第四代語言(4GL)、函數(shù)式語言、邏輯式語言。?CopyrightZhijunHe102軟件和軟件工程按用戶要求分:過程式語言和非過程式語言?Copyright也可稱:命令式語言和申述式語言
命令式語言(imperativelanguage)即過程式語言。
申述式語言(declarativelanguage)是著重描述要處理什么,而非描述如何處理的語言。申述式語言程序是關于問題解的約束陳述,這些約束迫使含于實現(xiàn)中的算法處理機制生成一個解或一組解。如函數(shù)式語言、邏輯式語言。?CopyrightZhijunHe103軟件和軟件工程也可稱:命令式語言和申述式語言?CopyrightZhij復旦大學計算機科學與工程系軟件工程課程104/154
函數(shù)式語言(functionalprogramminglanguage)中函數(shù)是構造程序的基本成分,它提供一些設施用于構造更為復雜的函數(shù)。程序人員根據(jù)提出的問題去定義求解函數(shù)(即主程序),其中可能包含一些輔助函數(shù)。如Lisp語言。
邏輯式語言(logicprogramminglanguage)的基本運算單位是謂詞。謂詞定義了變元間的邏輯關系。例如,Prolog語言的基本形式是Horn子句,其程序圍繞著某一主題的事實、規(guī)則和詢問三類語句組成。這三類語句分別用來陳述事實、定義規(guī)則和提出問題。?CopyrightZhijunHe104軟件和軟件工程復旦大學計算機科學與工程系軟件工程課程33/154
按應用范圍分:通用語言和專用語言
通用語言指目標非單一的語言,如FORTRAN、COBOL、C等。
專用語言指目標單一的語言,如自動數(shù)控程序APT。?CopyrightZhijunHe105軟件和軟件工程按應用范圍分:通用語言和專用語言?CopyrightZh
按使用方式分:交互式語言和非交互式語言
交互式語言指具有反映人機交互作用的語言,如BASIC。
非交互式語言指不反映人機交互作用的語言,如FORTRAN、COBOL。?CopyrightZhijunHe106軟件和軟件工程按使用方式分:交互式語言和非交互式語言?Copyright
按成分性質分:順序語言、并發(fā)語言、分布語言
順序語言指只含順序成分的語言,如FORTRAN、C。
并發(fā)語言指含有并發(fā)成分的語言,如Modula、Ada、并發(fā)Pascal。
分布語言指考慮到分布計算要求的語言,如Modula。?CopyrightZhijunHe107軟件和軟件工程按成分性質分:順序語言、并發(fā)語言、分布語言?Copyrig文檔語言
documentationlanguage
文檔語言用來書寫軟件文檔。計算機軟件文檔是計算機開發(fā)、維護和使用過程的檔案資料和對軟件本身的闡述性資料。通常用自然語言或半形式化語言書寫。?CopyrightZhijunHe108軟件和軟件工程文檔語言
documentationlanguage文檔什么是文檔文檔:記錄軟件開發(fā)活動和階段性成果、理解軟件所必需的闡述性資料需求分析文檔軟件設計文擋等編寫文檔目的促進對軟件的開發(fā),管理和維護;便于各種人員(用戶,開發(fā)人員)的交流?CopyrightZhijunHe109軟件和軟件工程什么是文檔文檔:記錄軟件開發(fā)活動和階段性成果、理解軟件所必文檔例子RUP文檔模板?CopyrightZhijunHe110軟件和軟件工程文檔例子RUP文檔模板?CopyrightZhijunH本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe111軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig軟件危機什么是軟件危機軟件危機的表現(xiàn)產(chǎn)生軟件危機的根源解決危機的技術途徑解決危機的管理途徑Crisis!?CopyrightZhijunHe112軟件和軟件工程軟件危機什么是軟件危機Crisis!?CopyrightZ什么是軟件危機軟件在開發(fā)和維護過程中遇到的一系列問題藝術vs.標準化錯誤的發(fā)現(xiàn)軟件需求獲取軟件支持和維護開發(fā)速度vs.市場需求開發(fā)周期過長、開發(fā)成本過高研發(fā)風險軟件Trouble軟件開發(fā)中的復雜的協(xié)作(人員,問題,過程)不同角色的軟件神話(管理者,用戶,開發(fā)者,大眾)?CopyrightZhijunHe113軟件和軟件工程什么是軟件危機軟件在開發(fā)和維護過程中遇到的一系列問題?Cop軟件危機的表現(xiàn)(1of3)成本高IBM360OS,5000多人年,耗時4年(1963-1966),花費2億多美元美國空軍:1955年軟件占總費用(計算機系統(tǒng))的18%,70年60%,85年達到85%美國全球軍事指揮控制系統(tǒng),硬件1億美元,軟件高達7.2億美元計算機軟件和硬件費用比?CopyrightZhijunHe114軟件和軟件工程軟件危機的表現(xiàn)(1of3)成本高?CopyrightZ軟件危機的表現(xiàn)(2of3)軟件質量得不到保證軟件應用面的擴大:科學計算、軍事、航空航天、工業(yè)控制、企業(yè)管理、辦公、家庭軟件越來越多的應用于安全猶關(safetycritical)的系統(tǒng),對軟件質量提出更高的要求80年代歐洲亞麗安娜火箭的發(fā)射失敗,原因是軟件錯誤美國阿托拉斯火箭的發(fā)射失敗,原因是軟件故障英國1986年開發(fā)的辦公室信息系統(tǒng)Folios經(jīng)4年,因性能達不到要求,1989年取消日本第5代機因為軟件問題在投入50億美元后于1993年下馬由于軟件質量問題導致失敗的軟件項目非常多?CopyrightZhijunHe115軟件和軟件工程軟件危機的表現(xiàn)(2of3)軟件質量得不到保證?Copyr軟件危機的表現(xiàn)(3of3)進度難以控制項目延期比比皆是由于進度問題而取消的軟件項目較常見只有一小部分的項目能夠按期完成維護非常困難軟件維護的多樣性軟件維護的復雜性軟件維護的副作用?CopyrightZhijunHe116軟件和軟件工程軟件危機的表現(xiàn)(3of3)進度難以控制?Copyrigh產(chǎn)生軟件危機的根源邏輯產(chǎn)品,不同于物理產(chǎn)品復雜性高邏輯產(chǎn)品,邏輯復雜性,遠高于硬件復雜性軟件的復雜性隨規(guī)模呈指數(shù)級上升規(guī)模大應用擴大,代碼量,1000萬行,仍在不斷膨脹影響軟件生產(chǎn)率和質量的因素比較復雜人員的能力和水平團隊合作缺乏有效、系統(tǒng)原理、原則、方法和工具的指導和輔助?CopyrightZhijunHe117軟件和軟件工程產(chǎn)生軟件危機的根源邏輯產(chǎn)品,不同于物理產(chǎn)品?Copyrigh對軟件開發(fā)的深層次認識開發(fā)一個具有一定規(guī)模和復雜性的軟件系統(tǒng)與編寫一個簡單的程序不一樣正如建設狗窩和高樓大廈大型、復雜軟件系統(tǒng)的開發(fā)是一項工程,必須按照工程化的方法組織軟件的生產(chǎn)和管理,必須經(jīng)過分析、設計、實現(xiàn)、測試、維護等一系列軟件過程和活動?CopyrightZhijunHe118軟件和軟件工程對軟件開發(fā)的深層次認識開發(fā)一個具有一定規(guī)模和復雜性的軟件系統(tǒng)解決危機的技術途徑20世紀60年代爆發(fā),然而實際上軟件危機隨著計算機軟件的產(chǎn)生而產(chǎn)生,只是在此之前其問題的嚴重性沒有引起人們的關注和重視提出有效的方法和工具支持軟件開發(fā)1968年提出軟件工程概念和思想20世紀70年代的結構化軟件開發(fā)方法20世紀80年代的面向對象的軟件開發(fā)方法新的技術:軟件重用、快速原型、需求工程典型技術:COM,Java,C++,J2EE,.Net,….支撐工具和環(huán)境:Eclipse,VisualStudio,WebLogic,Rose,CVS…?CopyrightZhijunHe119軟件和軟件工程解決危機的技術途徑20世紀60年代爆發(fā),然而實際上軟件危機隨技術手段不能完全解決軟件危機到了20世紀90年代,軟件危機依然存在,甚至更為嚴重應用牽引技術的發(fā)展瀑布模型結構化軟件開發(fā)方法OO軟件開發(fā)方法技術推動應用的深化應用的擴大和深入應用變得越來越大和復雜,技術變得更加力不從心錯誤的觀念“只要有好的軟件開發(fā)方法和工具就能高效率地開發(fā)出高質量的軟件”?CopyrightZhijunHe120軟件和軟件工程技術手段不能完全解決軟件危機到了20世紀90年代,軟件危機依解決危機的管理途徑問題出在哪里?20世紀80年代末,美國DoD和工業(yè)界開始認識到管理的重要性美國DoD的一項研究表明,70%的項目由于管理不善導致難以控制進步、成本和質量;進一步的研究發(fā)現(xiàn):管理是影響軟件項目成功開發(fā)的全局性因素,而技術只影響局部如果軟件開發(fā)組織不能對軟件項目進行有效管理,就不能充分發(fā)揮軟件開發(fā)方法和工具的潛力,也就不能高效率地開發(fā)出高質量的軟件產(chǎn)品?CopyrightZhijunHe121軟件和軟件工程解決危機的管理途徑問題出在哪里??CopyrightZhi本講內容計算機軟件(概念、特點、分類、語言)軟件危機(表現(xiàn)和根源)軟件工程(概念、研究內容、發(fā)展歷程、實踐框架)?CopyrightZhijunHe122軟件和軟件工程本講內容計算機軟件(概念、特點、分類、語言)?Copyrig軟件工程軟件危機-->根源-->解決途徑:軟件工程產(chǎn)生:1968年NATO計算機科學會議,F(xiàn)ritzBauer在會議上給出的定義:
“軟件工程是為了經(jīng)濟地獲得可靠的和能在實際機器上高效運行的軟件而確立和使用的健全的工程原理(方法)?!?CopyrightZhijunHe123軟件和軟件工程軟件工程軟件危機-->根源-->解決途徑:軟件工程?Copy軟件工程IEEE【IEE93】給出了一個更加綜合的定義:
“(1)將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中。(2)
(1)中所述方法的研究?!避浖こ淌沁\用工程的、數(shù)學的、計算機等科學概念、方法和原理來指導軟件開發(fā)和管理和維護的一門學科?CopyrightZhijunHe124軟件和軟件工程軟件工程IEEE【IEE93】給出了一個更加綜合的定義:?C
軟件工程是一種層次化的技術任何工程方法(包括軟件工程)必須以有組織的質量保證為基礎。全面的質量管理和類似的理念刺激了不斷的過程改進,正是這種改進導致了更加成熟的軟件工程方法的不斷出現(xiàn),以及支持方法的工具的出現(xiàn)。支持軟件工程的根基就在于對質量的關注工具方法過程質量焦點RogerS.Pressman?CopyrightZhijunHe125軟件和軟件工程軟件工程是一種層次化的技術任何工程方法(包括軟件工程)必須
軟件工程的過程層軟件工程過程是將技術層結合在一起的凝聚力,使得計算機軟件能夠被合理地和及時地開發(fā)出來。過程定義了一組關鍵過程區(qū)域的框架,這對于軟件工程技術的有效應用是必須
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年石英玻璃材料及制品合作協(xié)議書
- 2025年多媒體集成合作協(xié)議書
- 《基礎會計》繼續(xù)教育考試題及答案
- 2025年代保管檔案協(xié)議參考模板(三篇)
- 2025年二年級期末工作總結模版(二篇)
- 2025年中間人傭金協(xié)議(2篇)
- 2025年產(chǎn)品租賃協(xié)議標準樣本(2篇)
- 2025年二手車市場汽車買賣協(xié)議(三篇)
- 2025年中外來件裝配合同標準樣本(2篇)
- 2025年五年級下學期語文教學工作總結(2篇)
- 金屬表面處理中的冷噴涂技術
- 河北省石家莊市2023-2024學年高一上學期期末教學質量檢測化學試題(解析版)
- 黑龍江省齊齊哈爾市2023-2024學年高一上學期1月期末英語試題(含答案解析)
- 綜合素質能力提升培訓
- 測井監(jiān)督管理手冊
- 冷庫庫房招商方案
- 麥當勞市場調研
- 視頻監(jiān)控維保項目投標方案(技術標)
- 2024標準版安全生產(chǎn)責任制培訓記錄
- 中英旅游文本用詞的共同特點及其翻譯
- 城市區(qū)域環(huán)境噪聲監(jiān)測實驗報告
評論
0/150
提交評論