




已閱讀5頁,還剩64頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程第一章學習輔導 一、填空練習 1 按軟件的功能可將軟件分成(系統軟件 支撐軟件 應用軟件)等三類。 2 按軟件規模可將軟件分成(微型 小型 中型 大型 甚大型 極大型)等六類。 3 按軟件工作方式可將軟件分成(實時處理軟件 分時軟件 交互式軟件 批處理軟件 )等四類。 4 按軟件軟服務對象可將軟件分成(項目軟件 產品軟件)等兩類。 5 軟件危機中遇到的主要問題有(軟件開發無計劃 軟件需求不充分 軟件開發過程無規范 軟件產品無評測 )等四類。手段 6 軟件工程過程通常包括(軟件規格說明 軟件開發 軟件確認 軟件演進)等四種基本的過程活動。 7 軟件工程的三個要素是(方法 工具 過程)。 二、用框圖說明軟件工程目標之間的關系。 軟件工程第二章學習輔導2.1 基于計算機的系統通常把基于計算機的系統定義為某些元素的一個集合,并把這些元素組織起來以實現某種方法、過程或借助處理信息進行控制。這些系統元素以各種方式組合來進行信息的轉換。基于計算機的系統可以成為一個更大的基于計算機系統中的一個元素,并稱為那個更大系統的宏元素。系統工程師(亦稱為系統分析員)的作用就是要在總的系統(宏元素)層次結構的環境中定義某一特定基于計算機系統的元素。2.2 計算機系統工程計算機系統工程是一個問題求解活動,目的是揭示、分析所期望的功能,并把它們分配到各個系統元素中去,即選擇一個特定的系統配置,并把功能與性能規格分配給硬件、軟件、人、數據庫、文檔和過程。 2.2.1 硬件和硬件工程選擇某種硬件元件的組合以構成基于計算機系統的硬件元素。在選擇硬件時,主要考慮以下幾個特性:(1)對各種元件打包,形成一些單獨的構件塊;(2)各個元件之間的接口標準;(3)可以有多種供權衡使用的候選方案;(4)性能、成本、有效性相對地比較容易確定。2.2.2 軟件和軟件工程軟件實現了完成系統功能所需要的處理算法。一般地,處理算法變換輸入數據或控制信息,并生成輸出到其它系統元素或宏元素中去的數據或控制信息。軟件工程是一門有關開發高質量的基于計算機系統的軟件的學科 。 2.2.3 人與人類工程早期的基于計算機的系統總是把著眼點放在硬件與軟件易于實現上,并強迫用戶按系統規定的方式與系統通信,而完全不考慮人是否容易理解。今天,已經把用戶友好性放在優先的位置。基于計算機系統的人類工程已成為系統開發申一個重要的步驟。 人類工程是應用從心理學和方法論導出的知識來確定和設計高質量人機對話界面HCI(Human Conversation Interface)的多學科活動。人類工程過程包括以下步驟:(1)活動分析 (2)語義分析和設計:對用戶要求的動作和機器產生的動作進行精確定義。 (3)語法和詞法設計:標識與描述各個動作和命令的特定形式,然后設計每一動作或命令的硬件與軟件實現。(4)用戶環境設計:將硬件、軟件和其它系統生成元素組合起來形成用戶環境。環境包括物理設備以及HCI。(5)原型:從人的角度出發來評價HCI。2.2.4 數據庫和數據庫工程并不是所有的基于計算機的系統都使用數據庫,但對于使用數據庫的系統來說,這種信息倉庫往往是所有功能的核心。數據庫工程(包括數據庫分析、設計和實現),是一門技術學科,它的應用是在數據庫的信息域定義完成之后。 2.3 系統需求識別系統分析的目標(1)識別用戶要求;(2)評價系統的可行性;(3)進行經濟分析和技術分析;(4)把功能分配給硬件、軟件、人、數據庫和其它系統元素;(5)建立成本和迸度限制;(6)生成系統規格說明,形成所有后續工程的基礎。2.4 可行性研究可行性研究主要集中在以下四個方面: (1)經濟可行性。確定待開發系統是否值得投資開發。(2)技術可行性。對待開發的系統進行功能、性能和限制條件的分析,確定在現有的資源的條件下,技術風險有多大,系統是否能實現。 (3)法律可行性。確認待開發系統可能會涉及的任何侵犯、妨礙、責任等問題。(4)抉擇。對系統開發的不同方案進行比較評估。成本和時間的限制,會給方案的選擇帶來局限性,對于一些合理的方案都應加以考慮。2.5 成本-效益分析從經濟角度評價開發一個新的軟件項目是否可行。成本-效益分析首先是估算待開發系統的開發成本,然后與可能取得的效益(有形的和無形的)進行比較和權衡。有形的效益可以用貨幣的時間價值、投資回收期、純收入等指標進行度量。 貨幣的時間價值 通常用利率表示貨幣的時間價值。設年利率為i,現已存入P元,則n年后可得錢數為F=P(1十i)n。反之,若n年后能收入F元,那么這些錢現在的價值是 P=F/(1十i)n投資回收期 投資回收期是衡量一個開發工程價值的經濟指標。投資回收期就是使累計的經濟效益等于最初的投資所需要的時間。投資回收期越短,就能越快獲得利潤。 純收入 工程的純收入是衡量工程價值的另一項經濟指標。純收入就是在整個生存期之內系統的累計經濟效益(折合成現在值)與投資之差。 2.6 技術分析技術分析提交系統技術可行性評估。指明為完成系統的功能和性能需要什么技術?需要哪些新材料、方法、算法、或者過程?有什么開發風險?這些技術問題對成本的影響如何?用于技術分析的方法,有數學模型和優化技術、概率和統計、排隊論、控制論等。 2.7 分配與權衡一旦解決了與分析任務相關的問題,就應開始考慮候選的解決方案。每一個系統功能,與其必要的一些性能和接口特性一起,分配給一個或多個系統元素。2.8 系統結構的模塊化用圖形符號描繪系統里面的每個部件,即用流程圖對現有系統作概括的物理模型描述。系統流程圖的功能 (1)制作系統流程圖的過程是系統分析員全面了解系統業務處理概況的過程,是系統分析員進一步分析的依據。 (2)系統流程圖是系統分析員、管理員、業務員相互交流的工具。 (3)可利用流程圖來分析業務流程的合理性。2.9 系統定義與評審系統規格說明是作為硬件工程、軟件工程、數據庫工程、人類工程的基礎而使用的一個文檔。它描述了系統的功能和性能,以及管理該系統開發的一些限制條件。 系統規格說明的主要內容(1)引言 文檔的范圍和目的 概述:目標、限制條件(2)功能和數據描述 系統結構:結構環境圖(ACD)、ACD描述(3)子系統描述 對子系統的結構圖描述:結構流程圖(AFD)、系統模塊描述、性能問題、設計限制條件、系統部件的分配 結構詞典 結構互連圖及其描述(4)系統模型化和模擬結果 用于模擬的系統模型 模擬結果 特殊的性能問題(5)項目問題 項目開發成本 項目進度安排(6)附錄系統定義的評審 評審由開發人員和用戶合作進行,要保證:(1)正確地定義了項目的范圍;(2)適當地定義了功能、性能和接口;(3)環境分析和開發風險證明了系統是可行的;(4)開發人員與用戶對系統目標達成了共識。軟件工程第三章學習輔導 3.1 軟件需求分析的任務需求分析所要做的工作是深入描述軟件的功能和性能,確定軟件設計的限制和軟件同其他系統元素的接口細節,定義軟件的其他有效性需求。 3.2 需求分析的過程需求分析工作可分成四個方面: 1.對問題的識別:確定對目標系統的綜合要求,即軟件的需求。 2.分析與綜合:最終綜合成系統的解決方案,給出目標系統的詳細邏輯模型。 3.制定規格說明:編制需求分析的文檔。 4.評審:對功能的正確性、完整性和清晰性,需求給予評價。 3.3 軟件需求分析的原則必須能夠表達和理解問題的數據域和功能域。必須按自頂向下、逐層分解的方式對問題進行分解和不斷細化。要給出系統的邏輯視圖和物理視圖。3.4 分析員和用戶的責任系統分析員處在用戶和高級程序員之間,負責溝通用戶和開發人員的認識和見解,起著橋梁的作用。 用戶應密切配合分析員的工作。用戶對數據處理工作的考慮、對軟件的意見和要求是需求分析的寶貴原始資料。3.5 軟件需求分析方法需求分析方法由對軟件的數據域和功能域的系統分析過程及其表示方法組成。它定義了表示系統邏輯視圖和物理視圖的方式。最終建立一個待開發軟件的抽象模型,即目標系統的邏輯模型。 3.6 原型化方法 在軟件開發過程中,原型是軟件的一個早期可運行的版本,它反映最終系統的部分重要特性。用戶在試用原型系統的過程中做出反應和評價。然后開發者根據用戶的意見對原型加以改進。隨著不斷試驗、糾錯、使用、評價和修改,獲得新的原型版本,如此周而復始,從而提高了最終產品的質量。 3.7 結構化分析方法結構化分析方法就是用抽象模型的概念,按照軟件內部數據傳遞、變換的關系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現的軟件為止。 結構化分析方法使用的主要工具:數據流圖、數據詞典、結構化英語、判定表和判定樹。 數據流圖 (DFD,Data Flow Diagram) 數據流圖也稱為Bubble Chart或Data Flow Graph。是描述數據處理過程的工具。數據流圖從數據傳遞和加工的角度,以圖形的方式刻畫數據流從輸入到輸出的移動變換過程。數據詞典 (DD,Data Dictionary)數據詞典的任務是對于數據流圖中出現的所有被命名的圖形元素在數據詞典中作為一個詞條加以定義,使得每一個圖形元素的名字都有一個確切的解釋。數據詞典中所有的定義應是嚴密的、精確的,不可有半點含混,不可有二義性。結構化英語(Structured English)結構化英語也稱為PDL,是一種介于自然語言和形式化語言之間的半形式化語言。它是在自然語言基礎上加了一些限制而得到的語言,是使用有限的詞匯和有限的語句來描述加工邏輯。 判定表(Decision Table) 用表格表達在什么條件下,系統應完成哪些操作,顯得十分清楚、準確、一目了然。這是用語言說明難以準確、清楚表達的。但是用判定表描述循環比較困難。有時,判定表可以和結構化英語結合起來使用。判定樹(Decision Tree)判定樹也是用來表達加工邏輯的一種工具。有時侯它比判定表更直觀。用它來描述加工,很容易為用戶接受。 軟件工程第四章學習輔導 4.1 軟件設計的目標和任務一旦確定了軟件需求之后,就進入開發階段。開發階段由三個互相關聯的步驟組成:設計、實現(編碼)和測試。每個步驟都按某種方式進行信息變換,最后得到有效的計算機軟件。開發階段的信息流如圖所示。4.1.1 軟件設計在開發階段中的重要性除了維護階段以外,開發階段占軟件工程總成本的75%以上。開發階段的決策將最終影響軟件實現的成敗,影響軟件維護的難易程度。軟件設計是軟件開發階段最重要的步驟。它是軟件開發中質量得以保證的關鍵步驟。設計提供了軟件的表示,使得軟件的質量評價成為可能。軟件設計又是將用戶要求準確地轉化成為最終的軟件產品的唯一途徑。4.1.2 軟件設計任務軟件設計是一個把軟件需求變換成軟件表示的過程。最初這種表示只是描繪出軟件的總的框架,然后進一步細化,在此框架中填入細節,把它加工成在程序細節上非常接近于源程序的軟件表示。軟件設計分兩步完成。首先做概要設計,將軟件需求轉化為數據結構和軟件的系統結構。然后是詳細設計,即過程設計。通過對結構表示進行細化,得到軟件的詳細的數據結構和算法。在概要設計過程中需要完成的工作具體有:(1)制定規范在進入軟件開發階段之初,首先應為軟件開發組制定在設計時應該共同遵守的標準,以便協調組內各成員的工作。它包括:1)閱讀和理解軟件需求說明書,在給定預算范圍內和技術現狀下,確認用戶的要求能否實現。若不能實現,則需明確實現的條件,從而確定設計的目標,以及它們的優先順序。2)根據目標確定最合適的設計方法。3)規定設計文檔的編制標準,包括文檔體系、用紙及樣式、記述詳細的程度、圖形的畫法等。4)規定編碼的信息形式(代碼體系),與硬件、操作系統的接口規約,命名規則等。(2)軟件系統結構的總體設計在需求分析階段,已經從系統開發的角度出發,把系統按功能逐次分割成層次結構,使每一部分完成簡單的功能且各個部分之間又保持一定的聯系,這就是功能設計。在設計階段,基于這個功能的層次結構把各個部分組合起來成為系統。它包括:1)采用某種設計方法,將一個復雜的系統按功能劃分成模塊的層次結構。2)確定每個模塊的功能,建立與已確定的軟件需求的對應關系;3)確定模塊間的調用關系。4)確定模塊間的接口,即模塊間傳遞的信息。設計接口的信息結構。5)評估模塊劃分的質量及導出模塊結構的規則。(3)處理方式設計1)確定為實現軟件系統的功能需求所必需的算法,評估算法的性能。2)確定為滿足軟件系統的性能需求所必需的算法和模塊間的控制方式(性能設計)。性能主要是指以下四個指標:周轉時間:即一旦向計算機發出要求處理的請求之后,從輸入開始,經過處理直到輸出結果為止的整個時間。響應時間:這是對于實時聯機系統的性能需求。當終端用戶向計算機發出處理請求之后,從輸入開始到輸出最終結果中間的一段時間內,用戶需要多次對計算機進行輸入輸出,而一次輸入輸出的時間就是響應時間。吞吐量:單位時間內能夠處理的數據量叫做吞吐量。這是表示系統能力的指標。精度:在進行科學計算或工程計算時,運算精確度的要求。3)確定外部信號的接收發送形式。(4)數據結構設計確定軟件涉及的文件系統的結構以及數據庫的模式、子模式,進行數據完整性和安全性的設計。它包括:1)確定輸入、輸出文件的詳細的數據結構。2)結合算法設計,確定算法所必需的邏輯數據結構及其操作。3)確定對邏輯數據結構所必需的那些操作的程序模塊(軟件包)。限制和確定各個數據設計決策的影響范圍。4)若需要與操作系統或調度程序接口所必須的控制表等數據時,確定其詳細的數據結構和使用規則。5)數據的保護性設計防衛性設計:在軟件設計中插入自動檢錯,報錯和糾錯的功能。一致性設計:有兩個方面。其一是保證軟件運行過程中所使用的數據的類型和取值范圍不變。其二是在并發處理過程中使用封鎖和解除封鎖機制保持數據不被破壞。冗余性設計:針對同一問題,由兩個開發者采用不同的程序設計風格、不同的算法設計軟件,當兩者運行結果之差不在允許范圍內時,利用檢錯系統予以糾正,或使用表決技術決定一個正確的結果,以保證軟件容錯。(5)可靠性設計可靠性設計也叫做質量設計。軟件可靠性是指程序和文檔中的錯誤少。軟件越使用可靠性越高。但是在運行過程中,為了適應環境的變化和用戶新的要求,需要經常對軟件進行改造和修正,這就是軟件的維護。由于軟件的維護往往會產生新的故障,所以要求在軟件開發期間應當盡早找出差錯,并在軟件開發的一開始就要確定軟件可靠性和其他質量指標,考慮相應措施,以使得軟件易于修改和易于維護。(6)編寫概要設計階段的文檔概要設計階段完成時應編寫以下文檔:概要設計說明書。給出系統目標、總體設計、數據設計、處理方式設計、運行設計、出錯設計等。數據庫設計說明書。給出所使用數據庫簡介、數據模式設計、物理設計等。用戶手冊。對需求分析階段編寫的初步的用戶手冊進行審訂。制定初步的測試計劃。對測試的策略、方法和步驟提出明確的要求。(7)概要設計評審在完成以上幾項工作之后,應當組織對概要設計工作的評審。評審的內容包括:可追溯性:即分析該軟件的系統結構、子系統結構,確認該軟件設計是否覆蓋了所有已確定的軟件需求,軟件每一成分是否可追溯到某一項需求。接口:即分析軟件各部分之間的聯系,確認該軟件的內部接口與外部接口是否已經明確定義。模塊是否滿足高內聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內。風險:即確認該軟件設計在現有技術條件下和預算范圍內是否能按時實現。實用性:即確認該軟件設計對于需求的解決方案是否實用。技術清晰度:即確認該軟件設計是否以一種易于翻譯成代碼的形式表達。可維護性:從軟件維護的角度出發,確認該軟件設計是否考慮了方便未來的維護。質量:即確認該軟件設計是否表現出良好的質量特征。各種選擇方案:看是否考慮過其他方案,比較各種選擇方案的標準是什么。限制:評估對該軟件的限制是否現實,是否與需求一致。其他具體問題:對于文檔、可測試性、設計過程等等進行評估。在這里需要特別注意:軟件系統的一些外部特性的設計,例如軟件的功能、一部分性能、以及用戶的使用特性等,在軟件需求分析階段就已經開始。這些問題的解決,多少帶有一些“怎么做”的性質,因此有人稱之為軟件的外部設計。在詳細設計過程中需要完成的工作是:(1)確定軟件各個組成部分內的算法以及各部分的內部數據組織。(2)選定某種過程的表達形式來描述各種算法。(3)進行詳細設計的評審軟件設計的最終目標是要取得最佳方案。“最佳”是指在所有候選方案中,就節省開發費用,降低資源消耗,縮短開發時間的條件,選擇能夠贏得較高的生產率、較高的可靠性和可維護性的方案。在整個設計的過程中,各個時期的設計結果需要經過一系列的設計質量的評審,以便及時發現和及時解決在軟件設計中出現的問題,防止把問題遺留到開發的后期階段,造成后患。在評審以后,必須針對評審中發現的問題,對設計的結果進行必要的修改。4.2 軟件設計基礎4.2.1 自頂向下,逐步細化將軟件的體系結構按自頂向下方式,對各個層次的過程細節和數據細節逐層細化,直到用程序設計語言的語句能夠實現為止,從而最后確立整個的體系結構。4.2.2 軟件結構軟件的結構包括兩部分。其一為程序模塊的層次結構,其二為數據的結構。通常,軟件的體系結構通過一個劃分過程來完成。該劃分過程從需求分析確立的目標系統的模型出發,對整個問題進行分割,使其每一部分用一個或幾個軟件成分加以解決,從而解決整個問題。對于同一組軟件需求,用不同的軟件設計方法,可能得到不同的軟件結構。每一種方法都有自己特定的評優準則,但對于使用不同的設計方法得到的軟件結構,很難回答哪一個更“好”些。只能通過一些結構特征做簡單的評價。4.2.3 程序結構程序結構表明了程序各模塊的組織情況,它通常是樹狀結構或網狀結構,并蘊含了在程序控制上的層次關系。但要注意的是,程序結構是軟件的過程表示,但并未表明軟件的某些過程性特征。比如,軟件的動態特性,在程序結構中就未明確體現。(1)程序的樹狀結構和網狀結構由模塊連接而得到的程序結構最普通的形式就是樹狀結構和網狀結構。在樹狀結構中,位于最上層的根都是頂層模塊,它是程序的主模塊。與其聯系的有若干下屬模塊,各下屬模塊還可以進一步引出更下一層的下屬模塊。樹狀結構的特點是:整個結構只有一個頂層模塊,而對于任何一個下屬模塊來說,它只有一個上級模塊,而且同一層模塊之司不發生聯系。在網狀結構中,任意兩個模塊間都可以有雙向的關系。由于不存在上級模塊和下屬模塊的關系,也就分不出層次來。任何兩個模塊都是平等的,沒有從屬關系。網狀結構十分復雜,處理起來會引起許多麻煩。在開發軟件的實踐中,通常采用樹狀結構,而不采用網狀結構。(2)結構圖(Structure Chart 簡稱SC)結構圖是精確表達程序結構的圖形表示方法。它清楚地反映出程序中模塊目的層次調用關系和聯系:不僅嚴格地定義了各個模塊的名字、功能和接口,而且還反映了設計思想。即它以特定的符號表示模塊、模塊目的調用關系和模塊間信息的傳遞。結構圖的主要內容有:1)模塊:在結構圖中,模塊用矩形框表示,并用模塊的名字標記它。模塊的名字應當能夠表明該模塊的功能。對于現成的模塊,則以雙縱邊矩形框表示。2)模塊的調用關系和接口:在結構圖中,兩個模塊之間用單向箭頭聯結。箭頭從調用模塊指向所調用模塊,表示調用模塊調用了所調用模塊。但其中隱含了一層意思,就是執行所調用模塊完成之后,控制又返回到調用模塊。3)模塊間的信息傳遞:當一個模塊調用另一個模塊時,調用模塊把數據或控制信息傳送給所調用模塊,以使所調用模塊能夠運行。而在執行所調用模塊的過程中又把它產生的數據或控制信息回送給調用模塊。為了表示在模塊之間傳遞的數據或控制信息,在聯結模塊的箭頭旁邊另給出短箭頭,并且用尾端帶有空心圓的短箭頭表示數據信息,用尾端帶有實心圓的短箭頭表示控制信息。通常在短箭頭附近應注有信息的名字。4)輔助符號:當模塊A有條件地調用另一個模塊B時,在模塊A的箭頭尾部標以一個菱形符號。當一個模塊A反復地調用模塊C和模塊D時,在調用箭頭尾部則標以一個弧形符號。5)結構圖的形態特征軟件系統的分層模塊結構圖中,上級模塊調用下級模塊。它們之間存在主從關系,即自上而下“主宰”,自下而上“從屬”。而同一層的模塊之間沒有這種主從關系。結構圖的深度:在多層次的結構圖中,其模塊結構的層次數稱為結構圖的深度。結構圖的深度在一定意義上反映了程序結構的規模和復雜程度。結構圖的寬度:結構圖中同一層模塊的最大模塊數稱為結構圖的寬度模塊的扇入和扇出:扇出表示一個模塊直接調用(或控制)的其他模塊數目。扇入則定義為調用(或控制)一個給定模塊的模塊個數。多扇出意味著需要控制和協調許多下屬模塊。而多扇入的模塊通常是公用模塊。4.2.4 數據結構數據結構是數據的各個元素之間的邏輯關系的一種表示。因為信息的結構總要影響最終的過程設計,所以在軟件結構的設計中,數據結構與程序結構同等重要。數據結構設計應確定數據的組織、存取方式、相關程度、以及信息的不同處理方法。4.2.5 軟件過程軟件過程著重描述各個模塊的處理細節。軟件過程必須提供精確的處理說明,包括事件的順序、正確的判定點、重復的操作直至數據的組織和結構等等。軟件過程遵從程序結構的主從關系,它也是層次化的。4.2.6 模塊化軟件系統的層次結構正是模塊化的具體體現。將整個軟件劃分成若干單獨命名和可編址的部分,稱之為模塊。可以將這些模塊組裝起來以滿足整個問題的需求。如果把一個大而復雜的問題分解成一些易于處理的小問題后,解決起來就會容易得多。這是模塊化的依據。如果模塊是相互獨立的,當模塊變得越小,每個模塊的內部結構就變得越簡單,花費的工作量也越低。那么,把模塊逐漸地分小,它所需要的工作量將逐漸變小;但當模塊數增加時,模塊間的聯系也隨之增加,把這些模塊聯接起來的工作量也隨之增加。一般存在一個模塊個數M,它使得總的開發成本達到最小。4.2.7 抽象化對軟件系統進行模塊設計的時候,可以有不同的抽象層次。在最高的抽象層次上,可以使用問題所處環境的語言概括地描述問題的解法。而在較低的抽象層次上,則采用過程化的方法。但最后在最低的抽象層次上,應使用能夠直接實現的方式來描述這個解法。4.2.8 信息隱蔽信息隱蔽是指,每個模塊的實現細節對于其他模塊來說是隱蔽的。即模塊中所包含的信息(包括數據和過程)不允許其他不需要這些信息的模塊使用。4.3 模塊的獨立性4.3.1 模塊 (Module)一個大而復雜的軟件系統,也可以根據其功能,劃分成許多較小的單元,或較小的程序,這些較小的單元就是模塊。模塊具有三個基本屬性:(1)功能:即指該模塊實現什么功能。(2)邏輯:即描述模塊內部怎么做。(3)狀態:即該模塊使用時的環境和條件。4.3.2 模塊獨立性 (Module Independence)模塊的獨立性是指軟件系統中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統中其他的模塊的接口是簡單的。一般采用兩個準則度量模塊獨立性。即模塊間的耦合和模塊的內聚。4.3.3 耦合性 (Coupling)耦合是模塊之間的相對獨立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯系越多,耦合性就越高,而其模塊獨立性就越弱。4.3.4 內聚性 (Cohesion)內聚是模塊功能強度(一個模塊內部各個元素彼此結合的緊密程度)的度量。一個模塊內部各個元素之間的聯系越緊密,則它的內聚性就越高。4.4 結構化設計方法 (Structured Design,SD)結構化設計方法是基于模塊化、自頂向下逐層細化、結構化程序設計等程序設計技術基礎上發展起來的。該方法實施的要點是:(1)首先研究、分析和審查數據流圖。從軟件的需求規格說明中弄清數據流加工的過程。(2)然后根據數據流圖決定問題的類型。數據處理問題典型的類型有兩種:變換型和事務型。針對兩種不同的類型分別進行分析處理。(3)由數據流圖推導出系統的初始結構圖。(4)利用一些試探性原則來改進系統的初始結構圖,直到得到符合要求的結構圖為止。(5)修改和補充數據詞典。(6)制定測試計劃。結構化設計可以很方便地將用數據流圖表示的信息轉換成程序結構的設計描述。4.5 數據設計及文件設計4.5.1 數據設計的原則(1)用于軟件的系統化方法也適用于數據。(2)要確定所有的數據結構和在每種數據結構上施加的操作。(3)應當建立一個數據詞典并用它來定義數據和軟件的設計。(4)低層數據設計的決策應推遲到設計過程的后期進行。(5)數據結構的表示只限于那些必須直接使用該數據結構內數據的模塊才能知道。(6)應當建立一個存放有效數據結構及相關操作的庫。(7)軟件設計和程序設計語言應當支持抽象數據類型的定義和實現。4.5.2 在設計程序結構時數據結構的選擇方法數據結構的選擇應使程序的控制結構簡潔,即必須減少需要的存儲容量和執行時間。存儲容量=需要的數據區容量+要求的執行命令區容量執行命令區容量=程序的執行命令行數*目標轉換率*平均指令長度目標轉換率,即一行源程序相當于多少行目標代碼。4.5.3 文件設計文件設計是指數據存儲文件設計,其主要工作就是根據使用要求、處理方式、存儲的信息量、數據的活動性,以及所能提供的設備條件等,來確定文件類別,選擇文件媒體,決定文件組織方法,設計文件記錄格式,并估算文件的容量。4.6 過程設計過程設計也叫做詳細設計或程序設計,它不同于編碼或編寫程序。在過程設計階段,要決定各個模塊的實現算法,并精確地表達這些算法。表達過程規格說明的工具叫做詳細設計工具,它可以分為以下三類:圖形工具:把過程的細節用圖形方式描述出來。表格工具:用一張表來表達過程的細節。這張表列出了各種可能的操作及其相應的條件。即描述了輸入、處理和輸出信息。語言工具:用某種類高級語言(偽碼)來描述過程的細節。4.6.1 程序流程圖 (Program Flow Chart)程序流程圖也稱為程序框圖。五種基本控制結構:(1)順序型(2)選擇型(3)先判定(while)型循環(4)后判定(until)型循環(5)多情況(case)型選擇 4.6.2 N-S 圖一種符合結構化程序設計原則的圖形描述工具,叫做盒圖,也叫做N-S圖。4.6.3 PAD (Problem Analysis Diagram)PAD是用結構化程序設計思想表現程序邏輯結構的圖形工具。4.6.4 判定表能清晰表達復雜的條件組合與應做動作之間的對應關系的邏輯表。4.6.5 PDL (Program Design Language)PDL是一種用于描述功能模塊的算法設計和加工細節的語言。是一種偽碼。一般地,偽碼的語法規則分為“外語法”和“內語法”。外語法符合一般程序設計語言常用語句的語法規則;內語法可以用英語中一些簡單的句子、短語和通用的數學符號來描述程序應執行的功能。軟件工程第五章學習輔導 數據是軟件的重要組成部分。在許多應用領域中,問題的結構層次清楚,輸入數據、輸出數據和內部存儲信息的數據結構都有一定的結構關系,面向數據結構的分析與設計方法就是利用這些結構作為軟件開發的基礎。Jackson系統開發(JSD,Jackson System Development)方法是一種典型的面向數據結構的分析和設計方法。早期的Jackson方法用于小系統的設計,稱之為Jackson結構程序設計方法,簡稱JSP方法。它是按輸入、輸出和內部信息的數據結構進行軟件設計的,即把數據結構的描述映射成程序結構描述。若數據結構內有重復子結構,則對應程序一定有循環;若數據結構有選擇性子結構,則對應程序一定有判定,以此揭示數據結構和程序結構之間的內在關系,設計出反映數據結構的程序結構。但是,當把JSP方法用于大系統設計時:就會出現大量復雜的難以對付的結構沖突。因此,促使Jackson提出了JSD方法,即Jackson系統開發方法。JSD方法以活動(即事件)為中心,一連串活動的順序組合構成進程。系統模型抽象為一組以通信方式互相聯系的進程。5.1 進程模型在許多情況下,從現實世界的活動抽象而形成系統模型時,時序往往是一個必須要考慮的重要因素。每一個活動的發生必須遵守一定的時間順序。因此,在相應的系統模型抽象中,自然也就必須要關注到這些活動發生的先后次序。進程就是依一定次序安排的一串活動。JSD的系統模型是互相通信的一組進程的集合。進程間的通信可采用三種方式:(1)進程活動同步發生。(2)通過數據流通道發送/接收活動發生。(3)訪問公用存儲信息。這樣建立的JSD進程模型不能直接在計算機上運行,因為可能出現太多的進程和太長的進程生存期,會使系統模擬無法實現。因此,需要確認模型,預先提出一些初始條件,把系統模型控制在一定限度的范圍,便之能夠有效地在計算機上運行。5.2 JSD方法的步驟JSD方法實際上是支持軟件分析與設計的一組連續的技術步驟:(1)實體動作分析:從問題的描述中,提取軟件系統要產生和運用的實體(人、物或組織),以及現實世界作用于實體上的動作(事件)。(2)實體結構分析:把作用于實體的動作或由實體執行的動作,按時間發生的先后次序排序,構成進程,并用一個層狀的Jackson結構圖表示。(3)定義初始模型:把實體和動作表示成一個進程模型,定義模型與現實世界的聯系。模型系統的規格說明可用系統規格說明圖(SSD,System Specification Diagram)來表示。(4)功能描述:說明與已定義的動作相對應的功能,為已定義的動作加入功能函數。(5)決定系統時間特性:對進程加入時間因素,對進程調度特性進行評價和說明。(6)實現:設計組成系統的硬件和軟件,實現系統的原型。JSD方法的前三步屬于需求分析階段,后三步屬于設計階段。5.3 實體動作分析分析實體的動作,需要從一段用簡單的自然語言給出的問題描述(通常是一個段落)入手。當選定了實體和動作的時候,實際上已經把要開發系統的范圍劃定了。5.4 實體結構分析在JSD方法中,實體的結構通過在一段時間內的動作來描述實體的歷史情況。 5.5 定義初始模型以上兩步只是現實世界的一種抽象描述,完成的工作計有,選定實體和動作,并用結構圖建立了他們之目的關系。這一步則要對系統構造規格說明,使其成為現實世界的模型。規格說明可用系統規格說明圖(SSD)表示。5.6 功能描述Jackson系統開發方法中功能描述的目的是利用數據流連接和狀態向量連接,把已定義的功能進程連接到系統模型進程,從而擴充系統規格說明圖。在Jackson系統開發方法中定義了三種功能:(1)嵌入功能:此功能把操作分配(或寫入)到模型進程的結構正文內。(2)強制功能,此功能檢查模型進程的狀態向量,并給出輸出結果。(3)交互功能:此功能檢查模型進程的狀態向量,寫入一個施加于模型進程活動的數據流,或引入一個寫出結果的操作。功能進程的輸出就是系統的輸出,可以是報告、對硬件設備的命令、或者任何其他的輸出信息。5.7 決定系統時間特性在這個JSD步驟中,設計人員將定義系統的時間限制。前幾步設計步驟已建立了一個由順序的進程組成的系統,而在此系統中的順序的進程則通過數據流及直接檢查狀態向量進行通信。進程的相對調度將是不確定的。一種能夠用于同步進程的機制叫做時間間隔標志(Time Grain Marker,簡稱TGM)。它是一個數據記錄,表明一個特別時間間隔的存在。5.8 實現用JSP方法得到的程序或進程結構圖,一般都需要求精和優化。因為這種方法是從輸入輸出數據結構導出程序結構圖,因此有些中間處理過程在結構圖中反映不出來。在求精過程中,可以對結構圖進行改進和細化,使之完整和易于實現。軟件工程第六章學習輔導 軟件的用戶界面作為人機接口起著越來越重要的作用。它的好壞直接影響到軟件的壽命。具有友好用戶界面的軟件對于用戶來說,無疑是一種享受。用戶會毫不猶豫地選擇它,即使另一個軟件可能在功能、性能方面與它類似。6.1 用戶界面應具備的特性用戶界面,作為軟件的重要組成部分,應當具備以下三方面的特性。6.1.1 可使用性用戶界面的可使用性是用戶界面設計最重要的也是最基本的目標。它包括:(1)使用的簡單性:用戶界面應能方便地處理各種經常進行的交互對話。問題的輸入格式應當易于理解,附加的信息量少;能直接處理指定媒體上的信息和數據,且自動化程度高;操作簡便;能按用戶要求的表格或圖形輸出,或反饋計算結果到用戶指定的媒體上。(2)用戶界面中所用術語的標準化和一致性:所有專業術語都應標準化;軟件技術用語應符合軟件工程規范;應用領域的術語應符合軟件面向專業的專業標準;在輸入、輸出說明里,同一術語的涵義應完全一致。(3)擁有HELP幫助功能:用戶應能從HELP功能中獲知軟件系統的所有規格說明和各種操作命令的用法,HELP功能應能聯機調用,為用戶隨時提供幫助信息。(4)快速的系統響應和低的系統成本:在使用較多硬件設備并與許多其他軟件系統聯結時,會引入較大的系統開銷。用戶界面應在此情況下有較快的響應速度和較小的系統開銷。(5)用戶界面應具有容錯能力:即應當具有錯誤診斷、修正錯誤以及出錯保護的功能。6.1.2 靈活性(1)考慮到用戶的特點、能力、知識水平,應當使用戶界面能夠滿足不同用戶的要求。因此,對不同的用戶,應有不同的界面形式。其運行抉擇和涉及到的復雜算法對初學者可以是隱蔽的,他們可以不考慮抉擇和算法問題而正常使用這個軟件;但對于高級用戶,可保留實施運行抉擇和選擇算法的權利。(2)用戶可以根據需要制定和修改界面方式。在需要修改和擴充系統功能的情形下,能夠提供動態的對話方式,如修改命令、設置動態的菜單等等。(3)系統能夠按照用戶的希望和需要,提供不同詳細程度的系統響應信息,包括反饋信息、提示信息、幫助信息、出錯信息等等。(4)與其他軟件系統應有標準的界面。6.1.3 復雜性和可靠性(1)用戶界面的復雜性:用戶界面的規模和組織的復雜程度就是界面的復雜性。在完成預定功能的前提下,應當使得用戶界面越簡單越好。但也不是把所有功能和界面安排成線性序列就一定簡單。(2)用戶界面的可靠性:用戶界面的可靠性是指無故障使用的間隔時間。用戶界面應能保證用戶正確、可靠地使用系統,保證有關程序和數據的安全性。6.2 用戶界面設計的任務分析這一部分工作應與軟件系統的需求分析同步進行。它包括用戶特性分析、用戶工作分析、記錄用戶有關系統的概念和術語、確定界面類型等4個步驟。用戶界面是適應人的需要而建立的,因此,首先需要弄清的是什么類型的用戶將要使用這個界面。用戶特性分析的目的是要詳細了解所有用戶的技能和經驗,以便能夠預測他們對不同的界面設計會做出什么反應,針對用戶的能力設計或更改界面。(1)用戶類型:通常,用戶可以分為4種類型。1)外行型:從未用過計算機的用戶。他們不熟悉計算機操作,對系統很少或毫無認識。2)初學型:對計算機有一些經驗,但對新系統不熟悉的用戶。他們需要相當多的支持。3)熟練型:對一個系統有相當多的經驗,能夠熟練操作的用戶。他們需要比初學者較少支持的、可直接迅速進入運行的、經濟的界面。但是,熟練型的用戶不了解系統內部結構,因此,們不能糾正意外錯誤,不能擴充系統能力,但他們擅長操作一個或多個任務。4)專家型:這一類用戶與熟練型用戶相比,他們了解系統內部的構造,有關于系統工作機制的專業知識,具有維護和修改基本系統的能力。專家型要求為他們提供能夠修改和擴充系統能力的復雜的界面。(2)用戶特性度量用戶特性的度量與期望的用戶使用模式及用戶群體能力有關。主要的衡量標準如下:1)用戶使用的頻度:即系統是否經常使用。如果系統不經常使用,或者使用的間隔時間比較長,就需要一個有更多幫助的用戶界面。2)用戶需要自由選用界面的情況:系統功能的使用,可以是強制的,也可以是自由選擇的。因此,所有的界面都應當是良好的,對于可能自由選用的界面,就更應當使用戶使用方便,更具吸引力。3)用戶對計算機的熟悉程度:多數用戶具有一些計算機的使用經驗,但程度不同。對計算機的熟悉程度決定了要使用戶達到熟練程度需要多少訓練。4)用戶知識:有些用戶已有相當多的計算機編程和操作的知識。這些專家型用戶有能力擴展一個系統與其界面的功能,因此,他們需要一種靈活的可編程的或命令語言的界面以滿足他們的要求。5)用戶思維能力:這是對用戶的綜合知識和智力的衡量。用于判斷用戶能自行處理的界面的復雜程度,以及能期望用戶學到多少有關界面的知識。6)用戶的生理能力和技能:用戶群體的生理特征主要是指人的視覺、聽覺、認知及記憶等方面的特點。因此,應該在這一方面去收集信息。特別在設計中出現新的設備和工作環境時,更需要考慮如何去滿足用戶的要求。有關的技能包括鼠標、鍵盤、光筆等的使用技能等。用戶群體的度量可以用打分的辦法來簡單地度量。平均值反映用戶群體的平均特性,而標準偏差反映用戶群體的差異大小,主要用于判斷用戶界面對不同類型的用戶的適應范圍。6.2.2 用戶工作分析用戶工作分析,也稱為任務分析。它是系統內部活動的分解。用戶工作分析與需求分析中結構化分析的方法類似,采用自頂向下,逐步進行功能分解。與常規的功能分解不同的是,所有的系統任務,包括與人相關的活動,都要考慮在內。系統的功能分解,可以用數據流圖和數據詞典描述。其中,每一個加工相當于一個功能,也就是一個任務。任務可以由一組動作構成,它們規定了為實現該任務所必須的一系列活動。任務的細節可以使用結構化英語來表達。它描述了動作完成的序列及在完成動作時的所有例外情況。6.2.3 用戶模型和觀點(1)用戶模型與用戶觀點建立用戶的思維模型,是為了幫助建立設計者界面模型。通常有以下幾種:1)理論認知模型:由心理學家建立的模型,目的是要了解人的思維過程。2)用戶知識模型:該模型是想捕捉一定范疇內的知識以及類型之間的聯系。模型由每個用戶的知識來建立,用遍歷知識網絡的方法來評價用戶如何學習。在自適應的界面中,模型根據計劃和步驟來描述用戶的知識,這些模型被編入網絡中。3)用戶特性模型:這些模型主要依據在此節所描述的技能和能力對用戶進行分類,它們也被稱為用戶外觀。4)用戶任務模型:指用戶根據任務的功能和操作次序,構想該任務的概念。通過它,可以了解用戶知道多少有關系統操作的知識,用戶期望系統應當如何工作等等。一個界面如果與用戶預想的實現、操作的想法一致,它就容易為用戶接受。5)用戶觀點:指系統結構的用戶模型。是用戶描述和設想現行系統結構的方法,它可以用圖形化的方式表示,也可以用語言方式表示。用戶模型可以根據以往的對系統的了解和對相似的系統的知識來建立。當初次接觸到一個系統時,用戶模型可能不明確,但隨著經驗的積累,它就會健全完善起來。界面設計者的責任就是使界面盡可能與用戶原來的模型一致。如果原來沒有模型,那么就要給出一個新的系統模型,并且使用戶盡可能容易地適應新的系統模型。(2)任務模型任務模型包括靜態的和動態的兩種。系統的靜態模型就是對象-關系模型,用于展現界面的結構設計;系統的動態模型是對系統操作或與會話設計有關的對象的動態行為的描述。模型由一些結構組成,既要依據靜態的對象與其關系,又要依據活動的過程順序。用戶模型還可以分為設計者的用戶模型和用戶期望的用戶模型。前者是設計者認為的用戶對系統的期望,后者是用戶對系統的期望。必須使它們一致起來。6.3 用戶界面任務和工作設計任務和工作設計的目的在于創造用戶的工作環境。通常,任務應組織得與人的能力相適應。既不能完全由非常復雜的步驟組成,也不能太過簡單而使操作者感到厭煩。從理論上講,任務的組織應當能夠給用戶提供發揮他們的才能的機會,而不是超出他們的能力。6.3.1 任務分配在每個任務中,動作要分配給計算機、用戶或者二者。一般地,用戶承擔需要創造、判斷和探索的任務,而計算機承擔重復檢查、計算和數據處理的任務。數據錄入、數據恢復和決策支持則是混合任務。這些混合的任務需要通過人和計算機交互來共同完成,因此需要進一步細化,以確定人和計算機怎樣組成。6.3.2 方式和工作設計工作方式有兩種,(1)由一個人單獨完成一個系統的目標。(2)任務進展跟蹤。確定命令在系統中什么地方、確定關鍵的延遲命令、調查拖延的原因、提出解決的建議等。6.4 界面設計的基本類型6.4.1 界面設計類型如果從用戶與計算機交互的角度來看,用戶界面設計的類型主要有問題描述語言、數據表格、圖形與圖標、菜單、對話、以及窗口等等。每一種類型都有不同的特點和性能。在選用界面形式的時候,應當考慮每種類型的優點和限制。從幾方面來考察、抉擇:使用的難易程度:對于沒有經驗的用戶,該界面使用的難度有多大。學習的難易程度:學習該界面的命令和功能的難度有多大。操作速度:在完成一個指定操作時,該界面在操作步驟、擊鍵和反應時間等方面效率有多高。復雜程度:該界面提供了什么功能、能否用新的方式組合這些功能以增強界面功能。控制:人機交互時,是由計算機還是由人發起和控制對話。開發的難易程度:該界面設計是否有難度、開發工作量有多大。通常,一個界面的設計使用了一種以上的設計類型,每種類型與一個或一組任務相匹配。6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 各省市經濟發展比較表
- 癌基因抑癌基因和生長因
- 辦公樓落成慶典儀式策劃方案
- 橙綠扁平風消防安全教育模板
- 牛津高中英語模塊一語法定語從句1
- 預測模型在商業決策中的應用案例
- 顧客行為數據挖掘新零售的核心競爭力
- 顧客行為分析數據科學的零售業密碼
- 顧客體驗優化新零售營銷的關鍵
- 音樂產業的新媒體營銷策略探討
- 罪犯的權利與義務
- 施工管理人員年度安全培訓考核記錄表格
- 我國未成年人犯罪的現狀、成因及對策研究
- 軋機主傳動裝置及主電機的選擇
- 工程移交書及質量保修書水利工程
- 薊中上元古界剖面研究生地質實習-中國科學院地質與地球物理研究所
- 管式加熱爐溫度控制系統設計++
- 水污染源自動監控系統運行作業指導書
- 載人氦氣球觀光游覽項目商業實施計劃書
- 《阿斯圖利亞傳奇》古典吉他譜
- 化學學院526實驗室事故的調查報告
評論
0/150
提交評論