軟件工程概論1_第1頁
軟件工程概論1_第2頁
軟件工程概論1_第3頁
軟件工程概論1_第4頁
軟件工程概論1_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

45-。第1章軟件與軟件工程的概念1.軟件的概念?軟件是計算機(jī)系統(tǒng)中與硬件相互依存的另一局部,軟件包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。2.軟件的特性?(1)形態(tài)特性(2)智力特性(3)開發(fā)特性(4)質(zhì)量特性(5)生產(chǎn)特性(6)管理特性(7)環(huán)境特性(8)維護(hù)特性(9)廢棄特性(10)應(yīng)用特性。3.按照軟件作用,一般可以將軟件做如下分類?(1)系統(tǒng)軟件(2)應(yīng)用軟件(3)支撐軟件(4)可復(fù)用軟件。4.什么是軟件危機(jī)?主要表現(xiàn)在哪些方面?軟件開發(fā)技術(shù)的進(jìn)步未能滿足開展的要求。在軟件開發(fā)中遇到的問題找不到解決的方法,問題積累起來,形態(tài)鋒利的矛盾,導(dǎo)致了軟件危機(jī)。表現(xiàn)方面:(1)用戶對開發(fā)出的軟件很難滿意(2)軟件產(chǎn)品的質(zhì)量往往靠不住(3)一般軟件很難維護(hù)(4)軟件生產(chǎn)效率很低(5)軟件開發(fā)本錢越來越大。(6)軟件本錢與開發(fā)進(jìn)度難以估計(7)軟件技術(shù)的開展遠(yuǎn)遠(yuǎn)滿足不了計算機(jī)應(yīng)用的普及與深入的需要。5.除了軟件本身的特點(diǎn),軟件危機(jī)發(fā)生的原因主要有以下幾個方面?(1)缺乏軟件開發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開發(fā)數(shù)據(jù)的積累(2)軟件人員與用戶的交流存在障礙(3)軟件開發(fā)過程不標(biāo)準(zhǔn)(4)隨著軟件規(guī)模的增大,其復(fù)雜性會呈指數(shù)級升高(5)缺少有效的軟件評測手段,提交用戶的軟件質(zhì)量差。6.什么是軟件工程?它目標(biāo)和內(nèi)容是什么?軟件工程:就是用科學(xué)的知識工程和技術(shù)原理來定義,開發(fā),維護(hù)軟件的一門學(xué)科。目標(biāo):付出較低開發(fā)本錢;到達(dá)要求的功能;取得較好的性能;開發(fā)的軟件易于移植;只需較低的維護(hù)費(fèi)用;能按時完成開發(fā)任務(wù),及時交付使用;開發(fā)的軟件可靠性高。內(nèi)容:研究內(nèi)容包括開發(fā)技術(shù)和開發(fā)管理兩個方面。開發(fā)技術(shù)主要研究:軟件開發(fā)方法,開發(fā)過程,開發(fā)工具和環(huán)境。開發(fā)管理主要研究:軟件管理學(xué),軟件經(jīng)濟(jì)學(xué),軟件心理學(xué)。7.概括地說,軟件生存期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)三個時期組成,每個時期又可劃分為假設(shè)干個階段(1)定義時期的主要任務(wù)是解決“做什么〞的問題。它通常又被分為三個階段,問題定義、可行性研究和需求分析(2)開發(fā)時期的主要任務(wù)是解決“如何做〞的問題。通常由概要設(shè)計、詳細(xì)設(shè)計、編碼和測試四個階段組成(3)維護(hù)時期的主要任務(wù)是使軟件持久地滿足用戶的需要。通常有四類維護(hù)活動:改正性維護(hù),也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護(hù),即修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使它更完善;預(yù)防性維護(hù),即修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備。8.什么是軟件生存周期模型?有哪些主要模型?生存周期模型:描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。對軟件開發(fā)提供強(qiáng)有力的支持,為開發(fā)過程中的活動提供統(tǒng)一的政策保證,為參與開發(fā)的人員提供幫助和指導(dǎo),是軟件生存周期模型化技術(shù)的根底,也是建立軟件開發(fā)環(huán)境的核心。主要有:瀑布模型,增量模型,螺旋模型,噴泉模型,基于知識的模型,變換模型。9.什么是軟件生存周期?它有哪幾個活動?軟件生存周期:一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。包括:可行性分析和工程開發(fā)方案,需求分析,概要設(shè)計,詳細(xì)設(shè)計,編碼,測試,維護(hù)。10.瀑布模型的特點(diǎn)如下?(1)階段具有順序性和依賴性(2)推遲實(shí)現(xiàn)的觀點(diǎn)(3)質(zhì)量保證的觀點(diǎn)。11.瀑布模型的優(yōu)點(diǎn)是?(1)可強(qiáng)迫開發(fā)人員采用標(biāo)準(zhǔn)化的方法(2)嚴(yán)格地規(guī)定了每個階段必須提交的文檔(3)要求每個階段交出的所有產(chǎn)品都必須是經(jīng)過驗(yàn)證的。12.瀑布模型的缺點(diǎn)是?(1)由于瀑布模型幾乎完全依賴于書面的規(guī)格說明,很可能導(dǎo)致最終開發(fā)出的軟件產(chǎn)品不能真正滿足用戶的需要(2)瀑布模型只用于開始時需求已確定的情況。13.快速原型模型的優(yōu)點(diǎn)是?

(1)有助于滿足用戶真實(shí)需求(2)原型系統(tǒng)已經(jīng)通過與用戶的交互而得到驗(yàn)證,據(jù)此產(chǎn)生的規(guī)格說明文檔能夠正確地描述用戶需求(3)軟件產(chǎn)品的開發(fā)根本上是按線性順序進(jìn)行(4)因?yàn)橐?guī)格說明文檔正確地描述了用戶需求(5)開發(fā)人員通過建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西(6)快速原型的本質(zhì)是“快速〞。14.增量模型的優(yōu)點(diǎn)是?

(1)能夠在較短的時間內(nèi)向用戶提交一些有用的工作產(chǎn)品(2)逐步增加產(chǎn)品的功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品(3)工程失敗的風(fēng)險較低(4)優(yōu)先級最高的效勞首先交付,然后再將其他增量構(gòu)件逐次集成進(jìn)來。15.螺旋模型的優(yōu)點(diǎn)是?

