第三章軟件工程基礎(chǔ)
3.1 軟件工程基本概念
計算機軟件是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。
軟件的特點包括:
(1)軟件是一種邏輯實體;
(2)軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程;
(3)軟件在運行、使用期間不存在磨損、老化問題;
(4)軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題;
(5)軟件復(fù)雜性高,成本昂貴;
(6)軟件開發(fā)涉及諸多的社會因素。
軟件按功能分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。
軟件危機主要表現(xiàn)在成本、質(zhì)量、生產(chǎn)率等問題。
軟件工程是應(yīng)用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。
軟件工程包括3個要素:方法、工具和過程。
軟件工程過程是把軟件轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動,包含4種基本活動:
(1)P——軟件規(guī)格說明;
(2)D——軟件開發(fā);
(3)C——軟件確認;
(4)A——軟件演進。
軟件周期:軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程。
軟件生命周期三個階段:軟件定義、軟件開發(fā)、運行維護,主要活動階段是:
(1)可行性研究與計劃制定;
(2)需求分析;
(3)軟件設(shè)計;
(4)軟件實現(xiàn);
(5)軟件測試;
(6)運行和維護。
軟件工程的目標和與原則:
目標:在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。
基本目標:付出較低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)軟件易于移植;需要較低的費用;能按時完成開發(fā),及時交付使用。
基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。
軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境。
軟件工程管理包括:軟件管理學、軟件工程經(jīng)濟學、軟件心理學等內(nèi)容。
軟件管理學包括人員組織、進度安排、質(zhì)量保證、配置管理、項目計劃等。
軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
3.2 結(jié)構(gòu)化分析方法
結(jié)構(gòu)化方法的核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計理論。
需求分析方法有(1)結(jié)構(gòu)化需求分析方法; (2)面向?qū)ο蟮姆治龅姆椒ā?BR> 從需求分析建立的模型的特性來分:靜態(tài)分析和動態(tài)分析。
結(jié)構(gòu)化分析方法的實質(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ù)字典:對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結(jié)果有共同的理解。
判定樹:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。
判定表:與判定樹相似,當數(shù)據(jù)流圖中的加工要依賴于多個邏輯條件的取值,即完成該加工的一組動作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。
數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心。
軟件需求規(guī)格說明書的特點:
(1)正確性;
(2)無岐義性;
(3)完整性;
(4)可驗證性;
(5)一致性;
(6)可理解性;
(7)可追蹤性。
3.3 結(jié)構(gòu)化設(shè)計方法
軟件設(shè)計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預(yù)定的任務(wù),軟件設(shè)計是確定系統(tǒng)的物理模型。
軟件設(shè)計是開發(fā)階段最重要的步驟,是將需求準確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的途徑。
從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計。
結(jié)構(gòu)設(shè)計:定義軟件系統(tǒng)各主要部件之間的關(guān)系。
數(shù)據(jù)設(shè)計:將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。
接口設(shè)計:描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。
過程設(shè)計:把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。
從工程管理角度來看:概要設(shè)計和詳細設(shè)計。
軟件設(shè)計的一般過程:軟件設(shè)計是一個迭代的過程;先進行高層次的結(jié)構(gòu)設(shè)計;后進行低層次的過程設(shè)計;穿插進行數(shù)據(jù)設(shè)計和接口設(shè)計。
3.1 軟件工程基本概念
計算機軟件是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。
軟件的特點包括:
(1)軟件是一種邏輯實體;
(2)軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程;
(3)軟件在運行、使用期間不存在磨損、老化問題;
(4)軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題;
(5)軟件復(fù)雜性高,成本昂貴;
(6)軟件開發(fā)涉及諸多的社會因素。
軟件按功能分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。
軟件危機主要表現(xiàn)在成本、質(zhì)量、生產(chǎn)率等問題。
軟件工程是應(yīng)用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。
軟件工程包括3個要素:方法、工具和過程。
軟件工程過程是把軟件轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動,包含4種基本活動:
(1)P——軟件規(guī)格說明;
(2)D——軟件開發(fā);
(3)C——軟件確認;
(4)A——軟件演進。
軟件周期:軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程。
軟件生命周期三個階段:軟件定義、軟件開發(fā)、運行維護,主要活動階段是:
(1)可行性研究與計劃制定;
(2)需求分析;
(3)軟件設(shè)計;
(4)軟件實現(xiàn);
(5)軟件測試;
(6)運行和維護。
軟件工程的目標和與原則:
目標:在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。
基本目標:付出較低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)軟件易于移植;需要較低的費用;能按時完成開發(fā),及時交付使用。
基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。
軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境。
軟件工程管理包括:軟件管理學、軟件工程經(jīng)濟學、軟件心理學等內(nèi)容。
軟件管理學包括人員組織、進度安排、質(zhì)量保證、配置管理、項目計劃等。
軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
3.2 結(jié)構(gòu)化分析方法
結(jié)構(gòu)化方法的核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計理論。
需求分析方法有(1)結(jié)構(gòu)化需求分析方法; (2)面向?qū)ο蟮姆治龅姆椒ā?BR> 從需求分析建立的模型的特性來分:靜態(tài)分析和動態(tài)分析。
結(jié)構(gòu)化分析方法的實質(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ù)字典:對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結(jié)果有共同的理解。
判定樹:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹。
判定表:與判定樹相似,當數(shù)據(jù)流圖中的加工要依賴于多個邏輯條件的取值,即完成該加工的一組動作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。
數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心。
軟件需求規(guī)格說明書的特點:
(1)正確性;
(2)無岐義性;
(3)完整性;
(4)可驗證性;
(5)一致性;
(6)可理解性;
(7)可追蹤性。
3.3 結(jié)構(gòu)化設(shè)計方法
軟件設(shè)計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預(yù)定的任務(wù),軟件設(shè)計是確定系統(tǒng)的物理模型。
軟件設(shè)計是開發(fā)階段最重要的步驟,是將需求準確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的途徑。
從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計。
結(jié)構(gòu)設(shè)計:定義軟件系統(tǒng)各主要部件之間的關(guān)系。
數(shù)據(jù)設(shè)計:將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。
接口設(shè)計:描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。
過程設(shè)計:把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。
從工程管理角度來看:概要設(shè)計和詳細設(shè)計。
軟件設(shè)計的一般過程:軟件設(shè)計是一個迭代的過程;先進行高層次的結(jié)構(gòu)設(shè)計;后進行低層次的過程設(shè)計;穿插進行數(shù)據(jù)設(shè)計和接口設(shè)計。