2021年軟件工程形成性考核冊(cè)_第1頁
2021年軟件工程形成性考核冊(cè)_第2頁
2021年軟件工程形成性考核冊(cè)_第3頁
2021年軟件工程形成性考核冊(cè)_第4頁
2021年軟件工程形成性考核冊(cè)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程作業(yè)1(第1~4章)一、選取題:開發(fā)軟件所需高成本和產(chǎn)品低質(zhì)量之間有著尖銳矛盾,這種現(xiàn)象稱做(C)。A.軟件工程 B.軟件周期 C.軟件危機(jī) D.軟件產(chǎn)生瀑布模型本質(zhì)上是一種(A)模型。A.線性順序B.順序迭代C.線性迭代D.初期產(chǎn)品瀑布模型存在問題是(B)。A.顧客容易參加開發(fā) B.缺少靈活性C.顧客與開發(fā)者易溝通D.合用可變需求螺旋模型是一種將瀑布模型和(A)結(jié)合起來軟件開發(fā)模型。A.增量模型 B.專家系統(tǒng) C.噴泉模型 D.變換模型原型化辦法是顧客和設(shè)計(jì)者之間執(zhí)行一種交互構(gòu)成,合用于(A)系統(tǒng)。A.需求不擬定性高 B.需求擬定 C.管理信息 D.實(shí)時(shí)下列關(guān)于軟件工程原則,屬于國(guó)際原則是(D)A.GB B.DIN C.ISO D.IEEE構(gòu)造化辦法是一種基于(D)辦法。A.數(shù)據(jù)構(gòu)造B.程序構(gòu)造 C.算法D.數(shù)據(jù)流軟件可行性研究實(shí)質(zhì)上是要進(jìn)行一次(A)需求分析、設(shè)計(jì)過程。A、簡(jiǎn)化、壓縮 B、詳細(xì) C、徹底 D、進(jìn)一步可行性研究目是(D)A、分析開發(fā)系統(tǒng)必要性 B、擬定系統(tǒng)建設(shè)方案 C、分析系統(tǒng)風(fēng)險(xiǎn) D、擬定與否值得開發(fā)系統(tǒng)設(shè)年利率為i,現(xiàn)存入p元,不計(jì)復(fù)利,n年后可得錢數(shù)為(C)。A、P×(1+i*n) B、P×(i+1)*n C、p×(1+i)n D、p×(i+n)可行性研究是在(A)之前A、系統(tǒng)開發(fā) B、測(cè)試 C、試運(yùn)營(yíng) D、集成測(cè)試可行性研究需要時(shí)間長(zhǎng)短取決于系統(tǒng)規(guī)模,普通來說,可行性研究成本只是預(yù)期總成本(C)。A、1% B、20% C、8% D、50%國(guó)內(nèi)正式頒布實(shí)行(B)對(duì)計(jì)算機(jī)病毒定義具備法律性、權(quán)威性。A.《計(jì)算機(jī)軟件保護(hù)條例》B.《中華人民共和國(guó)計(jì)算機(jī)信息系統(tǒng)安全保護(hù)條例》C.《中華人民共和國(guó)著作權(quán)法》D.《計(jì)算機(jī)病毒防治管理辦法》效率是一種性能規(guī)定,因而應(yīng)當(dāng)在如下哪個(gè)階段規(guī)定?BA、可行性分析B、需求分析C、概要設(shè)計(jì)D、詳細(xì)設(shè)計(jì)需求規(guī)格闡明書作用不涉及(D)A、軟件驗(yàn)收根據(jù)B、顧客與開發(fā)人員對(duì)軟件要做什么共同理解C、軟件可行性研究根據(jù) D、軟件設(shè)計(jì)根據(jù)數(shù)據(jù)字典是用來定義(D)中各個(gè)成分詳細(xì)含義。A、程序流程圖B、功能構(gòu)造圖 C、系統(tǒng)構(gòu)造圖D、數(shù)據(jù)流程圖數(shù)據(jù)流程圖是(A)辦法中用于表達(dá)系統(tǒng)邏輯模型一種圖形工具。A、SA B、SD C、SP D、SCDFD中每個(gè)加工至少有(A)。A、一種輸入流或一種輸出流 B、一種輸入流和一種輸出流C、一種輸入流 D、一種輸出流需求分析階段核心任務(wù)是擬定(D)A、軟件開發(fā)辦法 B、軟件開發(fā)工具C、軟件開發(fā)費(fèi)D、軟件系統(tǒng)功能在SD辦法中全面指引模塊劃分最重要原則是(D)。A、程序模塊化B、模塊高內(nèi)聚C、模塊低耦合D、模塊獨(dú)立性在模塊3種基本屬性中,反映模塊內(nèi)部特性是(C)。A、接口 B、功能 C、邏輯 D、狀態(tài)模塊耦合性可以按照耦合限度高低進(jìn)行排序,如下哪一項(xiàng)符合從低到高對(duì)的順序(D)。A、數(shù)據(jù)構(gòu)造耦合,公共耦合,控制耦合,內(nèi)容耦合B、數(shù)據(jù)耦合,控制耦合,數(shù)據(jù)構(gòu)造耦合,公共耦合C、無直接耦合,數(shù)據(jù)構(gòu)造耦合,內(nèi)容耦合,控制耦合D、無直接耦合,數(shù)據(jù)耦合,控制耦合,內(nèi)容耦合PDL是描述解決過程(C)A、做什么B、為什么做C、怎么做D、對(duì)誰做(D)工具在軟件詳細(xì)設(shè)計(jì)過程中不采用。A、鑒定表 B、IPO圖 C、PDL D、DFD圖為高質(zhì)量地開發(fā)軟件項(xiàng)目,在軟件構(gòu)造設(shè)計(jì)時(shí),必要遵循(A)原則。A.信息隱蔽B、質(zhì)量控制 C、程序優(yōu)化D、數(shù)據(jù)共享當(dāng)一種模塊直接使用另一種模塊內(nèi)部數(shù)據(jù),這種模塊之間耦合為(D)A、數(shù)據(jù)耦合B、公共耦合C、標(biāo)記耦合D、內(nèi)容耦合詳細(xì)設(shè)計(jì)與概要設(shè)計(jì)銜接圖形工具是(B)。 A、DFD圖B、SC圖C、PAD圖D、程序流程圖下列幾種類型中,耦合性最弱是(D)。 A、內(nèi)容型B、控制型C、公共型D、數(shù)據(jù)型軟件構(gòu)造使用圖形工具,普通采用(C)圖。 A、DFD B、PAD C、SC D、ER在七種偶合中,最低偶合是(D)。A、內(nèi)容偶合B、公共偶合C、數(shù)據(jù)偶合D、非直接偶合二、簡(jiǎn)答題什么是軟件工程?軟件工程目的是什么?答:軟件工程是①將系統(tǒng)化、規(guī)范、可度量辦法應(yīng)用于軟件開發(fā)、運(yùn)營(yíng)和維護(hù)過程,即將工程化應(yīng)用于軟件開發(fā)和管理之中,②對(duì)①中所選辦法研究。目的:合理預(yù)算開發(fā)成本,付出較低開發(fā)費(fèi)用。實(shí)現(xiàn)預(yù)期軟件功能,達(dá)到較好軟件性能,滿足顧客需求。3提高軟件可維護(hù)性,減少維護(hù)費(fèi)用。4提高軟件開發(fā)生產(chǎn)率,及時(shí)交付使用指出瀑布模型中下列任務(wù)順序:驗(yàn)收測(cè)試,項(xiàng)目籌劃,單元測(cè)試,需求評(píng)審,成本預(yù)計(jì),概要設(shè)計(jì),詳細(xì)設(shè)計(jì),系統(tǒng)測(cè)試,設(shè)計(jì)評(píng)審,編碼,需求規(guī)格闡明書。答:項(xiàng)目籌劃,成本預(yù)計(jì),需求規(guī)格闡明書,需求評(píng)審,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),設(shè)計(jì)評(píng)審,編碼,單元測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試可行性研究報(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è)基本(8)項(xiàng)目實(shí)行進(jìn)度籌劃(9)其他尚需要闡明必要方面(10)結(jié)論什么是需求分析?需求分析階段基本任務(wù)是什么?答:所謂"需求分析",是指對(duì)要解決問題進(jìn)行詳細(xì)分析,弄清晰問題規(guī)定,涉及需要輸入什么數(shù)據(jù),要得到什么成果,最后應(yīng)輸出什么??梢哉f,“需求分析”就是擬定要計(jì)算機(jī)“做什么”。任務(wù):擬定軟件項(xiàng)目目的和范疇。調(diào)查使用者規(guī)定,分析軟件必要做什么,編寫需求規(guī)格闡明書等它有關(guān)文檔,并進(jìn)行必要需求審查。除此之外,還涉及需求變更控制,需求風(fēng)險(xiǎn)控制,需求版本控制等對(duì)需求管理工作什么是構(gòu)造化分析辦法?該辦法使用什么描述工具?答:構(gòu)造化分析辦法是面向數(shù)據(jù)流辦法,因而,此辦法研究核心是數(shù)據(jù)構(gòu)成和數(shù)據(jù)流向和對(duì)數(shù)據(jù)加工解決。構(gòu)造化分析辦法用抽象模型概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換關(guān)系,自頂向下逐級(jí)分解,直至找到滿足功能規(guī)定所有可實(shí)現(xiàn)軟件元素為止描述工具:1系統(tǒng)流程圖2數(shù)據(jù)流程圖3數(shù)據(jù)字典4IPO圖5層次方框圖6實(shí)體—關(guān)系圖7狀態(tài)—變遷圖構(gòu)造化分析辦法通過哪些環(huán)節(jié)來實(shí)現(xiàn)?答:1)

擬定系統(tǒng)功能規(guī)定2)

