3.1 軟件工程基本概念 計(jì)算機(jī)軟件是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。 軟件的特點(diǎn)包括: (1)軟件是一種邏輯實(shí)體,具有抽象性; (2)軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程; (3)軟件在運(yùn)行、使用期間不存在磨損、老化問題; (4)軟件的開發(fā)、運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴性,受計(jì)算機(jī)系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題; (5)軟件復(fù)雜性高,成本昂貴; (6)軟件開發(fā)涉及諸多的社會(huì)因素。 軟件按功能分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。 軟件危機(jī)主要表現(xiàn)在成本、質(zhì)量、生產(chǎn)率等問題。 軟件工程是應(yīng)用于計(jì)算機(jī)軟件的定義、開發(fā)和維護(hù)的一整套方法、工具、文檔、實(shí)踐標(biāo)準(zhǔn)和工序。 軟件工程包括3個(gè)要素:方法、工具和過程。 軟件工程過程是把軟件轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動(dòng),包含4種基本活動(dòng): (1)P——軟件規(guī)格說明; (2)D——軟件開發(fā); (3)C——軟件確認(rèn); (4)A——軟件演進(jìn)。 軟件周期:軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程。 軟件生命周期三個(gè)階段:軟件定義、軟件開發(fā)、運(yùn)行維護(hù),主要活動(dòng)階段是: (1)可行性研究與計(jì)劃制定; (2)需求分析; (3)軟件設(shè)計(jì); (4)軟件實(shí)現(xiàn); (5)軟件測試; (6)運(yùn)行和維護(hù)。 軟件工程的目標(biāo)和與原則: 目標(biāo):在給定成本、進(jìn)度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。 基本目標(biāo):付出較低的開發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開發(fā)軟件易于移植;需要較低的費(fèi)用;能按時(shí)完成開發(fā),及時(shí)交付使用。 基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗(yàn)證性。 軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。 軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學(xué)、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境。 軟件工程管理包括:軟件管理學(xué)、軟件工程經(jīng)濟(jì)學(xué)、軟件心理學(xué)等內(nèi)容。 軟件管理學(xué)包括人員組織、進(jìn)度安排、質(zhì)量保證、配置管理、項(xiàng)目計(jì)劃等。 軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗(yàn)證性。 3.2 結(jié)構(gòu)化分析方法 結(jié)構(gòu)化方法的核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計(jì)理論。 需求分析階段的工作: (1)需求獲取 (2)需求分析 (3)編寫需求規(guī)格說明書 (4)需求評(píng)審 需求分析方法有 (1)結(jié)構(gòu)化需求分析方法; (2)面向?qū)ο蟮姆治龅姆椒ā?/p> 從需求分析建立的模型的特性來分:靜態(tài)分析和動(dòng)態(tài)分析。 結(jié)構(gòu)化分析方法的實(shí)質(zhì):著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。 結(jié)構(gòu)化分析的常用工具 (1)數(shù)據(jù)流圖; (2)數(shù)據(jù)字典; (3)判定樹; (4)判定表。 數(shù)據(jù)流圖:描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)功能建模。 數(shù)據(jù)字典:對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對(duì)于輸入、輸出、存儲(chǔ)成分和中間計(jì)算結(jié)果有共同的理解。 判定樹:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。 判定表:與判定樹相似,當(dāng)數(shù)據(jù)流圖中的加工要依賴于多個(gè)邏輯條件的取值,即完成該加工的一組動(dòng)作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。 數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心。 軟件需求規(guī)格說明書作用: (1)便于用戶、開發(fā)人員進(jìn)行理解和交流 (2)反映出用戶問題的結(jié)構(gòu) (3)可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù),并作為確認(rèn)測試和驗(yàn)收的依據(jù) 軟件需求規(guī)格說明書的特點(diǎn): (1)正確性; (2)無岐義性; (3)完整性; (4)可驗(yàn)證性; (5)一致性; (6)可理解性; (7)可追蹤性。 3.3 結(jié)構(gòu)化設(shè)計(jì)方法 軟件設(shè)計(jì)的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),軟件設(shè)計(jì)是確定系統(tǒng)的物理模型。 軟件設(shè)計(jì)是開發(fā)階段最重要的步驟,是將需求準(zhǔn)確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的唯一途徑。 從技術(shù)觀點(diǎn)來看,軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)、過程設(shè)計(jì)。 結(jié)構(gòu)設(shè)計(jì):定義軟件系統(tǒng)各主要部件之間的關(guān)系。 數(shù)據(jù)設(shè)計(jì):將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。 接口設(shè)計(jì):描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。 過程設(shè)計(jì):把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。 從工程管理角度來看:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。 軟件設(shè)計(jì)的一般過程:軟件設(shè)計(jì)是一個(gè)迭代的過程;先進(jìn)行高層次的結(jié)構(gòu)設(shè)計(jì);后進(jìn)行低層次的過程設(shè)計(jì);穿插進(jìn)行數(shù)據(jù)設(shè)計(jì)和接口設(shè)計(jì)。 衡量軟件模塊獨(dú)立性使用耦合性和內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。 在程序結(jié)構(gòu)中各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。優(yōu)秀軟件應(yīng)高內(nèi)聚,低耦合。 軟件概要設(shè)計(jì)的基本任務(wù)是: (1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu); (2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì); (3)編寫概要設(shè)計(jì)文檔; (4)概要設(shè)計(jì)文檔評(píng)審。 模塊用一個(gè)矩形表示,箭頭表示模塊間的調(diào)用關(guān)系。 在結(jié)構(gòu)圖中還可以用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。還可用帶實(shí)心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數(shù)據(jù)。 結(jié)構(gòu)圖的基本形式:基本形式、順序形式、重復(fù)形式、選擇形式。 結(jié)構(gòu)圖有四種模塊類型:傳入模塊、傳出模塊、變換模塊和協(xié)調(diào)模塊。 典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。 變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換、輸出三部分組成。 事務(wù)型數(shù)據(jù)流的特點(diǎn)是:接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。 詳細(xì)設(shè)計(jì):是為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。 常見的過程設(shè)計(jì)工具有: 圖形工具(程序流程圖、PAD圖、N-S圖)、 表格工具(判定表)、 語言工具(PDL)。 3.4 軟件測試 軟件測試定義:使用人工或自動(dòng)手段來運(yùn)行或測定某個(gè)系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。 軟件測試的目的:發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。 軟件測試方法:靜態(tài)測試和動(dòng)態(tài)測試。 靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量。不實(shí)際運(yùn)行軟件,主要通過人工進(jìn)行。 動(dòng)態(tài)測試:是基本計(jì)算機(jī)的測試,主要包括白盒測試方法和黑盒測試方法。 白盒測試:在程序內(nèi)部進(jìn)行,主要用于完成軟件內(nèi)部操作的驗(yàn)證。主要方法有邏輯覆蓋、基本基路徑測試。 黑盒測試:主要診斷功能不對(duì)或遺漏、界面錯(cuò)誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤、性能錯(cuò)誤、初始化和終止條件錯(cuò),用于軟件確認(rèn)。主要方法有等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測法、因果圖等。 軟件測試過程一般按4個(gè)步驟進(jìn)行:單元測試、集成測試、驗(yàn)收測試(確認(rèn)測試)和系統(tǒng)測試。 3.5 程序的調(diào)試 程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤,主要在開發(fā)階段進(jìn)行。 程序調(diào)試的基本步驟: (1)錯(cuò)誤定位; (2)修改設(shè)計(jì)和代碼,以排除錯(cuò)誤; (3)進(jìn)行回歸測試,防止引進(jìn)新的錯(cuò)誤。 軟件調(diào)試可分表靜態(tài)調(diào)試和動(dòng)態(tài)調(diào)試。靜態(tài)調(diào)試主要是指通過人的思維來分析源程序代碼和排錯(cuò),是主要的設(shè)計(jì)手段,而動(dòng)態(tài)調(diào)試是輔助靜態(tài)調(diào)試。主要調(diào)試方法有: (1)強(qiáng)行排錯(cuò)法; (2)回溯法; (3)原因排除法。 |
|