簡明扼要的軟件工程講義課件_第1頁
簡明扼要的軟件工程講義課件_第2頁
簡明扼要的軟件工程講義課件_第3頁
簡明扼要的軟件工程講義課件_第4頁
簡明扼要的軟件工程講義課件_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程1.軟件工程基本概念。2.結構化分析方法。3.結構化設計方法。4.軟件測試的方法。5.程序的調試。軟件工程1.軟件工程基本概念。11軟件工程的基本概念

1.1軟件以及特點(1)軟件的組成計算機軟件(Software)是計算機系統(tǒng)中與硬件相互依存的另一部分,包括程序、數(shù)據(jù)及其相關文檔。軟件由兩部分組成:機器可執(zhí)行的程序和數(shù)據(jù);有關文檔。1軟件工程的基本概念

1.1軟2(2)軟件的特點軟件是一種邏輯實體,而不是物理實體,具有抽象性。軟件的生產與硬件不同,它沒有明顯的制作過程。軟件在運行、使用期間不存在磨損、老化問題。軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導致了軟件移植的問題。軟件復雜性高,成本昂貴。軟件開發(fā)涉及諸多的社會因素。(2)軟件的特點31.2軟件危機與軟件工程

軟件工程概念的提出源自軟件危機。軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)的成本和進度無法控制;軟件質量難以保證;軟件不可維護或維護成度非常低;軟件成本不斷提高;軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。1.2軟件危機與軟件工程軟件工程概念的提出源自軟件危機。4為了消除軟件危機,形成了軟件工程的概念,開辟了工程學的新興領域——軟件工程學。軟件工程就是試圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關技術及管理方法。關于軟件工程的定義,國標(GB)中指出,軟件工程是應用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。為了消除軟件危機,形成了軟件工程的概念,開辟了工程學的新興領5軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。軟件工程的核心思想是把軟件產品作為是一個工程產品來處理。把需求計劃、可行性研究、工程審核、質量監(jiān)督等工程化的概念引入到軟件生產當中,以期達到工程項目的三個基本要素:進度、經費和質量的目標。軟件工程包括3個要素,即方法、工具和過程。61.3軟件工程過程與軟件生命周期1.軟件工程過程(SoftwareEngineeringProcess)

