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