软件工程导论习题
軟件工程導(dǎo)論習(xí)題
- 第一章 軟件工程學(xué)概述
- 第二章 可行性研究
- 分層DFD圖
- 畫DFD圖的步驟
- 第三章 需求分析
- 第五章 總體設(shè)計(jì)
- 測(cè)試題目
第一章 軟件工程學(xué)概述
1.軟件生命周期 一般包括:軟件開發(fā)期和軟件運(yùn)行期,下述____不是軟件開發(fā)期所應(yīng)包含的內(nèi)容( D)
A、需求分析
B、結(jié)構(gòu)設(shè)計(jì)
C、程序編制
D、軟件維護(hù)
解析:軟件生命周期由軟件定義、軟件開發(fā)和運(yùn)行維護(hù)(也稱為軟件維護(hù))3個(gè)時(shí)期組成,每個(gè)時(shí)期又進(jìn)一步劃分成若干個(gè)階段。軟件定義時(shí)期的任務(wù)是: 確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并且制定工程進(jìn)度表。這個(gè)時(shí)期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員負(fù)責(zé)完成。軟件定義時(shí)期通常進(jìn)一步劃分成3個(gè)階段,即問題定義、可行性研究和需求分析。開發(fā)時(shí)期具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件,它通常由下述4個(gè)階段組成:總體設(shè)計(jì)(需求分析),詳細(xì)設(shè)計(jì)(結(jié)構(gòu)設(shè)計(jì)),編碼和單元測(cè)試,綜合測(cè)試(程序編制)。其中前兩個(gè)階段又稱為系統(tǒng)設(shè)計(jì),后兩個(gè)階段又稱為系統(tǒng)實(shí)現(xiàn)。維護(hù)時(shí)期的主要任務(wù)是使軟件持久地滿足用戶的需要。
2.軟件生命周期是指一個(gè)軟件從_______開始直到該軟件最終退役為止的整個(gè)時(shí)期。C
A、開發(fā)
B、需求
C、定義
D、構(gòu)想
解析:軟件生存周期是指從軟件定義、開發(fā)、使用、維護(hù)到淘汰的全過程。
3.軟件危機(jī)是指在計(jì)算機(jī)軟件的( )過程中所遇到的一系列嚴(yán)重問題。B
A、設(shè)計(jì)
B、開發(fā)和維護(hù)
C、應(yīng)用
D、需求分析
解析:軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。
4.以下( )不屬于軟件危機(jī)的表現(xiàn)。D
A、對(duì)軟件開發(fā)成本和進(jìn)度估計(jì)不準(zhǔn)確。
B、軟件的文檔不全。
C、軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占比例逐年上升。
D、軟件開發(fā)生產(chǎn)率提高很快。
解析:軟件危機(jī)的典型表現(xiàn):
對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確
用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生
軟件產(chǎn)品的質(zhì)量往往靠不住。
軟件常常是不可維護(hù)的
軟件通常沒有適當(dāng)?shù)奈臋n資料。
軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。
軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。
D沒說全
5.以下( )不是產(chǎn)生軟件危機(jī)的原因。A
A、軟件也是商品
B、軟件不同與其他的普通實(shí)物商品
C、沒有弄清楚需求就著手編寫程序
D、程序人員錯(cuò)誤的認(rèn)知
解析:產(chǎn)生軟件危機(jī)的原因:
與軟件本身特點(diǎn)有關(guān):
1.軟件不同于硬件.管理和控制軟件開發(fā)過程相當(dāng)困難
2.軟件在運(yùn)行過程中不會(huì)因?yàn)槭褂脮r(shí)間過長(zhǎng)而被用壞如果運(yùn)行中發(fā)現(xiàn)了錯(cuò)誤,很可能是遇到了一個(gè)在開發(fā)時(shí)期引入的在測(cè)試階段沒能檢測(cè)出來的錯(cuò)誤。
3.軟件不同于一般程序,它的一個(gè)顯著特點(diǎn)是規(guī)模龐大,而且程序復(fù)雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。
4.事實(shí)上,對(duì)用戶要求沒有完整準(zhǔn)確的認(rèn)識(shí)就匆忙著手編寫程序是許多軟件開發(fā)工程失敗的主要原因之一。
5.目前相當(dāng)多的軟件專業(yè)人員對(duì)軟件開發(fā)和維護(hù)還有不少糊涂觀念。在實(shí)踐過程中或多或少地采用了錯(cuò)誤的方法和技術(shù),這可能是使軟件問題發(fā)展成軟件危機(jī)的主要原因。
6.錯(cuò)誤的認(rèn)識(shí)和做法主要表現(xiàn)為忽視軟件需求分析的重要性,認(rèn)為軟件開發(fā)就是寫程序并設(shè)法使之運(yùn)行,輕視軟件維護(hù)等
軟件開發(fā)與維護(hù)的方法不正確有關(guān):
1.只重視程序而忽視軟件配置其余成分的糊涂觀念。
2.軟件開發(fā)人員在定義時(shí)期沒有正確全面地理解用戶需求,直到測(cè)試階段或軟件交付使用后才發(fā)現(xiàn)“已完成的”軟件不完全符合用戶的需要。
3.嚴(yán)重的問題是在軟件開發(fā)的不同階段進(jìn)行修改需要付出的代價(jià)是很不相同的,如下圖所示。
本題軟件危機(jī)與軟件是不是商品并沒有關(guān)系,B是有關(guān)于軟件本身的特點(diǎn),C、D分別對(duì)應(yīng)4、6點(diǎn)
6.以下描述錯(cuò)誤的是:D
A、隨著時(shí)間的推移,越往后發(fā)現(xiàn)錯(cuò)誤,修復(fù)錯(cuò)誤成本越大。
B、軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。
C、軟件開發(fā)項(xiàng)目是團(tuán)隊(duì)協(xié)同配合、共同體完成。
D、軟件開發(fā)比軟件測(cè)試更重要。
解析:軟件開發(fā)與軟件測(cè)試同等重要
7.軟件工程的基本原理包括:D
A、用分階段的生命周期計(jì)劃嚴(yán)格管理;堅(jiān)持進(jìn)行階段評(píng)審
B、實(shí)行嚴(yán)格的產(chǎn)品控制;采用現(xiàn)代程序設(shè)計(jì)技術(shù)
C、結(jié)果應(yīng)能清楚地審查;開發(fā)小組的人員應(yīng)該少而精;承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
D、以上都對(duì)
解析:軟件工程的基本原理:
1、用分階段的生命周期計(jì)劃嚴(yán)格管理
2、堅(jiān)持進(jìn)行階段評(píng)審
3、實(shí)行嚴(yán)格的產(chǎn)品控制
4、采用現(xiàn)代程序設(shè)計(jì)技術(shù)
5、結(jié)果應(yīng)能清楚地審查
6、開發(fā)小組的人員應(yīng)該少而精
7、承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
8.軟件工程方法學(xué)包含3個(gè)要素,這3個(gè)要素不包括( )A
A、測(cè)試
B、方法
C、工具
D、過程
解析:軟件工程方法學(xué):
方法:完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問題
工具:為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境
過程:為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟
9.目前使用最廣泛的軟件工程方法學(xué)是傳統(tǒng)方法學(xué)和( B )
A、面向過程方法學(xué)
B、面向?qū)ο蠓椒▽W(xué)
C、面向結(jié)果方法學(xué)
D、面向測(cè)試方法學(xué)
解析:軟件工程方法學(xué):
1、傳統(tǒng)方法學(xué):傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。它采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。
2、面向?qū)ο蠓椒▽W(xué):與傳統(tǒng)方法相反,面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成是同等重要的,它是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來的方法。
10.軟件工程中應(yīng)用最廣泛的模型是(A )
A、瀑布模型
B、增量模型
C、螺旋模型
D、噴泉模型
解析:1.瀑布模型一直是唯一被廣泛采用的生命周期模型,現(xiàn)在它仍然是軟件工程中應(yīng)用得最廣泛的過程模型。如下圖所示為傳統(tǒng)的瀑布模型
傳統(tǒng)的瀑布模型
按照傳統(tǒng)的瀑布模型開發(fā)軟件,有下述的幾個(gè)特點(diǎn)。
a)階段間具有順序性和依賴性:
兩重含義: ①必須等前一階段的工作完成之后,才能開始后一階段的工作; ②前一階段的輸出文檔就是后一階段的輸入文檔,因此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結(jié)果。
b) 推遲實(shí)現(xiàn)的觀點(diǎn)
瀑布模型在編碼之前設(shè)置了系統(tǒng)分析與系統(tǒng)設(shè)計(jì)的各個(gè)階段,分析與設(shè)計(jì)階段的基本任務(wù)規(guī)定,在這兩個(gè)階段主要考慮目標(biāo)系統(tǒng)的邏輯模型,不涉及軟件的物理實(shí)現(xiàn)。
c) 質(zhì)量保證的觀點(diǎn):
軟件工程的基本目標(biāo)是優(yōu)質(zhì)、高產(chǎn)。為了保證所開發(fā)的軟件的質(zhì)量,在瀑布模型的每個(gè)階段都應(yīng)堅(jiān)持兩個(gè)重要做法。
每個(gè)階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務(wù)。
每個(gè)階段結(jié)束前都要對(duì)所完成的文檔進(jìn)行評(píng)審,以便盡早發(fā)現(xiàn)問題,改正錯(cuò)誤。
瀑布模型有許多優(yōu)點(diǎn):
可強(qiáng)迫開發(fā)人員采用規(guī)范的方法(例如,結(jié)構(gòu)化技術(shù));
嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;
要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。
2.增量模型:增量模型也稱為漸增模型。使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。每個(gè)構(gòu)件由多個(gè)相互作用的模塊構(gòu)成,并且能夠完成特定的功能。使用增量模型時(shí),第一個(gè)增量構(gòu)件往往實(shí)現(xiàn)軟件的基本需求,提供最核心的功能。
優(yōu)點(diǎn):能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。
逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。
使用增量模型的困難:在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。
必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡(jiǎn)單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。
風(fēng)險(xiǎn)更大的增量模型:
3.螺旋模型螺旋模型的基本思想是,使用原型及其他方法來盡量降低風(fēng)險(xiǎn)。理解這種模型的一個(gè)簡(jiǎn)便方法,是把它看作在每個(gè)階段之前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型。
完整的螺旋模型
4.噴泉模型:“噴泉”這個(gè)詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。迭代是軟件開發(fā)過程中普遍存在的一種內(nèi)在屬性。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí),工作重點(diǎn)應(yīng)該放在生命周期中的分析階段。
圖中代表不同階段的圓圈相互重疊,這明確表示兩個(gè)活動(dòng)之間存在交迭;
圖中在一個(gè)階段內(nèi)的向下箭頭代表該階段內(nèi)的迭代(或求精)。
圖中較小的圓圈代表維護(hù),圓圈較小象征著采用了面向?qū)ο蠓缎椭缶S護(hù)時(shí)間縮短了。
第二章 可行性研究
1.DFD中的每個(gè)加工至少有______。 (B )
A、一個(gè)輸入流或一個(gè)輸出流
B、一個(gè)輸入流和一個(gè)輸出流
C、一個(gè)輸入流
D、一個(gè)輸出流
解析:DFD圖:數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。
分層DFD圖
如果系統(tǒng)的規(guī)模較大,僅用一個(gè)DFD圖難以描述,會(huì)使得系統(tǒng)變得復(fù)雜、龐大而又難以理解。為了降低系統(tǒng)的復(fù)雜性,一般采取“逐層分解”的方法,繪制分層的DFD圖。
- 繪制分層DFD圖的原則一般是:先全局后局部,先整體后細(xì)節(jié),先抽象后具體。
- 繪制分層DFD圖的步驟一般是
- 先確定整個(gè)系統(tǒng)的范圍和功能,繪制頂層的DFD圖。
- 繪制出頂層的DFD圖之后,然后逐層分解頂層DFD圖,獲得若干中間層DFD圖。
- 根據(jù)獲得的中間層DFD圖繪制各個(gè)底層的DFD圖。
畫DFD圖的步驟
注意事項(xiàng)
- 命名。不論數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)還是加工,合適的命名使人們易于理解其含義。
- 畫數(shù)據(jù)流而不是控制流。數(shù)據(jù)流反映系統(tǒng)“做什么”,不反映“如何做”,因此箭頭上的數(shù)據(jù)流名稱只能是名詞或名詞短語(yǔ),整個(gè)圖中不反映加工的執(zhí)行順序。
- 一般不畫物質(zhì)流。數(shù)據(jù)流反映能用計(jì)算機(jī)處理的數(shù)據(jù),并不是實(shí)物,因此對(duì)目標(biāo)系統(tǒng)的數(shù)據(jù)流圖一般不要畫物質(zhì)流。
- 每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流,反映出此加工數(shù)據(jù)的來源與加工的結(jié)果。
- 編號(hào)。如果一張數(shù)據(jù)流圖中的某個(gè)加工分解成另一張數(shù)據(jù)流圖時(shí),則上層圖為父圖,直接下層圖為子圖。子圖及其所有的加工都應(yīng)編號(hào)。
- 父圖與子圖的平衡。子圖的輸入輸出數(shù)據(jù)流同父圖相應(yīng)加工的輸入輸出數(shù)據(jù)流必須一致,此即父圖與子圖的平衡。
- 局部數(shù)據(jù)存儲(chǔ)。當(dāng)某層數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ)不是父圖中相應(yīng)加工的外部接口,而只是本圖中某些加工之間的數(shù)據(jù)接口,則稱這些數(shù)據(jù)存儲(chǔ)為局部數(shù)據(jù)存儲(chǔ)。
- 提高數(shù)據(jù)流圖的易懂性。注意合理分解,要把一個(gè)加工分解成幾個(gè)功能相對(duì)獨(dú)立的子加工,這樣可以減少加工之間輸入、輸出數(shù)據(jù)流的數(shù)目,增加數(shù)據(jù)流圖的可理解性。
2.數(shù)據(jù)字典(DD)是定義( A )系統(tǒng)描述工具中的數(shù)據(jù)的工具。
A、數(shù)據(jù)流程圖
B、系統(tǒng)流程圖
C、程序流程圖
D、軟件結(jié)構(gòu)圖
解析:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流程圖中包含的所有元素的定義的集合。
3.在數(shù)據(jù)流圖中,橢圓O代表__________。 ( C)
A、源點(diǎn)
B、終點(diǎn)
C、處理
D、模塊
解析:數(shù)據(jù)流四中基本符號(hào):
正方形表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)
圓角矩形代表變換數(shù)據(jù)的處理
開口矩形代表數(shù)據(jù)存儲(chǔ)
箭頭表示數(shù)據(jù)流,即特定數(shù)據(jù)的流動(dòng)方向
4.數(shù)據(jù)字典中,一般不包括下列哪個(gè)選項(xiàng)( D )。
A、數(shù)據(jù)流
B、數(shù)據(jù)存儲(chǔ)
C、加工
D、源點(diǎn)與終點(diǎn)
解析:一般說來,數(shù)據(jù)字典應(yīng)該由對(duì)下列4類元素的定義組成。處理=加工,沒有源點(diǎn)與終點(diǎn)
數(shù)據(jù)元素的別名就是該元素的其他等價(jià)的名字,出現(xiàn)別名主要有下述3個(gè)原因:
對(duì)于同樣的數(shù)據(jù),不同的用戶使用了不同的名字。
一個(gè)分析員在不同時(shí)期對(duì)同一個(gè)數(shù)據(jù)使用了不同的名字。
兩個(gè)分析員分別分析同一個(gè)數(shù)據(jù)流時(shí),使用了不同的名字。
由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述3種基本類型:
順序即以確定次序連接兩個(gè)或多個(gè)分量。
選擇即從兩個(gè)或多個(gè)可能的元素中選取一個(gè)。
重復(fù)即把指定的分量重復(fù)零次或多次。
數(shù)據(jù)字典的用途:
數(shù)據(jù)字典最重要的用途是作為分析階段的工具
數(shù)據(jù)字典中包含的每個(gè)數(shù)據(jù)元素的控制信息是很有價(jià)值的
數(shù)據(jù)字典是開發(fā)數(shù)據(jù)庫(kù)的第一步,而且是很有價(jià)值的一步。
5.在數(shù)據(jù)流圖中,有名字及方向的成分是________. ( C)
A、控制流
B、信息流
C、數(shù)據(jù)流
D、信號(hào)流
解析:箭頭表示數(shù)據(jù)流,即特定數(shù)據(jù)的流動(dòng)方向
6.數(shù)據(jù)字典最基本的功能是( C )。
A、數(shù)據(jù)庫(kù)設(shè)計(jì)
B、數(shù)據(jù)通訊
C、數(shù)據(jù)定義
D、數(shù)據(jù)維護(hù)
解析:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流程圖中包含的所有元素的定義的集合。
從定義可以看出來是對(duì)定義的集合那么他最基本的功能其實(shí)也就是數(shù)據(jù)定義。數(shù)據(jù)字典是指對(duì)數(shù)據(jù)的數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理邏輯、外部實(shí)體等進(jìn)行定義和描述,其目的是對(duì)數(shù)據(jù)流程圖中的各個(gè)元素做出詳細(xì)的說明
7.數(shù)據(jù)字典是對(duì)數(shù)據(jù)定義信息的集合,它所定義的對(duì)象都包含于___.( A)
A、數(shù)據(jù)流圖
B、程序框圖
C、軟件結(jié)構(gòu)
D、方框圖
解析:見上題定義
8.可行性研究要進(jìn)行一次______需求分析。( C)
A、詳細(xì)的
B、全面的
C、簡(jiǎn)化的、壓縮的
D、徹底的
解析:可行性研究是在項(xiàng)目建議書被批準(zhǔn)后,對(duì)項(xiàng)目在技術(shù)上和經(jīng)濟(jì)上是否可行所進(jìn)行的科學(xué)分析和論證,它需要進(jìn)行一次簡(jiǎn)化的、壓縮的需求分析。軟件工程導(dǎo)論第六版第二章導(dǎo)論也說了:必須時(shí)刻記住,可行性研究的目的不是解決問題,而是確定問題是否值得去解決。怎樣達(dá)到這個(gè)目的呢?當(dāng)然不能靠主觀猜想而只能靠客觀分析。必須分析幾種主要的可能解法的利弊,從而判斷原定的系統(tǒng)規(guī)模和
目標(biāo)是否現(xiàn)實(shí),系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度。因此,可行性研究實(shí)質(zhì)上是要進(jìn)行一次大大壓縮簡(jiǎn)化了的系統(tǒng)分析和設(shè)計(jì)的過程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程。
第三章 需求分析
1.軟件需求說明書的作用不應(yīng)包括_______。(D )
A、軟件設(shè)計(jì)的依據(jù)
B、用戶與開發(fā)人員對(duì)軟件要做什么的共同理解
C、軟件驗(yàn)收的依據(jù)
D、軟件可行性研究的依據(jù)
解析:軟件需求說明書(軟件規(guī)格說明書):對(duì)所開發(fā)軟件的功能、性能、用戶界面及運(yùn)行環(huán)境等作出詳細(xì)的說明。它是在用戶與開發(fā)人員雙方對(duì)軟件需求取得共同理解并達(dá)成協(xié)議的條件下編寫的,也是實(shí)施開發(fā)工作的基礎(chǔ)。該說明書應(yīng)給出數(shù)據(jù)邏輯和數(shù)據(jù)采集的各項(xiàng)要求,為生成和維護(hù)系統(tǒng)數(shù)據(jù)文件做好準(zhǔn)備。它的作用是作為用戶和軟件開發(fā)人員達(dá)成的技術(shù)協(xié)議書,作為著手進(jìn)行設(shè)計(jì)工作的基礎(chǔ)和依據(jù),系統(tǒng)開發(fā)完成以后,為產(chǎn)品的驗(yàn)收提供了依據(jù)。
需求說明書是由開發(fā)人員經(jīng)需求分析后形成的軟件文檔,是對(duì)需求分析工作的全面總結(jié)。其作用有以下幾點(diǎn)。
(1)便于用戶、分析人員和軟件設(shè)計(jì)人員進(jìn)行理解和交流,用戶通過需求規(guī)格說明書在分析階段即可初步判定目標(biāo)軟件能否滿足其原來的期望,設(shè)計(jì)人員則將需求規(guī)格說明書作為軟件設(shè)計(jì)的基本出發(fā)點(diǎn)。
(2)支持目標(biāo)軟件系統(tǒng)的確認(rèn)
在軟件的測(cè)試階段,根據(jù)需求說明書中確定的可測(cè)試標(biāo)準(zhǔn)設(shè)計(jì)測(cè)試用例,確認(rèn)軟件是否滿足需求說明書中規(guī)定的功能和性能等。
(3)控制系統(tǒng)進(jìn)化過程
在需求分析完成之后,如果用戶追加需求,那么需求說明書將用于確定是否為新需求。
2.軟件需求分析一般應(yīng)確定的是用戶對(duì)軟件的__________.(D )
A、功能需求
B、非功能需求
C、性能需求
D、功能需求和非功能需求
解析:軟件需求中需構(gòu)造一個(gè)完全的系統(tǒng)邏輯模型,理用戶出的每一功能性能求,使用戶明確自己的任務(wù)。因此,需求應(yīng)確定用戶對(duì)軟件的功能需求 和非功能需求。
3.需求分析是_______.(A )
A、軟件開發(fā)工作的基礎(chǔ)
B、軟件編碼的開始
C、由系統(tǒng)分析員單獨(dú)完成的
D、由用戶自己?jiǎn)为?dú)完成的
解析:需求分析也稱為軟件需求分析、系統(tǒng)需求分析或需求分析工程等,是開發(fā)人員經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么的過程。軟件需求分析是一個(gè)項(xiàng)目的開端,也是項(xiàng)目實(shí)施最重要的關(guān)鍵點(diǎn)。
4.需求分析中,開發(fā)人員要從用戶那里解決的最重要的問題是_____。(A )
A、讓軟件做什么
B、要給軟件提供哪些信息
C、要求軟件工作效率怎樣
D、讓軟件具有何種結(jié)構(gòu)
5.軟件需求規(guī)格說明書的內(nèi)容不應(yīng)包括對(duì)_______的描述。( B)
A、主要功能
B、算法的詳細(xì)過程
C、用戶界面及運(yùn)行環(huán)境
D、軟件的性能
解析:軟件需求說明書是指在研究用戶要求的基礎(chǔ)上,完成可行性分析和投資效益分析以后,由軟件工程師或分析員編寫的說明書。它詳細(xì)定義了信息流和界面,功能需求,設(shè)計(jì)要求和限制,測(cè)試準(zhǔn)則和質(zhì)量保證要求。它的作用是作為用戶和軟件開發(fā)人員達(dá)成的技術(shù)協(xié)議書,作為著手進(jìn)行設(shè)計(jì)工作的基礎(chǔ)和依據(jù),系統(tǒng)開發(fā)完成以后,為產(chǎn)品的驗(yàn)收提供了依據(jù)。
軟件需求說明書的內(nèi)容應(yīng)包含如下幾部分內(nèi)容:
1.概述
·說明開發(fā)軟件系統(tǒng)的目的、意義和背景
·說明用戶的特點(diǎn)、約束
2.需求說明
·功能說明,逐項(xiàng)列出各功能需求的序號(hào)、名稱和簡(jiǎn)要說明
·性能說明,說明處理速度、響應(yīng)時(shí)間、精度等
·輸入輸出要求·數(shù)據(jù)管理要求·故障處理要求
3.數(shù)據(jù)描述
·數(shù)據(jù)流圖·數(shù)據(jù)字典·接口說明
4.運(yùn)行環(huán)境規(guī)定
·說明軟件運(yùn)行所需的硬件設(shè)備
·說明軟件運(yùn)行所需的系統(tǒng)軟件和軟件工具
5.限制
·說明軟件開發(fā)在成本、進(jìn)度、設(shè)計(jì)和實(shí)現(xiàn)方面的限制。
6.需求分析最終結(jié)果是產(chǎn)生_______。( C)
A、項(xiàng)目開發(fā)計(jì)劃
B、可行性分析報(bào)告
C、需求規(guī)格說明書
D、設(shè)計(jì)說明書
7.軟件需求分析是保證軟件質(zhì)量的重要步驟,它的實(shí)施應(yīng)該是在__C__。
A、編碼階段
B、軟件開發(fā)全過程
C、軟件定義階段
D、軟件設(shè)計(jì)階段
解析:在軟件技術(shù)人員著手設(shè)計(jì)軟件之前,需要由既精通計(jì)算機(jī)技術(shù)又 熟悉用戶應(yīng)用領(lǐng)域的軟件系統(tǒng)分析人員,對(duì)軟件問題進(jìn)行細(xì)致的需求分析。 需求分析是軟件工程過程中一個(gè)重要的里程碑。在需求分析過程中,軟件系統(tǒng)分析人員通 過研究用戶在軟件問題上的需求意愿,分析出軟件系統(tǒng)在功能、性能、數(shù)據(jù)等諸多方面應(yīng)該達(dá) 到的目標(biāo),從而獲得有關(guān)軟件的需求規(guī)格定義
8.在結(jié)構(gòu)化的分析方法中,用實(shí)體關(guān)系圖表達(dá)系統(tǒng)中的對(duì)象及其關(guān)系,在實(shí)體關(guān)系圖中,表達(dá)對(duì)象的實(shí)例關(guān)系之間的關(guān)聯(lián)有三種類型是(ABD )。
A、一對(duì)一聯(lián)系
B、多對(duì)多聯(lián)系
C、不確定
D、一對(duì)多聯(lián)系
解析:為了開發(fā)復(fù)雜的系統(tǒng),應(yīng)從不同角度(模型)抽象出目標(biāo)系統(tǒng)的特性(數(shù)據(jù)模型、功能模型、行為模型)。
模型種類數(shù)據(jù)模型:E-R圖功能模型:數(shù)據(jù)流圖行為模型:狀態(tài)轉(zhuǎn)換圖數(shù)據(jù)字典:描述出現(xiàn)在上面三種模型中的數(shù)據(jù)對(duì)象及控制信息的特性,給出準(zhǔn)確定義。
實(shí)體-聯(lián)系圖
數(shù)據(jù)對(duì)象可以是外部實(shí)體、事物、行為、事件、角色、單位、地點(diǎn)、結(jié)構(gòu)等。
屬性定義了數(shù)據(jù)對(duì)象的性質(zhì)。
聯(lián)系(1)一對(duì)一聯(lián)系(1:1)(2)一對(duì)多聯(lián)系(1:N)(3)多對(duì)多聯(lián)系(M:N)
9.結(jié)構(gòu)化設(shè)計(jì)是一種應(yīng)用最廣泛的系統(tǒng)設(shè)計(jì)方法,是以__B__為基礎(chǔ),自頂向下,求精和模塊化的過程。
A、數(shù)據(jù)庫(kù)
B、數(shù)據(jù)流圖
C、數(shù)據(jù)結(jié)構(gòu)
D、系統(tǒng)模塊
解析:面向數(shù)據(jù)流自頂向下求精 。借助數(shù)據(jù)流圖、數(shù)據(jù)字典、IPO圖等,細(xì)化、完善詳細(xì)的數(shù)據(jù)流圖,等到各處理環(huán)節(jié)對(duì)應(yīng)的功能。
需求分析大佬博客地址:https://www.cnblogs.com/youcong/p/9500873.html
第五章 總體設(shè)計(jì)
1.最高程度也是最差的耦合是________.(B )
A、公共耦合
B、內(nèi)容耦合
C、控制耦合
D、數(shù)據(jù)耦合
解析:
2.模塊內(nèi)聚度越高,說明模塊內(nèi)各成分彼此結(jié)合的程度越_______.(B )
A、松散
B、緊密
C、無法判斷
D、相等
解析:軟件設(shè)計(jì)應(yīng)追求盡可能松散耦合,避免強(qiáng)耦合,這樣模塊間的聯(lián)系就越小,模塊的獨(dú)立性就越強(qiáng),對(duì)模塊的測(cè)試、維護(hù)就越容易。
內(nèi)聚:衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度
3.在下列耦合中,最低程度的偶合是(C )
A、內(nèi)容偶合
B、公共偶合
C、數(shù)據(jù)偶合
D、控制耦合
解析:數(shù)據(jù)耦合 :兩個(gè)模塊之間只是通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。 數(shù)據(jù)耦合是最低程度的耦合。
控制耦合 :兩個(gè)模塊之間所交換的信息包含控制信息。 控制耦合是中等程度的耦合。
公共耦合 :兩個(gè)或多個(gè)模塊通過一個(gè)公共區(qū)相互作用時(shí)的耦合。 公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理設(shè)備等。 軟件結(jié)構(gòu)中存在大量的公共耦合時(shí)會(huì)給診斷錯(cuò)誤帶來困難。
內(nèi)容耦合 : 一個(gè)模塊與另一個(gè)模塊的內(nèi)容直接發(fā)生聯(lián)系。 內(nèi)容耦合對(duì)維護(hù)會(huì)帶來嚴(yán)重的困難。
4.一個(gè)模塊把數(shù)值作為參數(shù)傳送給另一個(gè)模塊,這種耦合方式稱為( A)
A、數(shù)據(jù)耦合
B、公共耦合
C、控制耦合
D、標(biāo)記耦合
解析:標(biāo)記耦合(特征耦合):當(dāng)把整個(gè)數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素時(shí),這種情況稱為標(biāo)記耦合。
數(shù)據(jù)耦合指兩個(gè)模塊之間有調(diào)用關(guān)系,傳遞的是簡(jiǎn)單的數(shù)據(jù)值,相當(dāng)于高級(jí)語(yǔ)言的值傳遞.數(shù)據(jù)耦合聯(lián)系簡(jiǎn)單,耦合度低,模塊獨(dú)立性好,模塊間的影響最小,是最理想的一種耦合形式。
5.原型化方法是用戶和設(shè)計(jì)者之間執(zhí)行的一種交互構(gòu)成,適用于( A )系統(tǒng)。
A、需求不確定性高的
B、需求確定的
C、管理信息
D、實(shí)時(shí)
解析:原型不同于最終系統(tǒng),它只實(shí)現(xiàn)所選擇的部分功能,僅是為了試驗(yàn)或是演示而用,部分功能需求可以忽略或者模擬實(shí)現(xiàn),因此適用于需求不確定性高的系統(tǒng)
6.銀行計(jì)算機(jī)儲(chǔ)蓄管理信息系統(tǒng)中,根據(jù)客戶提出的要求(如存款、取款、查詢、掛失、咨詢等)進(jìn)行相應(yīng)的業(yè)務(wù)處理的該層數(shù)據(jù)流圖是______。B
A、變換型
B、事務(wù)性
C、既不是變換型也不是事務(wù)型
D、不確定
解析:變換流 :具有較明確的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。 如圖所示,該變換中心可以理解為數(shù)據(jù)的加工和處理程序。
事務(wù)流:事務(wù)型數(shù)據(jù)流圖中存在一個(gè)事務(wù)中心(也就是數(shù)據(jù)處理、加工中心),它將輸入分離成若干個(gè)發(fā)散的數(shù)據(jù)流,形成許多活動(dòng)路徑,并根據(jù)輸入值選擇其中一條路徑。
題干中根據(jù)客戶提出的要求(如存款、取款、查詢、掛失、咨詢等)進(jìn)行相應(yīng)的業(yè)務(wù)處理很明顯是存在一個(gè)事務(wù)中心的,所以為事務(wù)性
7.以下不屬于需求分析所解決的問題是( D)
A、撰寫需求規(guī)格說明書
B、建立概念模型
C、畫出狀態(tài)轉(zhuǎn)換圖
D、畫出功能模塊圖
解析:需求分析的任務(wù):確定對(duì)系統(tǒng)的綜合要求包括: 1.功能需求 2.性能需求3. 可靠性和可用性需求4. 出錯(cuò)處理需求 系統(tǒng)發(fā)現(xiàn)錯(cuò)誤時(shí)采取的行動(dòng),主要在系統(tǒng)關(guān)鍵部分設(shè)置。5. 接口需求 用戶接口、硬件接口、軟件接口、通信接口、等。6. 約束 精度、工具和語(yǔ)言、設(shè)計(jì)約束、硬件約束、標(biāo)準(zhǔn),等。7. 逆向需求 8. 將來可能提出的要求 ;
分析系統(tǒng)的數(shù)據(jù)要求 通過建立數(shù)據(jù)模型來分析,如數(shù)據(jù)字典、層次方框圖、Warnier圖,并將數(shù)據(jù)結(jié)構(gòu)規(guī)范化。
導(dǎo)出系統(tǒng)的邏輯模型 包括完善的數(shù)據(jù)流圖、實(shí)體-聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典、主要的處理算法(IPO圖)等。
修正系統(tǒng)開發(fā)計(jì)劃 修訂前期制定的開發(fā)進(jìn)度計(jì)劃、等。
畫出功能模塊圖是在總體設(shè)計(jì)階段而不是需求分析階段
8.總體設(shè)計(jì)啟發(fā)式規(guī)則包括(ABCD )。多項(xiàng)選擇題
A、改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性
B、力爭(zhēng)降低模塊接口的復(fù)雜度
C、設(shè)計(jì)單入口、單出口的模塊
D、模塊功能應(yīng)該可以預(yù)測(cè)
解析:啟發(fā)規(guī)則
爭(zhēng)取低耦合、高內(nèi)聚
增加內(nèi)聚、減少耦合
模塊規(guī)模適中
過大,分解不充分,不易理解;
太小,則開銷過大、接口復(fù)雜。
適當(dāng)控制模塊結(jié)構(gòu)參數(shù)
深度 = 分層的層數(shù)。過大表示分工過細(xì)。
寬度 = 同一層上模塊的最大值。過大,表示系統(tǒng)復(fù)雜度大。
扇出 = 一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。
扇入 = 直接調(diào)用該模塊的模塊數(shù)。
盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
扇出太大一般是因?yàn)槿狈χ虚g層次,應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊;
扇出太小時(shí)可以把下級(jí)模塊進(jìn)一步分解為若干個(gè)子功能模塊,或合并到它的上級(jí)模塊中去。
頂層扇出高,中間扇出少,底層高扇入。
模塊的作用范圍保持在該模塊的控制范圍內(nèi)
控制域 = 該模塊本身以及所有直接或間接從屬于它的模塊。
作用域 = 該模塊中一個(gè)判斷所影響的所有其他模塊。
令作用域是控制域的子集:
把作判定的點(diǎn)往上移;
把那些在作用域但不在控制域內(nèi)的模塊移到控制域內(nèi)。
降低接口的復(fù)雜程度
模塊接口的復(fù)雜性是引起軟件錯(cuò)誤的一個(gè)主要原因。接口設(shè)計(jì)應(yīng)該使得信息傳遞簡(jiǎn)單并且與模塊的功能一致。
單出口單入口,避免內(nèi)容耦合
易于理解和維護(hù)。
模塊功能可預(yù)測(cè)
相同輸入必產(chǎn)生相同輸出。
測(cè)試題目
1.在軟件生存周期中,( B )階段要回答的問題是“要解決的問題是做什么?”
A、詳細(xì)設(shè)計(jì)
B、需求分析
C、概要設(shè)計(jì)
D、軟件測(cè)試
解析:軟件生命周期各階段的任務(wù):
1、問題定義
確定好要解決的問題是什么(what),通過對(duì)客戶的訪問調(diào)查,系統(tǒng)分析員扼要的寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報(bào)告,經(jīng)過討論和必要的修改之后這份報(bào)告應(yīng)該得到客戶的確認(rèn)。
2、可行性研究
確定該問題是否存在一個(gè)可以解決的方案??尚行匝芯康慕Y(jié)果是客戶做出是否繼續(xù)進(jìn)行這項(xiàng)工程的決定的重要依據(jù),一般來說,只有投資可能取得較大的效益的那些工程項(xiàng)目才值得繼續(xù)進(jìn)行下去。
3、需求分析
深入具體的了解用戶的需求,在所開發(fā)的系統(tǒng)要做什么這個(gè)問題上和用戶想法完全一致。明確目標(biāo)系統(tǒng)必須做什么,確定目標(biāo)系統(tǒng)必須具備哪些功能。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡(jiǎn)要的算法表示系統(tǒng)的邏輯模型。用《規(guī)格說明書》記錄對(duì)目標(biāo)系統(tǒng)的需求。
4、概要設(shè)計(jì)(總體設(shè)計(jì))
概括的說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng),設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的幾種可能方案,設(shè)計(jì)程序的體系結(jié)構(gòu),也就是確定程序由哪些模塊組成以及模塊之間的關(guān)系。
5、詳細(xì)設(shè)計(jì)
實(shí)現(xiàn)系統(tǒng)的具體工作,編寫詳細(xì)規(guī)格說明,程序員可以根據(jù)它們寫出實(shí)際的程序代碼。詳細(xì)設(shè)計(jì)也稱模塊設(shè)計(jì),在這個(gè)階段將詳細(xì)的設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊功能所需的算法和數(shù)據(jù)結(jié)構(gòu)。
6、編碼和單元測(cè)試(編碼占全部開發(fā)工作量的10%-20%)
7、綜合測(cè)試(測(cè)試占全部開發(fā)工作量的40%-50%)
8、軟件維護(hù)
通過各種必要的維護(hù)活動(dòng)使系統(tǒng)持久的滿足用戶的需求。主要分為 改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)。
2.軟件特性中,一個(gè)軟件能再次用于其他相關(guān)應(yīng)用的程度稱為(B )。
A、可重用性
B、容錯(cuò)性
C、可適應(yīng)性
D、可移植性
解析:可重用性:系統(tǒng)的某部分可被應(yīng)用到其他系統(tǒng)中的程度,以及應(yīng)用的難易程度。比如組件化,就是從代碼的可重用性考量的,比如使用Android Jetpack的組件更好更快的構(gòu)建App,復(fù)用了很多的邏輯代碼。
容錯(cuò)性:在軟件失效或者違反規(guī)定的接口的情況下,軟件產(chǎn)品維持規(guī)定的性能級(jí)別的能力
可移植性(portability):軟件產(chǎn)品從一種環(huán)境遷移到另外一種環(huán)境的能力
可適應(yīng)性:軟件產(chǎn)品無需采用手段就可能適應(yīng)不同的指定環(huán)境的能力
3.下列選項(xiàng)中,屬于實(shí)現(xiàn)階段的任務(wù)的是( C )。
A、組裝測(cè)試計(jì)劃
B、繪制程序流程圖
C、單元測(cè)試
D、驗(yàn)收測(cè)試計(jì)劃
解析:編碼和測(cè)試統(tǒng)稱為實(shí)現(xiàn)。
4.在軟件質(zhì)量要素中,學(xué)習(xí)使用軟件(即操作軟件、準(zhǔn)備輸入數(shù)據(jù)、解釋輸出結(jié)果等)的難易程度指的是( B)。
A、完整性
B、可用性
C、正確性
D、靈活性
5.在軟件工程中,不屬于軟件定義部分的任務(wù)是( D )。
A、軟件驗(yàn)收測(cè)試計(jì)劃
B、軟件項(xiàng)目計(jì)劃
C、需求分析
D、集成測(cè)試計(jì)劃
解析:軟件定義時(shí)期的任務(wù)是確定軟件開發(fā)工程必須完成的總目標(biāo),這個(gè)時(shí)期通常進(jìn)一步劃分成三個(gè)階段,即問題定義、可行性研究和需求分析。在這個(gè)階段需要完成制定軟件項(xiàng)目計(jì)劃、進(jìn)行需求分析和制定驗(yàn)收測(cè)試計(jì)劃等任務(wù)。該階段的任務(wù)不包括制定集成測(cè)試計(jì)劃,它是軟件開發(fā)階段的任務(wù)之一。
6.在軟件工程中,( C )不屬于軟件開發(fā)部分的任務(wù)。
A、軟件總體設(shè)計(jì)
B、單元測(cè)試
C、軟件經(jīng)銷
D、集成測(cè)試
7.需求分析最終結(jié)果是產(chǎn)生( C )。
A、項(xiàng)目開發(fā)計(jì)劃
B、可行性分析報(bào)告
C、需求規(guī)格說明書
D、設(shè)計(jì)說明書
解析:需求分析也彌為軟件需求分析、系統(tǒng)需求分析或需求分析工程等,是開發(fā)人員經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么的過程,最終產(chǎn)生需求規(guī)格說明書,把用戶對(duì)待開發(fā)軟件提出的“要求”或“需要”進(jìn)行分析與整理,確認(rèn)后形成描述完整、清晰與規(guī)范的文檔,確定軟件需要實(shí)現(xiàn)哪些功能,完成哪些工作,故選 B
項(xiàng)目開發(fā)計(jì)劃是用于指導(dǎo)項(xiàng)目實(shí)施和管理的整合性、綜合性、全局性、協(xié)調(diào)統(tǒng)一的整合計(jì)劃文件。進(jìn)行需求分析不能得到項(xiàng)目開發(fā)計(jì)劃,故排除 A 設(shè)計(jì)說明書是對(duì)各方面的設(shè)計(jì)進(jìn)行要求,要進(jìn)行產(chǎn)品分析,設(shè)計(jì)分析,故排除 C
可行性分析報(bào)告在前一階段的項(xiàng)目建議書獲得審批通過的基礎(chǔ)上,主要對(duì)項(xiàng)目市場(chǎng)、技術(shù)、財(cái)務(wù)、工程、經(jīng)濟(jì)和環(huán)境等方面進(jìn)行精確系統(tǒng)、完備無遺的分析,為投資決策提供科學(xué)依據(jù),并作為進(jìn)一步開展工作的基礎(chǔ)。要進(jìn)行可行性分析,不是需求
8.數(shù)據(jù)流圖中的每個(gè)加工至少有(A )。
A、一個(gè)輸入流和一個(gè)輸出流
B、一個(gè)輸入流或一個(gè)輸出流
C、一個(gè)輸入流
D、一個(gè)輸出流
解析:2-1
9.SA方法的基本思想是( C)。
A、自底向上逐步抽象
B、自底向上逐步分解
C、自頂向下逐步分解
D、自頂向上抽象
解析:SA 法也是一種建模的活動(dòng),主要是根據(jù)軟件內(nèi)部的數(shù)據(jù)傳遞、變換關(guān)系,自頂向下逐層分解,描繪出滿足功能要求的軟件模型。
SA 法的基本思想
結(jié)構(gòu)化分析(Structured Analysis,簡(jiǎn)稱SA 法)是面向數(shù)據(jù)流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和發(fā)展,并得到廣泛的應(yīng)用。
結(jié)構(gòu)化分析方法的基本思想是“分解”和“抽象”。
分解:是指對(duì)于一個(gè)復(fù)雜的系統(tǒng),為了將復(fù)雜性降低到可以掌握的程度,可以把大問題分解成若干小問題,然后分別解決。
抽象:分解可以分層進(jìn)行,即先考慮問題最本質(zhì)的屬性,暫把細(xì)節(jié)略去,以后再逐層添加細(xì)節(jié),直至涉及到最詳細(xì)的內(nèi)容,這種用最本質(zhì)的屬性表示一個(gè)自系統(tǒng)的方法就是“抽象”。
2.SA 法的步驟
⑴建立當(dāng)前系統(tǒng)的“具體模型”;
系統(tǒng)的“具體模型”就是現(xiàn)實(shí)環(huán)境的忠實(shí)寫照,即將當(dāng)前系統(tǒng)用DFD 圖描述出來。這樣的表達(dá)與當(dāng)前系統(tǒng)完全對(duì)應(yīng),因此用戶容易理解。
⑵抽象出當(dāng)前系統(tǒng)的邏輯模型;
分析系統(tǒng)的“具體模型”,抽象出其本質(zhì)的因素,排除次要因素,獲得用DFD 圖描述的當(dāng)前系統(tǒng)的“邏輯模型”。
⑶建立目標(biāo)系統(tǒng)的邏輯模型;
分析目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)邏輯上的差別,從而進(jìn)一步明確目標(biāo)系統(tǒng)“做什么”,建立目標(biāo)系統(tǒng)的“邏輯模型”(修改后的DFD 圖)。
⑷為了對(duì)目標(biāo)系統(tǒng)作完整的描述,還需要考慮人機(jī)界面和其它一些問題。
3.SA 法的描述工具
⑴ 分層的數(shù)據(jù)流圖
⑵ 數(shù)據(jù)詞典
⑶ 描述加工邏輯的結(jié)構(gòu)化語(yǔ)言、判定表或判定樹。
2 數(shù)據(jù)流圖
數(shù)據(jù)流圖(Data Flow Diagram,簡(jiǎn)稱DFD)是描述系統(tǒng)中數(shù)據(jù)流程的圖形工具,它標(biāo)識(shí)了一個(gè)系統(tǒng)的邏輯輸入和邏輯輸出,以及把邏輯輸入轉(zhuǎn)換邏輯輸出所需的加工處理。
1.數(shù)據(jù)流圖的圖符數(shù)據(jù)流圖有以下4 種基本圖形符號(hào):
箭頭,表示數(shù)據(jù)流; 〇:圓或橢圓,表示加工; =:雙杠(帶一邊開口,一邊閉合),表示數(shù)據(jù)存儲(chǔ); □:方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)。
箭頭表示數(shù)據(jù)流,圓或橢圓表示加工。雙杠或者單杠表示數(shù)據(jù)存儲(chǔ),矩形框表示數(shù)據(jù)的源點(diǎn)或終點(diǎn),即外部實(shí)體。
⑴ 數(shù)據(jù)流 是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,由一組成固定的數(shù)據(jù)項(xiàng)組成。除了與數(shù)據(jù)存儲(chǔ)(文件)之間的數(shù)據(jù)流不用命名外,其余數(shù)據(jù)流都應(yīng)該用名詞或名詞短語(yǔ)命名。數(shù)據(jù)流可以從加工流向加工,也可以從加工流向文件或從文件流向加工,也可以從源點(diǎn)流向加工或從加工流向終點(diǎn)。
⑵ 加工 也稱為數(shù)據(jù)處理,它對(duì)數(shù)據(jù)流進(jìn)行某些操作或變換。每個(gè)加工也要有名字,通常是動(dòng)詞短語(yǔ),簡(jiǎn)明地描述完成什么加工。在分層的數(shù)據(jù)流圖中,加工還應(yīng)有編號(hào)。
⑶ 數(shù)據(jù)存儲(chǔ) 指暫時(shí)保存的數(shù)據(jù),它可以是數(shù)據(jù)庫(kù)文件或任何形式的數(shù)據(jù)組織。流向數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)流可理解為寫入文件,或查詢文件,從數(shù)據(jù)存儲(chǔ)流出的數(shù)據(jù)可理解為從文件讀數(shù)據(jù)或得到查詢結(jié)果。
⑷ 數(shù)據(jù)源點(diǎn)和終點(diǎn) 是軟件系統(tǒng)外部環(huán)境中的實(shí)體(包括人員、組織或其他軟件系統(tǒng)),統(tǒng)稱為外部實(shí)體。一般只出現(xiàn)在數(shù)據(jù)流圖的頂層圖中。
10.面向?qū)ο蠹夹g(shù)中,對(duì)象是類的實(shí)例。對(duì)象有三種成份:(D )、屬性和方法(或操作)。
A、消息
B、規(guī)則
C、封裝
D、標(biāo)識(shí)
解析:對(duì)象三大屬性 狀態(tài),行為,標(biāo)識(shí)符 標(biāo)識(shí)符是一個(gè)對(duì)象的屬性,它用于區(qū)分這個(gè)對(duì)象與所有其他對(duì)象
11.系統(tǒng)流程圖是描述( D )的工具。
A、邏輯系統(tǒng)
B、程序系統(tǒng)
C、體系結(jié)構(gòu)
D、物理系統(tǒng)
解析:系統(tǒng)流程圖是進(jìn)行系統(tǒng)分析時(shí)常用的一種描述方法,它用物理符號(hào)以黑盒子的形式描繪系統(tǒng)里面的毎個(gè)部件。它表達(dá)的僅是信息在系統(tǒng)各部件之間流動(dòng)的情況,而不是對(duì)信息進(jìn)行加工處理的控制過程。
系統(tǒng)流程圖是概括地描述物理系統(tǒng)的傳統(tǒng)工具,它一般用在可行性分析階段。它的基本思想是用圖形符號(hào)以黑盒子的形式描繪組成系統(tǒng)的每個(gè)部件(程序、文檔、數(shù)據(jù)庫(kù)等)。系統(tǒng)流程圖表達(dá)的是數(shù)據(jù)在系統(tǒng)各個(gè)部件之間的流動(dòng)情況,而不是對(duì)數(shù)據(jù)進(jìn)行加工處理的控制過程,因此盡管系統(tǒng)流程圖的某些符號(hào)和程序流程圖的符號(hào)相同,但它卻是物理數(shù)據(jù)流圖而不是程序流程圖。
12.一個(gè)模塊把數(shù)值作為參數(shù)傳送給另一個(gè)模塊,這種耦合方式稱為( A )。
A、數(shù)據(jù)耦合
B、公共耦合
C、控制耦合
D、標(biāo)記耦合
解析:2-3,2-4
13.模塊本身的內(nèi)聚是模塊獨(dú)立性的重要度量因素之一,在七類內(nèi)聚中,具有最強(qiáng)內(nèi)聚的一類是( )。
A、功能性內(nèi)聚
B、過程性內(nèi)聚
C、邏輯性內(nèi)聚
D、順序性內(nèi)聚
解析:內(nèi)聚強(qiáng)度從低到高如下所示: 偶然內(nèi)聚,邏輯內(nèi)聚,時(shí)間內(nèi)聚,過程內(nèi)聚,通訊內(nèi)聚,順序內(nèi)聚,功能內(nèi)聚
14.為了提高軟件測(cè)試的效率,應(yīng)該( D )。
A、隨機(jī)地選取測(cè)試數(shù)據(jù)
B、取一切可能的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù)
C、在完成編碼以后制定軟件的測(cè)試計(jì)劃
D、選擇發(fā)現(xiàn)錯(cuò)誤可能性最大的數(shù)據(jù)作為測(cè)試用例
解析:對(duì)于一個(gè)軟件,其可能的輸入數(shù)據(jù)數(shù)量一般是非常驚人的,所以要想全部將其作為測(cè)試用例是不現(xiàn)實(shí)的,應(yīng)當(dāng)選擇發(fā)現(xiàn)錯(cuò)誤可能性大的數(shù)據(jù)作為測(cè)試用例,不能隨機(jī)選取測(cè)試用例
15.產(chǎn)生軟件維護(hù)的副作用是指( D )。
A、開發(fā)軟件時(shí)的錯(cuò)誤
B、運(yùn)行時(shí)的錯(cuò)誤
C、隱含的錯(cuò)誤
D、因修改軟件而造成的錯(cuò)誤
解析:維護(hù)成本中 無形的代價(jià)包括: 1. 維護(hù)活動(dòng)占用了其他軟件開發(fā)可用的資源,使資源的利用率降低;2. 一些修復(fù)或修改請(qǐng)求得不到及時(shí)安排,使客戶滿意度下降;3. 維護(hù)的結(jié)果把一些新的潛在的錯(cuò)誤引入軟件,降低了軟件質(zhì)量;4. 將軟件人員抽調(diào)到維護(hù)工作中,使得其他軟件開發(fā)過程收到干擾。
所謂副作用是指因修改軟件而造成的錯(cuò)誤或其它不希望發(fā)生的情況,有三種副作用:修改代碼的副作用,修改數(shù)據(jù)的副作用和文檔的副作用。
修改代碼的副作用
在使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(shí),都可能引入錯(cuò)誤。例如,刪除或修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)號(hào)、 刪除或修改一個(gè)標(biāo)識(shí)符、改變程序代碼的時(shí)序關(guān)系、改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符、修改文件的打開或關(guān)閉、改進(jìn)程序的執(zhí)行效率,以及把設(shè)計(jì)上的改變翻譯成代碼的改變、為邊界條件的邏輯測(cè)試做出改變時(shí),都容易引入錯(cuò)誤。
修改數(shù)據(jù)的副作用
在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。數(shù)據(jù)副作用就是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果。例如,在重新定義局部或全局常量、 重新定義記錄或文件格式、增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小、修改全局或公共數(shù)據(jù)、重新初始化控制標(biāo)志或指針、重新排列輸入/輸出或子程序的參數(shù)時(shí),容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。數(shù)據(jù)副作用可以通過詳細(xì)的設(shè)計(jì)文檔加以控制。在此文檔中描述了一種交叉引用,把數(shù)據(jù)元素、記錄、文件和其它結(jié)構(gòu)聯(lián)系起來。
文檔的副作用
對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、 模塊邏輯或任何其它有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會(huì)導(dǎo)致文檔與程序功能不匹配,缺省條件改變,新錯(cuò)誤信息不正確等錯(cuò)誤。使得軟件文檔不能反映軟件的當(dāng)前狀態(tài)。對(duì)于用戶來說,軟件事實(shí)上就是文檔。如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,就會(huì)產(chǎn)生文檔的副作用。例如,對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒有正確地記錄在文檔中,就可能引起重大的問題。過時(shí)的文檔內(nèi)容、索引和文本可能造成沖突,引起用戶的失敗和不滿。因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔的副作用。
總結(jié)
- 上一篇: java宿舍信息管理系统_Java宿舍管
- 下一篇: 华为基本法 读书笔记