(1)對可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)一個重要目標(biāo)(2)減少了過多測試或測試缺乏所帶來的風(fēng)險(3)在螺旋模型中,維護(hù)只是模型的另一個周期。16.螺旋模型的缺點(diǎn)是:?螺旋模型是風(fēng)險驅(qū)動的,因此要求軟件開發(fā)人員必須具有豐富的風(fēng)險評估經(jīng)驗(yàn)和這方面的專門知識,否那么將出現(xiàn)真正的風(fēng)險:當(dāng)工程實(shí)際上正在走向?yàn)?zāi)難時,開發(fā)人員可能還以為一切正常。17.螺旋線上的每個循環(huán)可劃分為四個象限,分別表達(dá)了四個方面的活動?(1)目標(biāo)設(shè)定—定義在該階段的目標(biāo),弄清對過程和產(chǎn)品的限制條件,制定詳細(xì)的管理方案,識別工程風(fēng)險,可能還要方案與這些風(fēng)險有關(guān)的對策(2)風(fēng)險會計與弱化—針對每個風(fēng)險進(jìn)行詳細(xì)分析,設(shè)想弱化風(fēng)險的步驟(3)開發(fā)與驗(yàn)證—評價風(fēng)險之后選擇系統(tǒng)開發(fā)模型(4)方案—評價開發(fā)工作,確定是否繼續(xù)進(jìn)行螺旋線的下一個的循環(huán)。18在統(tǒng)一過程中有5個核心工作流,即需求、分析、設(shè)計、實(shí)現(xiàn)和測試工作流;統(tǒng)一過程有4個階段,分別是初始階段、細(xì)化、構(gòu)造階段和移交階段。19.SWEBOK指南的目標(biāo)是?(1)促使軟件工程本體知識成為世界范圍的知識(2)澄清軟件工程與其他相關(guān)學(xué)科(3)反映軟件工程學(xué)科內(nèi)容的特征(4)確定軟件工程本體知識的各個專題(5)為相應(yīng)的課程和職業(yè)資格認(rèn)證材料的編寫奠定根底。20.軟件工程知識體系指南的內(nèi)容?SWEBOK指南將軟件工程知識體系劃分為10個知識域,分為兩類過程。一類是開發(fā)與維護(hù)過程,包括軟件需求、軟件設(shè)計、軟件構(gòu)造、軟件測試和軟件維護(hù);另一類是支持和組織過程,包括軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具與方法、軟件質(zhì)量。21.軟件產(chǎn)品的特性是什么?⑴是一種邏輯產(chǎn)品,與物質(zhì)產(chǎn)品有很大的區(qū)別⑵軟件產(chǎn)品的生產(chǎn)主要是研制,生產(chǎn)本錢主要在開發(fā)和研制,開發(fā)研制完成后,通過復(fù)制就產(chǎn)生了大量軟件產(chǎn)品⑶軟件產(chǎn)品不會用壞,不存在磨損,消耗⑷生產(chǎn)主要是腦力勞動,還末完全擺脫手工開發(fā)方式,大局部產(chǎn)品是"定做"的⑸開發(fā)軟件的費(fèi)用不斷增加,致使生產(chǎn)本錢相當(dāng)昂貴。22.軟件生產(chǎn)有幾個階段?各有何特征?⑴程序設(shè)計時代:這個階段生產(chǎn)方式是個體勞動,使用的生產(chǎn)工具是機(jī)器語言,匯編語言⑵程序系統(tǒng)時代:這個階段生產(chǎn)方式是小集團(tuán)合作生產(chǎn),使用的生產(chǎn)工具是高級語言,開發(fā)方法仍依靠個人技巧,但開始提出結(jié)構(gòu)化方法⑶軟件工程時代:這個階段生產(chǎn)方式是工程化的生產(chǎn),使用數(shù)據(jù)庫﹑開發(fā)工具﹑開發(fā)環(huán)境﹑網(wǎng)絡(luò)﹑分布式﹑面向?qū)ο蠹夹g(shù)來開發(fā)軟件。23.軟件工程面臨的問題是什么?軟件工程需要解決的問題:軟件的費(fèi)用,可靠性,可維護(hù)性,軟件生產(chǎn)率和軟件的重用。24.什么是使用早已軟件開發(fā)方法?有哪些主要方法?定義好的技術(shù)集及符號表示習(xí)慣來組織軟件生產(chǎn)的過程。通過使用成功的軟件開發(fā)方法,在規(guī)定的投資和時間內(nèi),開發(fā)出符合用戶需求的高質(zhì)量的軟件。主要有:結(jié)構(gòu)化方法,JACKSON方法,維也納開發(fā)方法﹙VDM﹚,面向?qū)ο箝_發(fā)方法。25.快速原型的分類、特點(diǎn)及使用策略?分類:探索型、實(shí)驗(yàn)型、進(jìn)化型特點(diǎn):盡快向用戶提供一個可在計算機(jī)上運(yùn)行的目標(biāo)系統(tǒng)的模型,以便使用戶和開發(fā)者在目標(biāo)系統(tǒng)應(yīng)該“做什么〞這個問題上盡可能快地達(dá)成共識。使用策略:廢棄策略和追加策略。26.軟件工程的目標(biāo)?付出較低開發(fā)本錢;到達(dá)要求的功能;取得較好的性能;開發(fā)的軟件易于移植;只需較低的維護(hù)費(fèi)用;能按時完成開發(fā)任務(wù),及時交付使用;開發(fā)的軟件可靠性高。第2章軟件工程方法與工具1.軟件工程的三種要素是什么?各自作用是什么?軟件工程方法學(xué)包含3個要素:方法、工具和過程。(1)軟件工程方法〔method〕為建造軟件提供技術(shù)上的解決方法(2)工具為方法的運(yùn)用提供自動的或半自動的軟件支撐環(huán)境(3)過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。2.形式化方法的主要特點(diǎn)是?(1)軟件需求規(guī)格說明被細(xì)化為用數(shù)學(xué)記號表達(dá)的詳細(xì)的形式化規(guī)格說明(2)設(shè)計、實(shí)現(xiàn)和單元測試等開發(fā)過程由一個變換開發(fā)過程代替。3.類是具有相同操作功能和相同的數(shù)據(jù)格式的對象的集合與抽象。4.封裝是利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起。5.消息是一個對象向另一個對象傳遞的信息,有4類消息?(1)發(fā)送對象請求接收對象效勞(2)發(fā)送對象激活接收對象(3)發(fā)送對象詢問接收對象(4)發(fā)送對象僅傳送信息給接收對象。6.面向?qū)ο蟮能浖_發(fā)方法?(1)Booth方法(2)Rumbaugh方法(3)Coad和Yourdon方法(4)Jackbson方法(5)Wirfs-Brock方法。7.UML的特點(diǎn)?(1)統(tǒng)一標(biāo)準(zhǔn)(2)面向?qū)ο?3)可視化,表達(dá)能力強(qiáng)大(4)獨(dú)立于過程(5)容易掌握使用(6)與編程語言的關(guān)系。8.軟件工具的概念?軟件工具是指能支持軟件生存周期中某一階段的需要而使用的軟件工具。9.軟件工具的分類?軟件工具按軟件過程的活動來進(jìn)行分類:(1)支持軟件開發(fā)過程的工具。主要有需求分析工具、設(shè)計工具、編碼工具、排錯工具、測試工具等(2)支持軟件維護(hù)過程的工具。主要有版本工具、文檔分析工具、信息庫開發(fā)工具、逆向工程工具、再工程工具等(3)支持軟件管理過程和支持的工具,主要有工程管理工具、配置管理工具、軟件評價工具等。10.軟件開發(fā)過程中的常用軟件工具有哪些?(1)需求分析工具〔按所采用的系統(tǒng)開發(fā)方法,分為:結(jié)構(gòu)化圖形工具箱,面向?qū)ο竽P突ぞ呒胺治龉ぞ摺?2)設(shè)計工具〔對應(yīng)于概要設(shè)計活動和詳細(xì)設(shè)計活動,分為概要設(shè)計工具和詳細(xì)設(shè)計工具〕(3)編碼工具與排錯工具(4)測試工具〔分為程序單元測試工具、組裝測試工具和系統(tǒng)測試工具〕。11.Rose的特點(diǎn)?(1)Rose支持三層結(jié)構(gòu)方案(2)Rose產(chǎn)品為大型軟件工程提供了可塑性和柔韌性極強(qiáng)的解決方案(3)ROSE支持UML、OOSE及OMT(4)支持大型復(fù)雜工程(5)與多種開發(fā)環(huán)境無縫集成。12.Rose的系統(tǒng)主菜單窗口分為7個區(qū)域?系統(tǒng)主菜單、標(biāo)準(zhǔn)工具欄、圖形工具欄、瀏覽器窗口、文檔窗口、應(yīng)用窗口和日志窗口。13.可行性研究有哪些步驟?⑴確定工程規(guī)模和目標(biāo);⑵研究正在運(yùn)行的系統(tǒng)⑶建立新系統(tǒng)的高層邏輯模型⑷導(dǎo)出和評價各種方案⑸推薦可行方案⑹編寫可行性研究報告。14.可行性研究過程包括哪些?(1)復(fù)查系統(tǒng)規(guī)模和目標(biāo)(2)研究目前正在使用的系統(tǒng)(3)導(dǎo)出新系統(tǒng)的高層邏輯模型(4)進(jìn)一步定義問題(5)導(dǎo)出和評價供選擇的解法(6)推薦行動方針(7)草擬開發(fā)方案(8)書寫文檔提交審查。第3章軟件需求獲取與結(jié)構(gòu)化分析方法1.需求獲取的任務(wù)?(1)發(fā)現(xiàn)和分析問題,并分析問題的原因/結(jié)果關(guān)系(2)與用戶進(jìn)行各種方式的交流,并使用調(diào)查研究方法收集信息(3)按照三個成分即數(shù)據(jù)、過程和接口觀察問題的不同側(cè)面(4)將獲取的需求文檔化,形式有用例、決策表、決策樹等。2.需求獲取的過程?(1)開發(fā)高層的業(yè)務(wù)模型(2)定義工程范圍和高層需求(3)識別用戶類和用戶代表(4)獲取具體的需求(5)確定目標(biāo)系統(tǒng)的業(yè)務(wù)工作流(6)需求整理與總結(jié)3.需求獲取應(yīng)遵循的原那么?(1)深入淺出的原那么(2)以流程為主線的原那么。4.具體需求的來源來自以下幾種途徑?(1)與用戶進(jìn)行交流(2)現(xiàn)有產(chǎn)品或競爭產(chǎn)品的描述文檔(3)系統(tǒng)需求規(guī)格說明(4)當(dāng)前系統(tǒng)的問題報告和改進(jìn)要求(5)市場調(diào)查和用戶問卷調(diào)查(6)觀察用戶如何工作。5.什么是數(shù)據(jù)流圖?其作用是什么?數(shù)據(jù)流圖〔DFD〕:以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動和處理的邏輯過程。只反映系統(tǒng)必須完成的邏輯功能,是一種功能模型。6.建立決策表的步驟如下?(1)列出與一個具體過程有關(guān)的所有處理(2)列出過程執(zhí)行期間的所有條件(3)將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合(4)將右部每一縱列規(guī)定為一個處理規(guī)那么相匹配,即對于某一條件取值組合將有什么動作。7.SRS和DRD的質(zhì)量要求?要編制一份好的SRS(軟件需求規(guī)格說明)和DRD(數(shù)據(jù)需求說明),必須使其具有完整性、無歧義性、一致性、可驗(yàn)證性、可修改性、可追蹤性等特性。8.在需求評審實(shí)施過程中可能會遇到的風(fēng)險包括?(1)需求評審的參與者選取不當(dāng)(2)評審規(guī)模過大(3)評審組規(guī)模過大(4)評審時間過長。9.什么是數(shù)據(jù)字典?作用是什么?共有哪些條目?數(shù)據(jù)字典〔DD〕用來定義數(shù)據(jù)庫流圖中的各個成分的具體含義。有以下四類條目:數(shù)據(jù)流,數(shù)據(jù)項(xiàng),數(shù)據(jù)存儲,根本加工。13.什么是需求分析?需求分析階段的根本任務(wù)是什么?需求分析:開發(fā)人員準(zhǔn)確地理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的需求規(guī)格說明的過程。根本任務(wù):⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求⑵分析與綜合,導(dǎo)出軟件的邏輯模型⑶編寫文檔:包括編寫"需求規(guī)格說明書","初步用戶使用手冊","確認(rèn)測試方案","修改完善軟件開發(fā)方案"。14.什么是結(jié)構(gòu)分析方法?該方法使用什么描述工具?結(jié)構(gòu)化分析:簡稱SA,面向數(shù)據(jù)流進(jìn)行數(shù)據(jù)分析的方法。采用自頂向下逐層分解的分析策略。頂層抽象地描述整個系統(tǒng),底層具體地畫出系統(tǒng)工程的每個細(xì)節(jié)。中間層那么是從抽象到具體的過渡。使用數(shù)據(jù)流圖,數(shù)據(jù)通過哪些步驟來實(shí)現(xiàn)?字典,作為描述工具,使用結(jié)構(gòu)化語言,判定表,判定樹描述加工邏輯。15.結(jié)構(gòu)化分析方法⑴了解當(dāng)前系統(tǒng)的工作流程,獲得當(dāng)前系統(tǒng)的物理模型⑵抽象出當(dāng)前系統(tǒng)的邏輯模型⑶建立目標(biāo)系統(tǒng)的邏輯模型⑷作進(jìn)一步補(bǔ)充和優(yōu)化。16.從哪些方面驗(yàn)證軟件需求的正確性?(1)一致性所有需求必須是一致的,任何一條需求不能和其他需求互相矛盾(2)完整性需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個功能或性能(3)現(xiàn)實(shí)性指定的需求應(yīng)該是用現(xiàn)有的硬件技術(shù)和軟件技術(shù)根本上可以實(shí)現(xiàn)的。對硬件技術(shù)的進(jìn)步可以做些預(yù)測,對軟件技術(shù)的進(jìn)步那么很難做出預(yù)測,只能從現(xiàn)有技術(shù)水平出發(fā)判斷需求的現(xiàn)實(shí)性(4)有效性必須證明需求是正確有效的,確實(shí)能解決用戶面對的問題。9.對于給定的控制流圖G,按McCabe給出的環(huán)路復(fù)雜性V〔G〕的計算方法如下:(1)環(huán)路復(fù)雜性定義為控制流程圖中的區(qū)域數(shù)(2)設(shè)E為控制流圖的邊數(shù),N為圖中的結(jié)點(diǎn)數(shù),那么:V〔G〕=E-N+2(3)設(shè)P為控制圖中的判定結(jié)點(diǎn)數(shù),那么:V〔G〕=P+1。10.劃分等價類的原那么?(1)如果輸入數(shù)據(jù)規(guī)定了取值范圍或值的個數(shù),那么可以確定一個有效等價類和兩個無效等價類(2)如果規(guī)格說明規(guī)定了數(shù)據(jù)值的集合,或者是規(guī)定了“必須如何〞的條件,這時可確定一個有效等價類和一個無效等價類(3)如果規(guī)格說明書中規(guī)定的是一個條件數(shù)據(jù),那么可確定一個有效等價類和一個無效等價類(4)如果我們確知,已劃分的等價類中各元素在程序中的處理方式不同,那么應(yīng)將此等價類進(jìn)一步劃分成更小的等價類。11.等價類劃分方法選擇測試用例的原那么?(1)為每一個等價類規(guī)定一個唯一的編號(2)設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到所有的有效等價都被覆蓋為止(3)設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。12.邊界值分析方法選擇測試用例原那么?