軟件工程過程是為獲得軟件產品,在軟件工具的支持下由軟件人員完成的一系列軟件工程活動。1.3軟件工程過程與軟件生命周期1.軟件工程過程(S72.軟件的生命周期(SoftwareLifeCycle)通常,將軟件產品提出、實現(xiàn)、使用、維護到停止使用退役的過程稱為軟件的生命周期。2.軟件的生命周期(SoftwareLifeCy8可將軟件生命周期分為定義、開發(fā)及維護三個階段??尚行匝芯砍醪巾椖坑媱澬枨蠓治龈乓O計詳細設計實現(xiàn)測試使用維護退役定義階段開發(fā)階段維護階段可將軟件生命周期分為定義、開發(fā)及維護三個階段??尚行匝芯砍醪?1.4軟件工程的目標與原則1.軟件工程的目標軟件工程的目標是,在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品。軟件工程研究的內容主要包括:軟件開發(fā)技術和軟件工程管理;1.4軟件工程的目標與原則1.軟件工程的目標102.軟件工程的原則軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。①抽象。抽取事物最基本的特性和行為,忽略非本質細節(jié)。②信息隱蔽。用封裝技術,將程序模塊的實現(xiàn)細節(jié)隱藏起來,使模塊接口盡量簡單。③模塊化。模塊是程序中相對獨立的成分,一個獨立的編程單位,應有良好的接口定義。2.軟件工程的原則11④局部化。要求在一個物理模塊內集中邏輯上相互關聯(lián)的計算資源,保證模塊間具有松散的耦合關系,模塊內部有較強的內聚性,這有助于控制解的復雜性。⑤確定性。軟件開發(fā)過程中所有概念的表達應是確定的、無歧義且規(guī)范的。⑥一致性。包括程序、數(shù)據(jù)和文檔的整個軟件系統(tǒng)的各模塊應使用已知的概念,內外部接口應保持一致,系統(tǒng)規(guī)格說明與系統(tǒng)行為應保持一致。⑦完備性。軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需的功能。⑧可驗證性。開發(fā)大型軟件系統(tǒng)需要對系統(tǒng)自頂向下,逐層分解。系統(tǒng)分解應遵循容易檢查、測評、評審的原則,以確保系統(tǒng)的正確性。④局部化。要求在一個物理模塊內集中邏輯上相互關聯(lián)的計算資源,121.5軟件開發(fā)工具與軟件開發(fā)環(huán)境1.軟件開發(fā)工具軟件開發(fā)工具是指可以用來幫助開發(fā),測試、分析、維護其他計算機程序及其文檔資料,實現(xiàn)軟件生產過程自動化的一類程序。軟件工具主要包括需求分析工具、設計工具、編碼工具、確認工具、維護工具等。1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境1.軟件開發(fā)工具132.軟件工程環(huán)境稱軟件工程環(huán)境是全面支持軟件開發(fā)全過程的軟件工具集合。計算機輔助軟件工程(CASE)是將各種軟件工具、開發(fā)機器和一個存放開發(fā)過程信息的中心數(shù)據(jù)庫組合起來,形成軟件工程環(huán)境。2.軟件工程環(huán)境142軟件需求分析2.1需求分析與需求分析方法1.需求分析軟件需求是指用戶對目標軟件系統(tǒng)在功能、行為、性能、設計約束等方面的期望。需求分析階段的工作包括四個方面:需求獲取需求分析編寫需求說明書需求評審2軟件需求分析2.1需求分析與需求分析方法152.需求分析方法常見的需求分析方法有:①結構化分析方法。②面向對象的分析方法。2.需求分析方法162.2結構化分析方法(1)關于結構化分析方法結構化分析方法的實質是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。結構化分析的步驟如下:①通過對用戶的調查,以軟件的需求為線索,獲得當前系統(tǒng)的具體模型:②去掉具體模型中非本質因素,抽象出當前系統(tǒng)的邏輯模型:③根據(jù)計算機的特點分析當前系統(tǒng)與目標系統(tǒng)的差別,建立目標系統(tǒng)的邏輯模型④完善目標系統(tǒng)并補充細節(jié),寫出目標系統(tǒng)的軟件需求規(guī)格說明;⑤評審直到確認完全符合用戶對軟件的需求。2.2結構化分析方法(1)關于結構化分析方法17(2)結構化分析的的常用工具1.數(shù)據(jù)流圖數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的有力工具,是從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。2.數(shù)據(jù)字典數(shù)據(jù)字典是結構化分析方法的另一個工具。數(shù)據(jù)字典是對所有與系統(tǒng)相關的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結果有共同的理解。(2)結構化分析的的常用工具183.判定表判定表是一種文本化的加工說明的流行格式,它特別適用于帶有一組測試條件的說明。條件分類1234金額〉1000〉1000≤1000≤1000動作賬目狀況未過期已過期未過期已過期押下批準單√發(fā)出批準單√√√發(fā)出提貨單√√√發(fā)出通知單√3.判定表條件分類1234金194.判定樹

判定樹也是用來表達加工邏輯的一種工具。4.判定樹

判定樹也是用來表達加工邏輯的一種工具。202.3軟件需求規(guī)格說明書軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。1.軟件需求規(guī)格說明書的作用便于用戶、開發(fā)人員進行理解和交流。反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù)。作為確認測試和驗收的依據(jù)。2.3軟件需求規(guī)格說明書軟件需求規(guī)格說明書是需求分析階段的212.軟件需求規(guī)格說明書的內容概述;數(shù)據(jù)描述;功能描述;性能描述;參考文獻;附錄。2.軟件需求規(guī)格說明書的內容223.軟件需求規(guī)格說明書的特點正確性;無歧義性;完整性;可驗證性;一致性;可理解性;可修改性;可追蹤性。3.軟件需求規(guī)格說明書的特點233軟件設計3.1軟件設計的概念和原理1.模塊化模塊化就是把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集成起來組成一個整體,可以完成指定的功能,解決實際問題。3軟件設計3.1軟件設計的概念和原理242.抽象用自頂向下由抽象到具體的方式進行分配控制,簡化了軟件的設計和實現(xiàn),提高了軟件的可理解性和可測試性,并且使軟件更容易維護。3.信息隱蔽信息隱蔽使得一個模塊內包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。2.抽象254.模塊獨立性每個模塊完成一個相對獨立的特定子功能,并且和其他模塊之間的接口很簡單。模塊的獨立程度可以由兩個定性標準來衡量,這兩個標準分別稱為耦合性和內聚性。藕合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內聚衡量一個模塊內部各個元素彼此間結合的緊密程度。一般較較優(yōu)秀的軟件設計應盡量做到高內聚、低耦合,即減弱模塊間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。4.模塊獨立性263.結構化設計方法結構化設計方法的基本思想是將軟件設計成由相對獨立、單—功能的模塊組成的結構。3.結構化設計方法273.2概要設計1.概要設計的任務軟件概要設計的基本任務是:1)設計軟件系統(tǒng)結構2)數(shù)據(jù)結構及數(shù)據(jù)庫設計3)編寫概要設計文檔4)概要設計文檔評審3.2概要設計1.概要設計的任務282.面向數(shù)據(jù)流的設計方法(1)數(shù)據(jù)流類型有兩種:變換型和事務型。①變換型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。2.面向數(shù)據(jù)流的設計方法29②事務型。在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務。②事務型。在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一30(2)面向數(shù)據(jù)流設計方法的實施要點與設計過程

