版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
97/97軟件工程作業(yè)1(第1~4章)一、選擇題:開(kāi)發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做(C)。A.軟件工程 B.軟件周期 C.軟件危機(jī) D.軟件產(chǎn)生瀑布模型本質(zhì)上是一種(A)模型。A.線性順序B.順序迭代C.線性迭代D.早期產(chǎn)品瀑布模型存在的問(wèn)題是(B)。A.用戶容易參與開(kāi)發(fā) B.缺乏靈活性C.用戶與開(kāi)發(fā)者易溝通D.適用可變需求螺旋模型是一種將瀑布模型和(A)結(jié)合起來(lái)的軟件開(kāi)發(fā)模型。A.增量模型 B.專(zhuān)家系統(tǒng) C.噴泉模型 D.變換模型原型化方法是用戶和設(shè)計(jì)者之間執(zhí)行的一種交互構(gòu)成,適用于(A)系統(tǒng)。A.需求不確定性高的 B.需求確定的 C.治理信息 D.實(shí)時(shí)下列有關(guān)軟件工程的標(biāo)準(zhǔn),屬于國(guó)際標(biāo)準(zhǔn)的是(D)A.GB B.DIN C.ISO D.IEEE結(jié)構(gòu)化方法是一種基于(D)的方法。A.數(shù)據(jù)結(jié)構(gòu)B.程序結(jié)構(gòu) C.算法D.數(shù)據(jù)流軟件可行性研究實(shí)質(zhì)上是要進(jìn)行一次(A)需求分析、設(shè)計(jì)過(guò)程。A、簡(jiǎn)化、壓縮的 B、詳細(xì)的 C、完全的 D、深入的可行性研究的目的是(D)A、分析開(kāi)發(fā)系統(tǒng)的必要性 B、確定系統(tǒng)建設(shè)的方案 C、分析系統(tǒng)風(fēng)險(xiǎn) D、確定是否值得開(kāi)發(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)開(kāi)發(fā) B、測(cè)試 C、試運(yùn)行 D、集成測(cè)試可行性研究需要的時(shí)刻長(zhǎng)短取決于系統(tǒng)的規(guī)模,一般來(lái)講,可行性研究的成本只是預(yù)期總成本的(C)。A、1% B、20% C、8% D、50%我國(guó)正式頒布實(shí)施的(B)對(duì)計(jì)算機(jī)病毒的定義具有法律性、權(quán)威性。A.《計(jì)算機(jī)軟件愛(ài)護(hù)條例》B.《中華人民共和國(guó)計(jì)算機(jī)信息系統(tǒng)安全愛(ài)護(hù)條例》C.《中華人民共和國(guó)著作權(quán)法》D.《計(jì)算機(jī)病毒防治治理方法》效率是一個(gè)性能要求,因此應(yīng)當(dāng)在以下哪個(gè)時(shí)期規(guī)定?BA、可行性分析B、需求分析C、概要設(shè)計(jì)D、詳細(xì)設(shè)計(jì)需求規(guī)格講明書(shū)的作用不包括(D)A、軟件驗(yàn)收的依據(jù)B、用戶與開(kāi)發(fā)人員對(duì)軟件要做什么的共同理解C、軟件可行性研究的依據(jù) D、軟件設(shè)計(jì)的依據(jù)數(shù)據(jù)字典是用來(lái)定義(D)中的各個(gè)成份的具體含義的。A、程序流程圖B、功能結(jié)構(gòu)圖 C、系統(tǒng)結(jié)構(gòu)圖D、數(shù)據(jù)流程圖數(shù)據(jù)流程圖是(A)方法中用于表示系統(tǒng)邏輯模型的一種圖形工具。A、SA B、SD C、SP D、SCDFD中的每個(gè)加工至少有(A)。\l"31"/course_ware/software/test/-31A、一個(gè)輸入流或一個(gè)輸出流 B、一個(gè)輸入流和一個(gè)輸出流C、一個(gè)輸入流 D、一個(gè)輸出流需求分析時(shí)期的關(guān)鍵任務(wù)是確定(D)\l"301"/course_ware/software/test/-301A、軟件開(kāi)發(fā)方法 B、軟件開(kāi)發(fā)工具C、軟件開(kāi)發(fā)費(fèi)D、軟件系統(tǒng)的功能在SD方法中全面指導(dǎo)模塊劃分的最重要的原則是\l"411"/course_ware/software/test/-411(D)。A、程序模塊化B、模塊高內(nèi)聚C、模塊低耦合D、模塊獨(dú)立性在模塊的3種差不多屬性中,反映模塊內(nèi)部特性的是(C)。A、接口 B、功能 C、邏輯 D、狀態(tài)模塊的耦合性能夠按照耦合程度的高低進(jìn)行排序,以下哪一項(xiàng)符合從低到高的正確次序(D)。A、數(shù)據(jù)結(jié)構(gòu)耦合,公共耦合,操縱耦合,內(nèi)容耦合B、數(shù)據(jù)耦合,操縱耦合,數(shù)據(jù)結(jié)構(gòu)耦合,公共耦合C、無(wú)直接耦合,數(shù)據(jù)結(jié)構(gòu)耦合,內(nèi)容耦合,操縱耦合D、無(wú)直接耦合,數(shù)據(jù)耦合,操縱耦合,內(nèi)容耦合PDL是描述處理過(guò)程(C)A、做什么B、什么緣故做C、如何做D、對(duì)誰(shuí)做(D)工具在軟件詳細(xì)設(shè)計(jì)過(guò)程中不采納。A、判定表 B、IPO圖 C、PDL D、DFD圖為高質(zhì)量地開(kāi)發(fā)軟件項(xiàng)目,在軟件結(jié)構(gòu)設(shè)計(jì)時(shí),必須遵循(A)原則。A.信息隱蔽B、質(zhì)量操縱 C、程序優(yōu)化D、數(shù)據(jù)共享當(dāng)一個(gè)模塊直接使用另一個(gè)模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為(D)A、數(shù)據(jù)耦合B、公共耦合C、標(biāo)記耦合D、內(nèi)容耦合詳細(xì)設(shè)計(jì)與概要設(shè)計(jì)銜接的圖形工具是(B)。\l"32"/course_ware/software/test/-32 A、DFD圖B、SC圖C、PAD圖D、程序流程圖下列幾種類(lèi)型中,耦合性最弱的是(D)。\l"32"/course_ware/software/test/-32 A、內(nèi)容型B、操縱型C、公共型D、數(shù)據(jù)型軟件結(jié)構(gòu)使用的圖形工具,一般采納(C)圖。\l"32"/course_ware/software/test/-32 A、DFD B、PAD C、SC D、ER在七種偶合中,最低偶合是(D)。A、內(nèi)容偶合B、公共偶合C、數(shù)據(jù)偶合D、非直接偶合二、簡(jiǎn)答題什么是軟件工程?軟件工程的目標(biāo)是什么?答:軟件工程是①將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù)過(guò)程,立即工程化應(yīng)用于軟件開(kāi)發(fā)和治理之中,②對(duì)①中所選方法的研究。目標(biāo):合理預(yù)算開(kāi)發(fā)成本,付出較低的開(kāi)發(fā)費(fèi)用。實(shí)現(xiàn)預(yù)期的軟件功能,達(dá)到較好的軟件性能,滿足用戶的需求。3提高軟件的可維護(hù)性,降低維護(hù)費(fèi)用。4提高軟件開(kāi)發(fā)生產(chǎn)率,及時(shí)交付使用指出瀑布模型中下列任務(wù)的順序:驗(yàn)收測(cè)試,項(xiàng)目打算,單元測(cè)試,需求評(píng)審,成本可能,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),系統(tǒng)測(cè)試,設(shè)計(jì)評(píng)審,編碼,需求規(guī)格講明書(shū)。答:項(xiàng)目打算,成本可能,需求規(guī)格講明書(shū),需求評(píng)審,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),設(shè)計(jì)評(píng)審,編碼,單元測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試可行性研究報(bào)告的要緊內(nèi)容是什么?答:可行性研究要緊包括以下幾個(gè)部分:(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)度打算(9)其它尚需要講明的必要的方面(10)結(jié)論什么是需求分析?需求分析時(shí)期的差不多任務(wù)是什么?答:所謂"需求分析",是指對(duì)要解決的問(wèn)題進(jìn)行詳細(xì)的分析,弄清晰問(wèn)題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么。能夠講,“需求分析”確實(shí)是確定要計(jì)算機(jī)“做什么”。任務(wù):確定軟件項(xiàng)目的目標(biāo)和范圍。調(diào)查使用者的要求,分析軟件必須做什么,編寫(xiě)需求規(guī)格講明書(shū)等它相關(guān)文檔,并進(jìn)行必要的需求審查。除此之外,還包括需求變更操縱,需求風(fēng)險(xiǎn)操縱,需求版本操縱等對(duì)需求的治理工作什么是結(jié)構(gòu)化分析方法?該方法使用什么描述工具?答:結(jié)構(gòu)化的分析方法是面向數(shù)據(jù)流的方法,因此,此方法研究的核心是數(shù)據(jù)的組成和數(shù)據(jù)流向和對(duì)數(shù)據(jù)的加工處理。結(jié)構(gòu)化分析方法用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直至找到滿足功能要求的所有可實(shí)現(xiàn)的軟件元素為止描述工具:1系統(tǒng)流程圖2數(shù)據(jù)流程圖3數(shù)據(jù)字典4IPO圖5層次方框圖6實(shí)體—關(guān)系圖7狀態(tài)—變遷圖結(jié)構(gòu)化分析方法通過(guò)哪些步驟來(lái)實(shí)現(xiàn)?答:1)
確定系統(tǒng)的功能要求2)
確定系統(tǒng)的數(shù)據(jù)要求3)
確定系統(tǒng)的操作要求和界面要求4)
確定系統(tǒng)的性能要求5)
確定系統(tǒng)的運(yùn)行要求6)
獲得當(dāng)前系統(tǒng)的物理模型7)
抽象出當(dāng)前系統(tǒng)的邏輯模型8)
建立目標(biāo)系統(tǒng)的邏輯模型。9)
修正開(kāi)發(fā)打算10)假如需要?jiǎng)t開(kāi)發(fā)系統(tǒng)原型什么是數(shù)據(jù)流圖?其作用是什么?其中的差不多符號(hào)各表示什么含義?答:數(shù)據(jù)流圖:簡(jiǎn)稱DFD,確實(shí)是采納圖形方式來(lái)表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過(guò)程,是結(jié)構(gòu)化系統(tǒng)分析方法的要緊表達(dá)工具及用于表示軟件模型的一種圖示方法。數(shù)據(jù)流圖的差不多符號(hào)的意思:1.矩形表示數(shù)據(jù)的外部實(shí)體;2.圓角的矩形表示變換數(shù)據(jù)的處理邏輯;3.少右面的邊矩形表示數(shù)據(jù)的存儲(chǔ);4.箭頭表示數(shù)據(jù)流。什么是數(shù)據(jù)字典?其作用是什么?它有哪些條目?答:數(shù)據(jù)字典,要緊用來(lái)描述數(shù)據(jù)流程圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理過(guò)程和和數(shù)據(jù)源點(diǎn)/終點(diǎn)。作用:數(shù)據(jù)流程圖描述了系統(tǒng)的邏輯結(jié)構(gòu),其中的四個(gè)差不多圖形元素的含義無(wú)法在數(shù)據(jù)流程圖中詳細(xì)講明,因此數(shù)據(jù)流程圖需要與其他工具配合使用,數(shù)據(jù)字典確實(shí)是如此的工具之一。包括的條目:數(shù)據(jù)流詞條數(shù)據(jù)元素詞條數(shù)據(jù)存儲(chǔ)詞條數(shù)據(jù)加工處理詞條數(shù)據(jù)源點(diǎn)及終點(diǎn)詞條什么是概要設(shè)計(jì)?有哪些差不多任務(wù)?答:概要設(shè)計(jì):依照用戶的需求先確定軟件系統(tǒng)的總體結(jié)構(gòu)和總的設(shè)計(jì)原則差不多的任務(wù):設(shè)想供選擇的方案。推舉最佳方案。功能分解,確定軟件結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)。制定測(cè)試打算。數(shù)據(jù)設(shè)計(jì)。書(shū)寫(xiě)文檔。包括總體設(shè)計(jì)規(guī)格講明書(shū)。用戶手冊(cè)。測(cè)試打算。設(shè)計(jì)審查和復(fù)審。詳細(xì)設(shè)計(jì)的差不多任務(wù)是什么?有那幾種描述方法?答:詳細(xì)設(shè)計(jì)時(shí)期的任務(wù)是要為編寫(xiě)程序代碼設(shè)計(jì)“圖紙”,由程序員按“圖紙”用某種高級(jí)程序設(shè)計(jì)語(yǔ)言編寫(xiě)程序代碼。要緊方法有設(shè)計(jì)程序流程圖,表格設(shè)計(jì)符號(hào)以及過(guò)程設(shè)計(jì)語(yǔ)言。什么是變換流?什么是事物流?答:變換型數(shù)據(jù)流能夠劃分為明顯的三部分:邏輯輸入,中心變換,邏輯輸出事務(wù)流的特點(diǎn)是數(shù)據(jù)沿某個(gè)輸入路徑流淌,該路徑將外部信息轉(zhuǎn)換成事務(wù),其中發(fā)射出多條事務(wù)處理路徑的中心處理被稱為中心事務(wù)模塊的內(nèi)聚有哪幾種?模塊間的耦合有哪幾種?答:內(nèi)聚分為七種類(lèi)型:巧合內(nèi)聚——一個(gè)模塊執(zhí)行多個(gè)完全互不相關(guān)的動(dòng)作,那么那個(gè)模塊就有巧合內(nèi)聚邏輯內(nèi)聚——當(dāng)一個(gè)模塊執(zhí)行一系列相關(guān)的動(dòng)作時(shí),稱其有邏輯內(nèi)聚。時(shí)刻性內(nèi)聚——當(dāng)一個(gè)模塊內(nèi)的多個(gè)任務(wù)是與時(shí)刻有關(guān)時(shí),那個(gè)模塊具有時(shí)刻性內(nèi)聚。過(guò)程內(nèi)聚——模塊執(zhí)行的若干動(dòng)作之間有順序關(guān)系。通信內(nèi)聚——模塊執(zhí)行的若干動(dòng)作之間有順序關(guān)系,同時(shí)所有動(dòng)作是在相同的數(shù)據(jù)上執(zhí)行。信息內(nèi)聚——一個(gè)模塊中執(zhí)行一系列動(dòng)作,每個(gè)動(dòng)作都有自己的入口點(diǎn)和處理代碼,所有的動(dòng)作都作用在相同的數(shù)據(jù)結(jié)構(gòu)上,如此的模塊叫做信息內(nèi)聚。功能性內(nèi)聚——一個(gè)模塊中各個(gè)部分差不多上完成某一個(gè)體功能必不可少的組成部分耦合分為七類(lèi):內(nèi)容耦合——假如一個(gè)模塊直接參考另一個(gè)模塊的內(nèi)容,則這兩個(gè)模塊是內(nèi)容耦合。公共耦合——假如多個(gè)模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則稱它們是公共耦合。外部耦合——假如兩個(gè)模塊都訪問(wèn)同一個(gè)全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且,不是通過(guò)參數(shù)表傳遞該全局變量的信息,則這兩個(gè)模塊屬于外部耦合。操縱耦合——假如模塊A向模塊B傳遞一個(gè)操縱信息,則稱這兩個(gè)模塊是操縱耦合的數(shù)據(jù)結(jié)構(gòu)耦合——當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí)傳遞了整個(gè)數(shù)據(jù)結(jié)構(gòu),這兩個(gè)模塊之間具有數(shù)據(jù)結(jié)構(gòu)耦合。數(shù)據(jù)耦合——假如兩個(gè)模塊傳遞的是數(shù)據(jù)項(xiàng),則這兩個(gè)模塊是數(shù)據(jù)耦合。非直接耦合——假如兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全通過(guò)主模塊的操縱和調(diào)用來(lái)實(shí)現(xiàn)的,這確實(shí)是非直接耦合。三、應(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)碼組成。區(qū)號(hào)是從100到300中任意的數(shù)字串。市話號(hào)碼是以局號(hào)和分局號(hào)組成。局號(hào)能夠是455,466,888,552中任意一個(gè)號(hào)碼。分局號(hào)是任意長(zhǎng)度為4的數(shù)字串。寫(xiě)出在數(shù)據(jù)字典中,電話號(hào)碼的數(shù)據(jù)條目的定義(即組成)。名稱簡(jiǎn)稱類(lèi)型長(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ī)票的需求描述,試畫(huà)出分層的數(shù)據(jù)流程圖。顧客將訂票單交給預(yù)訂系統(tǒng):(1)假如是不合法訂票單,則輸出無(wú)效訂票信息;(2)對(duì)合法訂票單的預(yù)付款登錄到一個(gè)記賬文件中;(3)系統(tǒng)有航班目錄文件,依照填寫(xiě)的旅行時(shí)刻和目的地為顧客安排航班;(4)在獲得正確航班信息和確認(rèn)已交了部分預(yù)付款時(shí)發(fā)出取票單,并記錄到取票單文件中。顧客在指定日期內(nèi)用取票單換取機(jī)票:(1)系統(tǒng)依照取票單文件對(duì)取票單進(jìn)行有效性檢查,無(wú)效的輸出無(wú)效取票信息;(2)持有有效取票單的顧客在補(bǔ)交了剩余款后將獲得機(jī)票;(3)記賬文件將被更新,機(jī)票以及顧客信息將被登錄到機(jī)票文件。訂單中有訂票日期、旅行日期、時(shí)刻要求(上午、下午、晚上)、動(dòng)身地、目的地、顧客姓名、身份證號(hào)、聯(lián)系電話。0層流程圖預(yù)定流程圖取機(jī)票流程圖3.一個(gè)簡(jiǎn)化的圖書(shū)館信息治理系統(tǒng)有以下功能:(1)借書(shū):輸入讀者借書(shū)證,系統(tǒng)檢查借書(shū)證是否有效;查閱借書(shū)文件,檢查該讀者所借圖書(shū)是否超過(guò)10本,若已達(dá)10本,顯示信息“差不多超出借書(shū)數(shù)量”,拒借;未達(dá)10本,辦理借書(shū)(檢查庫(kù)存、修改庫(kù)存信息并將讀者借書(shū)信息登入借書(shū)記錄)(2)還書(shū):輸入書(shū)號(hào)和讀者號(hào),從借書(shū)記錄中讀出與讀者有關(guān)的記錄,查閱所借日期,假如超過(guò)3個(gè)月,作罰款處理。否則,修改庫(kù)存信息與借書(shū)記錄。(3)查詢:可通過(guò)借書(shū)記錄、庫(kù)存信息查詢讀者情況、圖書(shū)借閱情況及庫(kù)存情況,打印各種統(tǒng)計(jì)表。請(qǐng)就以上系統(tǒng)功能畫(huà)出分層的DFD圖,并建立重要條目的數(shù)據(jù)字典。0層數(shù)據(jù)流程圖還書(shū)流程圖借書(shū)流程圖查詢流程圖數(shù)據(jù)字典:元素名稱名稱類(lèi)型講明IPO1還書(shū)處理處理依照書(shū)號(hào)做還書(shū)處理,違規(guī)做處罰IPO2有效性檢查處理檢查讀者號(hào),圖書(shū)號(hào)的有效性IPO3借書(shū)處理處理按讀者號(hào),圖書(shū)號(hào)進(jìn)行借書(shū)處理IPO4查詢處理治理員對(duì)一些差不多信息進(jìn)行查詢IPO5打印報(bào)表處理打印查詢到的信息IPO6處罰治理處理依照規(guī)則對(duì)延期給予相應(yīng)的處罰IPO7數(shù)量檢查處理對(duì)讀者借出的數(shù)量是否符合規(guī)定進(jìn)行檢查DS001讀者信息數(shù)據(jù)存儲(chǔ)讀者信息錄入,修改,刪除,保存DS002庫(kù)存信息數(shù)據(jù)存儲(chǔ)圖書(shū)的差不多的情況以及所有圖書(shū)的整體情況DS003錯(cuò)還信息數(shù)據(jù)存儲(chǔ)存儲(chǔ)借還書(shū)信息,系統(tǒng)自動(dòng)處理,不能人工錄入DS004處罰信息數(shù)據(jù)存儲(chǔ)存儲(chǔ)延期的處罰信息軟件工程作業(yè)2(第5~7章)一、選擇題從本質(zhì)上講,面向?qū)ο笫恰跋取贝_定(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è)類(lèi)的一個(gè)具體對(duì)象稱為該類(lèi)的(A)。A.實(shí)例 B.虛擬 C.繼承 D.多態(tài)UML是(A)。一種可視化的建模語(yǔ)言是一種可視化的程序設(shè)計(jì)語(yǔ)言是一種過(guò)程是一種方法封裝的的作用是(A)。A.復(fù)用 B.對(duì)象 C.實(shí)例 D.方法8.面向?qū)ο蠓治龅暮诵脑谟诮ⅲ˙)模型。A.建立正確的模型B.識(shí)不問(wèn)題域?qū)ο驝.識(shí)不對(duì)象之間的關(guān)系D.上面所有9.面向?qū)ο蠓治鲞^(guò)程中建立的模型有(D)。A.數(shù)據(jù)模型、功能模型、活動(dòng)模型B.對(duì)象模型、功能模型、測(cè)試模型C.屬性模型、功能模型、對(duì)象模型D.對(duì)象模型、功能模型、動(dòng)態(tài)模型10.下列的(C)不是分析建模的目的。A.定義可驗(yàn)證的軟件需求B.描述客戶需求C.開(kāi)發(fā)一個(gè)簡(jiǎn)單的問(wèn)題解決方案D.建立軟件設(shè)計(jì)的基礎(chǔ)11.下列的(C)不屬于面向?qū)ο蠓治瞿P?。A.用例圖B.類(lèi)圖C.實(shí)體關(guān)系圖D.順序圖12.(A)用于描述系統(tǒng)中概念層次的對(duì)象。A.分析類(lèi)B.界面類(lèi)C.實(shí)體類(lèi)D.操縱類(lèi)13.在基于用例的面向?qū)ο蠓治鲞^(guò)程中,定義交互行為的關(guān)鍵在于通過(guò)描述分析類(lèi)實(shí)例之間的(A)將用例的職責(zé)分配到分析類(lèi)中。A.消息傳遞B關(guān)聯(lián)關(guān)系C繼承關(guān)系D上下文關(guān)系14.用例的實(shí)現(xiàn)細(xì)節(jié)可不能在(B)描述。A.用例講明B.用例圖C.活動(dòng)圖D.順序圖15.用例的職責(zé)通常分配給(D)的對(duì)象。A.發(fā)送消息B.接收消息C.發(fā)送和接收雙方D.分析類(lèi)16.組織機(jī)構(gòu)圖是(C)。A.UML的一個(gè)最新圖B.類(lèi)圖的一種C.用于識(shí)不角色的輔助圖D.用例圖的一種17.在圖書(shū)館系統(tǒng)中,假如差不多構(gòu)造了一個(gè)一般借書(shū)者類(lèi),后來(lái)發(fā)覺(jué)圖書(shū)館的學(xué)生和教師在借書(shū)中有不同要求。請(qǐng)問(wèn)在面向?qū)ο笤O(shè)計(jì)中用(B)方法能夠方便地設(shè)計(jì)這兩個(gè)類(lèi)?A.信息隱藏B.繼承C.動(dòng)態(tài)聯(lián)編D.代碼復(fù)制18.框架是一組可用于不同應(yīng)用的(A)集合A.類(lèi)B.對(duì)象C.模塊D.代碼19.下面哪個(gè)選項(xiàng)不能描述子系統(tǒng)之間的關(guān)系。(D)A.請(qǐng)求——服務(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.通常將具有共性的非功能要求設(shè)計(jì)在(B),以減少重新開(kāi)發(fā)的工作量。A.接口層B.中間層C.最低層D.最高層22.每個(gè)用例至少應(yīng)該有一個(gè)(C),它通常沒(méi)有屬性而只有方法,只是起協(xié)調(diào)和操縱作用。A.接口類(lèi)B.實(shí)體類(lèi)C.操縱類(lèi)D.界面類(lèi)23.類(lèi)有三種類(lèi)型即(A)。A.邊界類(lèi)、實(shí)體類(lèi)、操縱類(lèi)B.實(shí)體類(lèi)、數(shù)據(jù)類(lèi)、界面類(lèi)C.操縱類(lèi)、實(shí)體類(lèi)、數(shù)據(jù)類(lèi)D.界面類(lèi)、操縱類(lèi)、公共類(lèi)24.下面那個(gè)選項(xiàng)不是正確的面向?qū)ο笤O(shè)計(jì)思想。(C)A.對(duì)接口進(jìn)行設(shè)計(jì)B.發(fā)覺(jué)變化同時(shí)封裝它C.先繼承后組合D.先組合后繼承25.定義類(lèi)的屬性類(lèi)型時(shí)盡量使用已有的類(lèi)型,太多的自定義類(lèi)型會(huì)降低系統(tǒng)的(A)指標(biāo)。A.可維護(hù)性B.安全性C.開(kāi)發(fā)效率D.可移植性二、簡(jiǎn)答題舉例講明類(lèi)和對(duì)象的關(guān)系。答:學(xué)生可作為一個(gè)類(lèi)學(xué)生類(lèi),每個(gè)學(xué)生確實(shí)是那個(gè)學(xué)生類(lèi)的一個(gè)實(shí)例,例如,學(xué)生張三確實(shí)是學(xué)生類(lèi)的一個(gè)實(shí)例。面向?qū)ο蠓治龅年P(guān)鍵步驟有哪些?應(yīng)建立哪幾個(gè)模型?答:關(guān)鍵步驟有識(shí)不問(wèn)題域的對(duì)象并分析它們相互之間的關(guān)系,建立簡(jiǎn)潔、精確、可理解的正確模型;應(yīng)建立的模型有功能模型,對(duì)象模型,動(dòng)態(tài)模型。什么是實(shí)體類(lèi)、邊界類(lèi)和操縱類(lèi)?什么緣故將分析類(lèi)劃分成這三種類(lèi)型?答:(1)實(shí)體類(lèi)保存要存入永久存儲(chǔ)體的信息。實(shí)體類(lèi)通常在事件流或交互圖中,是對(duì)用戶最有意義的類(lèi)。邊界類(lèi)位于系統(tǒng)與外界的交界處,包括所有的窗體、報(bào)表、系統(tǒng)硬件接口、與其他系統(tǒng)的接口。操縱類(lèi)負(fù)責(zé)協(xié)調(diào)其他類(lèi)的工作。每個(gè)用例中至少應(yīng)該有一個(gè)操縱類(lèi),它操縱用況中的事件順序。(2)分為三種類(lèi)型是因?yàn)樗鼈兏髯缘墓δ懿煌?。界面?lèi)——描述系統(tǒng)與角色之間的接口。操縱類(lèi)——在分析模型內(nèi)表示協(xié)調(diào)、順序、事務(wù)處理以及操縱其他對(duì)象的類(lèi)。實(shí)體類(lèi)——為需要長(zhǎng)久保存的信息進(jìn)行建模的類(lèi)。UML中有哪幾類(lèi)個(gè)視圖,它們的作用分不是什么?答:(1)用例視圖(Use-Caseview)用例視圖用于描述系統(tǒng)的功能集。它是從系統(tǒng)外部以用戶角度,對(duì)系統(tǒng)做的抽象表示。用例視圖所描述的系統(tǒng)功能依靠于外部用戶或另一個(gè)系統(tǒng)觸發(fā)激活,為用戶或另一個(gè)系統(tǒng)提供服務(wù),實(shí)現(xiàn)與用戶或另一個(gè)系統(tǒng)之間的交互。用例視圖中能夠包含若干個(gè)用例,用例表示系統(tǒng)能夠提供的功能,用例視圖是其他視圖的核心和基礎(chǔ)。其他視圖的構(gòu)造依靠于用例視圖中所描述的內(nèi)容,因?yàn)橄到y(tǒng)的最終目標(biāo)是實(shí)現(xiàn)用例視圖中描述的功能,同時(shí)附帶一些非功能性的特性,因此用例視圖阻礙著所有其他的視圖。(2)邏輯視圖(Logicalview)假如講用例視圖描述系統(tǒng)“做什么”,那么邏輯視圖確實(shí)是描述“如何做”。系統(tǒng)的靜態(tài)結(jié)構(gòu)描述類(lèi)、對(duì)象和它們之間的關(guān)系,反映的是系統(tǒng)靜態(tài)特征或結(jié)構(gòu)組成。(3)組件視圖(Componentview)組件視圖用來(lái)描述系統(tǒng)實(shí)現(xiàn)的結(jié)構(gòu)和行為特征,反映系統(tǒng)各組成元素之間的關(guān)系。組件視圖由組件圖實(shí)現(xiàn),要緊供開(kāi)發(fā)者和治理者使用。(4)并發(fā)視圖(ConcurrencyView)并發(fā)視圖用來(lái)描述系統(tǒng)的動(dòng)態(tài)和行為特征。并發(fā)視圖將任務(wù)劃分為進(jìn)程或線程形式,通過(guò)任務(wù)劃分引入并發(fā)機(jī)制,能夠高效地使用資源、并行執(zhí)行和處理異步事件。除了劃分系統(tǒng)為并發(fā)執(zhí)行的進(jìn)程或線程外,并發(fā)視圖還必須處理通信和同步問(wèn)題。(5)配置視圖(DeploymentView)配置視圖體現(xiàn)了系統(tǒng)的實(shí)現(xiàn)環(huán)境,反映系統(tǒng)的物理架構(gòu)。配置視圖還包括一個(gè)映射,該映射顯示在物理架構(gòu)中組件是如何樣分配的。5.順序圖在分析時(shí)期的作用?答:順序圖描述了一組交互對(duì)象間的交互方式,它表示完成某項(xiàng)行為的對(duì)象和這些對(duì)象之間傳遞消息的時(shí)刻順序6.活動(dòng)圖在分析時(shí)期的作用?答:活動(dòng)圖反映系統(tǒng)中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程,強(qiáng)調(diào)對(duì)象間的操縱流程?;顒?dòng)圖特不適合描述工作流和并行處理過(guò)程。具體地講活動(dòng)圖能夠描述一個(gè)操作過(guò)程中需要完成的活動(dòng);描述一個(gè)對(duì)象內(nèi)部的工作;描述如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何阻礙它們周?chē)膶?duì)象;講明一個(gè)業(yè)務(wù)活動(dòng)中角色、工作流、組織和對(duì)象是如何工作的。7.比較結(jié)構(gòu)化設(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)區(qū)不?答:結(jié)構(gòu)化設(shè)計(jì):系統(tǒng)被劃分成多個(gè)模塊,這些模塊被組織成一個(gè)樹(shù)型結(jié)構(gòu)。根確實(shí)是主模塊,葉子是最低級(jí)的功能模塊。這棵樹(shù)也表示調(diào)用結(jié)構(gòu):每個(gè)模塊都調(diào)用自己的直接下級(jí)模塊,并被自己的直接上級(jí)模塊調(diào)用。頂層模塊負(fù)責(zé)收集應(yīng)用程序最重要的那些執(zhí)行策略,底層模塊實(shí)現(xiàn)處理細(xì)節(jié)。在那個(gè)體系結(jié)構(gòu)中越靠上層位置,概念的抽象層次就越高。然而,由于上層模塊需要調(diào)用下層模塊,因此這些上層模塊就依靠于下層模塊的處理細(xì)節(jié)。也確實(shí)是講,當(dāng)實(shí)現(xiàn)細(xì)節(jié)發(fā)生變化時(shí),抽象也會(huì)受到阻礙;假如想復(fù)用某一個(gè)抽象的話,就必須把它依靠的細(xì)節(jié)都一起拖過(guò)去。 面向?qū)ο笤O(shè)計(jì):上層創(chuàng)建的抽象不依靠于任何細(xì)節(jié),而細(xì)節(jié)則高度依靠于上層的抽象。這種依靠關(guān)系的變化正是結(jié)構(gòu)化設(shè)計(jì)與面向?qū)ο笤O(shè)計(jì)的全然區(qū)不。8.什么是框架,它與“設(shè)計(jì)”有什么關(guān)系?答:框架是一組可用于不同應(yīng)用的類(lèi)的集合??蚣苤械念?lèi)通常是一些抽象類(lèi)同時(shí)相互有聯(lián)系,能夠通過(guò)繼承的方式使用這些類(lèi),當(dāng)面向?qū)ο笤O(shè)計(jì)進(jìn)行底層設(shè)計(jì)時(shí),對(duì)每個(gè)類(lèi)進(jìn)行詳細(xì)設(shè)計(jì),設(shè)計(jì)類(lèi)的屬性和操作,優(yōu)化類(lèi)之間的關(guān)系,就能夠設(shè)計(jì)成框架來(lái)對(duì)類(lèi)的設(shè)計(jì)進(jìn)行構(gòu)架和優(yōu)化。9.系統(tǒng)的物理構(gòu)架中應(yīng)該包括哪些信息?答:用UML的配置圖描述系統(tǒng)的物理構(gòu)架,然后將需求分析時(shí)期捕獲的系統(tǒng)功能分配到這些物理節(jié)點(diǎn)上。包括的信息為節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)、硬件設(shè)備配置、通信路徑、各個(gè)節(jié)點(diǎn)上運(yùn)行的系統(tǒng)軟件配置、應(yīng)用軟件配置。三、應(yīng)用題一個(gè)多媒體商店系統(tǒng)包含一個(gè)由媒體文件構(gòu)成的數(shù)據(jù)庫(kù),有兩類(lèi)媒體文件:圖像文件和聲音文件。每個(gè)媒體文件都有名稱和唯一的編碼,而且文件包含作者信息和格式信息,聲音文件還包含聲音文件的時(shí)長(zhǎng)(以秒為單位)和作者的信息。假設(shè)每個(gè)媒體文件能夠由唯一的編碼所識(shí)不,系統(tǒng)要提供以下功能:媒體庫(kù)中能夠添加新的特不媒體文件。通過(guò)給定的文件編碼查找需要的媒體文件。從媒體庫(kù)中刪除指定的媒體文件。給出媒體庫(kù)中媒體文件的數(shù)量??紤]類(lèi)imageFile和audioFile應(yīng)該具有哪些恰當(dāng)?shù)膶傩院头椒ù穑篿mageFile類(lèi)的屬性有:Name(文件名稱),Code(編碼),AuthorInfo(作者信息),F(xiàn)ormat(格式信息);audioFile類(lèi)除了擁有以上屬性外還有屬性Time(文件時(shí)長(zhǎng));imageFile類(lèi)的方法:Add(imageFile)(添加圖像文件),Delete(Code)(刪除文件),GetFile(Code)(查找文件),GetNumber()(返回媒體文件的數(shù)量);audioFile類(lèi)的方法:Add(audioFile)(添加聲音文件),Delete(Code)(刪除文件),GetFile(Code)(查找文件),GetNumber()(返回媒體文件的數(shù)量)。若把學(xué)生看成一個(gè)實(shí)體,它能夠分成多個(gè)子實(shí)體,如小學(xué)生、中學(xué)生和大學(xué)生等。在面向?qū)ο蟮脑O(shè)計(jì)中,能夠創(chuàng)建如下4個(gè)類(lèi):類(lèi)Student、類(lèi)ElementaryStudent、MiddleStudent;類(lèi)UniversityStudent。試給出這4個(gè)類(lèi)的屬性以及它們之間的關(guān)系。答:Student類(lèi)為基類(lèi),其他三個(gè)類(lèi)差不多上Student的子類(lèi)。Student類(lèi)的屬性有:Name(姓名),Sex(性不),Age(年齡),Class(班級(jí))。ElementaryStudent類(lèi)的屬性有:IsTeamMember(是否是少先隊(duì)員),IsGoodStudent(是否是三好學(xué)生)。MiddleStudent類(lèi)的屬性為:IsMember(是否是團(tuán)員),Subject(文科理科)。UniversityStudent類(lèi)的屬性為:IsPartyMember(是否黨員),Department(學(xué)院),Specialty(專(zhuān)業(yè))。三、應(yīng)用題某學(xué)校領(lǐng)書(shū)的工作流程為:學(xué)生班長(zhǎng)填寫(xiě)領(lǐng)書(shū)單,班主任審查后簽名,然后班長(zhǎng)拿領(lǐng)書(shū)單到書(shū)庫(kù)領(lǐng)書(shū)。書(shū)庫(kù)保管員審查領(lǐng)書(shū)單是否有班主任簽名,填寫(xiě)是否正確等,不正確的領(lǐng)書(shū)單退回給班長(zhǎng);假如填寫(xiě)正確則給予領(lǐng)書(shū)并修改庫(kù)存清單;當(dāng)某書(shū)的庫(kù)存量低于臨界值時(shí),登記需訂書(shū)的信息。每天下班前為采購(gòu)部門(mén)提供一張訂書(shū)單。用活動(dòng)圖來(lái)描述領(lǐng)書(shū)的過(guò)程。解:使用順序圖描述下面的情景,當(dāng)用戶在自己的計(jì)算機(jī)上向網(wǎng)絡(luò)打印機(jī)發(fā)出一個(gè)打印任務(wù)時(shí),他的計(jì)算機(jī)便向打印機(jī)服務(wù)器發(fā)送一條打印命令print(file),打印機(jī)服務(wù)器假如發(fā)覺(jué)網(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ā)行多種刊物,每種刊物通過(guò)訂單來(lái)征訂,訂單中有代碼,名稱,訂期,單價(jià),份數(shù)等項(xiàng)目,訂戶通過(guò)填寫(xiě)訂單來(lái)訂閱報(bào)刊。
(2)報(bào)社下屬多個(gè)發(fā)行站,每個(gè)站負(fù)責(zé)收集登陸訂單、打印收款憑證等事務(wù)。
(3)報(bào)社負(fù)責(zé)分類(lèi)并統(tǒng)計(jì)各個(gè)發(fā)行站送來(lái)的報(bào)刊訂閱信息。
請(qǐng)就此需求建立對(duì)象模型。\l"53"/course_ware/software/test/-53解:軟件工程作業(yè)3(第8~11章)選擇題結(jié)構(gòu)化語(yǔ)言是介于自然語(yǔ)言和形式語(yǔ)言之間的一種(D)。A.半形式語(yǔ)言B.計(jì)算機(jī)語(yǔ)言C.低級(jí)語(yǔ)言 D.高級(jí)語(yǔ)言程序設(shè)計(jì)語(yǔ)言的技術(shù)特性不應(yīng)包括(C)。\l"33"/course_ware/software/test/-33A、數(shù)據(jù)結(jié)構(gòu)的描述性B、抽象類(lèi)型的描述性C、數(shù)據(jù)庫(kù)的易操作性D、軟件的可移植性程序的三種差不多操縱結(jié)構(gòu)是(B)。\l"301"/course_ware/software/test/-301A.過(guò)程、子程序和分程序 B.順序、選擇和重復(fù)C.遞歸、堆棧和隊(duì)列 D.調(diào)用、返回和轉(zhuǎn)移結(jié)構(gòu)化程序設(shè)計(jì)要緊強(qiáng)調(diào)的是(D)。\l"301"/course_ware/software/test/-301A.程序的規(guī)模B.程序的效率 C.程序設(shè)計(jì)語(yǔ)言的先進(jìn)性 D.程序易讀性下列關(guān)于功能性注釋不正確的講法是(B)。A.功能性注釋嵌在源程序中,用于講明程序段或語(yǔ)句的功能以及數(shù)據(jù)的狀態(tài)B.注釋用來(lái)講明程序段,需要在每一行都要加注釋C.可使用空行或縮進(jìn),以便專(zhuān)門(mén)容易區(qū)分注釋和程序D.修改程序也應(yīng)修改注釋下列關(guān)于效率的講法不正確的是(D)。A.效率是一個(gè)性能要求,其目標(biāo)應(yīng)該在需求分析時(shí)給出B.提高程序效率的全然途徑在于選擇良好的設(shè)計(jì)方法,數(shù)據(jù)結(jié)構(gòu)與算法C.效率要緊指處理機(jī)時(shí)刻和存儲(chǔ)器容量?jī)蓚€(gè)方面D.程序的效率與程序的簡(jiǎn)單性無(wú)關(guān)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)的要緊區(qū)不在于(B)。A.軟件是否結(jié)構(gòu)化 B.軟件配置是否完整 C.程序的完整性 D.文檔的完整性關(guān)于JAVA語(yǔ)言下列講法不正確的是(B)。A.跨平臺(tái)的 B.動(dòng)態(tài)指針 C.解釋型的 D.面向?qū)ο蟮氖褂冒缀袦y(cè)試方法時(shí),確定測(cè)試數(shù)據(jù)應(yīng)依照(A)和指定的覆蓋標(biāo)準(zhǔn)。A程序內(nèi)部邏輯B.程序復(fù)雜結(jié)構(gòu)C.使用講明書(shū) D.程序的功能確認(rèn)測(cè)試要緊涉及的文檔是(A)。\l"35"/course_ware/software/test/-35A、需求規(guī)格講明書(shū)B(niǎo)、概要設(shè)計(jì)講明書(shū)C、詳細(xì)設(shè)計(jì)講明書(shū)D、源程序測(cè)試的關(guān)鍵問(wèn)題是(D)。A.如何組織對(duì)軟件的評(píng)審 B.如何驗(yàn)證程序的正確性C.如何采納綜合策略 D.如何選擇測(cè)試用例黑盒測(cè)試在設(shè)計(jì)測(cè)試用例時(shí),要緊研究(A)。\l"412"/course_ware/software/test/-412A.需求規(guī)格講明 B.詳細(xì)設(shè)計(jì)講明C.項(xiàng)目開(kāi)發(fā)打算 D.概要設(shè)計(jì)講明與詳細(xì)設(shè)計(jì)講明下面哪些測(cè)試屬于黑盒測(cè)試(B)。A、路徑測(cè)試B、等價(jià)類(lèi)劃分C、條件推斷D、循環(huán)測(cè)試在下述哪一種測(cè)試中,測(cè)試人員必須接觸到源程序(B)。A、功能測(cè)試 B、結(jié)構(gòu)測(cè)試C、功能測(cè)試和結(jié)構(gòu)測(cè)試D、性能測(cè)試檢查軟件產(chǎn)品是否符合需求定義的過(guò)程稱為(D)。A、確認(rèn)測(cè)試B、集成測(cè)試C、驗(yàn)收測(cè)試D、驗(yàn)證測(cè)試軟件測(cè)試方法中,黑盒、白盒測(cè)試法是常用的方法,其中白盒測(cè)試要緊用于測(cè)試(D)。結(jié)構(gòu)合理性B、軟件外部功能C、程序正確性D、程序內(nèi)部邏輯軟件維護(hù)中,因修改交互輸入的順序,沒(méi)有正確的記錄而引起的錯(cuò)誤是(A)產(chǎn)生的副作用。A、文檔B、數(shù)據(jù) C、編碼D、設(shè)計(jì)以下屬于軟件維護(hù)時(shí)期文檔的是(C)。A、軟件需求講明B、操作手冊(cè)C、軟件問(wèn)題報(bào)告D、測(cè)試分析報(bào)告產(chǎn)生軟件維護(hù)的副作用,是指(C)。A、開(kāi)發(fā)時(shí)的錯(cuò)誤 B、隱含的錯(cuò)誤 C、因修改軟件而造成的錯(cuò)誤 D、運(yùn)行時(shí)誤操作維護(hù)中,因誤刪除一個(gè)標(biāo)識(shí)符而引起的錯(cuò)誤是(C)副作用。A、文檔 B、數(shù)據(jù) C、編碼 D、設(shè)計(jì)可維護(hù)性的特性中,相互促進(jìn)的(A)。A、可理解性和可測(cè)試性B、效率和可移植性 C、效率和可修改性 D、效率和結(jié)構(gòu)好軟件維護(hù)的困難要緊緣故是(C)A、費(fèi)用低 B、人員少 C、開(kāi)發(fā)方法的缺陷D、用戶不配合軟件維護(hù)費(fèi)用高的要緊緣故是(C)。\l"34"/course_ware/software/test/-34A、人員少B、人員多C、生產(chǎn)率低D、生產(chǎn)率高為了適應(yīng)軟硬件環(huán)境變化而修改軟件的過(guò)程是(C)。\l"33"/course_ware/software/test/-33A、校正性維護(hù) B、完善性維護(hù) C、適應(yīng)性維護(hù)D、預(yù)防性維護(hù)可維護(hù)性的特性中,相互矛盾的是(B)A.可理解性與可測(cè)試性B.效率與可修改性C.可修改性和可理解性D.可理解性與可讀性各種不同的軟件維護(hù)中,以(C)維護(hù)所占的維護(hù)量最小。糾錯(cuò)性維護(hù)B、代碼維護(hù)C、預(yù)防性維護(hù)D、文檔維護(hù)在變更操縱中,(B)能夠用來(lái)確保由不同用戶所執(zhí)行的并發(fā)變更。A.異步操縱B.同步操縱C.存取操縱D.基線操縱變更操縱是一項(xiàng)最重要的軟件配置任務(wù),其中“檢出”和(A)處理實(shí)現(xiàn)了兩個(gè)重要的變更操縱要素,即存取操縱和同步操縱。A.登入B.治理C.填寫(xiě)變更要求D.審查用Gantt圖表示軟件項(xiàng)目進(jìn)度安排,下列講法中正確的是\l"421"/course_ware/software/test/-421(B)A.能夠反映多個(gè)任務(wù)之間的復(fù)雜關(guān)系B.能夠直觀表示任務(wù)之間相互依靠制約關(guān)系C.能夠表示哪些任務(wù)是關(guān)鍵任務(wù)D.能夠表示子任務(wù)之間的并行和串行關(guān)系基線可作為軟件生存期中各開(kāi)發(fā)時(shí)期的一個(gè)檢查點(diǎn)。當(dāng)采納的基線發(fā)生錯(cuò)誤時(shí),能夠返回到最近和最恰當(dāng)?shù)模–)上\l"35"/course_ware/software/test/-35A.配置項(xiàng)B.程序C.基線D.過(guò)程簡(jiǎn)答題為建立良好的編程風(fēng)格應(yīng)遵循什么原則?答:1)節(jié)簡(jiǎn)化①不使用不必要的變量和函數(shù)②幸免變量重名,變量重名可導(dǎo)致專(zhuān)門(mén)難被發(fā)覺(jué)的錯(cuò)誤。③盡量減小代碼量。④盡量減少代碼的執(zhí)行時(shí)刻,提高執(zhí)行效率。⑤幸免功能冗余的模塊。⑥盡量不使用全局變量。2)模塊化①確保物理和邏輯功能緊密相關(guān)。②限定一個(gè)模塊完成一個(gè)獨(dú)立的功能,提高模塊的內(nèi)聚度。③檢查代碼的重復(fù)率,重復(fù)多的代碼,要抽出來(lái)作為一個(gè)單獨(dú)的模塊。3)簡(jiǎn)單化①采納直接了當(dāng)?shù)乃惴?,幸免使用技巧性高和難明白的代碼。②使用簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),幸免使用多維數(shù)組、指針和復(fù)雜的表。③注意對(duì)象命名的一致性。④以手工的方式簡(jiǎn)化算術(shù)和邏輯表達(dá)式。4)結(jié)構(gòu)化①按標(biāo)準(zhǔn)化的次序講明數(shù)據(jù);②按字母順序講明對(duì)象名③使用讀者明了的結(jié)構(gòu)化程序部件;④采納直截了當(dāng)?shù)乃惴?;⑤依照顧用背景排列程序各個(gè)部分;⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機(jī)器多做煩瑣的工作,如重復(fù)、庫(kù)函數(shù);⑧用公共函數(shù)調(diào)用代替重復(fù)出現(xiàn)的表達(dá)式;⑨幸免循環(huán)、分支的嵌套層數(shù)過(guò)高;⑩單入口單出口。5)文檔化(documentation)①有效、適當(dāng)?shù)厥褂米⑨?。②協(xié)調(diào)使用程序塊注釋和程序行注釋。③保持文檔和程序的同步。6)格式化(layout)①始終采納統(tǒng)一縮進(jìn)規(guī)則;②適當(dāng)插入括號(hào)表明運(yùn)算次序、排除二義性;③有效地使用空格符以區(qū)不程序的不同意群。什么是軟件測(cè)試?答:軟件測(cè)試從廣義上講,是指軟件產(chǎn)品生存周期內(nèi)所有的檢查、評(píng)審和確認(rèn)活動(dòng)。從狹義上講,軟件測(cè)試是為了發(fā)覺(jué)錯(cuò)誤而執(zhí)行程序的過(guò)程?;蛘咧v,軟件測(cè)試是依照軟件開(kāi)發(fā)各個(gè)時(shí)期的規(guī)格講明和程序內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例,用這些測(cè)試用例運(yùn)行程序,以發(fā)覺(jué)程序錯(cuò)誤的過(guò)程。軟件測(cè)試的原則是什么?答:軟件測(cè)試的原則有:應(yīng)該把測(cè)試貫穿在整個(gè)開(kāi)發(fā)過(guò)程之中。事實(shí)上,從需求分析時(shí)期開(kāi)始,每個(gè)時(shí)期結(jié)束之前都要進(jìn)行時(shí)期審查,目的是盡早發(fā)覺(jué)和糾正錯(cuò)誤。每個(gè)測(cè)試用例都應(yīng)該包括測(cè)試輸入數(shù)據(jù)和這組數(shù)據(jù)輸入作用下的預(yù)期輸出結(jié)果。在實(shí)際操作中能夠列出一張表格,包括每個(gè)測(cè)試用例的編號(hào)、類(lèi)型、輸入數(shù)據(jù)、預(yù)期輸出結(jié)果、實(shí)際輸出結(jié)果、出錯(cuò)緣故分析。要對(duì)每個(gè)測(cè)試結(jié)果進(jìn)行全面檢查,不要漏掉差不多出現(xiàn)的錯(cuò)誤跡象。程序員應(yīng)該盡量幸免檢查自己編寫(xiě)的代碼。測(cè)試工作需要嚴(yán)格的工作作風(fēng),程序員在測(cè)試自己編寫(xiě)的代碼時(shí)往往會(huì)帶有一些傾向性,使得他們工作中常常出現(xiàn)一些疏漏。而且,程序員對(duì)設(shè)計(jì)規(guī)格講明書(shū)的理解錯(cuò)誤而引入的錯(cuò)誤更是難于發(fā)覺(jué)。在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)該包括有效的、期望的輸入情況,也要包括無(wú)效的和不期望的輸入情況。既能夠驗(yàn)證程序正常運(yùn)行的合理輸入,也能夠驗(yàn)證對(duì)異常情況處理的不合理輸入數(shù)據(jù)以及臨界數(shù)據(jù)。在測(cè)試程序時(shí),人們常常過(guò)多地考慮合法的和期望的輸入條件,以檢查程序是否做了它應(yīng)該做的情況,而忽視了不合法的和預(yù)想不到的輸入條件。事實(shí)上,用戶在使用系統(tǒng)時(shí),輸入一些錯(cuò)誤指令和參數(shù)是經(jīng)常發(fā)生的,假如軟件遇到這種情況不能做出適當(dāng)?shù)姆磻?yīng),給出相應(yīng)的提示信息,就可能會(huì)誤導(dǎo)用戶,甚至造成嚴(yán)峻損失。軟件中遺留的錯(cuò)誤數(shù)量與差不多發(fā)覺(jué)的錯(cuò)誤數(shù)量成正比。依照那個(gè)規(guī)律,對(duì)測(cè)試中發(fā)覺(jué)錯(cuò)誤成堆的模塊更要認(rèn)真測(cè)試。例如,在某個(gè)聞名的操作系統(tǒng)中,44%的錯(cuò)誤僅與4%的模塊有關(guān)?;貧w測(cè)試的關(guān)聯(lián)性要特不引起注意,修改一個(gè)錯(cuò)誤而引起更多錯(cuò)誤的現(xiàn)象并許多見(jiàn)。測(cè)試程序時(shí)不僅要檢查程序是否做了它應(yīng)該做的情況,還要檢查它是否做了不該做的情況。例如,工資軟件中,軟件只完成在編職工的工資計(jì)算和輸出,不在編人員的工資是不進(jìn)行計(jì)算和輸出的。假如軟件將不在編人員的工資信息也輸出顯然是不合適的。嚴(yán)格執(zhí)行測(cè)試打算。在測(cè)試之前應(yīng)該有明確的測(cè)試打算,內(nèi)容包括:要測(cè)試的軟件功能和內(nèi)容、測(cè)試用例和預(yù)期結(jié)果、測(cè)試的進(jìn)度安排、需要的工具和資源、測(cè)試操縱方式和過(guò)程等。10)做好測(cè)試記錄,為統(tǒng)計(jì)和維護(hù)提供基礎(chǔ)數(shù)據(jù)。請(qǐng)講明集成測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試有什么不同?答:集成測(cè)試界于單元測(cè)試和系統(tǒng)測(cè)試之間,起到“橋梁作用”,一般由開(kāi)發(fā)小組采納白盒加黑盒的方式來(lái)測(cè)試,既驗(yàn)證“設(shè)計(jì)”,又驗(yàn)證“需求”。
系統(tǒng)測(cè)試的粒度最大,一般由獨(dú)立測(cè)試小組采納黑盒方式來(lái)測(cè)試,要緊測(cè)試系統(tǒng)是否符合“需求規(guī)格講明書(shū)”。
驗(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ì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。為此,對(duì)模塊接口,包括參數(shù)表、調(diào)用子模塊的參數(shù)、全程數(shù)據(jù)、文件輸入/輸出操作都必須檢查。2)局部數(shù)據(jù)結(jié)構(gòu)測(cè)試:設(shè)計(jì)測(cè)試用例檢查數(shù)據(jù)類(lèi)型講明、初始化、缺省值等方面的問(wèn)題,還要查清全程數(shù)據(jù)對(duì)模塊的阻礙。 3)路徑測(cè)試:選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。對(duì)差不多執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試能夠發(fā)覺(jué)大量路徑錯(cuò)誤。4)錯(cuò)誤處理測(cè)試:檢查模塊的錯(cuò)誤處理功能是否包含有錯(cuò)誤或缺陷。例如,是否拒絕不合理的輸入;出錯(cuò)的描述是否難以理解、是否對(duì)錯(cuò)誤定位有誤、是否出錯(cuò)緣故報(bào)告有誤、是否對(duì)錯(cuò)誤條件的處理不正確;在對(duì)錯(cuò)誤處理之前錯(cuò)誤條件是否差不多引起系統(tǒng)的干預(yù)等。5)邊界測(cè)試:要特不注意數(shù)據(jù)流、操縱流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地點(diǎn)要認(rèn)真地選擇測(cè)試用例,認(rèn)真加以測(cè)試。5)此外,假如對(duì)模塊運(yùn)行時(shí)刻有要求的話,還要專(zhuān)門(mén)進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下阻礙模塊運(yùn)行時(shí)刻的因素。這類(lèi)信息對(duì)進(jìn)行性能評(píng)價(jià)是十分有用的。什么是白盒測(cè)試?它適應(yīng)哪些測(cè)試?答:白盒測(cè)試也叫結(jié)構(gòu)測(cè)試,測(cè)試者需要了解被測(cè)程序的內(nèi)部結(jié)構(gòu)。白盒測(cè)試通常依照覆蓋準(zhǔn)則設(shè)計(jì)測(cè)試用例,有語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和條件組合覆蓋。白盒測(cè)試適用與單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試非漸增式測(cè)試與漸增式測(cè)試有什么區(qū)不?漸增式測(cè)試如何組裝模塊?答:1)漸增式能夠較早地發(fā)覺(jué)模塊界面之間的錯(cuò)誤,非漸增式則要到最后將所有模塊連接起來(lái)時(shí)才能發(fā)覺(jué)此類(lèi)錯(cuò)誤。2)非漸增式需要較多的人工3)漸增式有利于排錯(cuò)。假如模塊界面間有錯(cuò),假如用非漸增式,這類(lèi)錯(cuò)誤到最后聯(lián)合測(cè)試時(shí)才能發(fā)覺(jué),現(xiàn)在專(zhuān)門(mén)難推斷錯(cuò)誤發(fā)生在哪一部分,但假如用漸增式,這類(lèi)錯(cuò)誤就較容易定位,它通常與最新加上去的模塊有關(guān)。4)漸增式比較完全。5)漸增式需要較多的機(jī)器時(shí)刻。6)非漸增式方式,開(kāi)始時(shí)同意幾個(gè)測(cè)試人員并行工作,對(duì)大型系統(tǒng)來(lái)講,是專(zhuān)門(mén)有意義的。采納黑盒技術(shù)設(shè)計(jì)測(cè)試用例有哪幾種方法?這些方法各有什么特點(diǎn)?答:黑盒測(cè)試設(shè)計(jì)測(cè)試用例的方法有1)等價(jià)類(lèi)劃分法特點(diǎn)是:a、測(cè)試的內(nèi)容相同b、一個(gè)等價(jià)類(lèi)中的某個(gè)測(cè)試能夠發(fā)覺(jué)缺陷,那么那個(gè)等價(jià)類(lèi)的其他測(cè)試也能發(fā)覺(jué)缺陷c、一個(gè)等價(jià)類(lèi)中的某個(gè)測(cè)試不能發(fā)覺(jué)缺陷,那么那個(gè)等價(jià)類(lèi)的其它測(cè)試也不能發(fā)覺(jué)缺陷2)邊界值分析法特點(diǎn)是:用邊界值分析時(shí)時(shí)常收獲較大,它是在等價(jià)類(lèi)的邊界上選擇測(cè)試用例3)錯(cuò)誤推測(cè)法特點(diǎn)是:沒(méi)有確定的步驟,專(zhuān)門(mén)大程度上是憑借經(jīng)驗(yàn)進(jìn)行的4)因果圖法特點(diǎn)是:考慮輸入條件間的組合關(guān)系;考慮輸出條件對(duì)輸入條件的信賴關(guān)系;測(cè)試用例發(fā)覺(jué)錯(cuò)誤的效率高;能查出功能講明中的某些不一致或遺漏白盒測(cè)試法有哪些覆蓋標(biāo)準(zhǔn)?試對(duì)它們的檢錯(cuò)能力進(jìn)行比較。答:白盒測(cè)試的覆蓋標(biāo)準(zhǔn)有:語(yǔ)句覆蓋->判定覆蓋->條件覆蓋->判定/條件覆
蓋->條件組合覆蓋->路徑覆蓋檢錯(cuò)能力由弱到強(qiáng)依照下面程序代碼,畫(huà)出程序流程圖,然后設(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)該注意哪些問(wèn)題?答:為獲得軟件的良好可維護(hù)性,在設(shè)計(jì)時(shí)期應(yīng)該做一些變更實(shí)驗(yàn),檢查系統(tǒng)的可維護(hù)性、靈活性和可移植性,設(shè)計(jì)時(shí)應(yīng)該將今后可能變更的內(nèi)容與其他部分分離開(kāi)來(lái),同時(shí)遵循高內(nèi)聚、低偶合的原則。在軟件文檔中,你認(rèn)為哪些文檔關(guān)于軟件的維護(hù)最重要?需求分析文檔、設(shè)計(jì)文檔、程序文檔對(duì)軟件維護(hù)專(zhuān)門(mén)重要軟件維護(hù)時(shí)的源程序修改策略是什么?答:軟件維護(hù)時(shí)的源程序修改策略是:由于軟件維護(hù)最終落實(shí)在修改源程序和文檔上。為了正確、有效地修改源程序,通常要先分析和理解源程序,然后才能修改源程序,最后重新測(cè)試和驗(yàn)證源程序。軟件項(xiàng)目打算包括那些內(nèi)容?答:軟件項(xiàng)目打算的內(nèi)容包括:1.范圍。對(duì)該軟件項(xiàng)目的綜合描述,定義起所要做的工作以及性能限制,它包括:(1)項(xiàng)目目標(biāo)。(2)要緊功能。(3)性能限制。(4)系統(tǒng)接口。(5)專(zhuān)門(mén)要求。(6)開(kāi)發(fā)概述。2.資源。(1)人員資源。(2)硬件資源。(3)軟件資源。(4)其他。3.進(jìn)度安排。進(jìn)度安排的好壞往往會(huì)阻礙整個(gè)項(xiàng)目的按期完成,因此這一環(huán)節(jié)是十分重要的。制定軟件進(jìn)度與其他工程沒(méi)有專(zhuān)門(mén)大的區(qū)不,其方法要緊有:(1)工程網(wǎng)絡(luò)圖。(2)Gantt圖。(3)任務(wù)資源表。(4)成本估算。(5)培訓(xùn)打算。15.什么是軟件配置治理?什么是基線?答:配置治理能夠系統(tǒng)地處理變更,從而使得軟件系統(tǒng)能夠隨時(shí)保持其完整性。配置治理又可成為變更操縱,能夠用來(lái)評(píng)估提出的變更請(qǐng)求,跟蹤變更,并保持系統(tǒng)在不同時(shí)刻的狀態(tài)。軟件配置治理是一套規(guī)范、高效的軟件開(kāi)發(fā)基礎(chǔ)結(jié)構(gòu)?;€是:差不多通過(guò)正式復(fù)審和批準(zhǔn)的某規(guī)約或產(chǎn)品,它因此能夠作為進(jìn)一步開(kāi)發(fā)的基礎(chǔ),同時(shí)只能通過(guò)正式的變化操縱過(guò)程改變。應(yīng)用題請(qǐng)讀者參考能夠找到的編程規(guī)范,設(shè)計(jì)一個(gè)C語(yǔ)言編程規(guī)范。答:文件結(jié)構(gòu)1.1版權(quán)和版本的聲明版權(quán)和版本的聲明位于頭文件和定義文件的開(kāi)頭(參見(jiàn)示例1-1),要緊內(nèi)容有:(1)版權(quán)信息。(2)文件名稱,標(biāo)識(shí)符,摘要。(3)當(dāng)前版本號(hào),作者/修改者,完成日期。(4)版本歷史信息。/**Copyright(c)2001,上海貝爾有限公司網(wǎng)絡(luò)應(yīng)用事業(yè)部*Allrightsreserved.**文件名稱:filename.h*文件標(biāo)識(shí):見(jiàn)配置治理打算書(shū)*摘要:簡(jiǎn)要描述本文件的內(nèi)容**當(dāng)前版本:1.1*作者:輸入作者(或修改者)名字*完成日期:2001**取代版本:1.0*原作者:輸入原作者(或修改者)名字*完成日期:2001*/示例1-1版權(quán)和版本的聲明1.2頭文件的結(jié)構(gòu)頭文件由三部分內(nèi)容組成:(1)頭文件開(kāi)頭處的版權(quán)和版本聲明(參見(jiàn)示例1-1)。(2)預(yù)處理塊。(3)函數(shù)和類(lèi)結(jié)構(gòu)聲明等。假設(shè)頭文件名稱為graphics.h,頭文件的結(jié)構(gòu)參見(jiàn)示例1-2?!疽?guī)則1-2-1】為了防止頭文件被重復(fù)引用,應(yīng)當(dāng)用ifndef/define/endif結(jié)構(gòu)產(chǎn)生預(yù)處理塊?!疽?guī)則1-2-2】用#include<filename.h>格式來(lái)引用標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從標(biāo)準(zhǔn)庫(kù)目錄開(kāi)始搜索)?!疽?guī)則1-2-3】用#include“filename.h”格式來(lái)引用非標(biāo)準(zhǔn)庫(kù)的頭文件(編譯器將從用戶的工作目錄開(kāi)始搜索)?!窘ㄗh1-2-1】頭文件中只存放“聲明”而不存放“定義”【建議1-2-2】不提倡使用全局變量,盡量不要在頭文件中出現(xiàn)象externintvalue這類(lèi)聲明。#ifndefGRAPHICS_H//防止graphics.h被重復(fù)引用#defineGRAPHICS_H#include<math.h>//引用標(biāo)準(zhǔn)庫(kù)的頭文件?#include“myheader.h”//引用非標(biāo)準(zhǔn)庫(kù)的頭文件?voidFunction1(?);//全局函數(shù)聲明?classBox//類(lèi)結(jié)構(gòu)聲明{?};#endif示例1-2C頭文件的結(jié)構(gòu)1.3定義文件的結(jié)構(gòu)定義文件有三部分內(nèi)容:(1)定義文件開(kāi)頭處的版權(quán)和版本聲明(參見(jiàn)示例1-1)。(2)對(duì)一些頭文件的引用。(3)程序的實(shí)現(xiàn)體(包括數(shù)據(jù)和代碼)。假設(shè)定義文件的名稱為graphics.cpp,定義文件的結(jié)構(gòu)參見(jiàn)示例1-3。//版權(quán)和版本聲明見(jiàn)示例1-1,此處省略。#include“graphics.h”//引用頭文件?//全局函數(shù)的實(shí)現(xiàn)體voidFunction1(?){?}//類(lèi)成員函數(shù)的實(shí)現(xiàn)體voidBox::Draw(?){?}示例1-3C定義文件的結(jié)構(gòu)1.4目錄結(jié)構(gòu)假如一個(gè)軟件的頭文件數(shù)目比較多(如超過(guò)十個(gè)),通常應(yīng)將頭文件和定義文件分不保存于不同的目錄,以便于維護(hù)。例如可將頭文件保存于include目錄,將定義文件保存于source目錄(能夠是多級(jí)目錄)。假如某些頭文件是私有的,它可不能被用戶的程序直接引用,則沒(méi)有必要公開(kāi)其“聲明”。為了加強(qiáng)信息隱藏,這些私有的頭文件能夠和定義文件存放于同一個(gè)目錄。程序的版式版式盡管可不能阻礙程序的功能,但會(huì)阻礙可讀性。程序的版式追求清晰、美觀,是程序風(fēng)格的重要構(gòu)成因素。程序的版式2.1空行空行起著分隔程序段落的作用??招械皿w(只是多也只是少)將使程序的布局更加清晰??招锌刹荒馨踪M(fèi)內(nèi)存,盡管打印含有空行的程序是會(huì)多消耗一些紙張,然而值得。因此不要舍不得用空行?!疽?guī)則2-1-1】在每個(gè)類(lèi)聲明之后、每個(gè)函數(shù)定義結(jié)束之后都要加空行?!疽?guī)則2-1-2】在一個(gè)函數(shù)體內(nèi),邏揖上緊密相關(guān)的語(yǔ)句之間不加空行,其它地點(diǎn)應(yīng)加空行分隔。2.2代碼行【規(guī)則2-2-1】一行代碼只做一件情況,如只定義一個(gè)變量,或只寫(xiě)一條語(yǔ)句。如此的代碼容易閱讀,同時(shí)方便于寫(xiě)注釋?!疽?guī)則2-2-2】if、for、while、do等語(yǔ)句自占一行,執(zhí)行語(yǔ)句不得緊跟其后。不論執(zhí)行語(yǔ)句有多少都要加{}。如此能夠防止書(shū)寫(xiě)失誤?!窘ㄗh2-2-3假如變量的引用處和其定義處相隔比較遠(yuǎn),變量的初始化專(zhuān)門(mén)容易被不記得。假如引用了未被初始化的變量,可能會(huì)導(dǎo)致程序錯(cuò)誤。本建議能夠減少隱患。例如intwidth=10;//定義并初紿化widthintheight=10;//定義并初紿化heightintdepth=10;//定義并初紿化depth2.3代碼行內(nèi)的空格【規(guī)則2-3-1】關(guān)鍵字之后要留空格。象const、virtual、inline、case等關(guān)鍵字之后至少要留一個(gè)空格,否則無(wú)法辨析關(guān)鍵字。象if、for、while等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)‘(’,以突出關(guān)鍵字?!疽?guī)則2-3-2】函數(shù)名之后不要留空格,緊跟左括號(hào)‘(’,以與關(guān)鍵字區(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】象“[]”、“.”、“->”這類(lèi)操作符前后不加空格?!窘ㄗh2-3-8】關(guān)于表達(dá)式比較長(zhǎng)的for語(yǔ)句和if掉一些空格,如for(i=0;i<10;i++)和if((a<=b)&&(c<=d))2.4修飾符的位置修飾符*和&應(yīng)該靠近數(shù)據(jù)類(lèi)型依舊該靠近變量名,是個(gè)有爭(zhēng)議的活題。若將修飾符*靠近數(shù)據(jù)類(lèi)型,例如:int*x;從語(yǔ)義上講此寫(xiě)法比較直觀,即x是int類(lèi)型的指針。上述寫(xiě)法的弊端是容易引起誤解,例如:int*x,y;此處y容易被誤解為指針變量。盡管將x和y分行定義能夠幸免誤解,但并不是人人都情愿如此做。【規(guī)則2-4-1】應(yīng)當(dāng)將修飾符*和&例如:char*name;int*x,y;//此處y可不能被誤解為指針2.5注釋C語(yǔ)言的注釋符為“/*…*/”。盡管注釋有助于理解代碼,但注意不可過(guò)多地使用注釋?!疽?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釋?zhuān)阌陂喿x。 命名規(guī)則3.1共性規(guī)則本節(jié)論述的共性規(guī)則是被大多數(shù)程序員采納的,我們應(yīng)當(dāng)在遵循這些共性規(guī)則的前提下,再擴(kuò)充特定的規(guī)則?!疽?guī)則3-1-1】標(biāo)識(shí)符應(yīng)當(dāng)直觀且能夠拼讀,可望文知意,不必進(jìn)行“解碼”。標(biāo)識(shí)符最好采納英文單詞或其組合,便于經(jīng)歷和閱讀。切忌使用漢語(yǔ)拼音來(lái)命名。程序中的英文單詞一般可不能太復(fù)雜,用詞應(yīng)當(dāng)準(zhǔn)確。例如不要把CurrentValue寫(xiě)成NowValue。【規(guī)則3-1-2】標(biāo)識(shí)符的長(zhǎng)度應(yīng)當(dāng)符合“min-length&&max-information”原則。幾十年前老ANSIC規(guī)定名字不準(zhǔn)超過(guò)6個(gè)字符,現(xiàn)今的C不再有此限制。一般來(lái)講,長(zhǎng)名字能更好地表達(dá)含義,因此函數(shù)名、變量名、類(lèi)名長(zhǎng)達(dá)十幾個(gè)字符不足為怪。那么名字是否越長(zhǎng)約好?不見(jiàn)得!例如變量名maxval就比maxValueUntilOverflow好用。單字符的名字也是有用的,常見(jiàn)的如i,j,k,m,n,x,y,z等,它們通常可用作函數(shù)內(nèi)的局部變量?!疽?guī)則3-1-3】命名規(guī)則盡量與所采納的操作系統(tǒng)或開(kāi)發(fā)工具的風(fēng)格保持一致。例如Windows應(yīng)用程序的標(biāo)識(shí)符通常采納“大小寫(xiě)”混排的方式,如AddChild。而Unix應(yīng)用程序的標(biāo)識(shí)符通常采納“小寫(xiě)加下劃線”的方式,如add_child。不把這兩類(lèi)風(fēng)格混在一起用?!疽?guī)則3-1-4】程序中不要出現(xiàn)僅靠大小寫(xiě)區(qū)分的相似的標(biāo)識(shí)符。例如:intx,X;//變量x與X容易混淆voidfoo(intx);//函數(shù)foo與FOO容易混淆voidFOO(floatx);【規(guī)則3-1-5】程序中不要出現(xiàn)標(biāo)識(shí)符完全相同的局部變量和全局變量,盡管兩者的作用域不同而可不能發(fā)生語(yǔ)法錯(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)賓詞組)。類(lèi)的成員函數(shù)應(yīng)當(dāng)只使用“動(dòng)詞”,被省略掉的名詞確實(shí)是對(duì)象本身。例如:DrawBox();//全局函數(shù)box->Draw();//類(lèi)的成員函數(shù)【規(guī)則3-1-8】用正確的反義詞組命名具有互斥意義的變量或相反動(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)生無(wú)意義的名字(因?yàn)橛脭?shù)字編號(hào)最省事)。函數(shù)設(shè)計(jì)函數(shù)是C++/C程序的差不多功能單元,函數(shù)接口的兩個(gè)要素是參數(shù)和返回值。。C語(yǔ)言中,函數(shù)的參數(shù)和返回值的傳遞方式有兩種:值傳遞(passbyvalue)和指針傳遞(passbypointer)表達(dá)式和差不多語(yǔ)句4.1參數(shù)的規(guī)則【規(guī)則4-1-1假如函數(shù)沒(méi)有參數(shù),則用void填充。例如:voidSetValue(intwidth,intheight);//良好的風(fēng)格voidSetValue(int,int);//不良的風(fēng)格floatGetValue(void);//良好的風(fēng)格floatGetValue();//不良的風(fēng)格【規(guī)則4-1-2例如編寫(xiě)字符串拷貝函數(shù)StringCopy,它有兩個(gè)參數(shù)。假如把參數(shù)名字起為str1和str2,例如voidStringCopy(char*str1,char*str2);那么我們專(zhuān)門(mén)難搞清晰究竟是把str1拷貝到str2中,依舊剛好倒過(guò)來(lái)。能夠把參數(shù)名字起得更有意義,如叫strSource和strDestination。如此從名字上就能夠看出應(yīng)該把strSource拷貝到strDestination。還有一個(gè)問(wèn)題,這兩個(gè)參數(shù)那一個(gè)該在前那一個(gè)該在后?參數(shù)的順序要遵循程序員的適應(yīng)。一般地,應(yīng)將目的參數(shù)放在前面,源參數(shù)放在后面。假如將函數(shù)聲明為:voidStringCopy(char*strSource,char*strDestination);不人在使用時(shí)可能會(huì)不假思索地寫(xiě)成如下形式:charstr[20];StringCopy(str,“HelloWorld”);//參數(shù)順序顛倒【規(guī)則4-1-3】假如參數(shù)是指針,且僅作輸入用,則應(yīng)在類(lèi)型前加const指針在函數(shù)體內(nèi)被意外修改。例如voidStringCopy(char*strDestination,constchar*strSource);【規(guī)則4-1-4】假如輸入?yún)?shù)以值傳遞的方式傳遞對(duì)象,則宜改用“const&”來(lái)傳遞,如此能夠省去臨時(shí)對(duì)象的構(gòu)造和析構(gòu)過(guò)程,從而提高效率。【建議4-1-5】幸免函數(shù)有太多的參數(shù),參數(shù)個(gè)數(shù)盡量操縱在多,在使用時(shí)容易將參數(shù)類(lèi)型或順序搞錯(cuò)?!窘ㄗh4-1-C標(biāo)準(zhǔn)庫(kù)函數(shù)printf是采納不確定參數(shù)的典型代表,其原型為:intprintf(constchat*format[,argument]?);這種風(fēng)格的函數(shù)在編譯時(shí)喪失了嚴(yán)格的類(lèi)型安全檢查。4.2返回值的規(guī)則【規(guī)則4-2-1C語(yǔ)言中,凡不加類(lèi)型講明的函數(shù),一律自動(dòng)按整型處理。如此做可不能有什么好處,卻容易被誤解為void類(lèi)型。C++語(yǔ)言有專(zhuān)門(mén)嚴(yán)格的類(lèi)型安全檢查,不同意上述情況發(fā)生。由于C++程序能夠調(diào)用C函數(shù),為了幸免混亂,規(guī)定任何C++/C函數(shù)都必須有類(lèi)型。假如函數(shù)沒(méi)有返回值,那么應(yīng)聲明為void類(lèi)型?!疽?guī)則4-2-2違反這條規(guī)則的典型代表是C標(biāo)準(zhǔn)庫(kù)函數(shù)getchar。例如:charc;c=getchar();if(c==EOF)?按照getchar名字的意思,將變量c聲明為char類(lèi)型是專(zhuān)門(mén)自然的情況。但不幸的是getchar的確不是char類(lèi)型,而是int類(lèi)型,其原型如下:intgetchar(void);由于c是char類(lèi)型,取值范圍是[-128,127],假如宏EOF的值在char的取值范圍之外,那么if語(yǔ)句將總是失敗,這種“危險(xiǎn)”人們一般哪里料得到!導(dǎo)致本例錯(cuò)誤的責(zé)任并不在用戶,是函數(shù)getchar誤導(dǎo)了使用者?!疽?guī)則4-2-3錯(cuò)誤標(biāo)志用return語(yǔ)句返回。回憶上例,C標(biāo)準(zhǔn)庫(kù)函數(shù)的設(shè)計(jì)者什么緣故要將getchar聲明為令人迷糊的int類(lèi)型呢?他會(huì)那么傻嗎?在正常情況下,getchar的確返回單個(gè)字符。但假如getchar碰到文件結(jié)束標(biāo)志或發(fā)生讀錯(cuò)誤,它必須返回一個(gè)標(biāo)志EOF。為了區(qū)不于正常的字符,只好將EOF定義為負(fù)數(shù)(通常為負(fù)1)。因此函數(shù)getchar就成了int類(lèi)型。我們?cè)趯?shí)際工作中,經(jīng)常會(huì)碰到上述令人為難的問(wèn)題。為了幸免出現(xiàn)誤解,我們應(yīng)該將正常值和錯(cuò)誤標(biāo)志分開(kāi)。即:正常值用輸出參數(shù)獲得,而錯(cuò)誤標(biāo)志用return語(yǔ)句返回。函數(shù)getchar能夠改寫(xiě)成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í)函數(shù)的返回值又是strDest。如此做并非多此一舉,能夠獲得如下靈活性:charstr[20];intlength=strlen(strcpy(str,“HelloWorld”));4.3函數(shù)內(nèi)部實(shí)現(xiàn)的規(guī)則不同功能的函數(shù)其內(nèi)部實(shí)現(xiàn)各不相同,看起來(lái)大概無(wú)法就“內(nèi)部實(shí)現(xiàn)”達(dá)成一致的觀點(diǎn)。但依照經(jīng)驗(yàn),我們能夠在函數(shù)體的“入口處”和“出口處”從嚴(yán)把關(guān),從而提高函數(shù)的質(zhì)量?!疽?guī)則4-3-1】在函數(shù)體的“入口處”專(zhuān)門(mén)多程序錯(cuò)誤是由非法參數(shù)引起的,我們應(yīng)該充分理解并正確使用“斷言”(assert)來(lái)防止此類(lèi)錯(cuò)誤?!疽?guī)則4-3-2】在函數(shù)體的“出口處”,對(duì)return假如函數(shù)有返回值,那么函數(shù)的“出口處”是return語(yǔ)句。我們不要輕視r(shí)eturn語(yǔ)句。假如return語(yǔ)句寫(xiě)得不行,函數(shù)要么出錯(cuò),要么效率低下。注意事項(xiàng)如下:(1)return語(yǔ)句不可返回指向“棧內(nèi)存”的“指針”,因?yàn)樵搩?nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷(xiāo)毀。例如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ù)帶有“經(jīng)歷”帶有“經(jīng)歷”功能的函數(shù),其行為可能是不可預(yù)測(cè)的,因?yàn)樗男袨榭赡苋Q于某種“經(jīng)歷狀態(tài)”。如此的函數(shù)既不易理解又不利于測(cè)試和維護(hù)。在C語(yǔ)言中,函數(shù)的static局部變量是函數(shù)的“經(jīng)歷”存儲(chǔ)器。建議盡量少用static局部變量,除非必需?!窘ㄗh4-4-4的變量的有效性,例如全局變量、文件句柄等?!窘ㄗh4-4-5情況。4.5使用斷言程序一般分為Debug版本和Release版本,Debug版本用于內(nèi)部調(diào)試,Release版本發(fā)行給用戶使用。斷言assert是僅在Debug版本起作用的宏,它用于檢查“不應(yīng)該”發(fā)生的情況。示例4-5是一個(gè)內(nèi)存復(fù)制函數(shù)。在運(yùn)行過(guò)程中,假如assert的參數(shù)為假,那么程序就會(huì)中止(一般地還會(huì)出現(xiàn)提示對(duì)話,講明在什么地點(diǎn)引發(fā)了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不是一個(gè)倉(cāng)促拼湊起來(lái)的宏。為了不在程序的Debug版本和Release版本引起差不,assert不應(yīng)該產(chǎn)生任何副作用。因此assert不是函數(shù),而是宏。程序員能夠把a(bǔ)ssert看成一個(gè)在任何系統(tǒng)狀態(tài)下都能夠安全使用的無(wú)害測(cè)試手段。假如程序在assert處終止了,并不是講含有該assert的函數(shù)有錯(cuò)誤,而是調(diào)用者出了差錯(cuò),assert能夠幫助我們找到發(fā)生錯(cuò)誤的緣故。專(zhuān)門(mén)少有比跟蹤到程序的斷言,卻不明白該斷言的作用更讓人沮喪的事了。你化了專(zhuān)門(mén)多時(shí)刻,不是為了排除錯(cuò)誤,而只是為了弄清晰那個(gè)錯(cuò)誤到底是什么。有的時(shí)候,程序員間或還會(huì)設(shè)計(jì)出有錯(cuò)誤的斷言。因此假如搞不清晰斷言檢查的是什么,就專(zhuān)門(mén)難推斷錯(cuò)誤是出現(xiàn)在程序中,依舊出現(xiàn)在斷言中。幸運(yùn)的是那個(gè)問(wèn)題專(zhuān)門(mén)好解決,只要加上清晰的注釋即可。這本是顯而易見(jiàn)的情況,但是專(zhuān)門(mén)少有程序員如此做。這好比一個(gè)人在森林里,看到樹(shù)上釘著一塊“危險(xiǎn)”的大牌子。但危險(xiǎn)到底是什么?樹(shù)要倒?有廢井?有野獸?除非告訴人們“危險(xiǎn)”是什么,否則那個(gè)警告牌難以起到積極有效的作用。難以理解的斷言常常被程序員忽略,甚至被刪除?!疽?guī)則4-5-1之間的區(qū)不,后者是必定存在的同時(shí)是一定要作出處理的?!疽?guī)則4-5-2【建議4-5-3】在編寫(xiě)函數(shù)時(shí),要進(jìn)行反復(fù)的考查,同時(shí)自問(wèn):“一旦確定了的假定,就要使用斷言對(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)行速度,空間效率是指程序占用內(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)?shù)恼壑?。例如多花費(fèi)一些內(nèi)存來(lái)提高性能?!疽?guī)則5-5.2一些有益的建議【建議5-我們經(jīng)常會(huì)把“==”誤寫(xiě)成“=”,象“||”、“&&”、“<=”、“>=”這類(lèi)符號(hào)也專(zhuān)門(mén)容易發(fā)生“丟1”失誤。然而編譯器卻不一定能自動(dòng)指出這類(lèi)錯(cuò)誤。【建議5-未被初始化的變量當(dāng)成右值使用?!窘ㄗh5-【建議5-們明白發(fā)生了什么事),幸免讓編譯器輕悄悄地進(jìn)行隱式的數(shù)據(jù)類(lèi)型轉(zhuǎn)換?!窘ㄗh5-【建議5-【建議5-2-7【建議5-【建議5-【建議5-代碼,應(yīng)當(dāng)重新編寫(xiě)?!窘ㄗh5-2-11】盡量使用標(biāo)準(zhǔn)庫(kù)函數(shù),不要“【建議5-【建議5-【建議5-2-14】假如可能的話,使用PC-Lint2.有的學(xué)生總是問(wèn)老師“我應(yīng)該掌握什么程序設(shè)計(jì)語(yǔ)言更好?”你認(rèn)為該如何回答那個(gè)問(wèn)題?答:首先必須掌握C語(yǔ)言,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,各有各的優(yōu)勢(shì),看你想往哪方面用了,假如是服務(wù)器端的應(yīng)用最好是java,跨平臺(tái)性好;假如是,一般的桌面應(yīng)用,C#是較好的選擇;至于易上手程度,VB,Delp
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)議參與人員選拔與邀請(qǐng)制度
- 公共交通服務(wù)質(zhì)量評(píng)估制度
- 養(yǎng)老院活動(dòng)組織與安排制度
- 2026年清遠(yuǎn)市第三中學(xué)招聘臨聘校醫(yī)的備考題庫(kù)及一套完整答案詳解
- 2026年洛陽(yáng)鐵路備考題庫(kù)工程學(xué)校公開(kāi)招聘工作人員備考題庫(kù)及一套完整答案詳解
- 2026年邵東市中醫(yī)醫(yī)院編外合同制專(zhuān)業(yè)技術(shù)人員招聘38人備考題庫(kù)及參考答案詳解1套
- 公共交通智能調(diào)度管理制度
- 安義縣工投商業(yè)管理有限公司2025年第四批招聘?jìng)淇碱}庫(kù)帶答案詳解
- 商城賣(mài)貨類(lèi)小程序開(kāi)發(fā)TOP5:庫(kù)存管理+物流對(duì)接的專(zhuān)業(yè)廠商
- 企業(yè)調(diào)休制度
- 財(cái)務(wù)固定資產(chǎn)培訓(xùn)課程
- 正常分娩期婦女的護(hù)理
- 2025年血站護(hù)士招聘考試題庫(kù)
- 嗜鉻細(xì)胞瘤副神經(jīng)節(jié)瘤診療指南(2025年版)
- 中國(guó)環(huán)烷基潤(rùn)滑油行業(yè)市場(chǎng)調(diào)查報(bào)告
- DB5101∕T 213-2025 公園城市濱水綠地鳥(niǎo)類(lèi)棲息地植物景觀營(yíng)建指南
- 胃淋巴瘤的超聲內(nèi)鏡診斷與治療
- 產(chǎn)線協(xié)同管理制度
- 2025既有建筑改造利用消防設(shè)計(jì)審查指南
- 籃球場(chǎng)工程施工設(shè)計(jì)方案
- (市質(zhì)檢二檢)福州市2024-2025學(xué)年高三年級(jí)第二次質(zhì)量檢測(cè) 歷史試卷(含答案)
評(píng)論
0/150
提交評(píng)論