擬定系統(tǒng)數(shù)據(jù)規(guī)定3)

擬定系統(tǒng)操作規(guī)定和界面規(guī)定4)

擬定系統(tǒng)性能規(guī)定5)

擬定系統(tǒng)運(yùn)營(yíng)規(guī)定6)

獲得當(dāng)前系統(tǒng)物理模型7)

抽象出當(dāng)前系統(tǒng)邏輯模型8)

建立目的系統(tǒng)邏輯模型。9)

修正開發(fā)籌劃10)如果需要?jiǎng)t開發(fā)系統(tǒng)原型什么是數(shù)據(jù)流圖?其作用是什么?其中基本符號(hào)各表達(dá)什么含義?答:數(shù)據(jù)流圖:簡(jiǎn)稱DFD,就是采用圖形方式來表達(dá)系統(tǒng)邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部邏輯流向和邏輯變換過程,是構(gòu)造化系統(tǒng)分析辦法重要表達(dá)工具及用于表達(dá)軟件模型一種圖示辦法。數(shù)據(jù)流圖基本符號(hào)意思:1.矩形表達(dá)數(shù)據(jù)外部實(shí)體;2.圓角矩形表達(dá)變換數(shù)據(jù)解決邏輯;3.少右面邊矩形表達(dá)數(shù)據(jù)存儲(chǔ);4.箭頭表達(dá)數(shù)據(jù)流。什么是數(shù)據(jù)字典?其作用是什么?它有哪些條目?答:數(shù)據(jù)字典,重要用來描述數(shù)據(jù)流程圖中數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、解決過程和和數(shù)據(jù)源點(diǎn)/終點(diǎn)。作用:數(shù)據(jù)流程圖描述了系統(tǒng)邏輯構(gòu)造,其中四個(gè)基本圖形元素含義無法在數(shù)據(jù)流程圖中詳細(xì)闡明,因而數(shù)據(jù)流程圖需要與其她工具配合使用,數(shù)據(jù)字典就是這樣工具之一。涉及條目:數(shù)據(jù)流詞條數(shù)據(jù)元素詞條數(shù)據(jù)存儲(chǔ)詞條數(shù)據(jù)加工解決詞條數(shù)據(jù)源點(diǎn)及終點(diǎn)詞條什么是概要設(shè)計(jì)?有哪些基本任務(wù)?答:概要設(shè)計(jì):依照顧客需求先擬定軟件系統(tǒng)總體構(gòu)造和總設(shè)計(jì)原則基本任務(wù):設(shè)想供選取方案。推薦最佳方案。功能分解,擬定軟件構(gòu)造。設(shè)計(jì)軟件構(gòu)造。制定測(cè)試籌劃。數(shù)據(jù)設(shè)計(jì)。書寫文檔。涉及總體設(shè)計(jì)規(guī)格闡明書。顧客手冊(cè)。測(cè)試籌劃。設(shè)計(jì)審查和復(fù)審。詳細(xì)設(shè)計(jì)基本任務(wù)是什么?有那幾種描述辦法?答:詳細(xì)設(shè)計(jì)階段任務(wù)是要為編寫程序代碼設(shè)計(jì)“圖紙”,由程序員按“圖紙”用某種高檔程序設(shè)計(jì)語言編寫程序代碼。重要辦法有設(shè)計(jì)程序流程圖,表格設(shè)計(jì)符號(hào)以及過程設(shè)計(jì)語言。什么是變換流?什么是事物流?答:變換型數(shù)據(jù)流可以劃分為明顯三某些:邏輯輸入,中心變換,邏輯輸出事務(wù)流特點(diǎn)是數(shù)據(jù)沿某個(gè)輸入途徑流動(dòng),該途徑將外部信息轉(zhuǎn)換成事務(wù),其中發(fā)射出多條事務(wù)解決途徑中心解決被稱為中心事務(wù)模塊內(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)成某些耦合分為七類:內(nèi)容耦合——如果一種模塊直接參照另一種模塊內(nèi)容,則這兩個(gè)模塊是內(nèi)容耦合。公共耦合——如果各種模塊都訪問同一種公共數(shù)據(jù)環(huán)境,則稱它們是公共耦合。外部耦合——如果兩個(gè)模塊都訪問同一種全局簡(jiǎn)樸變量而不是同一全局?jǐn)?shù)據(jù)構(gòu)造,并且,不是通過參數(shù)表傳遞該全局變量信息,則這兩個(gè)模塊屬于外部耦合??刂岂詈稀绻KA向模塊B傳遞一種控制信息,則稱這兩個(gè)模塊是控制耦合數(shù)據(jù)構(gòu)造耦合——當(dāng)一種模塊調(diào)用另一種模塊時(shí)傳遞了整個(gè)數(shù)據(jù)構(gòu)造,這兩個(gè)模塊之間具備數(shù)據(jù)構(gòu)造耦合。數(shù)據(jù)耦合——如果兩個(gè)模塊傳遞是數(shù)據(jù)項(xiàng),則這兩個(gè)模塊是數(shù)據(jù)耦合。非直接耦合——如果兩個(gè)模塊之間沒有直接關(guān)系,它們之間聯(lián)系完全通過主模塊控制和調(diào)用來實(shí)現(xiàn),這就是非直接耦合。三、應(yīng)用題1.某旅館電話服務(wù)如下:可以撥分機(jī)號(hào)和外線號(hào)碼。分機(jī)號(hào)是從7201至7299。外線號(hào)碼先撥9,然后是市話號(hào)碼或長(zhǎng)話號(hào)碼。長(zhǎng)話號(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中任意一種號(hào)碼。分局號(hào)是任意長(zhǎng)度為4數(shù)字串。寫出在數(shù)據(jù)字典中,電話號(hào)碼數(shù)據(jù)條目定義(即構(gòu)成)。名稱簡(jiǎn)稱類型長(zhǎng)度取值范疇分機(jī)號(hào)Extension_Number字符47201..7299外線市話號(hào)Addition_Internumber字符99+[455|466|888|552]+4{數(shù)字}4外線長(zhǎng)話號(hào)Addition_Extennumber字符129+[100|101|102|..|298|299|300]+[455|466|888|552]+4{數(shù)字}42.下面是旅客訂飛機(jī)票需求描述,試畫出分層數(shù)據(jù)流程圖。顧客將訂票單交給預(yù)訂系統(tǒng):(1)如果是不合法訂票單,則輸出無效訂票信息;(2)對(duì)合法訂票單預(yù)付款登錄到一種記賬文獻(xiàn)中;(3)系統(tǒng)有航班目錄文獻(xiàn),依照填寫旅行時(shí)間和目地為顧客安排航班;(4)在獲得對(duì)的航班信息和確認(rèn)已交了某些預(yù)付款時(shí)發(fā)出取票單,并記錄到取票單文獻(xiàn)中。顧客在指定日期內(nèi)用取票單換取機(jī)票:(1)系統(tǒng)依照取票單文獻(xiàn)對(duì)取票單進(jìn)行有效性檢查,無效輸出無效取票信息;(2)持有有效取票單顧客在補(bǔ)交了剩余款后將獲得機(jī)票;(3)記賬文獻(xiàn)將被更新,機(jī)票以及顧客信息將被登錄到機(jī)票文獻(xiàn)。訂單中有訂票日期、旅行日期、時(shí)間規(guī)定(上午、下午、晚上)、出發(fā)地、目地、顧客姓名、身份證號(hào)、聯(lián)系電話。0層流程圖預(yù)定流程圖取機(jī)票流程圖3.一種簡(jiǎn)化圖書館信息管理系統(tǒng)有如下功能:(1)借書:輸入讀者借書證,系統(tǒng)檢查借書證與否有效;查閱借書文獻(xiàn),檢查該讀者所借圖書與否超過10本,若已達(dá)10本,顯示信息“已經(jīng)超過借書數(shù)量”,拒借;未達(dá)10本,辦理借書(檢查庫存、修改庫存信息并將讀者借書信息登入借書記錄)(2)還書:輸入書號(hào)和讀者號(hào),從借書記錄中讀出與讀者關(guān)于記錄,查閱所借日期,如果超過3個(gè)月,作罰款解決。否則,修改庫存信息與借書記錄。(3)查詢:可通過借書記錄、庫存信息查詢讀者狀況、圖書借閱狀況及庫存狀況,打印各種登記表。請(qǐng)就以上系統(tǒng)功能畫出分層DFD圖,并建立重要條目數(shù)據(jù)字典。0層數(shù)據(jù)流程圖還書流程圖借書流程圖查詢流程圖數(shù)據(jù)字典:元素名稱名稱類型闡明IPO1還書解決解決依照書號(hào)做還書解決,違規(guī)做懲罰IPO2有效性檢查解決檢查讀者號(hào),圖書號(hào)有效性IPO3借書解決解決按讀者號(hào),圖書號(hào)進(jìn)行借書解決IPO4查詢解決管理員對(duì)某些基本信息進(jìn)行查詢IPO5打印報(bào)表解決打印查詢到信息IPO6懲罰管理解決依照規(guī)則對(duì)延期予以相應(yīng)懲罰IPO7數(shù)量檢查解決對(duì)讀者借出數(shù)量與否符合規(guī)定進(jìn)行檢查DS001讀者信息數(shù)據(jù)存儲(chǔ)讀者信息錄入,修改,刪除,保存DS002庫存信息數(shù)據(jù)存儲(chǔ)圖書基本狀況以及所有圖書整體狀況DS003錯(cuò)還信息數(shù)據(jù)存儲(chǔ)存儲(chǔ)借還書信息,系統(tǒng)自動(dòng)解決,不能人工錄入DS004懲罰信息數(shù)據(jù)存儲(chǔ)存儲(chǔ)延期懲罰信息軟件工程作業(yè)2(第5~7章)一、選取題從本質(zhì)上說,面向?qū)ο笫恰跋取睌M定(A)后擬定執(zhí)行動(dòng)作。A.動(dòng)作主體 B.屬性 C.關(guān)系 D.辦法(B)是對(duì)象靜態(tài)特性。A.辦法 B.屬性 C.關(guān)系 D.操作對(duì)象(D)使對(duì)象動(dòng)態(tài)特性A.特性 B.屬性 C.關(guān)系 D.操作屬于某個(gè)類一種詳細(xì)對(duì)象稱為該類(A)。A.實(shí)例 B.虛擬 C.繼承 D.多態(tài)UML是(A)。一種可視化建模語言是一種可視化程序設(shè)計(jì)語言是一種過程是一種辦法封裝作用是(A)。A.復(fù)用 B.對(duì)象 C.實(shí)例 D.辦法8.面向?qū)ο蠓治龊诵脑谟诮ⅲ˙)模型。A.建立對(duì)的模型B.辨認(rèn)問題域?qū)ο驝.辨認(rèn)對(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ā)一種簡(jiǎn)樸問題解決方案D.建立軟件設(shè)計(jì)基本11.下列(C)不屬于面向?qū)ο蠓治瞿P?。A.用例圖B.類圖C.實(shí)體關(guān)系圖D.順序圖12.(A)用于描述系統(tǒng)中概念層次對(duì)象。A.分析類B.界面類C.實(shí)體類D.控制類13.在基于用例面向?qū)ο蠓治鲞^程中,定義交互行為核心在于通過描述分析類實(shí)例之間(A)將用例職責(zé)分派到分析類中。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.順序圖15.用例職責(zé)普通分派給(D)對(duì)象。A.發(fā)送消息B.接受消息C.發(fā)送和接受雙方D.分析類16.組織機(jī)構(gòu)圖是(C)。A.UML一種最新圖B.類圖一種C.用于辨認(rèn)角色輔助圖D.用例圖一種17.在圖書館系統(tǒng)中,如果已經(jīng)構(gòu)造了一種普通借書者類,日后發(fā)現(xiàn)圖書館學(xué)生和教師在借書中有不同規(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.界面類23.類有三種類型即(A)。A.邊界類、實(shí)體類、控制類B.實(shí)體類、數(shù)據(jù)類、界面類C.控制類、實(shí)體類、數(shù)據(jù)類D.界面類、控制類、公共類24.下面那個(gè)選項(xiàng)不是對(duì)的面向?qū)ο笤O(shè)計(jì)思想。(C)A.對(duì)接口進(jìn)行設(shè)計(jì)B.發(fā)現(xiàn)變化并且封裝它C.先繼承后組合D.先組合后繼承25.定義類屬性類型時(shí)盡量使用已有類型,太多自定義類型會(huì)減少系統(tǒng)(A)指標(biāo)。A.可維護(hù)性B.安全性C.開發(fā)效率D.可移植性二、簡(jiǎn)答題舉例闡明類和對(duì)象關(guān)系。答:學(xué)生可作為一種類---學(xué)生類,每個(gè)學(xué)生就是這個(gè)學(xué)生類一種實(shí)例,例如,學(xué)生張三就是學(xué)生類一種實(shí)例。面向?qū)ο蠓治龊诵沫h(huán)節(jié)有哪些?應(yīng)建立哪幾種模型?答:核心環(huán)節(jié)有辨認(rèn)問題域?qū)ο蟛⒎治鏊鼈兓ハ嘀g關(guān)系,建立簡(jiǎn)潔、精準(zhǔn)、可理解對(duì)的模型;應(yīng)建立模型有功能模型,對(duì)象模型,動(dòng)態(tài)模型。什么是實(shí)體類、邊界類和控制類?為什么將分析類劃提成這三種類型?答:(1)實(shí)體類保存要存入永久存儲(chǔ)體信息。實(shí)體類普通在事件流或交互圖中,是對(duì)顧客最故意義類。邊界類位于系統(tǒng)與外界交界處,涉及所有窗體、報(bào)表、系統(tǒng)硬件接口、與其她系統(tǒng)接口??刂祁愗?fù)責(zé)協(xié)調(diào)其她類工作。每個(gè)用例中至少應(yīng)當(dāng)有一種控制類,它控制用況中事件順序。(2)分為三種類型是由于它們各自功能不同。界面類——描述系統(tǒng)與角色之間接口??刂祁悺诜治瞿P蛢?nèi)表達(dá)協(xié)調(diào)、順序、事務(wù)解決以及控制其她對(duì)象類。實(shí)體類——為需要長(zhǎng)期保存信息進(jìn)行建模類。UML中有哪幾類個(gè)視圖,它們作用分別是什么?答:(1)用例視圖(Use-Caseview)用例視圖用于描述系統(tǒng)功能集。它是從系統(tǒng)外部以顧客角度,對(duì)系統(tǒng)做抽象表達(dá)。用例視圖所描述系統(tǒng)功能依托于外部顧客或另一種系統(tǒng)觸發(fā)激活,為顧客或另一種系統(tǒng)提供服務(wù),實(shí)現(xiàn)與顧客或另一種系統(tǒng)之間交互。用例視圖中可以包括若干個(gè)用例,用例表達(dá)系統(tǒng)可以提供功能,用例視圖是其她視圖核心和基本。其她視圖構(gòu)造依賴于用例視圖中所描述內(nèi)容,由于系統(tǒng)最后目的是實(shí)現(xiàn)用例視圖中描述功能,同步附帶某些非功能性特性,因而用例視圖影響著所有其她視圖。(2)邏輯視圖(Logicalview)如果說用例視圖描述系統(tǒng)“做什么”,那么邏輯視圖就是描述“怎么做”。系統(tǒng)靜態(tài)構(gòu)造描述類、對(duì)象和它們之間關(guān)系,反映是系統(tǒng)靜態(tài)特性或構(gòu)造構(gòu)成。(3)組件視圖(Componentview)組件視圖用來描述系統(tǒng)實(shí)現(xiàn)構(gòu)造和行為特性,反映系統(tǒng)各構(gòu)成元素之間關(guān)系。組件視圖由組件圖實(shí)現(xiàn),重要供開發(fā)者和管理者使用。(4)并發(fā)視圖(ConcurrencyView)并發(fā)視圖用來描述系統(tǒng)動(dòng)態(tài)和行為特性。并發(fā)視圖將任務(wù)劃分為進(jìn)程或線程形式,通過任務(wù)劃分引入并發(fā)機(jī)制,可以高效地使用資源、并行執(zhí)行和解決異步事件。除了劃分系統(tǒng)為并發(fā)執(zhí)行進(jìn)程或線程外,并發(fā)視圖還必要解決通信和同步問題。(5)配備視圖(DeploymentView)配備視圖體現(xiàn)了系統(tǒng)實(shí)現(xiàn)環(huán)境,反映系統(tǒng)物理架構(gòu)。配備視圖還涉及一種映射,該映射顯示在物理架構(gòu)中組件是如何分派。5.順序圖在分析階段作用?答:順序圖描述了一組交互對(duì)象間交互方式,它表達(dá)完畢某項(xiàng)行為對(duì)象和這些對(duì)象之間傳遞消息時(shí)間順序6.活動(dòng)圖在分析階段作用?答:活動(dòng)圖反映系統(tǒng)中從一種活動(dòng)到另一種活動(dòng)流程,強(qiáng)調(diào)對(duì)象間控制流程。活動(dòng)圖特別適合描述工作流和并行解決過程。詳細(xì)地說活動(dòng)圖可以描述一種操作過程中需要完畢活動(dòng);描述一種對(duì)象內(nèi)部工作;描述如何執(zhí)行一組有關(guān)動(dòng)作,以及這些動(dòng)作如何影響它們周邊對(duì)象;闡明一種業(yè)務(wù)活動(dòng)中角色、工作流、組織和對(duì)象是如何工作。7.比較構(gòu)造化設(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)區(qū)別?答:構(gòu)造化設(shè)計(jì):系統(tǒng)被劃提成各種模塊,這些模塊被組織成一種樹型構(gòu)造。根就是主模塊,葉子是最低檔功能模塊。這棵樹也表達(dá)調(diào)用構(gòu)造:每個(gè)模塊都調(diào)用自己直接下級(jí)模塊,并被自己直接上級(jí)模塊調(diào)用。頂層模塊負(fù)責(zé)收集應(yīng)用程序最重要那些執(zhí)行方略,底層模塊實(shí)現(xiàn)解決細(xì)節(jié)。在這個(gè)體系構(gòu)造中越靠上層位置,概念抽象層次就越高。但是,由于上層模塊需要調(diào)用下層模塊,因此這些上層模塊就依賴于下層模塊解決細(xì)節(jié)。也就是說,當(dāng)實(shí)現(xiàn)細(xì)節(jié)發(fā)生變化時(shí),抽象也會(huì)受到影響;如果想復(fù)用某一種抽象話,就必要把它依賴細(xì)節(jié)都一起拖過去。 面向?qū)ο笤O(shè)計(jì):上層創(chuàng)立抽象不依賴于任何細(xì)節(jié),而細(xì)節(jié)則高度依賴于上層抽象。這種依賴關(guān)系變化正是構(gòu)造化設(shè)計(jì)與面向?qū)ο笤O(shè)計(jì)主線區(qū)別。8.什么是框架,它與“設(shè)計(jì)”有什么關(guān)系?答:框架是一組可用于不同應(yīng)用類集合。框架中類普通是某些抽象類并且互相有聯(lián)系,可以通過繼承方式使用這些類,當(dāng)面向?qū)ο笤O(shè)計(jì)進(jìn)行底層設(shè)計(jì)時(shí),對(duì)每個(gè)類進(jìn)行詳細(xì)設(shè)計(jì),設(shè)計(jì)類屬性和操作,優(yōu)化類之間關(guān)系,就可以設(shè)計(jì)成框架來對(duì)類設(shè)計(jì)進(jìn)行構(gòu)架和優(yōu)化。9.系統(tǒng)物理構(gòu)架中應(yīng)當(dāng)涉及哪些信息?答:用UML配備圖描述系統(tǒng)物理構(gòu)架,然后將需求分析階段捕獲系統(tǒng)功能分派到這些物理節(jié)點(diǎn)上。涉及信息為節(jié)點(diǎn)拓?fù)錁?gòu)造、硬件設(shè)備配備、通信途徑、各個(gè)節(jié)點(diǎn)上運(yùn)營(yíng)系統(tǒng)軟件配備、應(yīng)用軟件配備。三、應(yīng)用題一種多媒體商店系統(tǒng)包括一種由媒體文獻(xiàn)構(gòu)成數(shù)據(jù)庫,有兩類媒體文獻(xiàn):圖像文獻(xiàn)和聲音文獻(xiàn)。每個(gè)媒體文獻(xiàn)均有名稱和唯一編碼,并且文獻(xiàn)包括作者信息和格式信息,聲音文獻(xiàn)還包括聲音文獻(xiàn)時(shí)長(zhǎng)(以秒為單位)和作者信息。假設(shè)每個(gè)媒體文獻(xiàn)可以由唯一編碼所辨認(rèn),系統(tǒng)要提供如下功能:媒體庫中可以添加新特別媒體文獻(xiàn)。通過給定文獻(xiàn)編碼查找需要媒體文獻(xiàn)。從媒體庫中刪除指定媒體文獻(xiàn)。給出媒體庫中媒體文獻(xiàn)數(shù)量??紤]類imageFile和audioFile應(yīng)當(dāng)具備哪些恰當(dāng)屬性和辦法答:imageFile類屬性有:Name(文獻(xiàn)名稱),Code(編碼),AuthorInfo(作者信息),F(xiàn)ormat(格式信息);audioFile類除了擁有以上屬性外尚有屬性Time(文獻(xiàn)時(shí)長(zhǎng));imageFile類辦法:Add(imageFile)(添加圖像文獻(xiàn)),Delete(Code)(刪除文獻(xiàn)),GetFile(Code)(查找文獻(xiàn)),GetNumber()(返回媒體文獻(xiàn)數(shù)量);audioFile類辦法:Add(audioFile)(添加聲音文獻(xiàn)),Delete(Code)(刪除文獻(xiàn)),GetFile(Code)(查找文獻(xiàn)),GetNumber()(返回媒體文獻(xiàn)數(shù)量)。若把學(xué)生當(dāng)作一種實(shí)體,它可以提成各種子實(shí)體,如小學(xué)生、中學(xué)生和大學(xué)生等。在面向?qū)ο笤O(shè)計(jì)中,可以創(chuàng)立如下4個(gè)類:類Student、類ElementaryStudent、MiddleStudent;類UniversityStudent。試給出這4個(gè)類屬性以及它們之間關(guān)系。答:Student類為基類,其她三個(gè)類都是Student子類。Student類屬性有:Name(姓名),Sex(性別),Age(年齡),Class(班級(jí))。ElementaryStudent類屬性有:IsTeamMember(與否是少先隊(duì)員),IsGoodStudent(與否是三好學(xué)生)。MiddleStudent類屬性為:IsMember(與否是團(tuán)員),Subject(文科理科)。UniversityStudent類屬性為:IsPartyMember(與否黨員),Department(學(xué)院),Specialty(專業(yè))。三、應(yīng)用題某學(xué)校領(lǐng)書工作流程為:學(xué)生班長(zhǎng)填寫領(lǐng)書單,班主任審查后簽名,然后班長(zhǎng)拿領(lǐng)書單到書庫領(lǐng)書。書庫保管員審查領(lǐng)書單與否有班主任簽名,填寫與否對(duì)的等,不對(duì)的領(lǐng)書單退回給班長(zhǎng);如果填寫對(duì)的則予以領(lǐng)書并修改庫存清單;當(dāng)某書庫存量低于臨界值時(shí),登記需訂書信息。每天下班前為采購部門提供一張訂書單。用活動(dòng)圖來描述領(lǐng)書過程。解:使用順序圖描述下面情景,當(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)。解:某報(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ì)象模型。解:軟件工程作業(yè)3(第8~11章)選取題構(gòu)造化語言是介于自然語言和形式語言之間一種(D)。A.半形式語言B.計(jì)算機(jī)語言C.低檔語言 D.高檔語言程序設(shè)計(jì)語言技術(shù)特性不應(yīng)涉及(C)。A、數(shù)據(jù)構(gòu)造描述性B、抽象類型描述性C、數(shù)據(jù)庫易操作性D、軟件可移植性程序三種基本控制構(gòu)造是(B)。A.過程、子程序和分程序 B.順序、選取和重復(fù)C.遞歸、堆棧和隊(duì)列 D.調(diào)用、返回和轉(zhuǎn)移構(gòu)造化程序設(shè)計(jì)重要強(qiáng)調(diào)是(D)。A.程序規(guī)模B.程序效率 C.程序設(shè)計(jì)語言先進(jìn)性 D.程序易讀性下列關(guān)于功能性注釋不對(duì)的說法是(B)。A.功能性注釋嵌在源程序中,用于闡明程序段或語句功能以及數(shù)據(jù)狀態(tài)B.注釋用來闡明程序段,需要在每一行都要加注釋C.可使用空行或縮進(jìn),以便很容易區(qū)別注釋和程序D.修改程序也應(yīng)修改注釋下列關(guān)于效率說法不對(duì)的是(D)。A.效率是一種性能規(guī)定,其目的應(yīng)當(dāng)在需求分析時(shí)給出B.提高程序效率主線途徑在于選取良好設(shè)計(jì)辦法,數(shù)據(jù)構(gòu)造與算法C.效率重要指解決機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面D.程序效率與程序簡(jiǎn)樸性無關(guān)構(gòu)造化維護(hù)與非構(gòu)造化維護(hù)重要區(qū)別在于(B)。A.軟件與否構(gòu)造化 B.軟件配備與否完整 C.程序完整性 D.文檔完整性關(guān)于JAVA語言下列說法不對(duì)的是(B)。A.跨平臺(tái) B.動(dòng)態(tài)指針 C.解釋型 D.面向?qū)ο笫褂冒缀袦y(cè)試辦法時(shí),擬定測(cè)試數(shù)據(jù)應(yīng)依照(A)和指定覆蓋原則。A程序內(nèi)部邏輯B.程序復(fù)雜構(gòu)造C.使用闡明書 D.程序功能確認(rèn)測(cè)試重要涉及文檔是(A)。A、需求規(guī)格闡明書B、概要設(shè)計(jì)闡明書C、詳細(xì)設(shè)計(jì)闡明書D、源程序測(cè)試核心問題是(D)。A.如何組織對(duì)軟件評(píng)審 B.如何驗(yàn)證程序?qū)Φ男訡.如何采用綜合方略 D.如何選取測(cè)試用例黑盒測(cè)試在設(shè)計(jì)測(cè)試用例時(shí),重要研究(A)。A.需求規(guī)格闡明 B.詳細(xì)設(shè)計(jì)闡明C.項(xiàng)目開發(fā)籌劃 D.概要設(shè)計(jì)闡明與詳細(xì)設(shè)計(jì)闡明下面哪些測(cè)試屬于黑盒測(cè)試(B)。A、途徑測(cè)試B、等價(jià)類劃分C、條件判斷D、循環(huán)測(cè)試在下述哪一種測(cè)試中,測(cè)試人員必要接觸到源程序(B)。A、功能測(cè)試 B、構(gòu)造測(cè)試C、功能測(cè)試和構(gòu)造測(cè)試D、性能測(cè)試檢查軟件產(chǎn)品與否符合需求定義過程稱為(D)。A、確認(rèn)測(cè)試B、集成測(cè)試C、驗(yàn)收測(cè)試D、驗(yàn)證測(cè)試軟件測(cè)試辦法中,黑盒、白盒測(cè)試法是慣用辦法,其中白盒測(cè)試重要用于測(cè)試(D)。構(gòu)造合理性B、軟件外部功能C、程序?qū)Φ男訢、程序內(nèi)部邏輯軟件維護(hù)中,因修改交互輸入順序,沒有對(duì)的記錄而引起錯(cuò)誤是(A)產(chǎn)生副作用。A、文檔B、數(shù)據(jù) C、編碼D、設(shè)計(jì)如下屬于軟件維護(hù)階段文檔是(C)。A、軟件需求闡明B、操作手冊(cè)C、軟件問題報(bào)告D、測(cè)試分析報(bào)告產(chǎn)生軟件維護(hù)副作用,是指(C)。A、開發(fā)時(shí)錯(cuò)誤 B、隱含錯(cuò)誤 C、因修改軟件而導(dǎo)致錯(cuò)誤 D、運(yùn)營(yíng)時(shí)誤操作維護(hù)中,因誤刪除一種標(biāo)記符而引起錯(cuò)誤是(C)副作用。A、文檔 B、數(shù)據(jù) C、編碼 D、設(shè)計(jì)可維護(hù)性特性中,互相增進(jìn)(A)。A、可理解性和可測(cè)試性B、效率和可移植性 C、效率和可修改性 D、效率和構(gòu)造好軟件維護(hù)困難重要因素是(C)A、費(fèi)用低 B、人員少 C、開發(fā)辦法缺陷D、顧客不配合軟件維護(hù)費(fèi)用高重要因素是(C)。A、人員少B、人員多C、生產(chǎn)率低D、生產(chǎn)率高為了適應(yīng)軟硬件環(huán)境變化而修改軟件過程是(C)。A、校正性維護(hù) B、完善性維護(hù) C、適應(yīng)性維護(hù)D、防止性維護(hù)可維護(hù)性特性中,互相矛盾是(B)A.可理解性與可測(cè)試性B.效率與可修改性C.可修改性和可理解性D.可理解性與可讀性各種不同軟件維護(hù)中,以(C)維護(hù)所占維護(hù)量最小。糾錯(cuò)性維護(hù)B、代碼維護(hù)C、防止性維護(hù)D、文檔維護(hù)在變更控制中,(B)可以用來保證由不同顧客所執(zhí)行并發(fā)變更。A.異步控制B.同步控制C.存取控制D.基線控制變更控制是一項(xiàng)最重要軟件配備任務(wù),其中“檢出”和(A)解決實(shí)現(xiàn)了兩個(gè)重要變更控制要素,即存取控制和同步控制。A.登入B.管理C.填寫變更規(guī)定D.審查用Gantt圖表達(dá)軟件項(xiàng)目進(jìn)度安排,下列說法中對(duì)的是(B)A.可以反映各種任務(wù)之間復(fù)雜關(guān)系B.可以直觀表達(dá)任務(wù)之間互相依賴制約關(guān)系C.可以表達(dá)哪些任務(wù)是核心任務(wù)D.可以表達(dá)子任務(wù)之間并行和串行關(guān)系基線可作為軟件生存期中各開發(fā)階段一種檢查點(diǎn)。當(dāng)采用基線發(fā)生錯(cuò)誤時(shí),可以返回到近來和最恰當(dāng)(C)上A.配備項(xiàng)B.程序C.基線D.過程簡(jiǎn)答題為建立良好編程風(fēng)格應(yīng)遵循什么原則?答:1)節(jié)簡(jiǎn)化①不使用不必要變量和函數(shù)②避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)錯(cuò)誤。③盡量減小代碼量。④盡量減少代碼執(zhí)行時(shí)間,提高執(zhí)行效率。⑤避免功能冗余模塊。⑥盡量不使用全局變量。2)模塊化①保證物理和邏輯功能密切有關(guān)。②限定一種模塊完畢一種獨(dú)立功能,提高模塊內(nèi)聚度。③檢查代碼重復(fù)率,重復(fù)多代碼,要抽出來作為一種單獨(dú)模塊。3)簡(jiǎn)樸化①采用直接了當(dāng)算法,避免使用技巧性高和難懂代碼。②使用簡(jiǎn)樸數(shù)據(jù)構(gòu)造,避免使用多維數(shù)組、指針和復(fù)雜表。③注意對(duì)象命名一致性。④以手工方式簡(jiǎn)化算術(shù)和邏輯表達(dá)式。4)構(gòu)造化①按原則化順序闡明數(shù)據(jù);②按字母順序闡明對(duì)象名③使用讀者明了構(gòu)造化程序部件;④采用直截了當(dāng)算法;⑤依照應(yīng)用背景排列程序各個(gè)某些;⑥不隨意為效率而犧牲程序清晰度和可讀性;⑦讓機(jī)器多做啰嗦工作,如重復(fù)、庫函數(shù);⑧用公共函數(shù)調(diào)用代替重復(fù)浮現(xiàn)表達(dá)式;⑨避免循環(huán)、分支嵌套層數(shù)過高;⑩單入口單出口。5)文檔化(documentation)①有效、恰本地使用注釋。②協(xié)調(diào)使用程序塊注釋和程序行注釋。③保持文檔和程序同步。6)格式化(layout)①始終采用統(tǒng)一縮進(jìn)規(guī)則;②恰當(dāng)插入括號(hào)表白運(yùn)算順序、排除二義性;③有效地使用空格符以區(qū)別程序不批準(zhǔn)群。什么是軟件測(cè)試?答:軟件測(cè)試從廣義上講,是指軟件產(chǎn)品生存周期內(nèi)所有檢查、評(píng)審和確認(rèn)活動(dòng)。從狹義上講,軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序過程。或者說,軟件測(cè)試是依照軟件開發(fā)各個(gè)階段規(guī)格闡明和程序內(nèi)部構(gòu)造而精心設(shè)計(jì)一批測(cè)試用例,用這些測(cè)試用例運(yùn)營(yíng)程序,以發(fā)現(xiàn)程序錯(cuò)誤過程。軟件測(cè)試原則是什么?答:軟件測(cè)試原則有:應(yīng)當(dāng)把測(cè)試貫穿在整個(gè)開發(fā)過程之中。事實(shí)上,從需求分析階段開始,每個(gè)階段結(jié)束之前都要進(jìn)行階段審查,目是盡早發(fā)現(xiàn)和糾正錯(cuò)誤。每個(gè)測(cè)試用例都應(yīng)當(dāng)涉及測(cè)試輸入數(shù)據(jù)和這組數(shù)據(jù)輸入作用下預(yù)期輸出成果。在實(shí)際操作中可以列出一張表格,涉及每個(gè)測(cè)試用例編號(hào)、類型、輸入數(shù)據(jù)、預(yù)期輸出成果、實(shí)際輸出成果、出錯(cuò)因素分析。要對(duì)每個(gè)測(cè)試成果進(jìn)行全面檢查,不要漏掉已經(jīng)浮現(xiàn)錯(cuò)誤跡象。程序員應(yīng)當(dāng)盡量避免檢查自己編寫代碼。測(cè)試工作需要嚴(yán)格工作作風(fēng),程序員在測(cè)試自己編寫代碼時(shí)往往會(huì)帶有某些傾向性,使得她們工作中經(jīng)常浮現(xiàn)某些疏漏。并且,程序員對(duì)設(shè)計(jì)規(guī)格闡明書理解錯(cuò)誤而引入錯(cuò)誤更是難于發(fā)現(xiàn)。在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)涉及有效、盼望輸入狀況,也要涉及無效和不盼望輸入狀況。既可以驗(yàn)證程序正常運(yùn)營(yíng)合理輸入,也可以驗(yàn)證對(duì)異常狀況解決不合理輸入數(shù)據(jù)以及臨界數(shù)據(jù)。在測(cè)試程序時(shí),人們經(jīng)常過多地考慮合法和盼望輸入條件,以檢查程序與否做了它應(yīng)當(dāng)做事情,而忽視了不合法和預(yù)想不到輸入條件。事實(shí)上,顧客在使用系統(tǒng)時(shí),輸入某些錯(cuò)誤指令和參數(shù)是經(jīng)常發(fā)生,如果軟件遇到這種狀況不能做出恰當(dāng)反映,給出相應(yīng)提示信息,就也許會(huì)誤導(dǎo)顧客,甚至導(dǎo)致嚴(yán)重?fù)p失。軟件中遺留錯(cuò)誤數(shù)量與已經(jīng)發(fā)現(xiàn)錯(cuò)誤數(shù)量成正比。依照這個(gè)規(guī)律,對(duì)測(cè)試中發(fā)現(xiàn)錯(cuò)誤成堆模塊更要仔細(xì)測(cè)試。例如,在某個(gè)知名操作系統(tǒng)中,44%錯(cuò)誤僅與4%模塊關(guān)于?;貧w測(cè)試關(guān)聯(lián)性要特別引起注意,修改一種錯(cuò)誤而引起更多錯(cuò)誤現(xiàn)象并不少見。測(cè)試程序時(shí)不但要檢查程序與否做了它應(yīng)當(dāng)做事情,還要檢查它與否做了不該做事情。例如,工資軟件中,軟件只完畢在編職工工資計(jì)算和輸出,不在編人員工資是不進(jìn)行計(jì)算和輸出。如果軟件將不在編人員工資信息也輸出顯然是不適當(dāng)。嚴(yán)格執(zhí)行測(cè)試籌劃。在測(cè)試之前應(yīng)當(dāng)有明確測(cè)試籌劃,內(nèi)容涉及:要測(cè)試軟件功能和內(nèi)容、測(cè)試用例和預(yù)期成果、測(cè)試進(jìn)度安排、需要工具和資源、測(cè)試控制方式和過程等。10)做好測(cè)試記錄,為記錄和維護(hù)提供基本數(shù)據(jù)。請(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)與否符合“需求規(guī)格闡明書”。