第1步:分析、確認數(shù)據(jù)流圖的類型,區(qū)分是事務型還是變換型。第2步:說明數(shù)據(jù)流的邊界。第3步:把數(shù)據(jù)流圖映射為程序結構。第4步:根據(jù)設計準則對產生的結構進行細化和求精。(2)面向數(shù)據(jù)流設計方法的實施要點與設計過程313.設計的準則①提高模塊獨立性。②模塊規(guī)模適中。③深度、寬度、扇出和扇入適當④使模塊的作用域在該模塊的控制域內。⑤應減少模塊的接口和界面的復雜性。⑥設計成單入口、單出口的模塊。⑦設計功能可預測的模塊。3.設計的準則323.3詳細設計詳細設計也稱過程設計。在過程設計階段,要對每個模塊規(guī)定的功能以及算法的設計,給出適當?shù)乃惴枋觯创_定模塊內部的詳細執(zhí)行過程,包括局部數(shù)據(jù)組織、控制流、每一步具體處理要求和各種實現(xiàn)細節(jié)等。其目的是確定應該怎樣來具體實現(xiàn)所要求的系統(tǒng)常見的過程設計工具有:圖形工具:程序流程圖,N-S,PAD,HIPO。表格工具:判定表。語言工具:PDL(偽碼)。3.3詳細設計詳細設計也稱過程設計。33在程序流程圖中常用的圖形符號如圖所示:在程序流程圖中常用的圖形符號如圖所示:34結構化程序設計限制流程圖只能使用五種基本控制結構,如圖所示。結構化程序設計限制流程圖只能使用五種基本控制結構,如圖所示。35例如,下面是簡單托運貨物運費計算的問題。設貨物重量x,客戶信息y,輸入x、y后,計算運費的具體要求是:如果0<x≤15(設為條件1),則用公式1計算后,循環(huán)3次完成同樣的“記賬”和“輸出”操作,然后程序結束;如果x>15(設為條件2),則用公式2計算后,循環(huán)3次完成同樣的“記賬”和“輸出”操作,然后程序結束。該問題程序的程序流程圖描述如圖例如,下面是簡單托運貨物運費計算的問題。36簡明扼要的軟件工程講義課件371973年Nossi和Shneiderman提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常把這種圖稱為N—S圖。五種基本結構的N—S圖如圖所示。1973年Nossi和Shneiderman提出了用方框圖來38下面是求某數(shù)是否是素數(shù)的問題,該問題的N—S圖描述如圖所示:下面是求某數(shù)是否是素數(shù)的問題,該問題的N—S圖描述如圖所示:394軟件測試4.1軟件測試的基礎1.什么是軟件測試軟件測試是在軟件投入生產性運行之前,對軟件需求分析、設計規(guī)格說明和編碼的最終復審,是軟件質量保證的關鍵步驟。如果給軟件測試下定義的話,可以這樣講:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。

