軟件工程學作業與習題_第1頁
軟件工程學作業與習題_第2頁
軟件工程學作業與習題_第3頁
軟件工程學作業與習題_第4頁
軟件工程學作業與習題_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章

軟件工程學概述1-1什么是軟件危機?它有哪些典型表現?為什么會出現軟件危機?1-2假設你是一家軟件公司的總工程師,當你把圖1.1給手下的軟件工程師們觀看,告訴他們及早發現并改正錯誤的重要性時,有人不同意你的觀點,認為要求在錯誤進入軟件之前就清除它們是不現實的,并舉例說:“如果一個故障是編碼錯誤造成的,那么,一個人怎么能在設計階段清除它呢?”你怎么反駁他?1-3什么是軟件工程?它有哪些本質特性?怎樣用軟件工程消除軟件危機?1-4簡述結構化范型和面向對象范型的要點,并分析它們的優缺點。1-5根據歷史數據可以做出如下的假設:對計算機存儲容量的需求大致按下面公式描述的趨勢逐年增加:M=4080e0.28(Y-1960)存儲器的價格按下面公式描述的趨勢逐年下降:P1=0.3×0.72Y-1974(美分/位)如果計算機字長為16位,則存儲器價格下降的趨勢為:P2=0.048×0.72Y-1974(美元/字)在上列公式中Y代表年份,M是存儲容量(字數),P1和P2代表價格。基于上述假設可以比較計算機硬件和軟件成本的變化趨勢。要求計算:(1)在1985年對計算機存儲容量的需求估計是多少?如果字長為16位,這個存儲器的價格是多少?(2)假設在1985年一名程序員每天可開發出10條指令,程序員的平均工資是每月4000美元。如果一條指令為一個字長,計算使存儲器裝滿程序所需用的成本。(3)假設在1995年存儲器字長為32位,一名程序員每天可開發出30條指令,程序員的月平均工資為6000美元,重復(1)、(2)題。1-6什么是軟件過程?它與軟件工程方法學有何關系?1-7什么是軟件生命周期模型?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優缺點,說明每種模型的適用范圍。第2章

可行性研究2-1在軟件開發的早期階段為什么要進行可行性研究?應該從哪些方面研究目標系統的可行性?2-2為方便儲戶,某銀行擬開發計算機儲蓄系統。儲戶填寫的存款單或取款單由業務員鍵入系統,如果是存款,系統記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶;如果是取款,系統計算利息并印出利息清單給儲戶。請寫出問題定義并分析此系統的可行性。2-3為方便旅客,某航空公司擬開發一個機票預訂系統。旅行社把預訂機票的旅客信息(姓名、性別、工作單位、身份證號碼、旅行時間、旅行目的地等)輸入進該系統,系統為旅客安排航班,印出取票通知和賬單,旅客在飛機起飛的前一天憑取票通知和賬單交款取票,系統校對無誤即印出機票給旅客。請寫出問題定義并分析此系統的可行性。2-4目前住院病人主要由護士護理,這樣做不僅需要大量護士,而且由于不能隨時觀察危重病人的病情變化,還會延誤搶救時機。某醫院打算開發一個以計算機為中心的患者監護系統,請寫出問題定義,并且分析開發這個系統的可行性。醫院對患者監護系統的基本要求是隨時接收每個病人的生理信號(脈搏、體溫、血壓、心電圖等),定時記錄病人情況以形成患者日志,當某個病人的生理信號超出醫生規定的安全范圍時向值班護士發出警告信息,此外,護士在需要時還可以要求系統印出某個指定病人的病情報告。2-5北京某高校可用的電話號碼有以下幾類:校內電話號碼由4位數字組成,第1位數字不是0;校外電話又分為本市電話和外地電話兩類,撥校外電話需先撥0,若是本市電話則再接著撥8位數字(第1位不是0),若是外地電話則撥3位區碼再撥8位電話號碼(第1位不是0)。請用2.5.2小節講述的定義數據的方法,定義上述的電話號碼。第3章

需求分析3-1為什么要進行需求分析?通常對軟件系統有哪些需求?3-2怎樣與用戶有效地溝通以獲取用戶的真實需求?3-3銀行計算機儲蓄系統的工作過程大致如下:儲戶填寫的存款單或取款單由業務員鍵入系統,如果是存款則系統記錄存款人姓名、住址(或電話號碼)、身份證號碼、存款類型、存款日期、到期日期、利率及密碼(可選)等信息,并印出存單給儲戶;如果是取款而且存款時留有密碼,則系統首先核對儲戶密碼,若密碼正確或存款時未留密碼,則系統計算利息并印出利息清單給儲戶。請用數據流圖描繪本系統的功能,并用實體-聯系圖描繪系統中的數據對象。3-4分析習題2第3題所述的機票預訂系統。請用實體-聯系圖描繪本系統中的數據對象并用數據流圖描繪本系統的功能。3-5分析習題2第4題所述的患者監護系統。請用實體-聯系圖描繪本系統中的數據對象并用數據流圖描繪本系統的功能,畫出本系統的頂層IPO圖。3-6復印機的工作過程大致如下:未接到復印命令時處于閑置狀態,一旦接到復印命令則進入復印狀態,完成一個復印命令規定的工作后又回到閑置狀態,等待下一個復印命令;如果執行復印命令時發現沒紙,則進入缺紙狀態,發出警告,等待裝紙,裝滿紙后進入閑置狀態,準備接收復印命令;如果復印時發生卡紙故障,則進入卡紙狀態,發出警告等待維修人員來排除故障,故障排除后回到閑置狀態。請用狀態轉換圖描繪復印機的行為。第5章

總體設計5-1為每種類型的模塊耦合舉一個具體例子。5-2為每種類型的模塊內聚舉一個具體例子。5-3用面向數據流的方法設計下列系統的軟件結構:(1)儲蓄系統(參見習題2第2題);(2)機票預訂系統(參見習題2第3題);(3)患者監護系統(參見習題2第4題)。5-4美國某大學共有200名教師,校方與教師工會剛剛簽訂一項協議。按照協議,所有年工資超過$26000(含$26000)的教師工資將保持不變,年工資少于$26000的教師將增加工資,所增加的工資數按下述方法計算:給每個由此教師所贍養的人(包括教師本人)每年補助$100,此外,教師有一年工齡每年再多補助$50,但是,增加后的年工資總額不能多于$26000。教師的工資檔案儲存在行政辦公室的磁帶上,檔案中有目前的年工資、贍養的人數、雇用日期等信息。需要寫一個程序計算并印出每名教師的原有工資和調整后的新工資。要求:(1)畫出此系統的數據流圖;(2)寫出需求說明;(3)設計上述的工資調整程序(要求用HIPO圖描繪設計結果),設計時請分別采用下述兩種算法,并比較這兩種算法的優缺點:(a)搜索工資檔案數據,找出年工資少于$26000的人,計算新工資,校核是否超過$26000,儲存新工資,印出新舊工資對照表;(b)把工資檔案數據按工資從最低到最高的次序排序,當工資數額超過$26000時即停止排序,計算新工資,校核是否超過限額,儲存新工資,印出結果。(4)你所畫出的數據流圖適用于哪種算法?5-5下面將給出兩個人玩的撲克牌游戲的一種玩法,請你設計一個模擬程序,它的基本功能是:(1)發兩手牌(利用隨機數產生器);(2)確定贏者和贏牌的類型;(3)模擬N次游戲,計算每種類型牌贏或平局的概率。要求用HIPO圖描繪設計結果并且畫出高層控制流程圖。撲克牌游戲規則如下:(1)有兩個人玩,分別稱為A和B;(2)一副撲克牌有52張牌,4種花色(方塊、梅花、紅桃和黑桃),每種花色的牌的點數按升序排列有2,3,4,…,10,J,Q,K,A等13種;(3)給每個人發3張牌,牌面向上(即,亮牌),贏者立即可以確定;(4)最高等級的一手牌稱為同花,即3張牌均為同一種花色,最大的同花牌是同一種花色的Q、K、A;(5)第二等級的牌稱為順子,即點數連續的3張牌,最大的順子是花色不同的Q、K、A;(6)第三等級的牌是同點,即點數相同的3張牌,最大的同點是A、A、A;(7)第四等級的牌是對子,即3張牌中有兩張點數相同,最大的對子是A、A、K;(8)第五等級的牌是雜牌,即除去上列四等之外的任何一手牌,最大的雜牌是不同花色的A、K、J;(9)若兩人的牌類型不同,則等級高者勝;若等級相同,則點數高者勝;若點數也相同,則為平局。第6章