(1)如果輸入數(shù)據(jù)規(guī)定了值的范圍,那么應(yīng)取剛到達(dá)這個范圍的邊界值,以及剛剛超越這個范圍邊界值作為測試輸入數(shù)據(jù)(2)如果輸入數(shù)據(jù)規(guī)定了值的個數(shù),那么用最大個數(shù)、最小個數(shù)、比最大個數(shù)多1、比最小個數(shù)少1的數(shù)作為測試數(shù)據(jù)(3)根據(jù)規(guī)格說明的每個輸出數(shù)據(jù),使用前面的原那么1〕(4)根據(jù)規(guī)格說明的每個輸出數(shù)據(jù),使用前面的原那么2〕(5)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,那么應(yīng)選擇集合的第一個元素的最后一個元素作為測試用例(6)如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),那么應(yīng)中選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例(7)分析規(guī)格說明,找出其他可能的邊界條件。13.在單元測試中進(jìn)行的測試工作,需要在5個方面對被測模塊進(jìn)行檢查?(1)模塊接口測試(2)局部數(shù)據(jù)結(jié)構(gòu)測試(3)路徑測試(4)錯誤處理測試(5)邊界測試。14.自頂向下的增殖方式步驟?(1)以主模塊為被測模塊兼驅(qū)動模塊,所有直屬于主模塊的下屬模塊全部用樁模塊代替,對主模塊進(jìn)行測試(2)采用深度優(yōu)先或?qū)挾葍?yōu)先的策略,逐步用實(shí)際模塊替換已用過的樁模塊,再用新的樁模塊代替它們的直接下屬模塊,與已測試的模塊或子系統(tǒng)組裝成新的子系統(tǒng)(3)進(jìn)行回歸測試,排除組裝過程中引入新的錯誤的可能(4)判斷是否所有的模塊都已組裝到系統(tǒng)中,假設(shè)是那么結(jié)束測試,否那么轉(zhuǎn)到第2步去執(zhí)行。15.自底向上增殖的步驟如下?(1)由驅(qū)動模塊控制最底層模塊的并行測試;也可以把最底層模塊組合成實(shí)現(xiàn)某一特定軟件功能的簇,由驅(qū)動模塊控制它進(jìn)行測試(2)用實(shí)際模塊代替驅(qū)動模塊,與它已測試的直屬子模塊組裝成為子系統(tǒng)(3)為子系統(tǒng)配備驅(qū)動模塊,進(jìn)行新的測(4)判斷是否已組裝到達(dá)主模塊,假設(shè)是那么結(jié)束測試,否那么執(zhí)行第2步。16.組裝測試也叫做集成測試或聯(lián)合測試;通常把模塊組裝為系統(tǒng)的方式有兩種:一次性組裝方式和增殖式組裝方式。17.下面簡單介紹三種常見的綜合的增殖測試?(1)衍變的自頂向下的增殖測試:它的根本思想是強(qiáng)化對輸入/輸出模塊和引入新算法模塊的測試,并自底向上組裝成為功能相當(dāng)完整且相對獨(dú)立的子系統(tǒng),然后由主模塊開始自頂向下進(jìn)行增殖測試(2)自底向上—自頂向下的增殖測試:它首先對含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測試,然后對含寫操作的子系統(tǒng)進(jìn)行自頂向下的組裝與測試(3)回歸測試:這種方式采用自頂向下的方式測試被修改的模塊及其子模塊,然后將這局部視為子系統(tǒng),再自底向上測試,以檢查該子系統(tǒng)與其上級模塊的接口是否適配。18.確認(rèn)測試又稱為有效性測試。它的任務(wù)是驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。在確認(rèn)測試階段需要做的工作是首先進(jìn)行有效性測試以及軟件配置復(fù)審,然后進(jìn)行驗(yàn)收測試和安裝測試,在通過了專家鑒定后,才能成為可交付的軟件。19.靜態(tài)分析中進(jìn)行人工測試的主要方法有桌面檢查、代碼評審和走查。經(jīng)驗(yàn)說明,使用這種方法能夠有效地發(fā)現(xiàn)30%~70%的邏輯設(shè)計和編碼錯誤。20.調(diào)試與測試的區(qū)別?調(diào)試也稱排錯或糾錯,它是緊跟測試之后要做的工作。但與測試不同之處在于:測試著重于發(fā)現(xiàn)軟件有錯,發(fā)現(xiàn)異?;蜍浖\(yùn)行的可疑之處;而調(diào)試的任務(wù)在于為錯誤確切地定位,找到出錯的根源,并且通過修改程序?qū)⑵渑懦?1.什么是白盒測試法?有哪些覆蓋標(biāo)準(zhǔn)?試對他們的檢錯能力進(jìn)行比較?白盒法測試法把測試對象看作一個翻開的盒子,測試人員須了解程序內(nèi)部結(jié)構(gòu)和處理過程,以檢查處理過程的細(xì)節(jié)為根底,對程序中盡可能多的邏輯路徑進(jìn)行測試,檢驗(yàn)內(nèi)部控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是否有錯,實(shí)際的運(yùn)行狀態(tài)與預(yù)期的狀態(tài)是否一致。白盒法有以下幾種覆蓋標(biāo)準(zhǔn):語句覆蓋:設(shè)計假設(shè)干個測試用例,運(yùn)行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。判定覆蓋:設(shè)計假設(shè)干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。條件覆蓋:設(shè)計假設(shè)干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。判定/條件覆蓋:設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷中的每個條件的可能取值至少執(zhí)行一次。條件組合覆蓋:設(shè)計足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。路徑覆蓋:設(shè)計足夠的測試用例,覆蓋程序中所有可能的路徑。從上到下的覆蓋標(biāo)準(zhǔn)其檢錯能力也從弱到強(qiáng),其中條件組合發(fā)現(xiàn)錯誤的能力較強(qiáng),凡滿足其標(biāo)準(zhǔn)的測試用例,也必然滿足前四種覆蓋標(biāo)準(zhǔn)。在實(shí)際邏輯測試中,一般以條件組合覆蓋為主設(shè)計測試用例,然后再補(bǔ)充局部用例來到達(dá)路徑覆蓋的測試標(biāo)準(zhǔn)。22.所謂系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個計算機(jī)系統(tǒng)的一個元素,與計算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對計算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。23.什么是黑盒測試法?采用黑盒技術(shù)測試用例有哪幾種方法?這些方法各有什么特點(diǎn)?黑盒測試法把被測試對象看成是一個黑盒子,測試人員完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只在軟件接口處進(jìn)行測試,依據(jù)需求規(guī)格說明書,檢查程序是否滿足功能要求。采用黑盒技術(shù)測試用例的方法有:等價類劃分、邊界值分析、錯誤推測和因果圖。等價類的劃分:是將輸入數(shù)據(jù)按有效的或無效的(也稱合理的或不合理的)劃分成假設(shè)干個等價類,測試每個等價類的代表值就等于對該類其他值的測試。這樣就把漫無邊跡的隨機(jī)測試改為有針對性的等價類測試,用少量有代表性的例子代替大量測試目的相同的例子,能有效地提高測試效率。但這個方法的缺點(diǎn)是沒有注意選擇某些高效的、能夠發(fā)現(xiàn)更多錯誤的測試用例。邊界值分析法:是將測試邊界情況作為重點(diǎn)目標(biāo),選取正好等于、剛剛大于和剛剛小于邊界值的測試數(shù)據(jù)。(邊界情況是指輸入等價類和輸入等價類邊界上的情況。)這種方法可以查出更多的錯誤,因?yàn)樵诔绦蛑型谔幚磉吔缜闆r時易發(fā)生錯誤。錯誤推測法:是在測試程序時,人們根據(jù)經(jīng)驗(yàn)或直覺推測程序中可能存在的錯誤,從而有針對性地編寫檢查這些錯誤的測試用例。因果圖:能夠有效地檢測輸入條件的各種組合可能會引起的錯誤。它的根本原理是通過畫因果圖,把用自然語言描述的功能說明轉(zhuǎn)換為判定表,最后為判定表的每一列設(shè)計一個測試用例。這幾種方法都不能提供一組完整的測試用例,在實(shí)際測試中應(yīng)把各種方法結(jié)合起來使用。綜合策略:就是聯(lián)合使用上述幾種測試方法,盡可能多地發(fā)現(xiàn)程序中的錯誤。24.軟件測試要經(jīng)過哪些步驟?這些測試與軟件開發(fā)各階段之間有什么關(guān)系?軟件測試要經(jīng)過的步驟是:單元測試→集成測試→確認(rèn)測試→系統(tǒng)測試。單元測試:對源程序中每一個程序單元進(jìn)行測試,檢查各個模塊是否正確實(shí)現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細(xì)設(shè)計文檔。集成測試:是為了檢查與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的有關(guān)問題,也就是檢查概要設(shè)計是否合理有效。確認(rèn)測試:主要是檢查已實(shí)現(xiàn)的軟件是否滿足需求規(guī)格說明書中確定了的各種需求。系統(tǒng)測試:是把已確認(rèn)的軟件與其他系統(tǒng)元素(如硬件、其他支持軟件、數(shù)據(jù)、人工等)結(jié)合在一起進(jìn)行測試。以確定軟件是否可以支付使用。25.調(diào)試的目的是什么?調(diào)試有哪些技術(shù)手段?調(diào)試那么是在進(jìn)行了成功的測試之后才開始的工作。調(diào)試的目的是確定錯誤的原因和位置,并改正錯誤,因此調(diào)試也稱為糾錯(Debug)。調(diào)試的技術(shù)手段有簡單的調(diào)試方法、歸納法、演繹法和回溯法等。第7章統(tǒng)一建模語言UML概述1.統(tǒng)一建模語言UML由事物、關(guān)系和圖組成。2.事物是對模型中最具代表性成分的抽象,在UML中,可以分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。(1)結(jié)構(gòu)事物是UML模型的靜態(tài)局部,主要用來描述概念的或物理的元素,包括類、主動類、接口、對象、用例、參與者、協(xié)作、構(gòu)件和節(jié)點(diǎn)等(2)行為事物是UML模型的動態(tài)局部,包括以下兩類:①交互—交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對象之間傳遞的消息組成②狀態(tài)機(jī)—描述了一個對象或一個交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,單個類或者一組類之間協(xié)作的行為都可憐用狀態(tài)機(jī)來描述(3)分組事物是UML模型的組織局部,它的作用是為了降低模型復(fù)雜性(4)注釋事物是UML模型的解釋局部,它們用來描述和標(biāo)注模型的任何元素。3.交互涉及的元素包括消息、動作序列和鏈。4.消息可以分為同步消息、異步消息和簡單消息等類型。5.在UML中,常見的關(guān)系有依賴、關(guān)聯(lián)、泛化和實(shí)現(xiàn)4種,還有聚合、復(fù)合等關(guān)系。(1)依賴是兩個事物之間的語義關(guān)系,其中一個事物發(fā)生變化會影響到另一個事物的語義,它用一個虛線箭頭表示(2)關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了兩個或多個實(shí)例之間的連接關(guān)系,是一種特殊的依賴(3)泛化關(guān)系就是一般類和特殊類之間的繼承關(guān)系(4)實(shí)現(xiàn)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間語義關(guān)系,通常在以下兩種情況出現(xiàn)實(shí)現(xiàn)關(guān)系:①接口和實(shí)現(xiàn)它們的類或構(gòu)件之間②用例和實(shí)現(xiàn)它們的協(xié)作之間。6.關(guān)聯(lián)分為普通關(guān)聯(lián)、限定關(guān)聯(lián)、關(guān)聯(lián)類,以及聚合與復(fù)合。7.預(yù)定義的約束有4種:交疊、不相交、完全和不完全。這些約束都是語義約束。8.在UML中有兩種類型的交互圖?在UML中有兩種類型的交互圖:順序圖和協(xié)作圖。(1)順序圖描述對象之間的動態(tài)交互關(guān)系,著重表現(xiàn)間消息傳遞的時間順序。順序圖有兩個坐標(biāo)軸:縱坐標(biāo)表示時間,橫坐標(biāo)表示不同的對象。順序中的主要符號有參與者、對象的生命線、消息(2)協(xié)作圖是順序圖的一種變化形式,用于描述相互協(xié)作的對象間的交互關(guān)系和鏈接關(guān)系。9.系統(tǒng)架構(gòu)的分類及各自的作用?系統(tǒng)架構(gòu)分為邏輯架構(gòu)和物理架構(gòu)兩大類。邏輯架構(gòu)完整地描述系統(tǒng)的功能,把功能分配到系統(tǒng)的各個局部,詳細(xì)說明它們是如何工作的。物理架構(gòu)詳細(xì)地描述系統(tǒng)軟件和硬件,描述軟、硬件的分解。第8章面向?qū)ο蠓治?.面向?qū)ο蠓治瞿P陀?個獨(dú)立的模型構(gòu)成?由用例和場景表示的功能模型(用例模型);用類和對象表示的靜態(tài)模型(對象模型);由狀態(tài)圖和順序圖表示的動態(tài)模型(交互模型)。2.Coad&Yourdon提出,復(fù)雜問題的對象模型應(yīng)該由下述5個層次組成?主題層、類-對象層、結(jié)構(gòu)層、屬性層和效勞層。上述5個層次對應(yīng)著建立對象模型的5項(xiàng)主要活動:識別主題、確定類與對象、識別結(jié)構(gòu)、定義屬性、定義效勞。3.建立用例模型的目的和過程?建立用例模型的目的是提取和分析足夠的需求信息,準(zhǔn)備一個模型,該模型應(yīng)能表述用戶需要什么,而不涉及系統(tǒng)將如何構(gòu)造和實(shí)現(xiàn)特定細(xì)節(jié)。創(chuàng)立用例模型的過程如下:(1)確定業(yè)務(wù)參與者—標(biāo)識目標(biāo)系統(tǒng)將支持的不同類型的用戶,可以是人、事件或其他系統(tǒng)(2)確定業(yè)務(wù)需求用例—參與者需要系統(tǒng)提供的完整功能(3)創(chuàng)立用例圖—標(biāo)識參與者與用例之間、用例與用例之間的關(guān)系。4.使用Rose創(chuàng)立用例模型?(1)在Rose中創(chuàng)立參與者(2)給參與者添加摘要描述(3)在Rose中創(chuàng)立用例(4)為用例增加文檔描述(5)創(chuàng)立用例圖。5.標(biāo)識關(guān)聯(lián)的啟發(fā)式準(zhǔn)那么如下?(1)檢查指示狀態(tài)的動詞或動詞短語,識別動作的主體和客體,從角色尋找關(guān)聯(lián)(2)準(zhǔn)確地命名關(guān)聯(lián)和角色(3)盡量使用常用的修飾詞標(biāo)識知名字空間和關(guān)鍵屬性(4)應(yīng)消除導(dǎo)出其他關(guān)聯(lián)的關(guān)聯(lián)(5)在一組關(guān)聯(lián)被穩(wěn)定之前先不必考慮實(shí)例之間的多重性(6)過多的關(guān)聯(lián)使得一個模型不可讀。此外,在類圖中不應(yīng)包括泛化、依賴關(guān)系等。6.標(biāo)識屬性的啟發(fā)準(zhǔn)那么如下?(1)每個對象至少需包含一個屬性(2)屬性取值必須適合對象類的所有實(shí)例(3)出現(xiàn)在泛化關(guān)系中的對象所繼承的屬性必須與泛化關(guān)系一致(4)系統(tǒng)的所有存儲數(shù)據(jù)必須定義為屬性(5)對象的導(dǎo)出屬性應(yīng)當(dāng)略去。第9章軟件體系結(jié)構(gòu)與設(shè)計模式1.軟件體系結(jié)構(gòu)的定義?軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。2.在軟件系統(tǒng)中,可以將模式劃分為以下3類?1)體系結(jié)構(gòu)模式(2)設(shè)計模式(3)慣用法。3.體系結(jié)構(gòu)的主要作用?(1)體系結(jié)構(gòu)的表示有助于風(fēng)險承擔(dān)者進(jìn)行交流(2)體系結(jié)構(gòu)突出了早期設(shè)計決策(3)軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用模型。4.管道/過濾器、批處理序列都屬于數(shù)據(jù)流風(fēng)格。5.管道/過濾器風(fēng)格具有以下優(yōu)缺點(diǎn)?優(yōu)點(diǎn):(1)使得軟件構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特點(diǎn)(2)允許設(shè)計者將整個系統(tǒng)的輸入/輸出行為看成是多個過濾器行為的簡單合成(3)支持軟件復(fù)用(4)系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單(5)允許對一些屬性如吞吐量、死鎖等進(jìn)行分析(6)支持并行執(zhí)行。缺點(diǎn):(1)通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)(2)不適合處理交互的應(yīng)用(3)在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過濾器都增加了解析和合成數(shù)據(jù)的工作。6.調(diào)用-返回風(fēng)格體系結(jié)構(gòu)中,存在3種子風(fēng)格:〔1〕主程序/子程序體系結(jié)構(gòu)〔2〕面向?qū)ο箫L(fēng)格〔3〕層次結(jié)構(gòu)。7.主程序/子程序體系結(jié)構(gòu)的優(yōu)點(diǎn)是?(1)可以使用自頂向下、逐步分解的方法得到體系結(jié)構(gòu)圖(2)采用程序設(shè)計語言支持的單線程控制。其主要缺點(diǎn)是:(1)子程序的正確性難于判斷(2)子系統(tǒng)的結(jié)構(gòu)不清晰。8.面向?qū)ο箫L(fēng)格具有以下優(yōu)點(diǎn)?(1)因?yàn)閷ο髮ζ渌[藏它的表示,所以可以改變一個對象的表示而不影響其他的對象(2)設(shè)計者可將一些數(shù)據(jù)存取操作的分解成一些交互的代理程序的集合。其缺點(diǎn)如下:(1)為了使一個對象和另一個對象通過過程調(diào)用等進(jìn)行交互,必須知道對象的標(biāo)識(2)必須修改所有顯式調(diào)用它的其他對象,并消除由此帶來的一些副作用。9.層次結(jié)構(gòu)具有以下優(yōu)點(diǎn)?(1)支持基于抽象程度遞增的系統(tǒng)設(shè)計(2)支持功能增強(qiáng)(3)支持復(fù)用。層次結(jié)構(gòu)的缺點(diǎn)如下:(1)并不是每個系統(tǒng)都可以很容易地劃分為分層的模式(2)很難找到一個適宜的、正確的層次抽象方法。10.數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)和黑板系統(tǒng)都屬于倉庫風(fēng)格。11.黑板系統(tǒng)由以下3局部組成:(1)知識源(2)黑板數(shù)據(jù)結(jié)構(gòu)(3)控制。12.黑板系統(tǒng)具有以下優(yōu)點(diǎn)?(1)對可更改性和可維護(hù)性的支持(2)可復(fù)用的知識源(3)支持容錯性和健壯性。黑板系統(tǒng)具有以下缺乏:(1)測試?yán)щy(2)不能保證有好的求解方案(3)難以建立好的控制策略(4)低效(5)昂貴的開發(fā)工作(6)缺少對并行機(jī)制的支持。13.有兩種領(lǐng)域相關(guān)的體系結(jié)構(gòu)模型:類屬模型和參考模型。14.編譯器一般包括以下模塊?(1)詞法分析器,將輸入的語言符號轉(zhuǎn)換成相應(yīng)的內(nèi)部形式(2)符號表:由詞法分析器建立,保存程序中出現(xiàn)的名字及其類型信息(3)語法分析器:檢查正被編譯的語言語法(4)語法樹:是正被編譯的程序在機(jī)器內(nèi)部的結(jié)構(gòu)表示(5)語義分析器:使用來自語法樹和符號表的信息檢查這個輸入程序的語義正確性(6)代碼生成器:遍歷語法樹并生成機(jī)器代碼。15.分布式計算模型主要具有以下優(yōu)點(diǎn)?(1)資源共享(2)經(jīng)濟(jì)性(3)性能與可擴(kuò)展性(4)固有分布性(5)健壯性。16.C/S體系結(jié)構(gòu)有3個主要組成局部?(1)效勞器:負(fù)責(zé)給其他子系統(tǒng)提供效勞(2)客戶機(jī):向效勞器請求效勞(3)網(wǎng)絡(luò):連接客戶機(jī)和效勞器。17.三層C/S體系結(jié)構(gòu)的系統(tǒng)組成及優(yōu)點(diǎn)?三層C/S體系結(jié)構(gòu)將整個系統(tǒng)分成表示層、應(yīng)用邏輯層和數(shù)據(jù)層3局部。三層C/S結(jié)構(gòu)具有以下優(yōu)點(diǎn):(1)允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨(dú)立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性(2)允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng),使之在處理負(fù)荷能力上與處理特性上分別適應(yīng)于結(jié)構(gòu)清晰的三層(3)應(yīng)用的各層可以并行開發(fā),可以選擇各自最適合的開發(fā)語言(4)利用功能層有效地隔開表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或用黑客手段去非法訪問數(shù)據(jù)層。18.B/S體系結(jié)構(gòu)具有以下優(yōu)點(diǎn)?(1)基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在效勞器端解決(2)B/S體系結(jié)構(gòu)還提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用效勞的聯(lián)機(jī)、聯(lián)網(wǎng)和統(tǒng)一效勞的最現(xiàn)實(shí)的開放性根底。與C/S體系結(jié)構(gòu)相比,B/S體系結(jié)構(gòu)也有許多缺乏之處:(1)B/S體系結(jié)構(gòu)缺乏對動態(tài)頁面的支持能力(2)B/S體系結(jié)構(gòu)的系統(tǒng)擴(kuò)展能力差,平安性難以控制(3)采用B/S體系結(jié)構(gòu)結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)低于C/S體系結(jié)構(gòu)〔4〕B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)動態(tài)交互性不強(qiáng)19.J2EE體系結(jié)構(gòu)框架?J2EE模型是分層結(jié)構(gòu),中間的三層〔表示層,業(yè)務(wù)層,集成層〕包含應(yīng)用程序構(gòu)件,客戶層和資源層處于應(yīng)用程序的外層。(1)客戶層:用戶通過客戶層與系統(tǒng)交互(2)資源層:資源層可以是企業(yè)數(shù)據(jù)庫,電子商務(wù)解決方案中的外部企業(yè)系統(tǒng)(3)表示層:也稱為Web層或效勞器表示層,用戶通過表示層訪問應(yīng)用程序(4)業(yè)務(wù)層:業(yè)務(wù)層包含表示層中的控制器構(gòu)件沒有實(shí)現(xiàn)的一局部應(yīng)用邏輯(5)集成層:集成層負(fù)責(zé)建立和維護(hù)與數(shù)據(jù)源的連接。20.PCMEF體系結(jié)構(gòu)框架?PCMEF框架包含4層:表示層、控制層、領(lǐng)域?qū)雍透讓印?1)表示層:表示層包含定義GUI對象的類(2)控制層:控制層處理表示層的請求,負(fù)責(zé)大多數(shù)程序邏輯、算法、計算以及為每個用戶維持會話狀態(tài)(3)領(lǐng)域?qū)樱侯I(lǐng)域?qū)拥膶?shí)體包處理控制請求(4)根底層:根底層負(fù)責(zé)與數(shù)據(jù)庫和Web效勞的所有通信。21.PCMER體系結(jié)構(gòu)框架?PCBMER框架包含6個層次:(1)Bean層:表示那些預(yù)先確定要呈現(xiàn)用戶界面上的數(shù)據(jù)類和值對象(2)表示層:表示屏幕以及呈現(xiàn)Bean對象的UI對象(3)控制器層:表示應(yīng)用邏輯(4)實(shí)體層:響應(yīng)控制器的中介者(5)中介者層:建立了充當(dāng)實(shí)體類和資源類媒介的通信管道(6)資源層:負(fù)責(zé)所有與處部持久數(shù)據(jù)資源的通信。22.一個模式一般有4個根本的要素?(1)模式名稱:用于描述模式的名字,說明模式的問題、解決方案和效果(2)問題:說明在何種場合使用模式(3)解決方案:描述設(shè)計的組成成分、它們之間的相互關(guān)系、各自的職責(zé)和合作方式(4)效果:描述了模式使用的效果及使用模式應(yīng)當(dāng)權(quán)衡的問題。第10章面向?qū)ο笤O(shè)計1.面向?qū)ο笤O(shè)計的主要任務(wù)是在面向?qū)ο蠓治龅母咨贤瓿审w系結(jié)構(gòu)設(shè)計、接口設(shè)計、數(shù)據(jù)設(shè)計、類設(shè)計及構(gòu)件設(shè)計。2.面向?qū)ο蟮脑O(shè)計過程一般有以下幾個階段?(1)建立系統(tǒng)環(huán)境模型(2)設(shè)計系統(tǒng)體系結(jié)構(gòu)(3)對各個子系統(tǒng)進(jìn)行設(shè)計(4)對象設(shè)計及優(yōu)化。3.面向?qū)ο笤O(shè)計準(zhǔn)那么?(1)模塊化(2)抽象(3)信息隱藏(4)弱耦合(5)強(qiáng)內(nèi)聚(6)可重用。4.在運(yùn)行時對類進(jìn)行實(shí)例化,并調(diào)用與實(shí)例化對象相應(yīng)的方法,稱為動態(tài)綁定、后期綁定或運(yùn)行時綁定。相應(yīng)地,如果方法的調(diào)用是是在編譯時確定的,那么稱為是靜態(tài)綁定、前期綁定或編譯時綁定。5.繼承帶來的依賴性有兩種:(1)編譯時繼承依賴性(2)運(yùn)行時繼承依賴性。6.為了能夠支持復(fù)用,軟件構(gòu)件應(yīng)具有以下特性?(1)獨(dú)立部署單元:構(gòu)件是獨(dú)立部署(2)作為第三方的組裝單元:結(jié)果第三方廠商能夠?qū)⒁粋€構(gòu)件和其他構(gòu)件組裝在一起,這個構(gòu)件必須具備很好的內(nèi)聚性(3)構(gòu)件不能有任何可見狀態(tài):這要求構(gòu)件不能與自己的拷貝有所區(qū)別。7.子系統(tǒng)之間的兩種交互方式:分別是客戶-供應(yīng)商關(guān)系和平等伙伴關(guān)系。8.把子系統(tǒng)組織成完整的系統(tǒng)時,有水平層次組織和垂直塊狀組織兩種方案可供選擇。9.用戶界面設(shè)計的步驟?(1)從系統(tǒng)的輸入、輸出及與用戶的交互中獲得信息,定義界面對象和行為(2)定義那些導(dǎo)致用戶界面狀態(tài)發(fā)生變化的事件,對事件建模(3)描述最終向用戶展示的每個界面的狀態(tài)(4)簡要說明用戶如何從界面提供的界面信息來解釋系統(tǒng)狀態(tài)。10.對象設(shè)計過程?對象設(shè)計過程包括使用模式設(shè)計對象、接口規(guī)格說明、對象模型重構(gòu)、對象模型優(yōu)化4組活動:(1)使用模式設(shè)計對象:設(shè)計者可以選擇適宜的設(shè)計模式,復(fù)用已有的解決方案,以提高系統(tǒng)的靈活性(2)接口規(guī)格說明:在系統(tǒng)設(shè)計中所標(biāo)識的子系統(tǒng)功能,都需要在類接口中詳細(xì)說明(3)對象模型重構(gòu):重構(gòu)的目的是改進(jìn)對象設(shè)計模型,提高該模型可讀性和擴(kuò)展性(4)對象模型優(yōu)化:優(yōu)化活動是為了改進(jìn)對象設(shè)計模型,以實(shí)現(xiàn)系統(tǒng)模型中性能的要求。11.接口規(guī)格說明包括以下活動?(1)確定遺漏的屬性和操作:在這個活動中,將檢查每個子系統(tǒng)提供的效勞及每個分析對象,標(biāo)識出被遺漏的操作和屬性(2)描述可見性和簽名:在這個過程中,將決定哪個操作對其他對象和子系統(tǒng)是可用的哪個操作只對本子系統(tǒng)是可用的,并說明操作的簽名(3)描述契約:描述每個對象操作應(yīng)該遵守的約束條件。12.優(yōu)化對象設(shè)計模型常用方法?(1)增加冗余聯(lián)以提高訪問效率(2)調(diào)整查詢次序(3)保存派生屬性。第11章軟件維護(hù)1.什么是軟件維護(hù)?軟件維護(hù)有哪些內(nèi)容?在軟件運(yùn)行/維護(hù)階段對軟件產(chǎn)品所進(jìn)行的修改就是所謂的維護(hù)?!?〕校正性維護(hù)。在軟件交付使用后,一些隱含的錯誤在某些特定的使用環(huán)境下會暴露出來。為了識別和糾正錯誤,修改軟件性能上的缺陷,應(yīng)進(jìn)行確定和修改錯誤的過程,這個過程就稱為校正性維護(hù)〔2〕適應(yīng)性維護(hù)。為了使應(yīng)用軟件適應(yīng)計算機(jī)硬件、軟件環(huán)境及數(shù)據(jù)環(huán)境的不斷發(fā)生的變化而修改軟件的過程稱為適應(yīng)性維護(hù)〔3〕完善性維護(hù)。為增加軟件功能、增強(qiáng)軟件性能、提高軟件運(yùn)行效率而進(jìn)行的維護(hù)活動稱為完善性維護(hù)〔4〕預(yù)防性維護(hù)。為了提高軟件的可維護(hù)性和可靠性而對軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。2.三類維護(hù)占總維護(hù)工作量的比例:完善性維護(hù)50%、適應(yīng)性維護(hù)25%、改正性維護(hù)20%、其他維護(hù)5%;維護(hù)在軟件生存期內(nèi)本錢所占比例:維護(hù)78%。3.在軟件維護(hù)中,影響維護(hù)工作量的因素?系統(tǒng)規(guī)模;程序設(shè)計語言;系統(tǒng)“年齡〞大小;數(shù)據(jù)庫技術(shù)的應(yīng)用水平;所采用的軟件開發(fā)技術(shù)及軟件開發(fā)工程化的程度;其他〔如應(yīng)用問題的類型、數(shù)學(xué)模型、任務(wù)的難度、開關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等,對維護(hù)工作量都有影響〕。4.程序修改的步驟及修改的副作用?程序修改需要經(jīng)歷三個步驟:分析和理解程序、實(shí)施修改以及重新驗(yàn)證程序。所謂副作用是指因修改軟件而造成的錯誤或其他不希望發(fā)生的情況。有以下三種副作用:(1)修改代碼的副作用:在使用程序設(shè)計語言修改源代碼時,可能引入新的錯誤(2)修改數(shù)據(jù)的副作用:在修改數(shù)據(jù)結(jié)構(gòu)時,有可能造成軟件與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(3)文檔的副作用:對數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時,如果不對相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改,會導(dǎo)致文檔與程序功能不匹配、缺省條件改變、新錯誤信息不正確等錯誤。為了控制因修改而引起的副作用,要做到:(1)按模塊把修改分組(2)自頂向下地安排被修改模塊的順序(3)每次修改一個模塊(4)對于每個修改了的模塊,在安排修改下一個模塊之前,要確定這個修改的副作用。5.什么是軟件可維護(hù)性?可維護(hù)性度量的特性是什么?軟件可維護(hù)性的定義:軟件能夠被理解、校正、適應(yīng)及增強(qiáng)功能的容易程度。軟件的可維護(hù)性可用以下七個質(zhì)量特性來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。6.可以采用以下幾個方法提高軟件維護(hù)性?(1)使用提高軟件維護(hù)性的開發(fā)技術(shù)和工具(2)實(shí)施開發(fā)階段產(chǎn)品的維護(hù)性審查(3)改進(jìn)文檔。7.軟件維護(hù)的特點(diǎn)是什么?主要表達(dá)在三個方面:〔1〕非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。軟件的開發(fā)過程對軟件的維護(hù)有很大的影響。假設(shè)不采用軟件工程的方法開發(fā)軟件,那么軟件只有程序而無文檔,維護(hù)工作非常困難,這是一種非結(jié)構(gòu)化的維護(hù)。假設(shè)采用軟件工程的方法開發(fā)軟件,那么各階段都有相應(yīng)的文檔,容易進(jìn)行維護(hù)工作,這是一種結(jié)構(gòu)化的維護(hù)。〔2〕維護(hù)的困難性。軟件維護(hù)的困難性是由于軟件需求分析和開發(fā)方法的缺陷。軟件生存周期中的開發(fā)階段沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,就會引起軟件運(yùn)行時的維護(hù)困難?!?〕軟件維護(hù)的費(fèi)用。軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重是在不斷增加的,這是軟件維護(hù)有形的代價。另外還有無形的代價,即要占有更多的資源。軟件維護(hù)費(fèi)用增加的占有原因是軟件維護(hù)的生產(chǎn)率非常低。8.軟件維護(hù)的流程是什么?軟件維護(hù)的流程如下:提交維護(hù)申請報告、審查申請報告并批準(zhǔn)、運(yùn)行維護(hù)并做詳細(xì)記錄、復(fù)審。第12章軟件過程與軟件過程改進(jìn)1.過程是由以下要素構(gòu)成的?(1)輸入:過程客體的初始條件(2)輸出:過程客體的最終狀態(tài)或過程的結(jié)果(3)活動或進(jìn)一步被分解的任務(wù)或作業(yè)(4)資源:過程活動所必需的支持條件(5)測量與驗(yàn)證:實(shí)施測量與驗(yàn)證是為了使過程的上述4個要素是符合要求的(6)過程目標(biāo):過程的活動應(yīng)以增值為目標(biāo)。2.CMMI對于軟件過程的改進(jìn)提供了兩種不同的途徑,即所謂分級表示和連續(xù)表示。3.分級表示的組織成熟度等級:(1)初始級(ML1)(2)已管理級(ML2)(3)已定義級(ML3)(4)已量化管理級(ML4)(5)優(yōu)化級(ML5)。4.連續(xù)表示過程域能力等級:(1)不完備級(CL0)(2)已實(shí)施級(CL1)(3)已管理級(CL2)(4)已定義級(CL3)(5)定量管理級(CL4)(6)優(yōu)化級(CL5)。5.CMMI的評估遵循以下原那么?(1)評估工作應(yīng)由組織的高層管理者主持(2)關(guān)注于組織制定的業(yè)務(wù)目標(biāo)(3)評估過程中重視客觀證據(jù)的收集(4)對評估信息應(yīng)予以保密(5)使用CMMI模型作為評估的依據(jù)(6)評估成員協(xié)調(diào)配合工作,妥善地處理意見分歧,最終應(yīng)給出一致的結(jié)論(7)始終著眼于過程改進(jìn)。6.對軟件組織實(shí)施評估需要考慮以下問題?(1)確定評估的范圍(2)選定評估實(shí)施的等級A、B或C(3)確定評估組成員,視實(shí)際需要對評估人員進(jìn)行培訓(xùn)(4)確定被評估組織參加訪談的人員(5)確定評估要得到的結(jié)論形式(6)制定評估約束條件。7.建立有效的軟件過程必須具備以下條件?(1)過程得到遵循(2)過程受到催促檢查(3)過程要有測量(4)以過程要求為內(nèi)容進(jìn)行培訓(xùn)(5)明確過程所有者(6)管理者對過程的有效支持(7)把對員工的鼓勵與過程目標(biāo)的實(shí)現(xiàn)結(jié)合起來(8)新員工對過程的意見受到鼓勵、分析和引導(dǎo)(9)員工對過程的意見受到鼓勵、分析各引導(dǎo)(10)過程得到技術(shù)的適當(dāng)支持。8.軟件過程改進(jìn)的IDEAL模型需經(jīng)歷5個重要的階段,即啟動〔Initiating〕、診斷〔Diagnosing〕、建立(Establishing)、行動〔Acting〕和提高〔Leveraging〕。9.建立使軟件過程更為有效的機(jī)制包括以下幾個方面?(1)明確過程的所有者(2)組織培訓(xùn)(3)對過程實(shí)施情況進(jìn)行測量,收集過程實(shí)施的反響意見(4)收集過程使用者的反響意見(5)收集來年組織外部的意見(6)實(shí)施過程的催促和檢查。第13章軟件工程管理1.軟件工程管理的目標(biāo)?(1)到達(dá)工程預(yù)期的軟件產(chǎn)品功能和性能要求,使用戶認(rèn)為這樣的軟件正是自己所期待的(2)時限要求(3)工程開銷限制在預(yù)算之內(nèi)。2.工程籌劃中需要開展的活動有?(1)確認(rèn)并分析工程的特征(2)選擇工程將遵循的生存期模型,確定各階段的任務(wù)(3)確定應(yīng)得到的階段性工作產(chǎn)品以及最終的產(chǎn)品(4)開展工程估算(5)制定工程進(jìn)度方案(6)對工程風(fēng)險進(jìn)行分析(7)制定工程方案。3.COCOMO是針對Boebm劃分的3種類型軟件進(jìn)行估算的:(1)固有型工程(2)嵌入型工程(3)半獨(dú)立性工程。4.什么是軟件風(fēng)險?風(fēng)險的特點(diǎn)?我們把軟件工程過程中可能出現(xiàn)的那些影響軟件目標(biāo)實(shí)現(xiàn)或是可能造成重大損失的事件稱為軟件風(fēng)險。風(fēng)險的特點(diǎn):(1)可能發(fā)生的事件(2)會給工程帶來損失的事件(3)可能對其加以干預(yù),以減少損失。5.依據(jù)危害性,軟件風(fēng)險可分為3類:1)本錢風(fēng)險(2)績效風(fēng)險(3)進(jìn)度風(fēng)險;從風(fēng)險涉及的范圍上考慮,軟件風(fēng)險可分為:(1)工程風(fēng)險(2)技術(shù)風(fēng)險(3)商業(yè)風(fēng)險;R.N.Charette給出的風(fēng)險的分類:(1)風(fēng)險(2)可預(yù)知風(fēng)險(3)不可預(yù)知風(fēng)險。6.風(fēng)險管理的目標(biāo)和策略?目標(biāo):(1)識別風(fēng)險(2)采取措施。策略:(1)回避風(fēng)險(2)轉(zhuǎn)移風(fēng)險(3)承受風(fēng)險,接受風(fēng)險,但將風(fēng)險損失控制在工程資源可承受的范圍之內(nèi)。7.按Boehm意見,風(fēng)險管理方案包括以下5方面?(1)該項(xiàng)風(fēng)險為什么重要,為什么一定要管理(2)風(fēng)險管理應(yīng)該能夠提供什么以及什么時候提供(3)實(shí)施這些風(fēng)險管理活動的責(zé)任人是誰(4)風(fēng)險怎樣能夠得到減輕,該采取什么措施(5)需要什么資源。8.需求工程包括兩個方面:需求開發(fā)與需求管理;需求開發(fā)工作包括以下4個方面:(1)獲取需求(2)分析需求(3)定義需求(4)驗(yàn)證需求。9.引發(fā)需求變更的因素?(1)單純的用戶因素(2)市場形勢變化引發(fā)的需求變更(3)系統(tǒng)因素(4)工作環(huán)境因素(5)需求開發(fā)工件有缺陷。10.需求變更對軟件開發(fā)工作的影響?(1)使得變更前的開發(fā)工作和成果失敗(2)使得返工成為不得不采取的對策(3)勢必帶來軟件開發(fā)方案的相應(yīng)變更、開發(fā)本錢相應(yīng)增加和開發(fā)工作量投入的追加。11.降低需求變更風(fēng)險的策略?(1)在需求開發(fā)工作中要與客戶充分溝通(2)與用戶共同確定需求(3)開發(fā)組織和用戶雙方簽署的工程開發(fā)合同中應(yīng)包括對出現(xiàn)需求變更的應(yīng)對條款(4)如果工程自身具有需求不易確定的特點(diǎn),在工程啟動時最好采用快速原型方法或螺旋模型(5)在工程開始時,如估計到需求可能變更,那么可在開發(fā)方案中適當(dāng)留有余地(6)嚴(yán)格實(shí)施變更控制,使產(chǎn)品質(zhì)量不致因需求變更受到影響。12.軟件配置管理要開展的活動包括?配置標(biāo)識、配置控制、配置狀態(tài)報告、配置評價以及發(fā)布管理和交付等。13.軟件配置管理的主要任務(wù)是?(1)制定軟件配置管理方案(2)實(shí)施變更管理,防止工程進(jìn)行中因變更導(dǎo)致的混亂(3)實(shí)施版本管理和發(fā)布管理。14.配置數(shù)據(jù)庫可分為3類:(1)開發(fā)庫(2)受控庫(3)產(chǎn)品庫。15.什么是基線?它的作用是什么?基線是軟件生存期各開發(fā)階段末尾的特定點(diǎn),也被稱為里程碑。它的作用是把各階段的開發(fā)工作劃分得更加明確,使得本來連續(xù)的工作在這些點(diǎn)上斷開,使之便于檢驗(yàn)和確認(rèn)階段開發(fā)成果。它對變更控制起的作用是:不允許跨越里程碑去修改另一階段的工作成果。16.系統(tǒng)建立必須要考慮的因素有?(1)是否將構(gòu)成系統(tǒng)的所有組件都包括在系統(tǒng)建立的指令中了?(2)是否將每個需要的組件的適當(dāng)版本都包含在建立指令中了?(3)所有需要的數(shù)據(jù)文件都是可用的嗎?(4)如果在一個組件內(nèi)引用了數(shù)據(jù)文件,所用的數(shù)據(jù)名與目標(biāo)機(jī)上數(shù)據(jù)文件的名字是一致的嗎?(5)編譯程序和其他所需工具的適用版本是可用的嗎?17.軟件配置審核是要解決以下問題?(1)在工程變更順序中規(guī)定的變更是否已經(jīng)做了?(2)正式技術(shù)評審是否已經(jīng)評價了技術(shù)正確性?(3)是否正確遵循了軟件工程標(biāo)準(zhǔn)?(4)在軟件配置項(xiàng)中是否強(qiáng)調(diào)了變更?(5)是否遵循了標(biāo)識變更、記錄變更、報告變更的軟件配置管理過程?(6)所有相關(guān)了的軟件配置項(xiàng)是否都已正確地做了更新?第14章軟件工程標(biāo)準(zhǔn)及軟件文檔1.所謂標(biāo)準(zhǔn),是人們在一定的范圍內(nèi)獲得最正確秩序,經(jīng)協(xié)商一致制定,并由公認(rèn)的權(quán)威機(jī)構(gòu)批準(zhǔn),共同使用和重復(fù)使用的一種標(biāo)準(zhǔn)文件。2.軟件組織內(nèi)的標(biāo)準(zhǔn)化工作?(1)安排專人負(fù)責(zé)標(biāo)準(zhǔn)或標(biāo)準(zhǔn)工作(2)參考國際標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)或行業(yè)標(biāo)準(zhǔn),制定適用于本組織的標(biāo)準(zhǔn)或企業(yè)標(biāo)準(zhǔn),編制本組織的軟件工程標(biāo)準(zhǔn)化手冊(3)制定本組織的軟件工程標(biāo)準(zhǔn)或標(biāo)準(zhǔn)時最好吸收有經(jīng)驗(yàn)的軟件工程師參加,讓他們充分理解開發(fā)和實(shí)施標(biāo)準(zhǔn)的意義(4)適時組織有關(guān)軟件工程標(biāo)準(zhǔn)化工作的培訓(xùn),讓相關(guān)的技術(shù)人員和管理人員不僅了解標(biāo)準(zhǔn)或標(biāo)準(zhǔn)中那些應(yīng)當(dāng)遵循的要求,還要讓他們理解為什么要這樣要求(5)為適應(yīng)軟件工程開展的形勢,軟件組織所制定的標(biāo)準(zhǔn)或標(biāo)準(zhǔn)需要及時地加以審查和更新(6)貫徹標(biāo)準(zhǔn)時一個值得提倡的做法是以輔助工具相支持。3.軟件工程標(biāo)準(zhǔn)化的意義?(1)能提高軟件產(chǎn)品的質(zhì)量(2)能減少開發(fā)人員之間的誤解、過失和返工,(3)遵循標(biāo)準(zhǔn)開展工作能提高軟件人員的開發(fā)技能(4)由于各層次、各環(huán)節(jié)和各崗位的軟件人員都遵循統(tǒng)一的標(biāo)準(zhǔn),大家有了共同語言,因而提高了人員之間溝通的效率(5)標(biāo)準(zhǔn)化開發(fā)有助于提高管理水平(6)軟件工程標(biāo)準(zhǔn)化也是國際化的要求,這為國際交流提供了便利。4.什么是文檔?軟件文檔的作用?文檔是指某種數(shù)據(jù)和某種所記錄的數(shù)據(jù)。軟件文檔的作用:(1)提高軟件開發(fā)過程的能見度(2)提高開發(fā)效率(3)作為開發(fā)人員在一定階段的工作成果和結(jié)束標(biāo)志(4)記錄開發(fā)過程中的有關(guān)信息(5)提供對軟件運(yùn)行、維護(hù)和培訓(xùn)的有關(guān)信息,(6)便于潛在用戶了解軟件的功能、性能等各項(xiàng)指標(biāo),為他們選購符合自己需要的軟件提供依據(jù)。5.按照文檔產(chǎn)生和使用的范圍,軟件文檔大致可分為三類?(1)開發(fā)文檔:在軟件工程活動中,作為軟件工程人員的階段工作成果和后來階段工作的依據(jù)形成的文檔(2)管理文檔:在軟件工程活動中,為配合工程管理工作而編制的一些管理性文件,使管理人員能夠根據(jù)這些文檔更好地了解和控制工程的進(jìn)程、工作的質(zhì)量、成果以及資源的使用等(3)用戶文檔:軟件工程人員為用戶準(zhǔn)備有關(guān)該軟件使用、操作、維護(hù)的參考文件。6.高質(zhì)量文檔應(yīng)當(dāng)表達(dá)以下幾方面?(1)針對性:文檔編制以前應(yīng)分清讀者對象(2)精確性:文檔的行文應(yīng)當(dāng)十分確切,不能出現(xiàn)多義性的描述(3)清晰性:文檔編寫應(yīng)力求簡明(4)完整性:任何一個文檔都應(yīng)當(dāng)是完整的、獨(dú)立的,它應(yīng)自成體系(5)靈活性:各個不同的軟件工程,其規(guī)模和復(fù)雜程度有著許多實(shí)際差異,不能一概而論(6)可追溯性:在一個工程各開發(fā)階段之間提供的文檔必定存在著可追溯的關(guān)系。7.要想編制高質(zhì)量的文檔,應(yīng)該注意以下方面?(1)應(yīng)根據(jù)具體的軟件開發(fā)工程,決定編制的文檔種類(2)當(dāng)所開發(fā)的軟件系統(tǒng)非常大時,一種文檔可以分成幾卷編寫(3)應(yīng)根據(jù)任務(wù)的規(guī)模、復(fù)雜性、工程負(fù)責(zé)人對該軟件的開發(fā)過程及運(yùn)行環(huán)境所需詳細(xì)程度的判斷,確定文檔的詳細(xì)程度(4)對國標(biāo)GB8567-2023?計算機(jī)軟件文檔編制標(biāo)準(zhǔn)?所建議的所有條款都可以擴(kuò)展和進(jìn)一步細(xì)分,以適應(yīng)需要(5)程序的設(shè)計表現(xiàn)形式可以使用程序流程圖、判定表、程序描述語言〔PDL〕或問題分析圖〔PAD〕等(6)文檔的表現(xiàn)形式?jīng)]有嚴(yán)格規(guī)定或限制,可以使用自然語言,也可以使用形式化的語言(7)當(dāng)國際?計算機(jī)軟件軟件文檔編制標(biāo)準(zhǔn)?中所規(guī)定的文檔種類不能滿足某些應(yīng)用部門的特殊需要時,可以建立一些特殊的文檔種類要求。8.文檔的管理和維護(hù)應(yīng)當(dāng)做到以下幾個方面?(1)軟件開發(fā)黨小組應(yīng)設(shè)一位文檔保管員,負(fù)責(zé)集中保管本工程已有文檔的兩套主文本(2)軟件開發(fā)黨小組的成員可根據(jù)工作需要在自己手中保存一些個人文檔(3)開發(fā)人員個人只保存著主文本中與本人工作有關(guān)的局部文檔(4)在新文檔取代舊文檔時,管理人員應(yīng)及時注銷文檔(5)工程開發(fā)結(jié)束時,文檔管理人員應(yīng)收回開發(fā)人員的個人文檔(6)在軟件開發(fā)過程中,修改已完成的文檔必須特別謹(jǐn)慎。第5章編碼1.從心理學(xué)的觀點(diǎn),影響程序員心理的語言特性有以下幾個方面?(1)一致性(2)二義性(3)簡潔性(4)局部性(5)傳統(tǒng)性。2.對于程序編碼有如下一些工程上的性能要求?(1)詳細(xì)設(shè)計應(yīng)能直接容易地翻譯代碼程序(2)源程序應(yīng)具有可移植性(3)編譯程序應(yīng)具有較高的效率(4)盡可能應(yīng)用代碼生成自開工具(5)可維護(hù)性。3.根據(jù)程序設(shè)計語言開展的歷程,可以將程序設(shè)計語言分為4類?(1)附屬于機(jī)器的語言—第一代語言(2)匯編語言—第二代語言(3)高級程序設(shè)計語言—第三代語言(4)第四代語言〔4GL〕。4.按照4GL的功能可以將它們劃分為以下幾類?(1)查詢語言和報表生成器(2)圖形語言(3)應(yīng)用生成器(4)形成化規(guī)格說明語言。5.在選擇編程語言時,可以考慮以下幾方面因素?〔1〕應(yīng)用領(lǐng)域:目標(biāo)系統(tǒng)的應(yīng)用領(lǐng)域不同,需要采取的系統(tǒng)開發(fā)范型也不同(2)系統(tǒng)用戶的要求:有些用戶具有自己的維護(hù)人員,在開發(fā)新軟件時,往往要求開發(fā)商使用與現(xiàn)有的大多數(shù)軟件相同的語言,以減少維護(hù)的難度(3)編程語言自身的功能:從應(yīng)用領(lǐng)域的角度考慮,各種編程語言都有自己的適用領(lǐng)域(4)編碼和維護(hù)本錢及開發(fā)環(huán)境:選擇適宜的編程語言可大大降低程序的編碼量及日常維護(hù)工作中的難度(5)編程人員的技能:在選擇語言時還要考慮編程人員的技能(6)軟件可移植性:如果系統(tǒng)的生存周期比較長,應(yīng)選擇一種標(biāo)準(zhǔn)化程度高、程序可移植性好的編程語言。6.書寫功能性注釋,要注意以下幾點(diǎn)?(1)用于描述一段程序,而不是每一個語句(2)用縮進(jìn)和空行,使程序與注釋容易區(qū)別(3)注釋要正確。7.語句結(jié)構(gòu)簡單化,需要注意以下幾個方面?(1)在一行內(nèi)只寫一條語句,并且采取適當(dāng)?shù)囊菩懈袷?,使程序的邏輯和功能變得更加明確(2)程序編寫首先應(yīng)當(dāng)考慮清晰性,不要刻意追求技巧性,使程序編寫得過于緊湊(3)程序編寫要簡單、清楚,直截了當(dāng)?shù)卣f明程序員的用意(4)除非對效率有特殊的要求,否那么程序編寫的原那么是清晰第一效率第二(5)免使用臨時變量而使可讀性下降(6)讓編譯程序做簡單的優(yōu)化(7)盡可能使用庫函數(shù)(8)防止不必要的轉(zhuǎn)移,如果能保持程序的可讀性,那么不必用GOTO語句(9)盡量只采用3種根本的控制結(jié)構(gòu)來編寫程序(10)防止使用空的else語句和if…thenif…語句(11)防止采用過于復(fù)雜的條件測試(12)盡量減少使用“否認(rèn)〞條件的條件語句。8.輸入/輸出方式標(biāo)準(zhǔn)化,在設(shè)計和程序編碼時都應(yīng)考慮以下原那么?(1)對所有的輸入數(shù)據(jù)都進(jìn)行檢驗(yàn)(2)檢查輸入項(xiàng)的各種重要組合的合理性(3)使得輸入的步驟和操作盡可能簡單(4)輸入數(shù)據(jù)時,應(yīng)允許使用自由格式輸入(5)應(yīng)允許缺省值(6)輸入一批數(shù)據(jù)時,最好使用輸入結(jié)束標(biāo)志(7)在以交互式輸入/輸出方式進(jìn)行輸入時,要在屏幕上使用提示符明確提示交互輸入的請求,指明可使用選擇項(xiàng)的種類和取值范圍(8)當(dāng)程序設(shè)計語言對輸入/輸出格式有嚴(yán)格要求時,應(yīng)保持輸入格式與輸入語句的要求一致(9)給所有的輸出加注解,并設(shè)計輸出報表格式。9.數(shù)據(jù)說明標(biāo)準(zhǔn)化,需要注意以下幾點(diǎn)?(1)數(shù)據(jù)說明的次序應(yīng)當(dāng)標(biāo)準(zhǔn)化,全數(shù)據(jù)屬性容易查找(2)當(dāng)多個變量名用一個語句說明時,應(yīng)當(dāng)對這些變量按字母順序排列(3)對于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)使用注釋對其說明。10.一般情況下,注釋量一般控制在20%~50%。11.標(biāo)識符命名?(1)標(biāo)識符的命名要清晰、明了,有明確含義(2)命名中假設(shè)使用特殊約定或縮寫,那么要有注釋說明(3)自己特有的命名風(fēng)格,要自始至終保持一致(4)對于變量命名,建議除了要有具體含義外,還能說明其變量類型,數(shù)據(jù)類型等(5)命名標(biāo)準(zhǔn)必須與所使用的系統(tǒng)風(fēng)格保持一致。12.提高輸入/輸出效率的指導(dǎo)原那么?(1)輸入/輸出的請求應(yīng)當(dāng)最小化(2)對于所有的輸入/輸出操作,安排適當(dāng)?shù)木彌_區(qū)(3)對輔助存儲,選擇盡可能簡單的、可接受的存取方法(4)對輔助存儲的輸入/輸出,應(yīng)當(dāng)成塊傳送(5)對終端或打印機(jī)的輸入/輸出,應(yīng)考慮設(shè)備特性(6)任何不易理解的,對改善輸入/輸出效果關(guān)系不大的措施都是不可取的(7)不應(yīng)該為追求所謂“超高效〞的輸入/輸出而損害程序的可理解性(8)好的輸入/輸出程序設(shè)計風(fēng)格對提高輸入/輸出效率會有明顯的效果。第6章軟件測試方法1.軟件的測試目的?基于不同的立場,存在著兩種完全不同的測試目的:從用戶的角度出發(fā),一般希望通過軟件測試檢驗(yàn)軟件中隱藏的錯誤和缺陷,以考慮是否可以接受該產(chǎn)品。而從軟件開發(fā)者的角度出發(fā),那么希望測試成為說明軟件產(chǎn)品中不存在錯誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心。2.軟件測試的原那么?(1)應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試〞作為軟件開發(fā)者的座右銘(2)測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果這兩局部組成(3)程序員應(yīng)防止檢查自己的程序(4)在設(shè)計測試用例時,應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件(5)充分注意測試中的群集現(xiàn)象(6)嚴(yán)格執(zhí)行測試方案,排除測試的隨意性(7)應(yīng)當(dāng)對每一個測試結(jié)果作全面檢查(8)妥善保存測試方案、測試用例、出錯統(tǒng)計和最終分析報告。3.黑盒測試是把測試對象看作一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。6.黑盒測試方法主要是為了發(fā)現(xiàn)?是否有不正確或遺漏了的功能?輸入能否正確地接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤?性能上是否能夠滿足要求?是否有初始化或終止性錯誤?7.白盒測試是把測試對象看作一個翻開的盒子或透明的盒子,它允許測試人員測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試.8.所謂判定-條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。第4章結(jié)構(gòu)化設(shè)計方法1.結(jié)構(gòu)化設(shè)計方法可以分為兩類?一類是根據(jù)系統(tǒng)的數(shù)據(jù)流進(jìn)行設(shè)計,稱為面向數(shù)據(jù)流的設(shè)計,或稱過程驅(qū)動的設(shè)計;另一類是根據(jù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計,稱為面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計,或稱數(shù)據(jù)驅(qū)動的設(shè)計。2.在設(shè)計中引入靈活性的方法有?(1)降低耦合并提高內(nèi)聚(2)建立抽象(3)不要將代碼寫死(4)拋出異常(5)使用并創(chuàng)立可復(fù)用的代碼。3.結(jié)構(gòu)化軟件設(shè)計的主要任務(wù)?結(jié)構(gòu)化軟件設(shè)計的主要任務(wù)是要解決“如何做〞的問題,要在需求分析的根底上建立各種設(shè)計模型,并通過對設(shè)計模型的分析和評估來確定這些模型是否能夠滿足需求。4.結(jié)構(gòu)化設(shè)計方法的實(shí)施要點(diǎn)是?(1)首先研究、分析和審查數(shù)據(jù)流圖(2)然后根據(jù)數(shù)據(jù)流圖決定問題的類型(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖(4)利用一些啟發(fā)式原那么來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止(5)根據(jù)分析模型中的實(shí)體-關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計,包括數(shù)據(jù)庫設(shè)計或數(shù)據(jù)文件的設(shè)計(6)在上面設(shè)計的根底上,并依據(jù)分析模型中的加工規(guī)格說明、狀態(tài)轉(zhuǎn)換圖及控制規(guī)格說明進(jìn)行過程設(shè)計(7)制定測試方案。5.軟件設(shè)計的原那么?(1)分而治之(2)模塊獨(dú)立性〔模塊的獨(dú)立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而與軟件系統(tǒng)中其他模塊的接口是簡單的〕(3)提高抽象層次〔抽象是指無視一個主題中與當(dāng)前目標(biāo)無關(guān)的方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面〕(4)復(fù)用性設(shè)計(5)靈活性設(shè)計〔保證軟件靈活性設(shè)計的關(guān)鍵是抽象〕。6.一般地,模塊可以按照在軟件系統(tǒng)中的功能劃分為4種類型?(1)傳入模塊:傳入模塊的功能是取得數(shù)據(jù)或輸入數(shù)據(jù),經(jīng)過某些處理,數(shù)據(jù)可能被輸出到系統(tǒng)的外部,也可能會輸出到其他模塊做進(jìn)一步的處理,但最終的目標(biāo)是輸出到系統(tǒng)的外部(2)傳出模塊:傳出模塊的功能是輸出數(shù)據(jù),在輸出之前可能進(jìn)行某些處理,數(shù)據(jù)可能被輸出到系統(tǒng)的外部(3)變換模塊:變換模塊也叫加工模塊,它從上級調(diào)用模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其他形式,再將加工結(jié)果返回給調(diào)用模塊(4)協(xié)調(diào)模塊:協(xié)調(diào)模塊本身一般不對數(shù)據(jù)進(jìn)行加工。7.變換分析方法由以下4步組成?(1)重畫數(shù)據(jù)流圖(2)區(qū)分有效輸入、有效輸出和中心變換局部(3)進(jìn)行一級分解,設(shè)計上層模塊(4)進(jìn)行二級分解,設(shè)計輸入、輸出和中心變換局部的中、下層模塊。8.基于數(shù)據(jù)流方法的設(shè)計過程?(1)復(fù)查并精化數(shù)據(jù)流圖(2)確定數(shù)據(jù)流圖中數(shù)據(jù)流的類型,典型的數(shù)據(jù)流類型有變換數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流(3)導(dǎo)出初始的軟件結(jié)構(gòu)圖:根據(jù)數(shù)據(jù)流類型,應(yīng)用變換型映射方法或事務(wù)型映射方法得到初始的軟件結(jié)構(gòu)圖(4)逐級分解:對軟件結(jié)構(gòu)圖進(jìn)行逐級分解(5)精化軟件結(jié)構(gòu):使用設(shè)計度量和啟發(fā)式規(guī)那么對得到的軟件結(jié)構(gòu)進(jìn)一步精化(6)導(dǎo)出接口描述和全局?jǐn)?shù)據(jù)結(jié)構(gòu):對每一個模塊,給出進(jìn)出該模塊的信息。9.重畫數(shù)據(jù)流圖應(yīng)注意以下幾個要點(diǎn)?(1)以需求分析階段得到的數(shù)據(jù)流圖為根底重畫數(shù)據(jù)流圖時,可以從物理輸入到物理輸出或者相反(2)在圖上不要出現(xiàn)控制邏輯(3)不要去關(guān)注系統(tǒng)的開始和終止(4)省略每一個加工框的簡單例外處理(5)當(dāng)數(shù)據(jù)流進(jìn)入和離開一個加工框時,要仔細(xì)地標(biāo)記它們,不要重名(6)如有必要,可以使用邏輯運(yùn)算符*〔表示邏輯與〕和〔表示異或〕(7)仔細(xì)檢查每層數(shù)據(jù)流的正確性。10.事務(wù)分析方法的步驟如下?(1)識別事務(wù)源(2)規(guī)定適

溫馨提示

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

評論

0/150

提交評論