4軟件測試4.1軟件測試的基礎402.軟件測試的目的和準則(1)軟件測試的目的:測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。2.軟件測試的目的和準則41(2)軟件測試的準則:所有測試都應追溯到需求;嚴格執(zhí)行測試計劃,排除測試的隨意性;充分注意測試中的群集現(xiàn)象;程序員應避免檢查自己的程序;窮舉測試不可能;妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。(2)軟件測試的準則:424.2軟件測試技術與方法軟件測試的方法和技術是多種多樣的。若從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。4.2軟件測試技術與方法軟件測試的方法和技術是多種多樣43一、靜態(tài)測試與動態(tài)測試(一)靜態(tài)測試方法靜態(tài)測試一般指人工評審軟件文檔或程序,以便發(fā)現(xiàn)錯誤。靜態(tài)測試包括:代碼檢查、靜態(tài)結構分析、代碼質量度量等。(二)動態(tài)測試方法動態(tài)測試是在樣板測試數(shù)據(jù)上執(zhí)行程序并分析輸出以發(fā)現(xiàn)錯誤的過程。所以動態(tài)測試包括三部分:生成測試數(shù)據(jù)、執(zhí)行程序與驗證的輸出結果。一、靜態(tài)測試與動態(tài)測試44二、白盒測試與黑盒測試任何工程產品都可以使用以下兩種方法之一進行測試:(1)已知產品的功能設計規(guī)格,可以進行測試證明每個實現(xiàn)了的功能是否符合要求。(2)已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規(guī)格要求,所有內部成分是否已經過檢查。前者是黑盒測試,后者是白盒測試。二、白盒測試與黑盒測試45(一)白盒測試軟件的白盒測試是對軟件的過程性細節(jié)作細致的檢查。這一方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。因此白盒測試又稱為結構測試或邏輯驅動測試。(一)白盒測試46(二)黑盒測試就軟件測試來講,軟件的黑盒測試意味著測試要根據(jù)軟件的外部特性進行。也就是說,這種方法是把測試對象看作一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。(二)黑盒測試47軟件測試過程分4個步驟,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。1.單元測試單元測試是對軟件設計的最小單位——模塊(程序單元)進行正確性檢驗的測試。單元測試的目的是發(fā)現(xiàn)各模塊內部可能存在的各種錯誤。單元測試的依據(jù)是詳細設計說明書和源程序。

