電大-軟件工程形成性考核冊復習資料_第1頁
電大-軟件工程形成性考核冊復習資料_第2頁
電大-軟件工程形成性考核冊復習資料_第3頁
電大-軟件工程形成性考核冊復習資料_第4頁
電大-軟件工程形成性考核冊復習資料_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

37/37軟件工程作業1(第1~4章)一,選擇題:開發軟件所需高成本和產品的低質量之間有著尖銳的沖突,這種現象稱做(C)。A.軟件工程B.軟件周期C.軟件危機D.軟件產生瀑布模型本質上是一種(A)模型。A.線性依次B.依次迭代C.線性迭代D.早期產品瀑布模型存在的問題是(B)。A.用戶簡單參加開發B.缺乏敏捷性C.用戶與開發者易溝通D.適用可變需求螺旋模型是一種將瀑布模型和(A)結合起來的軟件開發模型。A.增量模型B.專家系統C.噴泉模型D.變換模型原型化方法是用戶和設計者之間執行的一種交互構成,適用于(A)系統。A.需求不確定性高的B.需求確定的C.管理信息D.實時下列有關軟件工程的標準,屬于國際標準的是(D)結構化方法是一種基于(D)的方法。A.數據結構B.程序結構 C.算法D.數據流軟件可行性探討實質上是要進行一次(A)需求分析,設計過程。A,簡化,壓縮的B,具體的C,徹底的D,深化的可行性探討的目的是(D)A,分析開發系統的必要性 B,確定系統建設的方案 C,分析系統風險 D,確定是否值得開發系統設年利率為i,現存入p元,不計復利,n年后可得錢數為(C)。A,P×(1*n)B,P×(1)*nC,p×(1)nD,p×()可行性探討是在(A)之前A,系統開發 B,測試 C,試運行 D,集成測試可行性探討須要的時間長短取決于系統的規模,一般來說,可行性探討的成本只是預期總成本的(C)。A,1% B,20% C,8% D,50%我國正式頒布實施的(B)對計算機病毒的定義具有法律性,權威性。A.《計算機軟件愛護條例》B.《中華人民共和國計算機信息系統平安愛護條例》C.《中華人民共和國著作權法》D.《計算機病毒防治管理方法》效率是一特性能要求,因此應當在以下哪個階段規定?BA,可行性分析B,需求分析C,概要設計D,具體設計需求規格說明書的作用不包括(D)A,軟件驗收的依據B,用戶與開發人員對軟件要做什么的共同理解C,軟件可行性探討的依據D,軟件設計的依據數據字典是用來定義(D)中的各個成份的具體含義的。A,程序流程圖B,功能結構圖C,系統結構圖D,數據流程圖數據流程圖是(A)方法中用于表示系統邏輯模型的一種圖形工具。A,B,C,D,中的每個加工至少有(A)。""A,一個輸入流或一個輸出流 B,一個輸入流和一個輸出流C,一個輸入流 D,一個輸出流需求分析階段的關鍵任務是確定(D)""A,軟件開發方法B,軟件開發工具C,軟件開發費D,軟件系統的功能在方法中全面指導模塊劃分的最重要的原則是""(D)。A,程序模塊化B,模塊高內聚C,模塊低耦合D,模塊獨立性在模塊的3種基本屬性中,反映模塊內部特性的是(C)。A,接口B,功能C,邏輯D,狀態模塊的耦合性可以依據耦合程度的凹凸進行排序,以下哪一項符合從低到高的正確次序(D)。A,數據結構耦合,公共耦合,限制耦合,內容耦合B,數據耦合,限制耦合,數據結構耦合,公共耦合C,無直接耦合,數據結構耦合,內容耦合,限制耦合D,無直接耦合,數據耦合,限制耦合,內容耦合是描述處理過程(C)A,做什么B,為什么做C,怎么做D,對誰做(D)工具在軟件具體設計過程中不接受。A,判定表B,圖C,D,圖為高質量地開發軟件項目,在軟件結構設計時,必需遵循(A)原則。A.信息隱藏B,質量限制C,程序優化D,數據共享當一個模塊直接運用另一個模塊的內部數據,這種模塊之間的耦合為(D)A,數據耦合B,公共耦合C,標記耦合D,內容耦合具體設計與概要設計連接的圖形工具是(B)。"" A,圖B,圖C,圖D,程序流程圖下列幾種類型中,耦合性最弱的是(D)。"" A,內容型B,限制型C,公共型D,數據型軟件結構運用的圖形工具,一般接受(C)圖。"" A, B, C, D,在七種偶合中,最低偶合是(D)。A,內容偶合B,公共偶合C,數據偶合D,非直接偶合二,簡答題什么是軟件工程?軟件工程的目標是什么?答:軟件工程是①將系統化的,規范的,可度量的方法應用于軟件的開發,運行和維護過程,即將工程化應用于軟件開發和管理之中,②對①中所選方法的探討。目標:合理預算開發成本,付出較低的開發費用。實現預期的軟件功能,達到較好的軟件性能,滿意用戶的需求。3提高軟件的可維護性,降低維護費用。4提高軟件開發生產率,及時交付運用指出瀑布模型中下列任務的依次:驗收測試,項目支配,單元測試,需求評審,成本估計,概要設計,具體設計,系統測試,設計評審,編碼,需求規格說明書。答:項目支配,成本估計,需求規格說明書,需求評審,概要設計,具體設計,設計評審,編碼,單元測試,系統測試,驗收測試可行性探討報告的主要內容是什么?答:可行性探討主要包括以下幾個部分:(1)概述(2)技術可行性(3)項目成熟程度(4)市場需求狀況和風險分析(5)投資估算及資金籌措(6)經濟與社會效益(7)綜合實力和產業基礎(8)項目實施進度支配(9)其它尚須要說明的必要的方面(10)結論什么是需求分析?需求分析階段的基本任務是什么?答:所謂"需求分析",是指對要解決的問題進行具體的分析,弄清晰問題的要求,包括須要輸入什么數據,要得到什么結果,最終應輸出什么。可以說,“需求分析”就是確定要計算機“做什么”。任務:確定軟件項目的目標和范圍。調查運用者的要求,分析軟件必需做什么,編寫需求規格說明書等它相關文檔,并進行必要的需求審查。除此之外,還包括需求變更限制,需求風險限制,需求版本限制等對需求的管理工作什么是結構化分析方法?該方法運用什么描述工具?答:結構化的分析方法是面對數據流的方法,因此,此方法探討的核心是數據的組成和數據流向和對數據的加工處理。結構化分析方法用抽象模型的概念,依據軟件內部數據傳遞,變換的關系,自頂向下逐層分解,直至找到滿意功能要求的全部可實現的軟件元素為止描述工具:1系統流程圖2數據流程圖3數據字典4圖5層次方框圖6實體—關系圖7狀態—變遷圖結構化分析方法通過哪些步驟來實現答:1)

