日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件工程 实践者的研究方法 中文题答案

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程 实践者的研究方法 中文题答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

19.1用自己的話,描述為什么在面向對象系統中,類是最小的合理測試單元。

答:在面向對象軟件中,單元的概念發生了變化,不再是傳統軟件單元測試中關注的算 法細節和流經模塊接口數據,而是測試由封裝在類中的操作和類的狀態行為驅動。最小的可 測試單元是封裝了的類,一個類包含了不同的操作,而一個操作也是有不同的類組成的,傳 統的單元測試已經不再能滿足面向對象軟件的特點了,而以類作為最小的測試單元更加合理。

19.8運用隨機測試、劃分方法、多類測試及19.5, 19.6節所描述的銀行應用的行為模型導 出的測試,在另外生成4個測試。

答:隨機測試:

測試用 例 r1 :?open-setup-deposit-summarize-withdraw-close

劃分方法:

測試用例 r2:?open-setup-deposit-creditLimit -withdraw-close

多類測試:

測試用例 r3:?verifyAcct-verifyPIN-verifyPolicy-depositePeq

從行為模型導出的測試

測試用例 r4:?open-setupAccnt-deposit(initial)-withDraw-deposit-credit-accntInfo

-withdrawal(finial)-close

20.13導航語法測試與導航語義測試的區別是什么?

導航語法測試:確保允許WebApp用戶經由WebApp游歷的機制都是功能性的。對導航功能進行測試,以確保每個導航都執行了預計的功能。

導航語義測試:確認每個導航語義單元(MSU)都能被合適的用戶類獲得。“一組信 息和相關的導航結構,在完成相關的用戶需求的子集時,這些導航結構會相互協作"。每個 NSU有一系列連接導航節點的導航路徑定義。作為一個整體,每個NSU允許用戶獲得特殊 的需求,這種特殊的需求是針對某類用戶,有一個或多個用例定義的。導航測試應檢査每個 NSU,以確保能夠獲得這些需求。

20.17為使其成功,CornerPharmacy.com已經實現了一個特殊的服務,單獨處理處方的重 新填寫。平均情況下,1000個并發用戶每兩分鐘提交一次重填請求,WebApp下載500B 的數據塊來響應。此服務需要具有的吞吐量是多少Mb/s?

答: 吞吐量P=N*T*D

=(1000*0.5*500B) /60

=4167B/s

=0.033Mb/s

20. 18負載測試與壓力測試之間的區別是什么?

答:壓力測試主要是為了發現在一(任意)定條件下軟件系統性能的變化情況,通過改 變應用程序的輸入以對應用程序施加越來越大的負載(并發,循環操作,多用戶)并測量在 這些不同的輸入時性能的改變,也就是通常說的概念:壓力測試考察當前軟硬件環境下系統 所能承受的最大負荷并幫助找出系統瓶頸所在。其實這種測試也可以稱為負載測試,但是負 載測試通常描述一種特定類型的壓力測試——增加用戶數量以對應用程序進行壓力測試。比 如實際中我們說從比較小的負載開始,逐漸增加模擬用戶的數量,直到應用程序響應時間 超時,就是說的負載測試。

壓力測試的目標是測試在一定的負載下系統長時間運行的穩定性,尤其關注大業務量情 況下長時間運行系統性能的變化(例如是否反應變慢、是否會內存泄漏導致系統逐漸崩潰、 是否能恢復);壓力測試是測試系統的限制和故障恢復能力,它包括兩種情況:

(1)穩定性壓力測試:在選定的壓力值下,長時間持續運行。通過這類壓力測試,可以 考察各項性能指標是否在指定范圍內,有無內存泄漏、有無功能性故障等;

⑵破壞性壓力測試:在穩定性壓力測試中可能會出現一些問題如系統性能明顯降低, 但很難暴露出其真實的原因。通過破壞性不斷加壓的手段,往往能快速造成系統的崩潰或讓 問題明顯的暴露出來;

負載測試的目標是測試在一定負載情況下系統性能(不關注穩定性,也就是說不關注長 時間運行,只是得到不同負載下相關性能指標即可);實際中我們常從比較小的負載開始, 逐漸增加模擬用戶的數量(增加負載),觀察不同負載下應用程序響應時間、所耗資源, 直到超時或關鍵資源耗盡,這就是所說的負載測試,它是測試系統的不同負載情況下的性能 指標。

負載測試與壓力測試的最主要區別:

(1) 負載測試在于確定最終滿足系統指標的前提下,系統所能承受的最大負載測試。

壓力測試的目標則在確定什么條件下系統性能處于失效狀態

(2) 壓力測試主要是為了發現在一(任意)定條件下軟件系統性能的變化情況,通過改 變應用程序的輸入以對應用程序施加越來越大的負載(并發,循環操作,多用戶)并測量在 這些不同的輸入時性能的改變,也就是通常說的概念:壓力測試考察當前軟硬件環境下系統 所能承受的最大負荷并幫助找出系統瓶頸所在.

負載測試通常描述一種特定類型的壓力測試——增加用戶數量以對應用程序進行壓 力測試。比如實際中我們說從比較小的負載開始,逐漸增加模擬用戶的數量,直到應用程 序響應時間超時。

22.6研究某現有的SCM工具,然后大概描述它是如何實現版本控制和配置對象控制的。

答:版本控制:SCM工具記錄項目和文件的修改軌跡,跟蹤修改信息,使軟件開發工 作以基線漸進方式完成,從而避免了軟件開發不受控制的局面,使開發狀態變得有序。

SCM工具可以對同一文件的不同版本進行差異比較,可以恢復個別文件或整個項目的 早期版本,使用戶方便地得到升級和維護必需的程序和文檔。

SCM工具內部對版本的標識,采用了版本號方式,但對用戶提供了多種途徑來標識版 本,被廣泛應用的有版本號、標簽和時間戳。多樣靈活的標識手段,為用戶提供了方便。

配置對象控制:以Webapp為例,Webapp包括很多配置對象:內容對象、功能構件和 接口對象。可以按任何方式來標識Webapp對象,只要適用于組織就可以。但是,為了維護 不同平臺之間的兼容性,建議采用下面的約定:文件名長度應該不超過32個字符,避免使用大小寫昏黃的或全部大寫的名稱,也應避免使用下劃線。另外,配置對象內的URL地址 應該使用相對路徑。

22.8研究某現有的SCM工具,并描述它實現版本控制的方法。此外,閱讀2-3篇有關SCM 的文章,并描述用于版本控制的不同數據結構和引用機制。

答:SCM用如下方式實現版本控制:SCM工具記錄項目和文件的修改軌跡,跟蹤修改 信息,使軟件開發工作以基線漸進方式完成,從而避免了軟件開發不受控制的局面,使開發 狀態變得有序。

SCM工具可以對同一文件的不同版本進行差異比較,可以恢復個別文件或整個項目的 早期版本,使用戶方便地得到升級和維護必需的程序和文檔。

SCM工具內部對版本的標識,采用了版本號方式,但對用戶提供了多種途徑來標識版 本,被廣泛應用的有版本號、標簽和時間戳。多樣靈活的標識手段,為用戶提供了方便。

數據結構和引用機制:文件版本的組織體現在版本樹結構中,每個文件都可以通過 checkout-edit-checkin的命令形成多個版本,還可以包含多層分支和子分支。ClearCase可以 對目錄和子目錄進行版本控制,允許開發者對其數據的組織發展過程進行追蹤。日錄版本對 一些改變進行控制,如建立一個新文件、修改文件名、建立新的子目錄或在目錄間移動文件 等。同時也支持對目錄自動進行比較和歸并的操作。

(參考文獻:曹洪嵐“淺談軟件配置管理”中國會議2009.10.1

趙文杰“軟件配置管理理論與實踐”現代計算機(專業版)2010.12.25 )

22.12什么是內容管理?通過Web去研究內容管理工具的特性,并給出簡要的總結。

答:在某種意義上,內容管理和配置管理是相關的,因為內容管理系統確定了如何獲取 現有內容、如何按照能夠提交給最終用戶的方式構造現有內容、然后在客戶端環境下顯示這 些內容的過程。