4.3軟件測試的實施軟件測試過程分4個步驟,即單元測試、集成測試、驗收測試(確認482集成測試集成測試是測試和組裝軟件的過程。它是把模塊在按照設計要求組裝起來的同時進行測試,主要目的是發(fā)現(xiàn)與接口有關的錯誤。集成測試的依據(jù)是概要設計說明書。3確認測試確認測試的任務是驗證軟件的功能和性能及其他特性是否滿足了需求規(guī)格說明中確定的各種需求,以及軟件配置是否完全、正確。2集成測試494系統(tǒng)測試系統(tǒng)測試是將通過測試確認的軟件,作為整個基于計算機系統(tǒng)的一個元素,與計算機硬件、外設、支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素組合在一起,在實際運行(使用)環(huán)境下對計算機系統(tǒng)進行一系列的集成測試和確認測試。4系統(tǒng)測試505程序的調試5.1程序調試的基本概念在對程序進行了成功的測試之后將進入程序調試(通常稱Debug,即排錯)。程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于一定的調試工具去執(zhí)行找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發(fā)階段。5程序的調試5.1程序調試的基本概念511程序調試的基本步驟(1)錯誤定位從錯誤的外部表現(xiàn)形式入手,研究有關部分的程序,確定錯誤位置找出錯誤的內在原因。(2)修改設計和代碼,以排除錯誤排錯是軟件開發(fā)過程中一項艱苦的工作,這也決定了調試工作是一個具有很強技術性和技巧性的工作。(3)進行回歸測試,防止引進新的錯誤因為修改程序可能帶來新的錯誤,重復進行暴露這個錯誤的原始測試或某些有關測試,以確認該錯誤是否被排除、是否引進了新的錯誤。如果所做的修正無效,則撤銷這次改動,重復上述過程,直到找到一個有效的解決辦法為止。1程序調試的基本步驟522.程序調試的原則(1)確定錯誤的性質和位置時的注意事項:①分析思考與錯誤征兆有關的信息;②避開死胡同;③只把調試工具當作輔助手段來使用;④避免用試探法,最多只能把它當作最后手段。2.程序調試的原則53(2)修改錯誤的原則①在出現(xiàn)錯誤的地方,很可能還有別的錯誤;②修改錯誤的一個常見失誤是只修改了這個錯誤的征兆或這個錯誤的表現(xiàn),而沒有修改錯誤本身;③注意修正一個錯誤的同時有可能會引入新的錯誤;④修改錯誤的過程將迫使人們暫時回到程序設計階段;⑤修改源代碼程序,不要改變目標代碼(2)修改錯誤的原則545.2軟件的調試方法1.強行排錯法作為傳統(tǒng)的調試方法,其過程可概括為,設置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序是目前使用較多、效率較低的調試方法。涉及的調試技術主要是設置斷點和監(jiān)視表達式。例如:①通過內存全部打印來排錯;②在程序特定部位設置打印語句,即斷點法;③自動調試工具。5.2軟件的調試方法1.強行排錯法552.回溯法該方法適合于小規(guī)模程序的排錯。即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。然后,從發(fā)現(xiàn)“癥狀”的地方開始,沿程序的控制流程,逆向跟蹤源程序代碼,直到找到錯誤根源或確定錯誤產生的范圍。2.回溯法563.原因排除法原因排除法是通過演繹和歸納,以及二分法來實現(xiàn)的。演繹法是一種從一般原理或前提出發(fā),經過排除和精化的過程來推導出結論的思考方法。歸納法是一種從特殊推斷出一般的系統(tǒng)化思考方法。其基本思想是從一些線索著手,通過分析尋找到潛在的原因,從而找出錯誤。二分法實現(xiàn)的基本思想是,如果已知每個變量在程序中若干個關鍵點的正確值,則可以使用定值語句(如賦值語句、輸入語句等)在程序中的某點附近給這些變量賦正確值,然后運行程序并檢查程序的輸出。3.原因排除法57軟件工程1.軟件工程基本概念。2.結構化分析方法。3.結構化設計方法。4.軟件測試的方法。5.程序的調試。軟件工程1.軟件工程基本概念。581軟件工程的基本概念

1.1軟件以及特點(1)軟件的組成計算機軟件(Software)是計算機系統(tǒng)中與硬件相互依存的另一部分,包括程序、數(shù)據(jù)及其相關文檔。軟件由兩部分組成:機器可執(zhí)行的程序和數(shù)據(jù);有關文檔。1軟件工程的基本概念

1.1軟59(2)軟件的特點軟件是一種邏輯實體,而不是物理實體,具有抽象性。軟件的生產與硬件不同,它沒有明顯的制作過程。軟件在運行、使用期間不存在磨損、老化問題。軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導致了軟件移植的問題。軟件復雜性高,成本昂貴。軟件開發(fā)涉及諸多的社會因素。(2)軟件的特點601.2軟件危機與軟件工程

軟件工程概念的提出源自軟件危機。軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)的成本和進度無法控制;軟件質量難以保證;軟件不可維護或維護成度非常低;軟件成本不斷提高;軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。1.2軟件危機與軟件工程軟件工程概念的提出源自軟件危機。61為了消除軟件危機,形成了軟件工程的概念,開辟了工程學的新興領域——軟件工程學。軟件工程就是試圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關技術及管理方法。關于軟件工程的定義,國標(GB)中指出,軟件工程是應用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。為了消除軟件危機,形成了軟件工程的概念,開辟了工程學的新興領62軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。軟件工程的核心思想是把軟件產品作為是一個工程產品來處理。把需求計劃、可行性研究、工程審核、質量監(jiān)督等工程化的概念引入到軟件生產當中,以期達到工程項目的三個基本要素:進度、經費和質量的目標。軟件工程包括3個要素,即方法、工具和過程。631.3軟件工程過程與軟件生命周期1.軟件工程過程(SoftwareEngineeringProcess)