詳細設計6-1假設只有SEQUENCE和DO-WHILE兩種控制結構,怎樣利用它們完成IF-THEN-ELSE操作?6-2假設只允許使用SEQUENCE和IF-THEN-ELSE兩種控制結構,怎樣利用它們完成DO-WHILE操作?6-3畫出下列偽碼程序的程序流程圖和盒圖:

START

IF

pTHEN

WHILEqDO

f

ENDDO

ELSE

BLOCK

g

n

ENDBLOCK

ENDIF

STOP6-4圖6.18給出的程序流程圖代表一個非結構化的程序,請問:(1)為什么說它是非結構化的?(2)設計一個等價的結構化程序。圖6.18一個非結構化程序(3)在(2)題的設計中你使用附加的標志變量flag了嗎?若沒用,請再設計一個使用flag的程序;若用了,再設計一個不用flag的程序。6-5研究下面的偽碼程序(見書131頁):要求:(1)畫出程序流程圖。(2)程序是結構化的嗎?說明理由。(3)若程序是非結構化的,請設計一個等價的結構化程序并且畫出程序流程圖。(4)此程序的功能是什么?它完成預定功能有什么隱含的前提條件嗎?6-6用Ashcroft_Manna技術可以將非結構化的程序轉換為結構化程序,圖6.19(見書132頁)是一個轉換的例子。(1)你能否從這個例子總結出Ashcroft-Manna技術的一些基本方法?(2)進一步簡化圖6.19(b)給出的結構化設計。6-7某交易所規定給經紀人的手續費計算方法如下:總手續費等于基本手續費加上與交易中的每股價格和股數有關的附加手續費。如果交易總金額少于1000元,則基本手續費為交易金額的8.4%;如果交易總金額在1000元到10000元之間,則基本手續費為交易金額的5%,再加34元;如果交易總金額超過10000元,則基本手續費為交易金額的4%加上134元。當每股售價低于14元時,附加手續費為基本手續費的5%,除非買進、賣出的股數不是100的倍數,在這種情況下附加手續費為基本手續費的9%。當每股售價在14元到25元之間時,附加手續費為基本手續費的2%,除非交易的股數不是100的倍數,在這種情況下附加手續費為基本手續費的6%。當每股售價超過25元時,如果交易的股數零散(即,不是100的倍數),則附加手續費為基本手續費的4%,否則附加手續費為基本手續費的1%。要求:(1)用判定表表示手續費的計算方法;(2)用判定樹表示手續費的計算方法。6-8畫出下列偽碼程序(見書132頁)的流圖,計算它的環形復雜度。你覺得這個程序的邏輯有什么問題嗎?6-9把統計空格程序的Jackson圖(圖6.13)改畫為等價的程序流程圖和盒圖。6-10人機對話由操作員信息和系統信息交替組成。假設一段對話總是由操作員信息開始以系統信息結束,請用Jackson圖描繪這樣的人機對話過程。模型驅動程序設計練習6-11<![endif]>什么是抽象邏輯結構圖?它有何特點和作用?6-12抽象邏輯結構圖如何支持分析、設計、實現三個階段的平滑過渡和表示的一致性?6-13使用抽象邏輯結構圖進行程序設計的基本過程是什么?6-14抽象邏輯結構圖如何支持基于數據結構的程序設計方法?其設計過程如何?6-15請分析C++語言,給出支持C++語言的邏輯處理結點類型,以及C++過程藍圖的形式化定義。6-16請分析PASCAL語言、BASIC語言和JAVA語言,分別給出支持這三種語言的邏輯處理結點類型,并畫出每個復合結點分解的圖形表示。6-17請用抽象邏輯結構圖程序設計技術設計下列問題的C語言程序,給出概念、邏輯和實現三級抽象邏輯結構圖,操作表達式表,以及程序源代碼:A.高斯主消去法求解線性方程組的程序B.求十個最小的自然數,它的立方和為另外三個自然數的立方和,并且這十個自然數彼此除不盡C.判某一年是否為閏年D.判某一數是否為素數E.兩個乒乓球隊進行比賽,各出三人。甲隊為A、B、C三人,乙隊為X、Y、Z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單,A說他不和X比,C說他不和X、Z比,請找出三對賽手的名單。6-18請用抽象邏輯結構圖程序設計技術設計下列問題的PASCAL語言程序,給出概念、邏輯和實現三級抽象邏輯結構圖,操作表達式表,以及程序源代碼:A.輸入20個數,求其中的最大值、最小值及平均值B.將以字符形式讀入的數字序列轉換成實數C.求1-100之間的素數D.在1-500中,找出能同時滿足用3除余2,用5除余3,用7除余5的所有整數E.驗證哥德巴赫猜想:任一充分大的偶數,可以用兩個素數之和表示6-19請用抽象邏輯結構圖面向數據結構的程序設計技術設計下列問題的程序,給出輸入輸出數據結構圖,導出的概念、邏輯和實現三級抽象邏輯結構圖,偽操作表達式表和程序偽碼(P_碼):A.

設計一個打印表格程序,表格形式見表13.13,其中類別欄可以是教師、學生;狀態欄中教師行填他的年齡,學生行填他的年級。

表13.13打印表格格式姓名年齡類別狀態

B.

將考生情況文件和考分文件合并成一個文件:考生新文件。考生情況文件的結構:準考證號、姓名、通訊地址;考分文件的結構:準考證號、考分。三個文件都由“考生記錄”重復組成,并且都按準考證號遞增排序。C.

一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統計每個記錄中空格字符的個數,以及文件中空格字符的總個數。要求的輸出數據格式是,每復制一行輸入字符串后,另起一行印出這個字符串的空格數,最后印出文件中空格的總個數。D.

將人口普查的數字進行制表。人口普查統計是按全國省、專區、縣三級行政區劃分進行的。每個縣有一個或多個報告單元,每個報告單元提供一張統計的數據卡片,包括人口總數和該報告單元所在的縣名、專區名和省名。全國收集所有的統計卡片,結果將以省、區、縣的升序排列,對每個省區縣要有單個的報告,表明其人口數,最后計算和打印全國人口數,打印報告的形式如下:

人口統計報告XX縣XXXXXXXXX縣XXXXXXXXX縣XXXXXXXXX專區XXXXXXXXX縣XXXXXXXXX縣XXXXXXXXX專區XXXXXXXXX省XXXXXXX…………總計(全國人口)XXXXXXX