內容管理系統在創建動態Webapp的時候最常用。動態Webapp能夠“動態的”創建 Web頁面,由用戶向Webapp請求特定信息,Webapp査詢數據庫并形成相應信息,然后提交給用戶。

?

第一章?

1.1舉出至少5個例子來說明“意外效應法則”在計算機軟件方面的應用。?答:典型的例子包括使用數字汽車儀表板的軟件,賦予高科技,高品質的圖像的軟件;如廣泛的消費類電子產品的軟件;個人電腦,工業儀器儀表和機器的軟件。軟件分化出的在電子商務方面的應用。?

1.2舉例說明軟件對社會的影響(包括正面影響和負面影響)。?

答:這是一個很好的課堂討論問題(如果時間允許),而不是專注于老生常談的(但很重要)隱私問題,生活質量等問題。您可能想要討論關于技術恐懼方面的問題,軟件也許會使它惡化但也可能減少技術恐懼。另一個有趣的方面是使用諾依曼的風險列在SEN中做重點討論。你也可以考慮基于軟件的現金經濟,新模式的互動娛樂,虛擬現實,電子商務等方面來思考軟件對社會的影響。?

1.3針對1.1節提出的5個問題,請給出你的答案,并與同學討論。?答:軟件需要如此長的開發時間:?

a)設施不上線?

b)開發工具并不如預期般運作?

c)客戶提出的新要求,需要重新設計和返工?

d)產品依賴于政府的規定,被意外更改。?

e)嚴格的要求,與現有系統的兼容性需要超過預期更多的測試,設計和實現。?f)多個操作系統下運行的任務需求比預期需要更長的時間。?

g)軟件項目風險管理比預期需要更多的時間。?

h)依賴的技術仍處于開發階段,從而延長日程安排。?

開發成本高:?

a)比當時預期低得令人無法接受的質量,需要進行更多的測試,設計和實施工作。?

b)制定了錯誤的軟件功能需要重新設計和實施。?

c)開發錯誤的用戶界面,而導致重新設計和實施。?

d)開發了不需要的額外的軟件功能而延長了開發日程安排。?

在將軟件交付顧客使用之前,我們無法找到所有錯誤:?

a)產品依賴于政府監管,意外而改變。?

b)產品技術標準草案,會意外更改。?

c)有時會在項目后期添加新的開發人員。?

d)因為團隊內的沖突有時會導致溝通不暢,而產生糟糕的設計。?

e)破壞高效調度產生的項目管理成果和無效的規劃?

f)有時裝備部件質量差,導致額外的測試,設計和集成工作和管理額外的客戶關系。?

軟件開發和維護的過程仍舊難以度量:?

a)有時該項目的目的是不明確。?

b)有大量的業務所涉及的風險。?

c)如果產品內置沒有裝好。?

d)我們需要不斷檢討我們的工作。?

e)進行維護檢查的時間。?

f)在整個軟件開發過程中要徹底組織項目團隊。?

1.4在交付最終用戶之前,或者首個版本投入使用之后,許多應用程序都會有頻繁的變更。為防止變更引起軟件退化,請提出一些有效的解決措施。?答:許多現代應用程序在他們呈現給最終用戶之前和第一個版本別使用后經常改變,以下幾個方面來阻止軟件惡化:?

a)收集所需的信息。?

b)設計師和客戶定義軟件的總體目標。?

c)識別已知的需求。?

d)使用現有的程序片段后,有助于建立原型的開發人員的工作計劃快速完成。?e)只有通過合格的培訓或經驗和充分揭露相關的不足,才能保持和提高我們的技術能力和讓?

f)其他人承擔技術任務?

g)文件應該被及時制定出來,在文件中應該有標準定義和機制建立。?h)完成某一特定階段的審查工作。?

i)每一個關鍵團隊成員應該配有一個后備人員?

j)檢查規避風險的步驟是否應用正確?

k)對未來的風險分析中檢查是否有必要收集必要的信息。?

1.5思考1.1.2節中提到的7個軟件分類。請問能否采用一個軟件工程方法,應用于所有的軟件分類,并就你的答案加以解釋。?

答:七個軟件分類可應用于同樣的方法。在這不確定的今天這些新的挑戰,無疑有很大的影響(對于商務人士,軟件工程師和最終用戶來說)然而,軟件工程師可以準備通過實例化一個過程,使其有足夠的靈活性和適應性,以適應劇烈變化的技術,這技術一定要在未來的很長一段時間被商業規則所接受。?

1.61-3中,將軟件工程三個層次放在了“質量關注點”這層之上。這意味著在整個開發組織內采用質量管理活動,如“全面質量管理”。仔細研究,并列出全面質量管理活動中關鍵原則的大綱。?

答:你也許建議同學閱讀第十六章的知識來解決問題。?

1.7隨著軟件的普及,由于程序錯誤所帶來的公眾風險已經成為一個愈加重要的問題。設想一個真實場景,由于軟件錯誤而引起“世界末日”般重大危害(危害社會經濟或是人類生命財產安全)。?

答:確實有很多現實生活中的情況來選擇,例如,軟件錯誤,造成了重大的電話網絡失敗。?

如在航空電子設備故障導致飛機墜毀。計算機病毒(如米開朗基羅)的攻擊給主要的電子商務網站造成了重大的經濟損失。?

1.8用自己的話描述過程框架。當我們談到框架活動適用于所有的項目時,是否意味著對于不同規模和復雜度的項目,可應用相同的工作任務,請解釋。?答:過程框架適用于所有的項目,在相同的工作任務,適用于所有項目,無論其規模大小或復雜性。一個過程框架涉及大量的與客戶溝通來收集需求;這個活動建立了一個軟件工程工作計劃。它涉及到創建模型,這將有助于開發人員

了解顧客的要求從而進行設計。從而涉及構建(代碼生成和錯誤測試)。最后,它提供了基于評價的反饋。?

1.9普適性活動存在于整個軟件過程中,你認為他們均勻分布于軟件過程中,還是會集中在某個或者某些框架活動中,?

答:傘活動在整個軟件過程中發生,它們被均勻地應用在整個過程中,分析還包含一系列的工作任務(例如需求收集,制定,協商規范和驗證),一個過程框架有一組傘被應用在整個軟件過程活動中。這些活動包括:軟件項目跟蹤和控制,風險管理,軟件質量保證,和正式的技術審查,測量,軟件配置管理,可重用性管理和工作產品的制作和生產。?

1.101.5節所列舉的神話中,增加兩種軟件神話,同時指出與其相對應的真實情況。?

答:沒有標準答案(例如測試可以解決所有的程序錯誤)。?

第二章?

2.1在本章的介紹中,Baetjer說過:“軟件過程為用戶和設計者之間、用戶和開發工具之間以及設計者和開發工具之間提供交互的途徑[技術]”。對于要構建的軟件產品,在以下方面設計五個問題:(a)設計者應該問用戶的問題;(b)用戶應該問設計者的問題;(c)用戶對將要構建的軟件自問的問題;(d)設計者對于軟件產品和建造該產品采取的軟件過程自問的問題。?

答:a)設計人員詢問用戶:?

產品滿意嗎或者它需要重新設計或返工嗎,?

征求用戶輸入來避免產品不滿意和要求返工。?

有新要求的需要嗎,?

該產品比估計的大嗎,?

與預期的相比模塊需要更多的測試,設計和實行工作來糾正嗎,?

b) 用戶詢問設計者的問題:?

范圍明確嗎,?

我們是否有開發工具和人員開發軟件所需的技能,?

定義的需求是正確的嗎,還有沒有額外的需要,?

特定領域的軟件產品比平時的花費更多的時間嗎,?

該模塊是否需要更多的設計測試,?

c)用戶對將要構建的軟件自問的問題:?

軟件產品的范圍和目的是什么?

該產品比估計的大嗎,?

有優秀的人可用嗎,?

工作人員可靠嗎有沒有具備所需要的技能,?

能保持工作人員的離職率足夠低嗎,?

