第1章-軟件工程概述課件_第1頁
第1章-軟件工程概述課件_第2頁
第1章-軟件工程概述課件_第3頁
第1章-軟件工程概述課件_第4頁
第1章-軟件工程概述課件_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章軟件工程概述

【本章重點】軟件的概念和特點、軟件工程的框架及基本原則【本章用途】本章論述的有關軟件工程的基本概念、原理及相關知識能幫助讀者對軟件工程的原理和方法有一個概括的、本質的認識。2023/9/171第1章軟件工程概述【本章重點】軟件的概念和特點、軟件工程1.1軟件的概念、特點與分類許多人把軟件這個術語等同于計算機程序,其實這種理解是很狹隘的。軟件是程序和所有使程序正確運行所需要的相關文檔和配置信息。一個軟件系統(tǒng)通常包含大量獨立的程序、用于設置這些程序的配置文件、描述系統(tǒng)結構的系統(tǒng)文檔和如何使用該系統(tǒng)的用戶文檔,以及告知用戶下載最新產品信息的Web站點。2023/9/1721.1軟件的概念、特點與分類許多人把軟件這個術語等同于計算軟件具有如下特點:軟件是一種邏輯實體,不是具體的物理實體。軟件產品的生產主要是研制。軟件具有“復雜性”,其開發(fā)和運行常受到計算機系統(tǒng)的限制。軟件成本昂貴,其開發(fā)方式目前尚未完全擺脫手工生產方式。軟件不存在磨損和老化問題,但存在退化問題。2023/9/173軟件具有如下特點:2023/8/63圖1.1給出了硬件的失效率曲線,它是一個U型曲線(即浴盆曲線),說明硬件隨著使用時間的增加失效率急劇上升。圖1.2所描述的軟件失效率曲線,它沒有U型曲線的右半翼,表明軟件隨著使用時間的增加失效率降低,因為軟件不存在磨損和老化問題,然而存在退化問題。圖1.1圖1.22023/9/174圖1.1給出了硬件的失效率曲線,它是一個U型曲線(即浴盆曲線軟件產品有以下兩類:(1)通用軟件產品這類軟件產品由軟件開發(fā)機構制作,在市場上公開銷售,可以獨立使用。這類軟件產品有:數據庫軟件、字處理軟件、繪圖軟件以及工程管理工具等。(2)定制軟件產品這類軟件產品受特定的客戶委托,由軟件承包商專門為這類客戶開發(fā)。這類軟件有:電子設備的控制系統(tǒng)、特定的業(yè)務處理系統(tǒng)和空中交通管制系統(tǒng)等。

這兩類產品的一個重要區(qū)別在于:在通用軟件中,軟件描述由開發(fā)者自己完成,而定制軟件產品的軟件描述通常是由客戶給出,開發(fā)者必須按客戶要求進行開發(fā)。2023/9/175軟件產品有以下兩類:2023/8/65軟件工程是一類工程。工程是將理論和知識應用于實踐的科學。就軟件工程而言,它借鑒了傳統(tǒng)工程的原則和方法,以求高效地開發(fā)高質量軟件。其中應用了計算機科學、數學和管理科學。計算機科學和數學用于構造模型與算法,工程科學用于制定規(guī)范、設計范型、評估成本及確定權衡,管理科學用于計劃資源、對質量和成本進行管理。早期軟件開發(fā)的經驗是:非正規(guī)的軟件開發(fā)并不奏效。多數軟件項目有時甚至要推遲幾年才能完成,而且比預計的費用高,不可靠,難以維護,總之,做得很差。軟件開發(fā)陷入危機,結果是硬件成本在下降而軟件成本卻呈快速增長之勢,因而必須要有新的技術和方法來控制大型軟件系統(tǒng)固有的復雜性。1.2軟件工程概述

2023/9/176軟件工程是一類工程。工程是將理論和知識應用于實踐的科學。就軟70年代初,自“軟件工程”這一概念提出以來,主要圍繞軟件過程以及軟件復用,開展了有關軟件生產技術和軟件生產管理的研究與實踐。其主要成果有:提出了應用廣泛的面向對象語言以及相關的面向對象方法,大力開展了計算機輔助軟件工程的研究與實踐。尤其是近幾年來,針對軟件復用及軟件生產,軟件構件技術以及軟件質量控制技術、質量保證技術得到了廣泛的應用。目前各個軟件企業(yè)都十分重視資質認證,并想通過這些工作進行企業(yè)管理和技術的提升。2023/9/17770年代初,自“軟件工程”這一概念提出以來,主要圍繞軟件過程IEEE【IEE93】給出了軟件工程的定義:“把系統(tǒng)的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護過程,即將工程應用于軟件;并研究以上實現(xiàn)的途徑”2023/9/178IEEE【IEE93】給出了軟件工程的定義:2023/8/6軟件工程(SoftwareEngineering)的框架可概括為:目標、過程和原則。(1)軟件工程目標是生產具有正確性、可用性以及開銷合宜的產品。正確性指軟件產品達到預期功能的程度??捎眯灾杠浖窘Y構、實現(xiàn)及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。2023/9/1792023/8/69(2)軟件工程過程是生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動。2023/9/1710(2)軟件工程過程是生產一個最終能滿足需求且達到工程目(3)軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。

四項基本原則:選取適宜的開發(fā)范型。采用合適的設計方法。提供高質量的工程支持。重視開發(fā)過程的管理。2023/9/1711(3)軟件工程的原則是指圍繞工程設計、工程支持以及工程1.3關于軟件工程的問題

1.3.1軟件工程不同于計算機科學從本質上講,計算機科學研究的是構成計算機和軟件系統(tǒng)基礎的有關理論和方法,而軟件工程則研究軟件制作中的實際問題。正如電子工程師必須具有一定的物理學知識一樣,軟件工程人員同樣必須具有一定的計算機科學知識。理論上,所有軟件工程都應該以計算機科學理論作為堅實的基礎,但實際情況并非如此。軟件工程人員常常必須要用特定的方法去開發(fā)軟件。對于實際、復雜的問題,計算機科學的經典理論不可能總是適用的,這時就需要應用軟件工程的方法來解決。2023/9/17121.3關于軟件工程的問題1.3.1軟件工程不同于計算機科1.3.2軟件工程不同于系統(tǒng)工程系統(tǒng)工程應該是基于計算機的系統(tǒng)工程,研究由軟件起主導作用的、有關復雜系統(tǒng)的開發(fā)和進化的方方面面,包括硬件開發(fā)、系統(tǒng)決策、過程設計、系統(tǒng)實施和軟件工程等。系統(tǒng)工程人員要做的是描述這個系統(tǒng),定義總的體系結構,然后集成各個組件以完成整個系統(tǒng)。他們較少關注系統(tǒng)各組件(硬件、軟件等)的工程問題。系統(tǒng)工程的產生比軟件工程要早。隨著軟件在系統(tǒng)中的比重不斷增大,軟件工程技術正被應用于系統(tǒng)工程過程之中。2023/9/17131.3.2軟件工程不同于系統(tǒng)工程系統(tǒng)工程應該是基于計算機1.3.3軟件工程不同于傳統(tǒng)工程軟件工程是更廣泛的系統(tǒng)工程的一部分。軟件是非物質的,經典的數學模型只適用于一部分而不是全部的軟件。軟件工程不必一味地模仿傳統(tǒng)工程,它們是完全不同的。軟件設計者必須做好準備去開發(fā)能適應環(huán)境變化的軟件。這是軟件應該具備的性質。也是軟件工程不同于傳統(tǒng)工程的地方。

2023/9/17141.3.3軟件工程不同于傳統(tǒng)工程軟件工程是更廣泛的系統(tǒng)工1.3.4軟件工程不同于信息系統(tǒng)工程信息系統(tǒng)是應用軟件的一個分支。因為它的應用面極其廣泛,市場前景巨大,如管理信息系統(tǒng)(MIS)、企業(yè)資源計劃系統(tǒng)(ERP)、辦公自動化系統(tǒng)(OA)、金稅(稅務)系統(tǒng)、金關(海關)系統(tǒng)、金衛(wèi)(醫(yī)療衛(wèi)生)系統(tǒng)、保險系統(tǒng)、金融系統(tǒng)、證券系統(tǒng)、港口系統(tǒng)、民航系統(tǒng)、物流系統(tǒng)、公安系統(tǒng)、人口普查系統(tǒng)、電信計費系統(tǒng)、數字化城市系統(tǒng)等。信息系統(tǒng)工程是專門研究信息系統(tǒng)建設的工程,它是軟件工程的一個分支,或者說它是軟件工程的一部分。信息系統(tǒng)建設除了需要遵守軟件工程的普遍原理和方法之外,還要遵守自己的特殊原理和方法,所以在討論軟件工程時也附帶討論一下信息系統(tǒng)工程。信息系統(tǒng)工程是一門新興的工程學科,目前還不十分成熟,正處在發(fā)展之中,很多名詞和定義還不規(guī)范,需要人們進一步探索。2023/9/17151.3.4軟件工程不同于信息系統(tǒng)工程信息系統(tǒng)是應用軟件的1.3.5軟件工程不只是程序設計復雜問題需要軟件工程,單靠程序設計無法解決復雜問題。復雜系統(tǒng)必須在編程之前進行設計。像建筑業(yè)一樣,在建造復雜系統(tǒng)之前必須進行結構設計。必須用抽象和“分治”的方法對系統(tǒng)進行模塊化。在程序員編寫代碼之前,對每個模塊都要進行詳細說明,并且必須定義與其他模塊的接口。在設計一個系統(tǒng)之前,軟件工程師必須了解它的需求。這就意味著必須做需求分析,而且必須用某種建模語言說明。最終,軟件工程還是一個團隊活動,必須對團隊進行管理。因此,項目管理(projectmanagement)對軟件工程是有影響的??傊?,軟件工程為系統(tǒng)提供一個體系結構的解決方案,包括設計體系結構組件,將組件集成為一個可操作的系統(tǒng),項目管理等。軟件工程是一門精妙的學問,程序設計只是其中一項有用的技能。2023/9/17161.3.5軟件工程不只是程序設計復雜問題需要軟件工程,單1.3.6軟件工程涉及的人員2023/9/17171.3.6軟件工程涉及的人員2023/8/6171.3.7什么是好的軟件表1.1優(yōu)良軟件具有的屬性產品特性含義可維護性軟件必須能夠不斷進化以滿足客戶的需求變化,這是軟件產品最根本的特性,因為工作環(huán)境是不斷變化的,軟件也必然要跟著變化可依賴性軟件可依賴性還包括一系列特性,包括可靠性、保密性、安全性??煽康能浖谙到y(tǒng)失敗的情況下,也不會導致人員傷亡和經濟損失有效性軟件不要浪費內存和處理器等系統(tǒng)資源,因而有效性應包括響應時間、處理時間、內存利用率等方面可用性軟件必須具備可用性。必須是用戶不用特殊的努力就能操作。即軟件必須具備相似的用戶界面和充分的說明文檔2023/9/17181.3.7什么是好的軟件表1.1優(yōu)良軟件具有的屬性含義1.3.8軟件工程所面臨的主要問題(1)多樣性的挑戰(zhàn)(2)交付上的挑戰(zhàn)(3)信任的挑戰(zhàn)2023/9/17191.3.8軟件工程所面臨的主要問題(1)多樣性的挑戰(zhàn)21.4軟件工程的基本原理

(1)用分階段的生命周期計劃嚴格管理(2)堅持進行階段評審(3)實行嚴格的產品控制(4)采納現(xiàn)代程序設計技術(5)結果應能清楚地審查(6)開發(fā)小組的人員應少而精(7)承認不斷改進軟件工程實踐的必要性2023/9/17201.4軟件工程的基本原理2023/8/6201.5軟件的開發(fā)方法

軟件開發(fā)方法就是軟件開發(fā)所遵循的辦法和步驟,以保證所得到的運行系統(tǒng)和支持的文檔滿足質量要求。軟件開發(fā)方法有很多種,其中,針對系統(tǒng)分析和設計活動的軟件開發(fā)方法和針對系統(tǒng)全局的軟件開發(fā)方法尤為重要。下面簡略地介紹其中的四種軟件開發(fā)方法。2023/9/17211.5軟件的開發(fā)方法軟件開發(fā)方法就是軟件開發(fā)所遵循1.5.1結構化開發(fā)方法(1)結構化分析的步驟結構化分析(structuredanalysis,簡稱SA)與所有的軟件分析方法一樣,也是一種模型的確立活動。SA方法就是使用獨有的符號,來確立描繪信息(數據和控制)流和內容的模型,劃分系統(tǒng)的功能和行為,以及其他為確立模型不可缺少的描述。2023/9/17221.5.1結構化開發(fā)方法(1)結構化分析的步驟20231.5.1結構化開發(fā)方法結構化分析基本步驟:①構造數據流模型:根據用戶當前需求,在創(chuàng)建實體—關系圖的基礎上,依據數據流圖(DFD)構造數據流模型。②構建控制流模型:一些應用系統(tǒng)除了要求用數據流建模外,通過構造控制流圖(CFD),構建控制流模型。③生成數據字典(DD):對所有數據元素的輸入、輸出、存儲結構,甚至是中間計算結果進行有組織的列表。目前一般采用CASE的“結構化分析和設計工具”來完成。④生成可選方案,建立需求規(guī)約:確定各種方案的成本和風險等級,據此對各種方案進行分析,然后從中選擇一種方案,建立完整的需求規(guī)約。2023/9/17231.5.1結構化開發(fā)方法結構化分析基本步驟:2023(2)結構化設計步驟

結構化設計是一種面向數據流的設計方法,就是采用最佳的可能方法設計系統(tǒng)的各個組成部分以及各成分之間的內部聯(lián)系的技術,目的在于提出滿足系統(tǒng)需求的最佳軟件的結構,完成軟件層次圖或軟件結構圖。2023/9/1724(2)結構化設計步驟2023/8/624結構化設計步驟:①首先研究、分析和審查數據流圖。從軟件的需求規(guī)格說明中弄清數據流加工的過程。②然后根據數據流圖決定問題的類型。數據處理問題有兩種典型的類型:變換型和事務型。針對兩種不同的類型分別進行分析處理。③由數據流圖推導出系統(tǒng)的初始結構圖。也就是把數據流圖映射到軟件模塊結構,設計出模塊結構的上層。④利用一些試探性原則來改進系統(tǒng)的初始結構圖,直到得到符合要求的結構圖為止。即在數據流圖的基礎上逐步分解高層模塊,設計中下層模塊,并對軟件模塊結構進行優(yōu)化,最終得到更為合理的軟件結構。⑤描述模塊接口。⑥修改和補充數據詞典。⑦制定測試計劃。2023/9/1725結構化設計步驟:2023/8/6251.5.2模塊化開發(fā)方法模塊化程序設計方法就是把一個待開發(fā)的軟件系統(tǒng)分解成若干可單獨命名和編址的較為簡單的部分,稱為模塊(modules)。每個模塊分別獨立地開發(fā)、測試,最后再組裝出整個軟件系統(tǒng)。這種開發(fā)方法是對復雜的系統(tǒng)“分而治之”,“各個擊破”,這種方法不僅可以將軟件系統(tǒng)開發(fā)的復雜性在分解過程中降低,便于修改、維護,而且還容易實現(xiàn)同一個系統(tǒng)不同部分的并行開發(fā),從而提高了軟件的生產效率。2023/9/17261.5.2模塊化開發(fā)方法模塊化程序設計方法就是把一個待開將模塊定義為多大較合適,下面五條標準可供參考:(1)模塊可分解性:如果一種設計方法提供了將問題分解成子問題的系統(tǒng)化機制,它就能降低整個系統(tǒng)的復雜性,從而實現(xiàn)一種有效的模塊化解決方案。(2)模塊可組裝性:如果一種設計方法使現(xiàn)存的(可復用的)設計模塊能夠被組裝成新系統(tǒng),它就能提供一種不用一切從頭開始的模塊化解決方案。(3)模塊可理解性:如果一個模塊可以作為一個獨立的單位(不用參考其他模塊)被理解,那么它就易于構造和修改。(4)模塊連續(xù)性:如果對系統(tǒng)需求的微小修改只導致對單個模塊而不是對整個系統(tǒng)的修改,則修改引起的副作用就會被最小化。(5)模塊保護:如果模塊內出現(xiàn)異常情況,并且它的影響限制在模塊內部,則錯誤引起的副作用就會被最小化。2023/9/1727將模塊定義為多大較合適,下面五條標準可供參考:2023/8/1.5.3面向數據結構開發(fā)方法面向數據結構方法就是根據問題的數據結構定義一組映射,把問題的數據結構轉換為問題的程序結構。面向數據結構方法有很多,它實際上是結構化方法的變形,著重數據結構而不是數據流,把程序結構設計成與問題的數據結構一樣,不強調模塊定義。2023/9/17281.5.3面向數據結構開發(fā)方法面向數據結構方法就是根據問每個面向數據結構的開發(fā)方法都有自己的一套開發(fā)方法,但概括起來有如下共同特點:將分析結果作為設計基礎,無明顯分界;都必須標識關鍵實體和動作;信息具有層次性;提供一組將層次化的數據結構映射到程序結構的步驟;數據結構由順序、選擇和重復構造成分表示。2023/9/1729每個面向數據結構的開發(fā)方法都有自己的一套開發(fā)方法,但概括起來1.5.4面向對象開發(fā)方法面向對象=對象+類+繼承+通信。如果一個軟件系統(tǒng)是使用這樣4個概念設計和實現(xiàn)的,則可以認為這個軟件系統(tǒng)是面向對象的。2023/9/17301.5.4面向對象開發(fā)方法面向對象=對象+類+繼承+通信面向對象開發(fā)方法基本要點:(1)數據的抽象,即類與子類的概念及相互關系。任何客觀的事物和實體都是對象,復雜對象可以由簡單對象組成。(2)數據及對它的操作的一體化,即封裝的概念和方法。具有相同數據和操作的對象可歸并為一個類,具有封裝性,形成一個包裝;對象是類的一個實例;一個類可以產生很多對象。(3)屬性與操作由父類向子類傳遞,即繼承的概念與方法。類可以派生出子類,繼承能避免共同行為的重復。(4)客觀事物之間的相互關系用統(tǒng)一的、消息傳遞的方法來描述。2023/9/1731面向對象開發(fā)方法基本要點:2023/8/6311.5.5軟件開發(fā)方法的評價與選擇選擇一種適宜的開發(fā)方法,應綜合考慮以下方面因素:(1)開發(fā)人員的基本素質及經驗閱歷。(2)項目進度安排及人員組成情況。(3)現(xiàn)有資源狀況。(4)進行可行性研究。(5)對待開發(fā)項目的領域知識了解情況。2023/9/17321.5.5軟件開發(fā)方法的評價與選擇選擇一種適宜的開可以從以下軟件開發(fā)方法的四個方面來進行評價:(1)技術特征:支持各種技術概念的方法特色。如層次性、信息隱蔽性、并行性、安全性、正確性、一致性、可驗證性、數據抽象和過程抽象能力等。(2)使用特征:具體開發(fā)時的有關特色。如易理解性、可靠性、可維護性、可復用性、可適應性、可移植性、可追蹤性、可互操作性、可修改性及工具支持等。(3)管理特征:增強軟件開發(fā)活動管理能力方面的特色。如對各階段的確定、易管理性、支持團隊開發(fā)、費用估算等。(4)經濟特征:使開發(fā)部門的生產力和軟件質量得到提高,產生經濟效益的有關特色。如分析該方法產生的局部效益、全生存周期效益、獲得該方法的代價、使用它的代價和管理它的代價等等。2023/9/1733可以從以下軟件開發(fā)方法的四個方面來進行評價:2023/8/61.6軟件工程的應用

軟件工程已提出和宣傳多年,但真正獲得廣泛應用的時間并不太長。軟件開發(fā)在技術和管理兩個方面的復雜程度,均與軟件的規(guī)模密切相關。越是規(guī)模大的軟件,越要在開發(fā)和維護中嚴格遵守軟件工程的原則和方法。(1)中、小型程序(2)大型程序從極小程序到極大程序,軟件工程都有它的用武之地,其作用不可低估。

2023/9/17341.6軟件工程的應用軟件工程已提出和宣傳多年,但1.7如何培養(yǎng)軟件工程的思維與方法

(1)考慮整個項目或者產品的市場前景。(2)從用戶的角度來考慮問題。(3)從技術的角度考慮問題。(4)合理進行模塊的分割。(5)人員的組織和調度。(6)開發(fā)過程中文檔的編寫。(7)充分考慮實施時可能遇到的問題。2023/

溫馨提示

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

評論

0/150

提交評論