確定系統的功能要求2)

確定系統的數據要求3)

確定系統的操作要求和界面要求4)

確定系統的性能要求5)

確定系統的運行要求6)

獲得當前系統的物理模型7)

抽象出當前系統的邏輯模型8)

建立目標系統的邏輯模型。9)

修正開發支配10)假如須要則開發系統原型什么是數據流圖其作用是什么其中的基本符號各表示什么含義答:數據流圖:簡稱,就是接受圖形方式來表達系統的邏輯功能,數據在系統內部的邏輯流向和邏輯變換過程,是結構化系統分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。數據流圖的基本符號的意思:1.矩形表示數據的外部實體;2.圓角的矩形表示變換數據的處理邏輯;3.少右面的邊矩形表示數據的存儲;4.箭頭表示數據流。什么是數據字典?其作用是什么?它有哪些條目?答:數據字典,主要用來描述數據流程圖中的數據流,數據存儲,處理過程和和數據源點/終點。作用:數據流程圖描述了系統的邏輯結構,其中的四個基本圖形元素的含義無法在數據流程圖中具體說明,因此數據流程圖須要與其他工具協作運用,數據字典就是這樣的工具之一。包括的條目:數據流詞條數據元素詞條數據存儲詞條數據加工處理詞條數據源點及終點詞條什么是概要設計?有哪些基本任務?答:概要設計:依據用戶的需求先確定軟件系統的總體結構和總的設計原則基本的任務:設想供選擇的方案。舉薦最佳方案。功能分解,確定軟件結構。設計軟件結構。制定測試支配。數據設計。書寫文檔。包括總體設計規格說明書。用戶手冊。測試支配。設計審查和復審。具體設計的基本任務是什么?有那幾種描述方法?答:具體設計階段的任務是要為編寫程序代碼設計“圖紙”,由程序員按“圖紙”用某種高級程序設計語言編寫程序代碼。主要方法有設計程序流程圖,表格設計符號以及過程設計語言。什么是變換流?什么是事物流?答:變換型數據流可以劃分為明顯的三部分:邏輯輸入,中心變換,邏輯輸出事務流的特點是數據沿某個輸入路徑流淌,該路徑將外部信息轉換成事務,其中放射出多條事務處理路徑的中心處理被稱為中心事務模塊的內聚有哪幾種?模塊間的耦合有哪幾種?答:內聚分為七種類型:巧合內聚——一個模塊執行多個完全互不相關的動作,則這個模塊就有巧合內聚邏輯內聚——當一個模塊執行一系列相關的動作時,稱其有邏輯內聚。時間性內聚——當一個模塊內的多個任務是與時間有關時,這個模塊具有時間性內聚。過程內聚——模塊執行的若干動作之間有依次關系。通信內聚——模塊執行的若干動作之間有依次關系,并且全部動作是在相同的數據上執行。信息內聚——一個模塊中執行一系列動作,每個動作都有自己的入口點和處理代碼,全部的動作都作用在相同的數據結構上,這樣的模塊叫做信息內聚。功能性內聚——一個模塊中各個部分都是完成某一具體功能必不可少的組成部分耦合分為七類:內容耦合——假如一個模塊直接參考另一個模塊的內容,則這兩個模塊是內容耦合。公共耦合——假如多個模塊都訪問同一個公共數據環境,則稱它們是公共耦合。外部耦合——假如兩個模塊都訪問同一個全局簡單變量而不是同一全局數據結構,而且,不是通過參數表傳遞該全局變量的信息,則這兩個模塊屬于外部耦合。限制耦合——假如模塊A向模塊B傳遞一個限制信息,則稱這兩個模塊是限制耦合的數據結構耦合——當一個模塊調用另一個模塊時傳遞了整個數據結構,這兩個模塊之間具有數據結構耦合。數據耦合——假如兩個模塊傳遞的是數據項,則這兩個模塊是數據耦合。非直接耦合——假如兩個模塊之間沒有直接關系,它們之間的聯系完全通過主模塊的限制和調用來實現的,這就是非直接耦合。三,應用題1.某旅館的服務如下:可以撥分機號和外線號碼。分機號是從7201至7299。外線號碼先撥9,然后是市話號碼或長話號碼。長話號碼是以區號和市話號碼組成。區號是從100到300中隨意的數字串。市話號碼是以局號和分局號組成。局號可以是455,466,888,552中隨意一個號碼。分局號是隨意長度為4的數字串。寫出在數據字典中,號碼的數據條目的定義(即組成)。名稱簡稱類型長度取值范圍分機號字符47201..7299外線市話號字符99+[455|466|888|552]+4{數字}4外線長話號字符129+[100|101|102298|299|300]+[455|466|888|552]+4{數字}42.下面是旅客訂飛機票的需求描述,試畫出分層的數據流程圖。顧客將訂票單交給預訂系統:(1)假如是不合法訂票單,則輸出無效訂票信息;(2)對合法訂票單的預付款登錄到一個記賬文件中;(3)系統有航班目錄文件,依據填寫的旅行時間和目的地為顧客支配航班;(4)在獲得正確航班信息和確認已交了部分預付款時發出取票單,并記錄到取票單文件中。顧客在指定日期內用取票單換取機票:(1)系統依據取票單文件對取票單進行有效性檢查,無效的輸出無效取票信息;(2)持有有效取票單的顧客在補交了剩余款后將獲得機票;(3)記賬文件將被更新,機票以及顧客信息將被登錄到機票文件。訂單中有訂票日期,旅行日期,時間要求(上午,下午,晚上),動身地,目的地,顧客姓名,身份證號,聯系。0層流程圖預定流程圖取機票流程圖3.一個簡化的圖書館信息管理系統有以下功能:(1)借書:輸入讀者借書證,系統檢查借書證是否有效;查閱借書文件,檢查該讀者所借圖書是否超過10本,若已達10本,顯示信息“已經超出借書數量”,拒借;未達10本,辦理借書(檢查庫存,修改庫存信息并將讀者借書信息登入借書記錄)(2)還書:輸入書號和讀者號,從借書記錄中讀出與讀者有關的記錄,查閱所借日期,假如超過3個月,作罰款處理。否則,修改庫存信息與借書記錄。(3)查詢:可通過借書記錄,庫存信息查詢讀者狀況,圖書借閱狀況及庫存狀況,打印各種統計表。請就以上系統功能畫出分層的圖,并建立重要條目的數據字典。0層數據流程圖還書流程圖借書流程圖查詢流程圖數據字典:元素名稱名稱類型說明1還書處理處理依據書號做還書處理,違規做懲罰2有效性檢查處理檢查讀者號,圖書號的有效性3借書處理處理按讀者號,圖書號進行借書處理4查詢處理管理員對一些基本信息進行查詢5打印報表處理打印查詢到的信息6懲罰管理處理依據規則對延期賜予相應的懲罰7數量檢查處理對讀者借出的數量是否符合規定進行檢查001讀者信息數據存儲讀者信息錄入,修改,刪除,保存002庫存信息數據存儲圖書的基本的狀況以及全部圖書的整體狀況003錯還信息數據存儲存儲借還書信息,系統自動處理,不能人工錄入004懲罰信息數據存儲存儲延期的懲罰信息軟件工程作業2(第5~7章)一,選擇題從本質上說,面對對象是“先”確定(A)后確定執行的動作。A.動作的主體 B.屬性 C.關系 D.方法(B)是對象的靜態特征。A.方法 B.屬性 C.關系 D.操作對象的(D)使對象的動態特征A.特征 B.屬性 C.關系 D.操作屬于某個類的一個具體對象稱為該類的(A)。A.實例 B.虛擬 C.繼承 D.多態是(A)。一種可視化的建模語言是一種可視化的程序設計語言是一種過程是一種方法封裝的的作用是(A)。A.復用 B.對象 C.實例 D.方法8.面對對象分析的核心在于建立(B)模型。A.建立正確的模型B.識別問題域對象C.識別對象之間的關系D.上面全部9.面對對象分析過程中建立的模型有(D)。A.數據模型,功能模型,活動模型B.對象模型,功能模型,測試模型C.屬性模型,功能模型,對象模型D.對象模型,功能模型,動態模型10.下列的(C)不是分析建模的目的。A.定義可驗證的軟件需求B.描述客戶需求C.開發一個簡單的問題解決方案D.建立軟件設計的基礎11.下列的(C)不屬于面對對象分析模型。A.用例圖B.類圖C.實體關系圖D.依次圖12.(A)用于描述系統中概念層次的對象。A.分析類B.界面類C.實體類D.限制類13.在基于用例的面對對象分析過程中,定義交互行為的關鍵在于通過描述分析類實例之間的(A)將用例的職責安排到分析類中。A.消息傳遞B關聯關系C繼承關系D上下文關系14.用例的實現細微環節不會在(B)描述。A.用例說明B.用例圖C.活動圖D.依次圖15.用例的職責通常安排給(D)的對象。A.發送消息B.接收消息C.發送和接收雙方D.分析類16.組織機構圖是(C)。A.的一個最新圖B.類圖的一種C.用于識別角色的協助圖D.用例圖的一種17.在圖書館系統中,假如已經構造了一個一般借書者類,后來發覺圖書館的學生和老師在借書中有不同要求。請問在面對對象設計中用(B)方法可以便利地設計這兩個類?A.信息隱藏B.繼承C.動態聯編D.代碼復制18.框架是一組可用于不同應用的(A)集合A.類B.對象C.模塊D.代碼19.下面哪個選項不能描述子系統之間的關系。(D)A.懇求——服務關系B.繼承關系C.依靠關系D.數據關系20.每個子系統的接口上定義了若干(B),體現了子系統的功能。A.說明B.操作C.屬性D.關系21.通常將具有共性的非功能要求設計在(B),以削減重新開發的工作量。A.接口層B.中間層C.最低層D.最高層22.每個用例至少應當有一個(C),它通常沒有屬性而只有方法,只是起協調和限制作用。A.接口類B.實體類C.限制類D.界面類23.類有三種類型即(A)。A.邊界類,實體類,限制類B.實體類,數據類,界面類C.限制類,實體類,數據類D.界面類,限制類,公共類24.下面那個選項不是正確的面對對象設計思想。(C)A.對接口進行設計B.發覺變化并且封裝它C.先繼承后組合D.先組合后繼承25.定義類的屬性類型時盡量運用已有的類型,太多的自定義類型會降低系統的(A)指標。A.可維護性B.平安性C.開發效率D.可移植性二,簡答題舉例說明類和對象的關系。答:學生可作為一個類學生類,每個學生就是這個學生類的一個實例,例如,學生張三就是學生類的一個實例。面對對象分析的關鍵步驟有哪些?應建立哪幾個模型?答:關鍵步驟有識別問題域的對象并分析它們相互之間的關系,建立簡潔,精確,可理解的正確模型;應建立的模型有功能模型,對象模型,動態模型。什么是實體類,邊界類和限制類?為什么將分析類劃分成這三種類型?答:(1)實體類保存要存入永久存儲體的信息。實體類通常在事務流或交互圖中,是對用戶最有意義的類。邊界類位于系統與外界的交界處,包括全部的窗體,報表,系統硬件接口,與其他系統的接口。限制類負責協調其他類的工作。每個用例中至少應當有一個限制類,它限制用況中的事務依次。(2)分為三種類型是因為它們各自的功能不同。界面類——描述系統與角色之間的接口。限制類——在分析模型內表示協調,依次,事務處理以及限制其他對象的類。實體類——為須要許久保存的信息進行建模的類。中有哪幾類個視圖,它們的作用分別是什么?答:(1)用例視圖()用例視圖用于描述系統的功能集。它是從系統外部以用戶角度,對系統做的抽象表示。用例視圖所描述的系統功能依靠于外部用戶或另一個系統觸發激活,為用戶或另一個系統供應服務,實現與用戶或另一個系統之間的交互。用例視圖中可以包含若干個用例,用例表示系統能夠供應的功能,用例視圖是其他視圖的核心和基礎。其他視圖的構造依靠于用例視圖中所描述的內容,因為系統的最終目標是實現用例視圖中描述的功能,同時附帶一些非功能性的特性,因此用例視圖影響著全部其他的視圖。(2)邏輯視圖()假如說用例視圖描述系統“做什么”,則邏輯視圖就是描述“怎么做”。系統的靜態結構描述類,對象和它們之間的關系,反映的是系統靜態特征或結構組成。(3)組件視圖()組件視圖用來描述系統實現的結構和行為特征,反映系統各組成元素之間的關系。組件視圖由組件圖實現,主要供開發者和管理者運用。(4)并發視圖()并發視圖用來描述系統的動態和行為特征。并發視圖將任務劃分為進程或線程形式,通過任務劃分引入并發機制,可以高效地運用資源,并行執行和處理異步事務。除了劃分系統為并發執行的進程或線程外,并發視圖還必需處理通信和同步問題。(5)配置視圖()配置視圖體現了系統的實現環境,反映系統的物理架構。配置視圖還包括一個映射,該映射顯示在物理架構中組件是怎樣安排的。5.依次圖在分析階段的作用?答:依次圖描述了一組交互對象間的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間依次6.活動圖在分析階段的作用?答:活動圖反映系統中從一個活動到另一個活動的流程,強調對象間的限制流程。活動圖特殊適合描述工作流和并行處理過程。具體地說活動圖可以描述一個操作過程中須要完成的活動;描述一個對象內部的工作;描述如何執行一組相關的動作,以及這些動作如何影響它們四周的對象;說明一個業務活動中角色,工作流,組織和對象是如何工作的。7.比較結構化設計和面對對象設計區分?答:結構化設計:系統被劃分成多個模塊,這些模塊被組織成一個樹型結構。根就是主模塊,葉子是最低級的功能模塊。這棵樹也表示調用結構:每個模塊都調用自己的直接下級模塊,并被自己的直接上級模塊調用。頂層模塊負責收集應用程序最重要的那些執行策略,底層模塊實現處理細微環節。在這個體系結構中越靠上層位置,概念的抽象層次就越高。但是,由于上層模塊須要調用下層模塊,所以這些上層模塊就依靠于下層模塊的處理細微環節。也就是說,當實現細微環節發生變化時,抽象也會受到影響;假如想復用某一個抽象的話,就必需把它依靠的細微環節都一起拖過去。 面對對象設計:上層創建的抽象不依靠于任何細微環節,而細微環節則高度依靠于上層的抽象。這種依靠關系的變化正是結構化設計與面對對象設計的根本區分。8.什么是框架,它與“設計”有什么關系?答:框架是一組可用于不同應用的類的集合。框架中的類通常是一些抽象類并且相互有聯系,可以通過繼承的方式運用這些類,當面對對象設計進行底層設計時,對每個類進行具體設計,設計類的屬性和操作,優化類之間的關系,就可以設計成框架來對類的設計進行構架和優化。9.系統的物理構架中應當包括哪些信息?答:用的配置圖描述系統的物理構架,然后將需求分析階段捕獲的系統功能安排到這些物理節點上。包括的信息為節點的拓撲結構,硬件設備配置,通信路徑,各個節點上運行的系統軟件配置,應用軟件配置。三,應用題一個多媒體商店系統包含一個由媒體文件構成的數據庫,有兩類媒體文件:圖像文件和聲音文件。每個媒體文件都出名稱和唯一的編碼,而且文件包含作者信息和格式信息,聲音文件還包含聲音文件的時長(以秒為單位)和作者的信息。假設每個媒體文件可以由唯一的編碼所識別,系統要供應以下功能:媒體庫中可以添加新的特殊媒體文件。通過給定的文件編碼查找須要的媒體文件。從媒體庫中刪除指定的媒體文件。給出媒體庫中媒體文件的數量。考慮類和應當具有哪些恰當的屬性和方法答:類的屬性有(文件名稱),(編碼),(作者信息),(格式信息);類除了擁有以上屬性外還有屬性(文件時長);類的方法:()(添加圖像文件),()(刪除文件),()(查找文件),()(返回媒體文件的數量);類的方法:()(添加聲音文件),()(刪除文件),()(查找文件),()(返回媒體文件的數量)。若把學生看成一個實體,它可以分成多個子實體,如小學生,中學生和大學生等。在面對對象的設計中,可以創建如下4個類:類,類,;類。試給出這4個類的屬性以及它們之間的關系。答:類為基類,其他三個類都是的子類。類的屬性有:(姓名),(性別),(年齡),(班級)。類的屬性有:(是否是少先隊員),(是否是三好學生)。類的屬性為:(是否是團員),(文科理科)。類的屬性為:(是否黨員),(學院),(專業)。三,應用題某學校領書的工作流程為:學生班長填寫領書單,班主任審查后簽名,然后班長拿領書單到書庫領書。書庫保管員審查領書單是否有班主任簽名,填寫是否正確等,不正確的領書單退回給班長;假如填寫正確則賜予領書并修改庫存清單;當某書的庫存量低于臨界值時,登記需訂書的信息。每天下班前為選購 部門供應一張訂書單。用活動圖來描述領書的過程。解:運用依次圖描述下面的情景,當用戶在自己的計算機上向網絡打印機發出一個打印任務時,他的計算機便向打印機服務器發送一條打印命令(),打印機服務器假如發覺網絡打印機處于空閑狀態,則向打印機發送打印命令(),否則向打印隊列發送一條保存命令()。解:某報社接受面對對象技術實現報刊征訂的計算機管理系統,該系統基本需求如下:(1)報社發行多種刊物,每種刊物通過訂單來征訂,訂單中有代碼,名稱,訂期,單價,份數等項目,訂戶通過填寫訂單來訂閱報刊。

