第 1 章 軟件工程導……(2 / 2)

軟件工程導論 小星河M 12518 字 11個月前

模塊的耦合性和軟件的可移植性有什麼關係?說明理由。

①模塊的耦合性越低,軟件的可移植性越高。

②模塊的耦合性是指模塊之間相互獨立的度量,耦合強弱取決於接口的複雜程度在軟件設計中儘可能設計弱的耦合的係統,這樣程序容易測試、修改和維護,也便於移植到其他計算機上.

第五章詳細設計

軟件設計/詳細設計的根本目的是什麼?

有哪幾種描述方法?

①軟件設計/詳細設計就是確定應該怎樣具體實現所要求的係統,應該得出對目標係統的精確描述。具體的就是為軟件結構圖中每一個模塊確定采用的算法和塊內數據結構,用某種選定的詳細設計工具更清晰地描述,從而在編碼階段可以把這些描述直接翻譯成某種程序設計語言書寫的源程序。

②圖形、表格、語言三種表示方法。

詳細設計應遵循的基本原則?(20年考)

①對於模塊的邏輯描述,要在確保正確可靠的基礎上儘量的使得其更加清晰易讀

②選擇適當的描述工具來對各模塊的算法進行描述。

③采用結構化的設計方法,改善程序的結構,使其結構更加科學標準,同時也降低了程序的複雜度,從而提高了程序的可讀性、可測試性和可維護性。

結構化程序設計的基本要點是什麼?

①結構化程序設計使用三種基本控製結構,有順序、條件和重複。

②結構化程序設計采用自頂向下,逐步求精的設計方法和單入口單出口的控製結構。

為了具有人機界麵設計風格應該注意哪些方麵的問題。

①係統響應時間。係統響應時間過長或過短,用戶就會受到負麵影響。

②用戶幫助設施。幾乎交互式係統的每個用戶都需要幫助。

③出錯信息處理。出錯信息設計得不好,將向用戶提供無用的甚至誤導的信息。反而會加重用戶的挫折感。

④命令交互。用戶既可以從菜單中選擇軟件功能,也可以通過鍵盤命令序列調用軟件功能。

人機界麵設計原則。

①讓用戶駕馭軟件,而不是軟件駕馭用戶。

②儘可能減少用戶的記憶負擔。

③保持界麵的一致性。

人機界麵的設計過程。

①建立任務的目標和意圖

②目標和意圖明確後,建立界麵需求規格模型

③以界麵需求模型為依據創建用戶界麵模型

④用戶使用並評估該界麵模型

⑤設計者根據用戶的意見修改設計並實現下一模型

⑥不斷進行下去,直到用戶感到滿意為主。

軟件詳細設計工具是什麼?簡述幾種常用的詳細設計工具。

描述程序處理過程的工具稱為軟件詳細設計工具,可以分為圖形、表格、語言 3類

①程序流程圖:易學,表達算法直觀,缺點是不夠規範。

②N-S盒圖:隻能描述結構化程序所允許的標準結構

③問題分析圖(PAD 圖)

④過程設計語言(PDL)

總體設計和詳細設計的區彆是什麼?

(1)總體設計是軟件結構的建立過程,它將軟件係統分解成許多個模塊,並決定每個模塊的外部特征,即功能和界麵(輸入和輸出)。

(2)詳細設計是對總體設計的細節進行完善。給出軟件結構中每個模塊的內部特征(數據結構,算法和接口)的描述,從而在編譯階段可以把這個描述直接翻譯成某種程序設計語言書寫的程序。

第六章軟件編碼

程序設計語言分為哪三類?

從軟件工程的角度,編程語言可分為基礎語言、結構化語言、麵向對象語言三大類。

①基礎語言是通用語言,它的特點是適用性強、應用麵廣、曆史悠久。FORTRANCOBOLBASIC 和ALGOL 都屬於這種語言。

②結構化語言:隨著結構化程序設計思想的逐步發展,先後出現了一批常用的結構化語言。作為基礎語言的ALGOL語言是結構化語言的基礎,它衍生出了Pascal、C、Ada 等結構化語言。

③麵向對象語言JAVA、C++等。

在程序開發項目中,選擇程序設計語言考慮什麼因素。(20年考)

實用標準:

①待開發軟件的應用領域

②用戶的要求

③軟件的運行環境

④軟件開發人員的知識

⑤軟件的可移植性要求

理想標準:為了使程序容易測試和維護以減少軟件開發總成本,選用的高級語言應該有比較理想的模塊化機製,以及可讀性好的控製結構和數據結構;為了便於調試和提高軟件的可靠性,語言的特點應該使編譯程序能夠儘可能地發現程序中的錯誤,為了降低軟件開發和維護的成本,選用的語言應該有良好的獨立編譯機製。

在程序設計風格中,語句構造應遵循什麼原則。

①不要為了節省存儲空間把多個語句寫在同一行

②儘量避免複雜的條件測試,尤其是減少對“非”條件的測試③避免大量使用循環嵌套語句和條件嵌套語句

