官术网_书友最值得收藏!

1.3 軟件工程基礎

考點12 軟件工程基本概念

1.軟件定義與軟件特點

(1)軟件的定義。

真考鏈接

考核概率為75%,考生要熟記該考點內容,尤其是軟件的定義、特點、軟件工程的目標與原則、開發工具與開發環境,并理解軟件工程過程與軟件生命周期。

軟件(software)是與計算機系統的操作有關的計算機程序、規程、規則,以及可能有的文件、文檔及數據。

計算機軟件由兩部分組成:一是機器可執行的程序和數據;二是機器不可執行的,與軟件開發、運行、維護、使用等有關的文檔。

(2)軟件的特點。

軟件主要包括以下幾個特點:

●軟件是一種邏輯實體,具有抽象性;

●軟件的生產與硬件不同,它沒有明顯的制作過程;

●軟件在運行、使用期間,不存在磨損、老化問題;

●軟件的開發、運行對計算機系統具有依賴性,受計算機系統的限制,這就導致了軟件移植的問題;

●軟件復雜性高、成本昂貴;

●軟件開發涉及諸多的社會因素。

2.軟件危機與軟件工程

(1)軟件危機。

軟件危機泛指在計算機軟件的開發和維護中所遇到的一系列嚴重問題。具體地說,在軟件開發和維護過程中,軟件危機主要表現在以下方面:

●軟件需求的增長得不到滿足;

●軟件的開發成本和進度無法控制;

●軟件質量難以保證;

●軟件不可維護或維護程度非常低;

●軟件的成本不斷提高;

●軟件開發生產率的提高趕不上硬件的發展和應用需求的增長。

總之,可以將軟件危機歸結為成本、質量、生產率等問題。

(2)軟件工程。

軟件工程是應用于計算機軟件的定義、開發和維護的一整套方法、工具、文檔、實踐標準和工序。

軟件工程包括軟件開發技術和軟件工程管理。軟件工程工程包括3個要素,即方法、工具和過程。軟件的核心思想是把軟件產品看作是一個工程產品來處理。

3.軟件工程過程與軟件生命周期

(1)軟件工程過程。

軟件工程過程是把輸入轉化成為輸出的一組彼此相關的資源和活動。

(2)軟件生命周期。

通常,將軟件產品從提出、實現、使用維護到停止使用的過程稱為軟件生命周期。

軟件生命周期主要包括軟件定義、軟件開發及軟件運行維護三個階段。其中軟件生命周期的主要活動階段包括可行性研究與計劃制定、需求分析、軟件設計、軟件實現、軟件測試和運行維護。

4.軟件工程的目標與原則

(1)軟件工程的目標。

軟件工程需達到的目標是:在給定成本、進度的前提下,開發出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品。

(2)軟件工程的原則。

為了實現上述軟件工程目標,在軟件開發過程中,必須遵循軟件工程的基本原則。這些原則適用于所有的軟件項目。這些基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。

5.軟件開發工具與軟件開發環境

軟件開發工具與軟件開發環境的使用提高了軟件的開發效率、維護效率和軟件質量。

(1)軟件開發工具。

軟件開發工具的產生、發展和完善促進了軟件的開發速度和質量的提高。軟件開發工具從初期的單項工具逐步向集成工具發展。與此同時,軟件開發的各種方法也必須得到相應的軟件工具的支持,否則方法就很難有效地實施。

(2)軟件開發環境。

軟件開發環境是全面支持軟件開發過程的軟件工具集合。這些軟件工具按照一定的方法或模式組合起來,支持軟件生命周期的各個階段和各項任務的完成。

計算機輔助軟件工程(CASE)是當前軟件開發環境中富有特色的研究工作和發展方向。CASE將各種軟件工具、開發機器和一個存放過程信息的中心數據庫組合起來,形成軟件工程環境。一個良好的工程環境將最大限度地降低軟件開發的技術難度并使軟件開發的質量得到保證。

真題精選

下列描述中正確的是______。

A)程序就是軟件

B)軟件開發不受計算機系統的限制

C)軟件既是邏輯實體,又是物理實體

D)軟件是程序、數據與相關文檔的集合

【答案】D

【解析】計算機軟件是計算機系統中與硬件相互依存的另一部分,包括程序、數據及相關文檔的完整集合。軟件具有如下特點:①軟件是一種邏輯實體,而不是物理實體,具有抽象性;②軟件的生產過程與硬件不同,沒有明顯的制作過程;③軟件在運行、使用期間,不存在磨損、老化問題;④軟件的開發、運行對計算機系統具有不同程度的依賴性,這導致軟件移植的問題;⑤軟件復雜性高,成本昂貴;⑥軟件開發涉及諸多的社會因素。