6-20設計實現一個支持抽象邏輯結構圖的全屏幕編輯工具。6-21設計實現一個將抽象邏輯結構圖轉換為程序源代碼的代碼生成器。6-22設計一個支持抽象邏輯結構圖的程序設計環境的總體結構,畫出系統的體系結構圖,說明各部分應實現的功能和構成,并為該系統制定一個詳細的軟件開發計劃。第7章

實現

7-1下面給出的偽碼中有一個錯誤。請仔細閱讀這段偽碼,說明該偽碼的語法特點,找出并改正偽碼中的錯誤。字頻統計程序的偽碼如下:INITIALIZEtheProgramREADthefirsttextrecordDOWHILEtherearemorewordsinthetextrecord

DOWHILEtherearemorewordsinthetextrecord

EXTRACTthenexttextword

SEARCHtheword-tablefortheextractedword

IFtheextractedwordisfound

INCREMENTtheword’soccurrencecount

ELSE

INSERTtheextractedwordintothetable

ENDIF

INCREMENTthewords-processedcount

ENDDOattheendofthetextrecord

READthenexttextrecordENDDOwhenalltextrecordshaveheenreadPRINTthetableandsummaryinformationTERMINATEtheprogram7-2研究下面給出的偽碼程序,要求:(1)畫出它的程序流程圖。(2)它是結構化的還是非結構化的?說明理由。(3)若是非結構化的,則(a)把它改造成僅用3種控制結構的結構化程序;(b)寫出這個結構化設計的偽碼;(c)用盒圖表示這個結構化程序。(4)找出并改正程序邏輯中的錯誤。COMMENT:PROGRAMSEARCHESFORFIRSTNREFERENCES

TOATOPICINANINFORMATIONRETRIEVAL

SYSTEMWITHTTOTALENTRIES

INPUTN

INPUTKEYWORD(S)FORTOPIC

I=O

MATCH=0

DOWHILEI≤T

I=I+1

IFWORD=KEYWORD

THENMATCH=MATCH+1

STOREINBUFFER

END

IFMATCH=N

THENGOTOOUTPUT

END

END

IFN=0

THENPRINT″NOMATCH″OUTPUT:ELSECALLSUBROUTINETOPRINTBUFFER

INFORMATION

END7-3在第2題的設計中若輸入的N值或KEYWORD不合理,會發生問題。(1)給出這些變量的不合理值的例子。(2)將這些不合理值輸入程序會有什么后果?(3)怎樣在程序中加入防錯措施,以防止出現這些問題?7-4回答下列問題:(1)什么是模塊測試和集成測試?它們各有什么特點?(2)假設有一個由1000行FORTRAN語句構成的程序(經編譯后大約有5000條機器指令),你估計在對它進行測試期間將發現多少個錯誤?為什么?(3)設計下列偽碼程序的語句覆蓋和路徑覆蓋測試用例:STARTINPUT(A,B,C)IFA>5

THENX=10

ELSEX=1ENDIFIFB>10

THENY=20

ELSEY=2ENDIFIFC>15

THENZ=30

ELSEZ=3ENDIFPRINT(X,Y,Z)STOP7-5某圖書館有一個使用CRT終端的信息檢索系統,該系統有下列4個基本檢索命令(見書175頁)。要求:(1)設計測試數據以全面測試系統的正常操作;(2)設計測試數據以測試系統的非正常操作。7-6航空公司A向軟件公司B訂購了一個規劃飛行路線的程序。假設你是軟件公司C的軟件工程師,A公司已雇用你所在的公司對上述程序進行驗收測試。你的任務是,根據下述事實設計驗收測試的輸入數據,解釋你選取這些數據的理由。領航員向程序輸入出發點和目的地,以及根據天氣和飛機型號而初步確定的飛行高度。程序讀入途中的風向風力等數據,并且制定出3套飛行計劃(高度,速度,方向及途中的5個位置校核點)。所制定的飛行計劃應做到燃料消耗和飛行時間都最少。7-7嚴格說來,有兩種不同的路徑覆蓋測試,分別為程序路徑覆蓋和程序圖路徑覆蓋。這兩種測試可分別稱為程序的自然執行和強迫執行。所謂自然執行是指測試者(人或計算機)讀入程序中的條件表達式,根據程序變量的當前值計算該條件表達式的值(真或假),并相應地分支。強迫執行是在用程序圖作為程序的抽象模型時產生的一個人為的概念,它可以簡化測試問題。強迫執行的含義是,一旦遇到條件表達式,測試者就強迫程序分兩種情況(條件表達式的值為真和為假)執行。顯然,強迫執行將遍歷程序圖的所有路徑,然而由于各個條件表達式之間存在相互依賴的關系,這些路徑中的某一些在自然執行時可能永遠也不會進入。為了使強迫執行的概念在實際工作中有用,它簡化測試工具的好處應該超過它使用額外的不可能達到的測試用例所帶來的壞處。在絕大多數情況下,強迫執行的測試數并不比自然執行的測試數大很多,此外,對強迫執行的定義實際上包含了一種技術,能夠縮短在測試含有循環的程序時所需要的運行時間。程序的大部分執行時間通常用于重復執行程序中的DO循環,特別是嵌套的循環。因此必須發明一種技術,使得每個DO循環只執行一遍。這樣做并不會降低測試的功效,因為經驗表明第一次或最后一次執行循環時最容易出錯。Laemmel教授提出的自動測試每條路徑的技術如下:當編寫程序時每個DO循環應該寫成一種包含測試變量T和模式變量M的特殊形式,因此DOI=1TO38應變成DOI=1TOM*38+(1-M)*T可見,當M=0時處于測試模式,而M=1時處于正常運行模式。當處于測試模式時,令T=0則該循環一次也不執行,令T=1則該循環只執行一次。類似地應該使用模式變量和測試變量改寫IF語句,例如IFX+Y>0

THEN

Z=X

ELSE

Z=Y應變成IFM*(X+Y)+T>0

THEN

Z=X

ELSE

Z=Y正常運行時令M=1和T=0,測試期間令M=0,為測試THEN部分需令T=+1,測試ELSE部分則令T=-1。要求:(1)選取一個包含循環和IF語句的程序,用Laemmel技術修改這個程序,上機實際測試這個程序并解釋所得到的結果。(2)設計一個程序按照Laemmel技術自動修改待測試的程序。利用這個測試工具修改上一問中人工修改的程序,兩次修改得到的結果一致嗎?(3)怎樣把Laemmel技術推廣到包含WHILEDO和REPEATUNTIL語句的程序?(4)試分析Laemmel技術的優缺點并提出改進意見。7-8對一個包含10000條機器指令的程序進行一個月集成測試后,總共改正了15個錯誤,此時MTTF=10h;經過兩個月測試后,總共改正了25個錯誤(第二個月改正了10個錯誤),MTTF=15h。要求:(1)根據上述數據確定MTTF與測試時間之間的函數關系,畫出MTTF與測試時間τ的關系曲線。在畫這條曲線時做了什么假設?(2)為做到MTTF=100h,必須進行多長時間的集成測試?當集成測試結束時總共改正了多少個錯誤,還有多少個錯誤潛伏在程序中?7-9如對一個長度為100000條指令的程序進行集成測試期間記錄下下面的數據:(a)7月1日:集成測試開始,沒有發現錯誤。(b)8月2日:總共改正100個錯誤,此時MTTF=0.4h(c)9月1日:總共改正300個錯誤,此時,MTTF=2h根據上列數據完成下列各題:(1)估計程序中的錯誤總數;(2)為使MTTF達到10h,必須測試和調試這個程序多長時間?(3)畫出MTTF和測試時間τ之間的函數關系線。7-10在測試一個長度為24000條指令的程序時,第一個月由甲、乙兩名測試員各自獨立測試這個程序。經一個月測試后,甲發現并改正20個錯誤,使MTTF達到10h。與此同時,乙發現24個錯誤,其中6個甲也發現了。以后由甲一個人繼續測試這個程序。問:(1)剛開始測試時程序中總共有多少個潛藏的錯誤?(2)為使MTTF達到60h,必須再改正多少個錯誤?還需用多長測試時間?(3)畫出MTTF與集成測試時間τ之間的函數關系曲線。第8章