(2)報社下屬多個發行站,每個站負責收集登陸訂單,打印收款憑證等事務。

(3)報社負責分類并統計各個發行站送來的報刊訂閱信息。

請就此需求建立對象模型。""解:軟件工程作業3(第8~11章)選擇題結構化語言是介于自然語言和形式語言之間的一種(D)。A.半形式語言B.計算機語言C.低級語言D.高級語言程序設計語言的技術特性不應包括(C)。""A,數據結構的描述性B,抽象類型的描述性C,數據庫的易操作性D,軟件的可移植性程序的三種基本限制結構是(B)。""A.過程,子程序和分程序B.依次,選擇和重復C.遞歸,堆棧和隊列D.調用,返回和轉移結構化程序設計主要強調的是(D)。""A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序易讀性下列關于功能性注釋不正確的說法是(B)。A.功能性注釋嵌在源程序中,用于說明程序段或語句的功能以及數據的狀態B.注釋用來說明程序段,須要在每一行都要加注釋C.可運用空行或縮進,以便很簡單區分注釋和程序D.修改程序也應修改注釋下列關于效率的說法不正確的是(D)。A.效率是一特性能要求,其目標應當在需求分析時給出B.提高程序效率的根本途徑在于選擇良好的設計方法,數據結構與算法C.效率主要指處理機時間和存儲器容量兩個方面D.程序的效率與程序的簡單性無關結構化維護與非結構化維護的主要區分在于(B)。A.軟件是否結構化B.軟件配置是否完整C.程序的完整性D.文檔的完整性關于語言下列說法不正確的是(B)。A.跨平臺的 B.動態指針 C.說明型的 D.面對對象的運用白盒測試方法時,確定測試數據應依據(A)和指定的覆蓋標準。A程序內部邏輯B.程序困難結構C.運用說明書D.程序的功能確認測試主要涉及的文檔是(A)。""A,需求規格說明書B,概要設計說明書C,具體設計說明書D,源程序測試的關鍵問題是(D)。A.如何組織對軟件的評審B.如何驗證程序的正確性C.如何接受綜合策略D.如何選擇測試用例黑盒測試在設計測試用例時,主要探討(A)。""A.需求規格說明B.具體設計說明C.項目開發支配D.概要設計說明與具體設計說明下面哪些測試屬于黑盒測試(B)。A,路徑測試B,等價類劃分C,條件推斷D,循環測試在下述哪一種測試中,測試人員必需接觸到源程序(B)。A,功能測試 B,結構測試C,功能測試和結構測試D,性能測試檢查軟件產品是否符合需求定義的過程稱為(D)。A,確認測試B,集成測試C,驗收測試D,驗證測試軟件測試方法中,黑盒,白盒測試法是常用的方法,其中白盒測試主要用于測試(D)。結構合理性B,軟件外部功能C,程序正確性D,程序內部邏輯軟件維護中,因修改交互輸入的依次,沒有正確的記錄而引起的錯誤是(A)產生的副作用。A,文檔B,數據C,編碼D,設計以下屬于軟件維護階段文檔的是(C)。A,軟件需求說明B,操作手冊C,軟件問題報告D,測試分析報告產生軟件維護的副作用,是指(C)。A,開發時的錯誤B,隱含的錯誤C,因修改軟件而造成的錯誤D,運行時誤操作維護中,因誤刪除一個標識符而引起的錯誤是(C)副作用。A,文檔B,數據C,編碼D,設計可維護性的特性中,相互促進的(A)。A,可理解性和可測試性B,效率和可移植性C,效率和可修改性D,效率和結構好軟件維護的困難主要緣由是(C)A,費用低B,人員少C,開發方法的缺陷D,用戶不協作軟件維護費用高的主要緣由是(C)。""A,人員少B,人員多C,生產率低D,生產率高為了適應軟硬件環境變化而修改軟件的過程是(C)。""A,校正性維護 B,完善性維護 C,適應性維護D,預防性維護可維護性的特性中,相互沖突的是(B)A.可理解性與可測試性B.效率與可修改性C.可修改性和可理解性D.可理解性與可讀性各種不同的軟件維護中,以(C)維護所占的維護量最小。糾錯性維護B,代碼維護C,預防性維護D,文檔維護在變更限制中,(B)可以用來確保由不同用戶所執行的并發變更。A.異步限制B.同步限制C.存取限制D.基線限制變更限制是一項最重要的軟件配置任務,其中“檢出”和(A)處理實現了兩個重要的變更限制要素,即存取限制和同步限制。A.登入B.管理C.填寫變更要求D.審查用圖表示軟件項目進度支配,下列說法中正確的是""(B)A.能夠反映多個任務之間的困難關系B.能夠直觀表示任務之間相互依靠制約關系C.能夠表示哪些任務是關鍵任務D.能夠表示子任務之間的并行和串行關系基線可作為軟件生存期中各開發階段的一個檢查點。當接受的基線發生錯誤時,可以返回到最近和最恰當的(C)上""A.配置項B.程序C.基線D.過程簡答題為建立良好的編程風格應遵循什么原則?答:1)節簡化①不運用不必要的變量和函數②避開變量重名,變量重名可導致很難被發覺的錯誤。③盡量減小代碼量。④盡量削減代碼的執行時間,提高執行效率。⑤避開功能冗余的模塊。⑥盡量不運用全局變量。2)模塊化①確保物理和邏輯功能親密相關。②限定一個模塊完成一個獨立的功能,提高模塊的內聚度。③檢查代碼的重復率,重復多的代碼,要抽出來作為一個單獨的模塊。3)簡單化①接受直接了當的算法,避開運用技巧性高和難懂的代碼。②運用簡單的數據結構,避開運用多維數組,指針和困難的表。③留意對象命名的一樣性。④以手工的方式簡化算術和邏輯表達式。4)結構化①按標準化的次序說明數據;②按字母依次說明對象名③運用讀者明白的結構化程序部件;④接受直截了當的算法;⑤依據應用背景排列程序各個部分;⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機器多做煩瑣的工作,如重復,庫函數;⑧用公共函數調用代替重復出現的表達式;⑨避開循環,分支的嵌套層數過高;⑩單入口單出口。5)文檔化()①有效,適當地運用注釋。②協調運用程序塊注釋和程序行注釋。③保持文檔和程序的同步。6)格式化()①始終接受統一縮進規則;②適當插入括號表明運算次序,解除二義性;③有效地運用空格符以區分程序的不同意群。什么是軟件測試?答:軟件測試從廣義上講,是指軟件產品生存周期內全部的檢查,評審和確認活動。從狹義上講,軟件測試是為了發覺錯誤而執行程序的過程。或者說,軟件測試是依據軟件開發各個階段的規格說明和程序內部結構而細心設計一批測試用例,用這些測試用例運行程序,以發覺程序錯誤的過程。軟件測試的原則是什么?答:軟件測試的原則有:應當把測試貫穿在整個開發過程之中。事實上,從需求分析階段開始,每個階段結束之前都要進行階段審查,目的是盡早發覺和訂正錯誤。每個測試用例都應當包括測試輸入數據和這組數據輸入作用下的預期輸出結果。在實際操作中可以列出一張表格,包括每個測試用例的編號,類型,輸入數據,預期輸出結果,實際輸出結果,出錯緣由分析。要對每個測試結果進行全面檢查,不要漏掉已經出現的錯誤跡象。程序員應當盡量避開檢查自己編寫的代碼。測試工作須要嚴格的工作作風,程序員在測試自己編寫的代碼時往往會帶有一些傾向性,使得他們工作中常常出現一些疏漏。而且,程序員對設計規格說明書的理解錯誤而引入的錯誤更是難于發覺。在設計測試用例時,應當包括有效的,期望的輸入狀況,也要包括無效的和不期望的輸入狀況。既能夠驗證程序正常運行的合理輸入,也能夠驗證對異樣狀況處理的不合理輸入數據以及臨界數據。在測試程序時,人們常常過多地考慮合法的和期望的輸入條件,以檢查程序是否做了它應當做的事情,而忽視了不合法的和預想不到的輸入條件。事實上,用戶在運用系統時,輸入一些錯誤指令和參數是常常發生的,假如軟件遇到這種狀況不能做出適當的反應,給出相應的提示信息,就可能會誤導用戶,甚至造成嚴峻損失。軟件中遺留的錯誤數量與已經發覺的錯誤數量成正比。依據這個規律,對測試中發覺錯誤成堆的模塊更要細致測試。例如,在某個聞名的操作系統中,44%的錯誤僅與4%的模塊有關。回來測試的關聯性要特殊引起留意,修改一個錯誤而引起更多錯誤的現象并不少見。測試程序時不僅要檢查程序是否做了它應當做的事情,還要檢查它是否做了不該做的事情。例如,工資軟件中,軟件只完成在編職工的工資計算和輸出,不在編人員的工資是不進行計算和輸出的。假如軟件將不在編人員的工資信息也輸出明顯是不合適的。嚴格執行測試支配。在測試之前應當有明確的測試支配,內容包括:要測試的軟件功能和內容,測試用例和預期結果,測試的進度支配,須要的工具和資源,測試限制方式和過程等。10)做好測試記錄,為統計和維護供應基礎數據。請說明集成測試,系統測試和驗收測試有什么不同?答:集成測試界于單元測試和系統測試之間,起到“橋梁作用”,一般由開發小組接受白盒加黑盒的方式來測試,既驗證“設計”,又驗證“需求”。