軟件工程過程是為獲得軟件產品,在軟件工具的支持下由軟件人員完成的一系列軟件工程活動。1.3軟件工程過程與軟件生命周期1.軟件工程過程(S642.軟件的生命周期(SoftwareLifeCycle)通常,將軟件產品提出、實現(xiàn)、使用、維護到停止使用退役的過程稱為軟件的生命周期。2.軟件的生命周期(SoftwareLifeCy65可將軟件生命周期分為定義、開發(fā)及維護三個階段。可行性研究初步項目計劃需求分析概要設計詳細設計實現(xiàn)測試使用維護退役定義階段開發(fā)階段維護階段可將軟件生命周期分為定義、開發(fā)及維護三個階段??尚行匝芯砍醪?61.4軟件工程的目標與原則1.軟件工程的目標軟件工程的目標是,在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品。軟件工程研究的內容主要包括:軟件開發(fā)技術和軟件工程管理;1.4軟件工程的目標與原則1.軟件工程的目標672.軟件工程的原則軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。①抽象。抽取事物最基本的特性和行為,忽略非本質細節(jié)。②信息隱蔽。用封裝技術,將程序模塊的實現(xiàn)細節(jié)隱藏起來,使模塊接口盡量簡單。③模塊化。模塊是程序中相對獨立的成分,一個獨立的編程單位,應有良好的接口定義。2.軟件工程的原則68④局部化。要求在一個物理模塊內集中邏輯上相互關聯(lián)的計算資源,保證模塊間具有松散的耦合關系,模塊內部有較強的內聚性,這有助于控制解的復雜性。⑤確定性。軟件開發(fā)過程中所有概念的表達應是確定的、無歧義且規(guī)范的。⑥一致性。包括程序、數(shù)據(jù)和文檔的整個軟件系統(tǒng)的各模塊應使用已知的概念,內外部接口應保持一致,系統(tǒng)規(guī)格說明與系統(tǒng)行為應保持一致。⑦完備性。軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需的功能。⑧可驗證性。開發(fā)大型軟件系統(tǒng)需要對系統(tǒng)自頂向下,逐層分解。系統(tǒng)分解應遵循容易檢查、測評、評審的原則,以確保系統(tǒng)的正確性。④局部化。要求在一個物理模塊內集中邏輯上相互關聯(lián)的計算資源,691.5軟件開發(fā)工具與軟件開發(fā)環(huán)境1.軟件開發(fā)工具軟件開發(fā)工具是指可以用來幫助開發(fā),測試、分析、維護其他計算機程序及其文檔資料,實現(xiàn)軟件生產過程自動化的一類程序。軟件工具主要包括需求分析工具、設計工具、編碼工具、確認工具、維護工具等。1.5軟件開發(fā)工具與軟件開發(fā)環(huán)境1.軟件開發(fā)工具702.軟件工程環(huán)境稱軟件工程環(huán)境是全面支持軟件開發(fā)全過程的軟件工具集合。計算機輔助軟件工程(CASE)是將各種軟件工具、開發(fā)機器和一個存放開發(fā)過程信息的中心數(shù)據(jù)庫組合起來,形成軟件工程環(huán)境。2.軟件工程環(huán)境712軟件需求分析2.1需求分析與需求分析方法1.需求分析軟件需求是指用戶對目標軟件系統(tǒng)在功能、行為、性能、設計約束等方面的期望。需求分析階段的工作包括四個方面:需求獲取需求分析編寫需求說明書需求評審2軟件需求分析2.1需求分析與需求分析方法722.需求分析方法常見的需求分析方法有:①結構化分析方法。②面向對象的分析方法。2.需求分析方法732.2結構化分析方法(1)關于結構化分析方法結構化分析方法的實質是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。結構化分析的步驟如下:①通過對用戶的調查,以軟件的需求為線索,獲得當前系統(tǒng)的具體模型:②去掉具體模型中非本質因素,抽象出當前系統(tǒng)的邏輯模型:③根據(jù)計算機的特點分析當前系統(tǒng)與目標系統(tǒng)的差別,建立目標系統(tǒng)的邏輯模型④完善目標系統(tǒng)并補充細節(jié),寫出目標系統(tǒng)的軟件需求規(guī)格說明;⑤評審直到確認完全符合用戶對軟件的需求。2.2結構化分析方法(1)關于結構化分析方法74(2)結構化分析的的常用工具1.數(shù)據(jù)流圖數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的有力工具,是從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。2.數(shù)據(jù)字典數(shù)據(jù)字典是結構化分析方法的另一個工具。數(shù)據(jù)字典是對所有與系統(tǒng)相關的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結果有共同的理解。(2)結構化分析的的常用工具753.判定表判定表是一種文本化的加工說明的流行格式,它特別適用于帶有一組測試條件的說明。條件分類1234金額〉1000〉1000≤1000≤1000動作賬目狀況未過期已過期未過期已過期押下批準單√發(fā)出批準單√√√發(fā)出提貨單√√√發(fā)出通知單√3.判定表條件分類1234金764.判定樹

判定樹也是用來表達加工邏輯的一種工具。4.判定樹

判定樹也是用來表達加工邏輯的一種工具。772.3軟件需求規(guī)格說明書軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。1.軟件需求規(guī)格說明書的作用便于用戶、開發(fā)人員進行理解和交流。反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù)。作為確認測試和驗收的依據(jù)。2.3軟件需求規(guī)格說明書軟件需求規(guī)格說明書是需求分析階段的782.軟件需求規(guī)格說明書的內容概述;數(shù)據(jù)描述;功能描述;性能描述;參考文獻;附錄。2.軟件需求規(guī)格說明書的內容793.軟件需求規(guī)格說明書的特點正確性;無歧義性;完整性;可驗證性;一致性;可理解性;可修改性;可追蹤性。3.軟件需求規(guī)格說明書的特點803軟件設計3.1軟件設計的概念和原理1.模塊化模塊化就是把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集成起來組成一個整體,可以完成指定的功能,解決實際問題。3軟件設計3.1軟件設計的概念和原理812.抽象用自頂向下由抽象到具體的方式進行分配控制,簡化了軟件的設計和實現(xiàn),提高了軟件的可理解性和可測試性,并且使軟件更容易維護。3.信息隱蔽信息隱蔽使得一個模塊內包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。2.抽象824.模塊獨立性每個模塊完成一個相對獨立的特定子功能,并且和其他模塊之間的接口很簡單。模塊的獨立程度可以由兩個定性標準來衡量,這兩個標準分別稱為耦合性和內聚性。藕合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內聚衡量一個模塊內部各個元素彼此間結合的緊密程度。一般較較優(yōu)秀的軟件設計應盡量做到高內聚、低耦合,即減弱模塊間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。4.模塊獨立性833.結構化設計方法結構化設計方法的基本思想是將軟件設計成由相對獨立、單—功能的模塊組成的結構。3.結構化設計方法843.2概要設計1.概要設計的任務軟件概要設計的基本任務是:1)設計軟件系統(tǒng)結構2)數(shù)據(jù)結構及數(shù)據(jù)庫設計3)編寫概要設計文檔4)概要設計文檔評審3.2概要設計1.概要設計的任務852.面向數(shù)據(jù)流的設計方法(1)數(shù)據(jù)流類型有兩種:變換型和事務型。①變換型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。2.面向數(shù)據(jù)流的設計方法86②事務型。在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務。②事務型。在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一87(2)面向數(shù)據(jù)流設計方法的實施要點與設計過程