d)設計者對于軟件產品和建造該產品采取的軟件過程自問的問題:?范圍和目的文件是什么,?

要使用什么樣的工具,?

有什么目標和規避風險的優先事項,?

對風險分析,識別,估計,評價和管理會有什么樣的步驟,?

2.2為溝通活動設計一些列的動作,選定一個動作作為其設計一個任務集。?答:任務交流活動設置:任務組將定義實際的工作需要,以完成一個軟件工程的行動。這些都是對于通信的活動:?

a)利益相關者對項目做一個列表。?

b)邀請所有利益相關者的非正式會議。?

c)要求他們作出特性和功能列表。?

d)討論需求并建立一個最終的的列表。?

e)他不確定的優先級的要求和要注意的地方。?

這些任務可能是一個復雜的軟件項目,然后,他們可能包括:?

a)要進行一系列的規范會議,基于利益相關者的輸入,建立了初步的功能和特性列表。?

b)要建立一個股權持有人要求的修訂清單。?

c)使用質量功能展開技術來滿足需求。?

d)注意在系統上的約束和限制。?

e)討論驗證系統的方法。?

2.3在溝通過程中,遇到兩位對軟件如何做有著不同想法的利益相關者是很常見的問題。也就是說你得到了相互沖突的需求。設計一種過程模式(可以是步驟模式),利用2.13節中針對此類問題的模板,給出一種行之有效的解決方法。?答:?

模式名:利益相關者的需求沖突。?

意圖:此模式描述的方式是解決利益相關者之間在通信框架活動中的沖突。?類型:階段模式。?

初始背景:(1)利益相關者已確定(2)利益相關者和軟件工程師已經建立了協作通信(3) 軟件要解決的主要問題由軟件開發團隊已建立。(4)對已開發的項目范圍,基本的業務需求和項目的限制有了初步的了解。?

問題:對正在開發的軟件,利益相關者的需求出現了相互的矛盾。?解決辦法:所有的利益相關者被要求區分需求的優先級,暫時保住利益相關者的優先級最高或投票的最多的需求從而解決這一問題。?

結果:由利益相關方的確定的需求優先順序列表來指導軟件開發團隊構件軟件初始模型。?

相關模式:定義指導和協作方針,范圍隔離,需求收集,約束描述和混合需求。?已知用途/范例:必要的溝通是貫通整個軟件工程中。?

2.4閱讀[Nog001],然后寫一篇2-3頁的論文,討論混亂對軟件工程的影響。?答案略。?

2.5詳細描述三個適用于采用瀑布模型的軟件項目。?

答:適合瀑布模型的項目例如數據結構,軟件架構,程序的細節和接口表征的對象。?

2.6詳細描述三個適用于采用原型模型的軟件項目。?

答:相對容易的原型模型幾乎總是涉及人機交互和/或復雜計算機圖形軟件應用

程序,有時適合原型模型是某些類別的數學算法,命令驅動系統和其他應用在沒有實時交互時結果可以很容易地檢查。難以用原型模型的應用程序,包括控制和過程控制功能許多種類的實時應用程序和嵌入式軟件。?

2.7如果將原型變成一個可發布的系統或產品,應該如何調整過程,?答:如果將原型變成一個可發布的系統或產品,軟件工程師和客戶需要滿足和定義軟件的總體目標,識別已知的任何要求,對整體輪廓進一步的強制定義。原型作為一種機制,用于識別軟件需求。如果一個工作原型被建立了,開發商會試圖利用現有的程序片段或應用工具(例如,報表生成器,窗口管理等)使工作方案,可以快速生成。?

2.8詳細描述三個適于采用增量模型的軟件項目。?

: 每一個線性序列產生的增量交付的軟件,例如字處理軟件開發使用增量范式可能會提供基本的文件管理,編輯和文件制作功能在第一增量,更復雜的編輯和文件制作能力在第二增量;拼寫和語法檢查在第三增量,先進的頁面布局能力在第四增量。任何增量的處理流程?

可以納入原型范式。增量發展是特別有用當人員無法在經營期限為一個已成立的項目做完美的實施。?

2.9當沿著螺旋過程流發展的時候,你對正在開發或者維護的軟件的看法是什么,?

答:隨著工作的螺旋向外移動,產品走向一個更完整的狀態,執行工作的抽象層次減少了。?

2.10可以合用幾種過程模型嗎,如果可以,舉例說明。?

答:過程模型可以合用,每個模型都有個有點不同的處理流程,但都執行相同的通用框架活動集:溝通,規劃,建模,施工和交付/反饋。例如線性順序模型可以作為一個有用的過程模型,在被固定的情況下,要求工作以線性的方式繼續進行,直至完成。在這情況下,開發者可能無法確定一種算法的效率,一個操作系統的適應性或應采取的人機交互的形式。在這之中,以及許多其他場合原型模型可以提供最好的辦法。在其他情況下,以漸進的方式可能是有意義的和螺旋模型的流動可能是有效率,特殊過程模型具有許多的一個或多個傳統的特性。?

2.11協同過程模型定義了一套“狀態”,用你自己的話描述一下這些狀態表示什么,并指出他們在協同過程模型中的作用。?

答:簡而言之,并發進程模型假定不同的部分項目會有所不同階段的完整性,因此,不同的軟件工程活動都被同時執行。目前的挑戰是管理的并發,并能夠評估該項目的狀態。?

2.12開發質量“足夠好”的軟件,其優點和缺點是什么,也就是說,當我們追求開發速度勝過產品質量的時候,會產生什么后果,?

答:開發質量“足夠好”的軟件可能會碰到死亡線(截止時間),但質量會是比

較好的。當追求開發速度超過了產品的質量,這可能會導致許多缺陷,該軟件可能需要更多的測試,設計和實施工作。需求定以的不是很清楚,可能需要不斷地改變。半調子和速度過快開發都可能導致無法檢測到重大的項目風險。質量太差可能導致過多的質量問題和頻繁的返工。?

2.13詳細描述三個適于采用基于構件模型的軟件項目。?

答:我會建議推遲這個問題直到“軟件過程改進”這一章。?

2.14我們可以證明一個軟件構件甚至整個程序的正確性,可是為什么并不是每個人都這樣做,?

答:這是可能的用數學技術來證明軟件組件,甚至整個程序的正確性。然而,對于復雜的程序,這是一個非常耗時的過程。用詳盡的測試是不可能證明任何不平凡的程序的正確性,?

2.15統一過程和UML是同一概念嗎,解釋你的答案。?

答:UML提供了必要的技術支持和面向對象的軟件工程實踐。但它并不提供流程框架來指導項目團隊,在他們的技術應用中。在近幾年中,雅各布森,?RumbaughBooch制定的統一過程中框架使用UML的面向對象的軟件工程。今天,統一的流程和UML被廣泛應用于各種面向對象的項目。?

第四章?

4.1需求不斷的改變,理解需求問題是軟件工程師面臨的最困難的工作之一,因此他們更少注意需求。在某些情況下,工程師們會化繁為簡。其他情況下,工程師們必須嚴格地執行具體定義的需求。需求分析是設計和施工的橋梁,不能跳過。?

4.2你可以嘗試使用方法比如QFD(質量功能部署)通過客戶訪談和觀察、調查以及檢查歷史數據(如問題報告)為需求收集活動獲取原始數據。然后把這些數據翻譯成需求表——稱為客戶意見表,并由客戶和利益相關者評審。接下來使用各種圖表、矩陣和評估方法抽取期望的需求并盡可能導出令人興奮的需求。?

4.3事實上,客戶和開發人員會有一個協商的過程,開發人員會要求客戶權衡產品的性能與產品成本、上市時間之間的關系。這個協商的目的是開發一個項目計劃,這個計劃在滿足客戶需求的同時又能準確反映了軟件開發過程中約束(如時間、人員、預算)。不幸的是,這樣的項目計劃很難達成,每個客戶都有自己的觀點。這些觀點并不對其他客戶都適用,此外時間是另一個重要的約束,客戶可能沒有時間與開發人員討論需求,這使得問題更加復雜。?