驗(yàn)收測(cè)試與系統(tǒng)測(cè)試相似,重要區(qū)別是測(cè)試人員不同,驗(yàn)收測(cè)試由顧客執(zhí)行。簡(jiǎn)述單元測(cè)試內(nèi)容。答:?jiǎn)卧獪y(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è)試:選取恰當(dāng)測(cè)試用例,對(duì)模塊中重要執(zhí)行途徑進(jìn)行測(cè)試。對(duì)基本執(zhí)行途徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量途徑錯(cuò)誤。4)錯(cuò)誤解決測(cè)試:檢查模塊錯(cuò)誤解決功能與否包具有錯(cuò)誤或缺陷。例如,與否回絕不合理輸入;出錯(cuò)描述與否難以理解、與否對(duì)錯(cuò)誤定位有誤、與否出錯(cuò)因素報(bào)告有誤、與否對(duì)錯(cuò)誤條件解決不對(duì)的;在對(duì)錯(cuò)誤解決之前錯(cuò)誤條件與否已經(jīng)引起系統(tǒng)干預(yù)等。5)邊界測(cè)試:要特別注意數(shù)據(jù)流、控制流中剛好等于、不不大于或不大于擬定比較值時(shí)出錯(cuò)也許性。對(duì)這些地方要仔細(xì)地選取測(cè)試用例,認(rèn)真加以測(cè)試。5)此外,如果對(duì)模塊運(yùn)營(yíng)時(shí)間有規(guī)定話,還要專門進(jìn)行核心途徑測(cè)試,以擬定最壞狀況下和平均意義下影響模塊運(yùn)營(yíng)時(shí)間因素。此類信息對(duì)進(jìn)行性能評(píng)價(jià)是十分有用。什么是白盒測(cè)試?它適應(yīng)哪些測(cè)試?答:白盒測(cè)試也叫構(gòu)造測(cè)試,測(cè)試者需要理解被測(cè)程序內(nèi)部構(gòu)造。白盒測(cè)試普通依照覆蓋準(zhǔn)則設(shè)計(jì)測(cè)試用例,有語句覆蓋、鑒定覆蓋、條件覆蓋、鑒定/條件覆蓋和條件組合覆蓋。白盒測(cè)試合用與單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試非漸增式測(cè)試與漸增式測(cè)試有什么區(qū)別?漸增式測(cè)試如何組裝模塊?答:1)漸增式可以較早地發(fā)現(xiàn)模塊界面之間錯(cuò)誤,非漸增式則要到最后將所有模塊連接起來時(shí)才干發(fā)現(xiàn)此類錯(cuò)誤。2)非漸增式需要較多人工3)漸增式有助于排錯(cuò)。如果模塊界面間有錯(cuò),如果用非漸增式,此類錯(cuò)誤到最后聯(lián)合測(cè)試時(shí)才干發(fā)現(xiàn),此時(shí)很難判斷錯(cuò)誤發(fā)生在哪一某些,但如果用漸增式,此類錯(cuò)誤就較容易定位,它普通與最新加上去模塊關(guān)于。4)漸增式比較徹底。5)漸增式需要較多機(jī)器時(shí)間。6)非漸增式方式,開始時(shí)容許幾種測(cè)試人員并行工作,對(duì)大型系統(tǒng)來說,是很故意義。采用黑盒技術(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)缺陷c、一種等價(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)是:考慮輸入條件間組合關(guān)系;考慮輸出條件對(duì)輸入條件信賴關(guān)系;測(cè)試用例發(fā)現(xiàn)錯(cuò)誤效率高;能查出功能闡明中某些不一致或漏掉白盒測(cè)試法有哪些覆蓋原則?試對(duì)它們檢錯(cuò)能力進(jìn)行比較。答:白盒測(cè)試覆蓋原則有:語句覆蓋->鑒定覆蓋->條件覆蓋->鑒定/條件覆