考點13 結構化分析方法

1.需求分析和需求分析方法

(1)需求分析。

真考鏈接

考核概率為85%,考生要熟記該考點內容,尤其是需求分析的定義及其工作兩種需求分析方法,并理解結構化分析方法常用的工具。

軟件需求是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。

需求分析的任務是發現需求、求精、建模和定義需求的過程。需求分析將創建所需的數據模型、功能模型和控制模型。

需求分析階段的工作,可以概括為4個方面,即需求獲取、需求分析、編寫需求規格說明書和需求評審。

(2)需求分析方法。

常用的需求分析方法有結構化分析方法和面向對象分析方法。

2.結構化分析方法

(1)結構化分析方法介紹。

結構化分析方法是結構化程序設計理論在軟件需求分析階段的應用。

結構化分析方法的實質是著眼于數據流,自頂向下,逐層分解,建立系統的處理流程,以數據流圖和數據字典為主要工具,建立系統的邏輯模型。

(2)結構化分析方法的常用工具。

常用工具包括數據流圖(DFD)、數據字典(DD)、判斷樹和判斷表。下面主要介紹數據流圖和數據字典。

數據流圖(DataFlowDiagram,DFD)是描述數據處理的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統的功能建模。

數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素及說明如表1.1所示。

表1.1 數據流程圖中主要圖形元素及說明

數據字典是結構化分析方法的核心。數據字典是對所有與系統相關的數據元素的一個有組織的列表,以及明確的、嚴格的定義,使得用戶和系統分析員對于輸入、輸出、存儲成分和中間計算結果有共同的理解。通常數據字典包含的信息有名稱、別名、何處使用/如何使用、內容描述、補充信息等。數據字典中有4種類型的條目,即數據流、數據項、數據存儲和加工。

小提示

數據流圖與程序流程圖中用箭頭表示的控制流有本質的不同,千萬不要混淆。此外,數據存儲和數據流都是數據,僅僅是所處的狀態不同。數據存儲是處于靜止狀態的數據,數據流是處于運動中的數據。

3.軟件需求規格說明書

軟件需求規格說明書是需求分析階段的最后結果,是軟件開發中的重要文檔之一。

軟件需求規格說明書的標準主要有正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性。

考點14 結構化設計方法

1.軟件設計的基本概念及方法

(1)軟件設計的基礎。

真考鏈接

考核概率為65%,考生要熟記該考點內容,尤其是概要設計的基本任務、準則,并理解軟件設計的基本原理、面向數據流的設計方法、詳細設計的工具。

軟件設計是軟件工程的重要階段,是一個把軟件需求轉換為軟件表示的過程。軟件設計的基本目標是用比較抽象概括的方式確定目標系統如何完成預定的任務,即軟件設計是確定系統的物理模型。

(2)軟件設計的基本原理。

軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念,主要包括抽象、模塊化、信息隱藏以及模塊的獨立性。下面主要介紹模塊獨立性的一些度量標準。

模塊的獨立程度是評價設計好壞的重要度量標準。衡量軟件的模塊獨立性的定性度量標準是使用耦合性和內聚性。

耦合性是模塊間互相聯結的緊密程序的度量。內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。通常較優秀的軟件設計,應盡量做到高內聚、低耦合。

(3)結構化設計方法。

結構化設計就是采用最佳可能方法設計系統的各個組成部分及各成分之間的內部聯系的技術。也就是說,結構化設計是這樣一個過程,它決定用哪些方法把哪些部分聯系起來,才能解決好某個具體有清楚定義的問題。

結構化設計方法的基本思想是將軟件設計成由相對獨立、單一功能的模塊組成的結構。

小提示

一般來說,要求模塊之間的耦合盡可能弱,即模塊盡可能獨立,且要求模塊的內聚程度盡可能高。內聚性和耦合性是一個問題的兩個方面,耦合性程度弱的模塊,其內聚程度一定高。

2.概要設計

(1)概要設計的任務。

軟件概要設計的任務主要包括以下方面:

●設計軟件系統結構;

●數據結構及數據庫設計;

●編寫概要設計文檔;

●概要設計文檔評審。

(2)面向數據流的設計方法。

在需求分析設計階段,產生了數據流圖。面向數據流的設計方法定義了一些不同的映射方法,利用這些映射方法可以把數據流圖變換成結構圖表示的軟件結構。DFD從系統的輸入數據流到系統的輸出數據流的一連串連續加工形成了一條信息流。下面首先介紹數據流圖的不同類型。

數據流圖的信息流可分為兩種類型:變換流和事務流。相應的,數據流圖有兩種典型的結構形式:變換型和事物型。