4.4需求模型的目的在于描述所需的信息、功能和計算機系統的工作領域。隨著軟件工程師對系統了解的深入以及利益相關者越來越了解他們真正的需求,這種需求模型是不斷變化的。因此,分析模型在任何時候都是用戶需求的簡介?

4.5最好的協商是爭取“雙贏”,這會使你成為是一位談判大師。這些初期步驟的成功實施可以達到一個雙贏的結果,這是繼續開展后續的軟件工程活動的關鍵。?

4.6第一組上下文無關問題集主要關注的是客戶、總體目標和利益。例如,需求工程師可能會問:?

誰是這項工作的最初請求者,?

誰將使用該解決方案,?

成功的解決方案將帶來什么樣的經濟收益,?

對于這個解決方案你還需要其他資源嗎,?

4.7-4.9答案略。?

4.10用例圖描述了參與者所能觀察到模型圖。用例圖鼓勵系統的功能視圖應該轉換為面向對象的視圖。在許多情況下,為了提供更多的相互作用,用例圖需要做更詳細的闡述。?

4.11任何有一些軟件項目需求工程經驗的人都開始注意到,在特定的應用領域內某些事情在所有的項目中重復發生。這些分析模式在特定應用領域內提供了一些解決方案(如類、功能、行為),在為許多應用項目建模時可以重復使用。?

4.13最好的協商是爭取“雙贏”的結果,即利益相關者的“贏”在于獲得滿足客戶大多數需要的系統或產品,而作為軟件團隊一員的“贏”在于按照實際情況、在可實現的預算和時間期限內完成工作。?

4.14當需求確認解釋了一個錯誤時,每個需求有一個問題清單。之后會有評審小組尋找它。確認需求的評審小組包括軟件工程師、客戶、用戶、和其他利益相關者,他們在檢查系統規格說明,查找內容或解釋上的錯誤,以及可能需要進一步解釋澄清的地方、丟失的信息、不一致性(這是建造大型產品或系統時遇到的主要問題)、沖突的需求或是不可實現的(不能達到的)需求。?

第五章?

5.1有沒有可能在分析建模創建后立即開始編碼,解釋你的答案,然后說服反方。?答:分析模型作為領域對象的設計和結構的基礎服務。在定義了對象和屬性后,就可以開始進行編碼,也就知道了對象之間的關系。?

5.2 一個單憑經驗的分析原則是:模型“應該關注在問題域或業務域中可見的需求”。在這些域中哪些類型的需求是不可見的,提供一些例子。?

答:正如我們所知道的,在開始階段很可能沒有完整的需求規范。客戶可能不是非常精確地確定他們的所有需求。開發者也沒有把握使用一個具體的方法來正常的完成系統的功能和性能。為了需求分析和建模,不傾向使用迭代的方法。分析師所將認識到的東西進行建模,并使用此模型作為軟件增量的設計的基礎。軟件增量作為流程迭代的一部分被制作出來。在這些領域中,需求的類型是不可見的,可能因為一些功能必須在系統中實現,系統展示的行為是什么,屬性定義的接口有哪些,應用的約束有哪些,?

5.3 域分析的目的是什么,如何將域分析與需求模式概念相聯系,?答:域分析是持續的軟件工程活動,不與任何的軟件項目相關聯。它與需求模式的概念相聯系。域分析是通過一系列活動進行表征的過程。這些活動從識別域開始,以描述域中對象和類的規范為結束。?

5.4 有沒有可能不完成如圖6-3所示的4種元素就開發出一個有效的分析模型,解釋一下。?

答:如果沒有圖6.3所示的4大元素,是不可能開發出一個有效的分析模型。分析模型作為域對象的設計和建造的基礎。?

5.5 構建如下系統中的一個:?

a你所在大學基于網絡的課程注冊系統。?

b一個計算機商店的基于Web的訂單處理系統。?

c一個小企業的簡單發票系統。?

d內置于電磁灶或微波爐的互聯網食譜。?

選擇你感興趣的系統開發一套試題關系圖并說明數據對象、關系和屬性。?答:需要強調的是,所有的數據對象和關系一定客戶可見的。為了確認屬性正確地反映出系統的需求,屬性應該被檢查。(無固定答案)?

5.6-5.9答案略。?

5.10 什么是分析包,如何使用分析包,?

答:將分析模型的各種元素以包組的方式進行分類,成為分析包。為了說明分析包的作用,請思考一下視頻游戲。作為視頻游戲的分析模型,道出了大量的類。?

第六章?

6.1 對于需求分析,結構分析與面向對象策略有何本質區別,?

答:結構分析,考慮把數據作為分離實體的變形的數據和過程。數據目標是被使用它們已被定義的屬性和關系建模的。過程操作數據目標是被使用它們在系統中的數據流向建模的。面向對象分析,集中于類的定義和它們合作對用戶需求所帶來的效果的方式。?

6.2 在數據流圖中,一個箭頭表示控制流還是其他,?

答:DFD數據目標是用有標簽的箭頭所表示的。?

6.3 什么是“信息流連續性”,當重新定義一個數據流時,如何應用它,?答:數據流動連續性意味著在同一等級中的輸入和輸出必須和它們的精確等級相同。?

6.4 在生成DFD圖時,如何使用圖形化解析,?

答:在第一次需求整合會議中,應用工程描述中分離所有名詞和動詞的第一步被導出。再文法解析中,動詞時處理和可以被如DFD中的Bubbles描述的。名詞是DFD中的外部實體(盒子),數據或控制目標(箭頭),或數據存儲(雙實線)。?

6.5 什么是控制規格說明,?

答:控制規格(CSPEC)以兩種不同的方式描述了系統的行為(在被提到的基準線上),CSPEC包括一系列行為的規格的狀態圖。它也包括程序行為表——組合的行為規格。?

6.6 PSPEC和用例是同一事物嗎,如果不是,請解釋區別。?

答:不是。過程規格被用于去描述所有現在最終精煉等級的流程模型過程(算法觀點)。一個有用的情況描述一系列行為包括演員和系統(更著重于用戶可見行為而非算法)。?

6.7 表示行為建模時有兩種不同“狀態”類型,它們是什么,?

答:被動狀態展現出目標屬性的正確情況。主動狀態指明了目標在轉化或執行過程中的正確情況。?

6.8 如何從狀態圖區分順序圖,它們有何相似之處,?

答:狀態圖描述了系統的狀態并且展現了事件如何影響系統狀態。?

順序圖指明了事件如何引起目標的遷移。?

6.9——6.10答案略。?

第七章?

7.1是的,但是設計是隱式進行的——通常以隨意的方式進行的。在設計過程中,我們研究程序的表現形式,而非程序本身。?

7.2軟件設計的目的是運用一系列的原則、概念和實踐導致高質量體系或產品的發展。設計的目標是創建一個可以正確地實現所有客戶需求并有好的用戶體驗的軟件模型。

7.3通過開展一系列的正式技術評審來評估質量。正式技術評審是由軟件團隊成員召開的會議。通常,根據將要評審的設計信息的范圍,選擇2人、3人或4人參與。每個人扮演一個角色:評判組長策劃會議、擬定議程并主持會議;記錄員記錄筆記以保證沒有遺漏;制作人是指其工作產品(例如某個軟件構件的設計)被評審的人。在技術評審會議結束后,軟件團隊決定未來的行動以來完成最終的產品。

7.4為了開發一個完整的設計模型,軟件團隊反復地開發每個模塊的元素。每次迭代提供額外的細節并且細化。此外,設計任務應用于一個項目可能不同于他們應用其他項目。團隊必須適應一個通用的任務集去滿足產品,人和項目的需

要。質量的評估在有被修改的錯誤的組件級的設計任務集。任務集在章節中給出。?

7.5?

7.6軟件體系結構是程序組件(模塊)的結構或組織,這些組件相互作用的方式和數據結構被這些組件所使用。然而在更廣泛的意義上講,部件可以推廣到代表主要的系統元件以及它們之間的交互。?

7.7?