系統測試的粒度最大,一般由獨立測試小組接受黑盒方式來測試,主要測試系統是否符合“需求規格說明書”。

驗收測試與系統測試相像,主要區分是測試人員不同,驗收測試由用戶執行。簡述單元測試的內容。答:單元測試的內容有1)模塊接口測試:對通過被測模塊的數據流進行測試。為此,對模塊接口,包括參數表,調用子模塊的參數,全程數據,文件輸入/輸出操作都必需檢查。2)局部數據結構測試:設計測試用例檢查數據類型說明,初始化,缺省值等方面的問題,還要查清全程數據對模塊的影響。 3)路徑測試:選擇適當的測試用例,對模塊中重要的執行路徑進行測試。對基本執行路徑和循環進行測試可以發覺大量路徑錯誤。4)錯誤處理測試:檢查模塊的錯誤處理功能是否包含有錯誤或缺陷。例如,是否拒絕不合理的輸入;出錯的描述是否難以理解,是否對錯誤定位有誤,是否出錯緣由報告有誤,是否對錯誤條件的處理不正確;在對錯誤處理之前錯誤條件是否已經引起系統的干預等。5)邊界測試:要特殊留意數據流,限制流中剛好等于,大于或小于確定的比較值時出錯的可能性。對這些地方要細致地選擇測試用例,細致加以測試。5)此外,假如對模塊運行時間有要求的話,還要特地進行關鍵路徑測試,以確定最壞狀況下和平均意義下影響模塊運行時間的因素。這類信息對進行性能評價是特別有用的。什么是白盒測試?它適應哪些測試?答:白盒測試也叫結構測試,測試者須要了解被測程序的內部結構。白盒測試通常依據覆蓋準則設計測試用例,有語句覆蓋,判定覆蓋,條件覆蓋,判定/條件覆蓋和條件組合覆蓋。白盒測試適用與單元測試,集成測試,系統測試非漸增式測試與漸增式測試有什么區分?漸增式測試如何組裝模塊?答:1)漸增式可以較早地發覺模塊界面之間的錯誤,非漸增式則要到最終將全部模塊連接起來時才能發覺此類錯誤。2)非漸增式須要較多的人工3)漸增式有利于排錯。假如模塊界面間有錯,假如用非漸增式,這類錯誤到最終聯合測試時才能發覺,此時很難推斷錯誤發生在哪一部分,但假如用漸增式,這類錯誤就較簡單定位,它通常與最新加上去的模塊有關。4)漸增式比較徹底。5)漸增式須要較多的機器時間。6)非漸增式方式,開始時允許幾個測試人員并行工作,對大型系統來說,是很有意義的。接受黑盒技術設計測試用例有哪幾種方法?這些方法各有什么特點?答:黑盒測試設計測試用例的方法有1)等價類劃分法特點是:a,測試的內容相同b,一個等價類中的某個測試可以發覺缺陷,則這個等價類的其他測試也能發覺缺陷c,一個等價類中的某個測試不能發覺缺陷,則這個等價類的其它測試也不能發覺缺陷2)邊界值分析法特點是:用邊界值分析時時常收獲較大,它是在等價類的邊界上選擇測試用例3)錯誤推想法特點是:沒有確定的步驟,很大程度上是憑借閱歷進行的4)因果圖法特點是:考慮輸入條件間的組合關系;考慮輸出條件對輸入條件的信任關系;測試用例發覺錯誤的效率高;能查出功能說明中的某些不一樣或遺漏白盒測試法有哪些覆蓋標準?試對它們的檢錯實力進行比較。答:白盒測試的覆蓋標準有:語句覆蓋->判定覆蓋->條件覆蓋->判定/條件覆