維護8-1軟件的可維護性與哪些因素有關?在軟件開發過程中應該采取哪些措施才能提高軟件產品的可維護性?8-2假設你的任務是對一個已有的軟件做重大修改,而且只允許你從下述文檔中選取兩份:(a)程序的規格說明;(b)程序的詳細設計結果(自然語言描述加上某種設計工具表示);(c)源程序清單(其中有適當數量的注解)。你將選取哪兩份文檔?為什么這樣選取?你打算怎樣完成交給你的任務?8-3分析預測在下列系統交付使用以后,用戶可能提出哪些改進或擴充功能的要求。如果由你來開發這些系統,你在設計和實現時將采取哪些措施,以方便將來的修改?(1)儲蓄系統(參見習題2第2題);(2)機票預訂系統(參見習題2第3題);(3)患者監護系統(參見習題2第4題)。第9章

面向對象方法學引論9-1什么是面向對象方法學?它有哪些優點?9-2什么是“對象”?它與傳統的數據有何異同?9-3什么是“類”?9-4什么是“繼承”?9-5什么是模型?開發軟件為何要建模?9-6什么是對象模型?建立對象模型時主要使用哪些圖形符號?這些符號的含義是什么?9-7什么是動態模型?建立動態模型時主要使用哪些圖形符號?這些符號的含義是什么?9-8什么是功能模型?建立功能模型時主要使用哪些圖形符號?9-9試用面向對象觀點分析、研究本書第2章中給出的定貨系統的例子。在這個例子中有哪些類?試建立定貨系統的對象模型。9-10建立定貨系統的用例模型。第10章

面向對象分析10-1用面向對象方法分析研究本書習題2第2題中描述的儲蓄系統,試建立它的對象模型、動態模型和功能模型。10-2用面向對象方法分析研究本書習題2第3題中描述的機票預訂系統,試建立它的對象模型、動態模型和功能模型。10-3用面向對象方法分析研究本書習題2第4題中描述的患者監護系統,試建立它的對象模型、動態模型和功能模型。10-4下面是自動售貨機系統的需求陳述,請建立它的對象模型、動態模型和功能模型:自動售貨機系統是一種無人售貨系統。售貨時,顧客把硬幣投入機器的投幣口中,機器檢查硬幣的大小、重量、厚度及邊緣類型。有效的硬幣是一元幣、五角幣、一角幣、五分幣、二分幣和一分幣。其他貨幣都被認為是假幣。機器拒絕接收假幣,并將其從退幣孔退出。當機器接收了有效的硬幣之后,就把硬幣送入硬幣儲藏器中。顧客支付的貨幣根據硬幣的面值進行累加。自動售貨機裝有貨物分配器。每個貨物分配器中包含零個或多個價格相同的貨物。顧客通過選擇貨物分配器來選擇貨物。如果貨物分配器中有貨物,而且顧客支付的貨幣值不小于該貨物的價格,貨物將被分配到貨物傳送孔送給顧客,并將適當的零錢返回到退幣孔。如果分配器是空的,則和顧客支付的貨幣值相等的硬幣將被送回到退幣孔。如果顧客支付的貨幣值少于所選擇的分配器中貨物的價格,機器將等待顧客投進更多的貨幣。如果顧客決定不買所選擇的貨物,他投放進的貨幣將從退幣孔中退出。第11章

面向對象設計11-1面向對象設計應該遵循哪些準則?簡述每條準則的內容,并說明遵循這條準則的必要性。11-2簡述有助于提高面向對象設計質量的每條主要啟發規則的內容和必要性。11-3為什么說類構件是目前比較理想的可重用軟構件?它有哪些重用方式?11-4試用面向對象方法,設計本書第2章中給出的定貨系統的例子。11-5試用面向對象方法,設計本書習題2第2題中描述的儲蓄系統。11-6試用面向對象方法,設計本書習題2第3題中描述的機票預訂系統。11-7試用面向對象方法,設計本書習題2第4題中描述的患者監護系統。第12章

面向對象實現12-1面向對象實現應該選用哪種程序設計語言?為什么?12-2面向對象程序設計語言主要有哪些技術特點?12-3選擇面向對象程序設計語言時主要應該考慮哪些因素?12-4良好的面向對象程序設計風格主要有哪些準則?12-5測試面向對象軟件時,單元測試、集成測試和確認測試各有哪些新特點?12-6測試面向對象軟件時,主要有哪些設計單元測試用例的方法?12-7測試面向對象軟件時,主要有哪些設計集成測試用例的方法?12-8測試面向對象軟件時,主要有哪些設計確認測試用例的方法?12-9試用C++語言實現(編程并測試)本書習題11第4題要求設計的定貨系統。第13章

軟件項目管理13-1研究本書2.4.2小節所述的定貨系統,要求:(1)用代碼行技術估算本系統的規模;(2)用功能點技術估算本系統的規模;(3)用靜態單變量模型估算開發本系統所需的工作量;(4)假設由一個人開發本系統,請制定進度計劃;(5)假設由兩個人開發本系統,請制定進度計劃。13-2研究本書習題2第2題中描述的儲蓄系統,要求:(1)用代碼行技術估算本系統的規模;(2)用功能點技術估算本系統的規模;(3)用靜態單變量模型估算開發本系統所需的工作量;(4)假設由一個人開發本系統,請制定進度計劃;(5)假設由兩個人開發本系統,請制定進度計劃。13-3下面敘述對一個計算機輔助設計(CAD)軟件的需求:該CAD軟件接受由工程師提供的二維或三維幾何圖形數據。工程師通過用戶界面與CAD系統交互并控制它,該用戶界面應該表現出良好的人機界面特征。幾何圖形數據及其他支持信息都保存在一個CAD數據庫中。開發必要的分析、設計模塊,以產生所需要的輸出,這些輸出將顯示在各種不同的圖形設備上。應該適當地設計軟件,以便與外部設備交互并控制它們。所用的外部設備包括鼠標、數字化掃描儀和激光打印機。要求:(1)進一步精化上述要求,把CAD軟件的功能分解成若干個子功能;(2)用代碼行技術估算每個子功能的規模;(3)用功能點技術估算每個子功能的規模;(4)從歷史數據得知,開發這類系統的平均生產率是620LOC/pm,如果軟件工程師的平均月薪是8000元,請估算開發本系統的工作量和成本;(5)如果從歷史數據得知,開發這類系統的平均生產率是6.5FP/pm,請估算開發本系統的工作量和成本。13-4假設你被指定為項目負責人,你的任務是開發一個應用系統,該系統類似于你的小組以前做過的那些系統,但是規模更大且更復雜一些。客戶已經寫出了完整的需求文檔。你將選用哪種項目組結構?為什么?你打算采用哪種(些)軟件過程模型?為什么?13-5假設你被指派為一個軟件公司的項目負責人,你的任務是開發一個技術上具有創新性的產品,該產品把虛擬現實硬件和最先進的軟件結合在一起。由于家庭娛樂市場的競爭非常激烈,這項工作的壓力很大。你將選擇哪種項目組結構?為什么?你打算采用哪種(些)軟件過程模型?為什么?13-6你被指派作為一個大型軟件產品公司的項目負責人,你的工作是管理該公司已被廣泛應用的字處理軟件的新版本開發。由于市場競爭激烈,公司規定了嚴格的完成期限并且對外公布了。你將選擇哪種項目組結構?為什么?你打算采用哪種(些)軟件過程模型?為什么?13-7什么是軟件質量?請敘述它與軟件可靠性的關系。13-8一個程序能既正確又不可靠嗎?請解釋你的答案。13-9僅當每個與會者都在事先作了準備時,正式的技術復審才能取得預期的效果。如果你是復審小組的組長,你怎樣發現事先沒做準備的與會者?你打算采取什么措施來促使大家事先做準備?13-10什么是基線?為什么要建立基線?13-11配置審計和技術復審有何不同?可否把它們的功能放在一次復審中完成?13-12CMM的基本思想是什么?為什么要把能力成熟度劃分成5個等級?目錄第一章軟件工程學概述第二章可行性研究第三章需求分析第四章總體設計第五章詳細設計第六章實現第七章維護第八章面向對象分析第九章面向對象設計與實現第十章軟件項目管理

