【正文】
design design design designAnswer: d(Section ) design model is equivalent to a set of detailed drawings for each room in a house? design design design designAnswer: b(Section ) deployment design elements specify the build order for the software Answer: b(Section )第五篇:軟件工程總結(jié)第一章軟件與軟件工程的概念軟件的概念:軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,軟件包括程序,數(shù)據(jù),及其相關文檔的完整集合。程序是按事先設計的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù)是使程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu)。文檔是與程序開發(fā),維護和使用有關的圖文資料。程序的最小單位是函數(shù)及子程序,程序與數(shù)據(jù)是分離的,在面向?qū)ο蟪绦蛟O計時代,程序的最小單位是類,在類中封裝了相關的數(shù)據(jù)及指令代碼。軟件的特性,判斷正誤:、不可見的邏輯實體,因此,軟件是無法描述的。(錯)軟件的開發(fā)特性是指軟件需要大量手工勞動,難以自動化生產(chǎn)。(對)有缺陷的軟件就是廢品。(錯)軟件的生產(chǎn)指的是軟件的復制。(錯)由于軟件的開發(fā)充滿人的個性特點,因此管理并不決定軟件開發(fā)的成?。ㄥe)。軟件的開發(fā)環(huán)境往往就是軟件的運行環(huán)境,或者與其兼容。(對)合格的軟件產(chǎn)品不需要維護,軟件需要維護說明其質(zhì)量不合格。(錯)軟件可以不斷改進,因此軟件不需要廢棄。(錯)軟件的分類:1,系統(tǒng)軟件:能與計算機硬件緊密配合在一起,使計算機系統(tǒng)各個部件,相關的軟件和數(shù)據(jù)協(xié)調(diào),高效的工作的軟件。2,應用軟件,是在系統(tǒng)軟件的支持下,在特定區(qū)域內(nèi)開發(fā),為特定目的服務的一類軟件。3,支撐軟件,也叫工具軟件,是協(xié)助用戶開發(fā)軟件的工具性軟件。4,可復用軟件,最初實現(xiàn)的典型的可復用軟件是各種標準函數(shù)庫,通常是由計算機廠商提供的系統(tǒng)軟件的一部分。IEEE給出的定義:軟件工程是開發(fā),運行,維護和修復軟件的系統(tǒng)方法。軟件的定義:計算機程序,方法,規(guī)則,相關的文檔資料一集在計算機上運行時所必需的數(shù)據(jù)。軟件危機的典型表現(xiàn)成本太高,預算不準超過預計時間軟件質(zhì)量標準不明確生產(chǎn)率低缺乏文檔資料,難以維護。原因:1,缺乏軟件開發(fā)的經(jīng)驗和有關軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)工作的計劃很難制定。,除了知識背景的差異,缺少合適的交流方法及需求描述工具。3,軟件開發(fā)過程不規(guī)范,缺少方法和規(guī)范的指導。4,隨著軟件規(guī)模的增大,其復雜性往往會呈指數(shù)級升高。5,缺少有效的軟件評測手段,提交用戶的軟件質(zhì)量差。軟件危機發(fā)生的主要原因有:遇到了無法解決的高難度技術(shù)問題(不是)無法招聘到足夠的編程高手(不是)軟件人員與用戶互相不理解(是)計劃和管理不科學、落實不力(是)軟件質(zhì)量標準不明確(是)軟件的質(zhì)量特性包括(選擇)問題1:功能性可靠性使用性經(jīng)濟性(不包括)軟件的質(zhì)量特性包括(選擇)問題2:效率可維護性可移植性經(jīng)濟性(不包括)軟件工程的目標是運用先進的軟件開發(fā)技術(shù)和管理方法來提高軟件的質(zhì)量和生產(chǎn)率,也就是要以較短的周期,較低的成本生產(chǎn)出高質(zhì)量的軟件產(chǎn)品,并最終實現(xiàn)軟件的工業(yè)化生產(chǎn)。軟件生存期:軟件的孕育,誕生,成長,成熟,衰亡的生存過程。軟件生存期由軟件定義,軟件開發(fā)和運行維護三個時期組成,每個時期又可劃分為若干個階段。軟件定義時期的任務主要任務是解決“做什么”的問題,確定工程的總目標和可行性;實現(xiàn)工程目標的策略及系統(tǒng)功能;估計需要的資源和成本;制訂工程進度表。通常又分為3個階段:問題定義,可行性研究,需求分析。軟件開發(fā)時期的任務和包含階段主要任務是解決“如何做”的問題,設計和實現(xiàn)定義的軟件。由概要設計、詳細設計、編碼和測試4個階段組成。軟件運行維護時期的主要任務是使軟件持久地滿足用戶的需要,通常有4類維護活動:改正性維護;適應性維護;完善性維護;預防性維護。開發(fā)過程中的典型文檔:軟件需求規(guī)格說明書。項目計劃。軟件測試計劃。軟件設計說明書。用戶手冊。軟件工程各個階段的基本任務問題定義與可行性研究:解決什么問題?能否解決問題?是否值得做?”需求分析:做什么軟件設計:如何實現(xiàn)程序編碼和單元測試:實現(xiàn)設計集成和系統(tǒng)測試:組裝連接測試、功能驗證測試軟件運行和維護:修改 第二章軟件工程方法與工具軟件工具:是指能支持軟件生存周期中某一階段(如系統(tǒng)定義,需求分析,設計,編碼,測試,維護等)的需要而使用的軟件工具。需求分析工具結(jié)構(gòu)化圖形工具箱。通過數(shù)據(jù)流程圖DFD進行功能分析。包括DFD圖形工具,實體關系圖(ER)圖形工具,Jackson圖形工具,Warnier圖形工具,Visio綜合工具,面向?qū)ο蠊ぞ?,Rational Rose,PowerDesigner,Visio 設計工具(1)概要設計工具:設計目標軟件的體系結(jié)構(gòu)、控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。軟件的體系結(jié)構(gòu)通常用模塊結(jié)構(gòu)圖來描述。模塊的數(shù)據(jù)結(jié)構(gòu)通常用實體關系圖來描述。Visio。Rational Rose 詳細設計工具。設計模塊的算法和內(nèi)部實現(xiàn)細節(jié)。詳細設計描述方法有輸入處理輸出(IPO)圖。問題分析圖(PAD)。盒圖(NS圖)。流程圖(FC)。程序設計語言(PDL)。結(jié)構(gòu)化語言。判定表。判定樹第三章軟件需求獲取與結(jié)構(gòu)化分析方法 需求獲取的主要任務是與用戶溝通,了解系統(tǒng)或產(chǎn)品的目標是什么,客戶或用戶想要實現(xiàn)什么,系統(tǒng)和產(chǎn)品如何滿足業(yè)務的要求,最終系統(tǒng)或產(chǎn)品如何用于日常工作。獲取并理解用戶的需求是軟件工程師所面對的最困難的任務之一。需求分析的困難體現(xiàn):系統(tǒng)的目標或范圍問題;需求不準確性問題;需求的易變問題需求獲取的任務:發(fā)現(xiàn)和分析問題,并分析問題的原因,結(jié)果關系。與用戶進行各種方式的交流,并使用調(diào)查研究方法收集信息。按照三個成分即數(shù)據(jù),過程和接口觀察問題的不同側(cè)面。將獲取的需求文檔化,形式有用例,決策表,決策樹等。需求獲取的原則:深入淺出,以流程為主線。獲取具體的需求的途徑1,與用戶交流。2,現(xiàn)有產(chǎn)品或競爭產(chǎn)品的描述文檔。3,系統(tǒng)需求規(guī)格說明。4,當前系統(tǒng)的問題報告和改進要求。5,市場調(diào)查和用戶問卷調(diào)查。6,觀察用戶如何工作。關于需求獲取問題的認識辨析:沒有與用戶交流就不可能獲取系統(tǒng)需求。(不能獲取準確、全面的系統(tǒng)需求)沒有經(jīng)過與用戶交流而獲取的需求都是不真實的需求。(一些需求從用戶以外的途徑獲取)系統(tǒng)開發(fā)必須獨立完成,參考類似系統(tǒng)及技術(shù)文檔屬于抄襲行為,應予避免。(系統(tǒng)開發(fā)包含研究行為,應了解對手產(chǎn)品,取長補短)系統(tǒng)開發(fā)包含改進當前系統(tǒng)的缺陷和不足。(對)需求調(diào)查時,用戶所說的需求未必是真實、準確的需求,因此需求分析需要依賴用戶,但是不能過分迷信用戶。(對,需求描述是困難的)觀察用戶如何工作也是一種需求調(diào)查行為。(對)軟件需求分析階段的任務:需求獲取,需求分析,需求定義,需求驗證。完整性,正確性,合理性,可行性,充分性。結(jié)構(gòu)化分析方法:是一種建模技術(shù)。核心是數(shù)據(jù)字典。功能模型用數(shù)據(jù)流圖(DFD)來描述使用實體—關系圖(ER圖)建立數(shù)據(jù)模型。使用狀態(tài)轉(zhuǎn)換圖(簡稱狀態(tài)圖)建立系統(tǒng)行為模型。數(shù)據(jù)字典。加工規(guī)格說明。需求建模的依據(jù)是需求描述數(shù)據(jù)建模,ER圖,需要認真看。第四章結(jié)構(gòu)化設計方法結(jié)構(gòu)化設計方法是在模塊化,自頂向下逐步細化及結(jié)構(gòu)化程序設計技術(shù)基礎上發(fā)展起來的,結(jié)構(gòu)化設計方法可分為兩類:一類是根據(jù)系統(tǒng)的數(shù)據(jù)流進行設計,稱為面向數(shù)據(jù)流的設計,或稱過程驅(qū)動設計,另一類是根據(jù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進行設計,稱為面向數(shù)據(jù)結(jié)構(gòu)的設計,或稱數(shù)據(jù)驅(qū)動的設計。軟件的體系結(jié)構(gòu)設計,模塊化設計都是分而治之策略的具體表現(xiàn)。模塊化是將整體軟件劃分為獨立命名且可獨立訪問的模塊,不同的模塊通常具有不用的功能或指責,每個模塊可獨立開發(fā),測試,最后組裝成完整的軟件。模塊是構(gòu)成軟件的基本構(gòu)件。模塊并不是越小越好,當模塊數(shù)目增加時,每個模塊的規(guī)模將減小,開發(fā)單個模塊的成本確實減少了,但是隨著模塊數(shù)目增加,模塊之間關系的復雜程度也會增加,設計模塊間接口所需要的工作量也將增加。模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而與軟件系統(tǒng)中其他模塊的接口是簡單的,若一個模塊只具有單一的功能且與其他模塊沒有太多的聯(lián)系,那么稱此模塊有獨立性。自頂向下,逐步細化:抽象是指忽視一個主題中與當前目標無關的方面,以便更充分地注意與當前目標有關的方面,當我們進行軟件設計時,設計開始時應盡量提高軟件的抽象層次,按抽象級別從高到低進行軟件設計,將軟件的體系結(jié)構(gòu)按自頂向下方式,對各個層次的過程細節(jié)和數(shù)據(jù)細節(jié)逐層細化,直到用程序設計語言的語句能夠?qū)崿F(xiàn)為止,從而最后確定整個系統(tǒng)的體系結(jié)構(gòu),這就是自頂向下逐步細化過程。復用是指同一事物不做修改或稍加修改就可以多次重復使用,將服用的思想用于軟件開發(fā),稱為軟件復用。1是盡量使用已有的構(gòu)件。2是如果確實需要創(chuàng)建新的構(gòu)件,則在設計時應該考慮將來的可重復使用性。軟件設計的階段與任務:從工程管理的角度,可以將軟件設計分為概要設計階段和詳細設計階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設計劃分為體系結(jié)構(gòu)設計、數(shù)據(jù)設計、接口設計和過程設計4部分;概要設計包括體系結(jié)構(gòu)設計、數(shù)據(jù)設計、接口設計。詳細設計即過程設計,對結(jié)構(gòu)表示進行細化,得到軟件詳細的數(shù)據(jù)結(jié)構(gòu)和算法。軟件設計各項設計工作的依據(jù):體系結(jié)構(gòu)設計,定義軟件模塊及其之間的關系,依賴于數(shù)據(jù)流圖。數(shù)據(jù)設計,依賴于ER圖。接口設計,依賴于頂層數(shù)據(jù)流圖。過程設計:依賴于加工規(guī)格說明、狀態(tài)圖基于數(shù)據(jù)流方法的設計過程:。,典型的數(shù)據(jù)流類型有變換型數(shù)據(jù)流和事務型數(shù)據(jù)流。軟件模塊結(jié)構(gòu)的改進方法:1,模塊功能的完善化。2,消除重復功能,改善軟件結(jié)構(gòu)。3,模塊的作用范圍應在控制范圍之內(nèi)。4,盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。5,避免或減少使用病態(tài)連接。6,模塊的大小要適中。接口設計的依據(jù)是數(shù)據(jù)流圖中的自動化系統(tǒng)邊界。自頂向下,逐步細化的設計過程主要包括兩個方面:一是將復雜問題的解法分析和細化成由若干個模塊組成的層次結(jié)構(gòu),二是將每個模塊的功能逐步分解細化為一系列的處理。第五章編碼編碼容易出現(xiàn)的風格不足變量或函數(shù)名字缺乏具體含義變量或函數(shù)名字與其用途不符變量或函數(shù)未加上必要的注釋函數(shù)未說明其功能、參數(shù)的意義引用的符號未加以解釋和說明對循環(huán)等重要的程序語句未注釋對用到的重要庫函數(shù)沒有解釋說明對結(jié)構(gòu)體等復雜數(shù)據(jù)結(jié)構(gòu)的組成成分沒有解釋說明缺乏必要的提示語句 第六章軟件測試方法軟件測試是在軟件投入生產(chǎn)性運行之前,對軟件需求分析,設計規(guī)格說明和編碼的最終復審,是軟件質(zhì)量控制的關鍵步驟。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。