面向數據流的結構化設計過程如下:

●確認數據流圖的類型(是事務型還是交換型);

●說明數據流的邊界;

●把數據流圖映射為程序結構;

●根據設計準則對產生的結構進行優化。

(3)結構化設計的準則。

大量的實踐表明,以下的設計準則可以借鑒為設計的指導和對軟件結構圖進行優化的條件。

●提高模塊獨立性;

●模塊規模應該適中;

●深度、寬度、扇入和扇出都應適當;

●模塊的作用域應該在控制域之內;

●降低模塊之間接口的復雜程度;

●設計單入口、單出口的模塊;

●模塊功能應該可以預測。

小提示

扇出過大意味著模塊過分復雜,需要控制和協調過多的下級模塊;扇出過小時可以把下級模塊進一步分解成若干個子功能模塊,或者合并到它的上級模塊中去。扇入越大則共享該模塊的上級模塊數目越多,這是有好處的,但是,不能犧牲模塊的獨立性而單純追求高扇入。大量實踐表明,設計得好的軟件結構通常頂層扇出比較高,中層扇出較少,底層模塊有高扇入。

3.詳細設計

(1)詳細設計的任務。

詳細設計的任務是為軟件結構圖中的每一個模塊確定實現算法和局部數據結構,用某種選定的表達工具表示算法和數據結構的細節。

(2)詳細設計的工具。

常見的過程設計工具包括以下幾種。

●圖形工具:程序流程圖、N-S、PAD及HIPO。

●表格工具:判定表。

●語言工具:PDL(偽碼)。

真題精選

從工程管理角度,軟件設計一般分兩步完成,它們是______。

A)概要設計與詳細設計

B)數據設計與接口設計

C)軟件結構設計與數據設計

D)過程設計與數據設計

【答案】 A

【解析】從工程管理角度看,軟件設計分兩步完成:概要設計與詳細設計。概要設計將軟件需求轉化為軟件體系結構、確定系統級接口、全局數據結構或數據庫模式;詳細設計確立每個模塊的實現算法和局部數據結構,用適當方法表示算法和數據結構的細節。

考點15 軟件測試

軟件測試是保證軟件質量的重要手段,其主要過程涵蓋了整個軟件生命期的過程,包括需求定義階段的需求測試、編碼階段的單元測試、集成測試,以及其后的確認測試、系統測試,驗證軟件是否合格、能否交付用戶使用等。

真考鏈接

考核概率為75%,考生要熟記該考點內容,尤其是軟件測試的目的和準則,并理解白盒測試與黑盒測試以及它們的測試用例設計。

1.軟件測試的目的及準則

(1)軟件測試的目的。

軟件測試是為了發現錯誤而執行程序的過程。

一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的用例。

一個成功的測試是發現了至今尚未發現的錯誤的測試。

(2)軟件測試的準則。

鑒于軟件測試的重要性,要做好軟件測試,設計出有效的測試方案和好的測試用例,軟件測試人員需要充分理解和運用軟件測試的一些基本準則:

●所有測試都應追溯到用戶需求;

●嚴格執行測試計劃,排除測試的隨意性;

●充分注意測試中的群集現象;

●程序員應避免檢查自己的程序;

●窮舉測試不可能;

●妥善保存測試計劃、測試用例、出錯統計和最終分析報告,為日后的維護提供方便。

2.軟件測試技術和方法綜述

軟件測試的方法是多種多樣的,對于軟件測試方法和技術,可以從不同角度加以分類。

若從是否需要執行被測軟件的角度,可以分為靜態測試和動態測試方法。若按照功能劃分,可以分為白盒測試盒和黑盒測試。

(1)靜態測試與動態測試。

靜態測試不實際運行軟件,主要通過人工進行分析,包括代碼檢查、靜態結構分析、代碼質量度量等。其中代碼檢查分為代碼審查、代碼走查、桌面檢查、靜態分析等具體形式。

動態測試是基于計算機的測試,是為了發現錯誤而執行程序的過程。設計高效、合理的測試用例是動態測試的關鍵。

測試用例就是為測試設計的數據,由測試輸入數據和預期的輸出結果兩部分組成。測試用例的設計方法一般分為黑盒測試方法和白盒測試方法兩類。

(2)白盒測試方法與測試用例設計。

白盒測試也稱結構測試或邏輯驅動測試,它根據程序的內部邏輯來設計測試用例,檢查程序中的邏輯通路是否都按預定的要求正確地工作。

白盒測試的主要方法有邏輯覆蓋測試、基本路徑測試等。

(3)黑盒測試方法與測試用例設計。

黑盒測試也稱為功能測試或數據驅動測試,它根據規格說明書的功能來設計測試用例,檢查程序的功能是否符合規格說明的要求。

