2025年軟件工程過程性與實(shí)踐能力測(cè)評(píng)指南及解答_第1頁
2025年軟件工程過程性與實(shí)踐能力測(cè)評(píng)指南及解答_第2頁
2025年軟件工程過程性與實(shí)踐能力測(cè)評(píng)指南及解答_第3頁
2025年軟件工程過程性與實(shí)踐能力測(cè)評(píng)指南及解答_第4頁
2025年軟件工程過程性與實(shí)踐能力測(cè)評(píng)指南及解答_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

A.顧客輕易參與開發(fā)B.缺乏靈活性C.顧客與開發(fā)者易溝通D.合用可變需求A.需求不確定性高的B.需求確定的C.管理信息D.實(shí)時(shí)7.構(gòu)造化措施是一種基于(D)的措施。A.數(shù)據(jù)構(gòu)造B.程序構(gòu)造C.算法D.數(shù)據(jù)流9.可行性研究的目的是(D)10.設(shè)年利率為i,現(xiàn)存入p元,不計(jì)復(fù)利,n年后可得錢數(shù)為(C)。11.可行性研究是在(A)之前B.《中華人民共和國計(jì)算機(jī)信息系統(tǒng)安全保護(hù)條例》C.《中華人民共和國著作權(quán)法》D.《計(jì)算機(jī)病毒防治管理措施》14.效率是一種性能規(guī)定,因此應(yīng)當(dāng)在如下哪個(gè)階段規(guī)定?BA、可行性分析B、需求分析C、概要設(shè)計(jì)D、詳細(xì)設(shè)計(jì)15.需求規(guī)格闡明書的作用不包括(D)16.數(shù)據(jù)字典是用來定義(D)中的各個(gè)成分的詳細(xì)含義的。17.數(shù)據(jù)流程圖是(A)措施中用于表達(dá)系統(tǒng)邏輯模型的一種圖形工具。A、一種輸入流或一種輸出流B、一種輸入流和一種輸出流19.需求分析階段的關(guān)鍵任務(wù)是確定(D)A、軟件開發(fā)措施B、軟件開發(fā)工具C、軟件開發(fā)費(fèi)D、軟件系統(tǒng)的功能20.在SD措施中全面指導(dǎo)模塊劃分的最重要的原則是(D)。21.在模塊的3種基本屬性中,反應(yīng)模塊內(nèi)部特性的是(C)。A、做什么B、為何做C、怎么做D、對(duì)誰做24.(D)工具在軟件詳細(xì)設(shè)計(jì)過程中不采用。25.為高質(zhì)量地開發(fā)軟件項(xiàng)目,在軟件構(gòu)造設(shè)計(jì)時(shí),必須遵照(A)原則。A.信息隱蔽B、質(zhì)量控制C、程序優(yōu)化D、數(shù)據(jù)共享26.當(dāng)一種模塊直接使用另一種模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為(D)27.詳細(xì)設(shè)計(jì)與概要設(shè)計(jì)銜接的圖形工具是(B)。28.下列幾種類型中,耦合性最弱的是(D)。30.在七種偶合中,最低偶合是(D)。A、內(nèi)容偶合B、公共偶合C、數(shù)據(jù)偶合D、非直接偶合二、簡答題1.什么是軟件工程?軟件工程的目的是什么?2實(shí)現(xiàn)預(yù)期的軟件功能,到達(dá)很好的軟件性能,滿足顧客的需求。4提高軟件開發(fā)生產(chǎn)率,及時(shí)交付使用3.可行性研究匯報(bào)的重要內(nèi)容是什么?(1)概述(2)技術(shù)可行性(3)項(xiàng)目成熟程度(4)市場(chǎng)需求狀況和風(fēng)險(xiǎn)分析(5)投資估算及資金籌措(6)經(jīng)濟(jì)與社會(huì)效益(7)綜合實(shí)力和產(chǎn)業(yè)基礎(chǔ)(8)項(xiàng)目實(shí)行進(jìn)度計(jì)劃(9)其他尚需要闡明的必要的方面(10)結(jié)論4.什么是需求分析?需求分析階段的基本任務(wù)是什么?答:所謂"需求分析",是指對(duì)要處理的問題進(jìn)行詳細(xì)的分析,弄清晰任務(wù):確定軟件項(xiàng)目的目的和范圍。調(diào)查使用者的規(guī)定,分析軟件必須5.什么是構(gòu)造化分析措施?該措施使用什么描述工具?換的關(guān)系,自頂向下逐層分解,直至找到滿足功能規(guī)定的所描述工具:1系統(tǒng)流程圖2數(shù)據(jù)流程圖3數(shù)據(jù)字典4IPO圖5層次方框圖6實(shí)體一關(guān)系圖7狀態(tài)—變遷圖6.構(gòu)造化分析措施通過哪些環(huán)節(jié)來實(shí)現(xiàn)?9)修正開發(fā)計(jì)劃10)假如需要?jiǎng)t開發(fā)系統(tǒng)原型7.什么是數(shù)據(jù)流圖?其作用是什么?其中的基本符號(hào)各表達(dá)什么含義?答:數(shù)據(jù)流圖:簡稱DFD,就是采用圖形方式來體現(xiàn)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是構(gòu)造化系統(tǒng)分析措施的重要體現(xiàn)工具及用于表達(dá)軟件模型的一種圖示措施。數(shù)據(jù)流圖的基本符號(hào)的意思:1.矩形表達(dá)數(shù)據(jù)的外部實(shí)體;2.圓角的矩形表達(dá)變換數(shù)據(jù)的處理邏輯;3.少右面的邊矩形表達(dá)數(shù)據(jù)的存儲(chǔ);4.箭頭表達(dá)數(shù)據(jù)流。8.什么是數(shù)據(jù)字典?其作用是什么?它有哪些條目?答:數(shù)據(jù)字典,重要用來描述數(shù)據(jù)流程圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處數(shù)據(jù)存儲(chǔ)詞條數(shù)據(jù)加工處理詞條數(shù)據(jù)源點(diǎn)及終點(diǎn)詞條9.什么是概要設(shè)計(jì)?有哪些基本任務(wù)?答:概要設(shè)計(jì):根據(jù)顧客的需求先確定軟件系統(tǒng)的總體構(gòu)造和總的設(shè)計(jì)原則設(shè)想供選擇的方案。推薦最佳方案。功能分解,確定軟件構(gòu)造。設(shè)計(jì)軟件構(gòu)造。制定測(cè)試計(jì)劃。數(shù)據(jù)設(shè)計(jì)。書寫文檔。包括總體設(shè)計(jì)規(guī)格闡明書。顧客手冊(cè)。測(cè)試計(jì)劃。設(shè)計(jì)審查和復(fù)審。10.詳細(xì)設(shè)計(jì)的基本任務(wù)是什么?有那幾種描述措施?答:詳細(xì)設(shè)計(jì)階段的任務(wù)是要為編寫程序代碼設(shè)計(jì)“圖紙”,由程序員按“圖紙”用某種高級(jí)程序設(shè)計(jì)語言編寫程序代碼。重要措施有設(shè)計(jì)程序流程圖,表格設(shè)計(jì)符號(hào)以及過程設(shè)計(jì)語11.什么是變換流?什么是事物流?答:變換型數(shù)據(jù)流可以劃分為明顯的三部分:邏輯輸入,中心變換,邏輯輸出事務(wù)流的特點(diǎn)是數(shù)據(jù)沿某個(gè)輸入途徑流動(dòng),該途徑將外部信息轉(zhuǎn)換成事務(wù),其中發(fā)射出多條事務(wù)處理途徑的中心處理被稱為中心事務(wù)12.模塊的內(nèi)聚有哪幾種?模塊間的耦合有哪幾種?答:內(nèi)聚分為七種類型:巧合內(nèi)聚——一種模塊執(zhí)行多種完全互不有關(guān)的動(dòng)作,那么這個(gè)模塊就有巧合內(nèi)聚邏輯內(nèi)聚——當(dāng)一種模塊執(zhí)行一系列有關(guān)的動(dòng)作時(shí),稱其有邏輯內(nèi)聚。時(shí)間性內(nèi)聚——當(dāng)一種模塊內(nèi)的多種任務(wù)是與時(shí)間有關(guān)時(shí),這個(gè)模塊具有時(shí)間性內(nèi)聚。過程內(nèi)聚——模塊執(zhí)行的若干動(dòng)作之間有次序關(guān)系。通信內(nèi)聚——模塊執(zhí)行的若干動(dòng)作之間有次序關(guān)系,并且所有動(dòng)作是在相似的數(shù)據(jù)上執(zhí)信息內(nèi)聚——一種模塊中執(zhí)行一系列動(dòng)作,每個(gè)動(dòng)作均有自己的入口點(diǎn)和處理代碼,所有的動(dòng)作都作用在相似的數(shù)據(jù)構(gòu)造上,這樣的模塊叫做信息內(nèi)聚。功能性內(nèi)聚——一種模塊中各個(gè)部分都是完畢某一詳細(xì)功能必不可少的構(gòu)成部分耦合分為七類:控制耦合——假如模塊A向模塊B傳遞一種控制信息,則稱這兩個(gè)模塊是控制耦合的三、應(yīng)用題1.某旅館的電話服務(wù)如下:可以撥分機(jī)號(hào)和外線號(hào)碼。分機(jī)號(hào)是從7201至7299。外線號(hào)碼先撥9,然后是市話號(hào)碼或長話號(hào)碼。長話號(hào)碼是以區(qū)號(hào)和市話號(hào)碼構(gòu)成。區(qū)號(hào)是從100到300中任意的數(shù)字串。市話號(hào)碼是以局號(hào)和分局號(hào)構(gòu)成。局號(hào)可以是455,466,888,552名稱簡稱類型取值范圍分機(jī)號(hào)4號(hào)r9號(hào)2.下面是旅客訂飛機(jī)票的需求描述,試畫出分層的數(shù)據(jù)流程圖。顧客將訂票單交給預(yù)訂系統(tǒng):(1)假如是不合法訂票單,則輸出無效訂票信息;(2)對(duì)合法訂票單的預(yù)付款登錄到一種記賬文獻(xiàn)中;(3)系統(tǒng)有航班目錄文目的地為顧客安排航班;(4)在獲得對(duì)的航班信息和確認(rèn)已交了部分預(yù)付款時(shí)發(fā)出取票單,顧客在指定日期內(nèi)用取票單換取機(jī)票:(1)系統(tǒng)根據(jù)取票單文獻(xiàn)對(duì)取票單進(jìn)行有效性檢查,無效的輸出無效取票信息;(2)持有有效取票單的顧客在補(bǔ)交了剩余款后將獲得機(jī)票;(3)訂單中有訂票日期、旅行日期、時(shí)間規(guī)定(上午、下午、晚上)、出發(fā)地、目的地、顧客姓顧客DS003取票單文件0層流程圖機(jī)票文件提交訂票單有效性檢查提交取票單有效性檢查發(fā)放機(jī)票補(bǔ)交剩余款3.一種簡化的圖書館信息管理系統(tǒng)有如下功能:(1)借書:輸入讀者借書證,系統(tǒng)檢查借書證與否有效;查閱借書文獻(xiàn),檢查該讀者所借圖書與否超過10本,若已達(dá)10本,顯示信息“已經(jīng)超過借書數(shù)量”,拒借;未達(dá)10本,辦理借書(檢查庫存、修改庫存信息并將讀者借可通過借書記錄、庫存信息查詢讀者狀況、圖書借閱請(qǐng)就以上系統(tǒng)功能畫出分層的DFD圖,并建立辦公室辦公室處罰信息DS001讀者信息DS003借還信息DS002庫存信息讀者0層數(shù)據(jù)流程圖DSDS001讀者信息有效性檢查數(shù)量檢查DS003借還信息借書處理DS002庫存信息數(shù)據(jù)字典:元素名稱名稱類型闡明根據(jù)書號(hào)做還書處理,違規(guī)做懲罰查詢管理員對(duì)某些基本信息進(jìn)行查詢打印報(bào)表打印查詢到的信息懲罰管理根據(jù)規(guī)則對(duì)延期予以對(duì)應(yīng)的懲罰數(shù)量檢查讀者信息讀者信息錄入,修改,刪除,保留庫存信息圖書的基本的狀況以及所有圖書的整體狀況錯(cuò)還信息懲罰信息存儲(chǔ)延期的懲罰信息軟件工程作業(yè)2(第5~7章)1.從本質(zhì)上說,面向?qū)ο笫恰跋取贝_定(A)后確定執(zhí)行的動(dòng)作。A.動(dòng)作的主體B.屬性C.關(guān)系D.措施2.(B)是對(duì)象的靜態(tài)特性。3.對(duì)象的(D)使對(duì)象的動(dòng)態(tài)特性A.特性B.屬性C.關(guān)系D.操作4.屬于某個(gè)類的一種詳細(xì)對(duì)象稱為該類的(A)。A)一種可視化的建模語言B)是一種可視化的程序設(shè)計(jì)語言C)是一種過程D)是一種措施6.封裝的的作用是(A)。A.復(fù)用B.對(duì)象C.實(shí)例D.措施8.面向?qū)ο蠓治龅年P(guān)鍵在于建立(B)模型。A.建立對(duì)的的模型B.識(shí)別問題域?qū)ο驝.識(shí)別對(duì)象之間的關(guān)系D.上面所有9.面向?qū)ο蠓治鲞^程中建立的模型有(D)。A.數(shù)據(jù)模型、功能模型、活動(dòng)模型B.對(duì)象模型、功能模型、測(cè)試模型C.屬性模型、功能模型、對(duì)象模型D.對(duì)象模型、功能模型、動(dòng)態(tài)模型10.下列的(C)不是分析建模的目的。A.定義可驗(yàn)證的軟件需求B.描述客戶需求C.開發(fā)一種簡樸的問題處理方案D.建立軟件設(shè)計(jì)的基礎(chǔ)11.下列的(C)不屬于面向?qū)ο蠓治瞿P?。A.用例圖C.實(shí)體關(guān)系圖D.次序圖A.分析類B.界面類C.實(shí)體類D.控制類13.在基于用例的面向?qū)ο蠓治鲞^程中,定義交互行為的關(guān)鍵在于通過描述分析類實(shí)例之間A.消息傳遞B關(guān)聯(lián)關(guān)系C繼承關(guān)系D上下文關(guān)系14.用例的實(shí)現(xiàn)細(xì)節(jié)不會(huì)在(B)描述。A.用例闡明B.用例圖C.活動(dòng)圖D.次序圖A.發(fā)送消息B.接受消息C.發(fā)送和接受雙方B.類圖的一種C.用于識(shí)別角色的輔助圖D.用例圖的一種借書中有不一樣規(guī)定。請(qǐng)問在面向?qū)ο笤O(shè)計(jì)中用(B)措施可以以便地設(shè)計(jì)這兩個(gè)類?A.信息隱藏B.繼承C.動(dòng)態(tài)聯(lián)編D.代碼復(fù)制18.框架是一組可用于不一樣應(yīng)用的(A)集合A.類B.對(duì)象C.模塊D.代碼19.下面哪個(gè)選項(xiàng)不能描述子系統(tǒng)之間的關(guān)系。(D)A.祈求——服務(wù)關(guān)系B.繼承關(guān)系C.依賴關(guān)系D.數(shù)據(jù)關(guān)系20.每個(gè)子系統(tǒng)的接口上定義了若干(B),體現(xiàn)了子系統(tǒng)的功能。A.闡明B.操作C.屬性D.關(guān)系21.一般將具有共性的非功能規(guī)定設(shè)計(jì)在(B),以減少重新開發(fā)的工作量。A.接口層B.中間層C.最低層D.最高層22.每個(gè)用例至少應(yīng)當(dāng)有一種(C),它一般沒有屬性而只有措施,只是起協(xié)調(diào)和控制作用。A.接口類B.實(shí)體類C.控制類D.界面類A.邊界類、實(shí)體類、控制類B.實(shí)體類、數(shù)據(jù)類、界面類C.控制類、實(shí)體類、數(shù)據(jù)類D.界面類、控制類、公共類A.對(duì)接口進(jìn)行設(shè)計(jì)B.發(fā)現(xiàn)變化并且封裝它C.先繼承后組合D.先組合后繼承A.可維護(hù)性B.安全性C.開發(fā)效率D.可移植性答:學(xué)生可作為一種類---學(xué)生類,每個(gè)學(xué)生就是這個(gè)學(xué)生類的一種2.面向?qū)ο蠓治龅年P(guān)鍵環(huán)節(jié)有哪些?應(yīng)建立哪幾種模型?3.什么是實(shí)體類、邊界類和控制類?為何將分析類劃提成這三種類型?答:(1)實(shí)體類保留要存入永久存儲(chǔ)體的信息。實(shí)體類一般在事件流或交互圖中,是對(duì)顧邊界類位于系統(tǒng)與外界的交界處,包括所有的窗體、報(bào)表、系統(tǒng)控制類負(fù)責(zé)協(xié)調(diào)其他類的工作。每個(gè)用例中至少應(yīng)當(dāng)有一種控制4.UML中有哪幾類個(gè)視圖,它們的作用分別是什么?答:(1)用例視圖(Use-Caseview)(2)邏輯視圖(Logicalview)(3)組件視圖(Componentview)(4)并發(fā)視圖(ConcurrencyView)(5)配置視圖(DeploymentView)5.次序圖在分析階段的作用?6.活動(dòng)圖在分析階段的作用?三、應(yīng)用題1)媒體庫中可以添加新的尤其媒體文獻(xiàn)。2)通過給定的文獻(xiàn)編碼查找需要的媒體文獻(xiàn)。3)從媒體庫中刪除指定的媒體文獻(xiàn)。4)給出媒體庫中媒體文獻(xiàn)的數(shù)量??紤]類image應(yīng)當(dāng)具有哪些恰當(dāng)?shù)膶傩院痛胧〧ormat(格式信息);audioFile類除了擁有以上屬性外尚有屬性Time(文獻(xiàn)時(shí)長);imageFile類的措施:Add(imageFile)(添加圖像文獻(xiàn)),Delete(Code)(刪除文獻(xiàn)),Get)(查找文獻(xiàn)),GetNumber()(返回媒體文獻(xiàn)的數(shù)量);audioFile類的措施:Add(audioFile)(添加聲音文獻(xiàn)),DeleteGet)(查找文獻(xiàn)),GetNumber()(返回媒體文獻(xiàn)的數(shù)量)。2.若把學(xué)生當(dāng)作一種實(shí)體,它可以提成多種子實(shí)體,如小學(xué)生、中學(xué)生和大學(xué)生等。MiddleStudent;類UniversityStudent。試給出這4個(gè)類的屬性以及它們之間ElementaryStudent類的屬性有:IsTeamMember(與否是少先隊(duì)員),IsGoodStudentMiddleStudent類的屬性為:IsMember(與否是團(tuán)員),Subject(文科理科)。UniversityStudent類的屬性為:IsPartyMember(與否黨員),Department(學(xué)院),三、應(yīng)用題正正確庫庫存充足2.使用次序圖描述下面的情景,當(dāng)顧客在自己的計(jì)算機(jī)上向網(wǎng)絡(luò)打印機(jī)發(fā)出一種打印任務(wù)時(shí),他的計(jì)算機(jī)便向打印機(jī)服務(wù)器發(fā)送一條打印命令print(file),打印機(jī)服務(wù)器假如發(fā)現(xiàn)網(wǎng)絡(luò)打印機(jī)處在空閑狀態(tài),則向打印機(jī)發(fā)送打印命令print(file),否則向打印隊(duì)列發(fā)送一條保留命令store(file)。計(jì)算機(jī)打印服務(wù)器打印機(jī)隊(duì)列(空閑)打印(忙)存儲(chǔ)隊(duì)列3.某報(bào)社采用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)報(bào)刊征訂的計(jì)算機(jī)管理系統(tǒng),該系統(tǒng)基本需求如下:(1)報(bào)社發(fā)行多種刊物,每種刊物通過訂單來征訂,訂單中有代碼,名稱,訂期,單價(jià),份數(shù)等項(xiàng)目,訂戶通過填寫訂單來訂閱報(bào)刊。(2)報(bào)社下屬多種發(fā)行站,每個(gè)站負(fù)責(zé)搜集登陸訂單、打印收款憑證等事務(wù)。(3)報(bào)社負(fù)責(zé)分類并記錄各個(gè)發(fā)行站送來的報(bào)刊訂閱信息。請(qǐng)就此需求建立對(duì)象模型。11+分類統(tǒng)計(jì)訂單信息):書刊信息n軟件工程作業(yè)3(第8~11章)1.構(gòu)造化語言是介于自然語言和形式語言之間的一種(D)。A.半形式語言B.計(jì)算機(jī)語言C.低級(jí)語言D.高級(jí)語言2.程序設(shè)計(jì)語言的技術(shù)特性不應(yīng)包括(C)。A、數(shù)據(jù)構(gòu)造的描述性B、抽象類型的描述性C、數(shù)據(jù)庫的易操作性D、軟件的可移植性3.程序的三種基本控制構(gòu)造是(B)。A.過程、子程序和分程序B.次序、選擇和反復(fù)C.遞歸、堆棧和隊(duì)列D.調(diào)用、返回和轉(zhuǎn)移4.構(gòu)造化程序設(shè)計(jì)重要強(qiáng)調(diào)的是(D)。A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語言的先進(jìn)性D.程序易讀性5.下列有關(guān)功能性注釋不對(duì)的的說法是(B)。A.功能性注釋嵌在源程序中,用于闡明程序段或語句的功能以及數(shù)據(jù)的狀態(tài)B.注釋用來闡明程序段,需要在每一行都要加注釋C.可使用空行或縮進(jìn),以便很輕易辨別注釋和程序D.修改程序也應(yīng)修改注釋6.下列有關(guān)效率的說法不對(duì)的的是(D)。A.效率是一種性能規(guī)定,其目的應(yīng)當(dāng)在需求分析時(shí)給出B.提高程序效率的主線途徑在于選擇良好的設(shè)計(jì)措施,數(shù)據(jù)構(gòu)造與算法C.效率重要指處理機(jī)時(shí)間和存儲(chǔ)器容量兩個(gè)方面D.程序的效率與程序的簡樸性無關(guān)7.構(gòu)造化維護(hù)與非構(gòu)造化維護(hù)的重要區(qū)別在于(B)。A.軟件與否構(gòu)造化B.軟件配置與否完整C.程序的完整性D.文檔的完整性8.有關(guān)JAVA語言下列說法不對(duì)的的是(B)。A.跨平臺(tái)的B.動(dòng)態(tài)指針C.解釋型的D.面向?qū)ο蟮?.使用白盒測(cè)試措施時(shí),確定測(cè)試數(shù)據(jù)應(yīng)根據(jù)(A)和指定的覆蓋原則。A程序內(nèi)部邏輯B.程序復(fù)雜構(gòu)造C.使用闡明書D.程序的功能10.確認(rèn)測(cè)試重要波及的文檔是(A)。11.測(cè)試的關(guān)鍵問題是(D)。A.怎樣組織對(duì)軟件的評(píng)審B.怎樣驗(yàn)證程序的對(duì)的性C.怎樣采用綜合方略D.怎樣選擇測(cè)試用例12.黑盒測(cè)試在設(shè)計(jì)測(cè)試用例時(shí),重要研究(A)。A.需求規(guī)格闡明B.詳細(xì)設(shè)計(jì)闡明C.項(xiàng)目開發(fā)計(jì)劃D.概要設(shè)計(jì)闡明與詳細(xì)設(shè)計(jì)闡明13.下面哪些測(cè)試屬于黑盒測(cè)試(B)。A、途徑測(cè)試B、等價(jià)類劃分C、條件判斷D、循環(huán)測(cè)試14.在下述哪一種測(cè)試中,測(cè)試人員必須接觸到源程序(B)。A、功能測(cè)試B、構(gòu)造測(cè)試C、功能測(cè)試和構(gòu)造測(cè)試D、性能測(cè)試15.檢查軟件產(chǎn)品與否符合需求定義的過程稱為(D)。A、構(gòu)造合理性B、軟件外部功能C、程序?qū)Φ男訢、程序內(nèi)部邏輯17.軟件維護(hù)中,因修改交互輸入的次序,沒有對(duì)的的記錄而引起的錯(cuò)誤是(A)產(chǎn)生18.如下屬于軟件維護(hù)階段文檔的是(C)。19.產(chǎn)生軟件維護(hù)的副作用,是指(C)。C、因修改軟件而導(dǎo)致的錯(cuò)誤D、運(yùn)行時(shí)誤操作20.維護(hù)中,因誤刪除一種標(biāo)識(shí)符而引起的錯(cuò)誤是(C)副作用。21.可維護(hù)性的特性中,互相增進(jìn)的(A)。22.軟件維護(hù)的困難重要原因是(C)23.軟件維護(hù)費(fèi)用高的重要原因是(C)。24.為了適應(yīng)軟硬件環(huán)境變化而修改軟件的過程是(CA、校正性維護(hù)B、完善性維護(hù)C、適應(yīng)性維護(hù)D、防止性維護(hù)25.可維護(hù)性的特性中,互相矛盾的是(B)A.可理解性與可測(cè)試性B.效率與可修改性C.可修改性和可理解性D.可理解性與可讀性26.多種不一樣的軟件維護(hù)中,以(C)維護(hù)所占的維護(hù)量最小。A、糾錯(cuò)性維護(hù)B、代碼維護(hù)C、防止性維護(hù)D、文檔維護(hù)A.異步控制B.同步控制C.存取控制D.基線控制28.變更控制是一項(xiàng)最重要的軟件配置任務(wù),其中“檢出”和(A)處理實(shí)現(xiàn)了兩個(gè)重A.登入B.管理C.填寫變更規(guī)定D.審查29.用Gantt圖表達(dá)軟件項(xiàng)目進(jìn)度安排,下列說法中對(duì)的的是(B)A.可以反應(yīng)多種任務(wù)之間的復(fù)雜關(guān)系B.可以直觀表達(dá)任務(wù)之間互相依賴制約關(guān)系C.可以表達(dá)哪些任務(wù)是關(guān)鍵任務(wù)D.可以表達(dá)子任務(wù)之間的并行和串行關(guān)系以返回到近來和最恰當(dāng)?shù)?C)上A.配置項(xiàng)B.程序C.基線D.過程1.為建立良好的編程風(fēng)格應(yīng)遵照什么原則?答:1)節(jié)簡化2)模塊化3)簡樸化4)構(gòu)造化②按字母次序闡明對(duì)象名③使用讀者明了的構(gòu)造化程序部件;④采用直截了當(dāng)?shù)乃惴?;⑤根?jù)應(yīng)用背景排列程序各個(gè)部分;⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機(jī)器多做啰嗦的工作,如反復(fù)、庫函數(shù);⑧用公共函數(shù)調(diào)用替代反復(fù)出現(xiàn)的體現(xiàn)式;⑨防止循環(huán)、分支的嵌套層數(shù)過高;⑩單入口單出口。①有效、合適地使用注釋。②協(xié)調(diào)使用程序塊注釋和程序行注釋。③保持文檔和程序的同步。①一直采用統(tǒng)一縮進(jìn)規(guī)則;②合適插入括號(hào)表明運(yùn)算次序、排除二義性;③有效地使用空格符以區(qū)別程序的不一樣意群。2.什么是軟件測(cè)試?答:軟件測(cè)試從廣義上講,是指軟件產(chǎn)品生存周期內(nèi)所有的檢查、評(píng)審和確認(rèn)活動(dòng)。從狹義上講,軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程?;蛘哒f,軟件測(cè)試是根據(jù)軟件開發(fā)各個(gè)階段的規(guī)格闡明和程序內(nèi)部構(gòu)造而精心設(shè)計(jì)一批測(cè)試用例,用這些測(cè)試用例運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。3.軟件測(cè)試的原則是什么?答:軟件測(cè)試的原則有:1)應(yīng)當(dāng)把測(cè)試貫穿在整個(gè)開發(fā)過程之中。實(shí)際上,從需求分析階段開始,每個(gè)階段結(jié)束之前都要進(jìn)行階段審查,目的是盡早發(fā)現(xiàn)和糾正錯(cuò)誤。2)每個(gè)測(cè)試用例都應(yīng)當(dāng)包括測(cè)試輸入數(shù)據(jù)和這組數(shù)據(jù)輸入作用下的預(yù)期輸出成果。在實(shí)際操作中可以列出一張表格,包括每個(gè)測(cè)試用例的編號(hào)、類型、輸入數(shù)據(jù)、預(yù)期輸出成果、實(shí)際輸出成果、出錯(cuò)原因分析。3)要對(duì)每個(gè)測(cè)試成果進(jìn)行全面檢查,不要遺漏已經(jīng)出現(xiàn)的錯(cuò)誤跡象。4)程序員應(yīng)當(dāng)盡量防止檢查自己編寫的代碼。測(cè)試工作需要嚴(yán)格的工作作風(fēng),程序員在測(cè)試自己編寫的代碼時(shí)往往會(huì)帶有某些傾向性,使得他們工作中常常出現(xiàn)某些疏漏。并且,程序員對(duì)設(shè)計(jì)規(guī)格闡明書的理解錯(cuò)誤而引入的錯(cuò)誤更是難于發(fā)現(xiàn)。5)在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括有效的、期望的輸入狀況,也要包括無效的和不期望的輸入狀況。既可以驗(yàn)證程序正常運(yùn)行的合理輸入,也可以驗(yàn)證對(duì)異常狀況處理的不合理輸入數(shù)據(jù)以及臨界數(shù)據(jù)。在測(cè)試程序時(shí),人們常常過多地考慮合法的和期望的輸入條件,以檢查程序與否做了它應(yīng)當(dāng)做的事情,而忽視了不合法的和預(yù)想不到的輸入條件。實(shí)際上,顧客在使用系統(tǒng)時(shí),輸入某些錯(cuò)誤指令和參數(shù)是常常發(fā)生的,假如軟件碰到這種狀況不能做出合適的反應(yīng),給出對(duì)應(yīng)的提醒信息,就也許會(huì)誤導(dǎo)顧客,甚至導(dǎo)致嚴(yán)重?fù)p失。6)軟件中遺留的錯(cuò)誤數(shù)量與已經(jīng)發(fā)現(xiàn)的錯(cuò)誤數(shù)量成正比。根據(jù)這個(gè)規(guī)律,對(duì)測(cè)試中發(fā)現(xiàn)錯(cuò)誤成堆的模塊更要仔細(xì)測(cè)試。例如,在某個(gè)著名的操作系統(tǒng)中,44%的錯(cuò)誤僅與4%的模塊有關(guān)。7)回歸測(cè)試的關(guān)聯(lián)性要尤其引起注意,修改一種錯(cuò)誤而引起更多錯(cuò)誤的現(xiàn)象并不少8)測(cè)試程序時(shí)不僅要檢查程序與否做了它應(yīng)當(dāng)做的事情,還要檢查它與否做了不該做的事情。例如,工資軟件中,軟件只完畢在編職工的工資計(jì)算和輸出,不在編人員的工資是不進(jìn)行計(jì)算和輸出的。假如軟件將不在編人員的工資信息也輸出顯然是不合適的。9)嚴(yán)格執(zhí)行測(cè)試計(jì)劃。在測(cè)試之前應(yīng)當(dāng)有明確的測(cè)試計(jì)劃,內(nèi)容包括:要測(cè)試的軟件功能和內(nèi)容、測(cè)試用例和預(yù)期成果、測(cè)試的進(jìn)度安排、需要的工具和資源、測(cè)試控制方式和過程等。10)做好測(cè)試記錄,為記錄和維護(hù)提供基礎(chǔ)數(shù)據(jù)。4.請(qǐng)闡明集成測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試有什么不一樣?答:集成測(cè)試界于單元測(cè)試和系統(tǒng)測(cè)試之間,起到“橋梁作用”,一般由開發(fā)小組采用白盒加黑盒的方式來測(cè)試,既驗(yàn)證“設(shè)計(jì)”,又驗(yàn)證“需求”。系統(tǒng)測(cè)試的粒度最大,一般由獨(dú)立測(cè)試小組采用黑盒方式來測(cè)試,重要測(cè)試系統(tǒng)與否符合“需驗(yàn)收測(cè)試與系統(tǒng)測(cè)試相似,重要區(qū)別是測(cè)試人員不一樣,驗(yàn)收測(cè)試由顧客執(zhí)行。5.簡述單元測(cè)試的內(nèi)容。答:單元測(cè)試的內(nèi)容有1)模塊接口測(cè)試:對(duì)通過被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。為此,對(duì)模塊接口,包括參數(shù)表、調(diào)用子模塊的參數(shù)、全程數(shù)據(jù)、文獻(xiàn)輸入/輸出操作都必須檢查。2)局部數(shù)據(jù)構(gòu)造測(cè)試:設(shè)計(jì)測(cè)試用例檢查數(shù)據(jù)類型闡明、初始化、缺省值等方面的問題,還要查清全程數(shù)據(jù)對(duì)模塊的影響。3)途徑測(cè)試:選擇合適的測(cè)試用例,對(duì)模塊中重要的執(zhí)行途徑進(jìn)行測(cè)試。對(duì)基本執(zhí)行途徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量途徑錯(cuò)誤。4)錯(cuò)誤處理測(cè)試:檢查模塊的錯(cuò)誤處理功能與否包具有錯(cuò)誤或缺陷。例如,與否拒絕不5)邊界測(cè)試:要尤其注意數(shù)據(jù)流、控制流中剛好等于、5)此外,假如對(duì)模塊運(yùn)行時(shí)間有規(guī)定的話,還要專門進(jìn)行關(guān)鍵途徑測(cè)試,以確定最6.什么是白盒測(cè)試?它適應(yīng)哪些測(cè)試?7.非漸增式測(cè)試與漸增式測(cè)試有什么區(qū)別?漸增式測(cè)試怎樣組裝模塊?答:1)漸增式可以較早地發(fā)現(xiàn)模塊界面之間的錯(cuò)誤,非漸增式則要到最終將所有模塊連接2)非漸增式需要較多的人工3)漸增式有助于排錯(cuò)。假如模塊界面間有錯(cuò),假如用非漸增式,此類錯(cuò)誤到最終聯(lián)合測(cè)試時(shí)才能發(fā)現(xiàn),此時(shí)很難判斷錯(cuò)誤發(fā)生在哪一部分,但假如用漸4)漸增式比較徹底。5)漸增式需要較多的機(jī)器時(shí)間。6)非漸增式方式,開始時(shí)容許幾種測(cè)試人員并行工8.采用黑盒技術(shù)設(shè)計(jì)測(cè)試用例有哪幾種措施?這些措施各有什么特點(diǎn)?答:黑盒測(cè)試設(shè)計(jì)測(cè)試用例的措施有1)等價(jià)類劃分法特點(diǎn)是:a、測(cè)試的內(nèi)容相似b、一種等價(jià)類中的某個(gè)測(cè)試可以發(fā)現(xiàn)缺陷,那么這個(gè)等價(jià)類的其他測(cè)試也能發(fā)現(xiàn)價(jià)類中的某個(gè)測(cè)試不能發(fā)現(xiàn)缺陷,那么這個(gè)等價(jià)類的其他測(cè)試也不能發(fā)現(xiàn)缺陷2)邊界值分析法特點(diǎn)是:用邊界值分析時(shí)時(shí)常收獲較大,它是在等價(jià)類的邊界上選擇測(cè)試用例3)錯(cuò)誤推測(cè)法特點(diǎn)是:沒有確定的環(huán)節(jié),很大程度上是憑借經(jīng)驗(yàn)進(jìn)行的4)因果圖法特點(diǎn)是:9.白盒測(cè)試法有哪些覆蓋原則?試對(duì)它們的檢錯(cuò)能力進(jìn)行比較。答:白盒測(cè)試的覆蓋原則有:語句覆蓋->鑒定覆蓋->條件蓋->條件組合覆蓋->途徑覆蓋檢錯(cuò)能力由弱到強(qiáng)10.根據(jù)下面程序代碼,畫出程序流程圖,然后設(shè)計(jì)滿足條件/鑒定覆蓋、條件組合覆蓋的ELSEIF(X>=90ANDY>=75)THENIF(X>=75ANDY>=90)THYNNN測(cè)試用例:條件/鑒定覆蓋:條件組合覆蓋:11.軟件的可維護(hù)性是軟件設(shè)計(jì)師最關(guān)注的性能,談?wù)劄榱双@得軟件良好的可維護(hù)性,在設(shè)計(jì)時(shí)應(yīng)當(dāng)注意哪些問題?答:為獲得軟件的良好可維護(hù)性,在設(shè)計(jì)階段應(yīng)當(dāng)做某些變更試驗(yàn),檢查系統(tǒng)的可維護(hù)性、靈活性和可移植性,設(shè)計(jì)時(shí)應(yīng)當(dāng)將此后也許變更的內(nèi)容與其他部分分離開來,并且遵照高內(nèi)聚、低偶合的原則。12.在軟件文檔中,你認(rèn)為哪些文檔對(duì)于軟件的維護(hù)最重要?需求分析文檔、設(shè)計(jì)文檔、程序文檔對(duì)軟件維護(hù)很重要13.軟件維護(hù)時(shí)的源程序修改方略是什么?答:軟件維護(hù)時(shí)的源程序修改方略是:由于軟件維護(hù)最終貫徹在修改源程序和文檔上。為了對(duì)的、有效地修改源程序,一般要先分析和理解源程序,然后才能修改源程序,最終重新測(cè)試和驗(yàn)證源程序。14.軟件項(xiàng)目計(jì)劃包括那些內(nèi)容?答:軟件項(xiàng)目計(jì)劃的內(nèi)容包括:1.范圍。對(duì)該軟件項(xiàng)目的綜合描述,定義起所要做的工作以及性能限制,它包括:2.資源。(4)其他。件進(jìn)度與其他工程沒有很大的區(qū)別,其措施重要有:15.什么是軟件配置管理?什么是基線?三、應(yīng)用題1.請(qǐng)讀者參照可以找到的編程規(guī)范,設(shè)計(jì)一種C語言編程規(guī)范。1.1版權(quán)和版本的申明版權(quán)和版本的申明位于頭文獻(xiàn)和定義文獻(xiàn)的開頭(參見示例1-1),重要內(nèi)容有:(1)版權(quán)信息。(2)文獻(xiàn)名稱,標(biāo)識(shí)符,摘要。(3)目前版本號(hào),作者/修改者,完畢日期。(4)版本歷史信息。*Copyright(c),上海貝爾有限企業(yè)網(wǎng)絡(luò)應(yīng)用事業(yè)部**文獻(xiàn)名稱:*文獻(xiàn)標(biāo)識(shí):見配置管理計(jì)劃書*摘要:簡要描述本文獻(xiàn)的內(nèi)容**目前版本:1.1*作者:輸入作者(或修改者)名字*完畢日期:7月20日**取代版本:1.0*原作者:輸入原作者(或修改者)名字*完畢日期:5月10日示例1-1版權(quán)和版本的申明1.2頭文獻(xiàn)的構(gòu)造(1)頭文獻(xiàn)開頭處的版權(quán)和版本申明(參見示例1-1)。(2)預(yù)處理塊。(3)函數(shù)和類構(gòu)造申明等。假設(shè)頭文獻(xiàn)名稱為graphics.h,頭文獻(xiàn)的構(gòu)造參見示例1-2?!疽?guī)則1-2-1】為了防止頭文獻(xiàn)被反復(fù)引用,應(yīng)當(dāng)用ifndef/define/endif構(gòu)造產(chǎn)生預(yù)【規(guī)則1-2-2】用#include<>格式來引用原則庫的頭文獻(xiàn)(編譯器將從原則庫目錄開始搜索)?!疽?guī)則1-2-3】用#include“”格式來引用非原則庫的頭文獻(xiàn)(編譯器將從顧客的工作目錄開始搜索)?!咎嶙h1-2-1】頭文獻(xiàn)中只寄存“申明”而不寄存“定義”#ifndefGRAPHICS_H//防止graphics.h被反復(fù)引用#include<math.h>//引用原則庫的頭文獻(xiàn)#include“myheader.h”//引用非原則庫的頭文獻(xiàn)voidFunction1(…);//全局函數(shù)申明classBox//類構(gòu)造申明#endif1.3定義文獻(xiàn)的構(gòu)造(1)定義文獻(xiàn)開頭處的版權(quán)和版本申明(參見示例1-1)。(2)對(duì)某些頭文獻(xiàn)的引用。(3)程序的實(shí)現(xiàn)體(包括數(shù)據(jù)和代碼)。假設(shè)定義文獻(xiàn)的名稱為graphics.cpp,定義文獻(xiàn)的構(gòu)造參見示例1-3。//版權(quán)和版本申明見示例1-1,此處省略。//全局函數(shù)的實(shí)現(xiàn)體{}//類組員函數(shù)的實(shí)現(xiàn)體}示例1-3C定義文獻(xiàn)的構(gòu)造1.4目錄構(gòu)造假如一種軟件的頭文獻(xiàn)數(shù)目比較多(如超過十個(gè)),一般應(yīng)將頭文獻(xiàn)和定義文獻(xiàn)分例如可將頭文獻(xiàn)保留于include目錄,將定義文獻(xiàn)保留于source目錄(可以是多級(jí)假如某些頭文獻(xiàn)是私有的,它不會(huì)被顧客的程序直接引用,版式雖然不會(huì)影響程序的功能,但會(huì)影響可讀性。程序的2.1空行空行起著分隔程序段落的作用??招械皿w(不過多也不過少)將使程序的布局愈加【規(guī)則2-1-1】在每個(gè)類申明之后、每個(gè)函數(shù)定義結(jié)束之后都要加空行。【規(guī)則2-1-2】在一種函數(shù)體內(nèi),邏揖上親密有關(guān)的語句之間不加空行,其他地方應(yīng)2.2代碼行【規(guī)則2-2-1】一行代碼只做一件事情,如只定義一種變量,或只寫一條語句。這樣【規(guī)則2-2-2】if、for、while、do等語句自占一行,執(zhí)行語句不得緊跟其后。不管【提議2-2-3】盡量在定義變量的同步初始化該變量(就近原則)假如變量的引用處和其定義處相隔比較遠(yuǎn),變量的初始化很intwidth=10;//定義并初紿化widthintheight=10;//定義并初紿化heightintdepth=10;//定義并初紿化depth2.3代碼行內(nèi)的空格【規(guī)則2-3-1】關(guān)鍵字之后要留空格。象const、virtual、inline、case等關(guān)鍵字之后至少要留一種空格,否則無法辨析關(guān)鍵字。象if、for、while等關(guān)鍵字之后應(yīng)留一種空格再跟左括號(hào)‘(',以突出關(guān)鍵字?!疽?guī)則2-3-2】函數(shù)名之后不要留空格,緊跟左括號(hào)‘(',以與關(guān)鍵字區(qū)別。【規(guī)則2-3-3】‘('向后緊跟,‘)’、‘,’、‘;'向前緊跟,緊跟處不留空格。【規(guī)則2-3-5】賦值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域操作符,如“=”、“+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后應(yīng)當(dāng)加空格。【規(guī)則2-3-6】一元操作符如“!”、“~”、“++”、“--”、“&”(地址運(yùn)算符)等前后不加空格?!疽?guī)則2-3-7】象“[]”、“.”、“->”此類操作符前后不加空格。【提議2-3-8】對(duì)于體現(xiàn)式比較長的for語句和if語句,為了緊湊起見可以合適地去掉某些空格,如for(i=0;i<10;i++)和if((a<=b)&&(c<=d))2.4修飾符的位置修飾符*和&應(yīng)當(dāng)靠近數(shù)據(jù)類型還是該靠近變量名,是個(gè)有爭(zhēng)議的活題。是int類型的指針。上述寫法的弊端是輕易引起誤解,例如:int*x,y;此處y輕易被誤解為指針變量。雖然將x和y分行定義可以防止誤解,但并不是人人都樂意這樣做?!疽?guī)則2-4-1】應(yīng)當(dāng)將修飾符*和&緊靠變量名例如:2.5注釋C語言的注釋符為“/*...*/”。雖然注釋有助于理解代碼,但注意不可過多地使用注釋?!疽?guī)則2-5-1】注釋是對(duì)代碼的“提醒”,而不是文檔。程序中的注釋不可喧賓奪主,注釋太多了會(huì)讓人眼花繚亂。注釋的把戲要少?!疽?guī)則2-5-2】假如代碼本來就是清晰的,則不必加注釋。否則多此一舉,令人厭煩。例如i++;//i加1,多出的注釋【規(guī)則2-5-3】邊寫代碼邊注釋,修改代碼同步修改對(duì)應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除。【規(guī)則2-5-4】注釋應(yīng)當(dāng)精確、易懂,防止注釋有二義性。錯(cuò)誤的注釋不僅無益反而有害?!疽?guī)則2-5-5】盡量防止在注釋中使用縮寫,尤其是不常用縮寫?!疽?guī)則2-5-6】注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方,不【規(guī)則2-5-7】現(xiàn)代碼比較長,尤其是有多重嵌套時(shí),應(yīng)當(dāng)在某些段落的結(jié)束處加注3.1共性規(guī)則本節(jié)論述的共性規(guī)則是被大多數(shù)程序員采納的,我們應(yīng)當(dāng)程序中的英文單詞一般不會(huì)太復(fù)雜,用詞應(yīng)當(dāng)精確。例如不要把CurrentValue【規(guī)則3-1-2】標(biāo)識(shí)符的長度應(yīng)當(dāng)符合“min-length&&max-information”原則。幾十年前老ANSIC規(guī)定名字不準(zhǔn)超過6個(gè)字符,現(xiàn)今的C不再有此限制。一般來說,長名字能更好地體現(xiàn)含義,因此函數(shù)名、變量名、類名長達(dá)怪。那么名字與否越長約好?不見得!例如變量名maxval就比maxValueUntil0verflow好用。單字符的名字也是有用的,常見的如i,j,k,m,n,x,y,z等,它們一般可用作函數(shù)【規(guī)則3-1-3】命名規(guī)則盡量與所采用的操作系統(tǒng)或開發(fā)工具的例如Windows應(yīng)用程序的標(biāo)識(shí)符一般采用“大小寫”而Unix應(yīng)用程序的標(biāo)識(shí)符一般采用“小寫加下劃線”的方式,如add_child。別把這兩intx,X;//變量x與X輕易混淆voidfoo(intx);//函數(shù)foo與F00輕易混淆【規(guī)則3-1-5】程序中不要出現(xiàn)標(biāo)識(shí)符完全相似的局部變量和全局變量,盡管兩者的【規(guī)則3-1-6】變量的名字應(yīng)當(dāng)使用“名詞”或者“形容詞+名詞”?!疽?guī)則3-1-7】全局函數(shù)的名字應(yīng)當(dāng)使用“動(dòng)詞”或者“動(dòng)詞+名詞”(動(dòng)賓詞組)。類的組員函數(shù)應(yīng)當(dāng)只使用“動(dòng)詞”,被省略掉的名詞就是對(duì)象自身。DrawBox();//全局函數(shù)box->Draw();//類的組員函數(shù)【規(guī)則3-1-8】用對(duì)的的反義詞組命名具有互斥意義的變量或相反【提議3-1-1】盡量防止名字中出現(xiàn)數(shù)字編號(hào),如Valuel,Value2等,除非邏輯上的確需要編號(hào)。這是為了防止程序員偷懶,不愿為命名動(dòng)腦筋而字(由于用數(shù)字編號(hào)最省事)。4.1參數(shù)的規(guī)則voidSetValue(intwidtvoidSetValue(int,int);//不良的風(fēng)格floatGetValue(vofloatGetValue();//不良的風(fēng)格例如編寫字符串拷貝函數(shù)StringCopy,它有兩個(gè)參數(shù)。假如把參數(shù)名字起為strl和str2,例如那么我們很難弄清晰究竟是把str1拷貝到str2中,還是剛好倒過來??梢园褏?shù)名字起得更故意義,如叫strSource和strDestination。這樣從名字上就可以看出應(yīng)當(dāng)把strSource拷貝到strDestination。尚有一種問題,這兩個(gè)參數(shù)那一種該在前那一種該在后?參數(shù)的次序要遵照程序員StringCopy(str,“HelloWorld”);//參數(shù)次序顛倒【規(guī)則4-1-3】假如參數(shù)是指針,且僅作輸入用,則應(yīng)在類型前加const,以防止該例如voidStringCopy(char*st【規(guī)則4-1-4】假如輸入?yún)?shù)以值傳遞的方式傳遞對(duì)象,則宜改用“const&”方式【提議4-1-5】防止函數(shù)有太多的參數(shù),參數(shù)個(gè)數(shù)盡量控制在5個(gè)以內(nèi)。假如參數(shù)太C原則庫函數(shù)printf是采用不確定參數(shù)的經(jīng)典代表,其原型為:4.2返回值的規(guī)則C函數(shù),為了防止混亂,規(guī)定任何C++/C違反這條規(guī)則的經(jīng)典代表是C原則庫函數(shù)getchar。按照getchar名字的意思,將變量c申明為char類型是很自然的事情。但不幸的是getchar確實(shí)不是char類型,而是int類型,其原型如下:由于c是char類型,取值范圍是[-128,127],假如宏EOF的值在char的取值范圍之外,那么if語句將總是失敗,這種“危險(xiǎn)”人們一般哪里料得到!導(dǎo)致本例錯(cuò)誤的責(zé)【規(guī)則4-2-3】不要將正常值和錯(cuò)誤標(biāo)志混在一起返回。正常值用輸出參數(shù)獲得,而回憶上例,C原則庫函數(shù)的設(shè)計(jì)者為何要將getchar申明為令人迷糊的int類型呢?他會(huì)那在正常狀況下,getchar確實(shí)返回單個(gè)字符。數(shù)(一般為負(fù)1)。因此函數(shù)getchar就成了int類型。我們?cè)趯?shí)際工作中,常常會(huì)碰到上述令人為難的問題。為該將正常值和錯(cuò)誤標(biāo)志分開。即:正常值用輸出參數(shù)獲得,而錯(cuò)誤標(biāo)志用return語句返函數(shù)getchar可以改寫成BOOLGetChar(char*c);雖然gechar比GetChar靈活,例如putchar(getchar());不過假如getchar用錯(cuò)strcpy函數(shù)將strSrc拷貝至輸出參數(shù)strDest中,同步函數(shù)的返回值又是strDest。intlength=strlen(strcpy(str,"HelloWorld"4.3函數(shù)內(nèi)部實(shí)現(xiàn)的規(guī)則不一樣功能的函數(shù)其內(nèi)部實(shí)現(xiàn)各不相似,看起來似乎無觀點(diǎn)。但根據(jù)經(jīng)驗(yàn),我們可以在函數(shù)體的“入口處”和“出口處【規(guī)則4-3-1】在函數(shù)體的“入口處”,對(duì)參數(shù)的有效性進(jìn)行檢查。諸多程序錯(cuò)誤是由非法參數(shù)引起的,我們應(yīng)當(dāng)充足理解并對(duì)的使用“斷言”(assert)【規(guī)則4-3-2】在函數(shù)體的“出口處”,對(duì)return語句的對(duì)的性和效率進(jìn)行檢查。(1)return語句不可返回指向“棧內(nèi)存”的“指針”,由于該內(nèi)存在函數(shù){charstr[]=“helloworld”;//str的內(nèi)存位于棧上}(2)要弄清晰返回的究竟是“值”、還是“指針”。4.4其他提議【提議4-4-2】函數(shù)體的規(guī)模要小,盡量控制在50行代碼之內(nèi)。是函數(shù)的“記憶”存儲(chǔ)器。提議盡量少用static局部變量,除非必【提議4-4-4】不僅要檢查輸入?yún)?shù)的有效性,還要檢查通過其他途徑進(jìn)入函數(shù)體內(nèi)4.5使用斷言斷言assert是僅在Debug版本起作用的宏,它用于檢查“不應(yīng)當(dāng)”發(fā)生的狀況。示例4-5是一種內(nèi)存復(fù)制函數(shù)。在運(yùn)行過程中,假如assert的參數(shù)為假,那么程序就會(huì)中止(一般地還會(huì)出現(xiàn)提醒對(duì)話,闡明在什么地方引起了assert)。void*memcpy(void*pvTo,constvoi{assert((pvTo!=NULL)&&(pvFrom!=NULL));//使用斷言byte*pbTo=(byte*)pvTo;//防止變化pvTo的地址byte*pbFrom=(byte*)pvFrom;//防止變化pvFrom的地址}示例4-5復(fù)制不重疊的內(nèi)存塊assert不是一種倉促拼湊起來的宏。為了不在程序的Debug版本和Release版本引起差異,assert不應(yīng)當(dāng)產(chǎn)生任何副作用。因此assert當(dāng)作一種在任何系統(tǒng)狀態(tài)下都可以安全使用的無害測(cè)試手段。假如程序在assert處終止了,并不是說具有該assert的函數(shù)有錯(cuò)誤,而是調(diào)用者出了差錯(cuò)很少有比跟蹤到程序的斷言,卻不懂得該斷言的作用更讓人沮喪的事了。你化了很多時(shí)間,不是為了排除錯(cuò)誤,而只是為了弄清晰這個(gè)錯(cuò)誤究竟是什么。有的時(shí)候,程序員偶爾還會(huì)設(shè)計(jì)出有錯(cuò)誤的斷言。因此假如搞不清晰斷言檢查的是什么,就很難判斷錯(cuò)誤是出目前途序中,還是出目前斷言中。幸運(yùn)的是這個(gè)問題很好處理,只要加上清晰的注釋即可。這本是顯而易見的事情,可是很少有程序員這樣做。這好比一種人在森林里,看到樹上釘著一塊“危險(xiǎn)”的大牌子。但危險(xiǎn)究竟是什么?樹要倒?有廢井?有野獸?除非告訴人們“危險(xiǎn)”是什么,否則這個(gè)警告牌難以起到積極有效的作用。難以理解的斷言常常被程序員忽視,甚至被刪除?!疽?guī)則4-5-1】使用斷言捕捉不應(yīng)當(dāng)發(fā)生的非法狀況。不要混淆非法狀況與錯(cuò)誤狀況之間的區(qū)別,后者是必然存在的并且是一定要作出處理的?!疽?guī)則4-5-2】在函數(shù)的入口處,使用斷言檢查參數(shù)的有效性(合法性)?!咎嶙h4-5-3】在編寫函數(shù)時(shí),要進(jìn)行反復(fù)的考察,并且自問:“我打算做哪些假定?”一旦確定了的假定,就要使用斷言對(duì)假定進(jìn)行檢查?!咎嶙h4-5-4】一般教科書都鼓勵(lì)程序員們進(jìn)行防錯(cuò)設(shè)計(jì),但要記住這種編程風(fēng)格可能會(huì)隱瞞錯(cuò)誤。當(dāng)進(jìn)行防錯(cuò)設(shè)計(jì)時(shí),假如“不也許發(fā)生”的事情確實(shí)發(fā)生了,則要使用斷言進(jìn)行報(bào)警。其他編程經(jīng)驗(yàn)5.1提高程序的效率程序的時(shí)間效率是指運(yùn)行速度,空間效率是指程序占用內(nèi)存或者外存的狀況。全局效率是指站在整個(gè)系統(tǒng)的角度上考慮的效率,局部效率是指站在模塊或函數(shù)角度上考慮的效率?!疽?guī)則5-1-1】不要一味地追求程序的效率,應(yīng)當(dāng)在滿足對(duì)的性、可靠性、強(qiáng)健性、可讀性等質(zhì)量原因的前提下,設(shè)法提高程序的效率?!疽?guī)則5-1-2】以提高程序的全局效率為主,提高局部效率為輔?!疽?guī)則5-1-3】在優(yōu)化程序的效率時(shí),應(yīng)當(dāng)先找出限制效率的“瓶頸”,不要在無關(guān)緊要之處優(yōu)化?!疽?guī)則5-1-4】先優(yōu)化數(shù)據(jù)構(gòu)造和算法,再優(yōu)化執(zhí)行代碼?!疽?guī)則5-1-5】有時(shí)候時(shí)間效率和空間效率也許對(duì)立,此時(shí)應(yīng)當(dāng)分析那個(gè)更重要,作出合適的折衷。例如多花費(fèi)某些內(nèi)存來提高性能。【規(guī)則5-1-6】不要追求緊湊的代碼,由于緊湊的代碼并不能產(chǎn)生高效的機(jī)器碼。5.2某些有益的提議【提議5-2-1】當(dāng)心那些視覺上不易辨別的操作符發(fā)生書寫錯(cuò)誤。我們常常會(huì)把“==”誤寫成“=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論