7.8分離關注點涉及通過將其分成單獨解決的子問題解決一個復雜的問題,一個問題的不同部分是相互結合的方式,給與不同的考慮,而不是合并考慮更復雜的情況。高度耦合的問題表現出這一特征。然而,問題的部分繼續組合,因為信息量超過了解一個人的能力不能無限期地進行下去,因此,當問題非真,模塊化可以修改,但不能消除。?

7.9在某些時間關鍵應用程序下,可能需要單塊集成軟件。然而,如果軟件是模塊化實現,設計可以而且應該實現的。“模塊”是內聯編碼。?

7.10信息隱藏與耦合和內聚概念有關,通過限制信息的可用性,只限于那些絕對需要的模塊,模塊之間的耦合在本質上是降低了。在一般情況下,信息隔離謂詞有隔離功能,因此,各模塊凝聚力也可以改善?

7.11外部環境、編譯器和操作系統耦合將對軟件可移植性造成不利影響。例如,考慮一個程序,這個程序被設計用來充分利用智能終端的特殊圖形的特征。如果沒有終端的軟件被搬到一個系統,主要設計和代碼可能需要修改。

7.12我們創建一個功能體系由此來提煉問題。例如,考慮到檢查寫入,我們可能這樣寫:?

Refinement 1:

Write dollar amount in words

Refinement 2:

Procedure write amount;

Validate amount is within bounds; Parse to determine each dollar unit; Generate alpha representation;

end write_amount

Refinement 3:

procedure write_amount;

do while checks remain to be printed if dollar amount > upper amount bound

then print "amount too large error

message;

else set process flag true;

End if;

determine maximum significant digit; do while (process flag true and

significant digits remain)

set for corresponded alpha phrase; divide to determine whole number value;

concatenate partial alpha string; reduce significant digit count by one; End do

print alpha string;

End do

end write_amount

細化1:

寫出大寫金額總數。

細化2:

寫出大寫金額數的程序:

驗證金額數是否在允許范圍內;

通過解析來確定美元單位;

,用α來表示金額數,寫出來;

結束寫出大寫金額數程序

細化3:

寫出大寫金額數的程序:

檢查是否還有未打印的支票,如有進入下面的循環

判斷支票金額數是否大于上面指定的金額數

如果大于打印“金額數太大”的錯誤信息

否則確定過程標志符為1。

結束判斷。

當過程標志符為1和有效數字存在的話,進入下面的循環:

確定最高有效位;

設置對應阿爾法短語;

劃分來確定整數值;

連接部分α字符串;

7.13?

7.14不,重構是一種不改變代碼的外部行為和其功能而改善軟件產品的內部質量的過程。他可能是提高了一個函數的處理速度或者在另一個系統中起到簡化組件的作用。?

7.15四個要素的設計模型:?

設計模型的四個元素:?

數據/類設計——建立由分析轉化的基于類內元素的類模型和按數據結構要求實現的軟件。?

結構設計——定義大體軟件元素結構件的關系。?

接口設計——描述軟件元素,硬件元素和用戶終端通信。?

組件等級設計——建立由軟件組件的程序描述中的軟件結構所定義的元素結構變形。?

第八章?

8.1用一個房屋或建筑結構作比喻,與軟件體系結構作對照分析。經典建筑與軟件體系結構的原則有什么相似之處,又有何區別,?

答:建筑與軟件在風格與模式的概念存在于宏觀與微觀層面。例如所有的方子都有總體風格(墻、頂、地基)。這些代表了房子的宏觀風格。微觀上的模式(房子)可以在木材的類別、壁爐的設計以及窗戶上體現出來。軟件體系結構也一樣,不同部件通過不同方法的組裝,形成了不同的系統。不同點:一個比較實際,另外一個比較抽象;房屋或建筑物可變化的空間比較小,軟件體系結構變化跨度更大一點?

8.2舉出23個例子,說明8.3.1節中提到的每一種體系結構風格的應用。?答:數據中心體系結構:航空訂票系統;圖書館目錄系統;賓館訂閱系統。?數據流結構:任何工程或科學中主要功能是計算的應用程序。?

調用和返回結構:任何I-P-O申請。?

面對對象的體系結構:基于GUI的應用程序;任何面向對象的應用程序??分層體系結構:應用功能必須從底層操作系統或網絡詳細信息分離的應用程序。客戶端服務器軟件通常是分層的。?

8.3 8.3.1節中提到的一些體系結構風格具有層次性,而另一些則沒有。列出每種類型。沒有層次的體系風格如何實現,?

:

層次:數據流,調用返回層。?

非層次:數據中心,面向對象。?

非分層體系結構可能是應用面對對象和驅動編程技術的最好實現。?

8.4 在軟件體系結構討論中,經常會遇到體系結構風格、體系結構模式及框架(本書中沒有討論)等術語。研究并描述這些術語之間的不同。?

答:許多人把建筑模式和建筑風格等價定義(把通用系統模型作為程序設計的起始點),盡管模式往往不太廣泛。一個框架可能會被一些人定義為一組提供了一個通用的解決問題方案的類,被解決的問題可以被細化到創建一個應用程序。?

8.5 選擇一個你熟悉的應用,回答8.3.3節中對于控制與數據提出的每一個問題。?答:答案不固定。?

8.6 研究ATAM([Kaz98])并對8.5.1節提出的6個步驟進行詳細討論。?答:答案不固定。?

8.7 如果還沒有完成習題5.6,請先完成它。使用本章描述的設計方法開發PHTRS的軟件體系結構。?

答:答案不固定。?

8.8 使用數據流圖和過程說明,描述一個有清楚變換流特征的計算機系統。定義流邊界并使用8.6.1節描述的技術將DFD映射到軟件體系結構中?

答:答案不固定。?

第九章?

9.1構件級設計定義了數據結構、算法,界面特性以及分配給每個軟件構件的通信機制。在面向對象語言中(JAVASmalltalk)構件為類或對象。在傳統語言(CFortran)中構件式函數或操作過程。在混合語言中(如C++)構件可能是函數或類。?

9.2像面向對象的構件一樣,傳統軟件構件是由分析模型所導出的。然而在這種情況下,導出構件是以分析模型中面向數據流元素作為基礎。數據流圖的最低層的每個變換都被映射為某一層上的模塊。控制構件(模塊)位于層次結構(體系結構)頂層附近,而問題域構件則傾向位于層次結構的底層。為了獲得有效的模塊化,在構建細化的過程中采用了功能獨立性的設計概念。?

9.3OCP原則模塊(構件)應該對外延具有開放性,對修改具有封閉性。設計者應該采用一種無需對結構自身內部(代碼或內部邏輯)做修改就可以進行的擴展(在構建所確定的功能域內)的方式來說明構件。設計者進行抽象,在那些需要擴展的功能與設計類本身之間起到緩沖區作用。?

9.4依賴性倒置原則(DIP),依賴于抽象。不依賴于具體實現。構件依賴的其他具體構件(不是依賴抽象類,如接口)越多,擴展起來越困難。?

9.5構件級設計中面向對象系統的上下文中,內聚性意味著構件或者類只封裝那些相互關聯密切,以及與構件或者類自身有密切關系的屬性和操作。高內聚的構件會與其他構件提供的服務“絕緣”,從而使其實施與維護更加容易。

9.6耦合是類之間彼此聯系程度的一種定性度量。隨著類(構件)相互依賴越來越多,類之間的耦合程度亦會增加。低耦合的好處是構件可以被修改但不會影響其他構件。

9.7外部耦合發生在組件通信或與基礎設施組件(如。、操作系統功能、數據庫功能、通信功能)。雖然這種類型的耦合是必要的,它應該是局限于一小部分系統組件或類。軟件必須在內部和外部溝通。因此,耦合是一個不爭的事實。然而,設計師應盡可能減少耦合和理解高耦合的影響不可避免。?

9.8?

9.9 重構是系統決策集散控制的過程,目的是讓頂層模塊執行控制功能,而底層模塊處理所有輸入,執行和輸出工作。逐步求精是通過連續精化過程細節層次來實現程序的開發。在傳統軟件開發中兩者是很相似的。?