第一章軟件工程學概述1.什么是軟件危機?2.為什么會產生軟件危機?3.怎樣克服軟件危機?4.構成軟件項目的最終產品?5.什么是軟件生存周期?6.軟件生存周期為什么劃分成階段?7.應該怎樣來劃分階段?8.軟件開發模型有幾種?它們的開發方法有何特點?9.什么是軟件工程?10.什么是軟件工程環境?11.什么是軟件危機?產生軟件危機的原因?怎樣消除?12.什么是軟件工程?包括哪些內容?13.軟件生存周期包含哪些內容?14.軟件開發模型有幾種?各有什么特點?15.原型開發技術的目的,特點是什么?16.何為軟件?軟件可分哪幾種類?17.軟件危機主要有哪些表現?18.什么是軟件工程?試說明軟件工程是如何克服軟件危機的。19.面向對象生存期模型與傳統的生存期模型有什么區別?20.列出兩種以上的軟件開發過程模型。并說明各自的特點。21.軟件技術審查和管理復審的作用是什么?22.軟件開發與寫程序有什么不同?23.什么是原型?原型應具有什么特點?24.什么是原型開發?原型開發包括那幾類?25.原型開發由哪幾個步驟組成?第二章可行性研究

1.問題定義的任務和主要工作?2.可行性研究目的?3.可行性研究的任務?4.可行性研究包括哪幾方面的內容?5.可行性研究的步驟?6.可行性研究報告的主要內容?7.在軟件開發的早期階段,為什么要進行可行性研究?應該從哪些方面研究目標系統的可行性?8.一個軟件開發系統的可行性研究報告應如何編寫?9.數據流圖有哪幾種基本符號?10.畫數據流圖原則是什么?11.數據流圖在軟件分析中的作用是什么?12.數據字典的作用?13.什么是數據字典?有幾個定義?各自特點是什么?14.有幾種效益的分析方法?第三章需求分析

1.需求分析的描述工具有哪些?2.需求分析的基本任務是什么?3.怎樣建立目標系統的邏輯模型?要經過哪些步驟?4.什么是結構化分析?它的結構化體現在哪里?5.軟件需求規格說明書由哪些部分組成?6.為什么數據流圖要分層?畫分層的DFD要遵循哪些原則?7.系統流程圖與數據流圖有什么區別?8.數據字典包括哪些內容?它的作用是什么?9.需求分析的任務是什么?10.需求分析通常采用哪些分析技術?11.什么是結構化分析?他的結構化體現在哪里?12.分析員職責是什么?分析員應具備什么條件?13.分析員應采取哪些方法來明確需求?14.建立系統模型有什么作用?15.建立良好的規格說明的原則有哪些?16.為什么要進行規格說明評審?17.數據流圖作用是什么?18.數據字典的作用是什么?數據字典中包含了哪些信息?19.何為結構化分析方法?他在發展過程中得到了哪些擴充?21.描述加工邏輯的工具有哪些?22.某單位擬開發一個計算機房產管理系統,要求系統具有分房、調房、退房和查詢統計等功能。房產科將用戶申請表輸入系統后,系統首先檢查申請表的合法性,對不合法的申請表,系統拒絕接收;對合法的申請表根據類型分別進行處理。(1)如果是分房申請,則根據申請者的情況(年齡、工齡、職稱、職務、家庭人口等)計算其分數,當分數高于閥值分數時,按分數高低將申請單插到分房隊列的適當位置。在進行分房時,從空房文件中讀出空房信息,如房號、面積、等級、單位面積房租等,把好房優先分給排在分房隊列前面的符合該等級房條件的申請者;從空房文件中刪掉這個房號的信息,并從分房隊列中刪掉該申請單,再把此房號的信息和住戶信息一起寫到住房文件中,輸出住房分配單給住戶,同時計算房租,并將算出的房租寫到房租文件中。(2)如果是退房申請,則從住房文件和房租文件中刪除有關信息,再把此房號的信息寫到空房文件中。(3)如果是調房申請,則根據申請者的情況確定其住房等級,然后在空房文件中查找屬于該等級的空房,退掉原住房,再進行與分房類似的處理。(4)住戶可以向系統查詢目前分房的閥值分數,居住某類房屋的條件,某房號的單位面積及房租等信息。房產科可以要求系統打印住房情況的統計表,或更改某類房屋的居住條件、單位面積和房租等。用數據流圖描繪該系統的功能需求;在數據字典中給出主要的數據流、文件和加工說明。第四章總體設計

1.總體設計包括哪兩個階段?2.總體設計的主要任務是什么?3.什么是模塊?模塊具有哪幾個特征?總體設計主要考慮什么特征?4.什么是模塊化?模塊設計準則?5.變換型數據流由哪幾部分組成?6.變換分析設計的步驟?7.事務型數據流由哪幾部分組成?8.事務分析設計的步驟?9.比較層次方框圖與結構圖是的異同?10.簡述總體設計的一般過程?11.什么叫軟件結構?什么叫軟件工程?二者之間關系?12.解釋深度、寬度、扇出、扇入對軟件的影響。13.什么叫模塊化?M代表的含義是什么?14.模塊化的三個重要特征是什么?闡明各自的作用。15.舉例說明各種耦合情況和各種內聚情況。16.簡述設計準則的內容。17.簡述層次方框圖與軟件結構圖的異同點。18.事物型軟件結構圖有什么特點?原因是什么?19.什么是面向數據流的設計?數據流包括哪幾種?20.怎樣完成從數據流圖到程序結構圖的轉換?21.面向數據流的設計方法包含那些步驟?22.Jackson結構化編程方法是以控制技術為中心還是以數據結構為中心?為什么?23.為什么說軟件設計十分重要?24.完成良好的軟件設計應遵循哪些原則?25.抽象有哪幾種形式?他們各起什么作用?26.如何理解模塊獨立性?用什么指標來衡量模塊獨立性?27.為什么數據設計是設計活動中十分重要的一項?進行數據設計應遵循什么原則?28.何為體系結構設計?進行體系結構設計應遵循什么原則?29.什么是結構化設計?他在軟件發展史上具有什么地位?30.過程設計語言具有哪些特征?31.欲開發一個銀行的活期存取款業務的處理系統:儲戶將填好的存/取款單和存折交給銀行工作人員,然后由系統作以下處理:(1)業務分類處理:系統首先根據儲戶所填的存/取款單,確定本次業務的性質,并將存/取款單和存折交下一步處理;(2)存款處理:系統將存款單上的存款金額分別記錄在存折和帳目文件中,并將現金存入現金庫;最后將存折還給儲戶;(3)取款處理:系統將取款單上的取款金額分別記錄在存折和帳目文件中,并從現金庫提取現金;最后將現金和存折還給儲戶。繪制該系統的數據流圖和軟件結構圖。第五章詳細設計

