第一篇:軟件工程知識點總結(jié)
軟件工程知識點總結(jié)
軟件工程知識點總結(jié)
1.軟件危機:指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。
2.軟件危機產(chǎn)生的原因:1.軟件本身的復雜性、難衡量的特點;2.軟件開發(fā)與維護的方法不正確。
3.軟件的定義:計算機程序、方法、規(guī)則、相關文檔資料以及在計算機上運行程序時所必需的數(shù)據(jù)
4.軟件不是程序,軟件是程序、數(shù)據(jù)以及相關文檔的完整集合。
5.程序是能夠完成預定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護程序所需要的圖文資料。
6.軟件生命周期:一個軟件從定義、開發(fā)、使用和維護,直到最終被廢棄所經(jīng)歷的一個漫長時期。
7.軟件開發(fā)的過程:
①問題定義:確定要求解決的問題是什么
②可行性研究:決定該問題是否存在一個可行的解決辦法
③需求分析:深入了解用戶的要求,在要開發(fā)的目標系統(tǒng)必須做什么問題和用戶取得完全一致的看法。④概要設計:概括回答怎樣實現(xiàn)目標系統(tǒng)。概要設計又叫邏輯設計、總體設計、高層設計。
⑤詳細設計:把解法具體化,設計出程序的詳細規(guī)格說明。詳細設計也叫模塊設計、底層設計。⑥編碼和單元測試:編寫程序的工作量只占軟件開發(fā)全部工作量的10%-20%。
⑦綜合測試:軟件測試的工作量通常占軟件開發(fā)全部工作量的40%-50%。
⑧軟件維護:軟件維護的費用通常占軟件總費用的55%-70%。
①②③為軟件定義時期,④⑤⑥⑦為軟件開發(fā)階段。④⑤為系統(tǒng)設計,⑥⑦為系統(tǒng)實現(xiàn)。
中國國家標準《計算機軟件開發(fā)規(guī)范》將軟件生命周期分為:可行性研究與計劃,需求分析,概要設計,詳細設計,實現(xiàn),組裝測試,確認測試,使用和維護8個階段。
8.軟件工程:是指導計算機軟件開發(fā)和維護的工程學科。軟件工程采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護軟件,結(jié)合正確的管理技術(shù)和先進可靠的技術(shù)方法,經(jīng)濟地開發(fā)出高質(zhì)量的軟件,并有效地維護它。
9.軟件工程方法學:方法、工具和過程。普遍使用的是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W。
10.瀑布模型:唯一被廣泛采用的模型,各階段間具有順序性和依賴性:前階段完成才能進行下一階段。文檔驅(qū)動。
原型模型:快速建立一個能反映用戶主要需求的原型系統(tǒng)讓用戶試用,并根據(jù)用戶意見修改原型。原型的用途是獲知用戶真正需求,一旦需求確定,原型將被拋棄。當用戶對系統(tǒng)的目標不是很清楚,難以定義需求,可用此法。
增量模型:也叫漸增模型。整個軟件被分解成許多各增量構(gòu)件,設計人員分批地逐步向用戶提交產(chǎn)品,每次用戶都得到一個滿足部分需求的可運行產(chǎn)品。優(yōu)點:能在短時間內(nèi)向用戶提交可完成部分工作的有用產(chǎn)品,易于維護。
螺旋模型:使用原型及其他方法來盡量降低風險。它類似于原型法,不過在每個階段之前都增加了風險分析過程。
螺旋模型適用于內(nèi)部開發(fā)的大規(guī)模軟件項目。螺旋模型的優(yōu)勢在于它是風險驅(qū)動的。
V型模型:從需求分析就開始編寫測試計劃一直到系統(tǒng)交付。需求分析對應于驗收測試,概要設計對應于系統(tǒng)測試,詳細設計對應于集成測試,編碼對應于單元測試,這樣先產(chǎn)生計劃再執(zhí)行測試,在測試的每個階段都進行審查.噴泉模型:是一種典型的適合于面向?qū)ο蠓缎偷倪^程模型,支持開發(fā)過程中的迭代。
瀑布模型注重凍結(jié)需求的理念、Up模型注重增量迭代/用例驅(qū)動、V型模型講究質(zhì)量保證理念、Xp模型講究溝通。
11.實體-關系圖(E-R圖),用于建立數(shù)據(jù)模型,其中包含了實體、關系、屬性。
12.數(shù)據(jù)流圖(DFD):描繪信息流和數(shù)據(jù)輸入輸出的移動過程。是結(jié)構(gòu)化分析過程中使用的主要建模工具。功能建模。
13.狀態(tài)轉(zhuǎn)換圖:通過描述系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,表示系統(tǒng)的行為,提供了行為建模的機制。
3/29/2013 1
軟件工程知識點總結(jié)
14.數(shù)據(jù)字典:描述在數(shù)據(jù)模型、功能模型和行為模型中出現(xiàn)的數(shù)據(jù)對象和控制信息的特征,給出這些對象的精確定義。數(shù)據(jù)字典是分析模型的核心,通常使用CASE工具來創(chuàng)建和維護數(shù)據(jù)字典。
15.結(jié)構(gòu)化設計的幾個階段:數(shù)據(jù)設計、體系結(jié)構(gòu)設計、接口設計、過程設計(是詳細設計階段的主要任務)。
結(jié)構(gòu)設計屬于概要設計階段。接口設計(包括I/O設計)和過程設計屬于詳細設計階段。人機界面設計屬接口設計。
16.基本設計原理:模塊化、抽象、逐步求精、信息隱藏、模塊獨立(功能獨立,和其它模塊沒有過多相互作用)。
模塊獨立的好處:易開發(fā)、易測試、易維護。模塊獨立程度的衡量標準:內(nèi)聚和耦合。
17.內(nèi)聚衡量模塊內(nèi)各元素之間結(jié)合的緊密程度。耦合衡量不同模塊之間連接的緊密程度。
數(shù)據(jù)耦合→控制耦合→公共環(huán)境耦合→內(nèi)容耦合(高)
(低內(nèi)聚)偶然內(nèi)聚→邏輯內(nèi)聚→時間內(nèi)聚→(中內(nèi)聚)過程內(nèi)聚→通信內(nèi)聚→(高內(nèi)聚)順序內(nèi)聚→功能內(nèi)聚
模塊獨立性設計原則:提高內(nèi)聚,降低耦合18.表示軟件結(jié)構(gòu):層次圖、HIPO圖、結(jié)構(gòu)圖。過程設計:程序流程圖、盒圖(N-S圖)、PAD圖、判定表、判定樹。
19.軟件測試分:單元測試和綜合測試。軟件項目管理從項目計劃開始,第一項計劃活動是估算。
白盒測試:也稱結(jié)構(gòu)測試,邏輯驅(qū)動測試,基于代碼的測試,測試程序內(nèi)部的邏輯結(jié)構(gòu)和過程性細節(jié),前期使用。
黑盒測試:即功能測試,在程序接口進行測試,測試后期使用。具體辦法:等價劃分、邊界值分析、錯誤推測。
20.IEEE 1058.1給出軟件項目管理計劃的框架;ISO9000-3標準適用于軟件的開發(fā)、供應、維護;
ISO/IEC12207是指導軟件過程實施的標準;ISO/IEC TR 15504是軟件過程評估標準。軟件質(zhì)量保證-SQA。
21.軟件重用是降低軟件整體成本、提高軟件質(zhì)量和開發(fā)生產(chǎn)率的合理有效途徑。
可重用的軟件成分:軟件的技術(shù)表示(結(jié)構(gòu)模型、設計和代碼)、文檔、測試數(shù)據(jù)、與過程相關的任務(如審查)。
22.軟件可移植性:指軟件從某一環(huán)境移植到另一環(huán)境下的難易程度。為方便移植,要盡量采用通用的程序設計語言。
3/29/2013 2
第二篇:軟件工程知識點總結(jié)
7.1軟件的定義及特點
軟件(Software)是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序(Program),數(shù)據(jù)(Data)及其相關文檔(Document)的完整集合。
三個特點:
(1)軟件是一種邏輯實體,而不是具體的物理實體,因而它具有抽象性;(2)軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程;(3)在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。
7.2軟件危機及其表現(xiàn)
軟件危機(softward crisis)是指在計算機軟件的開發(fā)和維護中所遇到的一系列嚴重問題。這些問題絕不僅僅是“不能正常運行的”軟件才具有,實際上幾乎所有軟件都不同程度地存在這些問題。
具體地說,軟件危機主要有下述一些表現(xiàn)。
(1)對軟件開發(fā)成本和進度的估計常常很不準確。
(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。
(3)軟件產(chǎn)品的質(zhì)量往往靠不住。
(4)軟件常常是不可維護的。
(5)軟件通常沒有適當?shù)奈臋n資料。
(6)軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。
7.3軟件工程及三要素
軟件工程:軟件工程是采用工程的概念、原理、技術(shù)和方法來指導軟件開發(fā)和維護的工程學科,以工程化的原理和方法來解決軟件問題。
軟件工程的特性:
(1)軟件工程關注于大型程序的構(gòu)造(2)軟件工程的中心課題是控制復雜性(3)軟件經(jīng)常變化
(4)開發(fā)軟件的效率非常重要(5)和諧地合作是開發(fā)軟件的關鍵(6)軟件必須有效地支持它的用戶
(7)在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人
軟件工程方法學包含3個要素:方法、工具和過程。
7.4軟件生命周期
軟件生命周期又稱為軟件生存周期或系統(tǒng)開發(fā)生命周期,是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設計、編碼、調(diào)試和 測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審 查、形成文檔以供交流或備查,以提高軟件的質(zhì)量。
每個階段的任務如下
問題定義階段:該階段的關鍵任務是要明確:要解決的問題是什么? 可性行研究階段:該階段的關鍵任務是要明確:做不做? 需求分析階段:該階段的關鍵任務是要明確:做什么?
概要設計(總體設計)階段:該階段的關鍵任務是要明確:怎么做? 詳細設計階段:該階段的關鍵任務是要明確:具體做法。
編碼和單元測試階段:該階段的關鍵任務是:編碼和單元測試。
綜合測試階段:該階段的關鍵任務是通過各種類型的測試(及調(diào)試)使軟件達到預定的要求。軟件維護階段:該階段的關鍵任務是通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的要求。
7.4.1瀑布模型
瀑布模型有以下優(yōu)點
1)為項目提供了按階段劃分的檢查點。
2)當前一階段完成后,您只需要去關注后續(xù)階段。3)可在迭代模型中應用瀑布模型。
4)它提供了一個模板,這個模板使得分析、設計、編碼、測試和支持的方法可以在該模板下有一個共同的指導。
瀑布模型適合于用戶需求明確、完整、無重大變化的軟件項目開發(fā)。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動的模型。
瀑布模型有以下缺點
1)各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。
2)由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成果,從而增加了開發(fā)風險。
3)通過過多的強制完成日期和里程碑來跟蹤各個項目階段。4)瀑布模型的突出缺點是不適應用戶需求的變化。
“瀑布模型是由文檔驅(qū)動的”這個事實也是它的一個主要缺點。實際項目很少按照該模型給出的順序進行,用戶常常難以清楚地給出所有需求,用戶必須有耐心,等到系統(tǒng)開發(fā)完成。
7.4.2 原型模型—快速原型模型
在用戶不能給出完整、準確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應性或人機交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個原型(可運行的軟件),然后進行評估,進一步精化、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。優(yōu)點:
(1)開發(fā)人員和用戶在“原型”上達成一致。這樣一來,可以減少設計中的錯誤和開發(fā)中的風險,也減少了對用戶培訓的時間,而提高了系統(tǒng)的實用、正確性以及用戶的滿意程度。(2)縮短了開發(fā)周期,加快了工程進度。(3)降低成本。
盡早發(fā)現(xiàn)需求,揭示風險 缺點:
⑴為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可維護性。
⑵為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。
⑶開發(fā)過程不便于管理。
7.4.3螺旋模型
螺旋模型的優(yōu)點:(1)對可選方案和約束條件的強調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標
(2)減少了過多測試或測試不足(3)維護和開發(fā)之間并沒有本質(zhì)區(qū)別 螺旋模型的缺點:
(1)風險驅(qū)動,需要相當豐富的風險評估經(jīng)驗和專門知識,否則風險更大
(2)主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項目,隨著過程的進展演化,開發(fā)者和用戶能夠更好的識別和對待每一個演化級別上的風險
(3)隨著迭代次數(shù)的增加,工作量加大,軟件開發(fā)成本增加
7.4.4增量模型
增量模型優(yōu)點:
(1)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并分批、逐步地向用戶提交產(chǎn)品。從第一個構(gòu)件交付之日起,用戶就能做一些有用的工作。
(2)整個軟件產(chǎn)品被分解成許多個增量構(gòu)件,開發(fā)人員可以一個構(gòu)件一個構(gòu)件地逐步開發(fā)。(3)逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學習和適應新產(chǎn)品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。(4)采用增量模型比采用瀑布模型和快速原型模型需要更精心的設計,但在設計階段多付出的勞動將在維護階段獲得回報。增量模型的缺點:
(1)在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設計得便于按這種方式進行擴充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。
(2)開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨立的構(gòu)件,相互矛盾。(3)多個構(gòu)件并行開發(fā),具有無法集成的風險。
7.4.5噴泉模型
主要用于支持面向?qū)ο箝_發(fā)過程體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征。噴泉模型的優(yōu)點
噴泉模型不像瀑布模型那樣,需要分析活動結(jié)束后才開始設計活動,設計活動結(jié)束后才開始編碼活動。該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應于面向?qū)ο蟮能浖_發(fā)過程。
噴泉模型的缺點
由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項目的管理。此外這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。
其特點如下:
(1)開發(fā)過程有分析、系統(tǒng)設計、軟件設計和實現(xiàn)4個階段。(2)各階段相互重疊,它反映了軟件過程并行性的特點。(3)以分析為基礎,資源消耗成塔型。
(4)反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。(5)強調(diào)增量開發(fā),整個過程是一個迭代的逐步提煉的過程。
7.4.6構(gòu)件組裝模型
構(gòu)件組裝模型導致軟件復用,而可復用性給軟件工程師提供了大量的可見的益處。軟件開發(fā)不
用一切從零開始,開發(fā)過程就是一個組裝構(gòu)件的過程,維護的過程就是對構(gòu)件升級、替換和擴充的過程,大大提高了軟件的開發(fā)效率。構(gòu)件模型允許多個項目同時開發(fā),降低了費用,提高了可維護性。
構(gòu)件模型也存在一些缺點,如:由于存在多種構(gòu)件標準,缺乏通用的構(gòu)件組裝結(jié)構(gòu)標準,如果自行定義會引入較大的風險;構(gòu)件可重用性和軟件系統(tǒng)高效性之間不易協(xié)調(diào);如果過分依賴構(gòu)件,構(gòu)件質(zhì)量會影響最終的產(chǎn)品質(zhì)量。
7.4.7 RUP RUP是由Rational公司的Booch、Jacobson、Rumbaugh提出的軟件過程模型,也稱RUP(Rational Unified Process)。RUP重復一系列周期,每個周期由一個交付給用戶的產(chǎn)品結(jié)束。
每個周期劃分為初始、細化、構(gòu)造和移交四個階段,每個階段圍繞著五個核心工作流(需求、分析、設計、實現(xiàn)、測試)分別迭代。模型見下圖:
1.4個階段
初始階段:進行問題定義,確定目標,評估其可行性,降低關鍵風險。細化階段:制定項目計劃、配置各類資源、建立系統(tǒng)架構(gòu)(包括各類視圖)。構(gòu)造階段:開發(fā)整個產(chǎn)品,并確保產(chǎn)品可移交給用戶。移交階段:產(chǎn)品發(fā)布、安裝、用戶培訓。
在每個階段的每次迭代的最后,用例模型、分析模型、設計模型、實現(xiàn)模型都會增量,每個階段結(jié)束的里程碑處,管理層做出是否繼續(xù)、進度、預算、是否給下一階段提供資助等決定。
不同階段工作流的側(cè)重點不同,前兩階段大部分工作集中在需求、分析和架構(gòu)設計上;在構(gòu)造階段,重點轉(zhuǎn)移到詳細設計、實現(xiàn)和測試上。
2.9個工作流
RUP中有9個核心工作流,分為6個核心過程工作流(Core Process Workflows)和3個核心支持工作流(Core Supporting Workflows)。
商業(yè)建模:深入了解使用目標系統(tǒng)的機構(gòu)及其商業(yè)運作,評估目標系統(tǒng)對使用它的機構(gòu)的影響。需求:捕獲客戶的需求,并且使開發(fā)人員和用戶達成對需求描述的共識。分析和設計:把需求分析的結(jié)果轉(zhuǎn)化成分析模型與設計模型。實現(xiàn):把設計模型轉(zhuǎn)換成實現(xiàn)成果。
測試:檢查個子系統(tǒng)的交互與集成,驗證所有需求是否都被正確地實現(xiàn)了,識別,確認缺陷并確保在軟件部署之前消除缺陷。
部署:成功地生成目標系統(tǒng)的可運行版本,并把軟件移交給最終用戶。
配置和變更管理:跟蹤并維護在軟件開發(fā)過程中產(chǎn)生的所有制品的完整性和一致性。
軟件項目管理:提供項目管理框架,為軟件開發(fā)項目制定計劃,人員配備,執(zhí)行和監(jiān)控等方面的實用準則,并為風險管理提供框架。
環(huán)境:向軟件開發(fā)機構(gòu)提供軟件開發(fā)環(huán)境,包括過程管理和工具支持。
7.5 UML UML適用于各種軟件開發(fā)方法、軟件生命周期的各個階段、各種應用領域以及各種開發(fā)工具。UML由以下5類圖來定義: 第1類:用例圖
第2類:靜態(tài)圖(包括類圖、對象圖和包圖)第3類:行為圖(包括狀態(tài)圖和活動圖)第4類:交互圖(包括時序圖和協(xié)作圖)第5類:實現(xiàn)圖(包括組件圖和配置圖)
第一類是用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。
第二類是靜態(tài)圖:包括類圖,對象圖,包圖。類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關聯(lián)、依賴、聚合等也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和動作)。
第三類是行為圖:描述系統(tǒng)的動態(tài)模型和組成對象之間的交互關系,其中狀態(tài)圖描述類的對象所有可能的狀態(tài),以及事件發(fā)生時的狀態(tài)的轉(zhuǎn)移條件,通常,狀態(tài)圖為類圖的補充,在實用上并不需要為所有的類畫狀態(tài)圖,僅為那些有多個狀態(tài)其行為受外界環(huán)境的影響并且狀態(tài)發(fā)生改變的類畫狀態(tài)圖,活動圖描述滿足用例要求所要進行的活動以及活動的約束關系,有利于識別并行的活動。
第四類是交互圖:描述對象間的交互關系。其中順序圖顯示對象之間的動態(tài)合作關系,他強調(diào)對象之間消息發(fā)送的順序。
第五類是實現(xiàn)圖:其中構(gòu)建圖描述代碼部件的物理結(jié)構(gòu)和各部件之間的依賴關系,一個部件可能是一個資源代碼部件,一個二進制部件或者一個可執(zhí)行部件。它包含邏輯類和實際類的有關信息。部件圖有利于分析和理解部件間的相互影響程度。
下面分別描述9個圖。
7.5.1 類圖
類圖展示了一組類、接口和協(xié)作及它們間的關系,在建模中所建立的最常見的圖就是類圖。用類圖說明系統(tǒng)的靜態(tài)設計視圖,包含主動類的類圖——專注于系統(tǒng)的靜態(tài)進程視圖。系統(tǒng)可有多個類圖,單個類圖僅表達了系統(tǒng)的一個方面。要在高層給出類的主要職責,在低層給出類的屬性和操作。
7.5.2對象圖
對象圖展示了一組對象及它們間的關系。用對象圖說明類圖中所反應的事物實例的數(shù)據(jù)結(jié)構(gòu)和靜態(tài)快照。對象圖表達了系統(tǒng)的靜態(tài)設計視圖或靜態(tài)過程視圖,除了現(xiàn)實和原型的方面的因素外,它與類圖作用是相同的。
7.5.3用例圖
用例圖展現(xiàn)了一組用例、參與者以及它們間的關系??梢杂糜美龍D描述系統(tǒng)的靜態(tài)使用情況。在對系統(tǒng)行為組織和建模方面,用例圖的是相當重要的。
用例(use case):從用戶的觀點對系統(tǒng)行為的一個描述。用來從用戶的觀察角度收集系統(tǒng)需求。
用例圖表達系統(tǒng)的外部事物(參與者)與系統(tǒng)的交互,它表達了系統(tǒng)的功能,即系統(tǒng)所提供的服務。
整個軟件項目的開發(fā)可以采用Use Case 驅(qū)動的方式進行。
7.5.4交互圖
交互圖展現(xiàn)了按一定的目的進行的一種交互,它由在一個上下文中的一組對象及它們間交互的信息組成。交互圖也可用于描述一個用例的行為。順序圖和協(xié)作圖都是交互圖,順序圖和協(xié)作圖可以相互轉(zhuǎn)換。
順序圖和協(xié)作圖都是交互圖,它們既是等價的,又是有區(qū)別的。
順序圖和協(xié)作圖都能等價的表現(xiàn)系統(tǒng)運行中對象通過消息發(fā)生的交互行為。
順序圖表示了時間的消息序列,便于分析交互的時序,但沒有表示靜態(tài)對象關系,順序圖可以有效地幫助人們觀察系統(tǒng)的順序行為。
協(xié)作圖著重表示一個協(xié)作中的對象之間的聯(lián)系和消息。
7.5.5順序圖
展現(xiàn)了一組對象和由這組對象收發(fā)的消息,用于按時間順序?qū)刂屏鹘?。用順序圖說明系統(tǒng)的動態(tài)視圖。
7.5.6協(xié)作圖
展現(xiàn)了一組對象,這組對象間的連接以及這組對象收發(fā)的消息。它強調(diào)收發(fā)消息的對象的結(jié)構(gòu)組織,按組織結(jié)構(gòu)對控制流建模。
協(xié)作圖顯示某組對象為了由一個用例描述的一個系統(tǒng)事件而與另一組對象進行協(xié)
作的交互圖。
協(xié)作圖只對相互間有交互作用的對象和這些對象間的關系建模,而忽略了其他對象
和關聯(lián)。
協(xié)作圖中包括如下元素:1.對象(Object)、2.鏈(Link)和3.消息(Message)。
協(xié)作圖的用途:
如果按組織對控制流建模,應該選擇使用協(xié)作圖。協(xié)作圖強調(diào)交互中實例間的結(jié)構(gòu)關系以及所傳送的消息。協(xié)作圖對復雜的迭代和分支的可視化以及對多并發(fā)控制流的可視化要比時序圖好。
協(xié)作圖有別于時序圖的兩點特性:(1)協(xié)作圖有路徑(2)協(xié)作圖有順序號
7.5.7狀態(tài)圖
展示了一個特定對象的所有可能狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉(zhuǎn)移。一個狀態(tài)圖描述了一個狀態(tài)機,用狀態(tài)圖說明系統(tǒng)的動態(tài)視圖。它對于接口、類或協(xié)作的行為建模尤為重要,可用它描述用例實例的生命周期。在任一給定的時刻,一個對象總是處于某一特定的狀態(tài)。
狀態(tài)圖主要表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列,引起狀態(tài)或活動轉(zhuǎn)移的事件,以及因狀態(tài)或活動轉(zhuǎn)移而伴隨的動作。
7.5.8活動圖
活動圖是一種特殊的狀態(tài)圖,描述需要做的活動、執(zhí)行這些活動的順序(多為并行的)以及工作流(完成工作所需要的步驟)。它對于系統(tǒng)的功能建模特別重要,強調(diào)對象間的控制流程。
活動圖實質(zhì)上是一種流程圖,只不過表現(xiàn)的是從一個活動到另一個活動的控制流?;顒訄D描述活動的序列,并且支持對帶條件的行為和并發(fā)行為表達。
7.5.9時序圖
在一個運行的系統(tǒng)中,對象之間要發(fā)生交互,并且這些交互要經(jīng)歷一定的時間。
順序圖表達的正是這種基于時間的動態(tài)交互。重點是完成某個行為的對象類和這些對象類之間所傳遞的消息的時間順序。
7.5.10構(gòu)件圖
構(gòu)件圖展現(xiàn)了一組構(gòu)件之間的組織和依賴,用于對原代碼、可執(zhí)行的發(fā)布、物理數(shù)據(jù)庫和可調(diào)整的系統(tǒng)建模。
組件圖代表系統(tǒng)的一個物理實現(xiàn)塊,代表邏輯模型元素如類、接口的物理打包。
7.5.11部署圖
部署圖展現(xiàn)了對運行時處理節(jié)點以及其中構(gòu)件的配署。它描述系統(tǒng)硬件的物理拓撲結(jié)構(gòu)(包括網(wǎng)絡布局和構(gòu)件在網(wǎng)絡上的位置),以及在此結(jié)構(gòu)上執(zhí)行的軟件(即運行時軟構(gòu)件在節(jié)點中的分布情況)。用部署圖說明系統(tǒng)結(jié)構(gòu)的靜態(tài)部署視圖,即說明分布、交付和安裝的物理系統(tǒng)
7.5.12區(qū)別
1.以描述系統(tǒng)狀態(tài)轉(zhuǎn)移為主的狀態(tài)圖和活動圖
狀態(tài)圖:用來描述對象,子系統(tǒng),系統(tǒng)的生命周期。通過狀態(tài)圖可以了解一個對象所能達到的所有狀態(tài),以及對象收到的事件對對象狀態(tài)的影響。
活動圖:顯示動作及其結(jié)果。著重描述操作(方法)實現(xiàn)中所完成的工作以及用例實例或?qū)ο笾械幕顒樱菭顟B(tài)圖的一個變種。
狀態(tài)圖與活動圖的區(qū)別:活動圖主要描述動作及對象狀態(tài)改變的結(jié)果。狀態(tài)圖主要描述的是事件對對象狀態(tài)的影響。
2.以描述系統(tǒng)系統(tǒng)對象通訊和交互為主的協(xié)作圖和序列圖
序列圖:描述對象是如何交互的。重點放在消息序列上,描述消息在對象間是如何收發(fā)的。
協(xié)作圖:描述協(xié)作對象的交互與鏈接。
協(xié)作圖和序列圖的區(qū)別:協(xié)作圖和序列圖都是描述對象交互的,但是序列圖強調(diào)的是時間,協(xié)作圖強調(diào)的空間。
7.6需求分析與用例建模
7.6.1需求分析的任務
需求分析的基本任務不是確定系統(tǒng)怎樣完成它的工作,而是確定系統(tǒng)必須完成哪些工作,也就是對目標系統(tǒng)提出完整、準確、清晰、具體的要求。----準確地回答“系統(tǒng)必須做什么?”。
需求分析的步驟: 需求獲取 分析建模 文檔編寫 需求驗證
7.6.2類圖
類(Class)、對象(Object)和它們之間的關系是面向?qū)ο蠹夹g(shù)中最基本的元素。類圖技術(shù)是OO方法的核心。
類圖標加上它們之間的關系就構(gòu)成了類圖。
類圖用于對系統(tǒng)靜態(tài)設計視圖建模。與數(shù)據(jù)模型不同,它不僅顯示了信息的結(jié)構(gòu),同時還描述了系統(tǒng)的行為。
類圖中可以包含接口,包,關系等建模元素,也可以包含對象,鏈等實例。
類圖典型的應用在下面三類建模:(1)對系統(tǒng)的詞匯建模(2)對簡單協(xié)作建模
(3)對邏輯數(shù)據(jù)庫模式建模
類圖通常包含下述內(nèi)容:類、接口、協(xié)作、依賴、泛化和關聯(lián)關系。
關系(Relationship)是事物間的關系。在類的關系中,最常用的4種分別為: 依賴(Dependency):它表示類之間的使用關系 泛化(Generalization):它表示類之間的一般和特殊的關系; 關聯(lián)(Association):它表示對象之間的結(jié)構(gòu)關系 實現(xiàn)(Realization):它是規(guī)格說明和其實現(xiàn)之間的關系。
類主要包含以下幾個部分
(1)名稱(Name)名稱是每個類所必有的構(gòu)成,用于和其他類相區(qū)分。(2)屬性(Attribute)類的一個組成部分描述了類所代表事物的屬性(3)操作(Operation)操作是對類的對象所能做的事務的抽象
類在UML中由專門的圖符表達,是分成3個分隔區(qū)的矩形,頂端為類的名字,中間存放類的屬性、屬性的類型和值,第3個分隔區(qū)放操作、操作的參數(shù)表和返回類型,如下圖:
7.6.3用例圖
在UML中,一個用例模型由若干個用例圖(use case diagram)描述。用例圖是顯示一組用例、參與者以及它們之間關系的圖。
用例圖是從用戶的角度來描述對軟件產(chǎn)品的需求,分析產(chǎn)品的功能和行為,因此,對整個軟件開發(fā)過程而言,用例圖是至關重要的。
用例圖定義和描述了系統(tǒng)的外部可見行為,是分析、設計直至組裝測試的重要依據(jù)。讓用戶參與前期的系統(tǒng)分析與設計。
用例圖的組成: 用例(Use Case)參與者(Actor)關系(Relationship)
1.什么是參與者
參與者:在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。參與者可能是人、另外一個系統(tǒng)、時間的流逝等。
UML中,參與者用“人形”圖標來表示,名字寫在圖標的下方。
參與者
2.什么是用例
用例(use case)一個用例是用戶與計算機之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動作(功能)。
參與者和用例分別描述了“誰來做?”和“做什么?”這兩個問題。每個用例都必須有一個惟一的名字以區(qū)別于其他用例。用例用一個橢圓來表示,用例的名字可以書寫在橢圓的內(nèi)部或下方。用例的UML圖標如圖所示。3.用例間、用例與參與者的關系
(1)泛化關系(Generalization):一個用例可以被特別列舉為一個或多個子用例,這被稱為用例泛化:
(2)包含關系(Include)一個用例可以簡單地包含其他用例具有的行為,并把它所包含的用例行為作為自身行為的一部分,這被稱作包含關系。
(3)擴展關系(Extend):一個用例也可以被定義為基礎用例的增量擴展,這稱作擴展關系,擴展關系是把新行為插入到已有用例的方法。
(4)關聯(lián)關系:關聯(lián)關系表示參與者與用例之間的通信。
4.用例間的關系
(1)泛化關系
當多個用例共同擁有一種類似的結(jié)構(gòu)和行為的時候我們可以將它們的共性抽象成為父用例,其他的用例作為泛化關系中的子用例。
用例可以被特別列舉為一個或多個子用例,這被稱做用例泛化。(2)包含關系
包含是指基本用例(base use case)會用到包含用例(inclusion),具體地講,就是將包含用例的事件流插入到基礎用例的事件流中。包含用例是可重用的用例──多個用例的公共用例。
(3)擴展關系
將擴展用例的事件流在一定的條件下按照相應的擴展點插入到基礎用例中?;A用例不必知道擴展用例的任何細節(jié),它僅為其提供擴展點。擴展用例的行為是否被執(zhí)行要取決于主事件流中的判定點。
擴展關系是從擴展用例到基本用例的關系,它說明為擴展用例定義的行為如何插入到為基本用例定義的行為中。它是以隱含形式插入的,也就是說,擴展用例并不在基本用例中顯示。在以下幾種情況下,可使用擴展用例:
a.表明用例的某一部分是可選的系統(tǒng)行為(這樣,您就可以將模型中的可選行為和必選行為分開);
b.表明只在特定條件(如例外條件)下才執(zhí)行的分支流;
5.用例之間的關系
包含用例與擴展用例的區(qū)別
①相對于基礎用例,擴展用例是可選的,而包含用例則不是。
②如果缺少擴展用例,基礎用例還是完整的,而缺少包含用例,則基礎用例就不完整了。③擴展用例的執(zhí)行需要滿足某種條件,而包含用例不需要。④擴展用例的執(zhí)行會改變基礎用例的行為,而包含用例不會。
6.識別用例的方法:
①參與者希望系統(tǒng)提供什么功能;
②系統(tǒng)是否存儲和檢索信息;如果是,這個行為由哪個參與者觸發(fā); ③當系統(tǒng)改變狀態(tài)時,是否通知參與者;
④是否存在影響系統(tǒng)的外部事件,是哪個參與者通知系統(tǒng)這些外部事件。
7.6.4活動圖
1.什么是活動圖
活動圖是UML中描述系統(tǒng)動態(tài)行為的圖之一,是描述系統(tǒng)或業(yè)務的一序列活動構(gòu)成的控制流,它描述了系統(tǒng)從一種活動轉(zhuǎn)換到另一種活動的整個過程。
2.活動圖用途
活動圖用于對系統(tǒng)的動態(tài)行為建模。
活動圖常用來描述業(yè)務或軟件系統(tǒng)的活動軌跡,描述了系統(tǒng)的活動控制流程。我們常用活動圖對業(yè)務過程、工作流和用例實現(xiàn)進行建模。
活動圖主要應用對兩個方面建模:一是在業(yè)務分析階段,對工作流程進行建模;二是在系統(tǒng)分析和設計階段,對操作流程進行建模。
7.6.5面向?qū)ο蠓治鼋⒌?類模型
對象模型、動態(tài)模型、功能模型
對象模型
對象模型表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實體的對象關系角度來描述,表現(xiàn)了對象的相互關系。該模型主要關心系統(tǒng)中對象的結(jié)構(gòu)、屬性和操作,它是分析階段三個模型的核心,是其他兩個模型的框架。[2]
⒈對象和類 ⑴對象。
對象建模的目的就是描述對象。⑵ 類。
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。⑶ 屬性。
屬性指的是類中對象所具有的性質(zhì)(數(shù)據(jù)值)。⑷ 操作和方法。
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標對象作為其隱含參數(shù)。
方法是類的操作的實現(xiàn)步驟。⒉關聯(lián)和鏈
關聯(lián)是建立類之間關系的一種手段,而鏈則是建立對象之間關系的一種手段。⑴ 關聯(lián)和鏈的含義。
鏈表示對象間的物理與概念聯(lián)結(jié),關聯(lián)表示類之間的一種關系,鏈是關聯(lián)的實例,關聯(lián)是鏈的抽象。
⑵ 角色。
角色說明類在關聯(lián)中的作用,它位于關聯(lián)的端點。⑶ 受限關聯(lián)。
受限關聯(lián)由兩個類及一個限定詞組成,限定詞是一種特定的屬性,用來有效的減少關聯(lián)的重數(shù),限定詞在關聯(lián)的終端對象集中說明。
限定提高了語義的精確性,增強了查詢能力,在現(xiàn)實世界中,常常出現(xiàn)限定詞。⑷ 關聯(lián)的多重性。
關聯(lián)的多重性是指類中有多少個對象與關聯(lián)的類的一個對象相關。重數(shù)常描述為“一”或“多”。⒊類的層次結(jié)構(gòu) ⑴ 聚集關系。
聚集是一種“整體-部分”關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯(lián)系起來簡單得多,對象模型應該容易地反映各級層次。
⑵一般化關系。
一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般---具體”的關系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了父類的性質(zhì),而各子類的一些共同性質(zhì)和操作又歸納到你類中。因此,一般化關系和繼承是同時存在的。一般化關系的符號表示是在類關聯(lián)的連線上加一個小三角形。
⒋對象模型
⑴模板。模板是類、關聯(lián)、一般化結(jié)構(gòu)的邏輯組成。⑵對象模型。
對象模型是由一個或若干個模板組成。模板將模型分為若干個便于管理的子塊,在整個對象模型和類及關聯(lián)的構(gòu)造塊之間,模板提供了一種集成的中間單元,模板中的類名及關聯(lián)名是唯一的
動態(tài)模型
動態(tài)模型是與時間和變化有關的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬間的、行為化的系統(tǒng)控制
性質(zhì),它關心的是系統(tǒng)的控制,操作的執(zhí)行順序,它表示從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對象的相互行為。
該模型描述的系統(tǒng)屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。它涉及到事件、狀態(tài)、操作等重要概念。
⒈事件
事件是指定時刻發(fā)生的某件事。
⒉狀態(tài)
狀態(tài)是對象屬性值的抽象。對象的屬性值按照影響對象顯著行為的性質(zhì)將其歸并到一個狀態(tài)中去。狀態(tài)指明了對象對輸入事件的響應。
⒊狀態(tài)圖
狀態(tài)圖是一個標準的計算機概念,他是有限自動機的圖形表示,這里把狀態(tài)圖作為建立動態(tài)模型的圖形工具。
狀態(tài)圖反映了狀態(tài)與事件的關系。當接收一事件時,下一狀態(tài)就取決于當前狀態(tài)和所接收的該事件,由該事件引起的狀態(tài)變化稱為轉(zhuǎn)換。
狀態(tài)圖是一種圖,用結(jié)點表示狀態(tài),結(jié)點用圓圈表示;圓圈內(nèi)有狀態(tài)名,用箭頭連線表示狀態(tài)的轉(zhuǎn)換,上面標記事件名,箭頭方向表示轉(zhuǎn)換的方向。
功能模型
功能模型描述了系統(tǒng)的所有計算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。功能模型表明一個計算如何從輸入值得到輸出值,它不考慮計算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖用來表示從源對象到目標對象的數(shù)據(jù)值的流向,它不包含控制信息,控制信息在動態(tài)模型中表示,同時數(shù)據(jù)流圖也不表示對象中值的組織,值的組織在對象模型中表示。
數(shù)據(jù)流圖中包含有處理、數(shù)據(jù)流、動作對象和數(shù)據(jù)存儲對象。⒈處理
數(shù)據(jù)流圖中的處理用來改變數(shù)據(jù)值。最低層處理是純粹的函數(shù),一張完整的數(shù)據(jù)流圖是一個高層處理。
⒉數(shù)據(jù)流
數(shù)據(jù)流圖中的數(shù)據(jù)流將對象的輸出與處理、處理與對象的輸入、處理與處理聯(lián)系起來。在一個計算機中,用數(shù)據(jù)流來表示一中間數(shù)據(jù)值,數(shù)據(jù)流不能改變數(shù)據(jù)值。
⒊動作對象
動作對象是一種主動對象,它通過生成或者使用數(shù)據(jù)值來驅(qū)動數(shù)據(jù)流圖。
⒋數(shù)據(jù)存儲對象
數(shù)據(jù)流圖中的數(shù)據(jù)存儲是被動對象,它用來存儲數(shù)據(jù)。它與動作對象不一樣,數(shù)據(jù)存儲本身不產(chǎn)生任何操作,它只響應存儲和訪問的要求。
7.7設計階段
7.7.1詳細設計
詳細設計階段的根本目標是確定怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序。
詳細設計的目標: 設計出的處理過程應該盡可能簡明易懂。詳細設計的任務:
(1)為每個模塊確定采用的算法,選擇某種適當?shù)墓ぞ弑磉_算法的過程,寫出模塊的詳細過程性描述;
(2)確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu);為以后的編寫程序做好充分的準備。(3)確定模塊接口的細節(jié)。
7.7.2總體設計
1.面向?qū)ο笤O計
面向?qū)ο笤O計的準則:優(yōu)秀設計就是使得系統(tǒng)在其整個生命周期中的總開銷最小的設計, 其主要特點就是容易維護。
面向?qū)ο笤O計(OOD,Object-Oriented Design)是面向?qū)ο蠓治龅綄崿F(xiàn)的一個橋梁。面向?qū)ο蠓治鍪菍⒂脩粜枨蠼?jīng)過分析后,建立問題域精確模型的過程;而面向?qū)ο笤O計則根據(jù)面向?qū)ο蠓治龅玫降男枨竽P?,建立求解域模型的過程。即分析必須搞清楚系統(tǒng)“做什么”,而設計必須搞清楚系統(tǒng)“怎么做”,從分析到設計不是傳統(tǒng)方法的轉(zhuǎn)換,而是平滑(無縫)過渡,而求解域模型是系統(tǒng)實現(xiàn)的依據(jù)。
靜態(tài)結(jié)構(gòu)設計: ? 類設計 ? 包設計 ? 接口設計
動態(tài)結(jié)構(gòu)設計(行為和交互建模): ? 對象如何進行交互的
2.GUI(圖形用戶界面)設計概述
對于用戶來說,一個友好的界面是至關重要的。
用戶界面(User Interface)的設計質(zhì)量直接影響用戶對軟件產(chǎn)品的評價,從而影響軟件產(chǎn)品的競爭力和使用壽命,因此,對人機界面的設計必須給予足夠的重視。
良好的GUI設計原則
1、關注用戶及其任務,而不是技術(shù)
2、首先考慮功能,其次才是表現(xiàn)
3、與用戶對任務的看法保持一致
4、設計要符合常見情況
5、不要分散用戶對他們目標的注意力
6、促進學習,從外(用戶)到里(設計人員)思考,而不是相反。
7、傳遞信息,而不僅僅是數(shù)據(jù)
8、設計應滿足響應需求
9、通過用戶試用發(fā)現(xiàn)錯誤,然后修復它
3.數(shù)據(jù)庫設計
設計原則:
每一個類成為一個數(shù)據(jù)庫表。關系映射:
(1)一對多的關系映射為數(shù)據(jù)庫表的主外鍵關聯(lián)(1方的主鍵加入n方成為外鍵)
(2)一對一的關系映射為數(shù)據(jù)庫表的主外鍵關聯(lián)(1方的主鍵加入另一方成為外鍵)
(3)多對多的關系映射:產(chǎn)生第三張表,將兩個多方的主鍵加入其中成為外鍵,兩個外鍵的組合成為主鍵。
利用數(shù)據(jù)庫三范式檢查表,從而考察領域類圖的分析是否合理,消除冗余數(shù)據(jù)。檢查數(shù)據(jù)是否能夠反映用例視圖的需要;進一步與用戶再次確認使用的數(shù)據(jù)。
7.8注釋
夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的1/3到1/2,甚至更多。
注釋分為兩類:序言性注釋和功能性注釋。
1.序言性注釋
通常置于每個程序模塊的開頭部分,它應當給出程序的整體說明,對于理解程序本身具有引導作用。
序言性注釋包括: 程序標題;
有關本模塊功能和目的的說明; 主要算法;
接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;
有關數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關信息; 模塊位置:在哪一個源文件中,或隸屬于哪一個軟件包;
開發(fā)簡歷:模塊設計者,復審者,復審日期,修改日期及有關說明等。
2.功能性注釋
功能性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣,而不要解釋下面怎么做。
要點:
描述一段程序,而不是每一個語句; 用縮進和空行,使程序與注釋容易區(qū)別;
7.9軟件測試
軟件測試的定義:軟件測試是使用人工和自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢測被測試軟件系統(tǒng)是否滿足規(guī)定的需要,或是弄清楚被測系統(tǒng)的預期結(jié)果與實際結(jié)果之間的差別。
黑盒測試:僅需要知道被測試對象的輸入和預期輸出,不需要了解代碼實現(xiàn)的細節(jié)。測試方法
主要分為兩類:功能層面的測試方法和函數(shù)層面的測試方法(邊界值測試、等價類測試、基于決策表測試)。側(cè)重于系統(tǒng)業(yè)務流程的梳理,是基于動態(tài)業(yè)務過程設計測試用例。
白盒測試:是針對程序代碼展開的測試,分為靜態(tài)測試和動態(tài)測試:關注對象包括源代碼和程序結(jié)構(gòu)。靜態(tài)白盒測試的方法是代碼檢查。靜態(tài)測試不需要運行程序和設計測試用例,側(cè)重于源代碼的檢查和優(yōu)化,直接查看源代碼和執(zhí)行代碼,直接定位代碼中的缺陷。動態(tài)測試側(cè)重于程序結(jié)構(gòu)的測試。
測試用例的定義:測試用例是一組測試輸入,執(zhí)行條件和預期結(jié)果。目的是要滿足一個特定的目標。如果執(zhí)行一條特定的程序路徑或者檢驗是否符合一個特定的需求的用例。測試用例:輸入+輸出+測試環(huán)境測試環(huán)境包括:硬件環(huán)境,軟件環(huán)境,網(wǎng)絡環(huán)境,歷史數(shù)據(jù)。
測試用例分為兩個階段:測試用例分析階段,測試用例設計階段。
7.9.1測試和調(diào)試的區(qū)別
1、目的不同
軟件測試的目的是發(fā)現(xiàn)錯誤,至于找出錯誤的原因和錯誤發(fā)生的地方不是軟件測試的任務,而是調(diào)試的任務.調(diào)試的目的是為了證明程序的正確,因此它必須不斷地排除錯誤.它們的出發(fā)點不一樣。前者是挑錯,是一種挑剔過程,屬于質(zhì)盤保證活動。后者是排錯,是一種排除過程,是編碼活動的一部分。
2、任務不同
既然軟件測試屬于質(zhì)量保證活動,因此它貫穿于整個開發(fā)過程.從需求分析開始,就要制訂軟件測試計劃,軟件設計時要設計系統(tǒng)軟件測試、集成側(cè)試用例,編碼階段要設計單元軟件測試用例并進行單元軟件測試,軟件測試階段要進行集成軟件測試、系統(tǒng)軟件測試等,直到產(chǎn)品交付。只要有修改就有軟件測試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動,有系統(tǒng)的方法、原則作指導。
而調(diào)試是編碼活動的一部分,因此有編碼就有調(diào)試.它的任務主要就是排錯。調(diào)試的方法經(jīng)常與使用的開發(fā)工具有關,例如:解釋型的開發(fā)工具可以交互式調(diào)試,編譯型開發(fā)工具就很難較好地查錯。當然它有一些啟發(fā)式的方法,它是一種比較依賴開發(fā)人員經(jīng)驗的活動。
3、指導原則和方法不同
軟件側(cè)試是一種有規(guī)律的活動,有一系列軟件軟件測試的原則.其中主要是制訂側(cè)試計劃,然后嚴格執(zhí)行.其次是一種挑剔性行為,因此它不但要側(cè)試軟件應該做的,還需要側(cè)試軟件不應該做的事情。調(diào)試所遵循的規(guī)律主要是一些啟發(fā)式規(guī)則,是一個推理過程。例如使用歸納法、演繹法、回溯法等。
軟件測試的輸出是預知的,其軟件測試用例必須包括預期的結(jié)果,而調(diào)試的輸出大多是不可預見的,需要調(diào)試者去解釋、去發(fā)現(xiàn)產(chǎn)生的原因。
4、操作者
因為心理狀態(tài)是軟件測試程序的障礙,所以執(zhí)行軟件測試的人一般不是開發(fā)人員,以使軟件測試更客觀、更有效,而調(diào)試人員一般都是開發(fā)人員.7.9.2軟件維護
軟件維護活動類型總起來大概有四種:糾錯性維護(校正性維護)、適應性維護、完善性維護或增強、預防性維護或再工程。
改正性維護
改正性維護是指改正在系統(tǒng)開發(fā)階段已發(fā)生而系統(tǒng)測試階段尚未發(fā)現(xiàn)的錯誤。這方面的維護工作量要占整個維護工作量的17%~21%。所發(fā)現(xiàn)的錯誤有的不太重要,不影響系統(tǒng)的正常運行,其維護工作可隨時進行:而有的錯誤非常重要,甚至影響整個系統(tǒng)的正常運行,其維護工作必須制定計劃,進行修改,并且要進行復查和控制。
適應性維護
適應性維護是指使用軟件適應信息技術(shù)變化和管理需求變化而進行的修改。這方面的維護工作量占整個維護工作量的18%~25%。由于計算機硬件價格的不斷下降,各類系統(tǒng)軟件屢出不窮,人們常常為改善系統(tǒng)硬件環(huán)境和運行環(huán)境而產(chǎn)生系統(tǒng)更新?lián)Q代的需求;企業(yè)的外部市場環(huán)境和管理需求的不斷變化也使得各級管理人員不斷提出新的信息需求。這些因素都將導致適應性維護工作的產(chǎn)生。進行這方面的維護工作也要像系統(tǒng)開發(fā)一樣,有計劃、有步驟地進行。
完善性維護
完善性維護是為擴充功能和改善性能而進行的修改,主要是指對已有的軟件系統(tǒng)增加一些在系統(tǒng)分析和設計階段中沒有規(guī)定的功能與性能特征。這些功能對完善系統(tǒng)功能是非常必要的。另外,還包括對處理效率和編寫程序的改進,這方面的維護占整個維護工作的50%~60%,比重較大.也是關系到系統(tǒng)開發(fā)質(zhì)量的重要方面。這方面的維護除了要有計劃、有步驟地完成外.還要注意將相關的文檔資料加入到前面相應的文檔中去。
預防性維護
預防性維護為了改進應用軟件的可靠性和可維護性,為了適應未來的軟硬件環(huán)境的變化,應主動增加預防性的新的功能,以使應用系統(tǒng)適應各類變化而不被淘汰。例如將專用報表功能改成通用報表生成功能,以適應將來報表格式的變化。這方面的維護工作量占整個維護工作量的4%左右。
第一章
1.軟件有哪些種類?
答:1.按功能特征進行劃分:
(1)系統(tǒng)軟件(2)支撐軟件(3)應用軟件
2.按規(guī)模大小進行劃分
微型、小型、大型、甚大型、極大型
4.結(jié)合自己的親身經(jīng)歷,談談軟件工具在軟件開發(fā)過程中的作用。
使軟件開發(fā)更加模式化,工程化,從而提高軟件開發(fā)的效率和封裝性。
第二章
2.軟件瀑布模型為什么要劃分階段?各個階段的任務是什么?
在軟件開發(fā)早期,開發(fā)只是被簡單地分成編寫代碼和修改代碼兩個階段。往往在拿到項目后立刻編寫程序,然后調(diào)試通過后直接交付給用戶使用。如果應用中出現(xiàn)錯誤,或者有新的要求,都需要重新修改代碼。這種小作坊式的軟件開發(fā)方法有明顯的弊端,如缺乏統(tǒng)的項目規(guī)劃、不太重視需求的獲取和分析、對軟件的測試和維護考慮不周等,這些都會導致軟件項目的失敗。
概念階段:計劃、需求分析
開發(fā)階段:設計、編碼、測試
維護階段:運行維護
3.舉例說明哪些項目的開發(fā)適用于原型模型或螺旋模型,哪些不適于采用這兩種模型。
螺旋模型適合于大型軟件的開發(fā),應該說它是最為實際的方法,它吸收了軟件工程“演化”的概念,使得開發(fā)人員和客戶對每個演化層出現(xiàn)的風險有所了解,繼而做出應有的反應。
不適用:小型軟件。
原型般是指對某種產(chǎn)品進行模擬的初始版本或者原始模型,在工程領域中具有廣泛應用。
不適用:大型軟件項目;含有對于計算量大、邏輯性較強的程序模塊:
第三章
1.可行性研究的任務是什么?
可行性研究的任務是以最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。簡單的說,可行性研究的最終結(jié)果是決定項目y做還是小做”而不是“如何做”。2.項目開發(fā)計劃有哪些內(nèi)容?
引言(目的、背景、參考文獻、術(shù)語);項目概述(功能、條件、運行環(huán)境、產(chǎn)品、程序、文檔、服務、驗收標準、實施計劃、工作任務分解、進度、預算、人員)
第四章
1.什么是需求工程?需求工程包括哪些活動?
需求工程是指應用已證實有效的技術(shù)、方法進行需求分析,確定客戶需求,幫助分析人員理解問題并定義目標系統(tǒng)的所有外部特征的 門學科。它通過合適的工具和記號系統(tǒng)地描述待開發(fā)系統(tǒng),及其行為特征和相關約束,形成需求文檔;并對用戶不斷變化的需求演進給予支持。
一個良好的需求開發(fā)過程應該包括需求獲取、需求分析與建模、編寫需求規(guī)格說明書和需求評審4個主要活動。
2.需求工程過程包括哪些主要活動? 需求開發(fā)過程應該包括需求獲取、需求分析與建模、編寫需求規(guī)格說明書和需求評審4個主要活動。3.有哪兩種主要的需求分析模型?它們的主要思想是什么?
答:面向?qū)ο蠓治瞿P停Y(jié)構(gòu)化分析模型。前者是采用面向?qū)ο蟮乃枷脒M行軟件需求分析的建模過程,而后者模型的核心是DD,它是設計各種數(shù)據(jù)對象的總和。他們的模型分別起到了描述數(shù)據(jù)模型,功能模型與行為模型的作用。
4.需求規(guī)格說明書的主要作用是什么?應該包括哪些主要內(nèi)容? 作用:
(1)作為用戶方和開發(fā)方之間的合同,為雙方相互了解提供基礎。
(2)反映問題的結(jié)構(gòu),作為系統(tǒng)設計和編碼的依據(jù)。
(3)作為測試和驗收目標系統(tǒng)的依據(jù)。內(nèi)容:
用戶可以通過需求規(guī)格說明書檢查需求描述是否滿足原來的期望。設計人員根據(jù)軟件需求規(guī)格說明書的描述了解所需開發(fā)軟件的功能和性能,以及開發(fā)軟件時必須滿足的約束,將其作為軟件設計的依據(jù)。測試人員根據(jù)軟件需求規(guī)格說明書中對產(chǎn)品的描述,設計測試計劃、測試用例和測試過程。產(chǎn)品發(fā)布人員根據(jù)軟件需求規(guī)格說明和用戶界面設計編寫用戶手冊和幫助信息
第五章
2.簡述數(shù)據(jù)流圖分解時的注意事項。
?上層可分解得快些(即分解成子數(shù)據(jù)處理個數(shù)多些),這是因為上層是綜合性描述,對可讀性的影(即分解成的子數(shù)據(jù)處理個數(shù)多些),這是因為上層是綜合性描述,對可讀性的影響小。而下層應分解得慢性。
?在不影響可讀性的前提下,應適當多分解成幾部分,以減少分解層數(shù)。3.數(shù)據(jù)字典的作用是什么?它有哪些基本內(nèi)容? ?分解應自然,概念上要合理、清晰。
作用:數(shù)據(jù)字典作為分析階段的工具,有助于改進分析人員和用戶.間的通信,進而消除很多的誤解,同時也有助于改進不同開發(fā)人員之間的通信;.內(nèi)容:數(shù)據(jù)字典的內(nèi)容主要是對數(shù)據(jù)流圖中的數(shù)據(jù)項、數(shù)據(jù)流、加工邏輯、數(shù)據(jù)存儲和外部實體
第六章
1.什么是面向?qū)ο蠓椒??與傳統(tǒng)軟件開發(fā)方法相比,面向?qū)ο蠓椒ㄓ惺裁磧?yōu)點? 是一種把面向?qū)ο蟮乃枷霊糜谲浖_發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法。優(yōu)點:
1.符合人們對問題的認識習慣
2.增強問題域與最終軟件系統(tǒng)之間的銜接
3.易于維護和復用
4.易于開發(fā)大型軟件產(chǎn)品
2.什么是模型?在軟件開發(fā)過程中為什么需要建立模型?
在軟件開發(fā)過程中,建立軟件模型具有十分重要的作用,主要體現(xiàn)在以下幾個方面:
有助于問題的簡化,通過抽象降低復雜性;
有助于和其他開發(fā)小組成員,各種用戶以及系統(tǒng)相關者進行交流;
有助于維護人員了解軟件設計的思路和細節(jié),為以后的維護和升級提供了文檔。
第七章
1.面向?qū)ο蠓治霭男┗顒??應該建立哪些類型的模型?/p>
面向?qū)ο蠓治鯫OA模型的過程包括理解用例模型、識別分析類、定義交互行為、建立分析類圖、評審分析模型5個活動組成。
目標是建立一個符合問題域、滿足用戶需求的OOA模型。
2.什么是實體類、邊界類和控制類?為什么將分析類劃分成這3種類型?
實體類:用于描述必須存儲的信息,同時描述相關的行為。實體類代表擬建系統(tǒng)中的核心信息。在RUP的有關文檔中對實體類的解釋為:“實體類是用于對必須存儲的信息和相關行為建模的類。邊界類:在系統(tǒng)與外界之間,為它們交換各種信息與事件。邊界類處理軟件系統(tǒng)的輸入和輸出。在RUP的有關文檔中對邊界類的解釋為:邊界類是一種用于對系統(tǒng)外部環(huán)境與其內(nèi)部運作之間的交互進行建模的類。
控制類:與業(yè)務過程相關,它們控制整個業(yè)務的流程和執(zhí)行次序。在RUP的有關文檔中對控制類的解釋為:控制類用于對一個或幾個用例所持有的控制行為進行建模。
控制類對象可以和邊界對象交互,也可以和實體對象交互,但不能和用例的參與者直接進行交互。
第八章
1.什么是軟件設計?它的目標和任務是什么?
<1>軟件設計:在需求分析的基礎上通過抽象和分解將系統(tǒng)分解成模塊,確定系統(tǒng)功能的實現(xiàn)。即把軟件需求轉(zhuǎn)換為軟件包表示的過程。
<2>目標:軟件設計的最終目標是產(chǎn)生一個設計規(guī)約,該規(guī)約包括體系結(jié)構(gòu)、描述數(shù)據(jù)、接口和構(gòu)件的設計模型。
軟件設計的任務,就是把分析階段產(chǎn)生的軟件需求規(guī)格說明轉(zhuǎn)換為用適當手段表示的軟件設計文檔。
2.完成良好的軟件設計應遵循哪些原則?
模塊化與模塊獨立性;抽象與逐步求精;信息隱藏。3.如何理解模塊獨立性?用什么指標來衡量模塊獨立性?
<1>模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡單的。
<2>一般采用兩個準則度量模塊獨立性,即模塊的內(nèi)聚性和模塊間的耦合性 4.說明軟件設計階段的任務和過程 軟件設計分兩步完成,即總體設計與詳細設計。第個階段是總體設計,即概要設計或初步設計。這、階段主要確定實現(xiàn)目標系統(tǒng)的總體思想和設計框架,確定程序由哪些模塊組成,以及模塊與模塊之間的關系,最后提出概要設計說明書。第二個階段是詳細設計,即過程設計或構(gòu)件級設計,其任務是通過對結(jié)構(gòu)表示進行細化,確定各個軟件構(gòu)件的詳細數(shù)據(jù)結(jié)構(gòu)和算法,產(chǎn)生描述各個軟件構(gòu)件的詳細設計文檔。
5.試說明軟件體系結(jié)構(gòu)在軟件設計階段中的重要性。
良好的體系結(jié)構(gòu)設計是決定軟件系統(tǒng)成功的重要因素。軟件體系結(jié)構(gòu)設計的好壞往往會成為一個系統(tǒng)設計成敗的關鍵。通常,軟件體系結(jié)構(gòu)涉及軟件的總體組織、全局控制、數(shù)據(jù)存取及子系統(tǒng)之間的通信協(xié)議等。
6.簡述面向?qū)ο笤O計階段要做的工作。
OOD主要包括三個方面的工作:系統(tǒng)體系結(jié)構(gòu)設計、用例實現(xiàn)方案設計和用戶界面設計。
第十一章
1.簡述程序設計語言的基本特征及分類。
基本特征包括心理特性,工程特性和技術(shù)特性三個方面。語言的的—心理特性對人機通信的質(zhì)量有主要的影響;語言的工程特性對軟件開發(fā)成功與否有重要的影響,此外語言的技術(shù)特性也會影響軟件設計的質(zhì)量
?按程序設計語言的歷史發(fā)展過程,計算機語言可分為機器語言、匯編語言、高級程序設計語言。
?按與機器的依賴程度,可分為低級、中級和高級語言。
?按應用范圍,可分為通用語言與專用語言兩大類,通用語言義可細分為系統(tǒng)程序設計語言、科學計算語言、事務處理語言和實時控制語言等。
?按程序的設計方法,可分為命令性語言和作用性語言。
?按語言的成分,可以分成順序語言、并行語言和實時語言等。
?按語言的組成方法,可以分成匯集式語言和可擴充語言。2.為了具有良好的程序設計風格,應該注意哪些方面的問題?
要形成良好的程序設計風格,應從源程序文檔化、數(shù)據(jù)說明、語句構(gòu)造、輸入輸出和追求效率幾個方面加以注意。
3.什么是軟件測試?軟件I則試的原則有哪些?
軟件測試是按照特定的規(guī)則,發(fā)現(xiàn)缺陷而執(zhí)行程序的過程。
一個好的測試用例是指盡可能找到迄今為止尚未發(fā)現(xiàn)缺陷的用例。一個成功的測試是指揭示了迄今為止尚未發(fā)現(xiàn)缺陷的測試。軟件測試的原則:
(l)所有的測試都應該能追溯到用戶需求。
(Z)應該在測試之前就制定出測試計劃。
(3)Pareto原理可應用于軟件測試。
(4)測試應從“小規(guī)?!遍_始,逐步轉(zhuǎn)向“大規(guī)模”
(S)窮舉測試是不可能的。
(6)既要做通過性測試,又要做失效性測試。
(D為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。
第十四章
1.為什么說軟件維護是不可避免的?
因為軟件的開發(fā)過程中,一般很難檢測到所有的錯誤,其次軟件在應用過程中需要隨用戶新的要求或運行環(huán)境的變化而進行軟件的修改或糾正軟件開發(fā)過程未發(fā)現(xiàn)的錯誤,增強、改進和完善軟件的功能和性能,以適應軟件的發(fā)展,延長軟件的壽命,軟件的維護是不可避免的。2.什么是軟件再工程?軟件再工程的主要活動有哪些?
指在逆向工程所獲信息的基礎上修改重構(gòu)已有的系統(tǒng),產(chǎn)生的―個新版本,或者說利用這些信息修改或重構(gòu)軟件系統(tǒng)的工作。
它定義了6為活動r即庫存目錄分析、文檔重構(gòu)、逆向工程、代碼重構(gòu)、數(shù)據(jù)重構(gòu)、正向工程。3.軟件調(diào)試與軟件測試有什么區(qū)別?
1、目的不同
軟件測試的目的是發(fā)現(xiàn)錯誤,至于找出錯誤的原因和錯誤發(fā)生的地方不是軟件測試的任務,而是調(diào)試的任務。調(diào)試的目的是為了證明程序的正確,因此它必須不斷地擠除錯誤.它們的出發(fā)點不一樣“前者是挑錯,是一種挑剔過程,屬于質(zhì)盤保證活動。后者是排錯,是-種排除過程,是編碼活動的部分?
2、任務不同
既然軟件測試屬于質(zhì)量保證活動,因此它貫穿十整個計發(fā)過程.從需求分析開始,就要制訂軟件測試計劃,軟件設計時要設計系統(tǒng)軟件測試、集成側(cè)試用例,編碼階段要設計單元軟件測試用例并進行單元軟件測試,軟件測試階段要進行集成軟件測試、系統(tǒng)軟件測試等,直到產(chǎn)品交付。只要有修改就有軟件測試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動,有系統(tǒng)的方法、原則作指導。
而調(diào)試是編碼活動的部分,因此有編碼就有調(diào)試它的任務主要就是排錯。調(diào)試的方法經(jīng)常與使用的開發(fā)工具有關,例如解釋型的開發(fā)工具可以交互式調(diào)試,編譯型開發(fā)工具就很難較好地查錯。當然它有些啟發(fā)式的方法,它是.種比較依賴開發(fā)人員經(jīng)驗的活動。
3、指導原則和方法不同
軟件側(cè)試是種有規(guī)律的活動,有一系列軟件軟件測試的原則.其中主要是制U側(cè)試計劃,然后嚴格執(zhí)行。其次是種挑剔性行為,因此它不但要側(cè)試軟件應該做的,還需要側(cè)試軟件個應該做的事情。調(diào)試所遵循的規(guī)律主要是些啟發(fā)式規(guī)則,是”個推理過程。例如使用歸納法、演繹法、回溯法等。
軟件測試的輸出是預知的,其軟件測試用例必須包括預期的結(jié)果,而調(diào)試的輸出大多是不可預見的,需要調(diào)試者去解釋、去發(fā)現(xiàn)產(chǎn)生的原因。
4、操作者
因為心理狀態(tài)是軟件測試程序的障礙,所以執(zhí)行軟件測試的人一般不是開發(fā)人員,以使軟件測試更客觀、更有效,而調(diào)試人員一般都是開發(fā)人員?
5、操作環(huán)境、配置、工具不同
調(diào)試在開發(fā)的編碼環(huán)境下進行。如果編碼使用解釋型語言,則可以進行人機交互式調(diào)試,設里斷點、單步調(diào)試等。如果編碼使用編譯型語言,也可以設置斷點、顯示調(diào)試變量值等。而軟件測試是在軟件測試環(huán)境下進行,直接運行開發(fā)完成的程序,可能不再需要一些開發(fā)時的驅(qū)動程序、動態(tài)鏈接庫等.使用不同的工具,環(huán)境配置也不同。
簡答題,1.什么是軟件工程?請分析軟件工程的目標是什么?
答案:軟件工程是:1將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的升發(fā)、運行和維護過程,也就是說將工程化應用于軟件開發(fā)和管理之中;2對1中所選方法的研究”
軟件工程旨在開發(fā)滿足用戶需要、及時交付、不超過預算和無故障的軟件,其主要目標如下: a)實現(xiàn)預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。
b)增強軟件過程的可見性和可控性,保證軟件的質(zhì)量。
c)提高所開發(fā)軟件的可維護性,降低維護費用。
d)提高軟件開發(fā)生產(chǎn)率,及時交付使用。
e)合理預算開發(fā)成本,付出較低的開發(fā)費用。
3.根據(jù)相關的法律,對于侵犯軟件著作權(quán)的行為,根據(jù)情節(jié)應當給予什么處罰?
對于侵犯軟件著作權(quán)的行為,要根據(jù)情況承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任;損害社會公共利益的,由著作權(quán)行政管理部門責令停止侵權(quán)行為,沒收違法所得,沒收、銷毀侵權(quán)復制品,并處罰款;情節(jié)嚴重的,著作權(quán)行政管理部門可以沒收用子制作侵權(quán)復制品的材料、工具、設備等;觸犯刑律的,依法追究刑事責任。
4根據(jù)你的理解,列舉出職業(yè)化軟件工程師要注意的三個主要問題,請給出理由。沒有唯一答案。
1)不遵守標準和規(guī)范:職業(yè)化的重要特征是遵守行業(yè)標準,不能肆意按照自己的想象來發(fā)揮。自從人們認識到軟件危機以來,總結(jié)軟件開發(fā)的失敗教訓和成功經(jīng)驗,并把它們總結(jié)成為最佳實踐,進而形成標準,要充分利用這些最佳實踐和標準來指導軟件過程。任何閉門造車、想當然的行為都是不被提倡的,注定要走彎路。
2)對待計劃不嚴肅:軟件工程強調(diào)計劃性,計劃的內(nèi)容包括;設備資源、進度安排、人力資源、任務分配等等。在項目的進行中要跟蹤計劃執(zhí)行情況,記錄計劃執(zhí)行過程中的偏差,對任何變更都要經(jīng)過評審和批準才能付諸行動。
3)不主動與人溝通:軟件不可見的特性,需要軟件工程師進行大量書面的、口頭的或面對面的溝通,溝通的目的是為了使相關的人員了解項目的進展、遇到的問題、應用的技術(shù)、采用的方法。5.軟件工程為什么要強調(diào)規(guī)范化和文檔化?.軟件工程強調(diào)規(guī)范化和文檔化。規(guī)范化的目的是使眾多的開發(fā)者遵守相同的規(guī)范,使軟件生產(chǎn)擺脫個人生產(chǎn)方式,進入標準化、工程化的生產(chǎn)方式。文檔化是將軟件的設計思想、設計過程和實現(xiàn)過程完整地記錄下來,以便于后人的使用和維護,在開發(fā)過程中各類相關人員借助于文檔進行交流和溝通。另外,在開發(fā)過程中產(chǎn)生的各類文檔使得軟件的生產(chǎn)過程由不可見變?yōu)榭梢?,便于管?/p>
者對軟件生產(chǎn)進度和開發(fā)過程進行管理。在用戶最終驗收時可以通過對提交的文檔進行技術(shù)審查和管理審查,保證軟件的質(zhì)量。
6.請簡單說明結(jié)構(gòu)化分析的主要步驟。
根據(jù)用戶的需求畫出初始的數(shù)據(jù)流程圖,寫出數(shù)據(jù)字典和初始的加工處理說明(lPO圖),實體關系圖。以初始數(shù)據(jù)流程圖為基礎,從數(shù)據(jù)流程圖的輸出端開始回溯。在對數(shù)據(jù)流程圖進行回溯的過程中可能會發(fā)現(xiàn)丟失的處理和數(shù)據(jù),應將數(shù)據(jù)流程圖補充完善。對軟件性能指標、接口定義、設計和實現(xiàn)的約束條件等逐一進行分析。系統(tǒng)分析人員與用戶起對需求分析的結(jié)果進行復查。根據(jù)細化的需求修訂開發(fā)計劃。編寫需求規(guī)格說明書和初始的用戶手冊,測試人員開始編寫功能測試用的測試數(shù)據(jù)。
7.設計類的屬性時必須要定義是哪兩項?
設計類的屬性時必須要定義的內(nèi)容:
1)屬性的類型:設計屬性時必須要根據(jù)開發(fā)語言確定每個屬性的數(shù)據(jù)類型?如果數(shù)據(jù)類型不夠,設計人員可以利用已有的數(shù)據(jù)類型定義新的數(shù)據(jù)類型。
2)屬性的可見性。在設計屬性時要確定公有屬性、私有屬性、受保護屬性?;顒訄D反映系統(tǒng)中從一個活動到另一個活動的流程,強調(diào)對象間的控制流程?;顒訄D特別適合描述工作流和并行處理過程。具體地說活動圖可以描述一個操作過程中需要完成的活動;描述一個對象內(nèi)部的工作;描述如何執(zhí)行組相關的動作,以及這些動作如何影響它們周圍的對象;說明個業(yè)務活動中角色、工作流、組織和對象是如何工作的。
順序圖用于描述一組交互對象間的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序。
8面向?qū)ο蟮姆治鐾ǔR⑷齻€模型,請問三個模型的作用?
a)功能模型:表達系統(tǒng)的詳細需求,為軟件的進一步分析和設計打下基礎。在面向?qū)?/p>
象方法中,由用例圖和場景描述組成。
b)對象模型:表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)“數(shù)據(jù)”性質(zhì)。描述現(xiàn)實世界中實體的對象以及它們之間的關系,表示目標系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。在面向?qū)ο蠓椒ㄖ?,類圖是構(gòu)件對象模型的核心上具。
c)動態(tài)模型:描述系統(tǒng)的動態(tài)結(jié)構(gòu)和對象之間的交互,表示瞬時的、行為化的系統(tǒng)的“控制”特性。面向?qū)ο蠓椒ㄖ?,常用狀態(tài)圖、順序圖、合作圖、活動圖構(gòu)件系統(tǒng)的動態(tài)模型。
9.面向?qū)ο蟮脑O計活動中,有構(gòu)架師、用例工程師和構(gòu)件師參加,他們每個角色的職責是什么?
構(gòu)架設計的目的是要勾畫出系統(tǒng)的總體結(jié)構(gòu),這項工作由經(jīng)驗豐富的構(gòu)架設計師主持完成。該活動以用例模型、分析模型為輸入,生成物理構(gòu)架、子系統(tǒng)及其接口、概要的設計類(即設計階段定義的類)。
根據(jù)分析階段產(chǎn)生的高層類圖和交互圖,由用例設計師研究已有的類,將它們分配到相應的用例中。檢查每個用例的功能,這些功能依靠當前的類能否實現(xiàn),同時檢查每個用例的.特殊需求是否有合適的類來實現(xiàn)。細化每個用例的類圖,描述實現(xiàn)用例的類及其類之間的相互關系,其中的通用類和關鍵類可用粗線框區(qū)分,這些類將作為項目經(jīng)理檢查項目時的重點。
經(jīng)過前面兩個活動,構(gòu)架設計師已經(jīng)將系統(tǒng)的構(gòu)架建立起來,用例設計師按照用例的功能將每個類分配給相應的用例?,F(xiàn)在要由構(gòu)件工程師詳細設計每個類的屬性、方法和關系。10.提高程序可讀性有哪些招數(shù)?對你來講比較靈驗的是哪些?
a)源程序文件頭說明,函數(shù)應有函數(shù)頭說明,內(nèi)容包括:程序標題;有關該模塊功能和目的說明;主要算法說明;接O說明,包括調(diào)用形式、參數(shù)描述、子程序清單、有關數(shù)據(jù)的說明。
b)主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο?的定義能夠反映其內(nèi)在含義。c)變量定義最規(guī)范化,說明的先后次序固定。
d)處理過程的每個階段和典型算法前都有相關注釋說明。
三、簡答題:
2、什么是軟件工程?包括哪些內(nèi)容?
答: 軟件工程:用科學知識和技術(shù)原理來定義、開發(fā)、維護軟件的一門學科。軟件工程的內(nèi)容:
1)軟件開發(fā)技術(shù):軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。2)軟件開發(fā)管理:軟件管理學、軟件經(jīng)濟學、軟件心理學。
軟件工程的目標:是成功的建造一個大型軟件系統(tǒng),所謂成功是要達到以下幾個目標:①付出較 低的開發(fā)成本;②面到要求的軟件功能;③取得較好的軟件性能;④開發(fā)的軟件易于 移植;⑤需要較低的維護費用;⑥能按時完成開發(fā)任務,及時交付使用;⑦開發(fā)的軟 件可靠性高;軟件工程過程:生產(chǎn)一個最終能滿足需求且達到工程目標的軟件產(chǎn)品所需要的步驟。軟件工 程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動。
軟件工程的框架可概括為:①目標、②過程和③原則。
軟件工程的原則:是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。基本原理:⑴用分階段的生命周期計劃嚴格管理;⑵堅持進行階段評審;⑶實行嚴格的產(chǎn)品控制; ⑷采用現(xiàn)代程序設計技術(shù);⑸結(jié)果應能清楚地審查;⑹開發(fā)小組的人員應該少而精; ⑺承認不斷改進軟件工程實踐的必要性;(工程化的方法開發(fā)軟件基本原理)
軟件工程方法學:軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工 程學科。
軟件工程方法學包括:①傳統(tǒng)方法學(結(jié)構(gòu)化范型)和②面向?qū)ο蠓椒▽W。
面向?qū)ο蟮囊c: ①把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。②把所 有對象都劃分成類。③按子類與父類的關系,把類組成一個層次結(jié)構(gòu)。④對象彼此之 間僅能通過傳遞消息互相聯(lián)系。
軟件工程方法學三要素是:①方法;②工具;③過程。
3、軟件生命周期由哪三個時期組成,又劃分為哪8個階段?
答:軟件生存周期:一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。軟件生命周期是
由:⑴軟件定義時期;⑵軟件開發(fā)時期;⑶軟件維護時期三個時期組成的。又劃分為:①問題定義、②可行性研究、③需求分析、④總體設計、⑤詳細設計、⑥編碼和單元測試、⑦綜合測試、⑧維護八個階段。
1、問題的定義及規(guī)劃 此階段是軟件開發(fā)方與需求方共同討論,主要確定軟件的開發(fā)目標及其可行性。
2、需求分析 在確定軟件開發(fā)可行的情況下,對軟件需要實現(xiàn)的各個功能進行詳細分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟件開發(fā)項目的成功打下良好的基礎?!拔ㄒ徊蛔兊氖亲兓旧怼!?,同樣需
求也是在整個軟件開發(fā)過程中不斷變化和深入的,因此我們必須制定需求變更計劃來應付這種變化,以保護整個項目的順利進行。
3、軟件設計 此階段主要根據(jù)需求分析的結(jié)果,對整個軟件系統(tǒng)進行設計,如系統(tǒng)框架設計,數(shù)據(jù)庫設計等等。軟件設計一般分為總體設計和詳細設計。好的軟件設計將為軟件程序編寫打下良好的基礎。
4、程序編碼 此階段是將軟件設計的結(jié)果轉(zhuǎn)換成計算機可運行的程序代碼。在程序編碼中必須要制定統(tǒng)一,符合標準的編寫規(guī)范。以保證程序的可讀性,易維護性,提高程序的運行效率。
5、軟件測試 在軟件設計完成后要經(jīng)過嚴密的測試,以發(fā)現(xiàn)軟件在整個設計過程中存在的問題并加以糾正。整個測試過程分單元測試、組裝測試以及系統(tǒng)測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃并嚴格按照測試計劃進行測試,以減少測試的隨意性。
6、運行維護 軟件維護是軟件生命周期中持續(xù)時間最長的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進行維護。軟件的維護包括糾錯性維護和改進性維護兩個方面。
4、什么是白盒測試法?什么是黑盒測試法?
答:白盒測試:所謂白盒測試就是在知道產(chǎn)品內(nèi)部工作過程或程序內(nèi)部結(jié)構(gòu)和處理過程的前提下,檢
驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行或按照程序內(nèi)部的邏輯測試程序,檢驗程序中的每條通路是否都能按照預定要求正確工作的測試方法.因此白盒測試又稱為結(jié)構(gòu)測試或邏輯測試。
從覆蓋源程序語句的詳盡程度分析,大致有以下一些不同的覆蓋標準:⑴語句覆蓋;⑵判定覆蓋;⑶條件覆蓋;⑷判定/條件覆蓋;⑸條件組合覆蓋;⑹點覆蓋;⑺邊覆蓋;⑻路徑覆蓋。黑盒測試:所謂黑盒測試是指在完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的前提下,在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮茌斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性.因此,又稱為功能測試。特點:等價類劃分、邊界值分析、因果圖、錯誤推測。
優(yōu)點 1.基本上不用人管著,如果程序停止運行了一般就是被測試程序crash了 2.設計完測試例之后,下來的工作就是爽了,當然更苦悶的是確定crash原因 缺點 1.結(jié)果取決于測試例的設計,測試例的設計部分來勢來源于經(jīng)驗,OUSPG的東西很值得借鑒
2.沒有狀態(tài)轉(zhuǎn)換的概念,目前一些成功的例子基本上都是針對PDU來做的,還做不到針對被測試程序的狀態(tài)轉(zhuǎn)換來作
3.就沒有狀態(tài)概念的測試來說,尋找和確定造成程序crash的測試例是個麻煩事情,必須把周圍可能的測試例單獨確認一遍。而就有狀態(tài)的測試來說,就更麻煩了,尤其不
是一個單獨的testcase造成的問題。這些在堆的問題中表現(xiàn)的更為突出。
5、什么是集成測試?非漸增式和漸增式有什么區(qū)別?漸增式如何組裝模塊?
答:將模塊組合起來成為一個完整的系統(tǒng)對其進行測試。非漸增式是將模塊先進行單元測試然后組裝
在一起進行測試。漸增式是逐個將未測試的模塊組裝到已經(jīng)測試過的模塊上去進行集成測試,每加入一個就測試一次。非漸增式需要樁模塊和驅(qū)動模塊、非漸增式開始可以并行測試、漸增式可以及時的發(fā)現(xiàn)接口錯誤,非漸增式很難發(fā)現(xiàn)接口發(fā)現(xiàn)錯誤、漸增式開始不能并行測試、漸增式測試比較徹底。漸增式組裝模塊有自頂向下和自底向上兩種組裝方式。
6、什么是確認測試?該階段有那些工作?
答:調(diào)試的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。簡單調(diào)試、演繹調(diào)試、遞歸調(diào)試、回溯調(diào)試。
7、面向?qū)ο蠓椒▽W與傳統(tǒng)方法學有何區(qū)別?
答:面向?qū)ο蠓椒▽W注重的是軟件的重用性,而傳統(tǒng)的方法學則在這一問題解決上不理想。面向?qū)ο?/p>
方法學和傳統(tǒng)的方法學在問題分析上的切入點不同。面向?qū)ο罄锩?,系統(tǒng)是長出來的,傳統(tǒng)的方法學里面,系統(tǒng)是放進去的。傳統(tǒng)方法:⑴結(jié)構(gòu)化開發(fā)方法,注重的是系統(tǒng)功能,自頂向下,從大到小的功能分解,從DFD到MSD,往往系統(tǒng)需求變化最大就是功能,一段較長的時間內(nèi),商業(yè)的流程可能已經(jīng)發(fā)生了很大的變化,這樣基于功能和過程的方法顯然難以維護的,代碼重用率可想而知,而商業(yè)過程中的數(shù)據(jù)可能變化不會很大,⑵信息工程法,注重的是數(shù)據(jù),事件流->信息流,(資金流,物流)->數(shù)據(jù)流,數(shù)據(jù)的輸入和轉(zhuǎn)化輸出,數(shù)據(jù)流程圖,狀態(tài)轉(zhuǎn)化圖,事件順序圖,過程依賴圖,兩者都是由事件驅(qū)動.面向的是問題,是為了要解決某一個具體問題,其觀察事物的方法不是本體客體本身,而是對本體客體相互作用過程抽象,轉(zhuǎn)化成邏輯模型。面向?qū)ο蠓椒▽W:其切入點是客觀世界的主體和客體,通過封裝實現(xiàn)了信息交流的安全,抽象和繼承使得事物的一完整表述和容易修改新的變化,聚合,關聯(lián)反映事物間的相互作用和關系,通過關聯(lián)類管理,這樣把事物和事物間的關系分開.減少了復雜度,便于維護,大大提高了代碼重用率。
8、軟件開發(fā)模型有幾種?各有什么特點? 軟件生存周期模型:是描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。(模型:是為了理解事物而 對事物做出一種抽象,它忽略不必要的細節(jié),它也是事物的一種抽象形式、一個規(guī)劃、一個程式。)主要模型:①瀑布模型;②增量模型;③螺旋模型;④噴泉模型;⑤變換模型;⑥基于知識的模 型等
瀑布模型:①它提供了一個摸板,這個摸板使分析、設計、編碼、測試和支持的方法可以在該摸 板下有一個共同的指導;②雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多。快速原型模型:①開發(fā)速度快,質(zhì)量有保證。②對信息系統(tǒng)特別有效。
增量模型:①人員分配靈活,剛開始不用投入大量人力資源,當核心產(chǎn)品很受歡迎時,可增加人
力實現(xiàn)下一個增量。②當配備的人員不能在設定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。③具有一定的市場。
螺旋模型:①對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法。開發(fā)者和客戶能夠較好
地對待和理解每一個演化級別上的風險。②對可選方案和約束條件的強調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標;減少了過多測試或測試不足所帶來的風險。
9、可行性研究:⑴系統(tǒng)流程圖;⑵數(shù)據(jù)流程圖;
系統(tǒng)流程圖:系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具?;舅枷胧怯脠D形符號以黑盒子形
式描繪組成系統(tǒng)的每個部件。其表達的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據(jù)進行加工處理的控制過程。
數(shù)據(jù)流程圖:簡稱DFD,是描述數(shù)據(jù)處理過程的工具。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程,是一種功能模型。作用:它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,反映系統(tǒng)必須完成的邏輯功能?;痉栍兴姆N:→,箭頭,表示數(shù)據(jù)流;○,圓或橢圓,表示加工; =,雙杠,表示數(shù)據(jù)存儲;□,方框,表示數(shù)據(jù)的源點或終點。
可行性研究的任務:(1)經(jīng)濟可行性。確定待開發(fā)系統(tǒng)是否值得投資開發(fā)。(2)技術(shù)可行性。對待
開發(fā)的系統(tǒng)進行功能、性能和限制條件的分析,確定在現(xiàn)有資源的條件下技術(shù)風險有多大,系統(tǒng)是否能實現(xiàn)。(3)法律可行性。確認待開發(fā)系統(tǒng)可能會涉及的任何侵犯、妨礙、責任等問題。(4)抉擇。對系統(tǒng)開發(fā)的不同方案進行比較評估。
10、什么是字據(jù)字典?其作用是什么?它有哪些條目?
字據(jù)字典:簡稱DD,就是用來定義數(shù)據(jù)流圖中的各個成分具體含義的,它以一種準確的、無二義性 的說明方式為系統(tǒng)的分析、設計及維護提供了有關元素的一致的定義和詳細的描述。
作 用:⑴為系統(tǒng)的分析設計及維護提供了有關元素的一致的定義和詳細的描述.⑵為分析人員查找
數(shù)據(jù)流圖中有關名字的詳細定義而服務的.⑶它和數(shù)據(jù)流圖共同構(gòu)成了系統(tǒng)的邏輯模型,是需求規(guī)格說明書的主要組成部分.條 目:數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲、基本加工。
11、需求分析的任務是什么? 答: 需求分析是指:開發(fā)人員要準確理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳 述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應的形式主義功能規(guī)約(需求規(guī)格說明)的過程。需求分析的主要任務:⑴正確地確定對系統(tǒng)綜合要求,充分理解和表達用戶的需求。⑵通過結(jié)構(gòu)分
析的方法對系統(tǒng)進行分解,以確定軟件系統(tǒng)的主要成分或軟件系統(tǒng)的構(gòu)成。⑶是對以上已進行的兩項工作進行描述,以形成需求文檔。⑷編寫用戶手冊;⑸編寫驗收計劃;⑹修正可行性研究階段所制訂的軟件項目開發(fā)計劃。
12、結(jié)構(gòu)化分析方法:結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現(xiàn)的軟件為止。
主要工具:數(shù)據(jù)流圖、數(shù)據(jù)詞典、結(jié)構(gòu)化英語、判定表和判定樹。3種模型:①數(shù)據(jù)模型、②功能模型和③行為模型。
驗證軟件需求:⑴一致性;⑵完整性;⑶現(xiàn)實性;⑷有效性;
結(jié)構(gòu)化分析方法步驟: ①了解當前系統(tǒng)的工作流程,獲得當前系統(tǒng)的物理模型。②抽象出當前系 統(tǒng)的邏輯模型。③建立上標系統(tǒng)的邏輯模型。④作進一步補充和優(yōu)化。
結(jié)構(gòu)化程序設計基本要點:⑴采用自頂向下、逐步求精的程序設計方法;⑵使用三種基本程序控 制結(jié)構(gòu)構(gòu)造程序(①順序方式;②選擇方式;③循環(huán)方式;)。⑶主程序員組的組織形式。
13、總體設計過程由兩個主要階段組成:①系統(tǒng)設計階段,確定系統(tǒng)的具體實現(xiàn)方案;②結(jié)構(gòu)設計階段,確定軟件結(jié)構(gòu)。
模塊:軟件系統(tǒng)的層次結(jié)構(gòu)正是模塊化的具體體現(xiàn)。將整個軟件劃分成若干單獨命名和可編址的部分,稱之為模塊。模塊化:就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集 成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求。模塊是構(gòu)成程序的基本構(gòu)件。
模塊化的根據(jù):把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù)。
14、衡量模塊獨立性的兩個標準是什么?它們各表示什么含義? 兩個定性的度量標準:耦合與內(nèi)聚性。
耦合:是模塊之間的相對獨立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨立性就越弱。按耦合度從低到高依次有7種耦合方式:①非直接耦
合(獨立運行);②數(shù)據(jù)耦合(用參數(shù)表傳遞簡單數(shù)據(jù));③標記耦合(傳遞數(shù)據(jù)結(jié)構(gòu)或者一部分);④控制耦合(傳遞的信息包括控制模塊的信息);⑤外部耦合(模塊與軟件之外的環(huán)境有關);⑥公共耦合(多個模塊引用同一全局的數(shù)據(jù)區(qū));⑦內(nèi)容耦合(訪問內(nèi)部數(shù)據(jù),代碼重疊或者多個入口)。
內(nèi)聚:是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。一個模塊內(nèi)部各個元素
之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高。按內(nèi)聚度從低到高依次有7種內(nèi)聚種類: ①偶然內(nèi)聚(模塊完成的多個任務,任務之間的關系松散);②邏輯內(nèi)聚(模塊完成邏輯相關的一組任務);③瞬時內(nèi)聚(模塊的所有任務必須在同一時間間隔內(nèi)執(zhí)行);④過程內(nèi)聚(模塊的處理元素相關而且按照特定的次序執(zhí)行);⑤通信內(nèi)聚(模塊的所有元素集中在一個數(shù)據(jù)結(jié)構(gòu)區(qū)域上);⑥順序內(nèi)聚(模塊的處理元素相關,必須順序執(zhí)行);⑦功能內(nèi)聚(模塊完成單一的功能,各個部分協(xié)調(diào)工作,而且不可缺少)
耦合和內(nèi)聚的關系:一般說來,在系統(tǒng)中各模塊的內(nèi)聚越大,則模塊間的耦合越小。但這種關系并不
是絕對的。耦合小使得模塊間盡可能相對獨立,從而各模塊可以單獨開發(fā)和維護。內(nèi)聚大使得模塊的可理解性和維護性大大增強。因此,在模塊的分解中應盡量減少模塊的耦合,力求增加模塊的內(nèi)聚。
15、Jackson方法的步驟:(1)實體動作分析:從問題的描述中,提取軟件系統(tǒng)要產(chǎn)生和運用的實體,以及
現(xiàn)實世界作用于實體上的動作。(2)實體結(jié)構(gòu)分析:把作用于實體的動作或由實體執(zhí)行的動作,按時間發(fā)生的先后次序排序,構(gòu)成進程,并用一個層狀的Jackson結(jié)構(gòu)圖表示。(3)定義初始模型:把實體和動作表示成一個進程模型,定
義模型與現(xiàn)實世界的聯(lián)系。(4)功能描述:說明與已定義的動作相對應的功能,為已定義的動作加入功能函數(shù)。(5)決定系統(tǒng)時間特性:對進程加入時間因素,對進程調(diào)度特性進行評價和說明。(6)實現(xiàn):設計組成系統(tǒng)的硬件和軟件,實現(xiàn)系統(tǒng)的原型。
16、測試階段的信息流:這個階段的輸入信息有兩類:(1)軟件配置,包括需求說明書、設計說明書和源 程序清單等;
(2)測試配置,包括測試計劃和測試方案。
自頂向下集成:從主控制模塊開始,沿著程序的控制
層次向下移動,逐漸把各個模塊結(jié)合起來。在把附屬于主控制模塊的那些模塊組裝到程序結(jié)構(gòu)中去時,或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。
深度優(yōu)先的結(jié)合方法先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。選擇一條主控制通路取決于應用的特點,并且有很大任意
性。而寬度優(yōu)先的結(jié)合方法是沿軟件結(jié)構(gòu)水平地移動,把處于同一個控制層次上的所有模塊組裝起來。
集成測試的策略:當使用漸增方式把模塊結(jié)合到程序中去時,有自頂向下和自底向上兩種集成策略。
17、決定軟件可維護性的因素:⑴可理解性;⑵可測試性;⑶可修改性;⑷可移植性;⑸可重用性;
軟件維護:是指在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程.軟件維護 是軟件生命周期的最后一個階段,也是持續(xù)時間最長代價最大的一個階段。軟件的可維護性可以定義為:維護人員理解,改正和改動軟件的難易程度。
18、對象:是對現(xiàn)實世界實體的正確抽象,它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù),以及可以對這些數(shù) 據(jù)施加的操作,封裝在一起所構(gòu)成的統(tǒng)一體。對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系。
對象的特點:①以數(shù)據(jù)為中心;②對象是主動的;③實現(xiàn)了數(shù)據(jù)封裝;④本質(zhì)上具有并行性;⑤模塊 工程規(guī)模:此系統(tǒng)中應包含接受模塊和信息處理與輸出模塊??赡艿慕鉀Q方案及其評價 從三方面研究每種解決方法的可行性:
(1).技術(shù)可行性 使用現(xiàn)在的技術(shù)完全可以實現(xiàn)該系統(tǒng)
(2).經(jīng)濟可行性 這個系統(tǒng)的開發(fā)成本不高,節(jié)省的經(jīng)濟資源以及經(jīng)濟消息能夠超過該系統(tǒng)的開發(fā)成本(3).操作可行性 該教學事務管理系統(tǒng)在校院的各個辦公室都可以實現(xiàn),操作人員為在校師生,所以不存在技術(shù)、能力問題。推薦行動方針 通過從技術(shù),經(jīng)濟,可操作三方面的研究,分析的出結(jié)論,此系統(tǒng)是可行的。16.構(gòu)成E-R圖的基本要素是實體型、屬性和聯(lián)系,其表示方法為:
· 實體型(Entity):用矩形表示,矩形框內(nèi)寫明實體名;比如學生張三豐、學生李尋歡都是實體。如果是弱實體的話,在矩形外面再套實線矩形。
· 屬性(Attribute):用橢圓形表示,并用無向邊將其與相應的實體連接起來;比如學生的姓名、學號、性別、都是屬性。如果是多值屬性的話,再橢圓形外面再套實線橢圓。如果是派生屬性則用虛線橢圓表示。
· 聯(lián)系(Relationship):用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1 : 1,1 : n或m : n)。比如老師給學生授課存在授課關系,學生選課存在選課關系。如果是弱實體的聯(lián)系則在菱形外面再套菱形。(猜考畫圖,或25題)第一章 軟件工程介紹 ? 軟件的特性
1. 軟件是設計開發(fā)的,而不是傳統(tǒng)意義上的生產(chǎn)制造的。2. 軟件不會“磨損”。3. 雖然整個工業(yè)向著基于構(gòu)件的構(gòu)造模式發(fā)展,然而大多數(shù)軟件扔是根據(jù)實際的顧客需
求定制的。? 計算機軟件的七大分類:系統(tǒng)軟件、應用軟件、工程/科學軟件、嵌入式軟件、產(chǎn)品線軟件、Web應用軟件、人工智能軟件。?
遺留系統(tǒng)發(fā)生系統(tǒng)演化的原因:1.軟件需要修改其適應性,從而滿足新的計算環(huán)境或者技術(shù)的需求;2.軟件必須根據(jù)新的業(yè)務需求進行升級;3.軟件必須擴展以具有與更多現(xiàn)代系統(tǒng)和數(shù)據(jù)庫的協(xié)作能力;4.軟件架構(gòu)必須進行改建以適應多樣化的網(wǎng)絡環(huán)境。? 軟件神話:管理者,用戶,從業(yè)者 ? 軟件的定義:程序、數(shù)據(jù)和文檔。?
軟件工程的目的就是為開發(fā)高質(zhì)量的軟件產(chǎn)品提供一個工程框架。第二章 過程綜述
? 軟件工程的三個要素:工具,過程,方法。
? 通用軟件過程框架:溝通,策劃,建模,構(gòu)建,部署。?
能力成熟度模型:第0級,不完全級;第1級,已執(zhí)行級;第2級,已管理級;第三級,已定義級;第4級,已定量管理級;第5級,優(yōu)化級。
第三章 過程模型
? 簡述慣例框架包含的主要活動:溝通、策劃、建模、構(gòu)建、部署。? 簡述瀑布模型所包含的主要框架活動:策劃、建模、構(gòu)建、部署。?
簡述瀑布模型在實際運用中所面臨的問題(缺點):“瀑布模型是由文檔驅(qū)動的”這個事實也是它的一個主要缺點。實際項目很少按照該模型給出的順序進行;用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統(tǒng)開發(fā)完成。
演化過程模型產(chǎn)生的背景:業(yè)務和產(chǎn)品需求經(jīng)常變化、嚴格的交付時間、了解了核心產(chǎn)品和系統(tǒng)需求后沒有定義產(chǎn)品或系統(tǒng)擴展的細節(jié)問題 ?
簡述基于原型開發(fā)模型的軟件開發(fā)過程:在用戶不能給出完整、準確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應性或人機交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個原型(可運行的軟件),然后進行評估,進一步精化、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。溝通-》快速策劃-》建??焖僭O計-》構(gòu)建模型-》部署交付品及反饋
? 簡述原型開發(fā)的缺點:1.為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可
維護性。2.為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。3.開發(fā)過程不便于管理 ? 統(tǒng)一過程的三個特點:用例驅(qū)動,以架構(gòu)為核心,迭代并增量
? 簡述統(tǒng)一過程(UP)的5個階段的主要內(nèi)容:起始,細化,構(gòu)建,轉(zhuǎn)換和生產(chǎn) ? 螺旋模型強調(diào)了其他模型均忽略了的(風險分析)?
橫切關注點的定義:一個信用卡處理系統(tǒng)的核心關注點是借貸/存入處理,而系統(tǒng)級的關注點則是日志、事務完整性、授權(quán)、安全及性能問題等許多關注點,我們叫它橫切關注點 第四章 敏捷視角下的過程 ?
軟件工程的敏捷理念強調(diào)4個關鍵問題:1.具有控制力的自我組織團隊對所開展工作的重要性;2.團隊成員之間、開
發(fā)參與者與客戶之間的交流與合作;3.對“變更代表機遇”的認識;4.以及強調(diào)快速軟件交付以讓客戶滿意。?
簡述極限編程(XP)過程模型所包含的4個主要框架活動:策劃,設計,編碼,測試 第五章 系統(tǒng)工程
? 計算機系統(tǒng)的6個系統(tǒng)要素:軟件,硬件,人員,數(shù)據(jù)庫,文檔,規(guī)程
? Hatley-Pirbhai建模方法:用戶界面,輸入,系統(tǒng)功能和控制,輸出,維護和自檢 ? 系統(tǒng)環(huán)境圖(System Context Diagram)的表示方法(實例)第六章 需求工程
? 需求工程的過程:起始,導出,精化,協(xié)商,規(guī)格說明,確認和管理 ?
在項目(起始)階段,軟件工程師會詢問一些似乎與項目無直接關系的問題,目的是對
問題、方案需求方、期望方案的本質(zhì)、客戶和開發(fā)人員之間初步的交流和合作的效果建立基本的諒解。
? 為什么導出需求這么困難:范圍問題,理解問題,易變問題。? 用例的定義:講述了能表達主題場景的故事:最終用戶如何在一特定環(huán)境下和系統(tǒng)交互 ?
在需求工程的導出階段,三個主要的需求收集活動是:主持人會議、QFD和用戶場景開發(fā) 第七章 構(gòu)建分析模型
? 分析模型在系統(tǒng)描述和設計模型之間建立橋梁。
? 分析模型必須實現(xiàn)的目標:1。描述客戶需要什么;2。為軟件設計奠定基礎;3。定義在軟件完成后可以被確認的一組需求。
? 分析模型的所有元素都可以直接跟蹤到設計模型。
? 分析模型的4個元素:基于場景的元素,面向信息流的元素,基于類的元素,行為元素 ? UML泳道圖是活動圖的一種變形,可以讓建模人員表示用例所描述的活動流,同時指示哪個參與者或分析類對活動矩形所描述的活動負責。
? UML狀態(tài)圖為每個類表現(xiàn)活動狀態(tài)和導致這些活動狀態(tài)變化的事件 ? UML順序圖說明事件如何引發(fā)一個對象到另一個對象的轉(zhuǎn)移
? 簡述CRC建模的內(nèi)容:CRC提供了一個簡單方法,可以識別和組織與系統(tǒng)或產(chǎn)品需求相關的類。? 使用UML類圖來舉例說明組合和聚合之間的區(qū)別 ? 使用UML類圖舉例說明關聯(lián)和依賴之間的區(qū)別
系統(tǒng)分析的經(jīng)驗原則(1)系統(tǒng)開發(fā)是面向客戶的,應從客戶的角度考慮。
(2)諸如系統(tǒng)開發(fā)生命周期之類的產(chǎn)品更新?lián)Q代機構(gòu)應該在所有的信息系統(tǒng)開發(fā)項目中建立起來。
(3)信息系統(tǒng)開發(fā)的過程并不是一個順序的過程,它允許步驟的重疊和倒轉(zhuǎn)等。(4)如果系統(tǒng)的成功可能性受到很大限制時,應取消整個項目。(5)文檔材料是系統(tǒng)開發(fā)生命周期中重要的可遞交成果,應加以重視 第八章 設計工程 ?
簡述良好設計的三個特征:1。設計必須實現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足客戶期望的所有隱含需求;2。對于那些生成代碼的人和那些進行測試以及隨后維護軟件的人而言,設計必須是可讀的、可理解的指南;3。設計必須提供軟件的全貌,從實現(xiàn)的角度說明數(shù)據(jù)域、功能域和行為域。? 設計模型包含的四種元素是什么:數(shù)據(jù)/類設計、體系結(jié)構(gòu)設計、接口設計、構(gòu)建級設計
? 軟件體系結(jié)構(gòu)的定義:軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)為系統(tǒng)提供概念上完整性的方式 ? 模塊應該詳細說明且精心設計以求在某個模塊中包含的信息不被不需要這些信息的其他模塊訪問
?
重構(gòu)的定義:是使用這樣一種方式改變軟件系統(tǒng)的過程:不改變代碼設計的外部行為而是改進其內(nèi)部結(jié)構(gòu)
? 舉例說明逐步求精 ?
框架和設計模式之間的區(qū)別:框架能使應用程序的開發(fā)簡單,價格低廉,但是開發(fā)框架不
是一件容易的事。它是一個需要領域和設計經(jīng)驗的反復過程。設計模式可以簡化這個過程,因為它提供了對過去經(jīng)驗的抽象??蚣苣芨叨瘸橄笸活I域內(nèi)的問題,進而降低開發(fā)難度和強度。因此,在軟件開發(fā)過程中把框架和模式配合起來使用,可以極大地提高軟件的重用??蚣苁擒浖O計模式是軟件的知識 第九章 進行體系結(jié)構(gòu)設計 ?
簡述軟件體系結(jié)構(gòu)的作用:1。軟件體系結(jié)構(gòu)的表示有助于對計算機系統(tǒng)開發(fā)感興趣的各方(共利益者)開發(fā)交流;2。體系結(jié)構(gòu)突出了早期設計決策,這些決策對隨后的所有軟件工程工作有深遠的影響,同時對系統(tǒng)作為一個可運行實體的最后成功有重要作用。3。體系結(jié)構(gòu)“構(gòu)建了一個相對小的,易于理解的模型,該模型描述了系統(tǒng)如何構(gòu)成以及其構(gòu)建如何一起工作”
? 軟件體系結(jié)構(gòu)的典型分類:以數(shù)據(jù)為中心,數(shù)據(jù)流體系結(jié)構(gòu),調(diào)用和返回體系結(jié)構(gòu),面向?qū)ο篌w系結(jié)構(gòu),層次體系結(jié)構(gòu)(以圖例來說明)?
體系結(jié)構(gòu)環(huán)境圖所包含的要素,以圖例來說明 第十二章 軟件測試策略
? 簡述軟件測試策略的螺旋模型:單元測試,集成測試,確認測試,系統(tǒng)測試 ?
簡述單元測試中驅(qū)動程序和樁程序的作用:驅(qū)動程序只是一個“主程序”,它接收測試用例數(shù)據(jù),將這些數(shù)據(jù)傳遞給(將要測試的)構(gòu)件并打印相關結(jié)果。樁程序的作用是替換那些從屬于將要測試的構(gòu)件或被其調(diào)用的構(gòu)件。? 集成測試的兩種方式:一步到位和增量集成
? 試以圖例描述自頂向下集成測試方法的過程 ? 簡述確認測試的兩種主要方法:α測試和β測試 ? 系統(tǒng)測試的主要方法:恢復測試,安全測試,壓力測試,性能測試 ? 三種調(diào)試方法:蠻力法,回溯法,原因排除法 第十三章 測試戰(zhàn)術(shù)
? 好的測試所具有的特性:1。好的測試具有較高的發(fā)現(xiàn)錯誤的可能性;2。好的測試是不冗余的;3。好的測試應該是“最佳品種”4。好的測試應該既不太簡單也不太復雜。?
黑盒測試的定義:所謂黑盒測試是指在完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的前提下,在程序接
口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮茌斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性.因此,又稱為功能測試。
白盒測試的定義:所謂白盒測試就是在知道產(chǎn)品內(nèi)部工作過程或程序內(nèi)部結(jié)構(gòu)和處理過程的前提下, 檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行或按照程序內(nèi)部的邏輯測試程序,檢驗程序中的每條通路是否都能按照預定要求正確工作的測試方法.因此白盒測試又稱為結(jié)構(gòu)測試或邏輯測試。? 基本路徑測試的環(huán)復雜度計算方法和獨立路徑集合的識別V(G)=E-N+2;其中E為流圖 的邊數(shù),N為流圖的結(jié)點數(shù)。? 控制結(jié)構(gòu)測試的3個主要方法:條件測試,數(shù)據(jù)流測試,循環(huán)測試 ? 黑盒測試的兩個主要方法:等價類劃分,邊界值分析 ? 類級可應用的測試方法:隨機測試,劃分測試 ? 面向?qū)ο蟮念惣墑澐譁y試的主要方法:基于狀態(tài)劃分,基于屬性劃分,基于類別劃分 ?
以圖例說明從行為模型導出測試用例 第十四章 產(chǎn)品度量
? 軟件度量為產(chǎn)品內(nèi)部屬性的質(zhì)量評估提供了一種(定量)方法,從而可以是軟件工程師在產(chǎn)品開發(fā)出來之前進行質(zhì)量評估
? 軟件測量的5個主要活動:公式化,收集,分析,解釋,反饋 ?
面向目標的軟件測量(GQM范型)的內(nèi)容:1。確定特定過程活動的明確的測量目標或?qū)⒁u估的產(chǎn)品特性;2。定義一組必須回答的問題以達到目標;3。確定被良好公式化的度量以幫助回答這些問題 ?
有效軟件度量的屬性1。簡單的和可計算的2。在經(jīng)驗上和直覺上有說服力3。一致的和客觀的4。單位和量綱的使用是一致的。5。編程語言的獨立性6。高質(zhì)量反饋的有效機制
第三篇:軟件工程知識點總結(jié)
第二章軟件生命周期和過程模型
2.1軟件生命周期是什么?分為哪幾個階段?每個階段干什么?
2.2.1瀑布模型
1、軟件生命周期是指軟件產(chǎn)品從考慮其概念開始到交付使用,直至最終退役為止的整個過程。軟件生命周期可以劃分為軟件定義、軟件開發(fā)和運行維護三個時期。
2、軟件生命周期各個階段的任務:
時期階段任務
軟件定義確定待開發(fā)的軟件系統(tǒng)要做什么
問題定義確定解決什么問題
可行性研究確定“上一個階段所確定的問題是否有行得通的解決方法”需求分析確定“目標系統(tǒng)必須做什么”這個問題
軟件開發(fā)具體設計和實現(xiàn)軟件
概要設計確定“怎樣實現(xiàn)目標系統(tǒng)”
詳細設計在概要設計階段只是以一種比較抽象概括的方式給出解
決問題的辦法。在詳細設計階段,需要將解法具體化,確
定“應該怎樣具體實現(xiàn)這個系統(tǒng)”
編碼和單元測試 在前面階段的基礎上,寫出正確的、易理解、易維護的程
序。
綜合測試通過各種類型的測試及調(diào)試,發(fā)現(xiàn)功能、邏輯和實現(xiàn)上可
能存在的缺陷,使軟件達到預定的要求。(其中最基本的測試是集成測試和驗收測試)
運行和維護根據(jù)軟件運行中的問題,對其進行各種修改,使系統(tǒng)能持
久地滿足用戶的需要。
3、瀑布模型
瀑布模型包含了各項軟件工程活動,即(概念階段)制訂開發(fā)計劃、進行需求分析、(開發(fā)階段)軟件設計、程序編碼、測試、(維護階段)運行維護。通常情況下,運 行維護活動是一個具有最長生命周期的階段。
4.原型模型
原型一般是指對某種產(chǎn)品進行模擬的初始版本或原始模型。在使用原型時,可以采取兩種不同的策略:廢棄策略、追加策略。
5、螺旋模型
基本思想:使用原型及其他方法來降低風險。包含4種活動:制定計劃、風險分析、實施工程、客戶評價。
6、噴泉模型(迭代模型)
噴泉模型認為軟件開發(fā)具有的兩個固有屬性:迭代性、無間隙性。他認為軟件開發(fā)過程的各個階段是相互重疊,多次反復的,就像噴泉一樣,水噴上去又可以落下來,既可以落在中間,又可以落到底部。
7、增量模型(漸增模型)
主要面向市場開發(fā)
第三章 可行性研究
1、可行性研究考慮哪幾方面的研究?(4)
a)技術(shù)可行性;b)經(jīng)濟可行性;c)操作可行性;d)社會可行性
第四章 需求工程
1、需求工程經(jīng)過哪4步?P63小結(jié)
需求開發(fā)過程可以按照需求獲取、分析建模、編寫規(guī)格說明書、需求評審。
2、需求分析階段要完成的任務就是最終形成一份經(jīng)開發(fā)方和用戶認可或達成共識的軟件需求規(guī)格說明書。
第五章 結(jié)構(gòu)化方法
數(shù)據(jù)流圖 結(jié)構(gòu)圖
第六章 面向?qū)ο蠡A
1、類和對象的區(qū)別面向?qū)ο蠛兔嫦蜻^程區(qū)別
第七章 面向?qū)ο蠓治?/p>
時序圖 用例模型
第八章 軟件設計基礎
第九章 結(jié)構(gòu)化設計方法
第十章 面向?qū)ο蟮脑O計
1、面向?qū)ο蟮脑O計,各設計原則是什么?及各原則是干什么的?
a)單一職責原則(SRP):單一職責就是要求系統(tǒng)中一個具體設計元素(類)只完成某一
類功能(職責),盡可能避免出現(xiàn)一個“復合”功能的類----在同
一個類中完成多個不同的功能。關鍵詞:提高內(nèi)聚性
b)開放—封閉原則(OCP):基本思想是:“不用修改原有類就能擴展一個類的行為”。
關鍵詞: 抽象封裝多態(tài)
c)Liskov替換原則(LSP):子類應當可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方。d)接口隔離原則(ISP):采用多個與特定客戶類有關的接口比采用一個通用的涵蓋多個業(yè)務方法的接口更好。
e)依賴倒置原則(DIP):是指應用系統(tǒng)中的高層模塊不應依賴于底層模塊,兩者都應該依賴于抽象:抽象不應依賴于細節(jié)實現(xiàn),實現(xiàn)細節(jié)應該依賴與抽象。
第十一章 用戶界面設計
1、用戶界面設計原則:
a)置用戶于控制之下;b)減少用戶的記憶負擔;c)保持界面一致
第十二章 軟件實現(xiàn)
12.3軟件編碼規(guī)范(要求:會修改代碼)
注釋一般遵守以下原則:1)注釋的縮進要與相應代碼一致;2)每行注釋用至少一個空行分開;3)對于所有的常量、變量、數(shù)據(jù)結(jié)構(gòu)聲明,在聲明時都必須加以注釋,說明其含義。
4)頭文件、源文件的頭部都應進行注釋。
命名規(guī)范:類名,類型名,方法名大小寫混用,首字母大寫,分個字母大寫枚舉類型,常量名,宏名全部大寫
指針變量p
全局變量g
靜態(tài)變量s
第十三章軟件測試
1、黑盒測試:又稱為功能性測試或行為測試,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。
2、白盒測試:又稱透明測試,已知產(chǎn)品內(nèi)部工作過程,通過測試檢驗產(chǎn)品內(nèi)部動作是否按
照產(chǎn)品規(guī)格說明的規(guī)定正常進行。
3、動態(tài)測試:指通常意義上的測試,即使用和運行軟件。
4、靜態(tài)測試:指測試不運行的部分,只是靜態(tài)檢查和審核。
5、靜態(tài)黑盒測試:測試產(chǎn)品說明書屬于靜態(tài)黑盒測試。(產(chǎn)品說明書是書面文檔,而不是
可執(zhí)行程序,因此是靜態(tài)的??衫脮嫖臋n進行黑盒測試認真查找其中的缺陷)。
6、動態(tài)黑盒測試:不深入代碼細節(jié)測試軟件的方法。(它是動態(tài)的,因為程序在運行,同
時它是黑盒的。)
7、靜態(tài)白盒測試:是在不執(zhí)行軟件的條件下有條理地仔細檢查軟件設計、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過程,有時稱為結(jié)構(gòu)化分析。(這是在程序員編碼完成后立馬完成的,由程序員做的)。
8、動態(tài)白盒測試:是指利用查看代碼功能和實現(xiàn)方法得到的信息,來確定哪些需要測試、哪些不需要測試、如何展開測試。它也稱為結(jié)構(gòu)化檢測。(有軟件測試員設計和執(zhí)行)。
9、軟件測試的一般過程?各過程測試哪個方面?
單元測試:(白盒測試,一般有程序員實施)
也稱模塊測試,是針對軟件設計的最小單元程序模塊進行測試的工作。目的是發(fā)現(xiàn)模塊內(nèi)部的軟件缺陷,修改這些缺陷使其代碼能夠正確運行。
集成測試:(只能是黑盒測試)
也稱組裝測試,它的任務是按照一定的策略對單元測試的模塊進行組裝,并在組裝過程中進行模塊接口與系統(tǒng)功功能測試。
確認測試:(Alpha測試和Beta測試)
也稱有效性測試,目的是驗證軟件的有效性,即驗證軟件的功能和性能及其他
特性是否符合用戶要求。
系統(tǒng)測試:主要任務:測試軟件系統(tǒng)是否能與硬件協(xié)調(diào)工作,測試與其他軟件協(xié)調(diào)運行的情況。
第十四章 軟件維護
1、軟件維護的一般類型?(4類,最重要的是:完善性維護)
軟件維護的分類:糾錯性維護、適應性維護、完善性維護和預防性維護
第十五章軟件項目管理
1、軟件配置管理和基線的概念。
軟件過程的輸出信息可以分為3個主要類別:計算機程序,描述計算機程序的文檔,數(shù)據(jù)。這些項包含了所有在軟件過程中產(chǎn)生的信息,總稱為軟件配置。
基線:是一個軟件配置管理的概念,幫助我們在不嚴重阻礙合理變化的情況下來控制變化。定義:已經(jīng)通過正式復審和批準的某規(guī)約或產(chǎn)品,它因此可以作為進一步開發(fā)的基礎,并且只能通過正式的變化控制過程的改變。
軟件配置管理(SCM):是一套管理軟件開發(fā)和軟件維護以及各種中間軟件產(chǎn)品的方法和規(guī)則??杀灰暈閼糜谡麄€軟件過程的軟件質(zhì)量保證活動。
第四篇:軟件工程知識點總結(jié)
軟件工程是把系統(tǒng)的、有序的、可量化的方法應用到軟件的開發(fā)、運營和維護上的過程。是一門指導軟件系統(tǒng)開發(fā)的工程學科,它以計算機理論及其他學科為指導,采用工程化的概念、原理、技術(shù)和方法進行軟件的開發(fā)和維護,把經(jīng)實踐證明的學科的管理措施與最先進的技術(shù)方法結(jié)合起來,目標是以較少的投資獲取高質(zhì)量的軟件。內(nèi)容:方法與技術(shù)、工具與環(huán)境、管理技術(shù)、標準與規(guī)范。領域:軟件需求分析、軟件設計、軟件構(gòu)造、測試和維護。難題 1.復雜性 2.不可見性 3.易變性 4.服從性 5.非連續(xù)性
計算機科學中與實踐相關的部分,都和數(shù)據(jù)以及其他學科發(fā)生關系。軟件工程和人的行為、現(xiàn)實社會的需求息息相關。
發(fā)展史:1.生產(chǎn)作坊方式2.面向?qū)ο蟮姆椒?.軟件過程工程4.軟件復用和基于構(gòu)件的開發(fā) 學生做到:1.研發(fā)出符合客戶需求的軟件 2.通過一定的軟件流程,在預計的時間內(nèi)發(fā)布足夠好的軟件 3.通過數(shù)據(jù)和其他方式展現(xiàn)所開發(fā)的軟件是可以維護和繼續(xù)發(fā)展。
單元測試(好標準):1.在最基本的功能/參數(shù)上驗證程序正確性;2.由最熟悉代碼的人寫;3.測試后,機器狀態(tài)保持不變;4.要快;5.產(chǎn)生可重復、一致的結(jié)果;6.獨立性;7.覆蓋所有代碼路徑;8.集成到自動測試的框架中;9.和產(chǎn)品代碼一起保存和維護。
回歸測試:模塊出現(xiàn)退步,從正常退化到不正常狀態(tài),為了驗證新改進的代碼的正確性。個人開發(fā):計劃:估計時間(開發(fā)):.需求分析.生成設計文檔.設計復審.代碼規(guī)范.具體設計.具體編碼.代碼復審.測試;記錄用時;測試報告;計算工作量;事后總結(jié);提出改進計劃 個人在團隊中:1.通過交流實驗等方法理解問題、需求或任務2.提出多種解決辦法3.與相關角色交流解決問題的提案,決定一個可行方案4.執(zhí)行5.和其他角色合作,測試實現(xiàn)方案,修復缺陷6.對結(jié)果負責
代碼規(guī)范:代碼風格規(guī)范:1.縮進2.行寬3.括號4.斷行與空白行5.分行6.命名7.下劃線8.大小寫9.注釋
代碼設計規(guī)范:1.函數(shù)2.goto3.錯誤處理4.處理C++中的類 代碼復審目的:1.找出錯誤代碼2.發(fā)現(xiàn)邏輯錯誤3.發(fā)現(xiàn)算法錯誤4.發(fā)現(xiàn)潛在錯誤5.發(fā)現(xiàn)可能需要改進的地方6.傳授經(jīng)驗
代碼復審步驟:1.代碼成功編譯2.程序員必須測試過代碼3.程序與提出新的代碼,差異分析4.可選擇面對面復審,獨立復審5.面對面復審中,開發(fā)者控制流程,講述修改的前因后果,復審者有權(quán)打斷敘述提出自己意見7.開發(fā)者負責所有問題得到滿意解答8.達成一致意見 復審后:1.改正明顯的錯誤2.對無法解決的錯誤,記錄下來3.把所有錯誤記在“我常犯的錯誤”表中,作為以后自我復審的第一步
結(jié)對編程好處:1.在開發(fā)層次,提供更好的設計質(zhì)量和代碼質(zhì)量,解決問題能力強2.對開發(fā)人員,結(jié)對更有信心3.在企業(yè)管理層上,更有效的交流相互學習傳遞經(jīng)驗,高投入產(chǎn)出比 如何結(jié)對編程:1.駕駛員:寫設計文檔,進行編碼和單元測試2.領航員:審閱文檔、編碼;考慮單元測試的覆蓋率;思考是否需要重構(gòu);幫解決技術(shù)問題3.不斷輪換角色,不連續(xù)一小時,領航員控制時間4.主動參與5.只有水平差距,沒有級別差距6.設置好結(jié)對編程環(huán)境 團隊模式:1.主治醫(yī)師2.明星3.社區(qū)4.業(yè)余劇團5.秘密團隊6.特工7.交響樂團8.爵士樂 開發(fā)方法: 統(tǒng)一流程(RUP)業(yè)務建模.需求.分析和設計.實現(xiàn).測試.部署.配置和變更管理.項目管理.環(huán)境.敏捷開發(fā)原則:1.盡早并持續(xù)交付有價值的軟件滿足需求2.歡迎需求的變化3.經(jīng)常發(fā)布可用軟件,間隔較短4.業(yè)務員與開發(fā)人員共同工作5.以有進取心的人為核心6.面對面交流7.可用軟件是衡量項目進展的主要指標8.可持續(xù)發(fā)展9.不斷關注技術(shù)和設計10.保持簡明 敏捷流程:1.找出完成產(chǎn)品所需要做的事2.決定當前沖刺需要解決的事3.沖刺 軟件需求:1.獲取和引導需求2.分析和定義需求3.驗證需求4.在軟件產(chǎn)品的生命周期中管理需求(功能性需求.開發(fā)過程需求.非功能性需求.綜合需求)需求獲取方法:用戶調(diào)查1.焦點小組2.深入面談3.卡片分類4.調(diào)查問卷5.用戶日志研究6.人類學調(diào)查7.眼動跟蹤研究8.快速原型調(diào)研9.a/b測試
利益相關者:用戶:直接使用軟件的人;客戶:購買軟件的人;市場分析師:代表典型用戶的需求;監(jiān)管機構(gòu):符合行業(yè)和政策規(guī)定;軟件工程師:需求階段重要角色
項目經(jīng)理PM:對項目流程負責,正確的協(xié)調(diào)團隊內(nèi)部外部,調(diào)配各部門資源和時間,有效進行風險管理,保證一個項目按計劃結(jié)項。管事也管人,不一定做具體工作。應對風險:1.進一步研究2.接受3.規(guī)避4.轉(zhuǎn)移5.降低6.制定應急計劃
PM能力:1.觀察、理解和快速學習2.分析管理能力3.專業(yè)能力4.自省能力
典型用戶:名字.年齡.收入.代表的用戶在市場上的比例和重要性.典型場景.環(huán)境.生活情況.知識層次/能力.偏好
功能說明書 1.定義好相關概念2.規(guī)范好一些假設3.避免誤解,界定邊界條件4.描述主流用戶5.一些好的功能會有副作用6.服務質(zhì)量說明 功能驅(qū)動設計:1.構(gòu)造總體模型2.構(gòu)造功能列表3.制定開發(fā)計劃4.功能設計階段5.實現(xiàn)具體功能
用戶體驗:1.用戶第一印象2.從用戶角度考慮問題3.軟件服務始終要記住用戶的選擇4.短期刺激和長期影響5.不讓用戶犯簡單錯誤6.用戶體驗和質(zhì)量7.情感設計 評價標準:1.盡快提供可感觸的反饋2.系統(tǒng)界面符合用戶的現(xiàn)實慣例3.用戶有控制權(quán)4.一致性和標準化5.適合各種類型的用戶6.幫助用戶識別、診斷并修復錯誤7.有提示和幫助文檔 測試方法:1.單元測試2.代碼覆蓋率測試3.構(gòu)建驗證測試4.驗收測試5.探索式測試6.回歸測試7.場景/集成/系統(tǒng)測試8.伙伴測試9.效能測試10.壓力測試11.內(nèi)/外部公開測試
黑箱:把軟件系統(tǒng)當作一個黑箱,無法了解或使用系統(tǒng)的內(nèi)部結(jié)構(gòu)及知識。從軟件的行為而不是從內(nèi)部結(jié)構(gòu)出發(fā)來設計測試。白箱:設計者可以看到軟件系統(tǒng)的內(nèi)部結(jié)構(gòu),并使用軟件的內(nèi)部結(jié)構(gòu)和知識來選擇測試數(shù)據(jù)及具體的測試方法。
軟件質(zhì)量:1.程序的質(zhì)量2.軟件工程的質(zhì)量(開發(fā)過程可見性、風險控制、軟件內(nèi)部模塊、開發(fā)成本控制、內(nèi)部質(zhì)量指標完成情況)
如何衡量:CMMI理論:一級初始級(企業(yè)項目目標實現(xiàn)),二級管理級(對項目流程審查,保證成功),三明確級(對管理體系制度化保障完成),四量化管理級(數(shù)字化管理,流程的穩(wěn)定性),五級優(yōu)化級(充分利用信息資料,主動改善流程)
如何衡量:1.軟件CC后DCR的數(shù)量2.用戶的好評3.在CC后發(fā)現(xiàn)bug的數(shù)量4.文檔完整性和準確性5.修復bug平均時間6.單位開發(fā)量出現(xiàn)最大bug數(shù)量7.測試用例的覆蓋率8.模塊的復雜程度9.代碼的行數(shù)10.文檔的數(shù)量和復雜程度11.有多少代碼重復12.平均每天構(gòu)建失敗的次數(shù)13.實現(xiàn)了多少功能點14.軟件能運行多久,平均初次錯誤時間,無故障時間 會診:1.開發(fā)者提交參加會診的bug和修改方案2.會議決定是否同意修改方案3.執(zhí)行
IT創(chuàng)新:1.靈光一閃,創(chuàng)新及隨其后2.大家都喜歡創(chuàng)新3.好的想法會贏4.創(chuàng)新者都是一馬當先5.要成為領域的專家6.技術(shù)是創(chuàng)新的關鍵7.成功的團隊更能創(chuàng)新
團隊合作階段:1.萌芽階段2.磨合階段3.規(guī)范階段4.創(chuàng)造階段5.團隊的效能曲線和假團隊 職業(yè)道德:1.行為與公眾利益一致2.以客戶和雇主利益最大化的方式做事3.確保自己的產(chǎn)品以及修改滿足專業(yè)標準4.具備完整獨立的專業(yè)判斷5.軟件項目的經(jīng)理和領導人應提倡并親自采用復合道德規(guī)范的方法來管理軟件的開發(fā)和維護6.保證職業(yè)的誠信和榮譽7.公平對待同儕,并予以支持和幫助。
需求分析:四方面:對問題的識別、分析與綜合、制定規(guī)格說明書、評審;三原則:必須能夠表達和理解問題的數(shù)據(jù)域和功能域;必須按自頂向下、逐步分解的方式對問題進行分解和不斷細化;要給出系統(tǒng)的邏輯視圖和物理視圖。
第五篇:軟件工程復習知識點總結(jié)
1.軟件危機的概念,內(nèi)容,原因及消除的途徑; 2.軟件工程的定義,基本原理;
3.軟件工程方法學的基本概念、內(nèi)容;
4.軟件生命周期的具體內(nèi)容,每一個階段的任務是什么?結(jié)合具體的工程例子來理解做軟件項目主要分那幾個階段。
5.理解幾個典型軟件過程的內(nèi)容及其優(yōu)點與缺點:瀑布模型、增量模型、快速原型模型、螺旋模型、噴泉模型等; 6.了解可行性研究中的任務和過程;
7.掌握系統(tǒng)流程圖的概念和方法,會從具體的案例中抽象出系統(tǒng)流程圖; 8.掌握數(shù)據(jù)流圖的概念和方法,會從具體的案例中畫出0層數(shù)據(jù)流圖和功能級數(shù)據(jù)流圖;
9.掌握數(shù)據(jù)字典的內(nèi)容、方法、用戶和實現(xiàn); 10.了解成本/效益分析方法;
11.了解需求分析過程中任務是什么.12.理解面向數(shù)據(jù)流自頂向下逐步求精的方法和意義;
13.理解分析及建模的意義,需求分析中應該建立哪三種模型?有哪些工具來幫助建立這些模型?
14.掌握實體關系(E-R)圖的概念,內(nèi)容和實現(xiàn)方法,能結(jié)合具體實例建立實體關系圖;
15.掌握狀態(tài)圖的概念,內(nèi)容,實現(xiàn)方法和作用;
16.掌握層次方框圖、warnier圖、IPO圖的概念,內(nèi)容和作用; 17.有窮狀態(tài)機的概念和內(nèi)容;
18.總體設計是做什么?總體設計的過程是怎樣的?總體結(jié)構(gòu)設計的目的是什么?
19.掌握幾個設計原理,理解他們的內(nèi)容和意義;
20.掌握耦合和內(nèi)聚的概念和內(nèi)容,理解這些原理對設計有哪些指導意義; 21.耦合包含了哪些類型?每個類型的具體內(nèi)容是什么?要求能通過程序代碼識別出耦合類型。
22.啟發(fā)性規(guī)則的內(nèi)容及部分概念。23.層次圖、HIPO圖和結(jié)構(gòu)圖的內(nèi)容;
24.掌握面向數(shù)據(jù)流的設計方法,了解其中涉及到的概念(變換流,事務流),結(jié)合例子理解變換分析的具體過程。25.詳細設計是做什么? 26.什么是結(jié)構(gòu)程序設計?
27.人機界面設計問題包含哪些?
28.掌握設計過程中用到的工具:程序流程圖的概念,內(nèi)容和方法;盒圖的概念、內(nèi)容和方法;會結(jié)合實例使用這些工具;掌握PAD 圖的概念和內(nèi)容;掌握判定表的概念和內(nèi)容。要結(jié)合實例來掌握它們。
29.了解結(jié)合Jackson圖來掌握面向數(shù)據(jù)結(jié)構(gòu)的設計方法;會用Jackson程序設計方法對具體的實例進行設計。
30.掌握幾種測試:單元測試、集成測試、確認測試、白盒測試技術(shù)和黑盒測試技術(shù);掌握它們的概念,內(nèi)容和方法;
31.對每一種測試方法,理解其具體細節(jié):比如理解什么是漸增式測試和非漸增式測試,什么是Alpha測試和Beta測試.....; 32.結(jié)合G.J.Myers的觀點理解軟件測試的目的;(教材p150)33.掌握白盒測試的技術(shù)細節(jié)(比如:掌握邏輯覆蓋中的8個覆蓋點;掌握基本路徑測試,會根據(jù)過程設計結(jié)果畫出相應的流圖;會計算流圖的環(huán)形復雜度;會計算出線性獨立路徑的基本集合);掌握黑盒測試的技術(shù)細節(jié); 34.理解軟件維護的定義、特點和維護過程; 自測練習題:
一、選擇題
1.瀑布模型的存在問題是()
A.用戶容易參與開發(fā)
B.缺乏靈活性
C.用戶與開發(fā)者易溝通
D.適用可變需求
2.可行性分析是在系統(tǒng)開發(fā)的早期所做的一項重要的論證工作,它是決定該系統(tǒng)是否開發(fā)的決策依據(jù),因必須給出()的回答。
A.確定
B.行或不行
C.正確
D.無二義
3. 系統(tǒng)流程圖是用來
()
A 描繪程序結(jié)構(gòu)的 B 描繪系統(tǒng)的邏輯模型
C 表示信息層次結(jié)構(gòu)的圖形工具 D 描繪物理系統(tǒng)的 4.下列屬于維護階段的文檔是()
A.軟件規(guī)格說明
B.用戶操作手冊
C.軟件問題報告
D.軟件測試分析報告 5.軟件按照設計的要求,在規(guī)定時間和條件下達到不出故障,持續(xù)運行的要求的質(zhì)量特性稱為()
A.可用性
B.可靠性
C.正確性
D.完整性
6、快速原型模型的主要特點之一是()A.開發(fā)完畢才見到產(chǎn)品
B.及早提供全部完整的軟件產(chǎn)品 C.開發(fā)完畢后才見到工作軟件 D.及早提供工作軟件
7、軟件需求分析的主要任務是準確地定義出要開發(fā)的軟件系統(tǒng)是()A.如何做
B.怎么做 C.做什么
D.對誰做
8.若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現(xiàn)從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設計這組測試用例的方法是()
A.條件覆蓋法
B.等價分類法
C.邊界值分析法
D.錯誤推測法
9.研究開發(fā)所需要的成本和資源是屬于可行性研究中的研究的一方面。()A.技術(shù)可行性
B.經(jīng)濟可行性 C.社會可行性
D.法律可行性 10.模塊的內(nèi)聚性最高的是()A.邏輯內(nèi)聚
B.時間內(nèi)聚 C.偶然內(nèi)3 聚
D.功能內(nèi)聚
12.()是把對象的屬性和操作結(jié)合在一起,構(gòu)成一個獨立的對象,其內(nèi)部信息對外界是隱蔽的,外界只能通過有限的接口與對象發(fā)生聯(lián)系。A 多態(tài)性 B 繼承 C 封裝 D 消息
二、填空題
1.將數(shù)據(jù)流圖映射為程序結(jié)構(gòu)時, 所用映射方法涉及信息流的類型。其信息流分為 和 兩種類型。
2.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的_ _____兩部分組成。3.軟件由程序、、組成。
4.在學校中,一個學生可以選修多門課程,一門課程可以由多個學生選修,那么學生和課程之間是
關系。
5.軟件工程釆用層次化的方法,每個層次都包括、方法、三要素。6.一個模塊擁有的直屬下級模塊的個數(shù)稱為,一個模塊的直接上級模塊的個數(shù)稱為。
三、名詞解釋題 1.內(nèi)聚性 2.軟件危機 3.完善性維護 4.數(shù)據(jù)字典 5.程序流圖 6.驅(qū)動程序 7.數(shù)據(jù)耦合 8.類圖
9.Alpha測試與Beta測試 10.軟件產(chǎn)品
四、簡答題
1.黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷哪幾類錯誤? 2.瀑布模型、增量模型的優(yōu)缺點
3.程序流程圖或者盒圖的5種基本結(jié)構(gòu)的畫法 4.簡述過程設計語言(PDL)的特點。
5.根據(jù)特定的項目,你會考慮哪些因素來選擇合適的程序設計語言。6.(教材P141)畫出下列偽碼程序的程序流程圖和盒圖 START IF p THEN WHILE q DO f END DO ELSE BLOCK 4 g n END BLOCK END IF STOP 7.(教材P141)研究下面的PDL語言(過程設計語言,也稱偽碼程序): LOOP: Set I to(START + FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)
五、綜合題(三題分別5,7,8分,共20分)
1.某培訓中心要研制一個計算機管理系統(tǒng)。它的業(yè)務是: 將學員發(fā)來的信件收集分類后,按幾種不同的情況處理。
如果是報名的,則將報名數(shù)據(jù)送給負責報名事務的職員,他們將查閱課程文件,檢查該課程是否額滿,然后在學生文件、課程文件上登記,并開出報告單交財務部門,財務人員開出發(fā)票給學生。
如果是想注銷原來已選修的課程,則由注銷人員在課程文件、學生文件和帳目文件上做相應的修改,并給學生注銷單。
3)如果是付款的,則由財務人員在帳目文件上登記,也給學生一張收費收據(jù)。要求:
(1).對以上問題畫出功能級數(shù)據(jù)流程圖。(2).畫出該培訓管理的軟件結(jié)構(gòu)圖。
2.某旅館的電話服務如下:
可以撥分機號和外線號碼。分機號是從7201至7299。外線號碼先撥9,然后是市話號碼或長話號碼。長話號碼是以區(qū)號和市話號碼組成。區(qū)號是從100到300中任意的數(shù)字串。市話號碼是以局號和分局號組成。局號可以是455,466,888,552中任意一個號碼。分局號是任意長度為4的數(shù)字串。
要求:寫出在數(shù)據(jù)字典中,電話號碼的數(shù)據(jù)條目的定義即組成。
3.軟件測試的過程包括哪些?黑盒測試與白盒測試的具體內(nèi)容是什么?它們分別針對哪幾類錯誤?
一.集成測試中自頂向下集成和自底向上集成的優(yōu)缺點?
1、自頂向下集成 優(yōu)點:較早地驗證了主要控制和判斷點;按深度優(yōu)先可以首先實現(xiàn)和驗證一個完整的軟件功能;功能較早證實,帶來信心;只需一個驅(qū)動,減少驅(qū)動器開發(fā)的費用;支持故障隔離。
缺點:柱的開發(fā)量大;底層驗證被推遲;底層組件測試不充分。適應于產(chǎn)品控制結(jié)構(gòu)比較清晰和穩(wěn)定;高層接口變化較??;底層接口未定義或經(jīng)常可能被修改;產(chǎn)口控制組件具有較大的技術(shù)風險,需要盡早被驗證;希望盡早能看到產(chǎn)品的系統(tǒng)功能行為。
2、自底向上集成
優(yōu)點:對底層組件行為較早驗證;工作最初可以并行集成,比自頂向下效率高;減少了樁的工作量;支持故障隔離。
缺點:驅(qū)動的開發(fā)工作量大;對高層的驗證被推遲,設計上的錯誤不能被及時發(fā)現(xiàn)。
適應于底層接口比較穩(wěn)定;高層接口變化比較頻繁;底層組件較早被完成。
二.簡述螺旋模型的基本開發(fā)過程。正確答案
(1)需求定義。利用需求分析技術(shù)理解應用領域,獲取初步的用戶需求,制定項目開發(fā)計劃。
(2)風險分析。根據(jù)初始需求或改進意見評審可選用的方案,給出消除或減少風險的途徑。
(3)工程實現(xiàn)。利用快速原型構(gòu)造方法針對已知的用戶需求生成快速原型。(4)評審。將原型提交用戶使用并征詢用戶改進意見。
上述過程將不斷迭代,直至給出用戶滿意的目標軟件產(chǎn)品。
三.一般而言,衡量某種程序語言是否適合于特定的項目,應考慮哪些因素?(1)應用領域;(2)算法和計算復雜性;(3)軟件運行環(huán)境;(4)用戶需求中關于性能方面的需要;(5)數(shù)據(jù)結(jié)構(gòu)的復雜性;(6)軟件開發(fā)人員的知識水平;(7)可用的編譯器與交叉編譯器。
四.名詞解釋:
軟件危機是指落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象
軟件質(zhì)量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發(fā)標準、以及所有專業(yè)開發(fā)的軟件都應具有的和隱含特征相一致的程度。
恢復測試是指采取各種人工干預方式強制性地使軟件出錯,使其不能正常工作,6 進而檢驗系統(tǒng)的恢復能力。
類圖(Class diagram)是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類、類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關系等
數(shù)據(jù)耦合指兩個模塊之間有調(diào)用關系,傳遞的是簡單的數(shù)據(jù)值,相當于高級語言的值傳遞