9.10

WebAPP構件定義為以下兩點之一:?

定義良好的聚合功能,為最終用戶處理內容,或提供計算或數據處理?內容和功能的聚合包,提供最終用戶所需的功能。?

9.11?

9.12?

9.13?

9.14 人可以短暫記憶一小部分東西,分塊可以使評審者將相關概念組合成大的碎片或更大的分塊。那些具有分塊功能的構件(如果構件具有高內聚低耦合特性)可以使評審者在設計審查時更簡單的追蹤幾個構件的相互作用而不是大量的單各類或方法。?

第十章?

10.1這道題應該不難~許多早期交互式系統都有糟糕的界面。在現代環境下,讓你的學生們注重基于web的應用程序界面。許多web應用程序為了Flash犧牲易用性。?

10.2例子如下:?

在它們引起“可撤銷的”損害之前抓住潛在的交互錯誤。?

允許用戶自定義屏幕布局以及命令。?

利用分離菜單,以便通用功能。?

10.3例子如下:?

如果用戶有需求,在屏幕上一直顯示快捷鍵命令序列。?

當一個web應用程序需要密碼輸入的時候,提供“密碼提示”機制。?

10.4例子如下:?

使用一致的顏色,例如,紅色用作警示信息,藍色用作通知信息;?提供關鍵字驅動的在線幫助。?

10.5答案略。?

10.6如果你的學生在任務分析上出了問題,老的備用I-P-O將會有效。?問:使用者輸入什么,它是怎么處理的,處理過程是如何通過界面表現出來的,產生的輸出是什么,?

10.7-10.11答案略。?

10.12當響應時間無法預測的時候,使用者會很不耐煩并且重復嘗試請求的命令或者嘗試另一個命令。在某些情況下,這會產生(命令的)排隊問題,并且在極端的情況下,會引起數據的丟失或者甚至是一個系統故障。研究表明,用戶可以容忍他們熟悉的應用程序的響應率50%的變化。對于那些不熟悉的應用程序,使用者在1530秒意外的延遲(也就是他們短期記憶的半衰期)后會很焦慮。?

10.13答案略。?

10.14如果你想要給你的學生一些工作項目表的范例,互聯網是一個很好的可用性調查表的來源(大部分都應該有超過20道的問題,所以你的學生應該需要優先考慮他們的選擇)?

第十四章?

14.1用自己的話描述驗證與確認的區別。兩者都要用測試用例的設計方法和測試策略嗎,?

答:“驗證”是通過嘗試在功能或性能上發現錯誤來保證程序的正確性,“確認”是保證軟件與需求相一致——這也是質量的基本特征。?

14.2列出一些可能與獨立測試組(ITG)的創建相關的問題。IGTSQA小組由相同的人員組成嗎,?

答:組建ITG(獨立測試組)最常見的問題是獲得并留住人才,除此之外,如果ITG與軟件工程小組的交流組織地不恰當的話,兩組之間可能會產生敵意。最后,ITG有可能太晚接手項目,導致沒有時間完成一個周密測試的計劃和執行。ITGSQA(軟件質量保證)小組不必是同一組人。ITG只關注測試,SQA小組則需要考慮到質量保證相關的所有方面。?

14.3使用14.1.3節中描述的測試步驟來建立測試軟件的策略總是可行的嘛,對于嵌入式系統,出現哪些可能的復雜情況,?

答:它并不總是能夠進行單元測試的測試環境,完成單元測試的復雜性(如復雜的驅動和存根)可能無法證明效益。集成測試是復雜的通過單元測試的模塊合并計劃的有效性(特別是當這些模塊滯后的時候)。在很多情況下(尤其是嵌入式系統)軟件不能充分進行驗證測試硬件配置外的目標。因此,驗證和系統測試要相結合。?

14.4為什么對具有較高耦合度的模塊進行單元測試,?

答:一個高度耦合的模塊要與其他模塊的數據和其他系統元素進行交互。因此,其功能往往是依賴于這些耦合元件的操作。為了徹底的單元測試這樣一個模塊,耦合因素的功能必須以某種方式模擬。這將會是困難和費時的。?

14.5“防錯法”的概念是一個非常有效的方法。當發現錯誤時,他提供了內置調試幫助:?

a.為防錯發開發一組知道原則。?

b.討論利用這種技術的優點。?

c.討論利用這種技術的缺點。?

答:一個單一的規則涵蓋了多種情況:所有數據在軟件接口(外部和內部)應當經過驗證(如果可能的話)。?

優點:錯誤不會滾雪球‖——越滾越大?

缺點:需要額外的處理時間和內存(那通常只是一個很小的代價)。?

14.6項目的進度安排是如何影響集成測試的,?

答:完成模塊的可用性的影響順序和戰略整合。項目狀態必須是已知的,可以成功地實現整合規劃。?

14.7在所有的情況下,單元測試都是可能的或是值得做的嗎,提供實例來說明你的理由。?

答:如果一個模塊有34個下屬供應數據模塊的一個有意義的評價是至關重要的,沒有聚類所有的模塊作為一個單元,它可能無法進行單元測試。?

14.8誰應該完成確認測試——是軟件開發人員還是軟件的使用者,說明你的理由。?

答:開發商,如果客戶驗收測試計劃。開發人員和客戶(用戶)如果沒有進一步的測試計劃。一個獨立的測試組可能是這里最好的選擇,但這不是一個選擇。?

14.9為本書討論的safehouse系統開發一個完整的測試策略,并以測試規格說明的方式形成文檔。?

答:略?

14.10作為一個班級項目,為你的安裝開發調試指南。這個指南應該提供面向語言和面向系統的建議。這些建議是通過總結學校學習過程中所遇到的挫折得到的。從一個經過全班和老師評審過的大綱開始,并在你局部范圍內將這個指南發布給其他人。?

答:略?

第十五章?

15.1 Myers[mye79]用以下程序作為測試能力的自我評估:某程序讀入三個整數值表示三角形的三條邊。改程序打印信息表明三角形是不規則的,等腰的或等邊的。開發一組測試用例測試改程序。?

答:參考Myers[mye79]對此問題提出的極其詳細的解決方案?

15.2設計并實現15.1描述的程序(適當使用錯誤處理)。從該程序中導出流圖并用基本路徑測試方法設計測試,以保證程序中的所有語句都被測試到。執行測試用例并顯示結果。?

答:你可以選擇發布程序源代碼給您的學生(故意地嵌入一些錯誤)。?

15.3你能夠想出15.1.1節中沒有討論的其他測試目標嗎,?

答:除了那些目標之外還有:?

a) 一個成功的測試顯示功能和性能要求;?

b) 一個成功的測試發現文件錯誤;?

c) 一個成功的測試發現接口問題;?

d) 一個成功的測試驗證了程序結構,了解數據結構,界面設計和程序設計;?e) 一個成功的測試,建立了一個進入一個測試案例數據庫,以后可以用于回歸測試。?

15.4選擇一個你最近設計和實現的構建。設計一組測試用例,保證利用基本路徑測試執行所有語句。?

答:略?

15.5-15.8

答:進行一些拓展,這些問題可以被指定為一個長期的項目。?

15.9至少給出三個例子,在這些例子中,黑盒測試能給人“一切正常”的印象,而白盒測試可能發現錯誤。再至少給出三個例子,在這些例子中白盒測試能給人“一切正常”的印象,而黑盒測試可能發現錯誤。?

答:對于特定的輸入,一個內部發生的錯誤導致:?

1) 不恰當的數據被設在一個全局數據域里;?

2) 不恰當的標記將在隨后進行的一系列測試中被測試;?

3) 不恰當硬件控制,只可能在系統測試時被發現;但是卻產生了正確的輸出。?

15.10不,即使窮舉測試(如果可能的話)也不能發現軟件說明書中的性能問題和錯誤。在這種情況下需要同時考慮輸入和輸出的等價類。對每一個類來說,學生應當根據數值范圍,集合的元素,系統命令等劃定邊界。這可以作為筆試以及一些著名應用GUI的測試用例的素材?