一.回答問題1.詳細設計的目的?2.詳細設計的主要任務?3.結構化程序設計的基本原則?4.比較面向數據流和面向數據結構兩類設計方法的異同?5.比較Jackson方法和LCP方法的異同?6.詳細設計的描述工具應具備什么功能?7.詳細設計的任務是什么?8.什么是結構化程序設計?用N-S圖表示三種基本結構。9.簡述Jackson程序設計方法的主要內容。10.簡述Wariner程序設計方法的主要內容。11.McaHei(Muahe,筆記有些模糊,未校正)方法的核心是什么?有何用途?12.如何表示數據的順序結構、選擇結構、重復結構?13.什么是原型開發語言?它具有什么性質?14.如何使原型開發語言可執行?15.編程語言從心里工程角度看各具有什么特性?16.評價選擇可用編程語言的準則是什么?17.舉例說明編程語言對軟件工程的各個步驟的影響。18.編程語言中的基礎有哪些方面?19.第一代至第四代語言是如何劃分的?各具有什么特點?包括那些語言?20.程序中與編程風格有關的因素有哪些?為建立良好的編程風格應遵循什么原則?21.提高編程效率應從哪些方面著手?22.人機界面設計包括哪些方面?23.在人機界面設計中應如何考慮用戶的使用要求?24.人機界面的設計應遵循什么原則?25.人機交互方式分哪幾種?26.如何采用結構化的分析方法和面向對象分析方法來明確人機界面設計的任務?27.在進行人機界面設計的初期(概要設計階段)必須解決那些問題?28.人機界面的開發主要采用那些模型?29.界面設計有哪些一般準則?30.何為智能人機界面?智能人機界面由哪幾部分構成?各部分之間存在什么關系?31.多媒體技術可用于解決人機界面設計中的什么問題?32.什么是Halstead軟件科學度量?這種方法的實質是什么?它可以用來進行軟件質量哪些方面的度量?它有哪些優缺點?33.什么是McCabe復雜性度量?這種方法的實質是什么?它可以用來進行軟件質量哪些方面的度量?它有哪些優點?二.給出一組數從小到大的排序算法,分別用下列工具描述其詳細過程:(1)流程圖;(2)N-S圖;(3)PAD圖;(4)PDL語言。三.根據后面給出"卡片的分類及統計"項目說明,完成下列工作:(1)用Jackson圖表示輸入與輸出數據結構,找出它們之間的對應單元;(2)畫出用Jackson圖表示的程序結構;(3)列出程序所需用的操作,并加到上一步畫出的程序結構圖上;(4)用Jackson偽代碼寫出程序的過程表示。輸入卡片分析程序。一疊輸入卡片按內容分為K1、K2、K3三類,卡片的排列規則是:以K1卡始,以K2卡終。起始卡之前屬前置部分,不含K1卡;起始卡與終了卡之間屬分批部分,不含K2卡。如圖:試用Jackson方法編一程序,要求依次完成下列分析工作:-----統計起始卡前卡片的張數,存入A;-----打印起始卡的內容;-----統計起始卡后出現的K1卡和K3卡總批數,存入B;-----統計起始卡后出現的K1卡的張數,存入C;-----統計起始卡后出現的K3卡的批數,存入D;-----打印終了卡的內容;-----打印A、B、C、D四個統計值。第六章實現

一.回答問題1.軟件測試的基本任務?2.測試與調試的主要區別?3.人工復審的方式和作用?4.什么是黑盒測試?黑盒測試主要采用的技術有哪些?5.什么是白盒測試?白盒測試主要采用的技術有哪些?6.路徑測試技術中幾種主要覆蓋的含義?舉例說明?7.等價分類法的測試技術采用的一般方法?舉例說明?8.軟件測試的一般步驟?9.比較集合測試的兩種方式的優劣?10.軟件測試的策略?11.簡述程序設計語言兩次本質性變化的內容及意義。12.C語言屬于第幾代語言?第四代語言特點是什么?13.簡述高級語言的應用特點和內在特點。14.試分析程序設計語言特點及軟件可靠性、可理解性、可修改性、可測試性及成本的關系。15.選擇一種語言的實用標準是什么?16.簡述開發環境、計算機體系結構、軟件設計方法、軟件開發過程與程序設計語言之間的促進和制約作用。17.程序的編碼風格主要體現在哪幾個方面?18.軟件測試的基本任務是什么?測試與調試區別是什么?19.軟件測試的目標是什么?20.軟件測試分幾個步驟進行?每個步驟解決什么問題?21.軟件測試有幾種方法?每種方法的特點是什么?22.軟件出錯有幾種類型?驗證其程序正確性有幾種方法?23.什么是單元測試和集成測試?他們各有什么特點?24.簡述漸增式測試方法與非漸增式測試方法的優劣。25.簡述存根程序驅動程序的作用。26.編最大、最小公倍數程序,并為它設計測試用例。27.測試的具體任務是什么?為什么說調試是軟件開發過程中最艱巨的任務?28.舉出幾種常用的測試工具,說明他們的用法。29.為什么說軟件測試是軟件開發中不可缺少的重要的遺患,但不是軟件質量保證的“安全網”?30.為什么把軟件測試的目標定義為只是發現錯誤?31.軟件測試應當遵循什么原則?為什么要遵循這些原則?32.單元(模塊)測試、組裝測試和確認測試各自主要的目標是什么?他們之間有哪些不同?相互有什么關系?33.什么是黑盒子測試和白盒子測試?他們都適應哪些測試?34.單元測試時,為什么需要另外開發驅動程序和連接程序?35.比較在組裝測試中,自頂向下與自底向上、先深度后寬度與先寬度后深度結合的優缺點。36.為什么說在確認測試階段,如果發現對用戶需求理解的錯誤,要修改就要付出極大的代價?37.什么是軟件測試中邏輯覆蓋?什么是語句、分支、條件、分支/條件、多重合循環覆蓋?一般軟件測試至少應保證哪些覆蓋?為什么?38.什么叫等價劃分?在確定等價劃分測試用例中,為什么在設計一個測試用例時,要使其盡可能多的覆蓋未被覆蓋過的合理的等價類,而是其只覆蓋且僅一個未被覆蓋過的不合理的等價類?39.什么是邊界值分析?他與等價類劃分有什么不同?40.什么是因果圖?他用于何處?41.什么是程序圖?他用于何處?42.糾錯技術中的歸納法和演繹法的中心思想是什么?43.什么是軟件測試中的回溯測試?他有什么用處?44.為什么實時系統測試較一般系統測試要困難得多?45.MTTF的含義是什么?如何計算Et值?46.假設有一個由1000行Pascal語句構成的程序(編譯后約有5000條機器指令),請估算對它進行測試期間將發現多少錯誤。為什么?二.某電力公司有A、B、C、D共四類收費標準,并規定,居民用電每月200度以下按A類收費,200度以上按B類收費。動力電以每月1萬度為分界,非高峰用電不足1萬度按B類收費,達到或超過1萬度按C類收費。高峰用電不足1萬度按C類收費,達到或超過1萬度按D類收費。試用基于邏輯的測試方法為它設計足夠的測試用例實現條件組合的完全覆概。三.如圖顯示某程序的邏輯結構。試為它設計足夠的測試用例,分別實現對程序的判定覆概、條件覆概和條件組合覆概。四.某城市電話號碼由三部分組成。它們的名稱和內容分別是:地區碼:空白或三位數字;前綴:非'0'或'1'的三位數字;后綴:4位數字。假定被測程序能接受一切符合上述規定的電話號碼,拒絕所有不符合規定的電話號碼。根據該程序的規格說明,作等價類的劃分,并設計測試方案。第七章維護