蓋->條件組合覆蓋->途徑覆蓋檢錯(cuò)能力由弱到強(qiáng)依照下面程序代碼,畫出程序流程圖,然后設(shè)計(jì)滿足條件/鑒定覆蓋、條件組合覆蓋測(cè)試用例。BEGINT:=0IF(X>=80ANDY>=80)THENT:=1ELSEIF(X>=90ANDY>=75)THENT:=2ENDIFIF(X>=75ANDY>=90)THENT:=3ENDIFENDIFRETURN測(cè)試用例:條件/鑒定覆蓋:1X=80Y=802X=90Y=753X=50Y=50條件組合覆蓋:1X=80Y=802X=80Y=753X=75Y=804X=75Y=755X=90Y=756X=90Y=707X=80Y=758X=80Y=709X=75Y=9010X=75Y=9011X=70Y=9012X=70Y=85軟件可維護(hù)性是軟件設(shè)計(jì)師最關(guān)注性能,談?wù)劄榱双@得軟件良好可維護(hù)性,在設(shè)計(jì)時(shí)應(yīng)當(dāng)注意哪些問題?答:為獲得軟件良好可維護(hù)性,在設(shè)計(jì)階段應(yīng)當(dāng)做某些變更實(shí)驗(yàn),檢查系統(tǒng)可維護(hù)性、靈活性和可移植性,設(shè)計(jì)時(shí)應(yīng)當(dāng)將此后也許變更內(nèi)容與其她某些分離開來,并且遵循高內(nèi)聚、低偶合原則。在軟件文檔中,你以為哪些文檔對(duì)于軟件維護(hù)最重要?需求分析文檔、設(shè)計(jì)文檔、程序文檔對(duì)軟件維護(hù)很重要軟件維護(hù)時(shí)源程序修改方略是什么?答:軟件維護(hù)時(shí)源程序修改方略是:由于軟件維護(hù)最后貫徹在修改源程序和文檔上。為了對(duì)的、有效地修改源程序,普通要先分析和理解源程序,然后才干修改源程序,最后重新測(cè)試和驗(yàn)證源程序。軟件項(xiàng)目籌劃涉及那些內(nèi)容?答:軟件項(xiàng)目籌劃內(nèi)容涉及:1.范疇。對(duì)該軟件項(xiàng)目綜合描述,定義起所要做工作以及性能限制,它涉及:(1)項(xiàng)目目的。(2)重要功能。(3)性能限制。(4)系統(tǒng)接口。(5)特殊規(guī)定。(6)開發(fā)概述。2.資源。(1)人員資源。(2)硬件資源。(3)軟件資源。(4)其她。3.進(jìn)度安排。進(jìn)度安排好壞往往會(huì)影響整個(gè)項(xiàng)目按期完畢,因而這一環(huán)節(jié)是十分重要。制定軟件進(jìn)度與其她工程沒有很大區(qū)別,其辦法重要有:(1)工程網(wǎng)絡(luò)圖。(2)Gantt圖。(3)任務(wù)資源表。(4)成本估算。(5)培訓(xùn)籌劃。15.什么是軟件配備管理?什么是基線?答:配備管理可以系統(tǒng)地解決變更,從而使得軟件系統(tǒng)可以隨時(shí)保持其完整性。配備管理又可成為變更控制,可以用來評(píng)估提出變更祈求,跟蹤變更,并保持系統(tǒng)在不同步間狀態(tài)。軟件配備管理是一套規(guī)范、高效軟件開發(fā)基本構(gòu)造。基線是:已經(jīng)通過正式復(fù)審和批準(zhǔn)某規(guī)約或產(chǎn)品,它因而可以作為進(jìn)一步開發(fā)基本,并且只能通過正式變化控制過程變化。應(yīng)用題請(qǐng)讀者參照可以找到編程規(guī)范,設(shè)計(jì)一種C語言編程規(guī)范。答:文獻(xiàn)構(gòu)造1.1版權(quán)和版本聲明版權(quán)和版本聲明位于頭文獻(xiàn)和定義文獻(xiàn)開頭(參見示例1-1),重要內(nèi)容有:(1)版權(quán)信息。(2)文獻(xiàn)名稱,標(biāo)記符,摘要。(3)當(dāng)前版本號(hào),作者/修改者,完畢日期。(4)版本歷史信息。/**Copyright(c),上海貝爾有限公司網(wǎng)絡(luò)應(yīng)用事業(yè)部*Allrightsreserved.**文獻(xiàn)名稱:filename.h*文獻(xiàn)標(biāo)記:見配備管理籌劃書*摘要:簡(jiǎn)要描述本文獻(xiàn)內(nèi)容**當(dāng)前版本:1.1*作者:輸入作者(或修改者)名字*完畢日期:7**取代版本:1.0*原作者:輸入原作者(或修改者)名字*完畢日期:5*/示例1-1版權(quán)和版本聲明1.2頭文獻(xiàn)構(gòu)造頭文獻(xiàn)由三某些內(nèi)容構(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<filename.h>格式來引用原則庫頭文獻(xiàn)(編譯器將從原則庫目錄開始搜索)?!疽?guī)則1-2-3】用#include“filename.h”格式來引用非原則庫頭文獻(xiàn)(編譯器將從顧客工作目錄開始搜索)?!窘ㄗh1-2-1】頭文獻(xiàn)中只存儲(chǔ)“聲明”而不存儲(chǔ)“定義”【建議1-2-2】不倡導(dǎo)使用全局變量,盡量不要在頭文獻(xiàn)中浮現(xiàn)象externintvalue這類聲明。#ifndefGRAPHICS_H//防止graphics.h被重復(fù)引用#defineGRAPHICS_H#include<math.h>//引用原則庫頭文獻(xiàn)?#include“myheader.h”//引用非原則庫頭文獻(xiàn)?voidFunction1(?);//全局函數(shù)聲明?classBox//類構(gòu)造聲明{?};#endif示例1-2C頭文獻(xiàn)構(gòu)造1.3定義文獻(xiàn)構(gòu)造定義文獻(xiàn)有三某些內(nèi)容:(1)定義文獻(xiàn)開頭處版權(quán)和版本聲明(參見示例1-1)。(2)對(duì)某些頭文獻(xiàn)引用。(3)程序?qū)崿F(xiàn)體(涉及數(shù)據(jù)和代碼)。假設(shè)定義文獻(xiàn)名稱為graphics.cpp,定義文獻(xiàn)構(gòu)造參見示例1-3。//版權(quán)和版本聲明見示例1-1,此處省略。#include“graphics.h”//引用頭文獻(xiàn)?//全局函數(shù)實(shí)現(xiàn)體voidFunction1(?){?}//類成員函數(shù)實(shí)現(xiàn)體voidBox::Draw(?){?}示例1-3C定義文獻(xiàn)構(gòu)造1.4目錄構(gòu)造如果一種軟件頭文獻(xiàn)數(shù)目比較多(如超過十個(gè)),普通應(yīng)將頭文獻(xiàn)和定義文獻(xiàn)分別保存于不同目錄,以便于維護(hù)。例如可將頭文獻(xiàn)保存于include目錄,將定義文獻(xiàn)保存于source目錄(可以是多級(jí)目錄)。如果某些頭文獻(xiàn)是私有,它不會(huì)被顧客程序直接引用,則沒有必要公開其“聲明”。為了加強(qiáng)信息隱藏,這些私有頭文獻(xiàn)可以和定義文獻(xiàn)存儲(chǔ)于同一種目錄。程序版式版式雖然不會(huì)影響程序功能,但會(huì)影響可讀性。程序版式追求清晰、美觀,是程序風(fēng)格重要構(gòu)成因素。程序版式2.1空行空行起著分隔程序段落作用??招械皿w(但是多也但是少)將使程序布局更加清晰??招胁粫?huì)揮霍內(nèi)存,雖然打印具有空行程序是會(huì)多消耗某些紙張,但是值得。因此不要舍不得用空行?!疽?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í)行語句不得緊跟其后。無論執(zhí)行語句有多少都要加{}。這樣可以防止書寫失誤?!窘ㄗh2-2-3如果變量引用處和其定義處相隔比較遠(yuǎn),變量初始化很容易被忘掉。如果引用了未被初始化變量,也許會(huì)導(dǎo)致程序錯(cuò)誤。本建議可以減少隱患。例如intwidth=10;//定義并初紿化widthintheight=10;//定義并初紿化heightintdepth=10;//定義并初紿化depth2.3代碼行內(nèi)空格【規(guī)則2-3-1】核心字之后要留空格。象const、virtual、inline、case等核心字之后至少要留一種空格,否則無法辨析核心字。象if、for、while等核心字之后應(yīng)留一種空格再跟左括號(hào)‘(’,以突出核心字。【規(guī)則2-3-2】函數(shù)名之后不要留空格,緊跟左括號(hào)‘(’,以與核心字區(qū)別。【規(guī)則2-3-3】‘(’向后緊跟,‘)’、‘,’、‘;’向前緊跟,緊跟處不留空格。【規(guī)則2-3-4】‘,’之后要留空格,如Function(x,y,z)。如果‘;’不是一行結(jié)束符號(hào),其后要留空格,如for(initialization;condition;update)?!疽?guī)則2-3-5】賦值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域操作符,如“=”、“+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符先后應(yīng)當(dāng)加空格?!疽?guī)則2-3-6】一元操作符如“!”、“~”、“++”、“--”、“&”(地址運(yùn)算符)等先后不加空格?!疽?guī)則2-3-7】象“[]”、“.”、“->”此類操作符先后不加空格?!窘ㄗh2-3-8】對(duì)于表達(dá)式比較長(zhǎng)for語句和if掉某些空格,如for(i=0;i<10;i++)和if((a<=b)&&(c<=d))2.4修飾符位置修飾符*和&應(yīng)當(dāng)接近數(shù)據(jù)類型還是該接近變量名,是個(gè)有爭(zhēng)議活題。若將修飾符*接近數(shù)據(jù)類型,例如:int*x;從語義上講此寫法比較直觀,即x是int類型指針。上述寫法弊端是容易引起誤解,例如:int*x,y;此處y容易被誤解為指針變量。雖然將x和y分行定義可以避免誤解,但并不是人人都樂意這樣做?!疽?guī)則2-4-1】應(yīng)當(dāng)將修飾符*和&例如:char*name;int*x,y;//此處y不會(huì)被誤解為指針2.5注釋C語言注釋符為“/*…*/”。雖然注釋有助于理解代碼,但注意不可過多地使用注釋?!疽?guī)則2-5-1】注釋是對(duì)代碼“提示注釋太多了會(huì)讓人眼花繚亂。注釋花樣要少?!疽?guī)則2-5例如i++;//i加1,多余注釋【規(guī)則2-5一致性。不再有用注釋要?jiǎng)h除?!疽?guī)則2-5有害?!疽?guī)則2-5【規(guī)則2-5可放在下方?!疽?guī)則2-5釋,便于閱讀。 命名規(guī)則3.1共性規(guī)則本節(jié)闡述共性規(guī)則是被大多數(shù)程序員采納,咱們應(yīng)當(dāng)在遵循這些共性規(guī)則前提下,再擴(kuò)充特定規(guī)則?!疽?guī)則3-1-1】標(biāo)記符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進(jìn)行“解碼”。標(biāo)記符最佳采用英文單詞或其組合,便于記憶和閱讀。切忌使用漢語拼音來命名。程序中英文單詞普通不會(huì)太復(fù)雜,用詞應(yīng)當(dāng)精確。例如不要把CurrentValue寫成NowValue。【規(guī)則3-1-2】標(biāo)記符長(zhǎng)度應(yīng)當(dāng)符合“min-length&&max-information”原則。幾十年前老ANSIC規(guī)定名字不準(zhǔn)超過6個(gè)字符,現(xiàn)今C不再有此限制。一般來說,長(zhǎng)名字能更好地表達(dá)含義,因此函數(shù)名、變量名、類名長(zhǎng)達(dá)十幾種字符局限性為怪。那么名字與否越長(zhǎng)約好?不見得!例如變量名maxval就比maxValueUntilOverflow好用。單字符名字也是有用,常用如i,j,k,m,n,x,y,z等,它們普通可用作函數(shù)內(nèi)局部變量。【規(guī)則3-1-3】命名規(guī)則盡量與所采用操作系統(tǒng)或開發(fā)工具風(fēng)格保持一致。例如Windows應(yīng)用程序標(biāo)記符普通采用“大小寫”混排方式,如AddChild。而Unix應(yīng)用程序標(biāo)記符普通采用“小寫加下劃線”方式,如add_child。別把這兩類風(fēng)格混在一起用?!疽?guī)則3-1-4】程序中不要浮現(xiàn)僅靠大小寫區(qū)別相似標(biāo)記符。例如:intx,X;//變量x與X容易混淆voidfoo(intx);//函數(shù)foo與FOO容易混淆voidFOO(floatx);【規(guī)則3-1-5】程序中不要浮現(xiàn)標(biāo)記符完全相似局部變量和全局變量,盡管兩者作用域不同而不會(huì)發(fā)生語法錯(cuò)誤,但會(huì)使人誤解。【規(guī)則3-1-6】變量名字應(yīng)當(dāng)使用“名詞”或者“形容詞+名詞”。例如:floatvalue;floatoldValue;floatnewValue;【規(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ì)的反義詞組命名具備互斥意義變量或相反動(dòng)作函數(shù)等。例如:intminValue;intmaxValue;intSetValue(…);intGetValue(…);【建議3-1-1】盡量避免名字中浮現(xiàn)數(shù)字編號(hào),如Value1,Value2等,除非邏輯上確需要編號(hào)。這是為了防止程序員偷懶,不肯為命名動(dòng)腦筋而導(dǎo)致產(chǎn)生無意義名字(由于用數(shù)字編號(hào)最省事)。函數(shù)設(shè)計(jì)函數(shù)是C++/C程序基本功能單元,函數(shù)接口兩個(gè)要素是參數(shù)和返回值。。C語言中,函數(shù)參數(shù)和返回值傳遞方式有兩種:值傳遞(passbyvalue)和指針傳遞(passbypointer)表達(dá)式和基本語句4.1參數(shù)規(guī)則【規(guī)則4-1-1如果函數(shù)沒有參數(shù),則用void填充。例如:voidSetValue(intwidth,intheight);//良好風(fēng)格voidSetValue(int,int);//不良風(fēng)格floatGetValue(void);//良好風(fēng)格floatGetValue();//不良風(fēng)格【規(guī)則4-1-2例如編寫字符串拷貝函數(shù)StringCopy,它有兩個(gè)參數(shù)。如果把參數(shù)名字起為str1和str2,例如voidStringCopy(char*str1,char*str2);那么咱們很難弄清晰究竟是把str1拷貝到str2中,還是剛好倒過來??梢园褏?shù)名字起得更故意義,如叫strSource和strDestination。這樣從名字上就可以看出應(yīng)當(dāng)把strSource拷貝到strDestination。尚有一種問題,這兩個(gè)參數(shù)那一種該在前那一種該在后?參數(shù)順序要遵循程序員習(xí)慣。普通地,應(yīng)將目參數(shù)放在前面,源參數(shù)放在背面。如果將函數(shù)聲明為:voidStringCopy(char*strSource,char*strDestination);別人在使用時(shí)也許會(huì)不假思考地寫成如下形式:charstr[20];StringCopy(str,“HelloWorld”);//參數(shù)順序顛倒【規(guī)則4-1-3】如果參數(shù)是指針,且僅作輸入用,則應(yīng)在類型前加const指針在函數(shù)體內(nèi)被意外修改。例如voidStringCopy(char*strDestination,constchar*strSource);【規(guī)則4-1-4】如果輸入?yún)?shù)以值傳遞方式傳遞對(duì)象,則宜改用“const&”來傳遞,這樣可以省去暫時(shí)對(duì)象構(gòu)造和析構(gòu)過程,從而提高效率。【建議4-1-5】避免函數(shù)有太多參數(shù),參數(shù)個(gè)數(shù)盡量控制在多,在使用時(shí)容易將參數(shù)類型或順序搞錯(cuò)?!窘ㄗh4-1-C原則庫函數(shù)printf是采用不擬定參數(shù)典型代表,其原型為:intprintf(constchat*format[,argument]?);這種風(fēng)格函數(shù)在編譯時(shí)喪失了嚴(yán)格類型安全檢查。4.2返回值規(guī)則【規(guī)則4-2-1C語言中,凡不加類型闡明函數(shù),一律自動(dòng)按整型解決。這樣做不會(huì)有什么好處,卻容易被誤解為void類型。C++語言有很嚴(yán)格類型安全檢查,不容許上述狀況發(fā)生。由于C++程序可以調(diào)用C函數(shù),為了避免混亂,規(guī)定任何C++/C函數(shù)都必要有類型。如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型?!疽?guī)則4-2-2違背這條規(guī)則典型代表是C原則庫函數(shù)getchar。例如:charc;c=getchar();if(c==EOF)?按照getchar名字意思,將變量c聲明為char類型是很自然事情。但不幸是getchar確不是char類型,而是int類型,其原型如下:intgetchar(void);由于c是char類型,取值范疇是[-128,127],如果宏EOF值在char取值范疇之外,那么if語句將總是失敗,這種“危險(xiǎn)”人們普通哪里料得到!導(dǎo)致本例錯(cuò)誤責(zé)任并不在顧客,是函數(shù)getchar誤導(dǎo)了使用者?!疽?guī)則4-2-3錯(cuò)誤標(biāo)志用return語句返回?;仡櫳侠珻原則庫函數(shù)設(shè)計(jì)者為什么要將getchar聲明為令人迷糊int類型呢?她會(huì)那么傻嗎?在正常狀況下,getchar確返回單個(gè)字符。但如果getchar遇到文獻(xiàn)結(jié)束標(biāo)志或發(fā)生讀錯(cuò)誤,它必要返回一種標(biāo)志EOF。為了區(qū)別于正常字符,只得將EOF定義為負(fù)數(shù)(普通為負(fù)1)。因而函數(shù)getchar就成了int類型。咱們?cè)趯?shí)際工作中,經(jīng)常會(huì)遇到上述令人為難問題。為了避免浮現(xiàn)誤解,咱們應(yīng)該將正常值和錯(cuò)誤標(biāo)志分開。即:正常值用輸出參數(shù)獲得,而錯(cuò)誤標(biāo)志用return語句返回。函數(shù)getchar可以改寫成BOOLGetChar(char*c);雖然gechar比GetChar靈活,例如putchar(getchar());但是如果getchar用錯(cuò)了,它靈活性又有什么用呢?【建議4-2-可以附加返回值。例如字符串拷貝函數(shù)strcpy原型:char*strcpy(char*strDest,constchar*strSrc);strcpy函數(shù)將strSrc拷貝至輸出參數(shù)strDest中,同步函數(shù)返回值又是strDest。這樣做并非多此一舉,可以獲得如下靈活性:charstr[20];intlength=strlen(strcpy(str,“HelloWorld”));4.3函數(shù)內(nèi)部實(shí)現(xiàn)規(guī)則不同功能函數(shù)其內(nèi)部實(shí)現(xiàn)各不相似,看起來似乎無法就“內(nèi)部實(shí)現(xiàn)”達(dá)到一致觀點(diǎn)。但依照經(jīng)驗(yàn),咱們可以在函數(shù)體“入口處”和“出口處”從嚴(yán)把關(guān),從而提高函數(shù)質(zhì)量?!疽?guī)則4-3-1】在函數(shù)體“入口處”諸多程序錯(cuò)誤是由非法參數(shù)引起,咱們應(yīng)當(dāng)充分理解并對(duì)的使用“斷言”(assert)來防止此類錯(cuò)誤?!疽?guī)則4-3-2】在函數(shù)體“出口處”,對(duì)return如果函數(shù)有返回值,那么函數(shù)“出口處”是return語句。咱們不要輕視r(shí)eturn語句。如果return語句寫得不好,函數(shù)要么出錯(cuò),要么效率低下。注意事項(xiàng)如下:(1)return語句不可返回指向“棧內(nèi)存”“指針”,由于該內(nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷毀。例如char*Func(void){charstr[]=“helloworld”;//str內(nèi)存位于棧上…returnstr;//將導(dǎo)致錯(cuò)誤}(2)要弄清晰返回究竟是“值”、還是“指針”。4.4其他建議【建議4-4-1【建議4-4-2】函數(shù)體規(guī)模要小,盡量控制在50【建議4-4-3】盡量避免函數(shù)帶有“記憶”帶有“記憶”功能函數(shù),其行為也許是不可預(yù)測(cè),由于它行為也許取決于某種“記憶狀態(tài)”。這樣函數(shù)既不易理解又不利于測(cè)試和維護(hù)。在C語言中,函數(shù)static局部變量是函數(shù)“記憶”存儲(chǔ)器。建議盡量少用static局部變量,除非必須?!窘ㄗh4-4-4變量有效性,例如全局變量、文獻(xiàn)句柄等?!窘ㄗh4-4-5狀況。4.5使用斷言程序普通分為Debug版本和Release版本,Debug版本用于內(nèi)部調(diào)試,Release版本發(fā)行給顧客使用。斷言assert是僅在Debug版本起作用宏,它用于檢查“不應(yīng)當(dāng)”發(fā)生狀況。示例4-5是一種內(nèi)存復(fù)制函數(shù)。在運(yùn)營(yíng)過程中,如果assert參數(shù)為假,那么程序就會(huì)中止(普通地還會(huì)浮現(xiàn)提示對(duì)話,闡明在什么地方引起了assert)。void*memcpy(void*pvTo,constvoid*pvFrom,size_tsize){assert((pvTo!=NULL)&&(pvFrom!=NULL));//使用斷言byte*pbTo=(byte*)pvTo;//防止變化pvTo地址byte*pbFrom=(byte*)pvFrom;//防止變化pvFrom地址while(size-->0)*pbTo++=*pbFrom++;returnpvTo;}示例4-5復(fù)制不重疊內(nèi)存塊assert不是一種倉促拼湊起來宏。為了不在程序Debug版本和Release版本引起差別,assert不應(yīng)當(dāng)產(chǎn)生任何副作用。因此assert不是函數(shù),而是宏。程序員可以把a(bǔ)ssert當(dāng)作一種在任何系統(tǒng)狀態(tài)下都可以安全使用無害測(cè)試手段。如果程序在assert處終結(jié)了,并不是說具有該assert函數(shù)有錯(cuò)誤,而是調(diào)用者出了差錯(cuò),assert可以幫助咱們找到發(fā)生錯(cuò)誤因素。很少有比跟蹤到程序斷言,卻不懂得該斷言作用更讓人沮喪事了。你化了很多時(shí)間,不是為了排除錯(cuò)誤,而只是為了弄清晰這個(gè)錯(cuò)誤究竟是什么。有時(shí)候,程序員偶爾還會(huì)設(shè)計(jì)出有錯(cuò)誤斷言。因此如果搞不清晰斷言檢查是什么,就很難判斷錯(cuò)誤是出當(dāng)前程序中,還是出當(dāng)前斷言中。幸運(yùn)是這個(gè)問題較好解決,只要加上清晰注釋即可。這本是顯而易見事情,可是很少有程序員這樣做。這好比一種人在森林里,看到樹上釘著一塊“危險(xiǎn)”大牌子。但危險(xiǎn)究竟是什么?樹要倒?有廢井?有野獸?除非告訴人們“危險(xiǎn)”是什么,否則這個(gè)警告牌難以起到積極有效作用。難以理解斷言經(jīng)常被程序員忽視,甚至被刪除。【規(guī)則4-5-1之間區(qū)別,后者是必然存在并且是一定要作出解決。【規(guī)則4-5-2【建議4-5-3】在編寫函數(shù)時(shí),要進(jìn)行重復(fù)考查,并且自問:“一旦擬定了假定,就要使用斷言對(duì)假定進(jìn)行檢查?!窘ㄗh4-5-能會(huì)隱瞞錯(cuò)誤。當(dāng)進(jìn)行防錯(cuò)設(shè)計(jì)時(shí),如果“不也許發(fā)生”事情確發(fā)生了,則要使用斷言進(jìn)行報(bào)警。其他編程經(jīng)驗(yàn)5.1提高程序效率程序時(shí)間效率是指運(yùn)營(yíng)速度,空間效率是指程序占用內(nèi)存或者外存狀況。全局效率是指站在整個(gè)系統(tǒng)角度上考慮效率,局部效率是指站在模塊或函數(shù)角度上考慮效率?!疽?guī)則5-可讀性等質(zhì)量因素前提下,設(shè)法提高程序效率。【規(guī)則5-【規(guī)則5-1-3】在優(yōu)化程序效率時(shí),應(yīng)當(dāng)先找出限制效率“緊要之處優(yōu)化?!疽?guī)則5-【規(guī)則5-作出恰當(dāng)折衷。例如多耗費(fèi)某些內(nèi)存來提高性能?!疽?guī)則5-5.2某些有益建議【建議5-咱們經(jīng)常會(huì)把“==”誤寫成“=”,象“||”、“&&”、“<=”、“>=”此類符號(hào)也很容易發(fā)生“丟1”失誤。然而編譯器卻不一定能自動(dòng)指出此類錯(cuò)誤?!窘ㄗh5-未被初始化變量當(dāng)成右值使用。【建議5-【建議5-們懂得發(fā)生了什么事),避免讓編譯器輕悄悄地進(jìn)行隱式數(shù)據(jù)類型轉(zhuǎn)換?!窘ㄗh5-【建議5-【建議5-2-7【建議5-【建議5-【建議5-代碼,應(yīng)當(dāng)重新編寫。【建議5-2-11】盡量使用原則庫函數(shù),不要“【建議5-【建議5-【建議5-2-14】如果也許話,使用PC-Lint2.有學(xué)生總是問教師“我應(yīng)當(dāng)掌握什么程序設(shè)計(jì)語言更好?”你以為該如何回答這個(gè)問題?答:一方面必要掌握C語言,面向?qū)ο蟪绦蛟O(shè)計(jì)語言,各有各優(yōu)勢(shì),看你想往哪方面用了,如果是服務(wù)器端應(yīng)用最佳是java,跨平臺(tái)性好;如果是,普通桌面應(yīng)用,C#是較好選??;至于易上手限度,VB,Delphi等是上手比較快;至于數(shù)據(jù)庫應(yīng)用本人以為PB是最佳選取,VB,Delphi也是比較好選??;當(dāng)特別強(qiáng)調(diào)效率時(shí)候VC是不二選取,其中VC最為復(fù)雜,也最為靈活,“偷懶程序員用VB,聰穎程序員用Delphi,真正程序員用VC”,如果想要設(shè)計(jì)某些系統(tǒng)級(jí)核心程序,最佳用VC,C語言也可,但是不如VC強(qiáng)大。無論什么語言,通一門即可,它們只是工具,設(shè)計(jì)模式和算法才是靈魂。3.編寫C語言程序,規(guī)

溫馨提示

  • 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)論