15.11生成一系列用例來幫助測試用戶的文件材料是一個好辦法。?

第十六章?

16.1用自己的話,描述為什么在面向對象系統中,類是最小的合理測試單元。?答:類封裝了數據以及處理數據的操作。由于數據和操作被打包成一個整體,一個一個地測試方法沒有作用,不能發現與消息傳送,職責和協作相關的錯誤。?

16.2若現有類已進行了徹底的測試,為什么我們必須對從現有類?實例化的子類進行重新測試,我們可以使用為現有類設計的測試用例么,?

答:由于每一個子類都繼承了父類的私有屬性和操作(事實上這些私有屬性和操作會增加復雜度),這些子類必須在他們的操作環境中重新測試。測試用例可以重復使用,但需要針對子類的私有屬性和操作進行擴充。?

16.3為什么測試應該從面向對象分析和設計開始,?

答:在之后的開發過程中,面向對象分析和設計模型提供了大量與系統結構和行為相關的信息,因此,在生成代碼之前,這些模型必須經過嚴格的審查。所有面向對象的模型應當在模型的語法,語義以及語用論的上下中經過正確性,

完整性,一致性的測試(包括技術評審)。這些評審有可能省去很多不必要的工作和修改(錯誤越早發現,維護的成本越低)。?

16.4SafeHome導出一組CRC索引卡片,按照16.2.2節講述的步驟確定是否存在不一致性。?

答:答案會有不同?

16.5基于線程和基于使用的集成測試策略有什么不同,簇測試如何適應,?答:基于線程的測試用來集成一系列需要對單獨一個程序輸入或事件響應的類。基于使用的測試屬于集成測試的一種,通過測試那些很少使用服務器類的類(稱為獨立類)開始系統的構造。測試完獨立類之后,測試使用獨立類的下一層類(稱為依賴類),按照這樣的順序逐層測試依賴類直到整個系統構造完成。?

16.6將隨機測試和劃分方法運用到設計SafeHome系統時定義的3個類。產生展示操作調用序列的測試用例。?

答:答案會有不同?

16.7運用多類測試及從SafeHome設計的行為模型中生成的測試。?

答:答案會有不同?

16.8運用隨機測試、劃分方法、多類測試及16.5節和16.6節所描述的銀行應用的行為模型導出的測試,再生成另外生成4個測試。?

答:答案會有不同?

第十八章?

18.1基于本章給出的信息和自己的經驗,列舉出能夠增強軟件工程師能力的“十條戒律”。即,列出10條指導原則,使得軟件人員能夠在工作中發揮其全部潛力。?

答:?

(1)你要變得更聰明。?

(2)你要注重質量。?

(3)你要傾聽客戶。?

(4)你要了解問題?

(5)你要對一個工作過程不斷的重復。?

(6)你不可同意荒唐的時間表。?

(7)你要測量產品,過程和你自己。?

(8)你要制定最有效的工作方法。?

(9)你要記住,別人也會軟件工作。?

(10)你要不斷地提高。?

18.2 SEI的人員能力成熟度模型定義了培養優秀軟件人員的“關鍵實踐域”。你的老師將為你指派一個關鍵實踐域,請你對它進行分析和總結。?

答:略。?

18.3描述3種現實生活中的實際情況,其中客戶和最終用戶是相同的人。也描述3種他們是不同人的情況。?

答:相同的人:(1)一個工程師必須開發一個供個人使用的程序。(2)一個商人創建供個人使用的電子表格模型。(3)一個擁有迷人的手機客戶端這一新概念的企業家。?

不同的人:(1)一個通信部門的一些業務功能的服務。(2)一個軟件開發團隊服務營銷的需求。(3)承包商建立的客戶的規格。?

18.4高級管理者所做的決策會對軟件工程團隊的效率產生重大影響。也描述3種他們是不同人的情況。?

答:在今天的環境,裁員和外包有最直接的、重大的影響。此外,減少開支的措施,導致較低的產品質量;不切實際的項目最后期限;對用戶的需求了解失敗;或者,反過來說,對軟件工程師的工作提出警告。?

18.5溫習Weiberg的書[Wei86],并寫出一份2-3頁的總結,說明在使用MOI模型時應該考慮的問題。?

答案:略。?

18.6在一個信息系統組織中,你被指派為項目經理。你的工作是開發一個應用程序,該程序類似于你的團隊已經做過的項目,只是規模更大而且更復雜。需求已經由用戶改寫成文檔。你會選擇哪種團隊結構,為什么,你會選擇哪(些)種軟件過程模型,為什么,?

答:一個封閉范型方法的團隊結構是一種選擇。由于需求明確,這可能會要求和配置多個分區小組。規模大的項目緩和了利于CD團隊的方面。由于沒有討論日程,我們假設的交貨日期是合理的。因此,有可能使用一個線性的順序過程模型。然而,迭代模型(例如,螺旋)也是一個很好的可能性。?

18.7你被指派為一個小型軟件產品公司的項目經理。你的工作是開發一個有突破性的產品,該產品結合了虛擬現實的硬件和高超的軟件。因為家庭娛樂市場的競爭非常激烈,完成這項工作的壓力很大。你會選擇哪種團隊結構,為什么,你會選擇哪種過程模型,為什么,?

答:隨機式范型的團隊結構可能是唯一可行的選擇,給出了模糊的要求和工作性質的實驗。應該使用原型開發方法或者一個曾量的過程模型。?

18.8你被指派為一個大型軟件產品公司的項目經理。你的工作是管理該公司已被廣泛使用的字處理軟件的新版本的開發。由于競爭激烈,已經規定了緊迫的最后期限,并對外公布。你會選擇哪種團隊結構,為什么,你會選擇哪些軟件過程模型,為什么,?

答:一個開放式范型團隊結構可能是最好的,給定的時間壓力和熟悉的工作(然而,封閉的方法范式團隊可能也很好)。一個曾量過程模型被推動這項工作性質的最后期限所指明。?

18.9在一個為基因工程領域服務的公司中,你被指派為軟件項目經理。你的工作是管理一個軟件新產品的開發,該產品能夠加速基因分類的速度。這項工作是面向研究及開發的,但其目標是在下一年度內生產出產品。你會選擇哪種團隊結構,為什么,你會選擇哪些軟件過程模型,為什么,?

答:一個隨機式范型可能是最好的,是因為這項工作是實驗性的,且有一個企業的最后期限。另一種可能性是使用一個開放式范型的團隊結構。一個曾量過程模型和進化過程模型可以用于推動給予限期的這項工作。?

18.10要求開發一個小型應用軟件,它的作用是分析一所大學開設的每一門課程,并輸出課程的平均成績(針對某個學期)。寫出該問題的范圍陳述。?答:?

分數分析應用程序將獲得所有本科和研究生的學分課程的成績和在某一學期課程注冊數據庫。分數分析應用程序會讀每一門課程的所有等級和計算平均成績,使用的數值范圍在A = 4和其他等級分配值來作為等級值存到uc29-1文檔。本程序會打印一個報告顯示每門課的教師和平均成績。這個報告可能會按平均成績或者教師等其他類似的特征排序。本程序可能會運行在WindowsVista操作系統下。?

18.11給出18.3.2節中討論的頁面布局功能的第一級功能分解。?

答:?

一個簡單的分解:?

頁面布局?

定義頁面參數?

分配文本區域?

分配圖形區域?

強調定義(線,著色等)?

輸入/導入文本?

輸入/導入?

編輯文本?

編輯圖形?

出頁/導出頁面?

最終頁面布局?

第十九章?

19.1用自己的話描述過程度量和項目度量之間的區別。?

答:過程度量是用來對設計和建造計算機軟件的活動進行評估(為了在后續項目提高這些活動)。?

項目度量是用來評估軟件項目的狀態。?

19.2為什么有些軟件度量是“私有的”,給出3個私有度量的例子,并給出3個公有度量的例子。?

答:當待評估的特征無法被直接測量時一種間接的的測量方法將被使用,例如,質量”不能被直接測量所以只能測量軟件其他的特征,軟件的很多度量工作都間接的,因為軟件不是一個有形的可以用直接測量的實體。例子?