1.為什么說軟件的維護是不可避免的?2.軟件的維護一般分為哪幾類?3.影響軟件維護的因素有哪些?4.軟件維護困難主要表現在什么方面?5.決定軟件可維護性的因素?6.軟件價格應該計入維護成本嗎?為什么?7.對前面各章中分析的各應用系統,提出改進和擴充功能的要求?(1)教材銷售采購系統;(2)圖書管理系統;(3)房產管理系統。8.什么叫軟件維護?軟件維護的基本內容是什么?9.軟件維護分幾類?每類的基本內容是什么?占軟件維護總工作量的百分比是多少?10.軟件維護有哪些特點?11.簡述軟件的維護過程。12.軟件的可維護性與哪些因素有關?在軟件開發過程中應采取哪些措施才能提高軟件產品的可維護性?13.什么是軟件工程的文檔?分哪兩大類?每類內容是什么?14.計算軟件價格時,應不應該把維護費用計入成本?為什么?15.什么是軟件可靠性和軟件可用性?他們能否定量計算?16.什么是軟件安全性?軟件安全性與軟件可靠性有什么不同?為什么有了軟件可靠性還要考慮軟件安全性?軟件安全性應從哪些方面去考慮?17.為什么說軟件質量保證中最重要的兩個方面是:對軟件質量保證活動和軟件配置的審計;軟件質量保證計劃的制定和標準的采用?18.根據統計,軟件維護工作量占軟件整個生存周期工作量的10%~70%,這個比例隨著時間的退役還在增加,為什么軟件維護需要這么大的工作量?19.軟件維護分哪幾種類型?根據統計,在軟件維護中,那種類型的維護所占的比重最大?那種類型的維護所占的比重最小?能說出他們的原因嗎?20.軟件維護工作有哪些特點?為什么?21.什么是軟件維護的副作用?如何防止軟件維護的副作用?22.什么是軟件的可維護性?如何提高軟件的可維護性?軟件的可維護性與軟件維護工作有什么關系?為什么在軟件開發過程中,要特別重視軟件的可維護性?23.軟件的可維護性與那些軟件質量特性有關?能確定它們的優先次序嗎?24.什么是軟件的反推工程和再生工程?他們主要用于何處?25.一個軟件的維護任務的工作程序是什么?是否需要設立專門的維護機構?他們的職責是什么?26.如何保證和提高軟件維護工作的質量和效率?27.有人說:“修改軟件是危險的”,你對這句話有什么看法?28.根據統計,軟件維護工作量占軟件整個生存周期工作量的10%~70%,這個比例隨著時間的退役還在增加,為什么軟件維護需要這么大的工作量?29.軟件維護分哪幾種類型?根據統計,在軟件維護中,那種類型的維護所占的比重最大?那種類型的維護所占的比重最小?能說出他們的原因嗎?30.軟件維護工作有哪些特點?為什么?31.什么是軟件維護的副作用?如何防止軟件維護的副作用?32.什么是軟件的可維護性?如何提高軟件的可維護性?軟件的可維護性與軟件維護工作有什么關系?為什么在軟件開發過程中,要特別重視軟件的可維護性?33.軟件的可維護性與那些軟件質量特性有關?能確定它們的優先次序嗎?34.什么是軟件的反推工程和再生工程?他們主要用于何處?35.一個軟件的維護任務的工作程序是什么?是否需要設立專門的維護機構?他們的職責是什么?36.如何保證和提高軟件維護工作的質量和效率?37.有人說:“修改軟件是危險的”,你對這句話有什么看法?38.在軟件開發中,在重視技術問題的同時,為什么還要重視管理問題?兩者哪個重要?有哪些主要的管理問題?39.什么是軟件的工作范圍?一個軟件的工作范圍應包括哪些主要內容?對他們有些什么具體要求?40.在確定了軟件的工作范圍之后,為什么還要確定軟件開發所需要的人力資源、硬件資源和軟件資源?他們對軟件開發有什么影響?41.成本估算方法有哪幾種?42.影響軟件成本的主要因素有哪些具體方面?43.什么是IBM、SLIM和COCOMO成本估算模型?它們之間有什么不同?44.什么是軟件生產率數據?有哪些主要因素影響這些數據?為什么要重視這些數據?這些數據對軟件開發有什么意義?45.怎樣具體進行軟件成本估算?他們分哪幾步?46.什么是軟件開發工作量(人-周或人-月或人-年)?什么是軟件開發時間(周期)(周或月或年)?什么是軟件開發進度?三者之間有什么關系?47.在安排軟件開發進度時,應該考慮哪些問題?為什么?48.什么是軟件配置管理?他有什么作用?49.什么是基線?他在配置管理中有什么作用?50.什么是軟件配置管理的機制?有哪幾類機制?他們怎樣實現軟件配置管理?51.什么是軟件開發組織?開發組織有哪幾種方式?52.什么是主程序員小組?這種組織形式有什么好處?53.什么是軟件產權?為什么軟件產權要保護?54.什么是著作權、版權和專利權?他們有哪些異同?55.什么是商標權和商業秘密權?56.著作權有哪幾種登記方式?辦理軟件著作權登記有哪些基本要求?57.著作權為什么要進行登記?第八章面向對象分析

1.簡述面向對象分析技術的主要步驟?2.面向對象設計涉及那幾個主要活動?面向對象設計如何體現三個主要的軟件設計概念:抽象信息、隱藏和模塊化?3.面向對象分析涉及那幾個主要活動?如何應用系統建模?4.Booch方法中運用了那幾類圖表?他們各有什么作用?5.Booch方法包括那些開發步驟?第九章面向對象設計與實現1.面向對象設計的準則是什么?2.面向對象設計的方法有哪些?3.面向對象語言必須支持那些概念?4.面向對象編程語言分幾大類?5.試說明面向對象編程語言用哪些機制支持面向對象方法的基本概念?第十章軟件項目管理