蓋->條件組合覆蓋->路徑覆蓋檢錯實力由弱到強依據下面程序代碼,畫出程序流程圖,然后設計滿意條件/判定覆蓋,條件組合覆蓋的測試用例。0(X>=80Y>=80)1(X>=90Y>=75)2(X>=75Y>=90)3測試用例:條件/判定覆蓋:180802907535050條件組合覆蓋:180802807537580475755907569070780758807097590107590117090127085軟件的可維護性是軟件設計師最關注的性能,談談為了獲得軟件良好的可維護性,在設計時應當留意哪些問題?答:為獲得軟件的良好可維護性,在設計階段應當做一些變更試驗,檢查系統的可維護性,敏捷性和可移植性,設計時應當將今后可能變更的內容與其他部分分別開來,并且遵循高內聚,低偶合的原則。在軟件文檔中,你認為哪些文檔對于軟件的維護最重要?需求分析文檔,設計文檔,程序文檔對軟件維護很重要軟件維護時的源程序修改策略是什么?答:軟件維護時的源程序修改策略是:由于軟件維護最終落實在修改源程序和文檔上。為了正確,有效地修改源程序,通常要先分析和理解源程序,然后才能修改源程序,最終重新測試和驗證源程序。軟件項目支配包括那些內容?答:軟件項目支配的內容包括:1.范圍。對該軟件項目的綜合描述,定義起所要做的工作以及性能限制,它包括:(1)項目目標。(2)主要功能。(3)性能限制。(4)系統接口。(5)特殊要求。(6)開發概述。2.資源。(1)人員資源。(2)硬件資源。(3)軟件資源。(4)其他。3.進度支配。進度支配的好壞往往會影響整個項目的按期完成,因此這一環節是特別重要的。制定軟件進度與其他工程沒有很大的區分,其方法主要有:(1)工程網絡圖。(2)圖。(3)任務資源表。(4)成本估算。(5)培訓支配。15.什么是軟件配置管理?什么是基線?答:配置管理能夠系統地處理變更,從而使得軟件系統可以隨時保持其完整性。配置管理又可成為變更限制,可以用來評估提出的變更懇求,跟蹤變更,并保持系統在不同時間的狀態。軟件配置管理是一套規范,高效的軟件開發基礎結構。基線是:已經通過正式復審和批準的某規約或產品,它因此可以作為進一步開發的基礎,并且只能通過正式的變化限制過程改變。應用題請讀者參考能夠找到的編程規范,設計一個C語言編程規范。答:文件結構1.1版權和版本的聲明版權和版本的聲明位于頭文件和定義文件的開頭(參見示例1-1),主要內容有:(1)版權信息。(2)文件名稱,標識符,摘要。(3)當前版本號,作者/修改者,完成日期。(4)版本歷史信息。/**(c)2001,上海貝爾網絡應用事業部*.**文件名稱:*文件標識:見配置管理支配書*摘要:簡要描述本文件的內容**當前版本:1.1*輸入作者(或修改者)名字*完成日期:2001**取代版本:1.0*原輸入原作者(或修改者)名字*完成日期:2001*/示例1-1版權和版本的聲明1.2頭文件的結構頭文件由三部分內容組成:(1)頭文件開頭處的版權和版本聲明(參見示例1-1)。(2)預處理塊。(3)函數和類結構聲明等。假設頭文件名稱為,頭文件的結構參見示例1-2。【規則1-2-1】為了防止頭文件被重復引用,應當用結構產生預處理塊。【規則1-2-2】用<>格式來引用標準庫的頭文件(編譯器將從標準庫目錄開始搜尋)。【規則1-2-3】用“”格式來引用非標準庫的頭文件(編譯器將從用戶的工作目錄開始搜尋)。【建議1-2-1】頭文件中只存放“聲明”而不存放“定義”【建議1-2-2】不提倡運用全局變量,盡量不要在頭文件中出現象這類聲明。防止被重復引用<>引用標準庫的頭文件?“”引用非標準庫的頭文件?1(?);全局函數聲明?類結構聲明{?};示例1-2C頭文件的結構1.3定義文件的結構定義文件有三部分內容:(1)定義文件開頭處的版權和版本聲明(參見示例1-1)。(2)對一些頭文件的引用。(3)程序的實現體(包括數據和代碼)。假設定義文件的名稱為,定義文件的結構參見示例1-3。版權和版本聲明見示例1-1,此處省略。“”引用頭文件?全局函數的實現體1(?){?}類成員函數的實現體(?){?}示例1-3C定義文件的結構1.4目錄結構假如一個軟件的頭文件數目比較多(如超過十個),通常應將頭文件和定義文件分別保存于不同的目錄,以便于維護。例如可將頭文件保存于目錄,將定義文件保存于目錄(可以是多級目錄)。假如某些頭文件是私有的,它不會被用戶的程序直接引用,則沒有必要公開其“聲明”。為了加強信息隱藏,這些私有的頭文件可以和定義文件存放于同一個目錄。程序的版式版式雖然不會影響程序的功能,但會影響可讀性。程序的版式追求清晰,美觀,是程序風格的重要構成因素。程序的版式2.1空行空行起著分隔程序段落的作用。空行得體(不過多也不過少)將使程序的布局更加清晰。空行不會奢侈內存,雖然打印含有空行的程序是會多消耗一些紙張,但是值得。所以不要舍不得用空行。【規則2-1-1】在每個類聲明之后,每個函數定義結束之后都要加空行。【規則2-1-2】在一個函數體內,邏揖上親密相關的語句之間不加空行,其它地方應加空行分隔。2.2代碼行【規則2-2-1】一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的代碼簡單閱讀,并且便利于寫注釋。【規則2-2-2】,,,等語句自占一行,執行語句不得緊跟其后。不論執行語句有多少都要加{}。這樣可以防止書寫失誤。【建議2-2-3假如變量的引用處和其定義處相隔比較遠,變量的初始化很簡單被遺忘。假如引用了未被初始化的變量,可能會導致程序錯誤。本建議可以削減隱患。例如=10;定義并初紿化=10;定義并初紿化=10;定義并初紿化2.3代碼行內的空格【規則2-3-1】關鍵字之后要留空格。象,,,等關鍵字之后至少要留一個空格,否則無法辨析關鍵字。象,,等關鍵字之后應留一個空格再跟左括號‘(’,以突出關鍵字。【規則2-3-2】函數名之后不要留空格,緊跟左括號‘(’,以與關鍵字區分。【規則2-3-3】‘(’向后緊跟,‘)’,‘,’,‘;’向前緊跟,緊跟處不留空格。【規則2-3-4】‘,’之后要留空格,如(x,y,z)。假如‘;’不是一行的結束符號,其后要留空格,如(;;)。【規則2-3-5】賦值操作符,比較操作符,算術操作符,邏輯操作符,位域操作符,如“=”,“”“>=”,“<=”,“+”,“*”,“%”,“”,“”,“<<”,“^”等二元操作符的前后應當加空格。【規則2-3-6】一元操作符如“!”,“~”,“”,“”,“&”(地址運算符)等前后不加空格。【規則2-3-7】象“[]”,“.”,“->”這類操作符前后不加空格。【建議2-3-8掉一些空格,如(0;i<10;)和((a<)(c<))2.4修飾符的位置修飾符*和&應當靠近數據類型還是該靠近變量名,是個有爭議的活題。若將修飾符*靠近數據類型,例如:*x;從語義上講此寫法比較直觀,即x是類型的指針。上述寫法的弊端是簡單引起誤會,例如:*x,y;此處y簡單被誤會為指針變量。雖然將x和y分行定義可以避開誤會,但并不是人人都情愿這樣做。【規則2-4-1】應當將修飾符例如:*;*x,y;此處y不會被誤會為指針2.5注釋C語言的注釋符為“/*…*/”。雖然注釋有助于理解代碼,但留意不可過多地運用注釋。【規則2-5-1】注釋是對代碼的“提示注釋太多了會讓人紛繁蕪雜。注釋的花樣要少。【規則2-5-2】假如代碼原來就是例如;i加1,多余的注釋【規則2-5的一樣性。不再有用的注釋要刪除。【規則2-5-4】注釋應當精確有害。【規則2-5-5】盡量避開在注釋中運用縮寫,【規則2-5可放在下方。【規則2-5-7釋,便于閱讀。 命名規則3.1共性規則本節論述的共性規則是被大多數程序員接受的,我們應當在遵循這些共性規則的前提下,再擴充特定的規則。【規則3-1-1】標識符應當直觀且可以拼讀,可望文知意,不必進行“解碼”。標識符最好接受英文單詞或其組合,便于記憶和閱讀。切忌運用漢語拼音來命名。程序中的英文單詞一般不會太困難,用詞應當精確。例如不要把寫成。【規則3-1-2】標識符的長度應當符合“”原則。幾十年前老C規定名字不準超過6個字符,現今的C不再有此限制。一般來說,長名字能更好地表達含義,所以函數名,變量名,類名長達十幾個字符不足為怪。則名字是否越長約好?不見得!例如變量名就比好用。單字符的名字也是有用的,常見的如等,它們通常可用作函數內的局部變量。【規則3-1-3】命名規則盡量與所接受的操作系統或開發工具的風格保持一樣。例如應用程序的標識符通常接受“大小寫”混排的方式,如。而應用程序的標識符通常接受“小寫加下劃線”的方式,如。別把這兩類風格混在一起用。【規則3-1-4】程序中不要出現僅靠大小寫區分的相像的標識符。例如:x,X;變量x與X簡單混淆(x);函數與簡單混淆(x);【規則3-1-5】程序中不要出現標識符完全相同的局部變量和全局變量,盡管兩者的作用域不同而不會發生語法錯誤,但會使人誤會。【規則3-1-6】變量的名字應當運用“名詞”或者“形容詞+名詞”。例如:;;;【規則3-1-7】全局函數的名字應當運用“動詞”或者“動詞+名詞”(動賓詞組)。類的成員函數應當只運用“動詞”,被省略掉的名詞就是對象本身。例如:();全局函數>();類的成員函數【規則3-1-8】用正確的反義詞組命名具有互斥意義的變量或相反動作的函數等。例如:;;(…);(…);【建議3-1-1】盡量避開名字中出現數字編號,如12等,除非邏輯上的確須要編號。這是為了防止程序員偷懶,不愿為命名動腦筋而導致產生無意義的名字(因為用數字編號最省事)。函數設計函數是程序的基本功能單元,函數接口的兩個要素是參數和返回值。。C語言中,函數的參數和返回值的傳遞方式有兩種:值傳遞()和指針傳遞()表達式和基本語句4.1參數的規則【規則4-1-1假如函數沒有參數,則用填充。例如:(,);良好的風格(,);不良的風格();良好的風格();不良的風格【規則4-1-2】參數命名要恰當,依次例如編寫字符串拷貝函數,它有兩個參數。假如把參數名字起為1和2,例如(*1,*2);則我們很難搞清晰原委是把1拷貝到2中,還是剛好倒過來。可以把參數名字起得更有意義,如叫和。這樣從名字上就可以看出應當把拷貝到。還有一個問題,這兩個參數那一個該在前那一個該在后?參數的依次要遵循程序員的習慣。一般地,應將目的參數放在前面,源參數放在后面。假如將函數聲明為:(*,*);別人在運用時可能會毫不猶豫地寫成如下形式:[20];(,“”);參數依次顛倒【規則4-1-3】假如指針在函數體內被意外修改。例如(*,*);【規則4-1-4】假如輸入參數以值傳遞的方式傳遞對象,則宜改用“&”來傳遞,這樣可以省去臨時對象的構造和析構過程,從而提高效率。【建議4-1-5】避開函數有太多的參數,參數個數盡量限制在5個以內。多,在運用時簡單將參數類型或依次搞錯。【建議4-1-6】盡量不要C標準庫函數是接受不確定參數的典型代表,其原型為:(*[,]?);這種風格的函數在編譯時丟失了嚴格的類型平安檢查。4.2返回值的規則【規則4-2-1C語言中,凡不加類型說明的函數,一律自動按整型處理。這樣做不會有什么好處,卻簡單被誤會為類型。語言有很嚴格的類型平安檢查,不允許上述狀況發生。由于程序可以調用C函數,為了避開混亂,規定任何C函數都必需有類型。假如函數沒有返回值,則應聲明為類型。【規則4-2-2違反這條規則的典型代表是C標準庫函數。例如:c;c=();(c)?依據名字的意思,將變量c聲明為類型是很自然的事情。但不幸的是的確不是類型,而是類型,其原型如下:();由于c是類型,取值范圍是[-128,127],假如宏的值在的取值范圍之外,則語句將總是失敗,這種“危險”人們一般哪里料得到!導致本例錯誤的責任并不在用戶,是函數誤導了運用者。【規則4-2-3】不要將正常值和錯誤標記錯誤標記用語句返回。回顧上例,C標準庫函數的設計者為什么要將聲明為令人模糊的類型呢?他會則傻嗎?在正常狀況下,的確返回單個字符。但假如遇到文件結束標記或發生讀錯誤,它必需返回一個標記。為了區分于正常的字符,只好將定義為負數(通常為負1)。因此函數就成了類型。我們在實際工作中,常常會遇到上述令人犯難的問題。為了避開出現誤會,我們應該將正常值和錯誤標記分開。即:正常值用輸出參數獲得,而錯誤標記用語句返回。函數可以改寫成(*c);雖然比敏捷,例如(());但是假如用錯了,它的敏捷性又有什么用呢?【建議4-2-4】有時候函數原本不須要返回值,但為了增加可以附加返回值。例如字符串拷貝函數的原型:*(*,*);函數將拷貝至輸出參數中,同時函數的返回值又是。這樣做并非多此一舉,可以獲得如下敏捷性:[20];=((,“”));4.3函數內部實現的規則不同功能的函數其內部實現各不相同,看起來好像無法就“內部實現”達成一樣的觀點。但依據閱歷,我們可以在函數體的“入口處”和“出口處”從嚴把關,從而提高函數的質量。【規則4-3-1】在函數體的“入口處”許多程序錯誤是由非法參數引起的,我們應當充分理解并正確運用“斷言”()來防止此類錯誤。【規則4-3-2】在函數體的“出口處”假如函數有返回值,則函數的“出口處”是語句。我們不要輕視語句。假如語句寫得不好,函數要么出錯,要么效率低下。留意事項如下:(1)語句不可返回指向“棧內存”的“指針”,因為該內存在函數體結束時被自動銷毀。例如*(){[]=“”;的內存位于棧上…;將導致錯誤}(2)要搞清晰返回的原委是“值”,還是“指針”。4.4其它建議【建議4-4-1【建議4-4-2】函數體的規模要小,盡量限制在50【建議4-4-3】盡量避開函數帶有“記憶”帶有“記憶”功能的函數,其行為可能是不可預料的,因為它的行為可能取決于某種“記憶狀態”。這樣的函數既不易理解又不利于測試和維護。在C語言中,函數的局部變量是函數的“記憶”存儲器。建議盡量少用局部變量,除非必需。【建議4-4-4的變量的有效性,例如全局變量,文件句柄等。【建議4-4-5】用于出錯處理的返回值肯定要清晰,讓運用者不簡單忽視或誤會狀況。4.5運用斷言程序一般分為版本和版本,版本用于內部調試,版本發行給用戶運用。斷言是僅在版本起作用的宏,它用于檢查“不應當”發生的狀況。示例4-5是一個內存復制函數。在運行過程中,假如的參數為假,則程序就會中止(一般地還會出現提示對話,說明在什么地方引發了)。*(*,*,){(()());運用斷言*=(*);防止改變的地址*=(*);防止改變的地址(>0)*=*;;}示例4-5復制不重疊的內存塊不是一個倉促拼湊起來的宏。為了不在程序的版本和版本引起差別,不應當產生任何副作用。所以不是函數,而是宏。程序員可以把看成一個在任何系統狀態下都可以平安運用的無害測試手段。假如程序在處終止了,并不是說含有該的函數有錯誤,而是調用者出了差錯,可以幫助我們找到發生錯誤的緣由。很少有比跟蹤到程序的斷言,卻不知道該斷言的作用更讓人懊喪的事了。你化了很多時間,不是為了解

溫馨提示

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

評論

0/150

提交評論