④利用圓括號使邏輯表達式或算術表達式的運算次序清晰直觀⑤變量說明不要遺漏,變量的類型、長度、存儲及初始化要正確6心裡換位:"如果我不是編碼人,我能看懂它嗎?"

什麼是程序設計風格?為了具有良好的程序設計風格,應該注意哪些方麵的問題?

①程序設計風格是指一個人編製程序時所表現出來的特點、習慣、邏輯思路等。

②要形成良好的程序設計風格,應從源程序文檔化、數據說明、語句構造、輸入輸出和追求效率幾個方麵加以注意。

第七章軟件測試

簡述軟件測試的基本任務和目標

①測試階段的基本任務應該是根據軟件開發各階段的文檔資料和程序內部結構。精心設計一組“高產"的測試用例,利用這些用例執行程序,找出軟件中潛在的各種錯誤缺陷。

②目標是發現程序中的錯誤。

什麼是測試?什麼是調試?二者有什麼區彆?(21 年考)

①軟件測試是為了發現錯誤而執行程序的過程。

調試是在測試發現錯誤之後排除錯誤的過程。

②軟件測試的目的是為找出軟件中存在的錯誤,即通過測試來發現錯誤,而調試的目的是為了解決存在的錯誤,即對錯誤定位、分析找出原因改正錯誤,因此調試也稱為糾錯。?

軟件測試遵循什麼原則。(20 年考)

①測試用例既要有輸入數據,又要有對應的輸出結果。這樣便於對照檢查。

②測試用例不僅要選用合理的輸入數據,還應選擇不合理的輸入數據。這樣能更多地發現錯誤,提高程序的可靠性,還可以測試出程序的排錯能力。

③除了檢查程序是否做了它應該做的工作,還應該檢查程序是否做了它不應該做的工作。

④應該遠在測試開始之前就製定測試計劃。

⑤測試計劃、測試用例、測試報告必須作為文檔長期保存。

⑥Pareto原理說明,測試發現的錯誤中80%很可能是由程序中20%的模塊造成的。即錯誤出現的“群集性”現象。

⑦為了達到最佳的測試效果,程序員應該避免測試自己的程序。

軟件測試方法的分類

(1)動態測試:分為黑盒測試和白盒測試

白盒測試:邏輯覆蓋、循環覆蓋、基本路徑覆蓋。

黑盒測試:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法等

(2)靜態測試

簡述靜態測試與動態測試的含義。它們之間有什麼不同點和相同點。

①靜態測試就是靜態分析,是指被測程序不在機器運行,對模塊的源代碼進行研讀,查找錯誤或收集一些度量數據,采用人工檢測和計算機輔助靜態分析手段對程序進行檢測,隻進行特性分析。

?動態測試是指通過運行程序發現錯誤。?

②相同點:都可以進行軟件測試。

不同點:靜態測試的執行可以在程序編碼編譯前,動態測試隻能在編譯後執行。

靜態測試用於預防,動態測試用於矯正。

黑盒測試和白盒測試有什麼區彆。

①黑盒測試也稱功能測試或數據驅動測試。它不考慮程序內部結構和處理過程。把被測程序看成一個黑盒子,隻在軟件接口處進行測試,依據需求規格說明書,檢查程序是否滿足功能要求。

②白盒測試也稱結構測試或邏輯驅動測試。測試人員需了解程序的內部結構和處理過程,以檢查處理過程的細節為基礎,要求對程序的結構特性做到一定程度的覆蓋,對程序中的所有邏輯路徑進行測試,並檢驗內部控製結構是否有錯,確定實際的運行狀態與預期的狀態是否一致。

③黑盒測試方法:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法。

④白盒測試方法:邏輯覆蓋、循環覆蓋、基本路徑測試。

⑤黑盒是一種確認技術,白盒測試是一種驗證技術。黑盒著重軟件功能,白盒著重邏輯結構.

軟件測試要經過哪些步驟?這些測試與軟件開發各個階段之間的關係?

軟件產品在交付使用之前一般要經過單元測試集成測試、確認測試和係統測試4個階段的測試。

①單元測試是對軟件基本組成單元進行的測試,檢查每個獨立模塊是否正確地實現了規定的功能,單元測試所發現的是編碼和詳細設計中的錯誤.

②集成測試:將已分彆通過測試的單元按設計要求組合起來再進行測試,以檢查這些單元之間的接口是否存在問題,檢查與設計相關的軟件體係結構的有關問題。在這個測試階段發現的是軟件設計中錯誤,也可能發現需求的錯誤。

③確認測試:檢查所開發的軟件是否滿足需求規格說明書中所確定的功能和性能需求,這個階段發現的是需求分析階段的錯誤。

④係統測試:完成確認測試後,得到的是用戶確認的合格的軟件產品,為了檢查該軟件能否與係統的其他部分協調工作,需進行係統測試。

第八章軟件維護

為什麼軟件需要維護?維護有哪幾種類型?

①因為軟件係統投入使用後還經常會發生一些變化,如對隱含錯誤的修改,新功能的加入,環境變化造成的程序變動等。

②改正性維護、適應性維護、完善性維護、預防性維護。

