第一篇:《軟件工程導(dǎo)論》第五版 張海藩 編著 總結(jié)
《軟件工程導(dǎo)論》第五版 張海藩 編著 總結(jié)
分類: Computer System2011-01-04 10:14 6417人閱讀 評(píng)論(10)收藏 舉報(bào)
測(cè)試數(shù)據(jù)結(jié)構(gòu)工具任務(wù)文檔軟件測(cè)試
總結(jié)重點(diǎn): ??Unit1
??軟件危機(jī)包含兩方面的問題:一是如何開發(fā)軟件,怎樣滿足人們對(duì)軟件日益增長的需求?二是如何維護(hù)軟件,使它們持久地滿足人們的要求。
??軟件工程學(xué)定義:把軟件當(dāng)作一種工業(yè)產(chǎn)品,采用工程學(xué)的原理來管理和組織軟件的開發(fā)和維護(hù),稱為軟件工程。
??軟件是指程序、數(shù)據(jù)和文檔三者共同構(gòu)成的配臵。
??包含與數(shù)據(jù)處理系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則以及相關(guān)文檔的智力創(chuàng)作稱為軟件。文檔是描述程序開發(fā)過程的,是智力創(chuàng)作的真實(shí)記錄,是創(chuàng)作活動(dòng)的歷史檔案和結(jié)晶。??軟件的描述性定義:軟件由計(jì)算機(jī)程序,數(shù)據(jù)結(jié)構(gòu)和文檔組成。
??軟件質(zhì)量定義為“與軟件產(chǎn)品滿足規(guī)定的和隱含的需求能力有關(guān)的特征和特性的全體” 具體來說: 1)軟件產(chǎn)品中能滿足給定需求的性質(zhì)和特性的總體; 2)軟件具有所期望的各種屬性的組合程度。
??將軟件質(zhì)量屬性劃分為六個(gè)特性(功能性、可靠性、易用性、效率、維護(hù)性和可移植性),這六個(gè)屬性是面向用戶的觀點(diǎn)——面向管理的觀點(diǎn),且是定性描述的。
??軟件質(zhì)量度量體系:內(nèi)部度量可用于開發(fā)階段的非執(zhí)行軟件產(chǎn)品,外部度量只能在生存周期過程中的測(cè)試階段和任何運(yùn)行階段使用。
??軟件工程項(xiàng)目的基本目標(biāo):(1)低成本;(2)滿足功能要求;(3)高性能;(4)易移植;(5)易維護(hù)。??軟件工程方法學(xué)就是要從技術(shù)和管理上提供如何去設(shè)計(jì)和維護(hù)軟件。
??軟件開發(fā)方法:面向數(shù)據(jù)流(約旦)方法、面向數(shù)據(jù)結(jié)構(gòu)方法、面向?qū)ο蠓椒ā?/p>
??結(jié)構(gòu)程序設(shè)計(jì)是進(jìn)行以模塊功能和處理過程設(shè)計(jì)為主的詳細(xì)設(shè)計(jì)的基本原則。它的主要觀點(diǎn)是采用自頂向下、逐步求精的程序設(shè)計(jì)方法;使用三種基本控制結(jié)構(gòu)構(gòu)造程序,任何程序都可由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造。
??用來輔助軟件開發(fā)、運(yùn)行、維護(hù)、管理、支持等過程中活動(dòng)的軟件稱為軟件工具(CASE)。
??軟件生存周期定義:軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護(hù),直到最后不再使用的整個(gè)過程。各階段的任務(wù)彼此間盡可能的相對(duì)獨(dú)立,同一階段內(nèi)各項(xiàng)任務(wù)的性質(zhì)盡可能的相同。軟件的開發(fā)就是“按軟件順時(shí)間發(fā)展的過程分階段進(jìn)行”的。??軟件生存周期模型:
瀑布模型(階段間具有順序型和依賴性,清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì)、盡可能推遲程序的物理實(shí)現(xiàn),是文檔驅(qū)動(dòng)模型,遵循結(jié)構(gòu)化設(shè)計(jì));
原型模型(軟件產(chǎn)品的開發(fā)是線性順序進(jìn)行的,本質(zhì)是快速,用途是獲知用戶的真正需求,一旦需求確定,原型將被拋棄)。其核心都是將軟件開發(fā)劃分為:分析、設(shè)計(jì)、編碼、測(cè)試和維護(hù)。
??軟件生存周期劃分為以下幾個(gè)階段:可行性研究與計(jì)劃、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)、組裝測(cè)試、確認(rèn)測(cè)試、使用和維護(hù)。
??軟件過程:是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟 ??軟件工程方法學(xué):通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱范型 ??軟件工程過程是軟件生存周期中各個(gè)可能的過程,這些過程可進(jìn)一步劃分成為了提供或獲得軟件產(chǎn)品或服務(wù),或是為了完成軟件工程項(xiàng)目需要完成的有關(guān)軟件工程活動(dòng),每一項(xiàng)活動(dòng)又可分解為一些軟件工程任務(wù)。標(biāo)準(zhǔn)定義了21個(gè)過程分屬三類:基本過程(include獲取、供應(yīng)、開發(fā)、運(yùn)作、維護(hù)過程)、支持過程和組織過程。??軟件工程三要素:方法、工具和過程。??軟件工程管理
目的:為了按照進(jìn)度及預(yù)算完成軟件計(jì)劃,實(shí)現(xiàn)預(yù)期的經(jīng)濟(jì)和社會(huì)效益。內(nèi)容:成本估算、進(jìn)度安排、人員組織、質(zhì)量保證、配臵管理等等。怎么強(qiáng)調(diào)軟件工程管理的極其重要性都不會(huì)過分
??Unit2 ??可行性研究
任務(wù)和目的:用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠在一定規(guī)模之內(nèi)解決。(確定這一問題是否存在值得去做的解)
過程和步驟:
實(shí)質(zhì):進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)過程,也就是在較高層次上以抽象方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)過程。
技術(shù)和工具:DFD+DD
??主要內(nèi)容
(1)澄清問題定義 ——規(guī)模、約束和限制
(2)導(dǎo)出新系統(tǒng)的邏輯模型
(3)導(dǎo)出若干個(gè)供選擇的物理解法(物理模型),并分別研究它們的可能行:
??數(shù)據(jù)流圖符號(hào)
Example:
??數(shù)據(jù)流圖的基本目的是 利用它作為交流信息的工具,另一個(gè)主要目的是作為分析和設(shè)計(jì)的工具。
??數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合,它是通過對(duì)數(shù)據(jù)元素和數(shù)據(jù)結(jié)構(gòu)的定義,來描述數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容的。??數(shù)據(jù)流和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。??數(shù)據(jù)字典的內(nèi)容:
數(shù)據(jù)流、數(shù)據(jù)元素、數(shù)據(jù)存儲(chǔ)、處理
??數(shù)據(jù)字典最重要的用途是作為分析階段的工具。
??Unit3 ??需求分析:
目的:精確地定義系統(tǒng)必須做什么,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。——為目標(biāo)系統(tǒng)提出精確的邏輯模型。
任務(wù):確定對(duì)系統(tǒng)的綜合要求,包括功能需求、性能需求、可靠性和可用性需求、運(yùn)行要求、將來可能提出的要求。過程:處理邏輯的分解:自頂向下逐步分解直到每個(gè)處理邏輯已是不可再分的“功能單元”為止。書寫文檔:軟件需求規(guī)格說明
工具:狀態(tài)圖、IPO圖、層次方框圖、Warnier圖
??結(jié)構(gòu)化分析設(shè)計(jì)技術(shù)是70年代中期由E.Yourdon等人提出來的一種面向數(shù)據(jù)流的方法;要求系統(tǒng)的開發(fā)工作在結(jié)構(gòu)化和模塊化的基礎(chǔ)上進(jìn)行,它系統(tǒng)的運(yùn)用了描述模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞和變換的關(guān)系,自頂向下逐層分解,直到找出滿足要求的可實(shí)現(xiàn)的軟件。
在這個(gè)方法里,“抽象”,“分解”,“模塊化”,“結(jié)構(gòu)化”是它的主要手段;面向數(shù)據(jù)傳遞、變換所形成的數(shù)據(jù)流(Dataflow)和數(shù)據(jù)流程圖(DFD)是它的主要依據(jù)。
這個(gè)方法的關(guān)鍵工作是:畫分層的DFD和確定數(shù)據(jù)定義與加工策略。??Yourdon方法(對(duì)應(yīng)的瀑布模型)的缺陷: 其實(shí)Yourdon方法是建立在三個(gè)假設(shè)之上的:
假設(shè)1:所有的需求都是可以預(yù)先定義的;
假設(shè)2:需求在較長一段時(shí)間內(nèi)是不變的(相對(duì)穩(wěn)定的);
假設(shè)3:運(yùn)用所提供的工具可以做到項(xiàng)目參與者之間清晰、準(zhǔn)確、有效的溝通。這三個(gè)假設(shè)往往是很難成立的:
“邏輯模型”的精確描述依賴于“自頂向下的求精過程”,而“自頂向下的求精過程”的順利進(jìn)行又依賴于精確的“邏輯模型”,這二個(gè)問題互相纏繞依賴而構(gòu)成方法學(xué)上的“死鎖”。??原型法(原型模型):
原型就是模型的意思(原型=模型),它指的是模擬某種產(chǎn)品的原始模型。運(yùn)用原型的策略:拋棄策略&附加策略 對(duì)原型的逐步求精過程是一個(gè)迭代過程
相對(duì)于Yourdon方法來說原型法是一個(gè)非線性的系統(tǒng)開發(fā)方法。不再強(qiáng)調(diào)高質(zhì)量的階段性文檔。
??螺旋模型:沿螺線自內(nèi)向外每旋轉(zhuǎn)一圈便開發(fā)出一個(gè)更為完善的軟件版本 ??Yourdon方法適合于“預(yù)先指定的系統(tǒng)”; ??原型法適合于“用戶驅(qū)動(dòng)的系統(tǒng)”。
??通常用“范式”定義消除數(shù)據(jù)冗余程度。第一范式數(shù)據(jù)冗余程度最大,第五范式數(shù)據(jù)冗余程度最小。??狀態(tài)轉(zhuǎn)換圖:
狀態(tài)時(shí)可以被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式,它規(guī)定了系統(tǒng)對(duì)事件的響應(yīng)方式。一張狀態(tài)圖有一個(gè)初態(tài)和0至多個(gè)終態(tài)。
事件:在某個(gè)特定時(shí)刻引起系統(tǒng)做動(dòng)作和(或)狀態(tài)轉(zhuǎn)換的控制信息。
??驗(yàn)證軟件需求的正確性:
一致性、完整性、現(xiàn)實(shí)性、有效性
??Unit4 ??總體設(shè)計(jì):
目的:確定系統(tǒng)的具體物理實(shí)現(xiàn)方案(系統(tǒng)結(jié)構(gòu)設(shè)計(jì)),確定組成每一個(gè)程序的模塊,以及模塊間的關(guān)系(軟件結(jié)構(gòu)設(shè)計(jì))。任務(wù):軟件結(jié)構(gòu)設(shè)計(jì)(過程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù))過程:
設(shè)想供選擇的方案
選取合理方案(每份方案有 系統(tǒng)流程圖、組成系統(tǒng)的物理元素清單、成本/效益分析、實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃 4份資料)等9步(P92)
??在軟件開發(fā)早期階段考慮測(cè)試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。??總體設(shè)計(jì)階段書寫的文檔:系統(tǒng)說明、用戶手冊(cè)、測(cè)試計(jì)劃、詳細(xì)的實(shí)現(xiàn)計(jì)劃、數(shù)據(jù)庫設(shè)計(jì)結(jié)果。
??總體設(shè)計(jì)過程中,推薦最佳方案后進(jìn)入“軟件結(jié)構(gòu)”設(shè)計(jì):設(shè)計(jì)出組成這個(gè)系統(tǒng)的所有程序、文件和數(shù)據(jù)庫,以及它們之間的聯(lián)系。軟件結(jié)構(gòu):由模塊組成的層次系統(tǒng)。模塊:數(shù)據(jù)說明、可執(zhí)行語句等程序。??C/S(Client/Server)結(jié)構(gòu)是軟件系統(tǒng)體系結(jié)構(gòu)
??“結(jié)構(gòu)化設(shè)計(jì)”概括地說就是:用一組標(biāo)準(zhǔn)的工具和準(zhǔn)則來確定系統(tǒng)應(yīng)該由哪些模塊、用什么方式聯(lián)結(jié)在一起,才能構(gòu)成一個(gè)最好的軟件結(jié)構(gòu)。
??模塊化就是把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。
??模塊: 具有四種屬性的一組程序語句稱為一個(gè)模塊,這四種屬性分別是:輸入和輸出、邏輯功能、運(yùn)行程序、內(nèi)部數(shù)據(jù)。(前兩個(gè)是模塊外部屬性,后兩個(gè)是內(nèi)部屬性,總體設(shè)計(jì)完成外部屬性設(shè)計(jì)、詳細(xì)設(shè)計(jì)完成內(nèi)部屬性設(shè)計(jì))
??軟件結(jié)構(gòu)圖中,模塊用一矩形表示。??模塊間調(diào)用:用→連接
??開發(fā)具有獨(dú)立功能而且和其它模塊之間沒有過多相互作用的模塊,可以做到模塊獨(dú)立。??影響模塊獨(dú)立的因素:
耦合(不同模塊間互聯(lián)程度)內(nèi)聚(同一模塊內(nèi)各元素緊密程度)
??力爭高內(nèi)聚、低耦合。??5種耦合形式:
數(shù)據(jù)耦合、控制耦合、特征耦合、公共耦合、內(nèi)容耦合(從左到右耦合程度遞增)最弱的耦合是非直接耦合
??7種內(nèi)聚形式:
功能內(nèi)聚、順序內(nèi)聚、通信內(nèi)聚、過程內(nèi)聚、時(shí)間內(nèi)聚、邏輯內(nèi)聚、偶然內(nèi)聚(從左到右程度依次遞減)??模塊的扇出與扇入:
模塊的扇出是指一個(gè)模塊擁有的直接下級(jí)模塊的個(gè)數(shù)。模塊的扇入是指一個(gè)模塊的直接上級(jí)模塊的個(gè)數(shù)。
模塊的扇出系數(shù)應(yīng)控制在7以內(nèi),盡可能的加大模塊的扇入系數(shù)。
??作用域應(yīng)該是控制域的子集;
??模塊的控制域和作用域:
模塊的控制域(控制范圍):是指這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。
模塊的作用域(判斷作用范圍):是指受該模塊內(nèi)一個(gè)判斷影響的所有模塊的集合。(也就是該模塊內(nèi)存在著判斷調(diào)用語句,而所有受到該判斷邏輯影響的模塊,就是該模塊的作用域。)作用域應(yīng)該是控制域的子集;理想的是作用域都是直接下屬模塊。??數(shù)據(jù)流類型——數(shù)據(jù)在DFD中流徑特征
變換流:進(jìn)入系統(tǒng)中的數(shù)據(jù)所流經(jīng)的路徑幾乎是一樣的。事務(wù)流:進(jìn)入系統(tǒng)中的數(shù)據(jù)所流經(jīng)的路徑不完全是一樣的。
??
??事務(wù)中心往往包含多個(gè)處理邏輯。
??
??“事務(wù)”是指一組輸入數(shù)據(jù)。
??Unit5 ??詳細(xì)設(shè)計(jì):
目的:完成模塊的過程設(shè)計(jì)(為SC中每個(gè)模塊確定采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出詳細(xì)清晰的描述。)
模塊的邏輯設(shè)計(jì)(模塊的過程描述)主要內(nèi)容:
1)為每個(gè)模塊確定采用的算法 2)確定每個(gè)模塊使用的內(nèi)部數(shù)據(jù)結(jié)構(gòu) 3)確定模塊的接口細(xì)節(jié) 4)制定模塊的測(cè)試計(jì)劃
完成模塊的“內(nèi)部屬性”設(shè)計(jì),即給出系統(tǒng)中各個(gè)模塊的“運(yùn)行程序”和“內(nèi)部數(shù)據(jù)”;由此可見詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終軟件的質(zhì)量。
詳細(xì)設(shè)計(jì)的目標(biāo)更重要的是便于維護(hù)。工具:
1.程序流程圖(流程圖)2.N-S圖(盒圖)
3.PAD圖(問題分析圖)
4.偽代碼和PDL語言
??邏輯設(shè)計(jì)應(yīng)遵循的理念:
1.從效率第一到清晰第一
2.結(jié)構(gòu)化的控制結(jié)構(gòu):結(jié)構(gòu)化程序設(shè)計(jì)=僅使用單入口單出口的三種基本控制結(jié)構(gòu) 3.逐步細(xì)化的實(shí)現(xiàn)方法
[例] 在一組數(shù)中找出其中的最大數(shù) 分別用程序流程圖、N-S圖和PAD圖描述 用“結(jié)構(gòu)化”保證程序的清晰易讀,用“逐步細(xì)化”實(shí)現(xiàn)程序的正確可靠,它們導(dǎo)致了一條自然的結(jié)論:模塊的邏輯設(shè)計(jì)必須用結(jié)構(gòu)化程序設(shè)計(jì)的原理來指導(dǎo)。(結(jié)構(gòu)化分析設(shè)計(jì)在詳細(xì)設(shè)計(jì)階段)??Yourdon方法的技術(shù)途徑:DFD→DFD+DD→SC→PDL
??Yourdon方法在分析階段,我們用DFD來表示軟件的邏輯模型;在設(shè)計(jì)階段,又按照數(shù)據(jù)流類型,分別用變換分析或事務(wù)分析將它們轉(zhuǎn)換成相應(yīng)的軟件結(jié)構(gòu)。??面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法的根據(jù)和基本思想:
算法和數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)中不可分割的側(cè)面,算法的結(jié)構(gòu)依賴于它要處理的數(shù)據(jù)結(jié)構(gòu)。只要事先知道一個(gè)問題的數(shù)據(jù)結(jié)構(gòu),就可以由此導(dǎo)出它的程序結(jié)構(gòu)。
??基于數(shù)據(jù)流還是基于數(shù)據(jù)結(jié)構(gòu)的出發(fā)點(diǎn)不同,最終目標(biāo)也不同。SADT(結(jié)構(gòu)化分析設(shè)計(jì)工具)方法的目標(biāo)是得出軟件的最終SC圖,它把注意力集中在模塊的合理劃分上;面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)則要求得出程序的過程性描述,并不明確也提出軟件應(yīng)該先分成模塊等概念。
??SADT方法:DFD->SC(軟件結(jié)構(gòu)圖)->模塊的過程性描述(PDL等)|<-------總體設(shè)計(jì)-------> | |<--------詳細(xì)設(shè)計(jì)------->|
Jackson方法(面向數(shù)據(jù)結(jié)構(gòu)):數(shù)據(jù)結(jié)構(gòu)->程序結(jié)構(gòu)->程序的過程性描述(偽代碼等)|<-----總體設(shè)計(jì)-----> | |<----------詳細(xì)設(shè)計(jì)--------->| ??程序復(fù)雜程度的定量度量:
1.程序圖(流圖)(用任何方法表示的詳細(xì)設(shè)計(jì)結(jié)果都可以變換成程序圖)
流程圖中的各種處理框均簡化成一個(gè)結(jié)點(diǎn)
2.環(huán)域復(fù)雜度
程序的結(jié)構(gòu)復(fù)雜度可用強(qiáng)連通的有向圖中線性無關(guān)環(huán)的個(gè)數(shù)來度量 V(G)= 判定結(jié)點(diǎn)數(shù) + ??Unit6
??編碼(也稱實(shí)現(xiàn))
任務(wù):把模塊的過程性描述翻譯為用該語言書寫的源程序(或源代碼)。??編碼的風(fēng)格
1.程序要清晰直觀,不要過于巧妙
2.用一定的原則指導(dǎo)控制結(jié)構(gòu)的使用(避免使用容易引起混淆的結(jié)構(gòu)和語句)3.有規(guī)律地使用GOTO語句
不得不把效率的考慮放在首位的時(shí)候,而結(jié)構(gòu)化程序又不能滿足時(shí)間要求時(shí),就可用GOTO語句來減少重復(fù)的代碼段;
4.實(shí)現(xiàn)源程序的文檔化(軟件=程序+文檔)<有意義的變量名稱、適當(dāng)注釋、標(biāo)準(zhǔn)的書寫格式>
??Unit7: ??軟件測(cè)試:
定義:程序測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。糾錯(cuò)(調(diào)試)是為了確定錯(cuò)誤的性質(zhì),并且加以糾正。
??軟件測(cè)試包括機(jī)器測(cè)試(動(dòng)態(tài)測(cè)試)(黑盒測(cè)試&白盒測(cè)試)和人工測(cè)試(代碼復(fù)審)(代碼走查+會(huì)審+辦公桌檢查)程序編譯通過后,應(yīng)該先人工測(cè)試(發(fā)現(xiàn)邏輯錯(cuò)誤)后機(jī)器測(cè)試(在設(shè)定的測(cè)試數(shù)據(jù)上執(zhí)行被測(cè)程序).??動(dòng)態(tài)測(cè)試是一個(gè)包括:①設(shè)計(jì)“測(cè)試用例”→②執(zhí)行被測(cè)程序→③分析測(cè)試結(jié)果并發(fā)現(xiàn)錯(cuò)誤的過程。(①設(shè)計(jì)“測(cè)試用例”是最關(guān)鍵)
測(cè)試用例={ 輸入數(shù)據(jù) + 期望結(jié)果 }
按照在設(shè)計(jì)“測(cè)試用例”時(shí),是否涉及程序的內(nèi)部結(jié)構(gòu),把動(dòng)態(tài)測(cè)試分為: 白盒測(cè)試:從程序的內(nèi)部邏輯入手,按照一定原則設(shè)計(jì)測(cè)試用例。
黑盒測(cè)試:僅以程序外部功能為依據(jù)來設(shè)計(jì)測(cè)試用例。檢查程序是否完成應(yīng)做的和是否做了不該做的。(按規(guī)格說明書的規(guī)定)
??軟件測(cè)試的的步驟:[見筆記本上圖]
單元測(cè)試:在編碼階段完成;以模塊為單位,(主要白盒)發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤
綜合測(cè)試:(模塊組裝測(cè)試、集成測(cè)試)以軟件的設(shè)計(jì)信息為依據(jù),主要用黑盒,發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤,也可能發(fā)現(xiàn)需求說明錯(cuò)誤。
確認(rèn)測(cè)試(驗(yàn)收測(cè)試):以軟件的需求信息為依據(jù),用黑盒,發(fā)現(xiàn)需求說明書中的錯(cuò)誤,驗(yàn)證軟件的有效性 系統(tǒng)測(cè)試:指整個(gè)計(jì)算機(jī)系統(tǒng)(包括軟件與硬件)的測(cè)試。??代碼復(fù)審
1.代碼會(huì)審:開會(huì)逐句朗讀和講解程序,精力集中于發(fā)現(xiàn)錯(cuò)誤,會(huì)后改正錯(cuò)誤 2.走查:與會(huì)者扮演“計(jì)算機(jī)”的角色 3.辦公桌檢查:一個(gè)人參加的代碼會(huì)審 ??黑盒測(cè)試方法:
??等價(jià)分類法:
按測(cè)試結(jié)果“等價(jià)”把被測(cè)程序的輸入域劃分為若干個(gè)等價(jià)類,每一個(gè)等價(jià)類都選擇一例“測(cè)試用例”,與“應(yīng)做的事情”相對(duì)應(yīng)的是“有效等價(jià)類”,而與“不應(yīng)該做的事情”相對(duì)應(yīng)的稱之為“無效等價(jià)類”。
設(shè)計(jì)等價(jià)類的測(cè)試用例分為兩步: 1.劃分等價(jià)類并給出定義;
2.選擇測(cè)試用例的原則:有效等價(jià)類的測(cè)試用例盡量公用;無效等價(jià)類必須每類一例。[例]某城市的電話號(hào)碼……[看筆記] ??邊界值分析法(邊值法)??錯(cuò)誤猜測(cè)法(猜錯(cuò)法)??因果圖法
??白盒測(cè)試方法:[見筆記]
合理的白盒測(cè)試,就是要選取足夠的測(cè)試用例,以實(shí)現(xiàn)對(duì)源程序比較充分的覆蓋。??邏輯覆蓋法:(按照由低到高對(duì)程序邏輯覆蓋程度的順序)
語句覆蓋:每條語句至少執(zhí)行一次;
判定覆蓋:不僅每條語句至少執(zhí)行一次,而且每一分支至少執(zhí)行一次;
條件覆蓋:不僅語句覆蓋,而且每個(gè)條件均按“真”、“假”兩種結(jié)果至少執(zhí)行一次; 條件組合覆蓋:不僅語句覆蓋,而且每個(gè)條件的所有可能組合都至少執(zhí)行一次。
??路徑覆蓋法:(按照由低到高對(duì)程序邏輯覆蓋程度)
結(jié)點(diǎn)覆蓋:每個(gè)結(jié)點(diǎn)走一次;相當(dāng)于語句覆蓋 邊覆蓋:每條邊走一次;相當(dāng)于判定覆蓋
路徑覆蓋:每條路徑走一次;(不需要考慮程序的循環(huán))
??Unit8
??面向?qū)ο蠡驹恚菏姑枋鰡栴}的問題空間和在計(jì)算機(jī)上解決問題的解空間在結(jié)構(gòu)上盡可能一致。??基本概念:
(1)對(duì)象:由數(shù)據(jù)以及可以施加在這些數(shù)據(jù)上的操作(或服務(wù)、方法、處理)所構(gòu)成的統(tǒng)一體,它是面向?qū)ο筌浖幕灸K。
(2)類:對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義(抽象)。(3)不同的對(duì)象彼此之間只能通過消息相互作用、相互聯(lián)系
(4)繼承:處于下一層次上的派生類自動(dòng)繼承了位于上一層次基類的屬性(數(shù)據(jù))和行為(操作)??面向?qū)ο缶褪羌仁褂脤?duì)象又使用類和繼承等機(jī)制,而對(duì)象之間僅能通過傳遞消息實(shí)現(xiàn)彼此間的通信。??UML 用視圖來表示被建模系統(tǒng)的各個(gè)方面,它把軟件模型分成5個(gè)視圖,每一個(gè)視圖代表完整系統(tǒng)的一個(gè)特定方面。每一個(gè)視圖又由一種或多種模型圖構(gòu)成。
1. 用例視圖:用來支持需求分析,也就是說系統(tǒng)將提供的功能是在用例視圖中描述的。
2. 邏輯視圖:定義系統(tǒng)的實(shí)現(xiàn)邏輯,重點(diǎn)關(guān)注的是系統(tǒng)的靜態(tài)結(jié)構(gòu)(類、對(duì)象及它們之間的關(guān)系),也描述系統(tǒng)內(nèi)部的動(dòng)態(tài)協(xié)作關(guān)系。它的模型圖包括類圖、對(duì)象圖、狀態(tài)圖、順序圖、協(xié)作圖及活動(dòng)圖等。3. 組件視圖:描述系統(tǒng)的實(shí)現(xiàn)模塊及它們之間的依賴關(guān)系。組件是不同類型的代碼模塊,通過代碼模塊的結(jié)構(gòu)和依賴關(guān)系來表示。
4. 部署視圖:描述軟件系統(tǒng)在計(jì)算機(jī)硬件系統(tǒng)和網(wǎng)絡(luò)上的安裝、分發(fā)和分布情況。5. 實(shí)現(xiàn)視圖:描述組成軟件系統(tǒng)的各個(gè)物理部件。??UML由三部分組成:基本構(gòu)造塊、規(guī)則和公用機(jī)制
??UML 定義了二類模型元素的圖形表示:一類模型元素用于表示模型中的某個(gè)概念,一類模型元素用于表示模型元素之間的關(guān)系 ?? 面向?qū)ο蠼#?/p>
對(duì)象模型——“誰做?”(類圖)動(dòng)態(tài)模型——“什么時(shí)候做?”(狀態(tài)圖)功能模型——“做什么?”(用例圖)
這三種模型都是必不可少的,對(duì)象模型是最核心的。
在面向?qū)ο蠓治鲋校瑯?gòu)造出完全獨(dú)立于實(shí)現(xiàn)的應(yīng)用域模型;在面向?qū)ο笤O(shè)計(jì)中,把求解域的結(jié)構(gòu)逐漸加入到模型中;在實(shí)現(xiàn)階段,把應(yīng)用域和求解域的結(jié)構(gòu)進(jìn)行編碼和驗(yàn)證。
??OO方法:OOA→OOD→OOP→OOT 是一個(gè)逐漸擴(kuò)充模型的過程,其間無需轉(zhuǎn)換概念和表示,開發(fā)活動(dòng)之間基本做到了平滑無縫過渡; ??對(duì)象模型:
類與類之間一般有四種關(guān)系:關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化。1.關(guān)聯(lián):表示兩個(gè)類的“對(duì)象”之間存在某種語義上的聯(lián)系。
2.聚集:聚集是關(guān)聯(lián)的特例,它表示類與類之間的關(guān)系是整體與部分的關(guān)系。3.泛化(繼承):泛化關(guān)系指的是類與類之間是“一般---特殊”的關(guān)系。4.依賴和細(xì)化:依賴關(guān)系是指一個(gè)模型元素依賴于另一個(gè)獨(dú)立的模型元素,細(xì)化關(guān)系是指一個(gè)模型元素細(xì)化成了另一個(gè)模型元素。??動(dòng)態(tài)模型:
描述了對(duì)象模型中對(duì)象的生命周期過程,即對(duì)象的狀態(tài),我們把一個(gè)觸發(fā)行為稱為一個(gè)事件。動(dòng)態(tài)模型就是通過描述對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件、以及對(duì)象的行為來描述軟件系統(tǒng)的動(dòng)態(tài)行為(行為模型)。??功能模型:
UML提供用例圖來表示功能模型,并稱之為用例模型。
功能模型也可用SADT中的一組DFD來表示。(也是需求分析階段)一幅用例圖包含的模型元素有:系統(tǒng)、行為者、用例和用例之間的關(guān)系。
一個(gè)用例是系統(tǒng)的一個(gè)完整的功能,通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交互是雙向的。
用例是一個(gè)類,用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法,我們稱之為腳本。用例之間的關(guān)系主要有二種:擴(kuò)展關(guān)系和使用關(guān)系。
創(chuàng)建用例模型的工作包括:定義系統(tǒng)、尋找行為者和用例、描述用例、定義用例之間的關(guān)系,并確認(rèn)用例模型。
??Unit9:
??面向?qū)ο蠓治觯∣bject-Oriented Analysis,簡稱OOA)的關(guān)鍵就是識(shí)別出對(duì)象與類,并分析它們之間的關(guān)系,最終建立對(duì)象模型、動(dòng)態(tài)模型和功能模型。
圖: 參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng)
??通過劃分“主題”把一個(gè)復(fù)雜系統(tǒng)的對(duì)象模型分解成幾個(gè)不同的概念范疇。??
??軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程。??維護(hù)過程本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程,而且事實(shí)上遠(yuǎn)在提出一項(xiàng)維護(hù)要求之前,與軟件維護(hù)有關(guān)的工作已經(jīng)開始了。
??進(jìn)行維護(hù)的原因:改正程序中的錯(cuò)誤和缺陷;改進(jìn)設(shè)計(jì)以適應(yīng)新的軟、硬件環(huán)境;增加新的應(yīng)用范圍;為了將來的維護(hù)工作。
??維護(hù)分為以下幾類:改正性維護(hù);適應(yīng)性維護(hù);完善性維護(hù);預(yù)防性維護(hù)
----------
??未涵蓋進(jìn)來的內(nèi)容:
??需求分析目的:確定目標(biāo)系統(tǒng)必須具備哪些功能
??總體設(shè)計(jì)的主要任務(wù):一.制定幾種可能的實(shí)現(xiàn)方案;二.設(shè)計(jì)程序的體系結(jié)構(gòu) ??詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))任務(wù):設(shè)計(jì)出程序的詳細(xì)規(guī)格說明 ??集成測(cè)試和驗(yàn)收測(cè)試:
集成測(cè)試(組裝測(cè)試):根據(jù)設(shè)計(jì)的軟件結(jié)構(gòu)
驗(yàn)收測(cè)試:按照規(guī)格說明書的規(guī)定,由用戶參與下對(duì)目標(biāo)系統(tǒng)進(jìn)行驗(yàn)收的測(cè)試
??通過對(duì)軟件測(cè)試結(jié)果的分析可以預(yù)測(cè)軟件的可靠性。??傳統(tǒng)軟件工程方法學(xué)的軟件過程,可以用瀑布模型來描述 ??瀑布模型的特點(diǎn):階段間具有順序性和依賴性、推遲實(shí)現(xiàn)的觀點(diǎn)
清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)。
??瀑布模型帶反饋環(huán),發(fā)現(xiàn)前面階段的錯(cuò)誤時(shí),沿反饋線回頭修改
??快速原型模型不帶反饋環(huán),軟件產(chǎn)品開發(fā)是線性順序進(jìn)行的,用途是獲知用戶的需求
??增量模型(漸增模型):把軟件產(chǎn)品分解成增量構(gòu)件。原則:當(dāng)把新構(gòu)件集成到原有構(gòu)件時(shí),所形成的產(chǎn)品必須是可測(cè)試的。它能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。要求開始實(shí)現(xiàn)各個(gè)構(gòu)件前就全部完成的需求分析、規(guī)格說明、總體設(shè)計(jì)。
??螺旋模型的基本思想:使用原形及其他方法來盡量降低風(fēng)險(xiǎn)。可以看作每個(gè)階段前都加了風(fēng)險(xiǎn)分析的快速原型模型。螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)型的。
??噴泉模型體現(xiàn)了面向?qū)ο箝_發(fā)過程迭代和無縫的特性。
??采用先行順序的開發(fā)方法不可能開發(fā)出當(dāng)今客戶需要的大型復(fù)雜系統(tǒng)。
構(gòu)件:功能清晰的模塊或子系統(tǒng)。模型:對(duì)事物的無歧義的書面描述。
RUP強(qiáng)調(diào)采用迭代和漸增的方式來開發(fā)軟件,重復(fù)一系列組成軟件生命周期的循環(huán)。??面向?qū)ο蠓椒?對(duì)象+類+繼承+用消息通信
??可行性分析中導(dǎo)出供選擇的解法的最簡單途徑,是從技術(shù)角度出發(fā)考慮解決問題的不同方案。
??系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的工具,表達(dá)數(shù)據(jù)在系統(tǒng)各部件之間的流動(dòng)情況,而非對(duì)數(shù)據(jù)加工處理。??數(shù)據(jù)流圖(DFD)描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。(描繪數(shù)據(jù)在軟件中流動(dòng)和被處理的邏輯過程),設(shè)計(jì)時(shí)只考慮系統(tǒng)必須完成的基本邏輯功能。
畫數(shù)據(jù)流圖的基本目的:利用它作為交流信息的工具;作為分析和設(shè)計(jì)的工具。符號(hào):數(shù)據(jù)源點(diǎn)/終點(diǎn),變換數(shù)據(jù)的處理,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)流 ??數(shù)據(jù)存儲(chǔ)是處于靜止?fàn)顟B(tài)的數(shù)據(jù)流,數(shù)據(jù)流是處于運(yùn)動(dòng)中的數(shù)據(jù)。
??數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,即對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合。
數(shù)據(jù)字典包含內(nèi)容:數(shù)據(jù)流,數(shù)據(jù)流分量,數(shù)據(jù)存儲(chǔ),處理 數(shù)據(jù)字典用途:分析階段的工具。
??逆向需求說明軟件系統(tǒng)不應(yīng)該做什么
??分析系統(tǒng)常用圖形工具:層次方框圖、Warnier圖 ??需求分析時(shí)要把數(shù)據(jù)結(jié)構(gòu)規(guī)范化。
??結(jié)構(gòu)化分析方法就是面向數(shù)據(jù)流自頂向下逐步求精進(jìn)行需求分析的方法。
把分析過程中得到的有關(guān)數(shù)據(jù)元素記錄在數(shù)據(jù)字典中,對(duì)算法的簡明描述記錄在IPO圖中。快速建立軟件原型是最好的需求分析技術(shù)。為快速構(gòu)建和修改原型,使用三種工具和方法: 第四代技術(shù) 可重用的軟件構(gòu)件 形式化規(guī)格說明和原型環(huán)境
??概念性數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點(diǎn)對(duì)數(shù)據(jù)建立的模型。??數(shù)據(jù)對(duì)象是軟件必須理解的復(fù)合信息的抽象。
??用“范式”定義消除數(shù)據(jù)冗余的程度,第一范式冗余最大。
??狀態(tài)是任何可被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式。??狀態(tài)圖的活動(dòng)表中經(jīng)常使用entry,exit,do三種標(biāo)準(zhǔn)事件。
??IPO圖是輸入、處理、輸出圖,處理框中列出處理的次序暗示了執(zhí)行的順序。??驗(yàn)證軟件需求的正確性:一致性、完整性、現(xiàn)實(shí)性、有效性 ??結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),過程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù) ??軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))可以用層次圖或結(jié)構(gòu)圖描繪。
??在軟件開發(fā)的早期階段考慮測(cè)試問題,可以促使軟件開發(fā)者設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。??隨著模塊數(shù)增加,設(shè)計(jì)模塊間接口所需工作量也增加。??逐步求精是規(guī)格說明技術(shù)、設(shè)計(jì)和實(shí)現(xiàn)技術(shù)的基礎(chǔ)。
逐步求精定義:為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮。
??模塊獨(dú)立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。
??耦合強(qiáng)弱取決于模塊接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。??模塊間的耦合程度影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性 ??內(nèi)聚比耦合更重要。
??深度表示軟件結(jié)構(gòu)中控制的層數(shù),能粗略標(biāo)識(shí)系統(tǒng)大小。
寬度是軟件結(jié)構(gòu)內(nèi)同一層次上的模塊總數(shù)的最大值。
扇出過大意味著模塊過分復(fù)雜,扇入越大則共享該模塊的上級(jí)模塊越多(好)。好的軟件結(jié)構(gòu)通常頂層扇出高,中層扇出較少,底層模塊有高扇入。
??面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型(變換流、事務(wù)流)決定映射方法。??經(jīng)典程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE、DO_WHILE
擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):外加DO_CASE、DO_UNTIL 修改的結(jié)構(gòu)程序設(shè)計(jì):外加BREAK ??系統(tǒng)響應(yīng)時(shí)間的兩個(gè)屬性:長度、易變性 ??用戶界面設(shè)計(jì)是一個(gè)迭代過程。
??過程涉及工具:程序流程圖、盒圖、PAD圖、判定表、判定樹、過程設(shè)計(jì)語言PDL ??程序復(fù)雜度定量度量:
1.McCabe方法(流圖,也叫程序圖):流圖中的區(qū)域數(shù)=環(huán)形復(fù)雜度=判定節(jié)點(diǎn)數(shù)+1
程序的環(huán)形復(fù)雜度取決于程序控制流的復(fù)雜程度,即取決于程序結(jié)構(gòu)的復(fù)雜程度。所以它是對(duì)測(cè)試難度的定量度量,也能對(duì)軟件可靠性預(yù)測(cè)。
2.Halstead方法(根據(jù)程序中運(yùn)算符和操作數(shù)總數(shù)來度量)??編碼和測(cè)試統(tǒng)稱為實(shí)現(xiàn)。
??程序的質(zhì)量主要取決于軟件設(shè)計(jì)的質(zhì)量。
??測(cè)試的目的:發(fā)現(xiàn)軟件中的錯(cuò)誤,根本任務(wù):保證軟件質(zhì)量 ??調(diào)試的目的:診斷并改正測(cè)試中發(fā)現(xiàn)的錯(cuò)誤 ??效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量兩方面。
??用戶角度:最嚴(yán)重的錯(cuò)誤是導(dǎo)致程序不能滿足用戶需求的錯(cuò)誤。
??一旦完成了需求模型就可以著手制定測(cè)試計(jì)劃,建立了設(shè)計(jì)模型之后就可以立即開始設(shè)計(jì)詳細(xì)的測(cè)試方案。??最佳測(cè)試效果:有最大可能性發(fā)現(xiàn)錯(cuò)誤的測(cè)試
??模塊組裝測(cè)試兩種方法:非漸增式測(cè)試(分別測(cè)試每個(gè)模塊)&漸增式測(cè)試(把下一個(gè)要測(cè)試的同已經(jīng)測(cè)好的結(jié)合起來測(cè)試)
??漸增方式分 自頂向下集成和自底向上集成
??為了保證加入模塊沒有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測(cè)試
??自頂向下測(cè)試方法主要優(yōu)點(diǎn):不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期發(fā)現(xiàn)接口錯(cuò)誤。
??回歸測(cè)試:重新執(zhí)行已經(jīng)做過的測(cè)試的某個(gè)子集。它用于保證由于調(diào)試或其他原因引起的變化,不會(huì)導(dǎo)致非預(yù)期的軟件行為或額外錯(cuò)誤。
??確認(rèn)測(cè)試的目的:驗(yàn)證軟件的有效性。
??如果軟件的功能和性能如同用戶期望的,就是有效的 ??確認(rèn)測(cè)試以用戶為主,重要內(nèi)容是復(fù)查軟件配臵。
??條件測(cè)試的目的不僅是檢測(cè)程序條件中的錯(cuò)誤,而且是檢測(cè)程序中的其他錯(cuò)誤。??在一段程序中已經(jīng)發(fā)現(xiàn)的錯(cuò)誤數(shù)往往和尚未發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。
??等價(jià)劃分法和邊界值分析法都只孤立地考慮各個(gè)輸入數(shù)據(jù)的測(cè)試功效,而未考慮多個(gè)輸入數(shù)據(jù)的組合效應(yīng)。??軟件可靠性:程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功運(yùn)行的概率 ??錯(cuò)誤:由開發(fā)人員造成的bug;故障:由錯(cuò)誤引起的軟件的不正確行為
??軟件可用性:程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書上的規(guī)定,成功地運(yùn)行的概率。??預(yù)防性維護(hù):為了改進(jìn)未來的可維護(hù)性或可靠性…… ??軟件維護(hù)分為 非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)
??維護(hù)事件流的最后一個(gè)事件是復(fù)審,它再次檢驗(yàn)軟件配臵的有效性,并保證事實(shí)上滿足了維護(hù)要求表中的要求。??軟件的可維護(hù)性:維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。提高軟件維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。
??決定軟件可維護(hù)性因素:可理解性、可測(cè)試性、可修改性、可移植性、可重用性 ??用戶文檔包括:功能描述、安裝文檔、使用手冊(cè)、參考手冊(cè)、操作員指南 ??面向?qū)ο蠓椒ㄓ脤?duì)象分解取代了傳統(tǒng)方法的功能分解。??對(duì)象彼此之間僅通過消息傳遞相互聯(lián)系。??面向?qū)ο?對(duì)象+類+繼承+消息傳遞通信
如果僅用對(duì)象和消息,則稱為基于對(duì)象的方法,而非面向?qū)ο蟮姆椒ā?/p>
如果進(jìn)一步要求把所有對(duì)象都劃分成類,則稱為基于類的方法,仍非面向?qū)ο蟮姆椒āV挥型瑫r(shí)使用以上4點(diǎn),才是面向?qū)ο蟮摹?/p>
??OOD不同于面向過程設(shè)計(jì),其思想是:使用現(xiàn)實(shí)世界的概念抽象地思考問題而自然的解決問題。(重要的是應(yīng)用模型)
??人在認(rèn)識(shí)和解決復(fù)雜問題時(shí)最有力的思維工具是抽象。
??傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和分解。
面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對(duì)象模型,以對(duì)象為中心構(gòu)造軟件系統(tǒng)。??對(duì)象=描述屬性的數(shù)據(jù)+對(duì)數(shù)據(jù)施加的操作
??對(duì)象是具有相同狀態(tài)的一組操作的集合。(從OOD看對(duì)象)
對(duì)象是對(duì)問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的能力與他交互的能力。(從信息模擬看對(duì)象)
??對(duì)象:以數(shù)據(jù)為中心的、主動(dòng)的、實(shí)現(xiàn)了數(shù)據(jù)封裝、本質(zhì)上具有并行性、模塊獨(dú)立性好 ??一個(gè)對(duì)象類型也可以看成是一種抽象數(shù)據(jù)類型
??類:對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。??消息具有:接受消息的對(duì)象、消息選擇符(消息名)、變?cè)??屬性是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象
??繼承分但繼承和多重繼承(多個(gè)父類),使用多重繼承是要注意避免二義性。繼承中,底層的性質(zhì)將屏蔽高層的同名性質(zhì)。
??多態(tài)性通過虛函數(shù)實(shí)現(xiàn)。??虛函數(shù)->實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編 ??函數(shù)重載通過靜態(tài)聯(lián)編實(shí)現(xiàn)。??OO 3models:
??描述 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)——對(duì)象模型 ??描述 系統(tǒng)控制結(jié)構(gòu)——?jiǎng)討B(tài)模型 ??描述 系統(tǒng)功能計(jì)算——功能模型
??典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對(duì)象模型),執(zhí)行操作(動(dòng)態(tài)模型)并且完成數(shù)據(jù)值的變化(功能模型)??聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。??泛化即繼承。
??動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列。??所有對(duì)象都具有自己的生命周期,狀態(tài)是對(duì)對(duì)象屬性值的一種抽象。一個(gè)觸發(fā)行為稱作一個(gè)事件。??用狀態(tài)圖描繪對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為(對(duì)事件的響應(yīng))。
??每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并,從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。動(dòng)態(tài)模型是基于事件共享而相互關(guān)聯(lián)的一組狀態(tài)圖的集合。??用例模型描述的是外部行為者所理解的系統(tǒng)功能。
??用例是一個(gè)類,他代表一類功能而不是使用該功能的某個(gè)具體實(shí)例。用例的實(shí)例稱腳本。??一個(gè)用例模型的創(chuàng)建包括:定義系統(tǒng)、尋找行為者和用例、描述用力、定義用力之間的關(guān)系、確認(rèn)模型。??針對(duì)每個(gè)類建立的動(dòng)態(tài)模型,描述了類實(shí)例的生命周期或運(yùn)行周期。
??狀態(tài)轉(zhuǎn)換趨勢(shì)行為發(fā)生,這些行為在數(shù)據(jù)流圖中->處理,在用例圖中->用例,同時(shí)與類圖中的服務(wù)對(duì)應(yīng) ??數(shù)據(jù)流圖的對(duì)應(yīng):
數(shù)據(jù)存儲(chǔ),原點(diǎn)/終點(diǎn):對(duì)象 數(shù)據(jù)流:對(duì)象的屬性值或?qū)ο?/p>
對(duì)象模型描述了數(shù)據(jù)流圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)原點(diǎn)/終點(diǎn)的結(jié)構(gòu)。
??分析過程總是提取系統(tǒng)需求的過程。
??需求陳述的內(nèi)容:問題范圍、功能需求、性能需求、應(yīng)用環(huán)境、假設(shè)條件 ??面向?qū)ο蠓治鍪滓墓ぷ鳎航栴}域的對(duì)象模型。??對(duì)象模型的建立:
確定對(duì)象類和關(guān)聯(lián) 給類增添屬性
用適當(dāng)?shù)睦^承關(guān)系合并組織類
建立了動(dòng)態(tài)模型和功能模型后,再定義類中的操作
??應(yīng)該按問題領(lǐng)域而不是功能分解方法來確定主題。??腳本描述事件序列
??從OOA到OOD,是一個(gè)逐漸擴(kuò)充模型的過程,OOD即是用OO的觀點(diǎn)建立求解域模型的過程。??OO中,對(duì)象是最基本的模塊。
??對(duì)象之間,應(yīng)降低交互耦合,提高繼承耦合。??對(duì)象間存在 服務(wù)內(nèi)聚、雷內(nèi)聚、一般-特殊內(nèi)聚。
??OOD準(zhǔn)則:模塊化、抽象、信息隱藏、若耦合、強(qiáng)內(nèi)聚、可重用。
??類構(gòu)件的三種重用方式:實(shí)例重用(最基本的重用)、繼承重用和多態(tài)重用。??系統(tǒng)的總框架是基于問題域的。
??設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法:算法復(fù)雜度、易理解、易實(shí)現(xiàn)、容易修改 ??程序設(shè)計(jì)風(fēng)格中從所完成的功能看,有兩類不同類型的方法:
策略方法:檢查系統(tǒng)運(yùn)行狀態(tài),處理出錯(cuò)情況,并不直接完成計(jì)算或?qū)崿F(xiàn)復(fù)雜算法。實(shí)現(xiàn)方法:僅針對(duì)具體數(shù)據(jù)完成特定處理,用于實(shí)現(xiàn)復(fù)雜算法。
??OO測(cè)試:單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試
——授課教師:寧波大學(xué) 錢旭明老師
——總結(jié)人:寧波大學(xué)
張睿卿
第二篇:軟件工程導(dǎo)論填空題總結(jié)
1.軟件生存周期一般可分為問題定義、可行性研究、需求分析、設(shè)計(jì)編碼、測(cè)試、運(yùn)行與維護(hù)階段。
2.按軟件的功能進(jìn)行劃分,軟件可以劃分為系統(tǒng)軟件、支撐軟件 和應(yīng)用軟件。
3.可行性研究主要集中在以下四個(gè)方面 經(jīng)濟(jì)可行性、技術(shù)可行性、法律可行性 和抉擇。4.用戶界面的可使用性是用戶界面設(shè)計(jì)最重要的也是最基本的目標(biāo)。
5.常見的軟件概要設(shè)計(jì)方法有3大類:以數(shù)據(jù)流圖為基礎(chǔ)構(gòu)造模塊結(jié)構(gòu)的結(jié)構(gòu)化設(shè)計(jì)方法,以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)構(gòu)造模塊的jackson方法_,以對(duì)象、類、繼承和通信為基礎(chǔ)的面向?qū)ο笤O(shè)計(jì)方法。
6.數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。
7.軟件測(cè)試的方法有分析方法和非分析方法(即黑盒法)。8.單元測(cè)試一般以白盒測(cè)試為主,黑盒測(cè)試為輔。
9.成本估計(jì)方法主要有自底向上估計(jì)、自頂向下估計(jì)和算法模型估計(jì)三種類型。10.通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型,軟件工程方法學(xué)包含三個(gè)要素:方法、工具和過程。目前使用得最廣泛的軟件工程方法學(xué),分別是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)
11.最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。
12.所謂情景分析就是對(duì)用戶將來使用目標(biāo)系統(tǒng)解決某個(gè)具體問題的方法和結(jié)果進(jìn)行分析 13.需求分析過程應(yīng)該建立3種模型,它們分別是數(shù)據(jù)模型,功能模型,行為模型.數(shù)據(jù)對(duì)象彼此之間相互連接的方式稱為聯(lián)系,也稱為關(guān)系。聯(lián)系可分為3種類型:一對(duì)一聯(lián)系,一對(duì)多聯(lián)系,多對(duì)多聯(lián)系。
14.軟件的驗(yàn)證:一致性,完整性,現(xiàn)實(shí)性,有效性
15.四種維護(hù)的定義:1.改正性維護(hù)2.適應(yīng)性維護(hù)3.完善性維護(hù)4.預(yù)防性維護(hù)。2.數(shù)據(jù)流圖中信息流的類型有(變換流)和(事務(wù)流)。3.軟件的定義是:軟件=程序+數(shù)據(jù)+(文檔),軟件是(程序及其文檔)。4.經(jīng)典結(jié)構(gòu)程序設(shè)計(jì)包括順序、選擇和(重復(fù))三種結(jié)構(gòu)。5.集成測(cè)試時(shí)對(duì)軟件結(jié)構(gòu)中上層使用(自頂向下)的集成測(cè)試方法,對(duì)軟件結(jié)構(gòu)中下層使用(自底向上)的集成測(cè)試方法。
6.軟件維護(hù)包括(改正性維護(hù))、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)。
7.面向?qū)ο蠓椒▽W(xué)建模得到的三個(gè)基本子模型是(對(duì)象建模)、動(dòng)態(tài)模型、功能模型。8.復(fù)雜大型問題的對(duì)象模型通常由主題層、類與對(duì)象層、結(jié)構(gòu)層、(屬性層)、及服務(wù)層5個(gè)層次組成。
9.面向?qū)ο蠓椒▽W(xué)是基于 軟件的重用。
10.軟件層次結(jié)構(gòu)圖中方框間的連線表示
調(diào)用 關(guān)系。
21.在軟件開發(fā)過程中要產(chǎn)生大量的信息,要進(jìn)行大量的修改,軟件配置管理能協(xié)調(diào)軟件開發(fā),并使混亂減到最低程度。
22.規(guī)定功能的軟件,在一定程度上對(duì)自身錯(cuò)誤的作用(軟件錯(cuò)誤)具有屏蔽能力,則稱此軟件具有容錯(cuò)功能的軟件。
23.McCall提出的軟件質(zhì)量模型包括11 個(gè)軟件質(zhì)量特性。
24.軟件可維護(hù)性度量的七個(gè)質(zhì)量特性是可理解性、可測(cè)試性、可修改性、可靠性、可移植性、可使用性和效率。
25.為了便于對(duì)照檢查,測(cè)試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分組成。
26.程序設(shè)計(jì)語言的心理特性主要表現(xiàn)在 歧義性、簡潔性、傳統(tǒng)性、局部性和順序性。27.軟件結(jié)構(gòu)是以 模塊 為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。
28.在結(jié)構(gòu)化分析中,用于描述加工邏輯的主要工具有三種,即:結(jié)構(gòu)化語言、判定表、判定樹。
29.結(jié)構(gòu)化語言是介于自然語言和形式語言之間的一種半形式語言。
30.若年利率為i,不計(jì)復(fù)利,n年后可得21.系統(tǒng)流程圖是描述物理模型的傳統(tǒng)工具,用圖形符號(hào)表示系統(tǒng)中各個(gè)元素表達(dá)了系統(tǒng)中各種元素之間的(信息流動(dòng))情況。22.成本效益分析的目的是從(經(jīng)濟(jì))角度評(píng)價(jià)開發(fā)一個(gè)項(xiàng)目是否可行。
23.自頂向下結(jié)合的漸增式測(cè)試法,在組合模塊時(shí)有兩種組合策略:深度優(yōu)先策略和(寬度優(yōu)先策略)。
24.獨(dú)立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨(dú)立路徑是至少包含有一條(在其他獨(dú)立路徑中未有過)的邊的路徑。
25.匯編語言是面向(機(jī)器)的,可以完成高級(jí)語言無法完成的特殊功能,如與外部設(shè)備之間的一些接口工作。
26.在JSP方法中解決結(jié)構(gòu)沖突的具體辦法是(中間數(shù)據(jù)結(jié)構(gòu)或中間文件)。
27.詳細(xì)設(shè)計(jì)的任務(wù)是確定每個(gè)模塊的內(nèi)部特性,即模塊的算法、(使用的數(shù)據(jù))。28.所有軟件維護(hù)申請(qǐng)報(bào)告要按規(guī)定方式提出,該報(bào)告也稱(軟件問題)報(bào)告。
29.有兩類維護(hù)技術(shù):在開發(fā)階段使用來減少錯(cuò)誤、提高軟件可維護(hù)性的面向維護(hù)的技術(shù);在維護(hù)階段用來提高維護(hù)的效率和質(zhì)量的(維護(hù)支援)技術(shù)。
30.科學(xué)工程計(jì)算需要大量的標(biāo)準(zhǔn)庫函數(shù),以便處理復(fù)雜的數(shù)值計(jì)算,可供選擇的語言有:(FORTRAN語言)、PASCAL語言、C語言和PL/1語言。1.軟件的開發(fā)與運(yùn)行經(jīng)常受到硬件的限制和制約。(√)2.模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。(√)3.Jackson圖只能表達(dá)程序結(jié)構(gòu),不能表達(dá)數(shù)據(jù)結(jié)構(gòu)。(X)上述數(shù)據(jù)流圖表示數(shù)據(jù)A和B同時(shí)輸入變換成C。(X)5.軟件的質(zhì)量好壞主要由驗(yàn)收人員負(fù)責(zé),其他開發(fā)人員不必關(guān)心。(X)6.判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。(√)7.應(yīng)該盡量使用機(jī)器語言編寫代碼,提高程序運(yùn)行效率,而減少高級(jí)語言的使用。(X)8.UML只能應(yīng)用于軟件系統(tǒng)模型的建立。(X)9.容錯(cuò)就是每個(gè)程序采用兩種不同的算法編寫。(X)軟件測(cè)試的目的是為了無一遺漏的找出所有的錯(cuò)誤。(X)1.在進(jìn)行總體設(shè)計(jì)時(shí)應(yīng)加強(qiáng)模塊間的聯(lián)系。(N)2.系統(tǒng)結(jié)構(gòu)圖是精確表達(dá)程序結(jié)構(gòu)的圖形表示法。因此,有時(shí)也可以將系統(tǒng)結(jié)構(gòu)圖當(dāng)作系統(tǒng)流程圖使用。(N)
3.用黑盒法測(cè)試時(shí),測(cè)試用例是根據(jù)程序內(nèi)部邏輯設(shè)計(jì)的。(N)4.在程序調(diào)試時(shí),找出錯(cuò)誤的位置和性質(zhì)比改正該錯(cuò)誤更難。(Y)
5.以對(duì)象、類、繼承和通信為基礎(chǔ)的面向?qū)ο笤O(shè)計(jì)方法(OOD)也是常見的軟件概要設(shè)計(jì)方法之一。(Y)
6.如果通過軟件測(cè)試沒有發(fā)現(xiàn)錯(cuò)誤,則說明軟件是正確的。(N)7.快速原型模型可以有效地適應(yīng)用戶需求的動(dòng)態(tài)變化。(Y)
8.模塊化,信息隱藏,抽象和逐步求精的軟件設(shè)計(jì)原則有助于得到高內(nèi)聚,低耦合度的軟件產(chǎn)品。(Y)
9.集成測(cè)試主要由用戶來完成。(N)10.軟件危機(jī)完全是由于硬件問題引起的。(N)
第三篇:軟件工程導(dǎo)論知識(shí)總結(jié)范文
軟件工程導(dǎo)論 第一章:軟件工程學(xué)概論
1.軟件危機(jī):是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。
2.概括的說,軟件危機(jī)包括兩方面問題:如何開發(fā)軟件已滿足日益增長的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。3.軟件危機(jī)的典型表現(xiàn):對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確;用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生;軟件的質(zhì)量往往靠不住;軟件常常是不可維護(hù)的;軟件通常沒有適當(dāng)?shù)奈臋n資料;軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升;軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速不及深入的趨勢(shì)。
4.產(chǎn)生軟件危機(jī)的原因:在軟件開發(fā)和維護(hù)的過程中存在這么多嚴(yán)重的問題,一方面與軟件本身的特點(diǎn)有關(guān),另一方面也和軟件開發(fā)與維護(hù)的方法不正確有關(guān)。
5.在實(shí)踐過稱中或多或少的采用了錯(cuò)誤的方法和技術(shù),這可能是使軟件問題發(fā)展成軟件危機(jī)的主要原因。
6.軟件不同與硬件,他是計(jì)算機(jī)系統(tǒng)中的邏輯部件而不是物理部件。
7.軟件不同于一般程序,他的一個(gè)顯著特點(diǎn)是估摸龐大,而且程序復(fù)雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。
8.軟件本身獨(dú)有的特點(diǎn)確實(shí)給開發(fā)和維護(hù)帶來一些客觀困難。9.對(duì)用戶要求沒有完整的認(rèn)識(shí)就匆忙著手編寫程序是軟件開發(fā)功臣失敗的主要原因之一。
10.一個(gè)軟件從定義、開發(fā)、使用和維護(hù),直到最終被遺棄,要經(jīng)歷一個(gè)漫長的時(shí)期,通常把軟件經(jīng)歷的這個(gè)漫長的時(shí)期稱為生命周期。
11.軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是能夠完成預(yù)定功能和性能的可執(zhí)的指令序列;數(shù)據(jù)是使程序能夠適當(dāng)?shù)奶幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護(hù)程序所需要的圖文資料。
12.軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。13.軟件工程是:把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用與軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是吧工程應(yīng)用與軟件;研究前面所提到的途徑。
14.軟件工程的本質(zhì)特性:軟件工程關(guān)注與大型程序的構(gòu)造;軟件工程的中心課題是控制復(fù)雜性;軟件經(jīng)常變化;開發(fā)軟件的效率非常重要;和諧的合作是開發(fā)軟件的關(guān)鍵;軟件必須有效地支持他的用戶;在軟件工程領(lǐng)域中通常由具有一種文化背景的人體另一種具有文化背景的人創(chuàng)造產(chǎn)品。
15.軟件工程的基本原理:用分階段的生命周期計(jì)劃嚴(yán)格管理;堅(jiān)持進(jìn)行階段評(píng)審;實(shí)行嚴(yán)格的產(chǎn)品控制;采用現(xiàn)代程序設(shè)計(jì)技術(shù);結(jié)果應(yīng)能清楚的審查;開發(fā)小組的人員應(yīng)該少而精;承認(rèn)不斷該井軟件工程的必要性。16.軟件工程包括技術(shù)和管理兩方面得內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學(xué)科。
17.通常把在軟件生命周期全過程中使用的一套技術(shù)方法的集合稱為方法學(xué),也稱之為范型。18.方法學(xué)三要素:方法、工具和過程。
19.傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。它采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。
20.面向?qū)ο蠓椒▽W(xué)與傳統(tǒng)方法學(xué)相反,它吧數(shù)據(jù)和行為看成是同等重要的,他是一種一數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密的結(jié)合起來的方法。
21.棉線對(duì)象方法學(xué)的要點(diǎn):把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件;把所有的對(duì)象都劃分成類;按照父類與子類的關(guān)系,把若干相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng);對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。
22.傳統(tǒng)方法學(xué)強(qiáng)調(diào)自頂而下順序的完成軟件開發(fā)的各項(xiàng)任務(wù)。23.面向方法學(xué)開發(fā)軟件的過程,是一個(gè)主動(dòng)地多次反復(fù)迭代的演化過程。
24.面向?qū)ο蠓缎偷膬?yōu)點(diǎn):降低了軟件產(chǎn)品的復(fù)雜性,提高了軟件的可理解性,簡化了軟件的開發(fā)和維護(hù)工作;促進(jìn)了軟件重用。25.面向?qū)ο蠓椒ㄌ赜械睦^承性和多態(tài)性,進(jìn)一步提高了可重用性。26.軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分成若干個(gè)階段。
27.軟件定義時(shí)期的任務(wù):確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該工程需要的資源和成本,并且制定工程進(jìn)度表。
28.軟件定義時(shí)期分為三個(gè)階段:問題定義、可行性研究、需求分析。
29.開發(fā)時(shí)期階段組成:總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試。
30.維護(hù)時(shí)期的樹妖任務(wù)是使軟件持久的滿足用戶的需求。31.最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。
32.通常的維護(hù)活動(dòng):改正性維護(hù);適應(yīng)性維護(hù);完善性維護(hù);預(yù)防性維護(hù)。
33.軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列框架,它規(guī)定了完成各項(xiàng)的任務(wù)工作步驟。
34.把過程定義為:使用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的系統(tǒng)。
35.系統(tǒng)是相互關(guān)聯(lián)或相互作用的一組要素。
36.過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、為保證軟件件質(zhì)量和協(xié)調(diào)變化所需要的管理措施,以及標(biāo)志軟件開發(fā)各個(gè)階段任務(wù)完成的里程碑。37.瀑布模型一直被廣泛采用的生命周期模型,仍然是軟件工程中應(yīng)用的最廣泛的過程模型。
38.瀑布模型的特點(diǎn):階段間具有順序性和依賴性;推遲延遲的觀點(diǎn);質(zhì)量保證的觀點(diǎn)。
39.瀑布模型的優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格的規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。
40.所謂快速原型是快建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,他所能完成的功能往往是最終端產(chǎn)品能完成的功能的一個(gè)子集。41.快速原型模型的主要優(yōu)點(diǎn):不帶反饋環(huán),軟件產(chǎn)品的開發(fā)基本上是線性順序進(jìn)行的。42.增量模型也稱漸進(jìn)模型。
43.增量模型的優(yōu)點(diǎn):能在短時(shí)間內(nèi)向用戶提交可完成部分工作產(chǎn)品;逐步增加產(chǎn)品功能可以使用戶有充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。44.螺旋模型的基本思想是,使用原型及其他方法來盡量降低風(fēng)險(xiǎn)。可以把它看作是在每個(gè)階段都增加了風(fēng)險(xiǎn)分析過程的快速模型。
45.螺旋模型的優(yōu)點(diǎn):對(duì)可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件來發(fā)的一個(gè)重要目標(biāo);減少了過多測(cè)試或測(cè)試不足所帶來的風(fēng)險(xiǎn);更重要的是,在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別。
46.噴泉模型是典型的面向?qū)ο蟮能浖^程模型之一。47.“噴泉”這個(gè)詞體現(xiàn)了面向?qū)ο箝_發(fā)過程迭代和無縫的特性。
48.Ratioanal統(tǒng)一過程是一種完整而且完美的軟件過程。49.RUP軟件開發(fā)生命周期是一個(gè)二維的生命周期模型。50.RUP九個(gè)核心工作流:業(yè)務(wù)建模;需求;分析與設(shè)計(jì);實(shí)現(xiàn);測(cè)試;部署;配置與變更管理;項(xiàng)目管理;環(huán)境。
51.RUP工作階段:初始階段、精化階段、構(gòu)建階段、移交階段。52.極限編程:是敏捷過程中最富盛名的一個(gè),“極限”含義是指把好的開發(fā)實(shí)踐運(yùn)用到極致。
53.微軟過程生命周期:規(guī)劃階段、設(shè)計(jì)階段、開發(fā)階段、穩(wěn)定階段、發(fā)布階段。
54.面向?qū)ο蠓椒?對(duì)象+類+繼承+用消息通信
可行性研究
1.典型的可行性研究過程步驟:復(fù)查系統(tǒng)規(guī)模和目標(biāo);研究目前正在使用的系統(tǒng);導(dǎo)出新系統(tǒng)的高岑邏輯模型;進(jìn)一步定義問題;導(dǎo)出和評(píng)論供選擇的解法;推薦行動(dòng)方針;草擬開發(fā)計(jì)劃;書寫文檔提交審查。
2.系統(tǒng)流程圖是概括的描繪物理系統(tǒng)的傳統(tǒng)工具。他的基本思想是用圖形符號(hào)以黑盒子形式描繪組成系統(tǒng)的每個(gè)部件(程序、文檔、數(shù)據(jù)庫、人工過程等)。
3.系統(tǒng)流程圖基本符號(hào):處理(矩形)、輸入輸出(平行四邊形)、連接(圓形)、換頁連接(向下的五邊形箭頭)、數(shù)據(jù)流(箭頭)。
4.面對(duì)復(fù)雜的系統(tǒng)時(shí),一個(gè)比較好的方法是分層次的描繪這個(gè)系統(tǒng)。
5.數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),他面會(huì)信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。6.數(shù)據(jù)流圖是系統(tǒng)邏輯功能的圖形表示。
7.數(shù)據(jù)流圖符號(hào):正方形(或立體型)表示數(shù)據(jù)的源點(diǎn)或終點(diǎn);圓角矩形(或圓形)代表數(shù)據(jù)變換的處理;開口矩形(或兩條平行線)代表數(shù)據(jù)存儲(chǔ);箭頭代表數(shù)據(jù)流,即特定數(shù)據(jù)流動(dòng)的方向。8.數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同,數(shù)據(jù)存儲(chǔ)是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動(dòng)中的數(shù)據(jù)。9.畫數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具。另一個(gè)主要的用途是作為分析和設(shè)計(jì)的工具。
10.數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合。、11.數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型,沒有數(shù)據(jù)字典,數(shù)據(jù)流圖就不嚴(yán)格,然而沒有數(shù)據(jù)流圖,數(shù)據(jù)字典也難以發(fā)揮作用。12.數(shù)據(jù)字典4類元素的定義組成:數(shù)據(jù)流;數(shù)據(jù)流分量(即數(shù)據(jù)元素);數(shù)據(jù)存儲(chǔ);處理。
13.數(shù)據(jù)字典中記錄數(shù)據(jù)元素的下列信息:一般信息;定義;使用特點(diǎn);控制信息和分組信息。
14.數(shù)據(jù)元素組陳的方式:順序、選擇、重復(fù),可選。15.“=”:等價(jià)于或定義為;“+”;和(即連接兩個(gè)分量);“【】”:或(即,從方括弧內(nèi)列出的若干分量中選擇一個(gè)),通常用“|”號(hào)隔開供選擇的分量;“{}”:重復(fù);“()”:可選。
16.數(shù)據(jù)字典最重要的用途是作為分析階段的工具。
17.卡片形式書寫數(shù)據(jù)字典:開片:名字、別名、描述、定義、位置。
18.軟軟開發(fā)成本主要表現(xiàn)為人力消耗。
19.估算技術(shù):代碼行技術(shù);任務(wù)分解技術(shù);自動(dòng)估算成本技術(shù)。20.成本/效益分析地第一步是估計(jì)開發(fā)成本、運(yùn)行費(fèi)用和新系統(tǒng)將帶來的經(jīng)濟(jì)效益。
21.通常用利率的形式表示貨幣的時(shí)間價(jià)值。
22.通常用投資回收期衡量一項(xiàng)開發(fā)工程的價(jià)值。所謂投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間。23.衡量工程價(jià)值的另一項(xiàng)經(jīng)濟(jì)指是工程的純收入,也就是在整個(gè)生命周期之內(nèi)系統(tǒng)的累計(jì)經(jīng)濟(jì)效益與投資之差。需求分析 1.軟件系統(tǒng)的綜合要求:功能需求;性能要求;可靠性和可用性需求;出錯(cuò)處理需求;接口需求;約束;你想需求;將來可能提出的要求。
2.分析系統(tǒng)的數(shù)據(jù)要求,這是軟件需求分析的一個(gè)重要任務(wù),它通常采用建立數(shù)據(jù)模型的方法。
3.復(fù)雜的數(shù)據(jù)由許多基本的數(shù)據(jù)元素組成,數(shù)據(jù)結(jié)構(gòu)表示數(shù)據(jù)元素之間的邏輯關(guān)系。
4.訪談是最早開始使用的獲取用戶需求的技術(shù),也是迄今為止仍然廣泛使用的需求分析技術(shù)。他有兩種基本形式,分別是正式的和非正式的訪談。
5.軟件系統(tǒng)本質(zhì)上是信息處理系統(tǒng),而任何信息處理系統(tǒng)的基本功能都是把輸入數(shù)據(jù)轉(zhuǎn)變成需要的輸出信息。
6.結(jié)構(gòu)分析方法就是面向數(shù)據(jù)流自頂而下逐步求精進(jìn)行需求分析的方法。
7.面向團(tuán)隊(duì)的需求收集法,稱為簡易的應(yīng)用規(guī)格說明技術(shù)。這種方法提倡用戶與開發(fā)者密切合作,共同表示問題,提出解決方案要素,商討不同方案并指定基本要求。
8.面向團(tuán)隊(duì)的需求方法的優(yōu)點(diǎn):開發(fā)者與用用戶不分彼此,齊心協(xié)力,密切合作;即時(shí)討論并求精;有能導(dǎo)出規(guī)格說明的具體步驟。
9.快速建立軟件原型是最準(zhǔn)確、最有效、最強(qiáng)大的需求分析技術(shù)。他是快速建立起來的旨在演示目標(biāo)系統(tǒng)主要功能的可運(yùn)行的程序。
10.構(gòu)建原型的要點(diǎn)是,他應(yīng)該實(shí)現(xiàn)用戶看得見的功能,省略系統(tǒng)“隱含”功能。
11.快速模型的特性:快速;容易修改。
12.快隨構(gòu)建和修改原型的方法和工具:第四代技術(shù);可重構(gòu)的軟件構(gòu)件;形式化規(guī)格說明和原型環(huán)境。
13.通常,模型是由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組成。14.結(jié)構(gòu)化分析實(shí)質(zhì)上是一種創(chuàng)建模型的活動(dòng)。
15.通過需求分析除了創(chuàng)建分析模型之外,還應(yīng)該寫出軟件需求規(guī)格說明書,他是需求分析階段得出的最主要的文檔。16.通常用自然語言完整、準(zhǔn)確、具體的描述系統(tǒng)的數(shù)據(jù)要求、功能需求、性能需求、可靠性和可用性要求、出錯(cuò)處理需求、接口需求、約束、逆向需求以及將來可能提出的要求
17.概念性數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點(diǎn)對(duì)數(shù)據(jù)建立的模型。
18.數(shù)據(jù)模型包含三種續(xù)相互關(guān)聯(lián)的信息:數(shù)據(jù)對(duì)象、數(shù)據(jù)對(duì)象的屬性、數(shù)據(jù)對(duì)象彼此間相互連接的關(guān)系。19.聯(lián)系:一對(duì)一;一對(duì)多;多對(duì)多。
20.ER圖(實(shí)體-聯(lián)系圖)包含了實(shí)體、關(guān)系、屬性,通常用矩形代表實(shí)體,用連接相關(guān)實(shí)體的菱形表示關(guān)系,用橢圓形或圓角矩形表示實(shí)體的屬性,并用直線把實(shí)體與其屬性連接起來。21.通常用“范式”定義消除數(shù)據(jù)冗余的程度。第一范式(1NF)數(shù)據(jù)冗余程度最大,第五范式(5NF)數(shù)據(jù)冗余程度最小。22.狀態(tài)轉(zhuǎn)換圖(簡稱狀態(tài)圖)通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來表示系統(tǒng)地行為。
23.狀態(tài)是任何可以被觀察到得系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式。
24.在狀態(tài)圖中定義的狀態(tài)主要有:初態(tài)、終態(tài)和中間狀態(tài)。在一張狀態(tài)圖中只能有一個(gè)初態(tài),而終態(tài)則可以有0至多個(gè)。25.事件就是引起系統(tǒng)動(dòng)作或轉(zhuǎn)換狀態(tài)的控制信息。
26.狀態(tài)圖中,初態(tài)用實(shí)心圓表示,終態(tài)用一對(duì)同心圓表示,中間狀態(tài)用圓角矩形表示。
27.活動(dòng)表語法格式:事件名(參數(shù)表)/動(dòng)作表達(dá)式;三種事件:entry(進(jìn)入該狀態(tài)的動(dòng)作), exit(退出該狀態(tài)的動(dòng)作), do(該狀態(tài)下的動(dòng)作)。
28.事件表達(dá)式的語法格式:事件說明【守衛(wèi)條件】/動(dòng)作表達(dá)式;守衛(wèi)條件為真時(shí),狀態(tài)轉(zhuǎn)換發(fā)生。
29.層次方框圖用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪的數(shù)據(jù)的層次結(jié)構(gòu)。
30.Warnier圖和層次方框圖相似,W圖也用樹形層次結(jié)構(gòu)描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的秒胡手段。
31.IPO圖是輸入、處理、輸出圖的簡稱。一種圖形工具,能夠方便的描繪輸入數(shù)據(jù)、對(duì)數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關(guān)系。32.驗(yàn)證軟件需求的4個(gè)方面:一致性、完整性、現(xiàn)實(shí)性、有效性。
33.PSL/PSA(問題陳述語言/問題陳述分析程序)系統(tǒng):功能:描述任何應(yīng)用領(lǐng)域的信息系統(tǒng);創(chuàng)建一個(gè)數(shù)據(jù)庫保存對(duì)該信息系統(tǒng)的描述符;對(duì)描述符施加增加、刪除和更改等操作;產(chǎn)生格式化的文檔和關(guān)于規(guī)格說明書的各種分析報(bào)告。
34.PSL/PSA系統(tǒng)用描述符從系統(tǒng)信息流、系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)導(dǎo)出、系統(tǒng)規(guī)模、系統(tǒng)動(dòng)態(tài)、系統(tǒng)性質(zhì)和羨慕管理共8個(gè)方面描述信息系統(tǒng)。第五章:總體設(shè)計(jì)
總體設(shè)計(jì)過程分為兩個(gè)階段: 1>.系統(tǒng)設(shè)計(jì),確定系統(tǒng)的具體實(shí)現(xiàn)方案 2>.結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)
總體設(shè)計(jì)的9個(gè)步驟: 1>.設(shè)想供選擇的方案 2>.選取合理的方案 3>.推薦最佳方案 4>.功能分解 5>.設(shè)計(jì)軟件結(jié) 6>.設(shè)計(jì)數(shù)據(jù)庫 7>.制定測(cè)試計(jì)劃 8>.書寫文檔 9>.審查和復(fù)查
書寫文檔(形成概要設(shè)計(jì)規(guī)格說明書): 1>.系統(tǒng)說明 2>.用戶手冊(cè) 3>.測(cè)試計(jì)劃 4>.詳細(xì)的實(shí)現(xiàn)計(jì)劃 5>.數(shù)據(jù)庫設(shè)計(jì)結(jié)果
模塊是由邊界元素限定相鄰程序元素的序列,而且有一個(gè)總體標(biāo)識(shí)符代表它.(模塊式構(gòu)成程序的基本構(gòu)件)根據(jù)模塊數(shù)目和接口成本(模塊間的聯(lián)系成本)兩個(gè)因素來決定模塊的最適當(dāng)數(shù)目.抽象:就是抽出事物的本質(zhì)特征而暫時(shí)不考慮他們的細(xì)節(jié).(抽象層次的過程實(shí)際上也是逐步求精的過程).抽象和求精是一對(duì)互補(bǔ)的概念,也是人類解決復(fù)雜問題時(shí)最常用,最有效的方法.抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同時(shí)卻忽略了低層細(xì)節(jié),求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示出低層細(xì)節(jié)。
信息隱藏原理指出:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說是不能訪問的.局部化,是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近,在模塊中使用局部數(shù)據(jù)元素是局部化的一個(gè)例子.模塊獨(dú)立性:使得每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡單.模塊的獨(dú)立程序由兩個(gè)標(biāo)準(zhǔn)度量:
1>.耦合:數(shù)據(jù)耦合,控制耦合,特征耦合,公共環(huán)境耦合,內(nèi)容耦合
(盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合)
2>.內(nèi)聚:功能內(nèi)聚,信息內(nèi)聚,通信內(nèi)聚,過程內(nèi)聚,時(shí)間內(nèi)聚,邏輯內(nèi)聚,偶然內(nèi)聚.啟發(fā)式規(guī)則: 1>.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性 2>.模塊規(guī)模應(yīng)該適中
3>.深度,寬度,扇出和扇入都應(yīng)適當(dāng) 4>.模塊的作用或應(yīng)該在控制域之內(nèi) 5>.力爭降低模塊接口的復(fù)雜程度 6>.設(shè)計(jì)單入口單出的模塊 7>.模塊功能應(yīng)該可以預(yù)測(cè)
層次圖和HIPO圖,結(jié)構(gòu)圖(描繪軟件結(jié)構(gòu)的圖形工具).結(jié)構(gòu)圖:用尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息.面向數(shù)據(jù)流的設(shè)計(jì)方法:把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射方法信息流類型:1>.交換流,2>.事務(wù)流 第六章:詳細(xì)設(shè)計(jì)
在設(shè)計(jì)人機(jī)界面過程中,遇到的4個(gè)問題: 1>.系統(tǒng)影響時(shí)間(長度,易變性)2>.用戶幫助設(shè)施(集成的/附加的幫助設(shè)施)3>.出錯(cuò)信息處理
4>.命令交互(一個(gè)命令對(duì)應(yīng)單一的功能)人機(jī)界面設(shè)計(jì)指南: 1>.一般交互指南涉及信息顯示,數(shù)據(jù)輸入和系統(tǒng)整體控制,因此這類指南是全局性的,忽略它們將承擔(dān)較大的風(fēng)險(xiǎn).2>.信息顯示指南:用文字,圖形和聲音按位置移動(dòng)和大小,使用顏色,分辨率和省略
3>.數(shù)據(jù)輸入指南:選擇命令,輸入數(shù)據(jù)和向系統(tǒng)提供輸入
過程設(shè)計(jì)的 工具: 1.程序流程圖
程序流程圖的缺點(diǎn): 1>.程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早的考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu) 2>.程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制 3>.程序流程圖不容易表示數(shù)據(jù)結(jié)構(gòu) 2.盒圖 盒圖的特點(diǎn):克服了程序流程圖的缺點(diǎn),但自身缺點(diǎn)是不易擴(kuò)展
1>.功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來 2>.不能任意轉(zhuǎn)移控制
3>.很容易確定局部和全程數(shù)據(jù)的作用域
4>.很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)
3.PAD圖(問題分析圖):是用二維樹形結(jié)構(gòu)的圖來表示程序的控制流.將這種圖翻譯成程序代碼比較容易
4.判斷表:能夠清晰的表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系.(在多重嵌套的條件選擇時(shí))5.判定樹:容易繪制,易于理解,但不能判斷哪些組合不可能,葉子多
6.過程設(shè)計(jì)語言(偽碼):是用正文形式表示的數(shù)據(jù)和處理過程的設(shè)計(jì)工具.過程設(shè)計(jì)語言(PDL)的優(yōu)點(diǎn): 1>.可以作為注釋直接插在源程序中間
2>.可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便的完成PDL的書寫和編輯工作
3>.已經(jīng)有自動(dòng)處理PDL的程序存在,而且可以自動(dòng)由PDL生成程序代碼
程序復(fù)雜程序的定量度量 1.流圖:只要順序執(zhí)行俄流向都能合并,忽略箭頭,每個(gè)節(jié)點(diǎn)都是連通的(用圓表示節(jié)點(diǎn)代表一條或多條語句,箭頭線成為邊,代表控制流)由邊和結(jié)點(diǎn)圍成的面積為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖形外部為被圍起來的那個(gè)區(qū)域.計(jì)算環(huán)形復(fù)雜度的方法: 1>.流圖的區(qū)域數(shù)等于環(huán)形復(fù)雜度
2>.流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中E是流圖中邊的條數(shù),N是節(jié)點(diǎn)數(shù)
3>.流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中P是流圖中判定節(jié)點(diǎn)的數(shù)目 第七章: 1.通常把編碼和測(cè)試統(tǒng)稱實(shí)現(xiàn)
2.所謂編碼就是把軟件設(shè)計(jì)結(jié)果翻譯成某種程序設(shè)計(jì)語言書寫的程序
3.為了使程序容易測(cè)試和維護(hù)以減少軟件的總成本,所選用的高級(jí)語言有理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。為了便于調(diào)試和提高軟件可靠性,語言特點(diǎn)應(yīng)該是編譯程序能夠多地發(fā)下程序中錯(cuò)的錯(cuò)誤,為了降低軟件開發(fā)和維護(hù)的成本,選用的高級(jí)語言應(yīng)該有良好的獨(dú)立編譯機(jī)制。4.選擇程序設(shè)計(jì)語言的使用標(biāo)準(zhǔn): 1).系統(tǒng)用戶的要求 2).可以使用的編譯程序 3).可以得到的軟件工具 4).工程規(guī)模 5).程序員的知識(shí)
6).軟件可移植性要求 7).軟件的應(yīng)用領(lǐng)域 5.編碼的風(fēng)格: 1).程序內(nèi)部的文檔 2).數(shù)據(jù)說明 3).語句說明 4).輸入輸出
5).效率(通算法提高和決定的)提高效率 :
1).效率是性能的要求,因此應(yīng)該在需求分析階段效率方面的要求
2).效率是靠設(shè)計(jì)來以高的
3).程序的效率和程序的簡單程序是一致的 6.討論效率問題: 1).程序運(yùn)行時(shí)間 2).存儲(chǔ)器效率 3).輸入輸出效率 軟件測(cè)試基礎(chǔ): 1.測(cè)試方法:
1).黑盒:如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過測(cè)試來檢驗(yàn)是否每個(gè)功能都能正常使用。
2).白盒: 如果知道產(chǎn)品的內(nèi)部工作過程,可以通過測(cè)試來檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是佛感召規(guī)格說明的規(guī)定正常進(jìn)行
2.黑盒測(cè)試是在程序接口進(jìn)行的 黑盒測(cè)試(功能測(cè)試)3.測(cè)試步驟: 模塊測(cè)試-》子系統(tǒng)測(cè)試-》系統(tǒng)測(cè)試-》驗(yàn)收測(cè)試-》平行運(yùn)行
4.測(cè)試階段的信息流: 1》軟件配置 2》測(cè)試配置 5.單元測(cè)試主要使用白盒測(cè)試技術(shù),而且對(duì)多個(gè)模塊的測(cè)試可以并行的進(jìn)行 6.測(cè)試重點(diǎn): 1).模塊接口 2).局部數(shù)據(jù)接口 3).重要的執(zhí)行通路 4).出錯(cuò)處理器 5).邊界條件
7.軟件測(cè)試:為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行代碼過程 8.程序調(diào)試:為了診斷和改正程序中錯(cuò)誤的錯(cuò)誤代碼 9.集成測(cè)試是測(cè)試盒組裝軟件的系統(tǒng)化技術(shù)
10.驗(yàn)證指的是保證軟件正確地實(shí)現(xiàn)了某個(gè)特定要求的一系列活動(dòng),而確認(rèn)指的是為了保證軟件確實(shí)滿足了用戶需求而進(jìn)行的一系列活動(dòng)
11.需求分析階段產(chǎn)生的軟件需求規(guī)格說明書。第八章: 軟件維護(hù):在軟件交付使用之后,為了改正錯(cuò)誤或者滿足新的需要而修改的過程
改正性維護(hù):把診斷和改正錯(cuò)誤的過程稱為改正性維護(hù)
適應(yīng)性維護(hù):為了和變化了的環(huán)境適當(dāng)?shù)呐浜隙M(jìn)行的修改軟件的活動(dòng)是既必要而又經(jīng)常性的活動(dòng)
完善性維護(hù):在軟件使用的過程中,用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進(jìn)意見
預(yù)防性維護(hù):為了改進(jìn)未來的標(biāo)準(zhǔn)性或可靠性或?yàn)榱私o未來奠定更好的基礎(chǔ)而修改軟件
軟件維護(hù)的過程: 1.維護(hù)組織 2.維護(hù)報(bào)告:
⑴滿足維護(hù)要求表中提出的要求所需要的工作量 ⑵維護(hù)要求的性質(zhì) ⑶這項(xiàng)要求的優(yōu)先次序 ⑷與修改有關(guān)的事后數(shù)據(jù) 3.維護(hù)的事件流 4.保存維護(hù)記錄 5.評(píng)價(jià)維護(hù)活動(dòng): ⑴每次程序運(yùn)行平均失敗的次數(shù) ⑵用于每一類維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù)
⑶平均每個(gè)程序每種語言每種維護(hù)類型,所做的程序變動(dòng)數(shù) ⑷維護(hù)過程中增加或刪除一個(gè)原語句平均花費(fèi)的人時(shí)數(shù) ⑸維護(hù)每種語言所花費(fèi)的人時(shí)數(shù) ⑹一張維護(hù)要求表的平均周轉(zhuǎn)時(shí)間 ⑺不同維護(hù)類型所占的百分比
軟件的可維護(hù)性的定義:維護(hù)人員理解改動(dòng)改正或改進(jìn)這個(gè)軟件的難易程度
決定軟件可維護(hù)的因素主要有: 1).可理解性 2).可測(cè)試性 3).可修改性 4).可移植性 5).可重用性
重用指同一事物不做修改或稍加改動(dòng)就在不同環(huán)境中多次重復(fù)使用
以下一個(gè)方面可以提高軟件的可維護(hù)性: 1).軟件中可使用的可重用的構(gòu)件越多,軟件的可靠性越高,改正性維護(hù)需求需求就越少
2).軟件中可使用的可重用的構(gòu)件越多,適應(yīng)性和完整性就越容易,文檔影響軟件可維護(hù)性的決定因素
軟件系統(tǒng)的文檔可分為用戶文檔和系統(tǒng)文檔
軟件文檔應(yīng)滿足下數(shù)要求: 1).必須描述如何使用這個(gè)系統(tǒng) 2).必須描述怎樣安裝和管理這個(gè)系統(tǒng) 3).必須描述系統(tǒng)需求和設(shè)計(jì) 4).必須描述系統(tǒng)的實(shí)現(xiàn)和測(cè)試
用戶文檔至少包含下數(shù): 1).功能描述 2).安裝文檔 3).使用手冊(cè) 4).參考手冊(cè) 5).操作員指南
所謂系統(tǒng)文檔只從問題定義需求說明到驗(yàn)收測(cè)試計(jì)劃,這樣一系列和實(shí)現(xiàn)有關(guān)的文檔
可維護(hù)性是所有軟件都應(yīng)該具備的基本特點(diǎn)
代碼復(fù)審應(yīng)該強(qiáng)調(diào)編碼風(fēng)格和內(nèi)部說明文檔這兩個(gè)影響可維護(hù)性的因素
配置復(fù)審在測(cè)試結(jié)束是進(jìn)行正式的可維護(hù)性復(fù)審
配置復(fù)審的目的是保證軟件配置的所有成分都是完整的,一致的和可理解的
為了便于修改和管理已經(jīng)編目歸檔了, 軟件在工程過程模型的六類活動(dòng): 1).庫存目錄分析 2).文檔重檔 3).逆向工程 4).代碼重構(gòu) 5).數(shù)據(jù)重構(gòu) 6).正向工程 第九章: 面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法于過程,也就是使描述問題的問題空間與實(shí)現(xiàn)解決的解決空間在結(jié)構(gòu)上盡可能一致
面向?qū)ο蠓椒▽W(xué)具有以下4個(gè)要點(diǎn): 1).認(rèn)為客觀世界是又各種對(duì)象組成,任何事物都是對(duì)象 2).把所有對(duì)象都劃分成各種對(duì)象類,每個(gè)對(duì)象都定義了一組數(shù)據(jù)和一組方法
3).按照子類與父類的關(guān)系把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)
4).對(duì)象彼此之間僅能通傳遞消息互相聯(lián)系
面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)有: 1).與人類習(xí)慣的思維方法一致 2).穩(wěn)定性好 3).可重用性好
4).較易開發(fā)大型軟件產(chǎn)品 5).可維護(hù)性好
由于以下因素使得面向?qū)ο蠓椒ㄋ_發(fā)的軟件可維護(hù)性好: 1).穩(wěn)定性比較好 2).較容易修改 3).容易理解 4).易于測(cè)試和調(diào)試
面向?qū)ο蠓椒▽W(xué)中的對(duì)象是由描述該對(duì)象性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起所構(gòu)成的同意體
對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)以及施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體
對(duì)象有如下基本特點(diǎn): 1).以數(shù)據(jù)為中心 2).對(duì)象是主動(dòng)的 3).實(shí)現(xiàn)了數(shù)據(jù)封裝 4).本質(zhì)上具有并行性 5).模塊獨(dú)立性好
類就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義
類是支持繼承的抽象數(shù)據(jù)類型而對(duì)象就是類的實(shí)例
實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對(duì)象
消息是要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明
消息由三部分組成 1).接受消息對(duì)象 2).消息選擇符 3).零個(gè)或多個(gè)變?cè)?/p>
方法就是對(duì)象所執(zhí)行的操作,也就是類中所定義的服務(wù)
屬性就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象
對(duì)象具有封裝性的條件如下: 1).有一個(gè)清晰的邊界 2).有確定的接口 3).受保護(hù)的內(nèi)部實(shí)現(xiàn)
繼承是指直接獲得已有的性質(zhì)和特征而不必重復(fù)定義它們
多態(tài)性是指子類對(duì)象可以像父類對(duì)象那樣使用同樣的消息既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象
函數(shù)重載是指同一個(gè)作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字
運(yùn)算符重載是指同一個(gè)運(yùn)算符也可以施加于不同類型的操作數(shù)上面
所謂模型就是為了理解事物而對(duì)事物做出的一種抽象,是對(duì)事物一種無歧義的書面描述
用面向?qū)ο蠓椒ㄩ_發(fā)軟件通常需要建立3中模式: 1).描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型 2).描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型 3).描述系統(tǒng)的功能的功能模型
關(guān)聯(lián)是雙向的,可在一個(gè)方向上為關(guān)聯(lián)起一個(gè)名字,在另一個(gè)方向上起另一個(gè)名字
聚集也稱聚合,是關(guān)聯(lián)的特例聚集表示類與類之間的關(guān)系,是整體與部分的關(guān)系
共享聚集在聚集關(guān)系中處于部分個(gè)對(duì)象可同時(shí)參與多個(gè)屬于整體對(duì)象的構(gòu)成
泛化關(guān)系就是通常所說的繼承關(guān)系,是通用元素和具體元素之間的一種分類關(guān)系
沒有具體對(duì)象的類稱為抽象類
預(yù)定義的類約束有四種: 1).多重 2).不相交 3).完全 4).不完全
多重繼承指的是一個(gè)子類可以同時(shí)多次繼承同一個(gè)上層基類
依賴關(guān)系描述兩個(gè)模型元素之間的語意連接關(guān)系,其中一個(gè)模型元素是獨(dú)立的,另一個(gè)模型元素不獨(dú)立,它依賴于獨(dú)立的獨(dú)立的模型元素
當(dāng)對(duì)同一個(gè)事物在不同抽象層次上描述時(shí)這些描述之間具有細(xì)化關(guān)系
細(xì)化用來協(xié)調(diào)不同模型之間的關(guān)系,表示各個(gè)開發(fā)階段不同抽象層次之間的相關(guān)性 第十三章:
管理:通過計(jì)劃組織和控制等一系列活動(dòng),合理地配置和使用各種資源,以達(dá)到既定目標(biāo)的過程.軟件項(xiàng)目管理貫穿于軟件的整個(gè)生命周期之中.軟件管理項(xiàng)目過程從一組項(xiàng)目計(jì)劃活動(dòng)開始,而制定計(jì)劃的基礎(chǔ)是工作量估算和完成期限估算.為了使估算項(xiàng)目的工作量和完成期限,首先需要估算軟件的規(guī)模.度量軟件規(guī)模的技術(shù): 1>.代碼行技術(shù):比較簡單的定量估算軟件規(guī)模的方法.2>.功能點(diǎn)技術(shù):依據(jù)對(duì)軟件信息域特性和軟件復(fù)雜性的評(píng)估結(jié)果估算軟件規(guī)模,用功能點(diǎn)(FP)為單位.信息域的五個(gè)特性:輸入項(xiàng)數(shù),數(shù)出項(xiàng)數(shù),查詢數(shù),主文件數(shù),我外部接口數(shù).估算功能點(diǎn)的步驟: 1>.計(jì)算未調(diào)整的功能點(diǎn)數(shù)UFP 2>.計(jì)算技術(shù)復(fù)雜性因子TCF 3>.計(jì)算功能點(diǎn)數(shù)FP 工作量:軟件規(guī)模(KLOC或FP)的函數(shù)。單位:人月.工作量估算常用模型:靜態(tài)單變量模型,動(dòng)態(tài)多變量模型,COCOMO2模型.COCOMO2構(gòu)造性成本模型,給出了三個(gè)層次的軟件開發(fā)工作量估算模型:
1>.應(yīng)用系統(tǒng)組織模型:主要用于估算構(gòu)建原型的工作量。2>.早期設(shè)計(jì)模型:適用于體系結(jié)構(gòu)設(shè)計(jì)階段。
3>.后體系結(jié)構(gòu)模型:適用于完成體系結(jié)構(gòu)設(shè)計(jì)之后的軟件開發(fā)階段。
成本因素分為:產(chǎn)品因素、平臺(tái)因素、人員因素、項(xiàng)目因素。COCOMO2使用的5個(gè)分級(jí)因素:項(xiàng)目先例性、開發(fā)靈活性、風(fēng)險(xiǎn)排除度、項(xiàng)目組凝聚力、過程成熟度。
工程網(wǎng)絡(luò)是系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的強(qiáng)有力的工具,用箭頭表示作業(yè)(即消耗資源又需要持續(xù)一定時(shí)間),用圓圈表示事件(并不消耗時(shí)間和資源).制定進(jìn)度計(jì)劃的工具有Gantt圖和工程網(wǎng)絡(luò)。
機(jī)動(dòng)時(shí)間=它結(jié)束事件的最遲時(shí)刻-它開始事件的最早時(shí)刻-持續(xù)時(shí)間.人員組織: 1>.民主制程序員組
2>.主程序員組(特性:專業(yè)化、層次化)3>.現(xiàn)代程序員組
軟件質(zhì)量:軟件與明確的和隱含的定義的需求相一致的程序.具體地說是:軟件與明確的敘述的功能和性能需求,文檔中明確描述的開發(fā)標(biāo)準(zhǔn)以及任何專業(yè)開發(fā)的軟件產(chǎn)品都應(yīng)該具有的隱含特征相一致的程度.軟件質(zhì)量保證措施:(軟件復(fù)審是最重要的之一)1>.基于非執(zhí)行的測(cè)試 2>.基于執(zhí)行的測(cè)試 3>.程序正確性證明
正式技術(shù)復(fù)審包括走查和審查.走查有兩種方式:參與者驅(qū)動(dòng)法,文檔驅(qū)動(dòng)法。審查的基本步驟:綜述,準(zhǔn)備,審查,返工,跟蹤。
軟件配置管理員是應(yīng)用于整個(gè)軟件過程中的保護(hù)性活動(dòng),是在軟件整個(gè)生命期內(nèi)管理變化的一組活動(dòng)。目標(biāo)是使變化能夠更正確且更容易被適應(yīng),在需要修改軟件時(shí)減少為此而花費(fèi)的工作量。
能力成熟度模型是改進(jìn)軟件過程的有效策略,以增量方式逐步引入變量,明確定義了5個(gè)成熟度級(jí)。一個(gè)軟件開發(fā)組織可用一系列小的改良性步驟買入更高的成熟度等級(jí)。
第四篇:軟件工程導(dǎo)論解答題總結(jié)
1、什么叫軟件:軟件是計(jì)算機(jī)系統(tǒng)中魚硬件相互依存的另一部分,它包括程序,數(shù)據(jù)以及其相關(guān)文檔的完整集合。
2、什么是軟件危機(jī)?軟件危機(jī)的表現(xiàn)是什么?其產(chǎn)生的原因是什么?
軟件危機(jī):軟件發(fā)展第二階段的末期,由于計(jì)算機(jī)硬件技術(shù)的進(jìn)步,計(jì)算機(jī)運(yùn)行速度、容量、可靠性有顯著的提高,生產(chǎn)成本顯著下降,這為計(jì)算機(jī)的廣泛應(yīng)用創(chuàng)造了條件。一些復(fù)雜的、大型的軟件開發(fā)項(xiàng)目提出來了,但是,軟件開發(fā)技術(shù)的進(jìn)步一直未能滿足發(fā)展的需要。在軟件開發(fā)中遇到的問題找不到解決辦法,使問題積累起來,形成了尖銳的矛盾,導(dǎo)致軟件危機(jī)。軟件危機(jī)表現(xiàn)在以下四個(gè)方面:(1)經(jīng)費(fèi)預(yù)算經(jīng)常突破,完成時(shí)間一再拖延。(2)開發(fā)的軟件不能滿足用戶要求。(3)開發(fā)的軟件可維護(hù)性差。(4)開發(fā)的軟件可靠性差。造成軟件危機(jī)的原因是:(1)軟件的規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜。(2)軟件開發(fā)管理困難而復(fù)雜。(3)軟件開發(fā)費(fèi)用不斷增加。(4)軟件開發(fā)技術(shù)落后。(5)生產(chǎn)方式落后。
6)開發(fā)工具落后,生產(chǎn)率提高緩慢。
軟件質(zhì)量保證應(yīng)做好哪幾方面的工作:(1)采用技術(shù)手段和工具。(2)組織正式技術(shù)評(píng)審。(3)加強(qiáng)軟件測(cè)試。(4)推行軟件工程規(guī)范(標(biāo)準(zhǔn))。(5)對(duì)軟件的變更進(jìn)行控制。
(6)對(duì)軟件質(zhì)量進(jìn)行度量。
3、簡述軟件工程的概念:軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。
4、兩種軟件工程方法學(xué)開發(fā)軟件時(shí)要建立哪些模型:軟件工程方法學(xué)包括傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。常用的開發(fā)模型有:瀑布模型,原型模型,增量模型,螺旋模型和噴泉模型。
5、軟件過程模型有哪些?簡述它們的特點(diǎn):過程模型分為五大類:1.管理過程模型。2.瀑布模型。3.增量過程模型:包括增量模型、RAD模型。4.煙花過程模型:包括 原型開發(fā)模型、螺旋模型、協(xié)同開發(fā)模型。5.專用過程模型:包括 機(jī)遇構(gòu)建的開發(fā)模型、形式化方法模型、面向方面的軟件開發(fā)模型。
6、什么是軟件生命周期:一個(gè)軟件從定義、開發(fā)、使用和維護(hù),知道最終被廢棄,要經(jīng)歷一個(gè)毛長的時(shí)期,通常把軟件經(jīng)歷的這個(gè)漫長的時(shí)期成為生命周期。
7、軟件生命周期有哪幾個(gè)階段和步驟:1.軟件定義,包括問題定義可行性研究和需求分析。
2.開發(fā)時(shí)期包括:總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼和單元測(cè)試,綜合測(cè)試。3.維護(hù)時(shí)期。
8、計(jì)算機(jī)軟件的開發(fā)經(jīng)過哪三個(gè)大階段:答:定義、開發(fā)、維護(hù)。
9、軟件開發(fā)的各階段的任務(wù)是什么:1.問題定義:關(guān)于規(guī)模和目標(biāo)的報(bào)告書。2.可行性研究:系統(tǒng)的高層邏輯模型:數(shù)據(jù)流圖,成本,效益分析3.需求分析:系統(tǒng)的邏輯模型:數(shù)據(jù)流圖,數(shù)據(jù)字典,算法描述。4.總體設(shè)計(jì):系統(tǒng)流程圖,成本、效益分析。推薦的系統(tǒng)結(jié)構(gòu):層次圖、結(jié)構(gòu)圖。5.詳細(xì)設(shè)計(jì):HIPO圖或PDL圖。6.編碼和單元測(cè)試:綜合測(cè)試方案、結(jié)果繼承測(cè)試,驗(yàn)收測(cè)試,完整一直的軟件配置。7.維護(hù):包括改正性維護(hù),適應(yīng)性維護(hù),完整性維護(hù)和預(yù)防性維護(hù)。
10、簡述傳統(tǒng)方法學(xué)軟件設(shè)計(jì)的基本原理及內(nèi)容。
原理:采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。
內(nèi)容:把軟件生命周期的全過程依次劃分為若干個(gè)階段,然后順序地完成每個(gè)階段的任務(wù)。采用生命周期方法學(xué)可以大大提高軟件開發(fā)的成功率,軟件開發(fā)的生產(chǎn)率也能明顯提高。
11、面向?qū)ο笤O(shè)計(jì)準(zhǔn)則:1.模塊化2.抽象3.信息隱藏4.弱耦合5.強(qiáng)內(nèi)聚6.可重用
11、簡述面向?qū)ο蠓椒▽W(xué)的4個(gè)要點(diǎn)。
(1)把對(duì)象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。
(2)把所有對(duì)象都劃分成類。
(3)按照父類與子類的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)。
(4)對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。
12、軟件設(shè)計(jì)分哪兩個(gè)階段?總體設(shè)計(jì)的兩個(gè)階段分別是什么?答:分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。總體設(shè)計(jì)包括系統(tǒng)設(shè)計(jì)(劃分出組成系統(tǒng)的程序、文件、數(shù)據(jù)庫、人工過程和文檔等物理元素)和結(jié)構(gòu)設(shè)計(jì)(確定系統(tǒng)中每個(gè)程序是有哪些模塊組成的,以及這些模塊相互的聯(lián)系,不設(shè)計(jì)模塊內(nèi)部算法流程。)
13、軟件與硬件的區(qū)別是什么?答:軟件是一種邏輯部件,而不是具體的物理部件。軟件在開發(fā)、生產(chǎn)、使用和維護(hù)等方面與硬件有明顯差異。1.軟件是開發(fā),硬件是制造。2.軟件是自定的,硬件是組裝的。3.軟件不會(huì)磨損,硬件存在機(jī)械磨損問題。
14、簡述需求分析工作可以分成哪四個(gè)方面?軟件需求分析的有哪三個(gè)基本原則?
答:需求分析階段分成四個(gè)方面:對(duì)問題的識(shí)別、分析與綜合、制定規(guī)格說明和評(píng)審。三個(gè)基本原則:必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域;必須按自頂向下、逐步分解的方式對(duì)問題進(jìn)行分解和不斷細(xì)化;要給出系統(tǒng)的邏輯視圖和物理視圖。
15、軟件需求分析的任務(wù)是什么?雪球分析的任務(wù)是確定系統(tǒng)必須完成哪些工作,也就是對(duì)木匾系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。一般來說,需求分析的任務(wù)包括下述幾方面:
1.確定對(duì)系統(tǒng)的綜合要求(主要有:功能要求、性能需求、巡行需求、將來可能提出的需求。)
2.分析系統(tǒng)的數(shù)據(jù)要求、3.到處系統(tǒng)的邏輯模型:數(shù)據(jù)流圖、實(shí)體-聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典、算法流程等4.修正系統(tǒng)開發(fā)計(jì)劃。
16、瀑布模型與原型模型分別適用于開發(fā)哪些軟件:瀑布模型適用于需求穩(wěn)定,而且可以預(yù)先制定的大型系統(tǒng)工程項(xiàng)目。原型模型適合于需求模糊或者隨時(shí)間變化的中小型項(xiàng)目。
17、數(shù)據(jù)流圖的作用是什么?如何畫數(shù)據(jù)流圖?答:數(shù)據(jù)流圖簡稱DFD,它是以特定的圖形符號(hào)描述系統(tǒng)邏輯模型的工具;它從數(shù)據(jù)傳送和加工的角度抽象的描述信息在系統(tǒng)中的流動(dòng)和數(shù)據(jù)處理的過程;它是開發(fā)人員與用戶之間交流信息的通信工具;它也是系統(tǒng)分析與系統(tǒng)設(shè)計(jì)的工具。畫法總結(jié):1.先找出數(shù)據(jù)原點(diǎn)和匯點(diǎn),它們是外部實(shí)體,由它們確定系統(tǒng)與外界的借口。2.找出外部實(shí)體的輸出數(shù)據(jù)流與輸入數(shù)據(jù)流,畫出頂層數(shù)據(jù)流圖。3.從頂層加工出發(fā),逐步細(xì)化,畫出所需子圖。4.分析系統(tǒng)的主要處理功能,把每一個(gè)處理功能作為一個(gè)加工,并且確定它們之間的數(shù)據(jù)流入,流出關(guān)系,畫出第一層數(shù)據(jù)流圖。5.對(duì)流圖中的每個(gè)加工進(jìn)行細(xì)化,畫出所需的子圖,直到加工不需再分解為止。6.按照前面給出原則檢查和修改每一層數(shù)據(jù)流圖和子圖。
18、什么叫數(shù)據(jù)字典?如何寫數(shù)據(jù)字典?答:數(shù)據(jù)字典是描述數(shù)據(jù)流圖中數(shù)據(jù)的信息的集合(描述內(nèi)容包括:數(shù)據(jù)流圖、狀態(tài)轉(zhuǎn)化圖。E-R圖中的數(shù)據(jù)信息(數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、外部實(shí)體)、控制星系等,不包括處理)如何寫?數(shù)據(jù)元素的組合方式:順序:即以確定的次序連接兩個(gè)或多個(gè)分量。選擇:即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。重復(fù):即把制定的分量重復(fù)零次或多次。
19、軟件設(shè)計(jì)的原則有哪些?模塊化、抽象與逐步求精、信息隱藏于局部化,模塊獨(dú)立。
20、耦合與內(nèi)聚分別有哪些?如何定義?如何區(qū)分:耦合衡量圖同模塊彼此見相互依賴的緊密程度,內(nèi)聚衡量一個(gè)模塊內(nèi)部各元素彼此結(jié)合的緊密程度。耦合的種類:數(shù)據(jù)耦合、標(biāo)記耦合、控制耦合、公共耦合、內(nèi)容耦合。內(nèi)聚的種類:順序內(nèi)聚、通訊內(nèi)聚、過程內(nèi)聚、暫時(shí)內(nèi)聚、邏輯內(nèi)聚。
21、詳細(xì)設(shè)計(jì)階段用到了哪些圖形工具?答:程序流程圖(PFD)盒圖(N-S)圖 問題分析圖(PAD)判定表/判定樹圖。
22、軟件工程的啟發(fā)式規(guī)則有哪些:A.當(dāng)模塊過大時(shí)就應(yīng)該分解它。B.深度、寬度、扇出和扇入都應(yīng)適當(dāng)。C.對(duì)于任何一個(gè)內(nèi)部存在判斷調(diào)用的模塊,它的判斷作用的范圍應(yīng)該是其控制范圍的一個(gè)自己。D.力爭降低模塊接口的復(fù)雜程度。E.設(shè)計(jì)單入口單出口的模塊
23、模塊的作用域與控制域分別指什么?答:模塊的控制域:本身及其所有下級(jí)模塊(包括直接和間接下級(jí)模塊)。模塊的作用域:受到該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。
24、模塊的扇入、扇出、深度、寬度分別是什么意思:深度表示軟件結(jié)構(gòu)中控制的層----醋溜的標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。模塊的扇出指的是一個(gè)模塊擁有的直屬下級(jí)模塊的個(gè)數(shù),一般扇出數(shù)控制在7以內(nèi),平均為3或4。模塊的扇入指的是一個(gè)模塊的直接上級(jí)模塊的個(gè)數(shù)。
軟件測(cè)試的目的是什么?答:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;測(cè)試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;軟件測(cè)試絕對(duì)不是要證明程序的正確性,也證明不了程序的正確性。
單元測(cè)試有那些內(nèi)容?答:單元測(cè)試主要針對(duì)模塊的以下五個(gè)基本特征進(jìn)行測(cè)試:1.模塊接口2.局部數(shù)據(jù)結(jié)構(gòu)3.重要的執(zhí)行路徑4.錯(cuò)誤處理5.邊界條件
25、什么是集成測(cè)試?非漸增式和漸增式有什么區(qū)別?漸增式如何組裝模塊?(答案
26、什么是確認(rèn)測(cè)試?該階段有那些工作? 答:按照需求規(guī)格說明書中的確定指標(biāo)對(duì)系統(tǒng)驚醒功能與性能的測(cè)試。進(jìn)行明確測(cè)試(對(duì)照雪球規(guī)格說明書用黑河法進(jìn)行測(cè)試)、軟件配置檢測(cè)。(文檔的完整性,發(fā)現(xiàn)遺漏誤及時(shí)補(bǔ)充和修改)
27、什么叫流圖?如何畫出流圖?流圖的環(huán)形復(fù)雜度如何計(jì)算? 答:流圖是抽象化的程序流圖,突出表現(xiàn)控制流,符號(hào)〇為流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)五分制語句。剪頭為變,表示控制流的方向。在分支結(jié)構(gòu)中,分支的匯聚處應(yīng)由一個(gè)匯聚結(jié)點(diǎn),每一條邊必須終止與一個(gè)結(jié)點(diǎn),結(jié)構(gòu)判斷中的條件表達(dá)式是有一個(gè)或多個(gè)邏輯運(yùn)算符(OR,AND,NAND,NOR)連接的符合條件表達(dá)式,則需要改為一系列只有單個(gè)條件的嵌套的判斷。根據(jù)程序內(nèi)但條件分指數(shù)或循環(huán)個(gè)數(shù)來度量環(huán)形復(fù)雜度即程序的復(fù)雜度。V(G)=流圖區(qū)域數(shù) V(G)=變數(shù)-節(jié)點(diǎn)數(shù)+2 V(G)=單條件判定樹+128、什么是黑盒測(cè)試法:黑盒測(cè)試法把程序看成一個(gè)黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù),產(chǎn)生正確地輸出信息。
黑盒測(cè)試中,設(shè)計(jì)測(cè)試用例的五種方法:
1)等價(jià)類劃分法;2)邊界值分析法;3)錯(cuò)誤推測(cè)法;4)因果圖分析法;5)場(chǎng)景分析法。
29、白盒測(cè)試與黑盒測(cè)試分別有哪些測(cè)試方法?如何對(duì)具體問題測(cè)試?答:百合測(cè)試對(duì)程序模塊的所有的執(zhí)行路徑至少測(cè)試一側(cè);對(duì)所有的邏輯判定,取“真“與取”假“的兩種情況都至少測(cè)試一次;百合測(cè)試也叫邏輯覆蓋法,包括:語句覆蓋,判定覆蓋,條件覆蓋。黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。黑盒測(cè)試有等價(jià)類法和邊界值分析法。
30、什么叫維護(hù)?維護(hù)的類型有哪些?答:軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足心的需求而修改軟件的過程。類型有:1.該整形維護(hù):對(duì)程序使用期間發(fā)現(xiàn)的程序錯(cuò)誤進(jìn)行診斷和改正的過程;占維護(hù)工作量的17-21%。2.適應(yīng)性維護(hù):配合變化了的環(huán)境進(jìn)行修改軟件的活動(dòng);占工作量的13-25%3.完整性維護(hù):滿足用戶在使用過程中提出增加心的功能或修改以后功能的建議而進(jìn)行的改進(jìn)性工作;占工作量的50-66% 4.預(yù)防性維護(hù):為了改善未來的可維護(hù)性或可靠性而修改軟件的工作;占維護(hù)工作的4%左右。
34、耦合性有哪幾種類型? 其耦合度的順序如何低:非直接耦合數(shù)據(jù)耦合 標(biāo)記耦合控制耦合 外部耦合公共耦合 內(nèi)容耦合 :高
31、UML中活動(dòng)圖、狀態(tài)圖、順序圖都分別描述什么?答:活動(dòng)圖強(qiáng)調(diào)的是從活動(dòng)到活動(dòng)的控制流,是一種表述過程機(jī)理、業(yè)務(wù)過程以及工作流的技術(shù)。它可以用來對(duì)業(yè)務(wù)過程,國祚流建立模型,也可以對(duì)用力實(shí)現(xiàn)甚至是程序?qū)崿F(xiàn)來建模。狀態(tài)機(jī)圖常用來描述業(yè)務(wù)或軟件系統(tǒng)中的對(duì)象在外部事件的作用下,對(duì)象的狀態(tài)從一種狀態(tài)到另一種狀態(tài)的控制流。順序圖描述的是對(duì)象之間的消息發(fā)送關(guān)系,而不是類之間的關(guān)系。
31、UML中的事物有哪些:結(jié)構(gòu)事物UML中的名詞,它是模型的靜態(tài)部分,描述概念或物理元素。行為事物:UML中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一種跨越時(shí)間、空間的行為。分組事物:UML中的容器,用來組織模型,使模型更加的結(jié)構(gòu)化。注釋事物:UML中的解釋部分,和代碼中的注視語句一樣,是用來描述模型的。
32、用例圖的作用是什么:用例圖是外部參與者所能觀察到的系統(tǒng)功能的模型圖,由一組用例、參與者以及他們之間的關(guān)系組成。主要用于對(duì)系統(tǒng)、子類系統(tǒng)或類的功能行為驚醒建模。參與者是與系統(tǒng)交互的外部實(shí)體,可以是人,也可以是其他系統(tǒng)。用例是從用戶的角度描述系統(tǒng)的行為,它將系統(tǒng)的功能描述成一系列時(shí)間,這些時(shí)間族中對(duì)參與者產(chǎn)生可觀察結(jié)果。
33、UML中的關(guān)系有哪些:UML定義的關(guān)系主要有六種:依賴、類屬、關(guān)聯(lián)、實(shí)現(xiàn)、聚合和組合。
35、解釋概念:
軟件生存周期模型:描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型
數(shù)據(jù)字典(DD):用來定義數(shù)據(jù)流圖中的各個(gè)成分的具體含義的。它以一種準(zhǔn)確的、無二義性的說明方式為系統(tǒng)的分析、設(shè)計(jì)及維護(hù)提供了有關(guān)元素的一致的定義和詳細(xì)的描述。內(nèi)聚性:內(nèi)聚性是模塊獨(dú)立性的衡量標(biāo)準(zhǔn)之一,它是指模塊的功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量
JSP方法:JSP方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,其定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過程,它根據(jù)輸入,輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,即程序結(jié)構(gòu)。多態(tài)性:指相同的操作或函數(shù)、過程可作用于多種類型的對(duì)象上并獲得不同結(jié)果。
36、簡述容錯(cuò)技術(shù)的四種主要手段,并解釋。
結(jié)構(gòu)冗余:包括靜態(tài)冗余、動(dòng)態(tài)冗余和混合冗余。
信息冗余:為檢測(cè)或糾正信息在運(yùn)算或傳輸中的錯(cuò)誤,須外加一部分信息。
時(shí)間冗余:指重復(fù)執(zhí)行指令或程序來消除瞬時(shí)錯(cuò)誤帶來的影響。
冗余附加技術(shù):指為實(shí)現(xiàn)上述冗余技術(shù)所需的資源和技術(shù)。
37、以G.J.Myers的觀點(diǎn),簡述對(duì)軟件測(cè)試的定義。
G.Myers給出了關(guān)于測(cè)試的一些規(guī)則,這些規(guī)則也可以看作是測(cè)試的目標(biāo)或定義。
(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程;
(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;
(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
38、以G.J.Myers的觀點(diǎn),簡述對(duì)軟件測(cè)試的目的。
(1)為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;(2)一個(gè)好的用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。(3)一個(gè)成功的測(cè)試是發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
39、就程序設(shè)計(jì)語言的工程特性而言,對(duì)程序編碼有哪些要求?
(1)可移植性(2)開發(fā)工具的可利用性(3)軟件的可重用性(4)可維護(hù)性
40、模塊的內(nèi)聚性包括哪些類型?
偶然內(nèi)聚(2)邏輯內(nèi)聚(3)時(shí)間內(nèi)聚(4)通信內(nèi)聚(5)順序內(nèi)聚(6)功能內(nèi)聚
41、列舉出5個(gè)詳細(xì)設(shè)計(jì)階段的常用工具。
程序流程圖,盒圖,PAD圖(問題分析圖),判定表,判定樹,過程設(shè)計(jì)語言,44、系統(tǒng)設(shè)計(jì)的內(nèi)容是什么?
(1)系統(tǒng)分解。(2)確定并發(fā)性。(3)處理器及任務(wù)分配。(4)數(shù)據(jù)存儲(chǔ)管理。(5)全局資源的處理。(6)選擇軟件控制機(jī)制。(7)人機(jī)交互接口設(shè)計(jì)。
42、可行性分析
經(jīng)濟(jì)可行性:進(jìn)行開發(fā)成本的估算以及了解取得效益的評(píng)估,確定要開發(fā)的項(xiàng)目是否值得投資開發(fā)。
社會(huì)可行性:要開發(fā)的項(xiàng)目是否存在任何侵犯、妨礙等責(zé)任問題,要開發(fā)項(xiàng)目目的運(yùn)行方式在用戶組織內(nèi)是否行得通,現(xiàn)有管理制度、人員素質(zhì)、操作方式是否可行。
投資回收期:投資回收期就是使累計(jì)的經(jīng)濟(jì)效益等于最初的投資費(fèi)用所需的時(shí)間。對(duì)應(yīng)關(guān)系:即有直接因果關(guān)系在程序中可以同時(shí)處理。
結(jié)構(gòu)沖突:輸入數(shù)據(jù)與輸出數(shù)據(jù)結(jié)構(gòu)找不到對(duì)應(yīng)關(guān)系的情況,稱為結(jié)構(gòu)沖突。
43、可行性研究報(bào)告的主要內(nèi)容有哪些?
(1)引言:編寫本文檔的目的;項(xiàng)目的名稱、背景;本文檔用到的專門術(shù)語和參考資料。
(2)可行性研究前提:說明開發(fā)項(xiàng)目的功能、性能和基本要求;達(dá)到的目標(biāo);各種限制條件;可行性研究方法和決定可行性的主要因素。
(3)對(duì)現(xiàn)有系統(tǒng)的分析:說明現(xiàn)有系統(tǒng)的處理流程和數(shù)據(jù)流程;工作負(fù)荷;各項(xiàng)費(fèi)用支出;所需要各類專業(yè)技術(shù)人員的數(shù)量;所需要各種設(shè)備;現(xiàn)有系統(tǒng)存在什么問題。
(4)所建議系統(tǒng)的技術(shù)可行性分析:所建議系統(tǒng)的簡要說明;處理流程和數(shù)據(jù)流程;與現(xiàn)有的系統(tǒng)比較的優(yōu)越性;采用所建議系統(tǒng)對(duì)用戶的影響;對(duì)各種設(shè)備、現(xiàn)有軟件、開發(fā)環(huán)境、運(yùn)行環(huán)境的影響;對(duì)經(jīng)費(fèi)支出的影響;對(duì)技術(shù)可行性的評(píng)價(jià)。
(5)所建議系統(tǒng)的經(jīng)濟(jì)可行性分析:說明所建議系統(tǒng)的各種支出,各種效益;收益投資比;投資回收周期。
(6)社會(huì)因素可行性分析:說明法律因素,對(duì)合同責(zé)任、侵犯專利權(quán)、侵犯版權(quán)等問題的分析;說明用戶使用可行性,是否滿足用戶行政管理、工作制度、人員素質(zhì)的要求。
(7)其他可供選擇方案:逐一說明其他可供選擇的方案,并說明未被推薦的理由。
(8)結(jié)論意見:說明項(xiàng)目能否開發(fā);還需要什么條件才能開發(fā);對(duì)項(xiàng)目目標(biāo)有什么變動(dòng)等。
44、迭代模型的四個(gè)階段:(1)初始階段。本階段主要工作是確定系統(tǒng)的業(yè)務(wù)用況和定義項(xiàng)目的范圍。(2)精化階段。本階段主要工作是分析問題域、細(xì)化產(chǎn)品定義,定義系統(tǒng)的構(gòu)架并建立基線,為構(gòu)建階段的設(shè)計(jì)和實(shí)施工作提供一個(gè)穩(wěn)定的基礎(chǔ)。(3)構(gòu)建階段。本階段主要工作是反復(fù)地開發(fā),以完善產(chǎn)品,達(dá)到用戶的要求。(4)產(chǎn)品化(移交)階段。本階段主要工作是將產(chǎn)品交付給用戶,包括安裝、培訓(xùn)、交付、維護(hù)等工作。
45、ISO9001與CMMI的聯(lián)系與區(qū)別:兩者的相同點(diǎn)是:CMMI和ISO9001標(biāo)準(zhǔn)都致力于質(zhì)量和過程管理,都是為了解決同樣的問題。兩者的不同點(diǎn)是:(1)CMMI是動(dòng)態(tài)的、開放的和持續(xù)改進(jìn)的,它強(qiáng)調(diào)沒有最好只有更好,強(qiáng)調(diào)不斷改進(jìn),強(qiáng)調(diào)人在軟件開發(fā)方面的主動(dòng)性,非常適用于軟件過程的改進(jìn)。CMMI模型主要關(guān)注軟件,它能解決“軟件危機(jī)”這個(gè)世界性的問題。(2)ISO 9001是靜態(tài)的質(zhì)量控制,只要達(dá)到20個(gè)關(guān)鍵指標(biāo)或過程,就能完成質(zhì)量控制,它更適用于硬件制造行業(yè)和第三產(chǎn)業(yè)(服務(wù)行業(yè))的質(zhì)量控制。(3)CMMI與ISO9001的設(shè)計(jì)思路有差異:CMMI是“專用”,ISO9001是“通用”。ISO 9001不覆蓋CMMI,CMMI也不完全覆蓋ISO9001。
第五篇:軟件工程導(dǎo)論知識(shí)點(diǎn)總結(jié)(整理)
《軟件工程導(dǎo)論》課后習(xí)題答案
第一章 軟件工程概論
1.什么是軟件危機(jī)?
軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這 些問題表現(xiàn)在以下幾個(gè)方面:
(1)用戶對(duì)開發(fā)出的軟件很難滿意。
(2)軟件產(chǎn)品的質(zhì)量往往靠不住。
(3)一般軟件很難維護(hù)。
(4)軟件生產(chǎn)效率很低。
(5)軟件開發(fā)成本越來越大。
(6)軟件成本與開發(fā)進(jìn)度難以估計(jì)。
(7)軟件技術(shù)的發(fā)展遠(yuǎn)遠(yuǎn)滿足不了計(jì)算機(jī)應(yīng)用的普及與深入的需要。
2.為什么會(huì)產(chǎn)生軟件危機(jī)?
(1)開發(fā)人員方面,對(duì)軟件產(chǎn)品缺乏正確認(rèn)識(shí),沒有真正理解軟件產(chǎn)品是一個(gè)完整的配置組成。造成開發(fā)中制定計(jì)劃盲目、編程草率,不考慮維護(hù)工作的必要性。
(2)軟件本身方面,對(duì)于計(jì)算機(jī)系統(tǒng)來說,軟件是邏輯部件,軟件開發(fā)過程沒有統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo),造成軟件維護(hù)困難。
(3)尤其是隨著軟件規(guī)模越來越大,復(fù)雜程度越來越高,原有軟件開發(fā)方式效率不高、質(zhì)量不能保證、成本過高、研制周期不易估計(jì)、維護(hù)困難等一系列問題更為突出,技術(shù)的發(fā)展已經(jīng)遠(yuǎn)遠(yuǎn)不能適應(yīng)社會(huì)需求。
3.怎樣克服軟件危機(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ù)措施(方法和工具),又要有必要的組織管理措施。
4.構(gòu)成軟件項(xiàng)目的最終產(chǎn)品:
應(yīng)用程序、系統(tǒng)程序、面向用戶的文檔資料和面向開發(fā)者的文檔資料。
5.什么是軟件生存周期?
軟件生存周期是指從軟件定義、開發(fā)、使用、維護(hù)到淘汰的全過程。
6.軟件生存周期為什么劃分成階段?
(1)任何一個(gè)階段的具體任務(wù)不僅獨(dú)立,而且簡單,便于不同人員分工協(xié)作,從而降低整個(gè)軟件開發(fā)工作的困難程度。
(2)可以降低每個(gè)階段任務(wù)的復(fù)雜程度,簡化不同階段的聯(lián)系,有利于工程的組織管理,也便于采用良好的技術(shù)方法。
(3)使軟件開發(fā)的全過程以一種有條不紊的方式進(jìn)行,保證軟件的質(zhì)量,特別是提高了軟件的可維護(hù)性。
7.應(yīng)該怎樣來劃分階段?
(1)每一個(gè)階段的任務(wù)盡可能獨(dú)立;
(2)同一階段內(nèi)的任務(wù)性質(zhì)盡可能相同;
(3)每一個(gè)階段任務(wù)的開始和結(jié)束有嚴(yán)格的標(biāo)準(zhǔn)。
8.軟件開發(fā)模型有幾種?它們的開發(fā)方法有可特點(diǎn)?
軟件開發(fā)模型有瀑布型、漸增型和變換型。
瀑布型開發(fā)方法是按照軟件生存周期的劃分依次實(shí)施,每一個(gè)階段有明確規(guī)定的任務(wù)。它的特點(diǎn):
(1)各個(gè)階段的順序性和依賴性;
(2)劃分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn);
(3)每個(gè)階段必須完成規(guī)定的文檔,對(duì)其中問題通過復(fù)審及早發(fā)現(xiàn),及早解決。
漸增型開發(fā)方法及特點(diǎn):
(1)從部分需求出發(fā),先建立一個(gè)不完全的系統(tǒng),通過測(cè)試運(yùn)行該系統(tǒng)取得經(jīng)驗(yàn)和信息反饋,加深對(duì)軟件需求的理解,進(jìn)一步使系統(tǒng)擴(kuò)充和完善。如此反復(fù),直至軟件人員和用戶對(duì)所設(shè)計(jì)完成的軟件系統(tǒng)滿意為止。
(2)在漸增型開發(fā)下的軟件是隨軟件開發(fā)的過程而逐漸形成的。
(3)漸增型開發(fā)方法適合于知識(shí)型軟件的開發(fā),設(shè)計(jì)系統(tǒng)時(shí)對(duì)用戶需求的認(rèn)識(shí)開始不是很清楚的,需要在開發(fā)過程中不斷認(rèn)識(shí)、不斷獲得新的知識(shí)去豐富和完善系統(tǒng)。多數(shù)研究性質(zhì)的試驗(yàn)軟件,一般采用此方法。
變換型開發(fā)方法及特點(diǎn):
(1)從軟件需求的形式化說明出發(fā),經(jīng)過一系列的程序變換,得到最終的程序系統(tǒng)。
(2)該方法必須有嚴(yán)格的數(shù)學(xué)理論和形式化技術(shù)的支持。
9.什么是軟件工程?
軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。
(1)它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件;
(2)它將管理技術(shù)與當(dāng)前經(jīng)過時(shí)間考驗(yàn)的而證明是正確的技術(shù)方法結(jié)合起來;
(3)它強(qiáng)調(diào)使用生存周期方法學(xué)和結(jié)構(gòu)分析和結(jié)構(gòu)技術(shù);
(4)經(jīng)過人們長期的努力和探索,圍繞著實(shí)現(xiàn)軟件優(yōu)質(zhì)高產(chǎn)這個(gè)目標(biāo),從技術(shù)到管理兩個(gè)方面做了大量的努力,逐漸形成了“軟件工程學(xué)”這一新的學(xué)科。
10.什么是軟件工程環(huán)境: 方法與工具的結(jié)合,加上配套的軟、硬件支持稱為軟件工程環(huán)境。它能支持開發(fā)者按照軟件工程的方法,全面完成生存周期中的各項(xiàng)任務(wù)。
第二章 可行性研究
1.問題定義的任務(wù)和主要工作?
問題定義的任務(wù):將用戶提出的要求具體化、定量化;確定研制系統(tǒng)的范圍,明確研制的邊界。
問題定義階段的工作:
(1)通過調(diào)查研究,了解系統(tǒng)需求;
(2)確定系統(tǒng)的功能需求、性能需求、可靠性需求、安全及保密性、資源、開發(fā)費(fèi)用及開發(fā)進(jìn)度等的需求;
(3)問題定義階段的產(chǎn)品--系統(tǒng)目標(biāo)與范圍說明書。
2.可行性研究目的?
確定在問題定義中所提出的問題是否值得去解,在限制條件下,問題能否解決。
3.可行性研究的任務(wù)?
(1)進(jìn)一步分析和澄清問題的定義,在澄清問題的基礎(chǔ)上,導(dǎo)出系統(tǒng)的邏輯模型;
(2)從系統(tǒng)邏輯模型中,選擇問題的若干種主要解法,研究每一種解法的可行性,為以后的行動(dòng)提出建議;
(3)如果問題沒有可行的解,建議停止系統(tǒng)開發(fā);如果問題有可行的解,應(yīng)該推薦一個(gè)較好的解決方案,并為工程制定一個(gè)初步的計(jì)劃。
4.可行性研究包括哪幾方面的內(nèi)容?
(1)技術(shù)可行性:現(xiàn)有技術(shù)能否實(shí)現(xiàn)本系統(tǒng),現(xiàn)有技術(shù)人員能否勝任,開發(fā)系統(tǒng)的資源能否滿足;
(2)經(jīng)濟(jì)可行性:經(jīng)濟(jì)效益是否超出開發(fā)成本;
(3)操作可行性:系統(tǒng)操作在用戶內(nèi)部行得通嗎?
(4)法律可行性:新系統(tǒng)開發(fā)是否會(huì)侵犯他人、集體或國家利益,是否違反國家法律。
5.可行性研究的步驟?
(1)復(fù)查系統(tǒng)的規(guī)模和目標(biāo);
(2)研究目前正在使用的系統(tǒng),總結(jié)現(xiàn)有系統(tǒng)的優(yōu)劣,提出新系統(tǒng)的雛形;(3)導(dǎo)出新系統(tǒng)的高層邏輯模型;(4)推薦建議方案;
(5)推薦行動(dòng)方針;
(6)書寫計(jì)劃任務(wù)書(可行性報(bào)告);
(7)提交審查。
6.可行性研究報(bào)告的主要內(nèi)容?
可行性分析的結(jié)果是可行性研究報(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ì)方和投資方共同簽署意見。
第三章 需求分析
1.需求分析的描述工具有哪些?
有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定表、判定樹、結(jié)構(gòu)化自然語言、層次方框圖、Warnier圖、IPO圖和需求描述語言等。
2.需求分析的基本任務(wù)是什么?
準(zhǔn)確定義未來系統(tǒng)的目標(biāo),確定為了滿足用戶的需要系統(tǒng)必須做什么。
3.怎樣建立目標(biāo)系統(tǒng)的邏輯模型?要經(jīng)過哪些步驟? 建立目標(biāo)系統(tǒng)的邏輯模型的過程也就是數(shù)據(jù)流圖的分解過程。
4.什么是結(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)。
5.軟件需求規(guī)格說明書由哪些部分組成?
組成包括:
(1)引言:編寫目的、背景說明、術(shù)語定義及參考資料等。(2)概述主要功能、約束條件或特殊需求。(3)數(shù)據(jù)流圖與數(shù)據(jù)字典。
(4)用戶接口、硬件接口及軟件接口。(5)性能需求、屬性等。
(6)其它需求,如數(shù)據(jù)庫、操作及故障處理等。
6.為什么數(shù)據(jù)流圖要分層?畫分層的DFD要遵循哪些原則?
分層的目的:便于逐步細(xì)化、結(jié)構(gòu)清晰。畫分層的DFD要遵循哪些原則:(1)父圖與子圖之間數(shù)據(jù)要平衡。
(2)分解的深度和層次達(dá)到使加工足夠簡單、易于理解的基本加工為止。
(3)區(qū)分局部文件和局部外部項(xiàng)(局限于數(shù)據(jù)流中某一層或某幾層的文件和外部項(xiàng))。(4)不要把控制流作為數(shù)據(jù)流。(5)忽略瑣碎的枝節(jié)。
(6)每個(gè)數(shù)據(jù)流要有一個(gè)合適的名字,盡量使用現(xiàn)實(shí)系統(tǒng)中有具體意義的名字。
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ù)處理的工作狀況。
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)邏輯模型。
9.描述加工邏輯的工具有哪些?
判定樹、判斷表和結(jié)構(gòu)化語言等。
第四章 總體設(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.什么是模塊?模塊具有哪幾個(gè)特征?總體設(shè)計(jì)主要考慮什么特征?
模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希梢詥为?dú)命名且可通過名字來訪問。
模塊具有輸入和輸出(參數(shù)傳遞)、功能、內(nèi)部數(shù)據(jù)結(jié)構(gòu)(局部變量)和程序代碼四個(gè)特性。
概要設(shè)計(jì)主要考慮輸入、輸出(參數(shù)傳遞)和功能兩個(gè)特性。
4.什么是模塊化?模塊設(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)。
5.變換型數(shù)據(jù)流由哪幾部分組成?
變換型結(jié)構(gòu)由三部分組成:傳入路徑、變換(加工)中心和傳出路徑。6.變換分析設(shè)計(jì)的步驟?
(1)區(qū)分傳入、傳出和變換中心三部分,劃分DFD圖的分界線;(2)完成第一級(jí)分解:建立初始SC圖的框架;(3)完成第二級(jí)分解:分解SC圖的各個(gè)分支;
(4)對(duì)初始結(jié)構(gòu)圖按照設(shè)計(jì)準(zhǔn)則進(jìn)行精化與改進(jìn)。
7.事務(wù)型數(shù)據(jù)流由哪幾部分組成?
事務(wù)型結(jié)構(gòu)由至少一條接受路徑、一個(gè)事務(wù)中心與若干條動(dòng)作路徑組成。
8.事務(wù)分析設(shè)計(jì)的步驟?
(1)在DFD圖中確定事務(wù)中心、接收部分(包含全部接收路徑)和發(fā)送部分(包含全部動(dòng)作路徑);
(2)畫出SC圖框架,把DFD圖的三部分分?quot;映射“為事務(wù)控制模塊,接收模塊和動(dòng)作發(fā)送模塊.一般得到SC圖的頂層和第一層(如果第一層簡單可以并入頂層);
(3)分解和細(xì)化接收分支和動(dòng)作分支,完成初始的SC圖;
(4)對(duì)初始結(jié)構(gòu)圖按照設(shè)計(jì)準(zhǔn)則進(jìn)行精化與改進(jìn)。
9.比較層次方框圖與結(jié)構(gòu)圖是的異同?
(1)層次方框圖描繪數(shù)據(jù)的層次結(jié)構(gòu), 結(jié)構(gòu)圖描繪的是軟件結(jié)構(gòu)。
(2)二者都采用多層次矩形框樹形結(jié)構(gòu)。層次方框圖的頂層矩形框代表完整的數(shù)據(jù)結(jié)構(gòu), 下面各層矩形框依次代表上個(gè)框數(shù)據(jù)的子集;結(jié)構(gòu)圖
是在層次圖的每一個(gè)方框內(nèi)注明模塊的名字或主要功能,方框之間的直線表示模塊的調(diào)用關(guān)系,用帶注解的箭頭表示模塊調(diào)用過程中傳遞的信息。
第五章 詳細(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è)試.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ì)的描述工具應(yīng)具備什么功能?
無論哪類描述工具不僅要具有描述設(shè)計(jì)過程,如控制流程、處理功能、數(shù)據(jù)組織及其它方面的細(xì)節(jié)的能力,而且在編碼階段能夠直接將它翻譯為用程序設(shè)計(jì)語言書寫的源程序。
第六章
編碼
1.編碼的任務(wù)?
使用選定的程序設(shè)計(jì)語言,把模塊的過程性描述翻譯為用語言書寫的源程序(源代碼)。
2.對(duì)源程序基本要求?
源程序要求:正確可靠、簡明清晰、效率高。(1)源程序的正確性是對(duì)程序質(zhì)量的最基本要求;
(2)源程序的簡明清晰,便于驗(yàn)證源代碼和模塊規(guī)格說明的一致性,容易進(jìn)行測(cè)試和維護(hù);
(3)對(duì)于大多數(shù)模塊,編碼時(shí)應(yīng)該把簡明清晰放在第一位;
(4)除了編碼階段產(chǎn)生源代碼外,在測(cè)試階段也需要編寫一些測(cè)試程序,用于對(duì)軟件的測(cè)試。
3.程序設(shè)計(jì)語言的特點(diǎn)?(1)名字說明:程序中使用對(duì)象的名字,能為編譯程序所檢查和識(shí)別;(2)類型說明:定義對(duì)象的類型,確定該對(duì)象的使用方式;
(3)初始化:為變量提供適當(dāng)?shù)某跏贾祷蛴上到y(tǒng)給變量賦一特殊的表明未初始化的值;(4)對(duì)象的局部性:程序中真正需要的那部分才能訪問的對(duì)象;(5)程序模塊:控制程序?qū)ο蟮拿郑?/p>
(6)循環(huán)控制結(jié)構(gòu):如FOR語句、WHILE-DO語句、REPEAT-UNTIL語句等;(7)分支控制結(jié)構(gòu):如IF語句、CASE語句等;
(8)異常處理:為程序運(yùn)行過程中發(fā)生的錯(cuò)誤和意外事件提供檢測(cè)和處理上的幫助;(9)獨(dú)立編譯:能分別編譯各個(gè)程序單元。
4.選擇程序設(shè)計(jì)語言需要考慮的因素?
(1)選擇用戶熟悉、便于用戶維護(hù)的語言。
(2)選擇目標(biāo)系統(tǒng)的環(huán)境中可以提供的編譯程序所能選用的語言。(3)選擇可以得到的軟件工具,能支持程序開發(fā)中可以利用的語言。
(4)根據(jù)工程規(guī)模的大小、目標(biāo)系統(tǒng)應(yīng)用范圍,如實(shí)時(shí)應(yīng)用選擇Ada語言或匯編語言,系統(tǒng)軟件開發(fā)選擇C語言或匯編語言,軟件開發(fā)中若含有大量數(shù)據(jù)操作則選擇SQL、dBASE等數(shù)據(jù)庫語言等。
(5)選擇程序員熟悉的語言。
(6)選擇標(biāo)準(zhǔn)化程度高、程序可移植性好的語言。
(7)根據(jù)算法與計(jì)算的復(fù)雜性、數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性選擇。如對(duì)于系統(tǒng)程序和結(jié)構(gòu)復(fù)雜的應(yīng)用程序,選擇支持?jǐn)?shù)組、記錄(或結(jié)構(gòu))與指針動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的Pascal語言或C語言。
(8)根據(jù)實(shí)時(shí)要求系統(tǒng)需要的響應(yīng)速度和效率選擇相應(yīng)的語言。
5.編碼風(fēng)格的指導(dǎo)原則。
(1)源程序:包括適當(dāng)?shù)臉?biāo)識(shí)符、適當(dāng)?shù)淖⒔狻⒊绦蚯鍐蔚暮侠聿季峙c清晰;
(2)數(shù)據(jù)說明:數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型的說明次序標(biāo)準(zhǔn)化;變量名稱盡量有意義;對(duì)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)在注解中要說明在程序設(shè)計(jì)中實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法。
(3)語句的構(gòu)造簡單明了:不要為節(jié)省空間將多個(gè)語句寫在同一行;盡量避免復(fù)雜的條件及“非”條件的測(cè)試;避免大量使用循環(huán)嵌套和條件嵌套;括號(hào)的使用是為了使邏輯表達(dá)式和算術(shù)表達(dá)式的運(yùn)算順序清晰直觀。
(4)效率:考慮程序運(yùn)行的時(shí)間存儲(chǔ)器效率、輸入/輸出的效率;在處理程序正確性、清晰與效率之間的關(guān)系時(shí)先求程序正確后求快;先求清楚后求快;保持程序簡單以求快;書寫清楚,不為“效率”犧牲清晰。
6.第四代語言(4GL)應(yīng)具備哪些的特征?
(1)具有很強(qiáng)的數(shù)據(jù)管理能力,能對(duì)數(shù)據(jù)庫進(jìn)行有效的存取、查詢和其它有關(guān)操作;(2)能提供一組高效的、非過程化的命令,組成語言的基本語句,編程時(shí)用戶只需用這些命令說明“做什么”,不必描述實(shí)現(xiàn)的細(xì)節(jié);
(3)能滿足多功能、一體化的要求。為此,語言中除必須含有控制程序邏輯與實(shí)現(xiàn)數(shù)據(jù)庫操作的語句外,還應(yīng)包括生成與處理報(bào)表、表格、圖形,以及實(shí)現(xiàn)數(shù)據(jù)運(yùn)算和分析統(tǒng)計(jì)功能的各種語句,共同構(gòu)成一個(gè)一體化的語言,以適應(yīng)多種應(yīng)用開發(fā)的需要。
第七章
軟件測(cè)試
1.軟件測(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è)試;
2.測(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)試器。
3.人工復(fù)審的方式和作用? 人工復(fù)審的方式:代碼會(huì)審、走查和排練和辦公桌檢查; 人工復(fù)審的作用:檢查程序的靜態(tài)錯(cuò)誤。
4.什么是黑盒測(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ù)。
5.什么是白盒測(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ù)。
6.路徑測(cè)試技術(shù)中幾種主要覆蓋的含義?舉例說明? 語句覆蓋:至少執(zhí)行程序中所有語句一次。
判定覆蓋:使被測(cè)程序中的每一個(gè)分支至少執(zhí)行一次。故也稱為分支覆蓋。條件覆蓋:執(zhí)行所有可能的穿過程序的控制路流程。
條件組合測(cè)試:設(shè)計(jì)足夠的測(cè)試用例,使每個(gè)判定中的所有可能條件取值組合至少執(zhí)行一次。
7.等價(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à)類被覆蓋為止。
8.軟件測(cè)試的一般步驟? 單元測(cè)試、子系統(tǒng)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、平行測(cè)試。
9.比較集成試的兩種方式的優(yōu)劣? 非漸增式測(cè)試方式:分別測(cè)試模塊,再把所有模塊按設(shè)計(jì)要求放在一起組成所要的程序。該方法編寫測(cè)試軟件工作量大,模塊間的接口錯(cuò)誤發(fā)現(xiàn)得晚,錯(cuò)誤定位較難診斷,總體測(cè)試有的錯(cuò)誤容易漏掉,測(cè)試時(shí)間相對(duì)較少,可以并行測(cè)試所有模塊,能充分利用人力,加快工程進(jìn)度。
漸增式測(cè)試方式:把下一個(gè)要測(cè)試的模塊,同已經(jīng)測(cè)試好的那些模塊結(jié)合起來進(jìn)行測(cè)試。該方法利用已測(cè)試過的模塊作測(cè)試軟件,開銷小,較早發(fā)現(xiàn)模塊間的接口錯(cuò)誤,錯(cuò)誤定位往往和最近入的模塊相關(guān),對(duì)已測(cè)試好的模塊可在新加入模塊的條件下受到新的檢驗(yàn),測(cè)試更徹底,需要較多的測(cè)試時(shí)間,不能并行測(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è)試方案。
第八章 軟件維護(hù)
1.為什么說軟件的維護(hù)是不可避免的?
因?yàn)檐浖拈_發(fā)過程中,一般很難檢測(cè)到所有的錯(cuò)誤,其次軟件在應(yīng)用過程中需要隨用戶新的要求或運(yùn)行環(huán)境的變化而進(jìn)行軟件的修改或完成功能的增刪等,為了提高軟件的應(yīng)用水平和使用壽命,軟件的維護(hù)是不可避免的。
2.軟件的維護(hù)一般分為哪幾類?
改正性維護(hù):滿足用戶對(duì)已開發(fā)產(chǎn)品的性能與運(yùn)行環(huán)境不斷提高的要求,進(jìn)而達(dá)到延長軟件壽命的目的。
適應(yīng)性維護(hù):對(duì)程序使用期間發(fā)現(xiàn)的程序錯(cuò)誤進(jìn)行診斷和改正的過程,配合變化了的環(huán)境進(jìn)行修改軟件的活動(dòng);
完善性維護(hù):滿足用戶在使用過程中提出增加新的功能或修改已有功能的建議而進(jìn)行的工作;
預(yù)防性維護(hù):為了改善未來的可維護(hù)性或可靠性而修改軟件的工作。
3.影響軟件維護(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ù)。
4.軟件維護(hù)困難主要表現(xiàn)在什么方面?
(1)一般來講,維護(hù)人員對(duì)開發(fā)人員寫的程序及文檔,理解都比較困難,對(duì)維護(hù)工作不會(huì)喜歡;
(2)維護(hù)持續(xù)時(shí)間都很長,在開發(fā)人員不在現(xiàn)場(chǎng)的輕快下,維護(hù)軟件通常是很困難的;
(3)絕大多數(shù)軟件在設(shè)計(jì)時(shí)對(duì)將來的軟件修改都沒有考慮或考慮不多,尤其未能在設(shè)計(jì)中強(qiáng)調(diào)并認(rèn)真解決好模塊的獨(dú)立性,使軟件的修改既困難又易發(fā)生差錯(cuò)。
5.決定軟件可維護(hù)性的因素?
(1)軟件的可理解性、可測(cè)試性、可修改性;
(2)文檔描述符合要求、用戶文檔簡潔明確、系統(tǒng)文檔完整并且標(biāo)準(zhǔn)。
6.軟件價(jià)格應(yīng)該計(jì)入維護(hù)成本嗎?為什么?
在軟件的生命周期中,軟件維護(hù)的工作量非常大,不同應(yīng)用領(lǐng)域的維護(hù)成本差別也很大。一般大型軟件的維護(hù)成本遠(yuǎn)遠(yuǎn)高于開發(fā)成本若干倍。因此軟件價(jià)格中應(yīng)該計(jì)入維護(hù)成本。
第九章 軟件工程管理
1.軟件工程管理的內(nèi)容?
(1)費(fèi)用管理: 對(duì)軟件開發(fā)進(jìn)行成本核算,使軟件生產(chǎn)按照商品生產(chǎn)的規(guī)律辦事。包括:以簡單、科學(xué)方法估算軟件開發(fā)費(fèi)用,作為簽定開發(fā)合同的根據(jù);管理開發(fā)費(fèi)用的有效使用,即用經(jīng)濟(jì)手段來保證產(chǎn)品如期按質(zhì)完成。
(2)質(zhì)量管理: 按項(xiàng)目的質(zhì)量保證計(jì)劃,確保各個(gè)開發(fā)階段的開發(fā)和維護(hù)工作全部按軟件工程的規(guī)范進(jìn)行,保證軟件產(chǎn)品的質(zhì)量。
(3)配置管理:通過對(duì)于程序、文檔和數(shù)據(jù)的各種版本所進(jìn)行的管理,保證資料的完整性與一致性。
(4)項(xiàng)目管理:制定《項(xiàng)目實(shí)施計(jì)劃》,按照計(jì)劃的內(nèi)容組織和實(shí)施軟件的工程化生產(chǎn)。最終目標(biāo)是以合理的費(fèi)用和進(jìn)度,圓滿完成計(jì)劃所規(guī)定的軟件項(xiàng)目。
2.軟件項(xiàng)目有哪些特點(diǎn)?
(1)軟件項(xiàng)目與其他任何產(chǎn)業(yè)項(xiàng)目不同,它是算法、思想、概念、組織、流程、效率、優(yōu)化等的融合體;
(2)開發(fā)軟件項(xiàng)目產(chǎn)品,在多數(shù)情況下,用戶給不出明確的想法和要求。
(3)在開發(fā)過程中,程序及其相關(guān)的文檔資料常常需要修改,在修改過程中又可能帶來新的問題,且這些問題要在很久以后才會(huì)發(fā)現(xiàn)。
(4)在研制開發(fā)過程中,文檔資料是不可缺少的,但工作量又是巨大的,往往也是人們不愿去作的。
(5)參加軟件項(xiàng)目的工作人員,要求具有一定的業(yè)務(wù)水平和實(shí)際工作經(jīng)驗(yàn),而很難完全避免的人員流動(dòng),對(duì)工作的影響是很大的。離開的人員不僅帶走了重要的信息,而且?guī)ё吡斯ぷ鹘?jīng)驗(yàn)。
3.軟件成本估算的一般方法?
自頂向下估計(jì):首先估算出項(xiàng)目總的開發(fā)成本,然后在項(xiàng)目內(nèi)部進(jìn)行成本分配。由少數(shù)專家參與,依靠他們過去的經(jīng)驗(yàn),將要開發(fā)的軟件與過去開發(fā)過的軟件進(jìn)行”類比“,以估計(jì)新的軟件開發(fā)所需要的工作量和成本。
自底向上估計(jì):將開發(fā)任務(wù)分成若干子任務(wù),子任務(wù)又分成子子任務(wù),直到每一個(gè)單元內(nèi)容足夠明確為止;把各個(gè)任務(wù)單元的成本估計(jì)出來,匯合成項(xiàng)目的總成本。該方法得到的結(jié)果比較接近實(shí)際。
4.為什么在軟件開發(fā)中,不能用簡單增加人員的方法來縮短開發(fā)時(shí)間?
大量軟件開發(fā)實(shí)踐說明:向一個(gè)已經(jīng)延遲的項(xiàng)目追加開發(fā)人員,可能使它完成得更晚。因?yàn)楫?dāng)開發(fā)人員以算術(shù)級(jí)數(shù)增長時(shí),而人員之間的通信將以幾何級(jí)數(shù)增長,往往”得不償失"。
5.影響軟件質(zhì)量的主要因素有哪些?
(1)產(chǎn)品運(yùn)行:正確性、風(fēng)險(xiǎn)性、效率、完整性、健壯性和可用性;
(2)產(chǎn)品修改:可理解性、可維護(hù)性、靈活性、可測(cè)試性;
(3)產(chǎn)品轉(zhuǎn)移:可移植性、可重用性和互運(yùn)行性。