軟件工程導論(第六版)電子教案(第1-13章)_第1頁
軟件工程導論(第六版)電子教案(第1-13章)_第2頁
軟件工程導論(第六版)電子教案(第1-13章)_第3頁
軟件工程導論(第六版)電子教案(第1-13章)_第4頁
軟件工程導論(第六版)電子教案(第1-13章)_第5頁
已閱讀5頁,還剩117頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第一章軟件工程學概述教學目標與要求1.掌握程序軟件、軟件、軟件危機與軟件工程等基本概念內涵2.掌握軟件工程的基本原理和方法3.了解生命周期方法,著重理解軟件工程過程的實質4.會應用各種軟件開發模型教學重點與難點重點:軟件危機的相關概念、軟件生命周期難點:軟件生命周期、軟件過程模型教學方法以多媒體講授為主,適當結合提問、設問、討論等方法。1、計算機系統的發展歷程:四個階段2、軟件危機的含義軟件的概念軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據及令序列;數據是使程序能正常操縱信息的數據結構;文檔是與程序開發、維護使用有關的圖文材料。每個特點都顯示在屏幕上軟件的分類軟件的發展軟件危機的含義:軟件危機是指在計算機軟件開發、使用與維護過程中遇到的一系列嚴重問題和難題軟件危機的表現:二、產生軟件危機的原因與軟件開發和維護有關的許多錯誤認識和作法的形成,可以歸因于在計算機系統發展的早期階段軟件開發的個體化特點。錯誤的認識和作法主要表現為在此詳細介紹軟件的概念、特點及分類對每個特點進行詳細闡述由上面計算機發展的四個階段引出軟件發展的四個階段對每個方面進行由現實中出現問題就要想法找到這個問題的解決為了使學生對軟件工程有一個更好的理解,引入軟件工程的三種三、消除軟件危機的途徑開始探索緩解軟件危機的方法。他們提出了“軟件工程”的概念,即用現代工程的原理、技術和方法進行軟件的開發、管理、維護和更新。于是,開創了計算機科學技術的一個新的研究領域。軟件工程正是從管理和技術兩方面研究如何更好地開發和維護計算機軟件的一門新興學科。一、軟件工程的概念概括地說,軟件工程是指導計算機軟件開發和維護的工程學科。采用工程的概念、原理、技術和方法與維護軟件,把經過時間考驗而證明的管理技術和當前能夠得到的最好技術方法結合起來,以經濟地開發出高質量的軟件并有效地維護件工程。二、軟件工程的基本原理相當完備的最小集合。1.用分階段的生存周期計劃嚴格管理2.堅持進行階段評審3.實行嚴格的產品控制4.采用現代程序設計技術5.結果應能清楚地審查6.開發小組的人員應少而精7.承認不斷改進軟件工程實踐的必要性三、軟件工程的目標軟件工程的目標是在給定成本、進度的前提下,開發出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性并滿足用戶需求的軟件產品。1)可修改性(modifiability),允許對軟件系統進行修改而不增加其復雜性。2)有效性(efficiency),指軟件系統的時間和空間效率。3)可靠性(reliability),是指在給定的時間間隔內,程序成功運行的概率。4)可理解性(understandability),指系統具有清晰的結構,能直接反映問題的。5)可維護性(maintainability),是指軟件產品交付使用后,在實現改正潛伏的錯誤、改進性能等屬性、適應環境變化等方面工作的難易程度。6)可重用性(reusability),是指軟部件可以在多種場合使用的程度。對每條原理給出詳細闡述由前面的知識,讓同學們自己總結出軟件工程的適應本課程英語序列化的要求,對軟件工程的目標進行解釋,并給出一些英語詞匯對每個原則進行的學習打下基礎大,或者對軟件的需求是模糊的或隨時間變化的時候,使用結構化范型開發軟件往往不成功;此外,使用傳統方法學開發出的軟件,維護起來通此引出面向對象7)可適應性(adaptability),是指軟件在不同的系統約束條件下,使用戶需求程度。8)可移植性(portability),是指軟件從一個計算機系統或環境移植到另一個上9)可追蹤性(traceability),是指根據軟件需求對軟件設計、程序進行正向追蹤,或根據程序、軟件設計對軟件需求進行逆向追蹤的能力。10)可互操作性(interoperability),是指多個軟件元素相互通信并協同完成任四、軟件工程的原則1.抽象(abstraction),抽取各個事物中共同的最基本的特征和行為,暫時忽2、信息隱藏(informationhiding),將模塊內部的信息(數據和過程)封裝3.局部化(localization),即在一個物理模塊內集中邏輯上相互關聯的計算資源。局部化支持信息隱藏,從而保證模塊之間具有松散的耦合、模塊內部有較強的內聚。4、一致性(consistency),整個軟件系統(包括程序、數據和文檔)的各個模的公理系統應保持一致。5.完全性(completeness),軟件系統不丟失任何重要成分,完全實現所需的系統功能的程度。為了保證系統的完全性,在軟件的開發和維護過程中需要嚴格的技術評審。6.可驗證性(verifiability),開發大型軟件系統需要對系統逐層分解。系統五、軟件工程方法學用提供自動的或半自動的軟件支撐環境;過程是為了獲得高質量的軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。目前使用得最廣泛的軟件工程方法學,分別是傳統方法學和面向對象方法學。傳統方法學也稱為生命周期方法學或結構化范型。2、面向對象方法學概括地說,面向對象方法具有下述四個要點:較簡單的對象組合而成。Class)。每個類都定義了一組數據和一組操作,類是對具有相同數據和相同操作的一組相似對象的定義。數據用于表示對象的靜態屬性,是對象的狀態信息,而施加于數據之上的操作用于實現對象的動態行為。組成一個層次結構的系統(也稱為類等級)。裝在該對象內,不能從外界直接訪問,這就是通常所說的封裝性。面向對象方法學的出發點和基本原則,是盡可能模擬人類習慣的思維方式,使開發軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程,從而使描述問題的問題空間(也稱為問題域)與實現解法的解空間(也稱為求解域)在結構上盡可能一致。小結:本章對計算機軟件工程學作了一個簡短的概述。首先通過回顧計算機系統發展簡史,說明開發軟件的一些錯誤方法和觀念是怎樣形成的。然后列舉了的進一步發展,需要認真研究開發和維護軟件的科學技術。應總結計算機軟件的歷史經驗教訓,借鑒其他工程領域的管理技術,逐步使軟件工程這門新學科發展軟件生命周期由軟件定義、軟件開發和軟件維護三個時期組成,每個時期又期、維護時期。軟件定義時期通常劃分成三個階段,即問題定義、可行性研究和需求分析。開發時期具體設計和實現在前一個時期定義的軟件,它通常由下述四個階段組成:總體設計,詳細設計,編碼和單元測試,綜合測試。維護時期的主要任務是使軟件持久地滿足用戶的需要。下面簡單介紹軟件生命周期每個階段的基本任務。1問題定義2可行性研究對于上一個階段所確定的問題有行得通的解決辦法嗎?3需求分析這個階段的任務仍然不是具體地解決問題,而是準確地確定“為了解決這個段的一項重要任務是用正式文檔準確地記錄對目標系統的需求,產生規格說4總體設計5詳細設計這個階段的關鍵問題是“應該怎樣具體實現這個目標系統。”設計每個模塊,確定實現模塊功能所需要的算法和數據結構。6編碼和單元測試確的容易理解、容易維護的程序模塊7綜合測試這個階段的關鍵任務是通過各種類型的測試使軟件達到預定的要求。集成測試:根據設計的軟件結構,把經過單元檢驗的模塊按某中選定的策略結合起來,在裝配過程中對程序進行必要的測試。,由用戶對目標系統進行驗收。8軟件維護,通常有四類維護活動:性述一、瀑布模型述述型1特點(1)階段間具有順序性和依賴性這個特點有兩重含義;第一,必須等前—階段的工作完成之后,才能開始后一階段的輸出文檔就是后一階段的輸入文檔,因此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。(2)推遲實現的觀點實踐表明,對于規模較大的軟件項目來說,往往編碼開始得越早最終完成開發工作所需要的時間反而越長。瀑布模型在編碼之前設置了系統分析與系統設計的各個階段,分析與設計階段的基本任務規定,在這兩個階段主要考慮目標系統的邏輯模型,不涉及軟清楚地區分邏輯設計與物理設計,盡可能推遲程序的物理實現,是按照瀑布模型開發軟件的一條重要的指導思想。(3)質量保證的觀點軟件工程的基本目標是優質、高產。在瀑布模型的每個階段都應堅持兩個重成該階段的任務。完整、準確的合格文檔不僅是軟件開發時期各類人員之間相互通信的媒介,也是運行時期對軟件進行維護的重要依據。第二,每個階段結束前都要對所完成的文檔進行評審,以便盡早發現問題,改正錯誤。事實上,越是早期階段犯下的錯誤,暴露出來的時間就越晚,排除故障改正錯誤所需付出的代價也越高。因此,及時審查,是保證軟件質量,降低軟件成本的重要措施。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅動的模型。二、快速原型模型1快速建立起來的可以在計算機上運行的程序,能完成的功能往往是最終產子集。2快速原型模型的特點是不帶反饋環,基本上按線性順序開發。原型系統已經通過與用戶交互而得到驗證,據此產生的規格說明文檔正確地描述了用戶需求,不會因為規格說明文檔的錯誤而進行較大的返工。開發人員通過建立原型系統已經學到了許多東西,在設計編碼階段發生錯誤三、增量模型件來設計、編碼和測試。每個構件由多個相互作用的模塊構成,能完成特定的功能。第一個增量構件往往實現軟件的基本需求,提供最核心的功能。分解時唯一必須準守的約束條件是,當把新構件集成到現有軟件中去時,所形成的產品必須是可測試的。1能在較短的時間內向用戶提交可完成部分功能的產品2逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,減少一個全新的軟件可能給客戶帶來的沖擊1在把每個新的增量構件集成到現有的軟件體系結構中時,必須不破壞原來品2軟件體系結構必須是開放的3本身具有矛盾性,一方面要求開發人員把軟件看作一個整體,另一方面要求開發人員把軟件看作構件序列,且構件間彼此獨立螺旋模型的基本思想是:使用原型及其他方法來盡量降低風險。1確定階段目標,為完成階段目標選擇方案,設定這些方案的約束條件2用建造原型的方法來排除上述方案中潛在的風險布模型開發優點2測試量減少3維護是模型的另一個周期五、噴泉模型迭代是軟件開發過程中普遍存在的一種內在屬性。使用面向對象方法學開發噴泉模型是典型的面向對象的軟件過程模型之一。Rational(RationalUnifiedProcess,RUP)統一過程是由Rational軟件公司推出的一種完整且完美的軟件過程。(1)迭代式開發(2)管理需求(3)使用基于構件的體系結構(4)可視化建模(5)驗證軟件質量(6)控制軟件變更(1)核心工作流(2)工作階段RUP把軟件生命周期劃分為4個連續的階段:初始階段、精化階段、構建(3)RUP迭代式開發七、敏捷過程與極限編程(1)個體和交互勝過過程和工具(2)可以工作的軟件勝過面面俱到的文檔(3)客戶合作勝過合作談判(4)響應變化勝過遵循計劃(1)極限編程的有效實踐1客戶作為開發團隊的成員1使用用戶素材1短交付周期1驗收測試1結對編程1測試驅動開發1集體所有1持續集成1可持續的開發速度1開放的工作空間1及時調整計劃1簡單的設計1重構1使用隱喻(2)極限編程的整體開發過程(3)極限編程的迭代過程八、微軟過程準則:令項目計劃應該兼顧未來的不確定因素令用有效的風險管理來減少不確定因素令經常生成并快速地測試軟件的過渡版本,從而提高產品的穩定性和預測性。令采用快速循環、遞進的開發過程令用創造性的工作來平衡產品特性和權威性令使用小型項目組并發地完成開發工作令在項目早期把軟件配置項基線化,項目后期則凍結產品令使用原型驗證概念,對項目進行早期驗證令把零缺陷作為追求的目標。令里程碑評審會的目的是改進工作,切相互指責。2、微軟軟件生命周期(1)規劃階段確定產品目標獲取競爭對手的信息完成對客戶和市場的調研分析確定新版本產品應該具備的主要特性確定新版本應該解決的問題和需要增加的功能(2)設計階段根據產品編寫系統的特性規格說明書從系統高層出發,完成下述工作:簡明扼要地描述整個系統的設計方案,繪制系統結構圖、確定系統中存在的風險因素,分析系統的可劃分出系統中的子系統,給出各子系統和各個構件的規格說明根據產品特性說明書制訂產品開發計劃(3)開發階段完成產品中所有構件的開發工作(4)穩定階段對產品進行測試和調試。(5)發布階段項目組發布產品或解決方案。3、微軟過程模型小結:本章對計算機軟件工程學作了一個簡短的概述。首先通過計算機系統發展簡史,說明開發軟件的一些錯誤方法和觀念是怎樣形成的。然后列舉了這些錯誤方法帶來的軟件危機,澄清了一些糊涂觀念。為了計算機系統的進一步發展,需要認真研究開發和維護軟件的科學技術。就總結計算機軟件的歷史經驗教訓,借鑒其他工程領域的管理技術,逐步使軟件工程這門新興學科發展和完善起來。第二章可行性研究1、著重理解可行性研究的必要性,以及它的基本任務和基本步驟,在此基礎上教學目標與要求進一步學習具體的方法和工具,包括各種流圖的制定2.理解成本/效益分析是可行性研究的一項重要內容重點:1、可行性研究的任務、基本步驟、經濟可行性等幾個方面教學重點與難點教學方法2、關注可行性報告的編寫難點:數據流圖、成本/效益分析。新課導入、新課教學、課堂討論、作業講評。以多媒體講授為主,適當結合提問、設問、討論等方法。用最小的代價,在盡可能短的時間內確定問題是否能夠解決。二、可行性研究的實質進行一次壓縮,簡化了的系統分析和設計的過程。三、可行性研究的的路線分析和澄清問題導出系統邏輯模型探索若干種可供選擇的主要解法(系統實現方案)對每種解法進行可行性研究為每種可行的解法制定一個粗略的實現進度可行性研究四、可行性研究應著重考慮如下三個方面技術可行性:使用現有的技術能實現這個系統。經濟可行性:這個系統的經濟效益能否超過開發成本。操作可行性:系統的操作方式在這個用戶組織內是否行得通。必要時還應該從法律和社會效益等方面研究每種解法的可行性。可行性研究需要的時間長短取決于系統的規模,可行性研究的成本只是預補充:法律可行性研究:研究新系統的開發和使用是否會侵犯他人的權益,是否觸犯了國家的法律法規。開發方案的選擇:可行性研究的最主要任務是對以后的行動提出建議。如果問題沒有可行的解,分析人員應建議停止該項目,以避免造成進一二、研究目前正在使用的系統從現實中一個工程的上馬需要可行性分析引出本章內容一般考慮前三個方面,有時也考慮5個方面對每個過程進行詳細闡述本章重點和常用的系統符號進行介紹根據前面講解的知識,給學生3然后再講解充“面向數據流后引出數據流圖數據流和轉換的信息系統建模技結合一個具體實例講解數據圖中的每一種成份的三、導出新系統的高層邏輯模型四、進一步定義問題五、導出和評價供選擇的解法六、推薦行動方針七、草擬開發計劃八、書寫文檔提交審查一、概念描繪物理系統的傳統工具。它的基本思想是用圖形符號以黑盒子形式描繪組成系統的每個部件。包括程序、文檔、數據庫和人工過程等。它表達了數據在系之間的流動情況。、符號三、例子某裝配廠有一座零件倉庫,倉庫中現有各種零件的數量以及每種零件的庫存量臨界值等數據記錄在庫存清單主文件中。如果哪種零件的庫存量少于它的臨界值時,則應報告給采購部門以便定貨。規定每天向采購部門送一次定貨報告。裝配廠使用一臺小型計算機處理更新庫存清單主文件和產生定貨報告的任系統中的庫存清單程序負責對事務進行處理,更新存儲在磁盤上的庫存清單主文件;每天由報告生成程序讀一次磁帶,生成并打印出定貨報告;庫存清單程序;報告生成程序;啟發學生從系統中抽離出每一部分啟發學生對第一級數據流圖進行功能分解數據流圖貫穿整書,在此補充畫數據流圖的原則對每一項進行詳細闡述對每一項進行解釋根據上面的補充程序讓學生結合本題練習數據流圖的畫法,在學生練習的同時,示。示根據第一步畫出頂級圖(略)根據第二步畫出功能級數據流圖(略)對于復雜系統,可分層描述1首先用一張高層次的系統流程圖描繪系統總體概貌,表明系統的關鍵功一、概念數據流圖簡稱DFD(DataFlowDiagram)圖,它是描繪信息和數據從輸入移動到輸出的過程中所經受的變換。反映了數據在軟件中流動和被處理的邏輯過程。數據流圖是系統邏輯功能的圖形表示,是一種極好的通信工具。數據流圖用簡單的圖形記號分別表示數據流、轉換、數據源以及外部實體,如二、符號?數據的源點/終點也可以代表用穿孔機穿孔或目視檢查數據正確性等人工處理過程。?數據存儲它可以表示一個文件,文件的一部分,數據庫的元素或記錄的一存儲:把一個數據存入數據存儲;用一個數據去修改數據存儲中的數據;從數據存儲中讀出一個數據;從數據存儲中檢索出一批數據。根據第三步,將數據流圖細化由學生畫數據流圖時對功能的命名五花八門,引出數據流圖中各部分的命名對每一部分進行解釋每一種成份的組成進行詳細解釋練習的目的練習元素的定義根據上面講授的知識,以家庭保話號碼”為例進行數據字典的定義對每一種技術進行詳解一個實例重點講解這四個概念?數據流表示數據在系統中的流動方向,一般分單向數據流和雙向數據流兩數據流圖有六種附加符號:?附加符號中的星號(*)表示數據流之間是“與”關系;?加號(+)表示數據流之間是“或”關系;?符號中表示只能從數據流中選一個(互斥關系)。例1:銀行取款系統的數據流圖(活期儲蓄)。第一步令源點和終點都是儲戶;令加工(處理)是完成取款的功能;令數據存儲:帳卡、存折令數據流是取款單、存折、現款。畫出銀行取款系統的基本數據流圖第二步令取款工作實際上是由儲戶資格審查、登錄、付款三部分組成;令數據存儲部分涉及儲戶的帳卡和存折上數據的更新。畫出取款系統的功能級數據流圖確定系統的源點和終點;確定系統的輸入和輸出數據流。保持分解前后輸入/輸出數據流必須相同;用“自頂向下”的方法,逐層畫出數據流圖。將必要的存儲與加工(處理)相匹配;在畫數據流圖時應避免線條交叉,必要時可使用重復的外部項(源點或終點)畫出出錯及例外條件處理情況。2、建立數據流模型要遵循以下的原則每個加工至少應有一個輸入數據流(反映被處理數據的來源)和一個輸出數據流(反映加工的結果)。1數據流圖中各構成元素的名稱必須具有明確的含義且能夠代表對應元素的內1對某個加工進行細化生成的下層數據流圖,稱為其上層圖的子圖。應保證分層數據流圖中任意對應的父圖和子圖的輸入/輸出數據流保持一致。1應按照層次給每個加工編號,用于表明該加工所處的層次及上、下層的父圖與子圖的關系。編號的規則為:頂層加工不用編號;第一層加工的編號為1在父圖中不要出現子圖中涉及的局部數據存儲文件。通常除底層數據流圖中需表明所有數據存儲外,為保持畫面整潔,各中間層數據流圖只需顯示處于加工之間的接口文件即可。的客觀映象,用于說明須適可而止。1如果為了便于數據流圖在計算機上的輸入和輸出,應免除斜線、弧線、圓等課堂練習:一家工廠的采購部每天需要一張定貨報表,報表按零件編號排序,列出所有需要再次定貨的零件。對于需要訂貨的零件列出其零件編號、零件名稱、定貨數量、目前價格、主要供應者、次要供應者。零件入庫或出庫稱為事務,通過放在倉庫中的CRT終端把事務報告給定貨系統。當某種零件的庫存量少于臨界值時就應該再次定貨分析過程如下第一步?確定系統的源點和終點倉庫管理員是數據的源點;采購員是數據的終點。?加工(處理)本題應該完成定貨系統這樣一個功能。?數據流事務需從倉庫送到系統中,顯然事務是一個數據流;系統要把定貨報表送給采購部,定貨報表也是一個數據流。第二步?將加工(處理)——定貨系統進行功能分解成事務處理和產生報表兩部分;第三步?將事務處理進一步分解為接收事務,更新庫存清單、處理定貨三部分。?畫出定貨系統功能分解后的數據流圖四、數據流圖中各部分的命名1為數據流命名(1)名字應代表整個數據流(或數據存儲)的內容,而不是僅僅反映它的某些成(2)不要使用空洞的、缺乏具體含義的名字(如“數據”、“信息”、“輸入”類)。(3)如果在為某個數據流(或數據存儲)起名字時遇到了困難,則很可能是因為對數據流圖分解不恰當造成的,應該試試重新分解,看是否能克服這個困難。1為處理命名:(1)通常先為數據流命名,然后再為與之相關聯的處理命名(2)名字應該反映整個處理的功能,而不是它的一部分功能。(3)名字最好由一個具體的及物動詞,加上一個具體的賓語組成。(4)通常名字中僅包括一個動詞,如果必須用兩個動詞才能描述整個處理的功能,則把它再分解成兩個處理可能更恰當些。(5)如果在為某個處理命名時遇到困難,則很可能是發現了分解不當的跡象,應五、數據流圖的用途1作為交流信息的工具;1作為分析和設計的工具;1數據流圖可以輔助物理系統的設計(圖);1數據流圖對詳細設計也有幫助。數據字典:是關于數據的信息集合,也就是對數據流圖中包含的所有元素定義的集合。數據流圖和數據字典共同構成系統的邏輯模型。數據流圖描述了系統的典數據流圖就不嚴密,沒有數據流圖數據字典也難于發揮作用。一、數據字典的組成1數據流1數據流分量1數據存儲1處理二、定義數據的方法1、定義復雜事物的方法:用被定義的事物的成分的某種組合表示這個事物,這些數據字典的定義就是對數據自頂向下的分解。成數據的方式:令順序:確定次序連接兩個或多個分量令選擇:從兩個或多個可能的元素中選取一個令重復:把指定的分解量分解零次或多次51{}1{}5令可選:一個分量可有可無的=(等價)+(和)[](或){}(重復)()(可選)(1)數據流條目一個完整的數據流條目應該包括以下內容:頻率和數據量數據結構例如,“圖書管理系統”中的“入庫單”是一個數據流,對它的說明如下:入庫單=分類目錄號+數量+書名+作者+內容摘要+價格+購書日期(2)數據存儲條目數據存儲方式關鍵碼頻率和數據量安全性要求數據結構(3)、家庭保安系統中的“電話號碼”數據條目可以定義如下:?<電話號碼>=<分機號>|<外線號碼>?<分機號>=1816|1817|…|1858?<外線號碼>=9+(<市話號碼>|<長話號碼>)?<長話號碼>=0+(<區號>+<市話號碼>)?<市話號碼>=<局號>+<分局號>?<局號>=395|396|397|303|304|305度為4的數字串*三、數據字典的用途作為分析階段的工具用于開發小組之間的通信可控制程序和模塊的改變是開發數據庫的基礎四、數據字典的實現開發小系統時可建立卡片為每個要定義的名字準備一張卡片;在卡片上注明名字、別名、描述、定義、位置、控制信息、使用特點;寫名子的定義;將所有卡片按一定方式排序,如英文字母順序或漢字筆畫多少等。一、成本估算代碼行技術貨幣的時間價值投資回收期純收入投資回收率、貨幣的時間價值指同樣數量的貨幣隨時間的不同具有不同的價值。一般貨幣在不同時間的價值可用年利率來折算。n2、投資回收期就能越快地獲得利潤,因此這項工程也就越值得投資。是指在整個生存周期系統的累計收入的折現值P與總成本折現值S之差,TT則有:T=P-STT4、投資回收率類似于把資金存入銀行或貸給其他企業能夠獲得利息,通常用年利率衡量開發問題。P=F1/(1+j)+F2/(1+j)2+…+Fn/(1+j)n小結:本章著重理解可行性研究的必要性,以及它的基本任務和基本步驟,在此基礎上再進一步學習具體方法和工具。第三章需求分析教學目標與要求教學重點與難點教學方法1、理解需求分析是軟件生命周期的一個重要階段,它的根本是確定為了滿足用戶的需要,系統必須做什么潔的算法描述所定義系統的邏輯模型,會應用結構化分析方法描述所定義系統的邏輯模型2、會應用結構化分析方法,3、關注需求規格說明書的編寫新課導入、案例教學、課堂討論、作業講評。討論等方法。給出需求和需求給出需求和需求分析的概念,由一、問題分析此引出問題分析在這一過程中,需要用某種方法為原始問題及其軟件解建立模型,以便精補充知識:需求確地記錄用戶從各個視點、在不同抽象級別上對原始問題的描述,并包含分析的基本內容了問題及其環境所涉及的信息流、處理功能、用戶界面、行為及設計約束和需求工程過程等各方面內容。 (孫家廣的“軟于是可通過對模型的精確化來達到需求分析的目標。比如,可以采用面向件工程”第四章數據流的分析方法,利用數據流圖和數據字典等工具來建立模型。需求工程)該模型是形成需求規格說明、進行軟件設計的基礎。對初步的用戶手二、需求描述冊、軟件產品驗主要任務是以需求模型為基礎,生成需求規格說明和初步的用戶手冊,并制收測試計劃進行定軟件產品驗收測試計劃。闡述三、需求評審為了克服困難,需求評審的主要任務是分析人員在用戶(客戶)和軟件設計人員的配合下對更有效地開展需需求規格說明和初步用戶手冊進行審核,檢驗軟件需求的精確性、完全性和一致求分析工作,軟件系統分析人員性,并使用戶(客戶)件系統分析人員§3.2需求分析的一般性技術必須掌握一些基本的需求分析技術本的需求分析技術,由此引出本節內容以家庭保安系統為例分析初步需求獲取技術根據前面講授的知識,讓學生總結快速原型技術的適用場合結合保安系統對這三種技術進行可和§3.8驗證軟件需求放在一起講解規格說明書的基本格式框架對需求規格說明抽象;一、初步需求獲取技術1、訪談與會議會議之前,分析人員根據對問題的初步描述精心準備一系列問題,通過用戶對問題的回答或互相商討來逐步理解用戶的需求。②在組織問題時要盡量做到客觀、公證,不應限制用戶的自由發揮。③所提問題匯總后應能反映應用問題及其子問題的全貌、并且不要過分詳細。2、觀察用戶工作流程觀察手工操作過程不是為了模擬手工操作過程,而是為了獲取第一手資料,并從中提取出有價值的需求。分析人員有了第一手資料,再結合自己書的基本格式框架中的內容進行書的基本格式框架中的內容進行解釋對每個標準進行詳細闡述本節講解采用任法、指導法簡單舉例說明1、例子的講解討論法、指導法補充案例采用討論法、指導法引求學生選擇一案例寫出需求分析報告作流程和操作規范,從而可獲得用戶滿意的分析結果。3、分析人員和用戶組成聯合小組為加強信息溝通、減少誤解和避免產生遺漏、充分調動用戶的積極性,在可能的條件下,可以建立由開發方和用戶方共同組成的聯合小組。聯合小組除了雙方的分析人員外,應設專門的記錄員、負責會議議程的人精確的表示機制作為雙方的共同語言,比如采用帶文字說明的流程圖等。實例:家庭保安系統(具體步驟省略)二、需求建模技術需求建模的步驟法獲取初步的用戶需求。分析人員根據選定的一種分析方法,在初步用戶需求的基礎上構筑初步的模型作為開發方和用戶相互溝通的表示機制。化、一致化、完全化,直至獲得滿意的用戶需求為止。三、快速原型技術1、快速原型技術的基本思想在軟件開發的早期,快速開發一個目標軟件系統的原型,讓用戶對其進行評價并提出修改意見,然后開發人員根據用戶的意見對原型進行改進。當原型幾經改進最終確認后,它將直接進化成軟件產品,或者由軟件設計、編碼人員按照模型所確立的外部特征去實現軟件產品。2、采用快速原型技術的具體步驟采用一種分析方法生成一個軟件系統或其中所關心部分的簡化需求規格說對該規格說明進行評審通過后,立即生成設計規格說明。為了快速生成原型,這種設計僅注重所關心的問題,如軟件的總體結構、用戶界面和數據設計、或者某個復雜的算法等等,不注重過程內部的控制流設計。使用可重用軟部件、用戶界面自動生成器等工具快速生成可運行的軟件原型并通過測試。將原型提交給用戶進行評價,以便征求改進意見。上述過程反復迭代,直至用戶完全滿意。3、快速原型技術的適用場合該技術特別適合于軟件產品要求大量的用戶交互、或產生大量的可視輸除非由于問題相當復雜,致使開發快速原型可以獲得的支持太少、所冒的風險太大時,就不易采用。但對于其中的某些子問題,尤其是用戶界面,還可采用快速原型技術進行部分分析。四、問題分解與抽象、多視點分析技術分析人員常常采用一種問題分解的技術。即將一個大型復雜的問題分解為若干個子問題,然后對每一個子問題逐個進行分析,再自底向上綜合成整個問題的分析結果。這種分解可以逐級進行,直至子問題的規模降到合適的程度。分析人員在分析過程中要善于從諸多的特殊問題中抽象出一般的問題,首先關注一般問題的解決途徑,再用其指導特殊問題的求解。在抽象的過程中,還要注意用戶的描述所處的抽象級別的不同,以便建立清晰的思路。多視點分析技術:行理解與分析,然后綜合成全面的理解。分析人員可以就系統視點與用戶視點、信息視點、功能視點與行為視點等多個視點分別進行分析,以確保需求分析的完全性。性1.需求規格說明書的作用主要有:它是軟件設計人員進行設計和編碼的出發點和基礎;它是對目標軟件產品進行驗收測試的依據。這就要求需求規格說明書中的各項需求都應該是可測試的;它起到軟件開發方和客戶(或用戶)方之間的一份合同的作用。2、需求規格說明書中的內容主要包括功能與行為的需求描述和非行為需求描述。功能與行為需求的分析與描述方法將在以后幾章中根據不同的需求建模方法分別介紹。非行為需求是指目標軟件系統在工作時應具備的屬性,主要有運行效率、可靠性、安全性、可維護性、可移植性等等。括如人員需求、成本預算、進度計劃、質量保3、需求規格說明書的基本格式框架1.1本說明的編寫目的1.2軟件產品的作用范圍1.3定義、同義詞與縮寫.4參考文獻2.1產品與其環境間的關系2.2功能概述2.3用戶特征2.4約束條件2.5假設與前提條件3.1功能或行為需求1:1)引言3.2功能或行為需求2:1)引言………3.n功能或行為需求n:1)引言4.外部界面需求4.1用戶界面4.2硬件界面4.3軟件界面需求5.1精度5.2時間特征5.3靈活性.設計約束6.1標準化約束6.2硬件約束…求2)輸入3)處理過程描述2)輸入3)處理過程描述…2)輸入3)處理過程描述4)輸出4)輸出…4)輸出7.1數據庫需求7.2用戶操作需求7.3工作場地需求8.軟件產品屬性8.1可用性8.2安全性8.3可維護性8.4可移植性二、需求評審1.評審標準(按照重要性的次序)正確性。無歧義性。完全性。可驗證性。一致性可理解性。可修改性。可追蹤性。2.需求評審過程參加的人員應當有用戶、系統分析員、系統設計人員等。在評審會上,分析人員應說明軟件產品的總體目標,也就是介紹需求規格說明書中的主要內容。之后,與會人員對說明書的核心部分——需求模型進行評估。并按照上述的評審標準逐一進行審查,最后確認其是否具有良好的品質、是否構成以后開發的良好的基礎。如果在評審過程中發現說明書中存在錯誤或遺漏,應責承分析人員返工,并再行評審。需求評審也可采用先進行技術評審,再進行管理復審的方法進行。管理復審應有開發方和客戶方(或用戶方)管理部門負責人參加,復審通過后,雙方應簽訂正式的合同。屬性來定義的外部實體都可以被認為是數據對象。義了數據對象的性質。三、聯系1、一對一(1:1)2、一對多(1:N)3、多對多(M:N)四、實體—聯系圖的符號通常使用實體——聯系圖來建立數據模型實體:矩形框關系:菱形框屬性:橢圓形或圓角矩形補充三個實例1、某學校課程管理系統2、超市系統3、汽車銷售系統思路:先讓學生分析系統中的實體,然后根據系統需求再找出實體的屬性,最后找出實體間的聯系。通常范式來定義消除數據冗余的程度2、第二范式:滿足第一范式條件,而且每個非關鍵字屬性都由整個關鍵字決定。而且每個非關鍵字屬性都僅由關鍵字決定。一、狀態初態(一個初態)、終態、中間態(0-多個終態)二、事件引起系統做動作或轉換狀態的控制信息三、符號初態:實心圓終態:同心圓中間態:圓角矩形思路:讓學生回憶電話的工作過程,抽離出狀態,然后找出狀態之間轉換的事件一、層次方框圖層次方框圖用樹形結構的一系列多層次的矩形框描繪數據的層次結構。也是用樹形結構描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪手段。輸入、處理、輸出圖的簡稱案例1:高校工資管理系統(需求分析)案例2:電子名片管理系統(需求分析)小結:本章著重理解可行性研究的必要性,以及它的基本任務和基本步驟,在此基礎上再進一步學習具體方法和工具。第五章總體設計教學目標與要求1、掌握概要設計的基本概念與原理,理解軟件結構設計的優化準則.熟練使用概要設計階段常用的幾種圖形工具本概念與原理教學重點與難點教學方法2、關注概要設計說明書的編寫難點:面向數據的設計方法新課導入、案例教學、課堂討論、課堂練習、作業講評。軟件設計基本概念1、軟件設計方法的內容軟件開發階段由設計、編碼和測試三個基本活動組成,其中“設計”活動是獲取高質量、低耗費、易維護軟件的一個最重要環節。需求分析階段獲得的需求規格說明書包括對將要實現的系統在信息、功能和行為等各個方面的描述,這是軟件設計的基礎。對此不論采用何種軟件設計方法都將產生:系統的總體結構設計(architecturaldesign);系統的數據設計(datadesign);系統的過程設計(proceduraldesign)。軟件設計也可看作將需求規格說明逐步轉換為軟件源代碼的過程。2、從工程管理的角度理解軟件設計軟件設計可分概要(preliminary)設計和詳細(detail)設計兩大步驟。概要設計是根據需求確定軟件和數據的總體框架,詳細設計是將其進二、抽象與逐步求精抽象是控制復雜性的基本策略。“抽象”要求人們將注意力集中在某一層次上考慮問題,而忽略那些低層次的細節。軟件設計過程應當是在不同抽象級別上考慮和處理問題的過程。最初,應在最高抽象級別上,用面向問題域的語言敘述“問題”,概括“問題解”的形式,而后不斷地具體化,不斷地用面向過程的語言描述問題,最后,在最低的抽象級別上給出可直接實現的“問題解”,即程序。軟件工程過程的每一步都是對較高一級抽象的解作一次進一步具體化的描在上述由高級抽象到低級抽象的轉換過程中,伴隨著一連串的過程抽象和數據抽象。通過總體設計的目標引出軟件設計過程英語序列化要求通過實際事例引的思想給出每種內聚的概念并舉說明例給出每種耦合的概念并舉說明例設計軟件時應盡量使用數據耦合,減少控制耦合限,制外部環境耦合和公共數據耦合,杜絕內容耦合。由類樹圖引出有關程序結構的術語給出每個步驟的詳細解釋此強調一下結合事例對每條規則進行闡述讓學生根據流程圖試著畫出結構圖本章重點內容2.逐步求精“我們對付復雜問題的重要辦法是抽象,因此,對一個復雜的問題不應該從而得出抽象程序。抽象程序對抽象的數據進行某些特定的運算并用某些合適的記號(可能是自然語言)來表示。對抽象程序做進一步分解,進入下一個抽象層次,重復這一精化過程直到程序能被計算機接受為止。這時的程序可能是用某種高級語言或機器指令書寫的。”(1)過程求精層次結構。層次結構的上一層是下一層的抽象,下一層是上一層的求精。(2)與數據求精細化都蘊涵著某些設計決策,因此設計人員必須掌握一些基本的準則,比較各種可能的候選方案。文件的問題三.模塊化與信息隱藏把軟件劃分為可獨立命名和編制的部件,每個部件稱為一個模塊,當把所有EX解問題X需要花費的工作量(時間);則有:E(P1)>E(P2)結論:解決一個復雜問題總比解決一個簡單問題耗費更多的工作量。同時有:C(P1+P2)>C(P1)+C(P2)結論:由P1、P2組合而成的問題的復雜性往往比考慮單個問題復雜性的和更大。也就容易解決了。信息隱蔽原理告訴我們,模塊應該設計得使其所含信息(過程和數據)對于那些不需要這些信息的模塊不可訪問;每個模塊只完成一個相對獨立的特定功能;模塊之間僅僅交換那些為完成系統功能必須交換的信息,即模塊應該獨立。對面向數據流的設計過程進行詳細講解結合實例對變換分析的每一步驟進行詳細闡述根據前面的基礎,補充的”家庭保安系統”進行變換分析庭保安系統”進行事務分析如果時間剩余對第四章課后習題進行講解案例分析以學生為中心進行3.內聚度(cohesion)內聚度是前述信息隱蔽和局部化概念的自然擴展,它標志一個模塊內部各成分彼此結合的緊密程度。內聚度按其高低程度可分為七級,內聚度越高越好。(1)偶然性內聚(coincidentalcohesion)。(2)邏輯性內聚(3)時間性內聚(4)過程性內聚(5)通信性內聚度(6)順序性內聚(7)功能性內聚4.耦合度耦合度是對軟件結構中模塊間關聯程度的一種度量。耦合的強弱取決于模塊間接口的復雜性、進入或調用模塊的位置以及通過界面傳送數據的多少等。耦合度也可以分為七級(1)非直接耦合(nodirectcoupling)(2)數據耦合(datacoupling)(3)特征耦合(stampcoupling)(4)控制耦合(controlcoupling)(5)外部耦合(externalcoupling)(6)公共耦合(commoncoupling)(7)內容耦合(contentcoupling)四.軟件總體結構設計軟件總體結構(softwarearchitecture)應該包括兩方面內容:2)對應于程序結構的輸入輸出數據結構。軟件總體結構設計的目標就是產生一個模塊化的程序結構并明確各模塊之,說明程序的輸入輸出數據流,進一步協序結構和數據結構。結構演變3.表示程序結構的工具類樹圖(tree-likediagram)Warnier-Orr圖4.有關程序結構的術語一個軟件的深度(depth)—控制的層數;一個軟件的寬度(width)—其控制的層數和跨度;一個模塊的“扇出數”(fan-out)—該模塊直接控制的其他一個模塊的“扇入數”(fan-in)指能直接控制該模塊的模塊數。五.數據結構設計是影響軟件總體結構的重要因素。數據結構與程序結構一樣,也可以在不同的抽象級別上表示。六.設計過程總體設計過程通常由兩個主要階段組成:系統設計階段,確定系統的具體實1.設想供選擇的方案2.選取合理的方案3.推薦最佳方案4.功能分解5.設計軟件結構6.設計數據庫7.制定測試計劃8.書寫文檔9.審查和復審原理一.模塊化二.抽象三.逐步求精四.信息隱藏和局部化啟發規則1.改進軟件結構提高模塊獨立性2.模塊規模應該適中3.深度、寬度、扇出和扇入都應適當4.模塊的作用域應該在控制域之內5.力爭降低模塊接口的復雜程度6.設計單入口單出口的模塊7.模塊功能應該可以預測5.4描繪軟件結構的圖形工具一.層次圖三.結構圖補充兩個例子講解結構圖的畫法例1:火車售票系統的數據流程圖驟畫出結構圖層次圖帶編號的層次圖產生最佳解結構圖.5面向數據流的設計方法面向數據流的設計方法,即通常所說的結構設計法(StructureDesign,簡(SA)相銜接,根據對數據流的分析設計軟件結構。一.SD方法的設計過程和有關概念(5).通過設計復審和使用啟發式策略進一步精化所得到的結構。2.變換流變換流—在基本系統模型(即頂級數據流圖)中信息通常以“外部世界”3.事務流——單個數據項稱為事務(transaction)沿傳入路徑(也稱接受通道)進入系統,由外部形式變換為內部形式后到達事務中心,事務中心根據數據項計值結果從若干動作路徑中選定一條繼續執行。4.設計過程面向數據流的設計過程二.變換分析變換分析是一系列設計步驟的總稱,經過這些步驟把具有變換流特點的數據流圖按預先確定的模式映射成軟件結構。下面通過一個汽車數字儀表板的設計來介紹變換分析的過程。基本系統模型2、復查并精化數據流圖確保數據流圖給出目標系統的正確的邏輯模型,且使數據流圖中每個處理都代表一個規模適中相對獨立的子功能3、確定數據流圖的類型確定數據流圖是變換型數據流圖還是事務型數據流圖。4、確定輸入流和輸出流的邊界,從而孤立出變換中心5、進行“第一級分解”軟件結構代表對控制的自頂向下的分配,所謂分解就是分配控制的過程。對于變換流的情況,數據流圖被映射成一個特殊的軟件結構,這個結構控制輸入、變換和輸出等信息處理過程。6、進行“第二級分解”第二級分解就是把數據流圖中的每個處理映射成軟件結構中一個適當的模塊。完成第二級分解的方法是,從變換中心的邊界開始沿著輸入通路向外移動,把輸入通路中每個處理映射成軟件結構中Ca控制下的一個低層模塊;然后沿輸出通路向外移動,把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一低層模塊;最后把變換中心內的每個處理映射成受Ct控制的一個模塊。7、使用設計度量和啟發式規則對第一次分割得到的軟件結構進一步精化對第一次分割得到的軟件結構,總可以根據模塊獨立原理進行精化。為了產到一個易于實現、易于測試和易于維護的軟件結構,應該對初步分割得到的模塊進行再分解或合并。補充:以”家庭保安系統”為例,進一步對變換分析的各步驟進行講述.三.事務分析當數據流具有明顯的事務特征時,即能找到一個事務(亦稱觸發數據項)和事務分析法可概括為七個步驟:步驟一、復審基本系統模型;步驟二、復審并精化軟件數據流圖;步驟三、確定數據流圖的特征;步驟四、指出事務中心,確定接收部分和發送部分的流界;射出系統上層模塊結構;步驟六、分解并精化事務結構以及每條動作路徑所對應的結構。步驟七、使用啟發式設計策略,精化所得程序結構雛形,改良軟件質量。這驟與變換分析法相同。四、設計優化原則我們努力我們努力追求的設計應該是既滿足功能和性能的要求,又符合一般軟件設計原理和上述種種啟發式設計原則。對軟件結構對軟件結構的修改越早越好。必要時,可以并行地開發若干個軟件結構,通過評比,求得“最佳”結果。簡潔的程序結簡潔的程序結構容易測試、容易維護,應該使用盡可能少的模塊;只要滿足信息要求,應該使用盡可能簡單的數據結構。結構優化結構優化是一個精益求精的過程。優化過程可以在設計的早期,甚至要延續到詳細設計乃至編碼階段。;CASE低效的部分,加33.詳細設計時對最耗時的模塊,認真地設計它們的處理過程(算法),以便減少時間的開銷;4.盡量用高級語言編程以利于軟件的優化;5.對大量占用計算機系統資源的模塊必要時用低級語言重新編碼,以提高小結:總體設計階段的基本目的是用比較抽象概括的方式確定系統的物理配置方案,并且進而確定組成系統的每個程序的結構。層次圖和結構圖是描繪軟件結構的常用工具。設計軟件結構設計時應該遵循模塊獨立原理。在進行軟件結構設計時一種有效的方法就是,由抽象到具體地構造出軟件的層次結構。在軟件開發過程中既要充分重視和利用啟發式規則。自頂向下逐步求精是進行軟件結構設計的常用途徑;有了詳細的數據流圖,也可用面向數據流的設計方法,用形式化的方法由數據流圖映射出軟件結構--軟件的初步結構,再根據設計原理并參考啟發式規則,得到高質量模塊和更合理的軟件結構。第六章詳細設計教學目標與要求1、了解結構程序設計,掌握過程設計的工具和面向數據結構的設計方法,并能在實際開發軟件的過程中應用所學到的方法。2、掌握人機界面的設計中需要解決的問題,并能將所學知識應用在實訓課程方法教學重點與難點Jaclson方法以多媒體講授為主,適當結合提問、設問、練習、討論等方法。6.1結6.1結構程序設計一、結構程序設計的三種基本的控制結構計的任務與原則”構設計結構do-until、FTAFTAABB構ABB由現在應用的許(b(b)選擇結構學過的Java引出FF或TATTATFA素、人機界面風FA格、人機界面設計(c)(c)循環結構過程和人機界面實現的原則。方法和單入口單出口的控制構件。對這三個方面進結構化程序設計的思想,應該在軟件設計中體現出來,但這并不排除為效行闡述率或其他原因對結構化程序設計作一點修正。隨著面向對象、軟件重用等新的軟件開發方法和技術的發展,更現實、更有效的開發途徑可能是自頂自己將如何表示向下和自底向上兩種方法有機地結合。這些信息.6.2人機界面設計學生討論:什么樣人機界面(Human-人機界面(Human-ComputerInterface,簡稱HCI)又稱人-機接口或用設計用戶界面不僅需要計算機科學的理論和知識,而且需要認知心理學以喜?由此引出下每種界面格式舉例說明一、人的因素一、人的因素人對感知過程的認識,包括視覺、閱讀時的認知心理、記憶、歸納與用戶已有的技能和行為方式;用戶所要求完成的整個任務以及用戶對人機交互部分的特殊要求。1人類感知基礎存入記憶中,并通過大腦用歸納和演繹的方法進行推理。大多數人機界面都在可視介質上實現,此時,用戶總是眼腦并用,并根據所顯示的內容、體積、形狀、顏色、方向、移動和其他表現解釋所獲2用戶的技能3任務與用戶的特殊要求1對話型任務(dialoguetask):使用戶能指揮和控制與系統交互的活動。統功能關聯的活動。1控制型任務(controltask):允許用戶對信息及其他任務處理的順序進行控制的活動。到用戶界面設計技術——任務分析和建模。1、第一代界面——命令和詢問方式。通信完全以正文形式并通過用戶命令和用戶對系統詢問的響應來完成。缺點:易出錯、不友好,且不易于學習。2、第二代界面——簡單的菜單式相比不易出錯,但使用起來仍然乏味。即:窗口(windows)、圖標(icons)、菜單(menus)、指示器(pointingdevice)第三代界面的優點1能同時顯示不同種類的信息,使用戶可在幾個工作環境中切換而不自如地執行許多通信型和面HumanComputerInterface:對每個模型進行介紹先引導同學對每個方面進行理解,然后結合學生的討論對每個方面讓學生討論提高可交互性的措施,然后再歸納總結讓同學們列出輸入設備對每一項進行闡述讓學生回憶C語言中的程序流程引入程序流程圖中使用的符號讓學生回憶在哪種語言的學習中用到過盒圖可引導學生一個一個分支畫根據上面的講解然后歸納。闡述每個優點本章重點和難點對照判定表的組畫出判定表判判定樹的簡浩程序受分枝次序的影響主要讓學生練習,并改變判定樹分較畫出的判定樹。經過前面兩個例子的講解讓學生和判定樹對基本成分的每個部分進行詳細說明先讓學生試著用偽碼寫程序本章重點內容讓學生解釋優點的第三條由缺點引出改進給出每種結構對學生寫偽碼程序多引導少指導多,引導少指導練習目的是把學過的知識和本節內容聯系起來本節知識主要是1用戶通過下拉式菜單(pull-downmenu)可方便地執行控制型和對這對那些不精于打字的用戶無疑提高了交互效率,極大地推動了計I戶可同時執行多個任務(以用戶的觀點)。人機界面設計過程可分為下面幾個步驟:1)創建系統功能的外部模型;2)確定為完成此系統功能人和計算機應分別完成的任務;3)考慮界面設計中的典型問題;6)評估界面質量。1、界面設計的有關模型在人機界面的設計過程中先后涉及四個模型:1由軟件工程師創建的設計模型(designmodel),1由人機工程師(或軟件工程師)創建的用戶模型(usermodel),l(systemimage)。一般來說,這四個模型之間差別很大,界面設計時要充分平衡四者之間的差異,設計協調一致的界面。2任務分析與建模1任務分析有兩種途徑。令一種是從實際出發,通過對原有處于手工或半手工狀態下的應用系統的剖析,將其映射為在人機界面上執行的一組類似的任務。令另一種是通過研究系統的需求規格說明,導出一組與設計模型、用戶模型和系統假想相協調的用戶任務。1任務分析采用的技術:令逐步求精技術——可把任務不斷劃分為子任務,直至對每個任務的表達都十分清楚。令面向對象分析技術——可識別出與應用有關的所有客觀的對象以及與1界面設計首先要完成下列工作:令將每個目標/含義映射為一系列特定動作;令說明這些動作將來在界面上執行的順序;為學生的實訓服務令指明各個系統狀態,即上述各動作序列中每個動作在界面上執行時界面令定義控制機制,即便于用戶修改系統狀態的一些設置和操作;令說明控制機制怎樣作用于系統狀態;令指明用戶應怎樣根據界面上反映出的信息解釋系統的狀態。3界面設計的一般問題4實現工具用戶界面設計是一個迭代過程,直至與用戶模型和系統假想一致為止。為支持這種迭代式設計,大量的用戶界面快速原型工具涌現出來:用戶界面工具箱(userinterfacetoolkits)或用戶界面開發系統(userinterfacedevelopmentsystems)。息和命令等。1一般可交互性提高可交互性的措施:終保持同一種形式和風格;令通過向用戶提供視覺和聽覺上的反饋,保持用戶與界面間的雙向通信;令對大多數動作應允許恢復(UNDO);令盡量減少用戶記憶的信息量;令提高對話、移動和思考的效率,即最大可能地減少擊鍵次數,縮短鼠標移動的距離,避免使用戶產生無所適從的感覺;令用戶出錯時采取寬容的態度;令按功能分類組織界面上的活動;令提供上下文敏感的求助系統;令用簡短的動詞和動詞短語提示命令。2信息顯示信息顯示的形式和方式的一些原則:令僅顯示與當前上下文有關的信息;令采用簡單明了的表達方式,避免用戶置身于大量的數據中;令采用統一的標號、約定俗成的縮寫和預先定義好的顏色;令允許用戶對可視環境進行維護,如放大、縮小圖象;令只顯示有意義的出錯信息;令用大、小寫,縮進和按意群分組等方法提高可理解性;令用窗口(在適合的情況下)分隔不同種類的信息;令用“類比”手法,生動形象地表示信息;令合理劃分并高效使用顯示屏。3數據輸入盡量減少用戶輸入的動作;保證信息顯示方式與數據輸入方式的協調一致;允許用戶定做輸入格式;采用靈活多樣的交互方式,允許用戶自選輸入方式;隱藏當前狀態下不可選用的命令;允許用戶控制交互過程;為所有輸入動作提供幫助信息;去除所有無實際意義的輸入,盡量采用缺省值。4人機界面標準提供了一套用于創建顯示(display)、窗口(window)和圖形(graphics)的工具,以及有關資源處理(resourcehandling)、設備交互(deviceinteraction)和事件處理(eventhandling)的一套協議。6.3過程設計的工具描述程序處理過程的工具稱為過程設計的工具,它們可以分為圖形、表格和和“循環”三個基本控制構件用流程圖表達的形式如圖所示。程序流程圖雖然比較直觀,靈活,并且比較容易掌握,但是它的隨意性和靈活性卻使它不可避免地存在著一些缺點:由于程序流程圖的特點,它本身并不是逐步求精的好工具。因為它使程序員容易過早地考慮程序的具體控制流程,而忽略了程序的全局結構;程序流程圖中用箭頭代表控制流,這樣使得程序員不受任何約束,可以完全不顧結構程序設計的精神,隨意轉移控制;程序流程圖在表示數據結構方面存在不足。練習1:給出一個程序流程圖,讓學生讀出程序的功能圖。每個處理步驟都用一個盒子來表示,這些處理步驟可以是語句或語句序列,在需要時,盒子中還可以嵌套另一個盒子,嵌套深度一般沒有限制,只要整張圖可以在一張紙上容納下就行。這種表達方式取消了流程線,它強迫程序員以結構方式思考和解決問題。在課件上給出盒圖的基本符號。第三步:將上面兩步合并,生成系統的總結構圖(如下)功能域(即某一個特定控制結構的作用域)有明確的規定,并且可以很它的控制轉移不能任意規定,必須遵守結構化程序設計的要求;很容易表現嵌套關系,也可以表示模塊的層次結構。m本日立公司發明以后,已得到一定程度的推廣。它用二維樹形結構的圖來表示程出PAD圖的基本符號。當模塊中包含復雜的條件組合,并要根據這些條件的組合選擇動作時,只有判定表和判定樹能夠清晰地表達出復雜的條件組合與各種動作之間的對應關系。左下部——列出所有可能的動作;右上部——所有可能的條件組合(矩陣);右下部——條件組合與動作之間的對應關系。判定表的每一列可解釋為一條處理規則。2、判定樹判定樹是判定表的變種,它也能清楚地表示復雜的條件組合與應做的動作之例1:問題處理描述:耗電記費系統可以采用固定價格收費、浮動價格收費分析:先畫條件再畫動作判定樹:省略例6.2:某校制定了教師的講課課時津貼標準。對于各種性質的講座,無論教師是什么職稱,每課時津貼費一律是50元;而對于一般的授課,則根據教師試畫出判定表和判定樹。kg時,對頭等艙的國內乘客超重部分每公斤收費4元,對其他艙的國內乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。用判定表可以清楚地表示與上述每種條件組合相對應的計算行李費的算法。試畫出判定表和判定樹。由上面的例子總結出判定樹的優缺點。點:令存在著數據冗余的問題,相同的數據元素往往要重復多次,而且越接近樹的葉端重復的次數越多。令判定樹要求對條件進行層次劃分,若條件所處層次不對,可能會導致增加判定樹的復雜性。三、過程設計語言(PDL)PDL(ProcedureDesignLanguage)也稱為結構英語或偽碼,是所有正文形式的過程設計工具的統稱。PDL經常表現為一種“混雜”的形式,允許自然語言(如英語)的詞匯與某種結構化程序設計語言(如Pascal、C、Ada等)的語法結構交織在一起關鍵字采用固定語法并支持結構化構件、數據說明機制和模塊化;處理部分采用自然語言描述;允許說明簡單(標量、數組等)和復雜(鏈表、樹等)的數據結構;子程序的定義與調用規則不受具體接口方式的影響。4、例子:某公司有200名職工,公司擬為每名職工增加工資,具體增加辦法為:年工資超過36000元者工資不變,其他人員增加工資算法是為其每個贍養人(包括本人)每年補助150元,此外每年工齡增加100元,但是增加后的年工資不能超過36000元。每們職工的數據存貯于磁盤文件上,包括職工姓名,年工資額S,贍…打開文件打印表頭I10現工資while(I<=200)do讀一個工資記錄ifS<36000thens’=s+150.N+100.YifS>36000thenS’=36000endifendif在表格中打印一行Enddo關閉文件可以作為注釋直接插在源程序中間可以使用普通的正文編輯程序或文字處理系統,很方便地完成PDL的書PDL的缺點是不如圖形工具形象直觀,描述復雜的條件組合與動作間的對應關系時,不如判定表清晰簡單。6.4面向數據結構的設計方法程的方法。面向數據結構的設計方法的最終目標是得出對程序處理過程的描述。在完成了軟件結構設計之后,可以使用面向數據結構的方法來設計每個模塊的處理過程。Jackson方法和Warnier方法是最著名的兩個面向數據結構的設計方法,使用面數據結構,并且用適當的工具清令Jackson圖不僅便于表示層次結構,而且也有利于對結構自頂向下分解;令Jackson圖不僅能表示數據結構,也能表示程序結構在選擇結構和重復結構中,選擇條件或循環結束條件不能直接在Jackson圖中表示出來。這樣就影響了圖形的表達能力,也不利于直接把圖翻譯成程序。例1:高考后將考生的基本情況文件(簡稱考生基本情況文件)和考生高考成績文件(簡稱考分文件)合并成一個新文件(簡稱考生新文件)。考生基本情況文件和考分文件都是由考生記錄組成的。為簡便起見,考生基本情況文件中的考生記錄的內容包括:準考證號、姓名、通訊地址。考分文件中的考生記錄的內容包括:準考證號和各門考分。合并后的考生新文件自然也是由考生記錄組成,內容包括:準考證號、姓名、通訊地址和各門考分。第一步數據結構表示對要求解的問題進行分析,確定輸入數據和輸出數據的邏輯結構,并用第二步找出輸入數據結構和輸出數據結構的對應關系找出輸入數據結構和輸出數據結構中有對應關系的數據單元,即有直接因果關系、在程序中可以同時處理的數據單元。第三步確定程序結構圖根據三個原則確定,此處省略第四步列出并分配所有操作和條件列出所有操作和條件(包括分支條件和循環結束條件),并把它們分配到程序結構圖的適當位置。第五步用偽碼表示程序(1)順序結構AseqBCDAend(2)選擇結構Aselectcondition1BAorcondition2CAorcondition3DAend(3)重復結構Aiteruntil(或while)conditionBAend產生新文件seq打開兩個輸入文件從輸入文件中各讀一條記錄處理考生記錄seq產生準考證號產生姓名產生通訊地址產生考分生成一條新記錄將新記錄寫入輸出文件從輸入文件中各讀一條記錄處理考生記錄end關閉全部文件止產生新文件end例2:一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統計每個每復制一行輸入字符串之后,另起一行印出這個字符串中的空格數,最后印出文。theofpersons軟件設計階段的輸出主要是設計規格說明書,本節給出設計規格說明的10節內容,并給出一個設計規格說明書示例。6.6程序復雜程度的定量度量對課后習題作提示小結:過程設計應該在數據設計、體系結構設計和接口設計完成之后進行,過程設計的工具可分為圖形、表格和語言3類,這3類工具各有所長,讀者應該能夠根據需要選用適當的工具。第七章實現1、了解程序設計語言的特點、發展,掌握選擇語言的原則,理解編程標準,良教學目標與要求教學重點與難點掌握軟件的測試過程、調試的概念和策略,了解自動測試工具和調試工具。2、軟件測試的步驟和常見錯誤類型、邏輯覆蓋。3、基本路徑測試、白盒測試技術、黑盒測試技術2、軟件測試的步驟、邏2、軟件測試的步驟、邏輯覆蓋。基本路徑測試。新課導入、新課教學、課堂提問、課堂討論、課堂練習、作業講評。以多媒體講授為主,適當結合提問、設問、練習、討論等方法。教學方法程序設計語言的特點(1)一致性(Uniformity)指語言中采用的標記(Token)法協調一致的程度。(2)二義性(ambiguity)語言的二義性是指語言是否允許使用具有二義性的語句。(3)緊致性(compactness)緊致性是指程序員寫程序時必須記憶的關于語言的信息總量。決定緊致性的指標①語言對結構化的支持程度。②關鍵字及操作符的數目,顯然關鍵字和操作符的數目越多,則緊致性越差。③標準函數的個數及復雜程度。(4)局部性(locality)局部性是指語言的模塊化和信息隱藏特性。一個局部性差的語言必然會導致程序補充:程序設計語言其他連帶的特性:將設計翻譯成代碼的難易程度編譯器所生成代碼的效率源代碼的可移植性2、程序設計語言的發展和分類詳細闡述每代語言的特點舉例說明詳解程序文檔內容對每一個原則進行解釋結合VS.Net理解好的PSE應該具有的特性第一代:機器語言和匯編語言,也稱為低級語言。舉例說明解釋黑、白盒測試;詳細解釋每種錯誤類型解釋黑、白盒測試;詳細解釋每種錯誤類型高級語言通常被分成三類:對每個任務進行詳細講解結合軟件結構圖對深度優先策略、廣度優先策略進行講解補充內容對每類測試舉結合軟件結構圖對深度優先策略、廣度優先策略進行講解補充內容對每類測試舉例說明以此圖為例講解每種覆蓋并設計測試用例對每個測試用例進行分析,指出它不能覆蓋的情況用PDL描述或流程圖描述程序即可引導學生進行每一步解釋教材P170頁的內容對每條經驗性原則進行解釋根據上面的講授內容讓學生畫本題的等價類,設計有效的和無效的測試用例結合上面的例子,讓學生用邊界值分析法設計測試用例讓學生討論有況,然后再給3)專用語言,專用語言只用于特定的領域。專用語言可移植性和可維護性較差。第四代語言(4GL)程序生成器代表了更為通用的一類4GL,程序生成器可以將更為自然的語言描述翻譯成第三代語言程序,進而更好地消除設計和代碼之間的語義斷層。3、程序設計語言的選擇標準項目的應用領域項目中算法和計算的復雜性項目中數據結構的復雜性用戶的性能需求軟件運行的環境軟件開發人員開發水平。可用的編譯器和交叉編譯器。8)CASE工具支持(ComputerAidedSoftwareEnginering).有應用于軟件計劃、軟件管理、軟件設計和軟件編碼的各種專用工具。1程序設計語言與可靠性程序設計語言的可靠性是指程序設計語言本身不出錯或對錯誤的糾正能力。2程序設計語言與可維護性程序設計語言的可維護性通常指這種語言編寫的程序被理解,被修改及調整和改進的難易程度。程序設計語言的可維護性一般由下面幾個因素決定:①程序設計語言的一致性和緊致性一致性刻畫了語言標記的語義單義性,因此一致性好的語言的可維護性要好于一②程序設計語言的語法規則3程序設計語言與效率不同程序設計語言在程序的效率上的差異很大。程序設計語言的效率由下面因素決定:①程序設計語言的實現機制;解釋性程序(如解釋BASIC)和編譯成中間語言然后又解釋執行的語言(如JAVA)一般要遠遠低于編譯語言。②程序語言對系統底層的訪問和控制能力;補充因果圖的補充因果圖的相關知識讓學生分析例題中的原因和結果引導學生畫出讓學生將因果圖轉換成判定表再設計測試用例學生先練習,然后再根據學生做的情況選擇講解內容舉例說明每種調試方法對每一項進行詳細講解(1)編寫易于修改和維護的代碼(2)編寫易于測試的代碼(3)編寫詳細的程序文檔程序文檔一般指以注釋的形式嵌入程序中的代碼描述。程序文檔應該與程序保持(4)編程中采用統一的標準和約定,降低程序的復雜性(5)分離功能獨立的代碼塊形成新的模塊(1)節簡化(economy)(2)模塊化(Modularity)(3)簡單化(Simplicity)(4)結構化(5)文檔化(documentation)(6)格式化(layout)五、程序設計支持環境(PSE)PSE,programmingsupportenvironmentIDE,integrateddevelopmentenvironmentPSE完成程序編輯、編譯、調試、配置管理、項目管理等一組任務。1)通用性。適用于不同的語言、不同的應用領域和開發方法。3)開放性。能方便的增加新工具。4)支持重用。能支持可重用組件的查詢、存儲和使用。5)自控性。保證自身操作的正確性和協調。6)自帶數據庫。提供數據庫用于管理已開發軟件產品7)保證質量。有助于提高所開發軟件的質量。8)吸引用戶。用戶愿意使用。9)有競爭力。PSE能真正提高軟件的生產率。微軟的VS.Net集成了上述全部的特性,該環境不僅包含了開發軟件所需的全部.2軟件測試基礎1軟件測試的目標與原則應盡早和不斷地進行軟件“測試”,即將這種“測試”貫穿于軟件開發的各個階段,堅持各個階段的技術評審,以便盡早地發現和預防錯誤。②測試用例中,不僅要選擇合理的輸入數據,還要選擇不合理的輸入數據。③在開發各階段應事先分別制定出相應的測試計劃,在測試開始后應嚴格執行,防止④對發現錯誤較多的程序模塊,應進行重點測試。⑤避免程序員測試自己的程序。⑥用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論