軟件維護包括幾個類型?(20年考)

①改正性維護:把在軟件投入使用後才逐漸顯露出來的錯誤的診斷、定位、改正的過程稱為改正性維護。

②適應性維護:為了適應計算機的飛速發展,使軟件適應外部新的硬件和軟件環境或者數據環境發生的變化,而進行修改軟件的過程。

③完善性維護。為了滿足用戶使用過程中對軟件提出的新的功能與性能要求,需對原來的軟件的功能進行修改或擴充。這種為擴充軟件功能、增強軟件性能,提高軟件運行效率和可維護性而進行維護活動。

④預防性維護:為了提高軟件未來的可維護性,可靠性等,或為了給未來的改進奠定更好的基礎而修改軟件的過程。?

什麼是軟件可維護性?可維護性度量的特性是什麼?/軟件可維護性由哪些因索決定?

①軟件可維護性是糾正軟件係統出現的錯誤和缺陷,以及為滿足新的要求進行修改、擴充或壓縮的容易程度。

②可理解性、可測試性、可修改性、可靠性、可移植性、可使用性、效率。

改正性維護與排錯是否一回事兒?為什麼?

不是一回事兒,改正性維護是把在軟件投入使用後才逐漸暴露出來的錯誤的診斷定位、改錯的過程。

排錯是指在軟件測試階段,程序存在大量的 bug,通過測試發現錯誤。通過排錯來糾正錯誤。

什麼是軟件維護的副作用?軟件維護的副作用有哪幾種?

①維護的副作用是指由於修改軟件而導致新的錯誤的出現或者新增加一些不希望發生的情況

②修改代碼的副作用、修改數據的副作用、修改文檔的副作用。

軟件複用、軟件共享、軟件移植三者之間的區彆是什麼。

①軟件複用:指在軟件開發過程中重複使用相同或相似軟件元素的過程。通過軟件複用,可以提高軟件開發的效率和質量。軟件複用是指重複使用“為了複用目的而設計的軟件"的過程。

②如果是在一個係統中多次使用一個相同的軟件成分,則不稱作複用,而稱作共享。

③對一個軟件進行修改,使它運行於新的軟硬件平台,也不稱作複用,稱作軟件移植。?

什麼是軟件再工程?軟件再工程的意義是什麼?

①軟件再工程是一類軟件工程活動,它能夠使人們增進對軟件的理解,準備或直接提高軟件的可維護性複用性或演化性。

②軟件再工程旨在對現存的大量軟件係統進行挖掘、整理,以得到有用的軟件構件,或對已有的軟件構件進行維護,以延長其生存期。這是一個工程過程。能夠將逆向工程、重構和正向工程組合起來,將現存係統重新構造為新的形式。

第九章麵向對象方法學

什麼是類?什麼是對象?類和對象是什麼關係?

①對象是問題域中客觀存在的事物的抽象,是一組屬性和這些屬性上操作的封裝體。

②類是具有相同屬性和操作的一組相似對象的集合。

③類給出了屬於該類的全部對象的抽象定義,而對象則是符合這種定義的一個實體;因此對象是類的一個實例,類是對象的模板。

什麼是基於對象?什麼是麵向對象?

若僅使用對象和消息,則該方法稱為基於對象的方法。而不是麵向對象的方法,若進一步把所有對象都劃分為類,則該方法稱為基於類的方法。隻有同時使用對象類繼承和消息的方法才是真正的麵向對象方法。

簡述類與類之間的關係。

①繼承

②多態性

③關聯

④依賴?

⑤實現

⑥聚集與組合

傳統軟件開發方法存在哪些問題?麵向對象方法學有哪些優點?

(1)軟件重用性差、軟件可維護性差、開發出的軟件不能滿足用戶需要。

(2)與人類習慣的思維一致、軟件穩定性好、可重用性好、較易開發大型的軟件產品、可維護性好、易於測試。

簡述麵向對象開發方法的優點。

①與人類習慣的思維方式一致

②軟件穩定性好

③可重用性好

④適合開發大型軟件產品

⑤可維護性好

第十章?麵向對象的分析

麵向對象建模主要建立哪幾種類型.

①用例模型:從用戶需求的角度來描述係統,指明係統應該“做什麼”,直接反映用戶對目標係統的需求,描述數據在係統中的變換過程及係統的功能。

②對象模型:對模擬世界的對象及彼此之間的關係靜態結構的描述,為建立動態模型和用例模型提供了實質性的框架。

③動態模型:需要考察對象的功能行為。

④物理實現模型:從實現子係統和實現元素的角度來表現係統實現的物理組成。

簡述建立用例模型所包含的幾個步驟。

①確定係統範圍和邊界

②確定參與者?

③確定用例?

④確定用例之間的關係

簡述建立對象模型的步驟有那些?

①確定類和對象?

②確定關聯

③確定屬性

④建立對象類圖

⑤劃分主題?

⑥優化對象模型

簡述CMM (軟件成熟度模型)的5個成熟度等級。

①初始級

②可重複級

③已定義級

④已管理級

⑤優化級

?