能直接度量的物體?

紙的數量?

人的數量?

不同文件的數量?

不能直接度量的物體?

可讀性(利用模糊指數)?

完整性(計算你收到的服務臺問題的數量)?

可維護性?(定時改變文檔)

19.3什么是間接測量,為什么在軟件度量工作中經常用到這類測量,?答:沒找到答案。?

19.4Grady提出了一組軟件度量規則,你能在19.1.1節所列的規則中在增加3個規則嗎,?

答:軟件度量的額外規則:?

不找完美的指標……它不存在。?

保證測量的一致性,避免比較不同的事物。?

注重質量,這是最重要的。?

19.5產品交付之前,團隊A在軟件工程過程中發現了342個錯誤,團隊B發現了184個錯誤。對于項目AB,還需要做什么額外的測量,才能確定哪個團隊能夠更有效地排除錯誤,你建議采用什么度量能有助于做出判定,那些歷史數據可能有用,?

答:兩個團隊應該事先決定好要開發的軟件的大小和功能,例如,errors/FP可以提供一個規范化的評估方法。此外,在兩個團隊的軟件開發過程中一個度量標準例如DRE可以提供一個對SQA的效率指標。?

19.6給出反對將代碼行作為軟件生產率度量的論據。當考慮幾十個或幾百個項目時,你說的情況還成立嗎,?

答:LOC的作用不大是因為它的獎勵―verbose‖計劃,同時他也很難用在可視化編程中,4GLs,代碼生成器,或其他的代碼生成器4gts的發展正在遠離3gls

19.7根據下面的信息域特性,計算項目的功能點值:?

用戶人數:32

用戶輸出數:60

用戶查詢數:24

文件數:8

外部接口數:2

假定所有的復雜度校正值都取“中等”值。使用第十三章描述的算法。?答:?

總計:32*4+60*5+24*4+8*10+2*7=618 FP=618*[0.65+0.01*3*14]=661

19.8利用19.2.3節中給出的表格,基于每行代碼具有的功能性,提出一個反對使用匯編語言的論據。再參考該表,討論為什么C++C更好,?

答:用匯編語言實現一個功能點需要的行數在91694之間平均337行,這幾項在表中都是最大的,一些行業分析師稱:每天無論使用任何語言的程序員都交出相同數量的調試代碼,如果開發一個項目真用了匯編語言那將比用其它語言花費更多的時間,以上比較方法可以用到CC++得比較。?

19.9用于控制影印機的軟件需要32000C語言代碼和4200Smalltalk語言代碼。估算該影印機軟件的功能點數。?

答:?

C語言?= 162 LOC/FP

Smalltalk = 26 LOC/FP

所以?32,000/162 + 4,200/26 = 197.53 + 161.54 = 359 FP (近似值)

19.10在一個項目結束時,確定在建模活動中發現了30個錯誤,在構造活動中發現了12個可以追溯到建模活動中沒有發現的錯誤。那么,建模活動的DRE是多少,?

答:DRE = E / (E + D) = 30 / (30 + 12) = 30 / 42 = 0.71.(近似值)

19.11軟件團隊將軟件增量交付給最終用戶。在第一個月的使用中,用戶發現了8個缺陷。在交付之前,軟件團隊在正式技術評審和所有測試任務中發現了242個錯誤。那么在使用一個月之后,項目總的缺陷排除效率(DRE)是多少,?答:DRE = E / (E + D) = 242 / (242 + 8) = 242 / 250 = 0.97(近似值)

第二十章?

20.1假設你是一家開發家用機器人軟件公司的項目經理,你已經承接了為草坪割草機器人開發軟件的項目。寫一個范圍陳述來描述該軟件,確定你的范圍陳述是“界定的”。如果你對機器人不熟悉,在你開始寫作之前先做一些調研工作。還要說明你對所需硬件的設想。或者,你也可以選擇其他感興趣的問題,而不做草坪割草機器人。?

答:略?

20.220.1節簡要討論了軟件項目的復雜性。列出影響項目復雜性的軟件特性(例如,并發操作、圖形輸出),按其對項目的影響程度順次排列。?答:有時,復雜性來源于客戶和軟件開發人員之間建立的一個糟糕的接口,以此,以下性能應該被考慮?

實時屬性;

多處理要求(并發);

算法的本質;

遞歸的需求;

輸入的本質;

確定性的輸入;

輸出的本質;

語言特點;

知識/經驗人員的使用。

20.3在計劃過程中,性能是一個重要的考慮因素。針對不同的軟件應用領域,分別討論如何以不同的方式來解釋性能。?

答:實時操作--處理原始數據的CPU時間和可能產生中斷服務的效率

工程/科學的應用--數值精度和大型系統,CPU時間。

商業的應用--I/ O效率

交互式的應用--用戶“等待時間”

微處理器的應用--cpu時間和內存需要。?

20.4對你在習題20.1中描述的機器人軟件進行功能分解。估算每個功能的規模(用LOC)。假定你所在組織的平均生產率是450LOC/pm,勞動力價格是每人月7000美元,使用本章所講的基于LOC的估算技術來估算構造該軟件所需的工作量及成本。?

答:用戶交互(2400)

傳感器監測(1100)

信息顯示(850)

系統配置(1200)

系統控制(激活/失活)(900)

括號中指出了對每一項的LOC估計,通過估計一共是6450LOC 把數據用

與這個問題6450 LOC / 450 LOC/pm = 14.3 pm

花費:?14.3 pm * $7,000/pm = $100,000 (估計值)

20.5使用COCOMOⅡ模型來估算構造一個簡單的ATM軟件所需的工作量,它產生12個屏幕、10個報表、將需要大約80個軟件構件。假定該軟件具有平均復雜度和平均開發者/環境成熟度。要求使用基于對象點的應用組裝模型。?答:object point = 12 * 2 + 10 * 5 + 80 * 10 = 874

我們假設?80% reuse

NOP = (object points) * [(100 - %reuse)/100]

= (874) * [(100 – 80)/100] = 874 * 0.2 = 174.8

參考p362的圖可知:?

PROD = 13

工作量?= NOP/PROD = 174.8 / 13 = 13.45

20.6使用“軟件方程”來估算草坪割草機器人軟件。假設采用方程(20-4),p=8000?答:假設?B=0.16 and P = 8,000

t.min = 8.14 * (LOC / P)^0.43?=

= 8.14 * (6450/8000) ^0.43?

t = t.min / 12 months/year

E = 180 * B * t^3

20.7比較習題20.4和習題20.6中所得到的工作量估算值,求出標準偏差,它如何影響你對估算的確信程度,?

答案和題目不一樣。?

20.8使用習題20.7中得到的結果,確定能否期望該軟件在6個月內完成,以及完成該工作需要多少人員,?

答:軟件方程預測但我們可能超出其邊界,使用原始的COCOMO模型。?

D = 2.5 E ^ 0.35

= 2.5 * 16.92 ^ 0.35

= 6.7人月?

看來,?6月是積極的,但有可能給出(相當于3人工作項目)COCOMO的結果和項目的規模/復雜性。?

20.9建立一個電子表格模型,實現本章所述的一種或多種估算技術。或者從基于Web的資源獲取一個或多在線估算模型。?

答:略。?

20.10組建一個項目團隊,開發軟件工具來實現本章所介紹的每種估算技術。?答:略。?

20.11有一點似乎很奇怪:成本和進度估算是在軟件項目計劃期間完成的——在詳細的軟件需求分析或設計之前進行。你認為為什么會這樣,是否存在不需要這樣做的情況,?

答:很早對成本和進度的估計是因為管理層希望盡可能早的得到這些數據,如果這個項目有非常復雜的高級技術風險,所以一個固定價格的提議提交需要,項目的成本核算應該(如果可能)被推遲到需求分析之后,注意:只有需求的成本是可以盡早估計。

?

總結

以上是生活随笔為你收集整理的软件工程 实践者的研究方法 中文题答案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。