1.軟件工程管理的內容?2.軟件項目有哪些特點?3.軟件成本估算的一般方法?4.為什么在軟件開發中,不能用簡單增加人員的方法來縮短開發時間?5.影響軟件質量的主要因素有哪些?6.本章第四節的例子是某個軟件項目的PERT圖。(1)找出關鍵路徑和完成項目的最早時間;(2)標出每項活動的最早起止時間與最遲起止時間。7.將上題的內容改用Gantt圖來表示。8.軟件項目分幾類?劃分依據是什么?9.簡述軟件項目的特點和項目中人員的特點對軟件管理的影響。10.軟件職能管理的具體內容是什么?11.為什么說“時間和人員不能交換”?試說明其原因。12.軟件質量的含義是什么?13.影響軟件質量的因素分哪兩大類?14.Boehm和McCall等人從哪些方面來確定軟件質量?他們有什么異同?15.ISO1985提出的關于軟件質量度量模型有哪三個層次組成?它有哪些特點?16.軟件質量的各種特性怎樣度量?17.什么是軟件質量保證的策略?現代軟件質量保證的策略是什么?18.軟件質量保證活動有哪七個主要方面?如缺少一兩個方面行不行?是否還有沒有考慮到的方面?19.為什么說軟件正是技術評審是軟件質量保證的一個最基本的活動?20.為什么在軟件進行技術評審中要有一張預先設定的評審檢查表?選擇題匯編1.軟件生存周期模型有多種,下列選項中,(C)不是軟件生存周期模型。A.螺旋模型B.增量模型C.功能模型D.瀑布模型2.軟件生存周期包括可行性分析和項目開發計劃、需求分析、概要設計、詳細設計、編碼、(B)、維護等活動。A.應用B.測試C.檢測D.以上答案都不對3.準確地解決“軟件必須做什么”是(C)階段的任務。A.可行性研究B.詳細設計C.需求分析D.編碼4.瀑布模型中軟件生命周期劃分為8個階段:問題定義、可行性研究、軟件需求分析、總體設計、詳細設計、編碼、測試和運行、維護。8個階段又可以歸納為3個大的階段:計劃階段、開發階段和(A)。A.運行階段B.可行性分析C.詳細設計D.測試與排錯5.從結構化的瀑布模型看,在軟件生命周期的8個階段中,下面的幾個選項中,(C)出錯,對軟件的影響最大。A.詳細設計階段B.總體設計階段C.需求分析階段D.測試和運行階段6.目前存在有若干種軟件生存周期模型。例如瀑布模型、增量模型、螺旋模型、噴泉模型等。其中規定了由前至后、相互銜接的固定次序的模型是(A)。A.瀑布模型B.增量模型C.噴泉模型D.螺旋模型7.瀑布模型是一種(D)。

A.軟件開發方法B.軟件生存周期C.程序設計方法學D.軟件生存周期模型8.快速原型模型的主要特點之一是(B)。A.開發完畢才見到產品B.及早提供工作軟件C.及早提供全部完整軟件D.開發完畢才見到工作軟件9.研究開發資源的有效性是進行(A)可行性研究的一方面。A.技術B.經濟C.社會D.操作10.技術可行性是要解決(D)。A.存在侵權否B.成本——效益問題C.運行方式可行D.技術風險問題11.可行性分析中,系統流程圖用于描述(A)。A.當前運行系統B.當前邏輯模型C.目標系統D.新系統12.研究軟硬件資源的有效性是進行(A)研究的一方面。A.技術可行性B.經濟可行性C.社會可行性D.操作可行性13.可行性研究要進行的需求分析和設計應是(C)。A.詳細的B.全面的C.簡化、壓縮的D.徹底的14.系統流程圖是描述(D)的工具。A.邏輯系統B.程序系統C.體系結構D.物理系統15.數據流圖是用于表示軟件模型的一種圖示方法,在下列可采用的繪圖方法中,(D)是常采用的。A.自頂向下B.分層C.逐步求精D.全是16.加工是對數據流圖中不能再分解的基本加工的精確說明,下述()是加工的最核心。A.加工順序B.加工邏輯C.執行頻率D.激發條件17.需求分析(D)。A.要回答“軟件必須做什么?”B.可概括為:“理解,分解,表達”6個字C.要求編寫需求規格說明書D.以上都對18.進行需求分析可使用多種工具,但(C)是不適用的。A.數據流圖B.判定表C.PAD圖D.數據字典19.需求分析階段研究的對象是軟件項目的(A)。A.用戶要求B.合理要求C.模糊要求D.都不對20.在數據流圖中,不能被計算機處理的成分是(D)。A.控制流B.結點C.數據流D.數據源/終點21.結構化分析方法使用的描述工具(B)定義了數據流圖中每一個圖形元素。A.數據流圖B.數據字典C.判定表D.判定樹22.需求規格說明書的作用不應包括(D)。A.軟件設計的依據B.用戶與開發人員對軟件要做什么的共同理解C.軟件驗收的依據D.軟件可行性研究的依據23.軟件需求規格說明書的內容不應包括對(B)的描述。A.主要功能B.算法的詳細過程C.用戶界面及運行環境D.軟件的性能24.需求分析過程中,對算法的簡單描述記錄在(D)中。A.層次圖B.數據字典C.數據流圖D.IPO圖25.分層DFD是一種比較嚴格又易于理解的描述方式,它的頂層圖描述了系統的(B)。A.細節B.輸入與輸出C.軟件的作者D.繪制的時間26.數據存儲和數據流都是(D),僅僅所處的狀態不同。A.分析結果B.事件C.動作D.數據27.數據字典中,一般不包括下列選項中的(D)條目。A.數據流B.數據存儲C.加工D.源點與終點28.在軟件需求分析中,開發人員要從用戶那里解決的最重要的問題是(A)。A.要讓軟件做什么B.要給該軟件提供哪些信息C.要求軟件工作效率怎樣D.要讓軟件具有何種結構29.需求分析的最終結果是產生(C)。A.項目開發計劃B.可行性分析報告C.需求規格說明D.設計說明書30.需求分析階段不適于描述加工邏輯的工具是(D)。A.結構化語言B.判定表C.判定樹D.流程圖31.模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準是模塊的(C)。A.抽象和信息隱蔽B.局部化和封裝化C.內聚性和耦合性D.激活機制和控制方法32.模塊的獨立性是由內聚性和耦合性來度量的,其中內聚性是(B)。A.模塊間的聯系程度B.模塊的功能強度C.信息隱蔽程度D.接口的復雜程度33.在面向數據流的軟件設計方法中,一般將信息流分為(A)。A.變換流和事務流B.變換流和控制流C.事務流和控制流D.數據流和控制流34.下列選項中最強的內聚是(D)。A.過程性內聚B.通信性內聚C.順序性內聚D.功能性內聚35.下列選項中最弱的耦合是(A)。A.非直接耦合B.數據耦合C.特征耦合D.控制耦合36.軟件需求分析一般應確定的是用戶對軟件的(D)。A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求37.數據字典是對數據定義信息的集合,它所定義的對象都包含于(A)。A.數據流圖B.程序框圖C.軟件結構D.方框圖38.軟件工程結構化生命周期方法,提出將軟件生命周期劃分為計劃、開發和運行三個時期,下述(C)工作應屬于軟件開發期的內容。A.問題定義B.可行性研究C.總體設計D.都不是39.軟件結構使用的圖形工具,一般采用(C)圖。A.DFDB.PADC.SCD.E-R40.下列中屬于軟件設計的基本原理的是(D)。A.數據流分析設計B.變換流分析設計C.事務流分析設計D.模塊化41.將幾個邏輯上相似的成分放在一個模塊中,該模塊的內聚度是(A)的。A.邏輯性B.瞬時性C.功能性D.通信性42.模塊內的某成分的輸出是另一個成分的輸入,該模塊的內聚度是(B)的。A.功能性B.順序性C.邏輯性D.瞬時性43.軟件設計階段一般可分為(B)。A.邏輯設計和功能設計B.總體設計與詳細設計C.概念設計與物理設計D.模型設計與程序設計44.模塊中所有成分引用共同的數據,該模塊的內聚度是(D)的。A.邏輯性B.瞬時性C.功能性D.通信性45.好的軟件結構應該是(C)。A.高耦合、高內聚B.低耦合、高內聚C.高耦合、低內聚D.低耦合、低內聚46.結構分析法就是面向(B)自頂向下逐步求精進行需求分析

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論