黑盒測試的主要診斷方法有等價類劃分法、邊界值分析法、錯誤推測法、因果圖法等,主要用于軟件確認測試。

3.軟件測試的實施

軟件測試的實施過程主要有4個步驟,即單元測試、集成測試、確認測試(驗收測試)和系統測試。

(1)單元測試。

單元測試也稱模塊測試,模塊是軟件設計的最小單位,單元測試是對模塊進行正確性的檢驗,以期望能盡早發現各模塊內部可能存在的各種錯位。

(2)集成測試。

集成測試也稱組裝測試,它是對各模塊按照設計要求組裝成的程序進行測試,主要目的是發現與接口有關的錯誤。

(3)確認測試。

確認測試的任務是用戶根據合同進行,確定系統功能和性能是否可接受。確認測試需要用戶積極參與,或者以用戶為主進行。

(4)系統測試。

系統測試是將軟件系統與硬件、外設或其他元素結合在一起,對整個軟件系統進行測試。

系統測試的內容包括功能測試、操作測試、配置測試、性能測試、安全測試和外部接口測試等。

真題精選

下列敘述中正確的是______。

A)軟件測試應該由程序開發者來完成

B)程序經調試后一般不需要再測試

C)軟件維護只包括對程序代碼的維護

D)以上三種說法都不對

【答案】D

【解析】程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于一定的調試工具去找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命周期,調試主要在開發階段。為了實現更好的測試效果,應該由獨立的第三方來構造測試。軟件的運行和維護是指將已交付的軟件投入運行,并在運行使用中不斷地維護,根據提出的新需求進行必要而且可能的擴充和刪改。

考點16 程序的調試

在對程序進行了成功的測試之后將進行程序的調試。程序調試的任務是診斷和改正程序中的錯誤。

真考鏈接

考核概率為30%,考生要熟記該考點內容,尤其是程序調試的任務及調試方法。

本節主要講解了程序調試的概念和方法。

1.程序調試的基本概念

調試是作為成功測試之后出現的步驟,也就是說,調試是在測試發現錯誤之后排除錯誤的過程。軟件測試貫穿整個軟件生命期,而調試主要在開發階段。

程序調試活動由兩部分組成:

●根據錯誤的跡象確定程序中錯誤的確切性質、原因和位置;

●對程序進行修改,排除這個錯誤。

(1)調試的基本步驟。

①錯誤定位;

②修改設計和代碼,以排除錯誤;

③進行回歸測試,防止引入新的錯誤。

(2)調試的原則。

調試活動由對程序中錯誤的定性、定位和排錯兩部分組成,因此調試原則也從以下兩個方面考慮:

①確定錯誤的性質和位置的原則;

②修改錯誤的原則。

2.軟件調試方法

調試的關鍵在于推斷程序內部的錯誤位置及原因。從是否跟蹤和執行程序的角度,類似于軟件測試,分為靜態調試和動態調試。靜態調試主要是指通過人的思維來分析源程序代碼和排錯,是主要的調試手段,而動態調試是輔助靜態調試的。

主要的軟件調試方法有強行排錯法、回溯法和原因排除法。其中強行排錯法是傳統的調試方法,回溯法適用于小規模程序的排錯,原因排除法是通過演繹和歸納以及二分法來實現的。

真題精選

軟件調試的目的是______。

A)發現錯誤

B)更正錯誤

C)改善軟件性能

D)驗證軟件的正確性

【答案】B

【解析】軟件調試的目的是診斷和改正程序中的錯誤,改正以后還需要進行測試。

常見問題

軟件設計的重要性和地位主要有哪些?

軟件開發階段(設計、編碼、測試)占軟件項目開發總成本的大部分,是在軟件開發中形成質量的關鍵環節;軟件設計是開放階段最重要的步驟,是將需求準確地轉化為完整的軟件產品或系統的唯一途徑;軟件設計作出的決策,最終影響軟件實現的成敗;設計是軟件工程和軟件維護的基礎。

主站蜘蛛池模板: 江北区| 成武县| 舒城县| 宿迁市| 老河口市| 石阡县| 美姑县| 剑阁县| 曲松县| 昭苏县| 麦盖提县| 巫山县| 余庆县| 万载县| 红原县| 武宁县| 南康市| 林西县| 屏东市| 连平县| 淅川县| 武义县| 垣曲县| 莎车县| 阳朔县| 新闻| 崇明县| 万宁市| 阳泉市| 新郑市| 柯坪县| 连城县| 华宁县| 阿合奇县| 龙口市| 榆中县| 南靖县| 皋兰县| 丰原市| 克什克腾旗| 隆安县|