第1步:分析、確認數(shù)據(jù)流圖的類型,區(qū)分是事務型還是變換型。第2步:說明數(shù)據(jù)流的邊界。第3步:把數(shù)據(jù)流圖映射為程序結構。第4步:根據(jù)設計準則對產生的結構進行細化和求精。(2)面向數(shù)據(jù)流設計方法的實施要點與設計過程883.設計的準則①提高模塊獨立性。②模塊規(guī)模適中。③深度、寬度、扇出和扇入適當④使模塊的作用域在該模塊的控制域內。⑤應減少模塊的接口和界面的復雜性。⑥設計成單入口、單出口的模塊。⑦設計功能可預測的模塊。3.設計的準則893.3詳細設計詳細設計也稱過程設計。在過程設計階段,要對每個模塊規(guī)定的功能以及算法的設計,給出適當?shù)乃惴枋?,即確定模塊內部的詳細執(zhí)行過程,包括局部數(shù)據(jù)組織、控制流、每一步具體處理要求和各種實現(xiàn)細節(jié)等。其目的是確定應該怎樣來具體實現(xiàn)所要求的系統(tǒng)常見的過程設計工具有:圖形工具:程序流程圖,N-S,PAD,HIPO。表格工具:判定表。語言工具:PDL(偽碼)。3.3詳細設計詳細設計也稱過程設計。90在程序流程圖中常用的圖形符號如圖所示:在程序流程圖中常用的圖形符號如圖所示:91結構化程序設計限制流程圖只能使用五種基本控制結構,如圖所示。結構化程序設計限制流程圖只能使用五種基本控制結構,如圖所示。92例如,下面是簡單托運貨物運費計算的問題。設貨物重量x,客戶信息y,輸入x、y后,計算運費的具體要求是:如果0<x≤15(設為條件1),則用公式1計算后,循環(huán)3次完成同樣的“記賬”和“輸出”操作,然后程序結束;如果x>15(設為條件2),則用公式2計算后,循環(huán)3次完成同樣的“記賬”和“輸出”操作,然后程序結束。該問題程序的程序流程圖描述如圖例如,下面是簡單托運貨物運費計算的問題。93簡明扼要的軟件工程講義課件941973年Nossi和Shneiderman提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常把這種圖稱為N—S圖。五種基本結構的N—S圖如圖所示。1973年Nossi和Shneiderman提出了用方框圖來95下面是求某數(shù)是否是素數(shù)的問題,該問題的N—S圖描述如圖所示:下面是求某數(shù)是否是素數(shù)的問題,該問題的N—S圖描述如圖所示:964軟件測試4.1軟件測試的基礎1.什么是軟件測試軟件測試是在軟件投入生產性運行之前,對軟件需求分析、設計規(guī)格說明和編碼的最終復審,是軟件質量保證的關鍵步驟。如果給軟件測試下定義的話,可以這樣講:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。

