一盼产、名詞解釋
- DFD 數(shù)據(jù)流圖Data Flow Diagram
- PDL 過程設(shè)計(jì)語言 Process Design Language
- PAD 問題分析圖 Problem Analysis Diagram
- MTTF 平均無故障時(shí)間 Mean Time To Failure
- MTTR 平均維修時(shí)間 Mean Time To Repair
- MTBF 平均故障間隔時(shí)間 Mean Time Between Failure
- OOA 面向?qū)ο蠓治?Object Oriented Analysis
- OOD 面向?qū)ο笤O(shè)計(jì) Object Oriented Design
- OOP 面相對(duì)象的編程實(shí)現(xiàn) Object Oriented Programming
- FP 功能點(diǎn) Funciton Point
- UFP 未調(diào)整的功能點(diǎn) unadjusted function points
- TCF 技術(shù)復(fù)雜性因子technical complexity factor
- COCOMO 構(gòu)造性成本模型 constructive cost model
- EET 最早時(shí)刻
- LET 最遲時(shí)刻
- SQA 軟件質(zhì)量保證 software quality assurance
- CMM 能力成熟度模型 Capability Maturity Model
- JSP Jackson結(jié)構(gòu)化程序設(shè)計(jì)方法 Jackson Structured Programming
- Jackson方法 一種面向數(shù)據(jù)結(jié)構(gòu)的軟件設(shè)計(jì)方法
- Warnier 方法 一種面向數(shù)據(jù)結(jié)構(gòu)的軟件設(shè)計(jì)方法
- McCabe方法 根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度
- Halstead方法 根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來度量程序的復(fù)雜程度
- Alpha測(cè)試 由用戶在開發(fā)者的場(chǎng)所進(jìn)行切威,并且在開發(fā)者對(duì)用戶的指導(dǎo)下進(jìn)行測(cè)試
- Beta測(cè)試 有軟件的最終用戶在一個(gè)或多個(gè)客戶場(chǎng)所進(jìn)行
- BRO測(cè)試 一種條件測(cè)試(Branch and Relational Operator)
- SC 結(jié)構(gòu)圖 Structure Chart
- RUP Rational統(tǒng)一過程
- XP 極限編程 eEtreme Programming
- IPO圖 輸入、處理芽死、輸出圖
- HIPO圖 IPO圖(輸入、處理次洼、輸出圖)+H圖(層次圖)
- DSL 需求陳述語言
- PSL 問題陳述語言
- PSA 問題陳述分析系統(tǒng)
- CADSAT 計(jì)算機(jī)輔助設(shè)計(jì)和規(guī)格說明分析工具
- Petri網(wǎng):用于確定系統(tǒng)中隱含的定時(shí)問題的一種有效技術(shù)
- SA 結(jié)構(gòu)化分析
- SD 結(jié)構(gòu)化設(shè)計(jì)
- SP 結(jié)構(gòu)化編程
- DFD 數(shù)據(jù)流圖
- DD 數(shù)據(jù)字典
- CASE 計(jì)算機(jī)輔助軟件環(huán)境 Computer Aided Software Environment
二关贵、簡答與論述
(一)、歷年考題整理(標(biāo)章節(jié)號(hào)的來源于課后題)
-
簡答
【D1章】1卖毁、為什么會(huì)出現(xiàn)軟件危機(jī)揖曾?2018(5分)
(1) 來自軟件自身的特點(diǎn):是邏輯部件落萎,缺乏可見性;規(guī)模龐大炭剪、復(fù)雜练链,修改、維護(hù)困難奴拦。
(2) 軟件開發(fā)與維護(hù)的方法不當(dāng):忽視需求分析媒鼓;認(rèn)為軟件開發(fā)等于程序編寫;輕視軟件維護(hù)错妖。
(3) 供求矛盾將是一個(gè)永恒的主題:面對(duì)日益增長的軟件需求绿鸣,人們顯得力不從心。
【D2章】2暂氯、在軟件開發(fā)的早期階段為什么要進(jìn)行可行性研究潮模?
開發(fā)一個(gè)軟件時(shí),需要判斷原定的系統(tǒng)模型和目標(biāo)是否現(xiàn)實(shí)痴施,系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度再登,如果做不到這些,那么花費(fèi)在這些工程上的任何時(shí)間晾剖、人力锉矢、軟硬件資源和經(jīng)費(fèi),都是無謂的浪費(fèi)齿尽」了穑可行性研究的實(shí)質(zhì)是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)過程,就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程循头∶喙溃可行性研究的目的就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。
【D3章】3卡骂、怎樣與用戶有效地溝通以獲取用戶的真實(shí)需求国裳?
與用戶溝通獲取需求的方法:
訪談;面向數(shù)據(jù)流自頂向下求精全跨;簡易的應(yīng)用規(guī)格說明技術(shù)缝左;快速建立軟件原型
【D8章】4、軟件的可維護(hù)性與哪些因素有關(guān)浓若?
可理解性渺杉、可預(yù)測(cè)性、可修改性挪钓、可移植性是越、可重用性
【D1章】5、什么是軟件過程碌上?它與軟件工程方法學(xué)有何關(guān)系倚评?2017 (5分)
軟件過程:是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框架浦徊,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。
軟件工程方法學(xué):通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)天梧,也稱范型盔性。
軟件過程是軟件工程方法學(xué)的3個(gè)重要組成部分之一。
軟件工程方法學(xué)包含三個(gè)要素:方法敷燎、工具和過程鸵赖。
6妖混、從偽碼轉(zhuǎn)變?yōu)槌绦蛄鞒虉D或從程序流程圖轉(zhuǎn)變?yōu)閭未a是否是唯一的斋扰?請(qǐng)說明理由扛伍。
偽碼準(zhǔn)確地描述了程序的控制流程。由于偽碼在描述程序的控制流程時(shí)是無二義性的吴藻,因此,由偽碼變成的程序流程圖是唯一的弓柱。
但是沟堡,同樣的控制流程可以用不同的偽碼來描述侧但,因此,由程序流程圖轉(zhuǎn)變成的偽碼不是唯一的航罗。
7禀横、應(yīng)該依據(jù)什么準(zhǔn)則來評(píng)價(jià)狀態(tài)圖?
狀態(tài)圖應(yīng)該描繪所有可能的狀態(tài)轉(zhuǎn)換粥血。圖中每條弧都要有一個(gè)引起狀態(tài)轉(zhuǎn)換的事件柏锄。從開始結(jié)點(diǎn)(初態(tài))到每個(gè)結(jié)點(diǎn)(中間狀態(tài)),以及從每個(gè)結(jié)點(diǎn)到最終結(jié)點(diǎn)(終態(tài))复亏,都必須有一條路徑趾娃。
【補(bǔ)充】應(yīng)該根據(jù)什么準(zhǔn)則來評(píng)價(jià)用例圖?
用例圖從用戶的觀點(diǎn)來描述系統(tǒng)的功能蜓耻,因此茫舶,必須包含用戶關(guān)心的所有關(guān)鍵功能。
【補(bǔ)充】應(yīng)該根據(jù)什么準(zhǔn)則來評(píng)價(jià)腳本刹淌?
腳本必須從用戶的觀點(diǎn)來描述每個(gè)重要的功能序列饶氏,因此,腳本應(yīng)該能夠說明系統(tǒng)的一類重要功能或具體的使用方法有勾。
【第5版】8疹启、為什么說參數(shù)化類有助于提高可重用性?
在實(shí)際的應(yīng)用程序中蔼卡,有一些軟件元素喊崖,從邏輯功能看,彼此是相同的雇逞,所不同的主要是處理的對(duì)象類型不同荤懂。參數(shù)化類就是使用一個(gè)或者多個(gè)類型去參數(shù)化一個(gè)類的機(jī)制,有了這種機(jī)制塘砸,程序員可以先定義一個(gè)參數(shù)化的類模塊节仿,再使用時(shí)把數(shù)據(jù)類型作為參數(shù)傳遞進(jìn)來,在不同的應(yīng)用程序中重復(fù)使用掉蔬。
【D1章】9廊宪、軟件生命周期中每個(gè)階段的提交物是什么?2016 A(6分)
(1)軟件定義階段:
- 問題定義:項(xiàng)目開發(fā)計(jì)劃
- 可行性研究:可行性分析報(bào)告
- 需求分析:軟件需求規(guī)格說明書
(2)軟件開發(fā)階段: - 總體設(shè)計(jì):總體設(shè)計(jì)說明書
- 詳細(xì)設(shè)計(jì):詳細(xì)設(shè)計(jì)說明書
- 編碼和單元測(cè)試:源程序清單
- 綜合測(cè)試:軟件測(cè)試文檔和測(cè)試用例
(3)軟件維護(hù)階段: - 軟件維護(hù):軟件維護(hù)流程圖和維護(hù)報(bào)告
10女轿、常用的黑盒測(cè)試方法有哪些箭启?
等價(jià)劃分,邊界值分析蛉迹,錯(cuò)誤推測(cè)
【補(bǔ)充】常用的白盒測(cè)試方法有哪些傅寡?
邏輯覆蓋(語句覆蓋、判定覆蓋、條件覆蓋赏僧、判定/條件覆蓋大猛、條件組合覆蓋扭倾、點(diǎn)覆蓋淀零、邊覆蓋、路徑覆蓋)膛壹,
控制結(jié)構(gòu)測(cè)試(基本路徑測(cè)試驾中、條件測(cè)試、循環(huán)測(cè)試)
11模聋、面向?qū)ο蟪绦蛟O(shè)計(jì)思想主要包括哪些特性肩民?以及這些特性的具體含義是什么?
- 抽象:解釋類與對(duì)象之間關(guān)系的詞链方。類與對(duì)象之間的關(guān)系就是抽象的關(guān)系持痰。類是對(duì)象的抽象,而對(duì)象則是類得特例祟蚀,即類的具體表現(xiàn)形式工窍。
- 封裝:一是將有關(guān)數(shù)據(jù)和操作代碼封裝在對(duì)象當(dāng)中,形成一個(gè)基本單位前酿,各個(gè)對(duì)象之間相對(duì)獨(dú)立互不干擾患雏。二是將對(duì)象中某些屬性和操作私有化,已達(dá)到數(shù)據(jù)和操作信息隱蔽罢维,有利于數(shù)據(jù)安全淹仑,防止無關(guān)人員修改。
- 繼承:子類具有父類的各種屬性和方法肺孵。
- 多態(tài):代碼中可以出現(xiàn)的重名現(xiàn)象匀借,它是指在一個(gè)類中定義的屬性和方法被其他類繼承后,它們可以具有不同的意義和行為平窘,使得同一個(gè)屬性和方法在不同類中具有不同的意義吓肋。
12、請(qǐng)簡述耦合性的含義初婆?
一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互聯(lián)程度的度量蓬坡。
13、軟件測(cè)試過程一般可劃分為哪幾個(gè)主要階段磅叛?
- 模塊測(cè)試(單元測(cè)試)屑咳,
- 子系統(tǒng)測(cè)試,
- 系統(tǒng)測(cè)試弊琴,
- 驗(yàn)收測(cè)試(確認(rèn)測(cè)試)兆龙,
- 平行運(yùn)行
【D1章】14、軟件生存周期可以分為幾個(gè)階段?2016 B 2015(6分)
軟件定義紫皇、軟件開發(fā)慰安、軟件維護(hù)
- 軟件定義階段:問題定義,可行性研究聪铺,需求分析
- 軟件開發(fā)階段:總體設(shè)計(jì)化焕,詳細(xì)設(shè)計(jì)(前兩個(gè)階段又稱系統(tǒng)設(shè)計(jì))牍氛,編碼和單元測(cè)試嫌褪,綜合測(cè)試(后兩個(gè)階段又稱系統(tǒng)實(shí)現(xiàn))
軟件維護(hù)階段:軟件維護(hù)
15聪姿、什么是黑盒測(cè)試法辣苏?
功能測(cè)試腹缩,如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能挚歧,可以通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用
【補(bǔ)充】什么是白盒測(cè)試法檬果?
結(jié)構(gòu)測(cè)試泽篮,如果知道產(chǎn)品的內(nèi)部工作工程普气,可以通過測(cè)試來檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行谜疤。
16、請(qǐng)簡述需求分析的含義现诀?
準(zhǔn)確地回答系統(tǒng)做什么這個(gè)問題夷磕,對(duì)目標(biāo)系統(tǒng)提出完整,準(zhǔn)確赶盔,清晰企锌,具體的要求。
17于未、請(qǐng)簡述內(nèi)聚性的含義撕攒?
一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。
【D2章】18烘浦、可行性研究報(bào)告的主要內(nèi)容有哪些抖坪?
(1) 系統(tǒng)概述:說明開發(fā)的系統(tǒng)名稱,提出單位 和開發(fā)單位。
(2) 可行性研究的前提:系統(tǒng)目標(biāo);要求;約束和限制;可行性研究的基本準(zhǔn)則等闷叉。
(3) 對(duì)現(xiàn)有系統(tǒng)的分析:處理流程擦俐,圖示說明現(xiàn)有系統(tǒng)的處理流程和數(shù)據(jù)流程;現(xiàn)有系統(tǒng)存在的問題。
(4) 系統(tǒng)需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求握侧。
(5) 建議系統(tǒng):系統(tǒng)目標(biāo);處理流程;系統(tǒng)結(jié)構(gòu),功能,性能;系統(tǒng)技術(shù)可行性;投資和效益分析;操作可行性;法律可行性蚯瞧。
(6) 其它可選方案:與國內(nèi)外同類型方案的比較;提出一兩個(gè)可行性方案供論證和探討。
(7) 制定下一階段的預(yù)算品擎。
(8) 結(jié)論性意見:由用戶方埋合、設(shè)計(jì)方和投資方共同簽署意見。
-
論述
【D1章】1萄传、什么是軟件工程甚颂?它的目標(biāo)和內(nèi)容是什么?2018(10分)
軟件工程就是用科學(xué)的知識(shí)和技術(shù)原理來定義,開發(fā)振诬,維護(hù)軟件的一門學(xué)科蹭睡。軟件工程目標(biāo):付出較低開發(fā)成本;達(dá)到要求的功能赶么;取得較好的性能肩豁;開發(fā)的軟件易于移植;只需較低的維護(hù)費(fèi)用禽绪;能按時(shí)完成開發(fā)任務(wù)蓖救,及時(shí)交付使用;開發(fā)的軟件可靠性高印屁。軟件工程內(nèi)容:包括開發(fā)技術(shù)和開發(fā)管理兩個(gè)方面。
【D12章】2斩例、選擇面向?qū)ο蟪绦蛟O(shè)計(jì)語言時(shí)主要應(yīng)該考慮哪些因素雄人?
將來能否占主導(dǎo)地位;可重用性念赶;類庫础钠、開發(fā)環(huán)境;其他因素叉谜。
(項(xiàng)目的應(yīng)用領(lǐng)域旗吁、軟件開發(fā)的方法、軟件執(zhí)行的環(huán)境停局、算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性以及軟件開發(fā)人員的知識(shí)等很钓。)
【第5版】3、請(qǐng)說明多態(tài)重用與繼承重用的關(guān)系董栽。2017 (10分)
多態(tài)重用實(shí)際是一種特殊的繼承重用码倦,是充分利用多態(tài)性機(jī)制支持的繼承重用。一般來說锭碳,使用多態(tài)重用方式重用已有的類構(gòu)件時(shí)袁稽,在子類中需要重新定義的操作比較少,因此擒抛,多態(tài)重用方式比繼承重用方式成本低推汽。
【D13章】4、什么是軟件質(zhì)量歧沪?試敘述它與軟件可靠性的關(guān)系歹撒。
軟件質(zhì)量是軟件與明確地?cái)⑹龅墓δ芎托阅苄枨蟆⑽臋n中明確描述的開發(fā)標(biāo)準(zhǔn)以及任何專業(yè)開發(fā)的軟件產(chǎn)品都應(yīng)該具有的隱含特征一致的程度槽畔。
5栈妆、談?wù)凮verload和Override的區(qū)別。2016 A(10分)
目的:overload用于增加程序的可讀性。 override用于提供其超級(jí)類已經(jīng)提供的方法的特定實(shí)現(xiàn)鳞尔。
范圍:overload 在相同的類范圍內(nèi)內(nèi)執(zhí)行嬉橙。 override發(fā)生在兩類具有繼承(繼承)的關(guān)系。
參數(shù) :overload參數(shù)必須不同寥假。 override參數(shù)必須相同市框。
多態(tài)性:overload 靜態(tài)多態(tài),調(diào)用的函數(shù)在編譯時(shí)被選中。 override 是運(yùn)行時(shí)多態(tài)性的
override(重寫糕韧,覆蓋) 1枫振、方法名、參數(shù)萤彩、返回值相同粪滤。 2、子類方法不能縮小父類方法的訪問權(quán)限雀扶。 3杖小、子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。 4愚墓、存在于父類和子類之間予权。 5、方法被定義為final不能被重寫浪册。 overload(重載扫腺,過載) 1、參數(shù)類型村象、個(gè)數(shù)笆环、順序至少有一個(gè)不相同。 2煞肾、不能重載只有返回值不同的方法名咧织。 3、存在于父類和子類籍救、同類中习绢。
6、軟件開發(fā)設(shè)計(jì)模式都有哪些蝙昙?結(jié)合自身情況闪萄,談?wù)勀銓?duì)設(shè)計(jì)模式的理解?
創(chuàng)建型模式:單例模式奇颠、抽象工廠模式败去、建造者模式、工廠模式烈拒、原型模式圆裕。結(jié)構(gòu)型模式:適配器模式广鳍、橋接模式、裝飾模式吓妆、組合模式赊时、外觀模式、享元模式行拢、代理模式祖秒。
行為型模式:模版方法模式、命令模式舟奠、迭代器模式竭缝、觀察者模式、中介者模式沼瘫、備忘錄模式抬纸、解釋器模式、狀態(tài)模式晕鹊、策略模式松却、職責(zé)鏈模式、訪問者模式溅话。
設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的歌焦、經(jīng)過分類編目的飞几、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)
【D1章】7、什么是軟件危機(jī)独撇?軟件危機(jī)的表現(xiàn)是什么屑墨?其產(chǎn)生的原因是什么? 2015
軟件危機(jī)的定義:
軟件危機(jī)是指在計(jì)算機(jī)軟件開發(fā)纷铣、使用與維護(hù)過程中遇到的一系列嚴(yán)重問題和難題卵史。它包括兩方面:如何開發(fā)軟件,已滿足對(duì)軟件日益增長的需求搜立;如何維護(hù)數(shù)量不斷增長的已有軟件以躯。軟件危機(jī)的典型表現(xiàn):
(1) 對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。
(2) 用戶對(duì)已完成的軟件不滿意的現(xiàn)象時(shí)有發(fā)生啄踊。
(3) 軟件產(chǎn)品的質(zhì)量往往是靠不住的忧设。
(4) 軟件常常是不可維護(hù)的。
(5) 軟件通常沒有適當(dāng)?shù)奈臋n資料颠通。
(6) 軟件成本址晕、軟件維護(hù)費(fèi)在計(jì)算機(jī)系統(tǒng)總成本中所占比例逐年上升。
(7) 開發(fā)生產(chǎn)率提高的速度遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用普及的需求顿锰。軟件危機(jī)出現(xiàn)的原因:
(1) 來自軟件自身的特點(diǎn):是邏輯部件谨垃,缺乏可見性启搂;規(guī)模龐大、復(fù)雜刘陶,修改胳赌、維護(hù)困難。
(2) 軟件開發(fā)與維護(hù)的方法不當(dāng):忽視需求分析易核;認(rèn)為軟件開發(fā)等于程序編寫匈织;輕視軟件維護(hù)。
(3) 供求矛盾將是一個(gè)永恒的主題:面對(duì)日益增長的軟件需求牡直,人們顯得力不從心缀匕。補(bǔ)充:如何克服軟件危機(jī)
(1) 充分吸收和借鑒人類長期以來從事各種工程項(xiàng)目中積累的行之有效的有效原理、概念碰逸、技術(shù)與方法乡小, 特別是吸取幾十年來人類從事計(jì)算機(jī)硬件研究和開發(fā)的經(jīng)驗(yàn)教訓(xùn)。在開發(fā)軟件的過程中努力作到良好的組 織饵史,嚴(yán)格的管理满钟,相互友好的協(xié)作。
(2) 推廣在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法胳喷,并研究更好湃番、更有效的技術(shù)和方法,盡快克服在計(jì)算機(jī)系統(tǒng)早期發(fā)展階段形成的一些錯(cuò)誤概念和作法吭露。
(3) 根據(jù)不同的應(yīng)用領(lǐng)域吠撮,開發(fā)更好的軟件工具并使用這些工具。將軟件開發(fā)各個(gè)階段使用的軟件工具集合成一個(gè) 整體讲竿,形成一個(gè)很好的軟件開發(fā)支環(huán)環(huán)境泥兰。總之為了解決軟件危機(jī)题禀,既要有技術(shù)措施(方法和工具)鞋诗,又要有必要的組織管理措施。
8迈嘹、談?wù)勀鷮?duì)軟件設(shè)計(jì)過程中應(yīng)遵循的高內(nèi)聚削彬、低耦合原則的理解?
高內(nèi)聚就是提高慕牵快內(nèi)部的關(guān)聯(lián)程度,低耦合當(dāng)然就是降低某跃快之間的關(guān)聯(lián)程度
耦合性比較高的話,模塊代碼不易分離啄育,是不好的編程模式
內(nèi)聚是越高越好酌心,內(nèi)聚個(gè)人認(rèn)為是只是實(shí)現(xiàn)一個(gè)功能,不是很多的功能挑豌。
(二)安券、課后題+書中重點(diǎn)(按章節(jié)整理)
-
第一章軟件工程學(xué)概述
1墩崩、什么是軟件工程?它有哪些本質(zhì)特征侯勉?怎樣用軟件工程消除軟件危機(jī)鹦筹?
軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。
具體的定義:1993年IEEE的定義:軟件工程是:① 把系統(tǒng)的址貌、規(guī)范的铐拐、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程练对,也就是把工程應(yīng)用于軟件遍蟋;② 研究①中提到的途徑。
軟件工程的本質(zhì)特征:
(1) 軟件工程關(guān)注于大型程序的構(gòu)造
(2) 軟件工程的中心課題是分解問題螟凭,控制復(fù)雜性
(3) 軟件是經(jīng)常變化的虚青,開發(fā)過程中必須考慮軟件將來可能的變化
(4) 開發(fā)軟件的效率非常重要
(5) 和諧地合作是開發(fā)軟件的關(guān)鍵
(6) 軟件必須有效地支持它的用戶
(7) 在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品消除軟件危機(jī)的途徑:
(1) 對(duì)計(jì)算機(jī)軟件有一個(gè)正確的認(rèn)識(shí)(軟件≠程序)
(2) 必須充分認(rèn)識(shí)到軟件開發(fā)不是某種個(gè)體勞動(dòng)的神秘技巧,而應(yīng)該是一種組織良好螺男、管理嚴(yán)密棒厘、各類人員協(xié)同配合、共同完成的工程項(xiàng)目
(3) 推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法
(4) 開發(fā)和使用更好的軟件工具
2下隧、簡述結(jié)構(gòu)化范型和面向?qū)ο蠓缎偷囊c(diǎn)奢人,并分析他們的優(yōu)缺點(diǎn)。
- 傳統(tǒng)方法學(xué):也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型淆院。
優(yōu)點(diǎn):把軟件生命周期劃分成基干個(gè)階段达传,每個(gè)階段的任務(wù)相對(duì)獨(dú)立,而且比較簡單迫筑,便于不同人員分工協(xié)作,從而降低了整個(gè)軟件開發(fā)過程的困難程度宗弯。
缺點(diǎn):當(dāng)軟件規(guī)模龐大時(shí)脯燃,或者對(duì)軟件的需求是模糊的或會(huì)承受時(shí) 間而變化的時(shí)候,開發(fā)出的軟件往往不成功蒙保;而且維護(hù)起來仍然很困難辕棚。
- 面向?qū)ο蠓椒▽W(xué):
優(yōu)點(diǎn):降低了軟件產(chǎn)品的復(fù)雜性;提高了軟件的可理解性邓厕;簡化了軟件的開發(fā)和維護(hù)工作逝嚎;促進(jìn)了軟件重用。
3详恼、什么是軟件生命周期模型补君?試比較瀑布模型、快速原型模型昧互、增量模型和螺旋模型的優(yōu)缺點(diǎn)挽铁,說明每種模型的使用范圍伟桅。
軟件生命周期模型是跨越整個(gè)生存期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程叽掘、活動(dòng)和任務(wù)的結(jié)構(gòu)框架楣铁。
- 瀑布模型
優(yōu)點(diǎn):
它提供了一個(gè)模板,這個(gè)模板使得分析更扁、設(shè)計(jì)盖腕、編碼、測(cè)試和支持的方法可以在該模板下有一個(gè)共同的指導(dǎo)浓镜。雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多溃列。
缺點(diǎn):
(1) 實(shí)際的項(xiàng)目大部分情況難以按照該模型給出的順序進(jìn)行,而且這種模型的迭代是間接的竖哩,這很容易由微小的變化而造成大的混亂哭廉。
(2) 經(jīng)常情況下客戶難以表達(dá)真正的需求,而這種模型卻要求如此相叁,這種模型是不歡迎具有二義性問題存在的遵绰。
(3) 客戶要等到開發(fā)周期的晚期才能看到程序運(yùn)行的測(cè)試版本,而在這時(shí)發(fā)現(xiàn)大的錯(cuò)誤時(shí)增淹,可能引起客戶的驚慌椿访,而后果也可能是災(zāi)難性的。
- 快速原型模型
優(yōu)點(diǎn):使用戶能夠感受到實(shí)際的系統(tǒng)虑润,使開發(fā)者能夠快速地構(gòu)造出系統(tǒng)的框架成玫。
缺點(diǎn):產(chǎn)品的先天性不足,因?yàn)殚_發(fā)者常常需要做實(shí)現(xiàn)上的折中拳喻,可能采用不合適的操作系統(tǒng)或程序設(shè)計(jì)語言哭当,以使原型能夠盡快工作。
- 增量模型
優(yōu)點(diǎn):
(1) 人員分配靈活冗澈,剛開始不用投入大量人力資源钦勘,當(dāng)核心產(chǎn)品很受歡迎時(shí),可增加人力實(shí)現(xiàn)下一個(gè)增量亚亲。
(2) 當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時(shí)彻采,它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶捌归,對(duì)客戶起到鎮(zhèn)靜劑的作用肛响。
缺點(diǎn):
(1) 至始至終開發(fā)者和客戶糾纏在一起,直到完全版本出來惜索。
(2) 適合于軟件需求不明確特笋、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。
該模型具有一定的市場(chǎng)门扇。
- 螺旋模型
優(yōu)點(diǎn):
對(duì)于大型系統(tǒng)及軟件的開發(fā)雹有,這種模型是一個(gè)很好的方法偿渡。開發(fā)者和客戶能夠較好地對(duì)待和理解每一個(gè)演化級(jí)別上的風(fēng)險(xiǎn)。
缺點(diǎn):
(1) 需要相當(dāng)?shù)娘L(fēng)險(xiǎn)分析評(píng)估的專門技術(shù)霸奕,且成功依賴于這種技術(shù)溜宽。
(2) 很明顯一個(gè)大的沒有被發(fā)現(xiàn)的風(fēng)險(xiǎn)問題,將會(huì)導(dǎo)致問題的發(fā)生质帅,可能導(dǎo)致演化 的方法失去控制适揉。
(3) 這種模型相對(duì)比較新,應(yīng)用不廣泛煤惩,其功效需要進(jìn)一步的驗(yàn)證嫉嘀。
該模型適合于大型軟件的開發(fā)
4、為什么說噴泉模型較好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程無縫和迭代的特性魄揉?
因?yàn)槭褂妹嫦驅(qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí)剪侮,各個(gè)階段都使用統(tǒng)一的概念和表示符號(hào),因此洛退,整個(gè)開發(fā)過程都是吻合一致的瓣俯,或者說是無縫連接的,這自然就很容易實(shí)現(xiàn)各個(gè)開發(fā)步驟的反復(fù)多次迭代兵怯,達(dá)到認(rèn)識(shí)的逐步深化彩匕,而噴泉模型則很好的體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。
5媒区、試討論Rational統(tǒng)一過程的優(yōu)缺點(diǎn)驼仪。
優(yōu)點(diǎn):提高了團(tuán)隊(duì)生產(chǎn)力,在迭代的開發(fā)過程袜漩、需求管理绪爸、基于組建的體系結(jié)構(gòu)、可視化軟件建模宙攻、驗(yàn)證軟件質(zhì)量及控制軟件變更等方面毡泻、針對(duì)所有關(guān)鍵的開發(fā)活動(dòng)為每個(gè)開發(fā)成員提供了必要的準(zhǔn)則、模版和工具指導(dǎo)粘优,并確保全體成員共享相同的知識(shí)基礎(chǔ)。它建立了簡潔和清晰的過程結(jié)構(gòu)呻顽,為開發(fā)過程提供較大的通用性雹顺。
缺點(diǎn):RUP只是一個(gè)開發(fā)過程,并沒有涵蓋軟件過程的全部內(nèi)容廊遍,例如它缺少關(guān)于軟件運(yùn)行和支持等方面的內(nèi)容嬉愧,此外,他沒有支持多項(xiàng)目的開發(fā)結(jié)構(gòu)喉前,這在一定程度上降低了在開發(fā)組織內(nèi)大范圍實(shí)現(xiàn)重用的可能性没酣。
6王财、Rational統(tǒng)一過程主要適用于何種項(xiàng)目?
大型的需求不斷變化的復(fù)雜軟件系統(tǒng)項(xiàng)目
7裕便、說明敏捷過程的適用范圍
適用于商業(yè)競爭環(huán)境下對(duì)小型項(xiàng)目提出的有限資源和有限開發(fā)時(shí)間的約束
8绒净、說明微軟過程的適用范圍
適用于商業(yè)環(huán)境下具有有限資源和有限開發(fā)時(shí)間約束的項(xiàng)目的軟件過程模式
9、軟件工程方法學(xué):包含三個(gè)要素:方法偿衰、工具和過程挂疆。
最廣泛的方法學(xué)包括傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。
10下翎、軟件工程支撐環(huán)境:如果把各個(gè)階段使用的軟件工具有機(jī)地集合成一個(gè)集體缤言,支持軟件開發(fā)的全過程。
11视事、軟件開發(fā)中有哪幾種過程模型?哪些適用于面向?qū)ο蟮能浖_發(fā)?
軟件開發(fā)中常見的軟件過程模型有瀑布模型胆萧、原型模型、螺旋模型俐东、噴泉模型跌穗、統(tǒng)一軟件過程等。
其中噴泉模型犬性、統(tǒng)一軟件過程適用于面向?qū)ο蟮能浖_發(fā)
12瞻离、什么是軟件生存周期?它有哪幾個(gè)活動(dòng)?
軟件生存周期:一個(gè)軟件從提出開發(fā)要求開始直到該軟件報(bào)廢為止的整個(gè)時(shí)期。
包括:可行性分析和項(xiàng)目開發(fā)計(jì)劃乒裆,需求分析套利,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)鹤耍,編碼肉迫,測(cè)試,維護(hù)稿黄。
13喊衫、什么是軟件生存周期模型?有哪些主要模型?
生存周期模型:描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型。對(duì)軟件開發(fā)提供強(qiáng)有力的支持杆怕,為開發(fā)過程中的活動(dòng)提供統(tǒng)一的政策保證族购,為參與開發(fā)的人員提供幫助和指導(dǎo),是軟件生存周期模型化技術(shù)的基礎(chǔ)陵珍,也是建立軟件開發(fā)環(huán)境的核心寝杖。
主要有:瀑布模型,增量模型互纯,螺旋模型正林,噴泉模型蟆技,基于知識(shí)的模型稠屠,變換模型。
14辣往、軟件工程三要素之間的關(guān)系?
軟件質(zhì)量是軟件工程的生命線,軟件工程以質(zhì)量保證為基礎(chǔ)殖卑。
質(zhì)量管理促進(jìn)了過程的改進(jìn),創(chuàng)造了許多行之有效的軟件開發(fā)方法和工具站削。
軟件工程釆用層次化的方法,每個(gè)層次都包括過程、方法懦鼠、工具三要素钻哩。
方法支撐過程和工具,過程和工具又促進(jìn)方法學(xué)的研究肛冶。
-
第二章可行性研究
1街氢、應(yīng)該從哪些方面研究目標(biāo)系統(tǒng)的可行性?
一般說來睦袖,至少應(yīng)該從以下三個(gè)方面研究每種解法的可行性:
a.技術(shù)可行性珊肃。對(duì)要開發(fā)項(xiàng)目的功能、 性能和限制條件進(jìn)行分析馅笙, 確定在現(xiàn)有的資源條件下伦乔,技術(shù)風(fēng)險(xiǎn)有多大,項(xiàng)目是否能實(shí)現(xiàn)董习,這些即為技術(shù)可行性研究的內(nèi)容烈和。這里的資源包括已有的或可以搞到的硬件、軟件資源皿淋,現(xiàn)有技術(shù)人員的技術(shù)水平和已有的工作基礎(chǔ)招刹。
b.經(jīng)濟(jì)可行性。進(jìn)行開發(fā)成本的估算以及了解取得效益的評(píng)估窝趣, 確定要開發(fā)的項(xiàng)目是否值得投資開發(fā)疯暑,這些即為經(jīng)濟(jì)可行性研究的內(nèi)容對(duì)于大多數(shù)系統(tǒng),一般衡量經(jīng)濟(jì)上是否合算哑舒,應(yīng)考慮一個(gè)“底線”妇拯,經(jīng)濟(jì)可行性研究范圍較廣,包括成本—效益分析洗鸵, 長期公司經(jīng)營策略越锈, 開發(fā)所需的成本和資源,潛在的市場(chǎng)前景膘滨。
c.操作可行性瞪浸。有時(shí)還要研究社會(huì)可行性問題,研究要開發(fā)的項(xiàng)目是否存在任何侵犯吏祸、妨礙等責(zé)任問題。社會(huì)可行性所涉及的范圍也比較廣,它包括合同贡翘、責(zé)任蹈矮、 侵權(quán)和其他一些技術(shù)人員常常不了解的陷阱等。
必要時(shí)還應(yīng)該從法律鸣驱、社會(huì)效益等更廣泛的方面研究每種解法的可行性泛鸟。
2、可行性研究步驟:(7 步)
- 復(fù)查并確定系統(tǒng)規(guī)模和目標(biāo)
- 研究目前正在使用的系統(tǒng)
- 建立新系統(tǒng)的高層邏輯模型
- 導(dǎo)出和評(píng)價(jià)各種方案
- 推薦可行方案
- 草擬初步的開發(fā)計(jì)劃
- 編寫可行性研究報(bào)告提交審查
3踊东、數(shù)據(jù)流圖的定義(DFD):是一種圖形化技術(shù)北滥,描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出過程中所經(jīng)受的變換。無具體物理部件闸翅,只是描繪數(shù)據(jù)在軟件中流動(dòng)和被處理的邏輯過程再芋。在設(shè)計(jì)時(shí)值考慮系統(tǒng)必須完成的基本邏輯功能,完全不考慮具體怎么樣實(shí)現(xiàn)坚冀。描繪數(shù)據(jù)流向济赎,而不應(yīng)該描繪出現(xiàn)啊某個(gè)數(shù)據(jù)流的條件。
4记某、數(shù)據(jù)流圖的符號(hào):
- 正方形(或立方體)——數(shù)據(jù)的源點(diǎn)或終點(diǎn)
- 圓角矩形(或圓形)——交換數(shù)據(jù)的處理
- 開口矩形(或兩條平行線)——數(shù)據(jù)存儲(chǔ)
- → ——數(shù)據(jù)流司训,即特定數(shù)據(jù)的流動(dòng)方向
5、數(shù)據(jù)字典的作用:在軟件分析和設(shè)計(jì)的過程中給人提供關(guān)于數(shù)據(jù)的描述信息液南。
6壳猜、數(shù)據(jù)字典由對(duì)4類元素的定義組成:
①數(shù)據(jù)流;②數(shù)據(jù)流分量(即數(shù)據(jù)元素)滑凉;③數(shù)據(jù)存儲(chǔ)统扳;④處理
7、什么是數(shù)據(jù)字典?簡述數(shù)據(jù)字典與數(shù)據(jù)流圖的關(guān)系譬涡。
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合闪幽,對(duì)數(shù)據(jù)流程圖中的各個(gè)元素做完整的定義與說明,是數(shù)據(jù)流程圖的補(bǔ)充工具涡匀;
數(shù)據(jù)字典與數(shù)據(jù)流圖的關(guān)系:數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型盯腌,沒有數(shù)據(jù)字典數(shù)據(jù)流圖就不嚴(yán)格,然而沒有數(shù)據(jù)流圖數(shù)據(jù)字典也難于發(fā)揮作用陨瘩。 數(shù)據(jù)流圖和對(duì)數(shù)據(jù)流圖中每個(gè)元素的精確定義放在一起腕够,才能共同構(gòu)成系統(tǒng)的規(guī)格說明。
8舌劳、數(shù)據(jù)字典包括哪些內(nèi)容?它的作用是什么?
數(shù)據(jù)字典是描述數(shù)據(jù)流圖中數(shù)據(jù)的信息的集合帚湘。它對(duì)數(shù)據(jù)流圖上每一個(gè)成分:數(shù)據(jù)項(xiàng)、文件(數(shù)據(jù)結(jié)構(gòu))甚淡、數(shù)據(jù)流大诸、數(shù)據(jù)存儲(chǔ)、加工和外部項(xiàng)等給以定義和說明;它主要由數(shù)據(jù)流描述、加工描述和文件描述三部分組成资柔。對(duì)用戶來講,數(shù)據(jù)字典為他們提供了數(shù)據(jù)的明確定義;對(duì)系統(tǒng)分析員來講,數(shù)據(jù)字典幫助他們比較容 易修改已建立的系統(tǒng)邏輯模型焙贷。
-
第三章需求分析
1、為什么要進(jìn)行需求分析贿堰?通常對(duì)軟件系統(tǒng)有哪些要求辙芍?
(1)為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求羹与。對(duì)軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件故硅,不論我們把設(shè)計(jì)和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會(huì)令用戶失望纵搁,給開發(fā)者帶來煩惱吃衅。
(2)確定對(duì)系統(tǒng)的綜合要求:1、功能需求诡渴;2捐晶、性能需求;3妄辩、可靠性和可用性需求惑灵;4、出錯(cuò)處理需求眼耀;5英支、接口需求;6哮伟、約束干花;7、逆向需求楞黄;8池凄、將來可以提出的要求,分析系統(tǒng)的數(shù)據(jù)要求鬼廓。
2肿仑、需求分析的任務(wù):
- 確定隨系統(tǒng)的綜合要求(①功能需求;②性能需求碎税;③可靠性和可用性需求尤慰;④出錯(cuò)處理需求;⑤接口需求雷蹂;⑥約束伟端;⑦逆向需求;⑧將來可能提出的需求)
- 分析系統(tǒng)的數(shù)據(jù)要求
- 導(dǎo)出系統(tǒng)的邏輯模型
- 修正系統(tǒng)開發(fā)計(jì)劃
3匪煌、驗(yàn)證軟件需求的正確性的4個(gè)方面:
- 一致性 所有需求必須是一致的责蝠,任何一條需求不能和其他需求相互矛盾党巾。
- 完整性 需求必須是完整的,規(guī)格說明書應(yīng)包括用戶需求的每個(gè)功能霜医。
- 現(xiàn)實(shí)性 用現(xiàn)有的硬件技術(shù)或軟件技術(shù)基本上能實(shí)現(xiàn)的昧港。
- 有效性 需求是正確有效的,確實(shí)能解決用戶面對(duì)的問題支子。
4、驗(yàn)證軟件需求的方法:①驗(yàn)證需求的一致性达舒;②驗(yàn)證需求的現(xiàn)實(shí)性值朋;三驗(yàn)證需求的完整性和有效性。
5巩搏、需求分析的描述工具有哪些?
有數(shù)據(jù)流圖昨登、數(shù)據(jù)字典、判定表贯底、判定樹丰辣、結(jié)構(gòu)化自然語言、層次方框圖禽捆、Warnier 圖笙什、IPO 圖和需求描述 語言等。
6胚想、軟件需求規(guī)格說明書由哪些部分組成?
- 組成包括:
(1)引言:編寫目的琐凭、背景說明、術(shù)語定義及參考資料等浊服。
(2) 概述主要功能统屈、約束條件或特殊需求。
(3) 數(shù)據(jù)流圖與數(shù)據(jù)字典牙躺。
(4) 用戶接口愁憔、硬件接口及軟件接口。
(5) 性能需求孽拷、屬性等吨掌。
(6) 其它需求,如數(shù)據(jù)庫乓搬、操作及故障處理等思犁。
7、系統(tǒng)流程圖與數(shù)據(jù)流程圖有什么區(qū)別?
系統(tǒng)流程圖描述系統(tǒng)物理模型的工具进肯,數(shù)據(jù)流程圖描述系統(tǒng)邏輯模型的工具激蹲。系統(tǒng)流程圖從系統(tǒng)功能的角度抽象的描述系統(tǒng)的各個(gè)部分及其相互之間信息流動(dòng)的情況。
數(shù)據(jù)流程圖從數(shù)據(jù)傳送和加工的角度抽象的描述信息在系統(tǒng)中的流動(dòng)和數(shù)據(jù)處理的工作狀況江掩。
-
第四章形式化說明技術(shù)
1学辱、說明形式化說明技術(shù)和欠形式化方法的優(yōu)缺點(diǎn)乘瓤。
2、在什么情況下應(yīng)該使用形式化說明技術(shù)策泣?使用形式化說明技術(shù)應(yīng)遵守哪些規(guī)則衙傀?
在用非形式化的方式描述時(shí),存在矛盾萨咕,二義性统抬,含糊性,不完整性級(jí)抽象層次混亂等問題時(shí)用形式化說明技術(shù)危队。
應(yīng)用形式化方法的準(zhǔn)則:
A 應(yīng)該選用適當(dāng)?shù)谋硎痉椒ǎ?br> B 應(yīng)該形式化聪建,但不要過分形式化;
C 應(yīng)該估算成本茫陆;
D 應(yīng)該有形式化的方法顧問隨時(shí)提供咨詢金麸;
E 不應(yīng)該放棄傳統(tǒng)的開發(fā)方式;
F 應(yīng)該建立詳盡的文檔簿盅;
G 不應(yīng)該放棄質(zhì)量標(biāo)準(zhǔn)挥下;
H 不應(yīng)該盲目依賴形式化方法;
I 應(yīng)該測(cè)試桨醋,測(cè)試再測(cè)試棚瘟;
J 應(yīng)該重用-
第五章總體設(shè)計(jì)
1、系統(tǒng)設(shè)計(jì)包括哪兩個(gè)階段
系統(tǒng)設(shè)計(jì)包括總體設(shè)計(jì)與詳細(xì)設(shè)計(jì)兩個(gè)階段讨盒。
2解取、總體設(shè)計(jì)的主要任務(wù)是什么?
總體設(shè)計(jì)的主要任務(wù)是完成軟件結(jié)構(gòu)的設(shè)計(jì),確定系統(tǒng)的模塊及其模塊之間的關(guān)系返顺。
3禀苦、總體設(shè)計(jì)的9個(gè)步驟
1)設(shè)想供選擇的方案
2)選取合理的方案
3)推薦最佳方案
4) 功能分解
5)設(shè)計(jì)軟件結(jié)構(gòu)
6)設(shè)計(jì)數(shù)據(jù)庫
7)制定測(cè)試計(jì)劃
8)書寫文檔
9)審查和復(fù)審
4、軟件設(shè)計(jì)過程中遵循的基本原理
模塊化遂鹊、抽象振乏、逐步求精、信息隱藏和局部化秉扑、模塊獨(dú)立
5慧邮、什么是模塊?模塊具有哪幾個(gè)特征?總體設(shè)計(jì)主要考慮什么特征?
模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募现勐剑梢詥为?dú)命名且可通過名字來訪問误澳。 模塊具有輸入和輸出(參數(shù)傳遞)、功能秦躯、內(nèi)部數(shù)據(jù)結(jié)構(gòu)(局部變量)和程序代碼四個(gè)特性忆谓。 概要設(shè)計(jì)主要考慮輸入、輸出(參數(shù)傳遞)和功能兩個(gè)特性踱承。
6倡缠、什么是模塊化?模塊設(shè)計(jì)的準(zhǔn)則?
模塊化是按規(guī)定的原則將一個(gè)大型軟件劃分為一個(gè)個(gè)較小的哨免、相對(duì)獨(dú)立但又相關(guān)的模塊。
模塊設(shè)計(jì)的準(zhǔn)則:
(1) 改進(jìn)軟件結(jié)構(gòu), 提高模塊獨(dú)立性:在對(duì)初步模塊進(jìn)行合并昙沦、分解和移動(dòng)的分析琢唾、精化過程中力求提高模塊的內(nèi)聚,降低藕合盾饮。
(2) 模塊大小要適中:大約 50 行語句的代碼采桃,過大的 模塊應(yīng)分解以提高理解性和可維護(hù)性;過小的模塊,合并到上級(jí)模塊中。
(3) 軟件結(jié)構(gòu)圖的深度丘损、寬度芍碧、扇入和扇出要適當(dāng)。一般模塊的調(diào)用個(gè)數(shù)不要超過 5 個(gè)号俐。
(4) 盡量降低模塊接口的復(fù)雜程度;
(5) 設(shè)計(jì)單入 口、單出口的模塊定庵。
(6) 模塊的作用域應(yīng)在控制域之內(nèi)吏饿。
7、6種耦合和6種內(nèi)聚及其詳細(xì)解釋蔬浙、作用等
耦合:
(1)無直接耦合:如果兩個(gè)模塊分別從屬于不同模塊的控制和調(diào)用猪落,它們之間 不傳遞任何信息,沒有直接的聯(lián)系畴博,相互獨(dú)立笨忌,稱無直接耦合。
(2)數(shù)據(jù)耦合:如果兩個(gè)模塊之間有調(diào)用關(guān)系俱病,相互傳遞的信息以參數(shù)的形式 給出官疲,而且傳遞的信息僅僅是簡單的數(shù)據(jù),則稱為數(shù)據(jù)耦合亮隙。
(3)標(biāo)記耦合:如果兩個(gè)模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)途凫,而且被調(diào)用模塊不需要 作為參數(shù)傳遞過來的整體數(shù)據(jù)結(jié)構(gòu),只需要使用數(shù)據(jù)結(jié)構(gòu)其中一部分?jǐn)?shù)據(jù)元素溢吻, 則稱為標(biāo)記耦合维费。
(4)控制耦合:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),傳遞的信息控制了該模塊的功 能促王,則稱為控制耦合犀盟。
(5)公共環(huán)境耦合:兩個(gè)或多個(gè)模塊共用一個(gè)數(shù)據(jù)環(huán)境,稱為公共環(huán)境耦合蝇狼。
(6)內(nèi)容耦合:一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù)阅畴,一個(gè)模塊 不通過正 常入口而轉(zhuǎn)入另一個(gè)模塊內(nèi)部,一個(gè)模塊有多個(gè)入口题翰,這都屬于內(nèi)容耦合恶阴。內(nèi)聚:
(1)偶然內(nèi)聚:模塊內(nèi)的元素之間沒有意義上的聯(lián)系诈胜。
(2)邏輯內(nèi)聚:將邏輯上相同或相似的一類任務(wù)放在同一個(gè)模塊中,每次被調(diào) 用時(shí)冯事,由傳送給模塊的參數(shù)來確定該模塊應(yīng)完成的某一功能焦匈。
(3)時(shí)間內(nèi)聚:把需要同時(shí)執(zhí)行的動(dòng)作組合在一起形成的模塊稱為時(shí)間內(nèi)聚模塊。
(4)通信內(nèi)聚:如果模塊中所有元素都使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸 出數(shù)據(jù)昵仅,則稱為通信內(nèi)聚缓熟。
(5)順序內(nèi)聚:一個(gè)模塊中各個(gè)處理元素都緊密相關(guān)于同一個(gè)功能個(gè)且必須順 序執(zhí)行,此模塊的塊內(nèi)聯(lián)系屬順序內(nèi)聚摔笤。
(6)功能內(nèi)聚:模塊內(nèi)所有元素屬于一個(gè)整體够滑,共同完成一個(gè)單一功能,缺一 不可吕世,則稱為功能內(nèi)聚彰触。-
第六章詳細(xì)設(shè)計(jì)
1、詳細(xì)設(shè)計(jì)的目的?
為軟件結(jié)構(gòu)圖(SC 圖或 HC 圖)中的每一個(gè)模塊確定采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出清晰的描述.
2命辖、詳細(xì)設(shè)計(jì)的主要任務(wù)?
編寫軟件的“詳細(xì)設(shè)計(jì)說明書”.軟件人員要完成的工作:
(1) 為每一個(gè)模塊確定采用的算法, 選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,寫出模塊的詳細(xì)過程描述
(2) 確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu).
(3) 確定模塊結(jié)構(gòu)的細(xì)節(jié),包括對(duì)系統(tǒng)外部的接口和用戶界面,對(duì) 系統(tǒng)內(nèi)部其它模塊的接口,以及關(guān)于模塊輸入數(shù)據(jù)况毅、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié).
(4) 為每一個(gè)模塊設(shè) 計(jì)出一組測(cè)試用例,以便在編碼階段對(duì)模塊代碼(即程序)進(jìn)行預(yù)定的測(cè)試.
【補(bǔ)充】詳細(xì)設(shè)計(jì)的基本任務(wù)是什么?
詳細(xì)設(shè)計(jì)的基本任務(wù)包括:為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì);為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)尔艇;對(duì)數(shù)據(jù)庫進(jìn)行物理設(shè)計(jì)尔许;其他設(shè)計(jì);編寫詳細(xì)設(shè)計(jì)說明書终娃;評(píng)審味廊。
3、結(jié)構(gòu)化程序設(shè)計(jì)的基本原則?
在詳細(xì)設(shè)計(jì)中所有模塊都使用單入口棠耕、單出口的順序余佛、選擇、循環(huán)三種基本控制結(jié)構(gòu)窍荧。
4衙熔、比較面向數(shù)據(jù)流和面向數(shù)據(jù)結(jié)構(gòu)兩類設(shè)計(jì)方法的異同?
相同點(diǎn):
(1) 遵守結(jié)構(gòu)程序設(shè)計(jì)“由頂向下”逐步細(xì)化的原則,并以其為共同的基礎(chǔ);
(2) 均服從“程序結(jié)構(gòu)必須適應(yīng)問題結(jié)構(gòu)”的基本原則,各自擁有從問題結(jié)構(gòu)(包括數(shù)據(jù)結(jié)構(gòu))導(dǎo)出程序結(jié)構(gòu)的一組映射 規(guī)則。不同點(diǎn):
(1) 面向數(shù)據(jù)流的設(shè)計(jì)以數(shù)據(jù)流圖為基礎(chǔ)搅荞,在分析階段用DFD表示軟件的邏輯模型红氯,在設(shè) 計(jì)階段按數(shù)據(jù)流類型,將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)咕痛。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)痢甘,從問題的數(shù) 據(jù)結(jié)構(gòu)出發(fā)導(dǎo)出它的程序結(jié)構(gòu)。
(2) 面向數(shù)據(jù)流的設(shè)計(jì)的最終目標(biāo)是軟件的最終SC圖茉贡,面向數(shù)據(jù)結(jié)構(gòu)的 設(shè)計(jì)的最終目標(biāo)是程序的過程性描述塞栅。
5.比較 Jackson方法和 LCP方法的異同?
- Jackson 與 LCP 設(shè)計(jì)方法都是以數(shù)據(jù)結(jié)構(gòu)為出發(fā)點(diǎn),以程序的過程描述為最終目標(biāo)腔丧,設(shè)計(jì)步驟基本相 似放椰。
- 它們的主要差別是:
(1)使用不同的表達(dá)工具作烟,其中 LCP 方法中的表達(dá)工具 Warnier 圖比 Jackson 設(shè)計(jì)方法中的表達(dá)工具 Jackson 圖有更大的通用性
(2)Jackson 方法的步驟和指 導(dǎo)原則有一定的靈活性,而 LCP 設(shè)計(jì)方法則更加嚴(yán)密砾医。
6拿撩、詳細(xì)設(shè)計(jì)有哪幾種描述方法?
詳細(xì)設(shè)計(jì)的描述方法有圖形、表格和語言如蚜,其中圖形常用結(jié)構(gòu)化程序流程圖压恒、盒圖和PAD(問題分析圖)為描述工具,語言常用過程設(shè)計(jì)語言(PDL)來作為工具错邦。
7探赫、什么是結(jié)構(gòu)化分析?它的結(jié)構(gòu)化體現(xiàn)在哪里?
- 結(jié)構(gòu)化分析:使用數(shù)據(jù)流程圖、數(shù)據(jù)字典撬呢、結(jié)構(gòu)化英語伦吠、判定表和判定樹等工具,來建立一種新的魂拦、稱為結(jié)構(gòu)化說明書的目標(biāo)文檔-需求規(guī)格說明書讨勤。
- 結(jié)構(gòu)化體現(xiàn)在將軟件系統(tǒng)抽象為一系列的邏輯加工單元,各單元之間以數(shù)據(jù)流發(fā)生關(guān)聯(lián)。
8晨另、結(jié)構(gòu)化程序設(shè)計(jì)的基本要點(diǎn)是什么?
(1)采用自頂向下、逐步求精的程序設(shè)計(jì)方法
(2)使用三種基本控制結(jié)構(gòu)構(gòu)造程序谱姓。任何程序都可以由順序借尿、選擇、重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)構(gòu)造屉来,這三種基本結(jié)構(gòu)的共同點(diǎn)是單入口路翻、單出口。
(3)主程序員組的組織形式茄靠。
-
第七章實(shí)現(xiàn)
1茂契、什么是模塊測(cè)試和集成測(cè)試?它們各有什么特點(diǎn)慨绳?
- 模塊測(cè)試是對(duì)每個(gè)單獨(dú)的模塊掉冶,分別用黑盒和白盒測(cè)試技術(shù),測(cè)試它的功能是否正確脐雪,檢查模塊控制結(jié)構(gòu)中的特定路徑并發(fā)現(xiàn)最大數(shù)量的錯(cuò)誤厌小。
- 其特點(diǎn)是:主要應(yīng)用白盒測(cè)試的技術(shù),對(duì)多個(gè)模塊的測(cè)試可以并發(fā)的進(jìn)行战秋。
- 集成測(cè)試是把模塊裝配在一起形成完整的軟件包璧亚,在裝配的同時(shí)進(jìn)行測(cè)試。
- 特點(diǎn)是:可能發(fā)生接口問題脂信。
2癣蟋、軟件測(cè)試的基本任務(wù)?
軟件測(cè)試是按照特定的規(guī)則透硝,發(fā)現(xiàn)軟件錯(cuò)誤的過程;好的測(cè)試方案是盡可能發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯(cuò)誤的
測(cè)試;成功的測(cè)試方案是發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯(cuò)誤的測(cè)試;
3、測(cè)試與調(diào)試的主要區(qū)別?
(1) 測(cè)試從一個(gè)側(cè)面證明程序員的失敗;調(diào)試證明程序員的正確;
(2) 測(cè)試從已知條件開始疯搅,使用預(yù)先定義的程序濒生,且有預(yù)知的結(jié)果,不可預(yù)見的僅是程序是否通過測(cè)試;調(diào)試從不可知內(nèi)部條件開始秉撇,除統(tǒng)計(jì)性調(diào)試外甜攀,結(jié)果是不可預(yù)見的;
(3) 測(cè)試有計(jì)劃并且要進(jìn)行測(cè)試設(shè)計(jì);調(diào)試不 受時(shí)間約束;
(4) 測(cè)試是發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤琐馆、重新測(cè)試的過程;調(diào)試是一個(gè)推理的過程;
(5) 測(cè)試執(zhí)行 是有規(guī)程的;調(diào)試執(zhí)行要求程序員進(jìn)行必要的推理;
(6) 測(cè)試由獨(dú)立的測(cè)試組在不了解軟件設(shè)計(jì)的件下完 成;調(diào)試由了解詳細(xì)設(shè)計(jì)的程序員完成;
(7) 大多數(shù)測(cè)試的執(zhí)行和設(shè)計(jì)可由工具支持;調(diào)試用的工具主要 是調(diào)試器规阀。
4、人工復(fù)審的方式和作用?
人工復(fù)審的方式:代碼會(huì)審瘦麸、走查和排練和辦公桌檢查;
人工復(fù)審的作用:檢查程序的靜態(tài)錯(cuò)誤谁撼。
5、什么是黑盒測(cè)試?黑盒測(cè)試主要采用的技術(shù)有哪些?
黑盒測(cè)試也稱為功能測(cè)試,它著眼于程序的外部特征,而不考慮程序的內(nèi)部邏輯結(jié)構(gòu)滋饲。測(cè)試者把被測(cè)程序看成一個(gè)黑盒,不用關(guān)心程序的內(nèi)部結(jié)構(gòu)厉碟。黑盒測(cè)試是在程序接口處進(jìn)行測(cè)試,它只檢查程序功能是否能 按照規(guī)格說明書的規(guī)定正常使用屠缭,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息箍鼓,并且保持外部信 息(如數(shù)據(jù)庫或文件)的完整性。
黑盒測(cè)試主要采用的技術(shù)有:等價(jià)分類法呵曹、邊沿值分析法款咖、錯(cuò)誤推測(cè)法和因果圖等技術(shù)。
6奄喂、什么是白盒測(cè)試?白盒測(cè)試主要采用的技術(shù)有哪些?
- 測(cè)試者了解被測(cè)程序的內(nèi)部結(jié)構(gòu)和處理過程,對(duì)程序的所有邏輯路徑進(jìn)行測(cè)試,在不同點(diǎn)檢查程序狀態(tài), 確定實(shí)際狀態(tài)與預(yù)期狀態(tài)是否一致铐殃。
= 白盒測(cè)試主要采用的技術(shù)有:路徑測(cè)試技術(shù)和事務(wù)處理流程技術(shù),對(duì)包含有大量邏輯判斷或條件組合的程序采用基于邏輯的測(cè)試技術(shù)跨新。
7富腊、路徑測(cè)試技術(shù)中幾種主要覆蓋的含義?
- 語句覆蓋:至少執(zhí)行程序中所有語句一次。
- 判定覆蓋:使被測(cè)程序中的每一個(gè)分支至少執(zhí)行一次域帐。故也稱為分支覆蓋赘被。
- 條件覆蓋:執(zhí)行所有可能的穿過程序的控制路流程。
- 條件組合測(cè)試:設(shè)計(jì)足夠的測(cè)試用例肖揣,使每個(gè)判定中的所有可能條件取值組合至少執(zhí)行一次帘腹。
8、等價(jià)分類法的測(cè)試技術(shù)采用的一般方法?舉例說明?
(1) 為每個(gè)等價(jià)類編號(hào);
(2) 設(shè)計(jì)一個(gè)新的測(cè)試 方案,以盡可能多的覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟,直到所有有效等價(jià)類被覆蓋為止许饿。
(3) 設(shè)計(jì)一個(gè)新的測(cè)試方案,使它覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類, 重復(fù)這一步驟,直到所有無效等價(jià) 類被覆蓋為止阳欲。
9、軟件測(cè)試的一般步驟?
單元測(cè)試、子系統(tǒng)測(cè)試球化、系統(tǒng)測(cè)試秽晚、驗(yàn)收測(cè)試、平行測(cè)試筒愚。
10赴蝇、軟件測(cè)試的策略?
(1) 在任何情況下都應(yīng)使用邊界值分析的方法。
(2) 必要時(shí)用等價(jià)類劃分法補(bǔ)充測(cè) 試方案巢掺。
(3) 必要時(shí)再用錯(cuò)誤推測(cè)法補(bǔ)充測(cè)試方案句伶。
(4) 對(duì)照程序邏輯,檢查已設(shè)計(jì)出的測(cè)試方案陆淀。
(5) 根據(jù)對(duì)程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn)考余,再補(bǔ)充一些測(cè)試方案。
11轧苫、測(cè)試的定義及目的:
①測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行的過程楚堤。
②好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。
③成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試含懊。
12身冬、什么是動(dòng)態(tài)測(cè)試?為何靜態(tài)測(cè)試方法往往比動(dòng)態(tài)測(cè)試方法效率高岔乔?
動(dòng)態(tài)測(cè)試是通過運(yùn)行軟件來檢驗(yàn)其動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性酥筝。 動(dòng)態(tài)測(cè)試是實(shí)際運(yùn)行被測(cè)程序,輸入相應(yīng)的測(cè)試用例雏门,判定執(zhí)行結(jié)果是否符合要求嘿歌,從而檢驗(yàn)程序的正確性、可靠性和有效性剿配。
靜態(tài)測(cè)試是對(duì)被測(cè)程序進(jìn)行特性分析的一些方法的總稱,這種方法的主要特性是不利用計(jì)算機(jī)運(yùn)行被測(cè)試的程序阅束,而是采用其他手段達(dá)到檢測(cè)的目的呼胚。因而在代碼產(chǎn)生之前便可對(duì)各種文檔進(jìn)行測(cè)試,其效率當(dāng)然高于動(dòng)態(tài)測(cè)試息裸。
13蝇更、單元測(cè)試與集成測(cè)試相關(guān)概念。
(1)請(qǐng)簡述單元測(cè)試的主要內(nèi)容呼盆?
模塊接口測(cè)試年扩、局部數(shù)據(jù)結(jié)構(gòu)測(cè)試壁拉、路徑測(cè)試瘾腰、錯(cuò)誤處理測(cè)試、邊界測(cè)試
(2)在單元測(cè)試中屎暇,所謂單元是如何劃分的?
單元測(cè)試的對(duì)象通常是軟件設(shè)計(jì)的最小邏輯單元况脆,單元的劃分在面向過程的結(jié)構(gòu)化程序中一般是函數(shù)或子過程饭宾,在面向?qū)ο蟮某绦蛑锌梢允穷惢蝾惖某蓡T函數(shù)。
(3)如果開發(fā)時(shí)間緊迫格了,是否可以跳過單元測(cè)試而直接進(jìn)行集成測(cè)試看铆?
不可以。因?yàn)闆]有經(jīng)過單元測(cè)試的模塊會(huì)遺留大量的缺陷到集成測(cè)試階段盛末,而在集成測(cè)試階段對(duì)這些缺陷定位困難弹惦,導(dǎo)致后續(xù)工作展開困難,修復(fù)缺陷成本成指數(shù)級(jí)增長悄但。
(4)集成測(cè)試也叫組裝測(cè)試又叫聯(lián)合測(cè)試棠隐,為何要進(jìn)行集成測(cè)試?
在的基礎(chǔ)上算墨,將所有模塊按照設(shè)計(jì)要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng)宵荒,進(jìn)行集成測(cè)試。實(shí)踐表明净嘀,一些模塊雖然能夠單獨(dú)地工作报咳,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題挖藏,在全局上很可能暴露出來暑刃,影響功能的實(shí)現(xiàn)。
14膜眠、軟件測(cè)試要經(jīng)過哪些步驟?這些測(cè)試與軟件開發(fā)各階段之間有什么關(guān)系?
- 軟件測(cè)試要經(jīng)過的步驟是:單元測(cè)試→子系統(tǒng)測(cè)試→集成測(cè)試→確認(rèn)測(cè)試→平行運(yùn)行
- 單元測(cè)試對(duì)源程序中每一個(gè)程序單元進(jìn)行測(cè)試岩臣,檢查各個(gè)模塊是否正確實(shí)現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯(cuò)誤宵膨。該階段涉及編碼和詳細(xì)設(shè)計(jì)文檔架谎。
- 集成測(cè)試是為了檢查與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的有關(guān)問題,也就是檢查概要設(shè)計(jì)是否合理有效辟躏。
- 確認(rèn)測(cè)試主要是檢查已實(shí)現(xiàn)的軟件是否滿足需求規(guī)格說明書中確定了的各種需求谷扣。
- 系統(tǒng)測(cè)試是把已確認(rèn)的軟件與其他系統(tǒng)元素(如硬件、其他支持軟件捎琐、數(shù)據(jù)会涎、人工等)結(jié)合在一起進(jìn)行測(cè)試。以確定軟件是否可以支付使用瑞凑。
15末秃、調(diào)試的目的是什么?調(diào)試有哪些技術(shù)手段?
調(diào)試則是在進(jìn)行了成功的測(cè)試之后才開始的工作。調(diào)試的目的是確定錯(cuò)誤的原因和位置籽御,并改正錯(cuò)誤练慕,因此調(diào)試也稱為糾錯(cuò)(Debug)惰匙。調(diào)試的技術(shù)手段有簡單的調(diào)試方法、歸納法贺待、演繹法和回溯法等徽曲。
-
第八章 維護(hù)
1、在軟件開發(fā)過程中應(yīng)該采取哪些措施來提高軟件產(chǎn)品的可維護(hù)性麸塞?
在每個(gè)階段結(jié)束前的技術(shù)審查和管理復(fù)查中秃臣,應(yīng)該著重對(duì)可維護(hù)性進(jìn)行復(fù)審過程中,應(yīng)該對(duì)將來要改進(jìn)的部分和可能要改的部分加以注意指明哪工,應(yīng)該討論軟件的可移植性問題奥此,考慮可能影響軟件維護(hù)的系統(tǒng)界面。在設(shè)計(jì)和編碼過程中應(yīng)該盡量使用可重用的軟件構(gòu)件雁比,每個(gè)測(cè)試步驟都可以暗示在軟件正式交付使用之前稚虎,程序中可能需要做預(yù)防性維護(hù)的部分。在完成每項(xiàng)維護(hù)工作之后偎捎,都應(yīng)該對(duì)軟件維護(hù)本身仔細(xì)認(rèn)真地復(fù)審蠢终。
2、維護(hù)的定義
軟件維護(hù)是指軟件系統(tǒng)交付使用以后茴她,為了改正軟件運(yùn)行錯(cuò)誤寻拂, 或者因滿足新的需求而加入新功能的修改軟件的過程
3、為什么說軟件的維護(hù)是不可避免的?
因?yàn)檐浖拈_發(fā)過程中丈牢,一般很難檢測(cè)到所有的錯(cuò)誤祭钉,其次軟件在應(yīng)用過程中需要隨用戶新的要求或 運(yùn)行環(huán)境的變化而進(jìn)行軟件的修改或完成功能的增刪等,為了提高軟件的應(yīng)用水平和使用壽命己沛,軟件的維 護(hù)是不可避免的慌核。
4、軟件的維護(hù)一般分為哪幾類?
①為了糾正正在使用過程中暴露出來的錯(cuò)誤而進(jìn)行的改正性維護(hù)申尼。
②為了適應(yīng)外部環(huán)境的變化而進(jìn)行的適應(yīng)性維護(hù)
③為了改進(jìn)原有的軟件而進(jìn)行的完善性維護(hù)
④為了改進(jìn)將來的可維護(hù)性和可靠性而進(jìn)行的預(yù)防性維護(hù)
5垮卓、影響軟件維護(hù)的因素有哪些?
開發(fā)方法:采用模塊化詳細(xì)設(shè)計(jì)文檔有助于理解軟件的結(jié)構(gòu)、界面功能和內(nèi)部流程;開發(fā)過程中嚴(yán)格 而科學(xué)的管理規(guī)劃及清晰可靠的文檔資料對(duì)發(fā)生錯(cuò)誤后的理解與糾錯(cuò)是至關(guān)重要的;開發(fā)過程中模塊的獨(dú) 立程度越高师幕,對(duì)軟件修改越容易粟按,對(duì)軟件的改進(jìn)和移植越方便。
開發(fā)條件:軟件開發(fā)及維護(hù)人員的水平?jīng)Q定了軟件開發(fā)的質(zhì)量和維護(hù)的效率;開發(fā)過程中使用標(biāo)準(zhǔn)的 程序設(shè)計(jì)語言和標(biāo)準(zhǔn)的操作系統(tǒng)接口们衙,可以大大提高軟件的可維護(hù)性;在測(cè)試過程中用例的有效性钾怔,可極 大地減少軟件存在的錯(cuò)誤;其次使用規(guī)范化的文檔資料可為維護(hù)提供更好的依據(jù)碱呼。
6蒙挑、軟件維護(hù)困難主要表現(xiàn)在什么方面?
(1)理解別人寫的程序通常很困難
(2)需要維護(hù)的軟件文檔資料太少
(3)當(dāng)要求對(duì)軟件維護(hù)時(shí),不能指望由開發(fā)人員給人們仔細(xì)說明文檔
(4)絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒有考慮將來的修改
(5)軟件維護(hù)不是一項(xiàng)吸引人的工作
7愚臀、決定軟件可維護(hù)性的因素?
(1) 軟件的可理解性忆蚀、可測(cè)試性、可修改性、可移植性馋袜、可重用性
(2) 文檔描述符合要求男旗、用戶文檔簡潔明確、系統(tǒng)文檔完整并且標(biāo)準(zhǔn)
8欣鳖、簡述提高可維護(hù)性的方法察皇。
(1)建立明確的軟件質(zhì)量目標(biāo);
(2)利用先進(jìn)的軟件開發(fā)技術(shù)和工具泽台;
(3)建立明確的質(zhì)量保證工作什荣;
(4)選擇可維護(hù)的程序設(shè)計(jì)語言;
(5)改進(jìn)程序文檔怀酷。
-
第九章 面向?qū)ο蠓椒▽W(xué)引論
1稻爬、什么是面向?qū)ο蠓椒▽W(xué)?它有哪些優(yōu)點(diǎn)蜕依?
- OO=objects+classes+inheritance+communication with messages 也就是說,面向?qū)ο缶褪羌仁褂脤?duì)象又使用類和繼承等機(jī)制,而且對(duì)象之間僅能通過傳遞消息實(shí)現(xiàn)彼此通信桅锄。
- 盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程样眠,也就是使描述問題的問題空間與實(shí)現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致友瘤。
- 優(yōu)點(diǎn):
與人類習(xí)慣的思維方法一致
穩(wěn)定性好
可重用性好
較易開發(fā)大型軟件產(chǎn)品
可維護(hù)性好
2、什么是“對(duì)象”吹缔?它與傳統(tǒng)的數(shù)據(jù)有何異同商佑?
人們把客觀世界中的實(shí)體抽象為問題域中的對(duì)象。
異同:它不是被動(dòng)地等待外界對(duì)它施加操作厢塘,相反茶没,它是進(jìn)行處理的主體。必須發(fā)消息請(qǐng)求對(duì)象主動(dòng)地執(zhí)行它的某些操作晚碾,處理它的私有數(shù)據(jù)抓半,而不能從外界直接對(duì)它的私有數(shù)據(jù)進(jìn)行操作。
(對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體格嘁,這個(gè)封裝體有可以唯一地標(biāo)識(shí)它的名字笛求,而且向外界提供一組服務(wù)。)
3糕簿、什么是“類”探入?
類是對(duì)具有相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述。
4懂诗、什么是“繼承”蜂嗽?
子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。
5殃恒、什么是模型植旧?開發(fā)軟件為何要建模辱揭?
模型就是為了理解而對(duì)事物作出的一種抽象,是對(duì)事物的一種無歧義的書面描述病附。
軟件開發(fā)建立模型是為了幫助我們思考問題问窃、定義術(shù)語、在選擇術(shù)語時(shí)作出適當(dāng)?shù)募僭O(shè)完沪,并且有助于保持定義和假設(shè)的一致性域庇。
6、面向?qū)ο蟮姆椒▽W(xué)方程
OO=objects+classes+inheritance+communication with messages
對(duì)象 類 繼承 消息
7覆积、面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn):
①與人類習(xí)慣的思維方法一致
②穩(wěn)定性好
③可重用性好
④較易開發(fā)大型軟件產(chǎn)品
⑤可維護(hù)性
8较剃、對(duì)象模型:表示靜態(tài)的,結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)技健。它是對(duì)模擬客觀世界實(shí)體的對(duì)象以及對(duì)象彼此間的關(guān)系的映射写穴,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。
9雌贱、動(dòng)態(tài)模型:表示瞬時(shí)的啊送、行為化的系統(tǒng)的“控制”性質(zhì)。它規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列
10欣孤、功能模型:表示變化的系統(tǒng)的“功能”性質(zhì)馋没,它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映用戶對(duì)目標(biāo)系統(tǒng)的需求降传。
11篷朵、三種模型之間的關(guān)系:功能模型指明了系統(tǒng)應(yīng)該“做什么”;動(dòng)態(tài)模型明確規(guī)定了什么時(shí)候(即在何種狀態(tài)下接受了什么事件的出發(fā))做婆排;對(duì)象模型則定義了做事情的實(shí)體声旺。
12、面向?qū)ο蠓椒▽W(xué)包含哪些核心概念段只?簡述之
(1) 對(duì)象:對(duì)象是現(xiàn)實(shí)世界中個(gè)體或事物的抽象表示腮猖,是其屬性和相關(guān)操作的封裝。
(2) 類:類是對(duì)具有相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述赞枕。
(3) 繼承:類之間的繼承關(guān)系是現(xiàn)實(shí)世界中遺傳關(guān)系的模擬澈缺,它表示類之間的內(nèi)在聯(lián)系 以及對(duì)屬性和操作的共享。
(4) 聚集:現(xiàn)實(shí)世界普遍存在部分—整體關(guān)系炕婶。
(5) 消息:消息傳遞是對(duì)象與其外部世界相互關(guān)聯(lián)的唯一途徑姐赡。
13、說明面向?qū)ο蟮奶卣?
(1)對(duì)象唯一性柠掂。每個(gè)對(duì)象都有自身唯一的標(biāo)識(shí)项滑,在對(duì)象生存期中,其標(biāo)識(shí)不變陪踩,不同的對(duì)象不能有不同的標(biāo)識(shí)杖们。
(2)分類性。是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對(duì)象抽象成類
(3)繼承性肩狂。是子類自動(dòng)共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制摘完,這是類之間的一種關(guān)系。
(4)多態(tài)性傻谁。是指相同的操作或函數(shù)過程可以作用于多種類型的對(duì)象上并獲得不同的結(jié)果孝治。
-
第十章 面向?qū)ο蠓治?/h5>
1、面向?qū)ο蠓治觯?/strong>就是抽取和整理用戶需求并建立問題域精確模型的過程审磁。
-
第十一章 面向?qū)ο笤O(shè)計(jì)
1谈飒、面向?qū)ο笤O(shè)計(jì)應(yīng)該遵循哪些準(zhǔn)則?簡述每條準(zhǔn)則的內(nèi)容态蒂,并說明遵循這條準(zhǔn)則的必要性
模塊化杭措、抽象、信息隱藏钾恢、弱耦合手素、強(qiáng)內(nèi)聚、可重用瘩蚪。
2泉懦、簡述有助于提高面向?qū)ο笤O(shè)計(jì)質(zhì)量的每條主要啟發(fā)規(guī)則的內(nèi)容和必要性。
(1)設(shè)計(jì)結(jié)果應(yīng)該清晰易懂,使設(shè)計(jì)結(jié)果清晰疹瘦、易讀崩哩、易懂,是提高軟件可維護(hù)性和可重用性的重要措施;
(2)一般言沐、特殊結(jié)構(gòu)的深度應(yīng)適當(dāng),應(yīng)該使類等級(jí)中包含的層次數(shù)適當(dāng);
(3)設(shè)計(jì)簡單的類,應(yīng)該盡量設(shè)計(jì)小而簡單的類,以便于開發(fā)和管理;
(4)使用簡單的協(xié)議,一般說來,消息中的參數(shù)不要超過3個(gè);
(5)使用簡單的服務(wù),一般只有3—5行源程序語句,可以用僅含一個(gè)動(dòng)詞和一個(gè)賓語的簡單句子描述它的功能;
(6)把設(shè)計(jì)變動(dòng)減至最小,即使出現(xiàn)必須修改設(shè)計(jì)的情況,也應(yīng)該使修改的范圍盡可能小邓嘹。
3、為什么說類構(gòu)件是目前比較理想的可重用軟構(gòu)件险胰?它有哪些重用方式吴超?
具備可重用的軟構(gòu)件應(yīng)有的特點(diǎn):獨(dú)立、可塑鸯乃、接口清晰(文檔詳盡)鲸阻。
重用方式有:實(shí)例重用、繼承重用和多態(tài)重用缨睡。
-
第十二章 面向?qū)ο髮?shí)現(xiàn)
1鸟悴、面向?qū)ο髮?shí)現(xiàn)應(yīng)該選用哪種程序設(shè)計(jì)語言?為什么?
(1)將來能否占主導(dǎo)地位,為了使自己的產(chǎn)品在若干年后仍然具有很強(qiáng)的生命力;
(2)可重用性,采用面向?qū)ο蠓椒ㄩ_發(fā)軟件的基本目的和主要優(yōu)點(diǎn),是通過重用提高軟件生產(chǎn)率;
(3)類庫和開發(fā)環(huán)境,決定可重用性的因素,不僅僅是面向?qū)ο蟪绦蛘Z言本身,開發(fā)環(huán)境和類庫也是非常要的因素;
(4)其他因素,對(duì)用戶學(xué)習(xí)面向?qū)ο蠓治觥⒃O(shè)計(jì)和編碼技術(shù)所能提供的培訓(xùn)服務(wù);在使用這個(gè)面向?qū)ο笳Z言期間能提供的技術(shù)支持;能提供給開發(fā)人員使用的開發(fā)工具奖年、開發(fā)平臺(tái)细诸、發(fā)行平臺(tái);對(duì)機(jī)器性能和內(nèi)存的需求;集成已有軟件的容易程度等。
2陋守、面向?qū)ο蟪绦蛟O(shè)計(jì)語言主要有哪些技術(shù)特點(diǎn)震贵?
(1)支持類與對(duì)象概念的機(jī)制
(2)實(shí)現(xiàn)整體部分(即聚集)結(jié)構(gòu)的機(jī)制
(3)實(shí)現(xiàn)一般特殊(即泛化)結(jié)構(gòu)的機(jī)制
(4)實(shí)現(xiàn)性和服務(wù)的機(jī)制
(5)類型檢查
(6)類庫
(7)效率
(8)持久保存對(duì)象
(9)參數(shù)化類
(10)開發(fā)環(huán)境
3利赋、良好的面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格主要有哪些準(zhǔn)則?
- 良好的面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格,即包括傳統(tǒng)的程序設(shè)計(jì)風(fēng)格準(zhǔn)則,也包括為適應(yīng)面向?qū)ο蠓椒ㄋ赜械母拍?例如,繼承性)而必須遵循的一些新準(zhǔn)則。
- 提高可重用性:1猩系、提高方法的內(nèi)聚;2媚送、減小方法的規(guī)模;3、保持方法的一致性;4寇甸、把策略與實(shí)現(xiàn)分開;5塘偎、全面覆蓋;6、盡量不使用全局信息;7拿霉、利用繼承機(jī)制吟秩。
- 提高可擴(kuò)充性:1、封裝實(shí)現(xiàn)策略;2绽淘、不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈;3涵防、避免使用多分支語句;4、精心確定公有方法沪铭。
- 提高健壯性:1武学、預(yù)防用戶的操作錯(cuò)誤;2、檢查參數(shù)的合法性;3伦意、不要預(yù)先確定限制條件;4火窒、先測(cè)試后優(yōu)化。
4驮肉、測(cè)試面向?qū)ο筌浖r(shí),單元測(cè)試熏矿、集成測(cè)試和確認(rèn)測(cè)試各有哪些新特點(diǎn)?
- 面向?qū)ο蟮膯卧獪y(cè)試,最小的可測(cè)試單元是封裝起來的類和對(duì)象。測(cè)試面向?qū)ο筌浖r(shí),不能再孤立地測(cè)試單個(gè)操作,而應(yīng)該把操作作為類的一部分來測(cè)試离钝。
- 面向?qū)ο蟮募蓽y(cè)試,主要有下述兩種不同的策略:1票编、基于線程的測(cè)試。這種策略把響應(yīng)系統(tǒng)的一個(gè)輸入或一個(gè)事件所需要的那些類集成起來卵渴。
- 基于使用的測(cè)試慧域。面向?qū)ο蟮拇_認(rèn)測(cè)試,面向?qū)ο筌浖拇_認(rèn)測(cè)試也集中檢查用戶可見的動(dòng)作和用戶可識(shí)別的輸出。
5浪读、測(cè)試面向?qū)ο筌浖r(shí)昔榴,主要有哪些設(shè)計(jì)單元測(cè)試用例的方法?
隨機(jī)測(cè)試碘橘、劃分測(cè)試互订、基于故障的測(cè)試
6、測(cè)試面向?qū)ο筌浖r(shí)痘拆,主要有哪些設(shè)計(jì)集成測(cè)試用例的方法仰禽?
多類測(cè)試、從動(dòng)態(tài)模型中導(dǎo)出測(cè)試用例。也可采用隨機(jī)測(cè)試吐葵、劃分測(cè)試的方法规揪。
7、測(cè)試面向?qū)ο筌浖r(shí)温峭,主要有哪些設(shè)計(jì)確認(rèn)測(cè)試用例的方法猛铅?
可以采用傳統(tǒng)的黑盒方法,也可以采用基于情景的方法
-
第十三章 軟件項(xiàng)目管理
1诚镰、一個(gè)程序能既正確又不可靠嗎?解釋一下自己的答案祥款。
答:能清笨。所謂軟件可靠性,是程序在給定的時(shí)間間隔內(nèi)按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率.通常認(rèn)為,軟件可靠性既包含正確性又包含健壯性,也就是說,不僅在預(yù)定環(huán)境下程序應(yīng)該能正確地完成預(yù)期功能,而且在硬件發(fā)生故障,輸入的數(shù)據(jù)無效或用戶操作錯(cuò)誤等意外環(huán)境下,程序也應(yīng)該能做出適當(dāng)?shù)捻憫?yīng). 如果一個(gè)程序在預(yù)定環(huán)境下能夠正確地完成預(yù)期的功能,但是在意外環(huán)境下不能做出適當(dāng)?shù)捻憫?yīng),則該程序就是既正確又不可靠
2、什么是基線刃跛?為什么要建立基線抠艾?
答:是已經(jīng)通過了正式復(fù)審的規(guī)格說明或中間產(chǎn)品,它可以作為進(jìn)一步開發(fā)的基礎(chǔ)桨昙,并且只有通過正式的變化控制過程才能改變它检号。建立基線的三大原因是:重現(xiàn)性、可追蹤性和報(bào)告蛙酪。重現(xiàn)性是指及時(shí)返回并重新生成軟件系統(tǒng)給定發(fā)布版的能力齐苛,或者是在項(xiàng)目中的早些時(shí)候重新生成開發(fā)環(huán)境的能力」鹑可追蹤性建立項(xiàng)目工件之間的前后繼承關(guān)系凹蜂。其目的在于確保設(shè)計(jì)滿足要求、代碼實(shí)施設(shè)計(jì)以及用正確代碼編譯可執(zhí)行文件阁危。報(bào)告來源于一個(gè)基線內(nèi)容同另一個(gè)基線內(nèi)容的比較玛痊。基線比較有助于調(diào)試并生成發(fā)布說明狂打。建立基線后擂煞,需要標(biāo)注所有組成構(gòu)件和基線,以便能夠?qū)ζ溥M(jìn)行識(shí)別和重新建立趴乡。
3对省、配置審計(jì)和技術(shù)復(fù)審有何不同?可否把它們的功能放在一次復(fù)審終完成晾捏?
答:正式的技術(shù)復(fù)審關(guān)注被修改后的配置對(duì)象的技術(shù)正確性官辽。復(fù)審者審查該對(duì)象以確定它與其他軟件配置項(xiàng)的一致性,并檢查是否有遺漏或副作用粟瞬,軟件配置審計(jì)通過評(píng)估配置對(duì)象的那些通常不在復(fù)審過程中考慮的特征同仆,而成為對(duì)正式技術(shù)復(fù)審的補(bǔ)充。
4裙品、CMM的基本思想是什么俗批?為什么要把能力成熟度劃分為5個(gè)等級(jí)俗或?
CMM的基本思想是,由于問題是由我們管理軟件過程的方法不當(dāng)引起的岁忘,所以軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高軟件的生產(chǎn)率和質(zhì)量辛慰。把能力成熟度劃分成5個(gè)等級(jí)的原因是:對(duì)軟件的改進(jìn)不可能一撅而就。
整理于:張海藩, 牟永民, 軟件工程導(dǎo)論(第6版), 清華大學(xué)出版社, 2016.