4軟件測試4.1軟件測試的基礎972.軟件測試的目的和準則(1)軟件測試的目的:測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。2.軟件測試的目的和準則98(2)軟件測試的準則:所有測試都應追溯到需求;嚴格執(zhí)行測試計劃,排除測試的隨意性;充分注意測試中的群集現(xiàn)象;程序員應避免檢查自己的程序;窮舉測試不可能;妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。(2)軟件測試的準則:994.2軟件測試技術與方法軟件測試的方法和技術是多種多樣的。若從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試和動態(tài)測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。4.2軟件測試技術與方法軟件測試的方法和技術是多種多樣100一、靜態(tài)測試與動態(tài)測試(一)靜態(tài)測試方法靜態(tài)測試一般指人工評審軟件文檔或程序,以便發(fā)現(xiàn)錯誤。靜態(tài)測試包括:代碼檢查、靜態(tài)結構分析、代碼質量度量等。(二)動態(tài)測試方法動態(tài)測試是在樣板測試數(shù)據(jù)上執(zhí)行程序并分析輸出以發(fā)現(xiàn)錯誤的過程。所以動態(tài)測試包括三部分:生成測試數(shù)據(jù)、執(zhí)行程序與驗證的輸出結果。一、靜態(tài)測試與動態(tài)測試101二、白盒測試與黑盒測試任何工程產品都可以使用以下兩種方法之一進行測試:(1)已知產品的功能設計規(guī)格,可以進行測試證明每個實現(xiàn)了的功能是否符合要求。(2)已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規(guī)格要求,所有內部成分是否已經過檢查。前者是黑盒測試,后者是白盒測試。二、白盒測試與黑盒測試102(一)白盒測試軟件的白盒測試是對軟件的過程性細節(jié)作細致的檢查。這一方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預期的狀態(tài)一致。因此白盒測試又稱為結構測試或邏輯驅動測試。(一)白盒測試103(二)黑盒測試就軟件測試來講,軟件的黑盒測試意味著測試要根據(jù)軟件的外部特性進行。也就是說,這種方法是把測試對象看作一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。(二)黑盒測試104軟件測試過程分4個步驟,即單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。1.單元測試單元測試是對軟件設計的最小單位——模塊(程序單元)進行正確性檢驗的測試。單元測試的目的是發(fā)現(xiàn)各

溫馨提示

  • 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

提交評論