軟件工程導論簡答
第一章概述
什麼是軟件?軟件與程序的區彆是什麼?
(1)軟件是程序、數據以及開發使用和維護程序需要的文檔的完整集合。
(2)軟件不是程序,程序是軟件的一部分,程序是為了解決某個特定問題而用程序設計語言描述的適合計算機處理的語句序列,它是有軟件開發人員設計和編碼的。程序執行時一般要輸入一定的數據,也會有相應的輸出結果。沒有相關文檔,僅有程序是不能稱之為軟件產品的。
簡述軟件危機的表現形式。
①對軟件開發成本和研製進度的估計常常很不精確
②已完成的軟件不能滿足用戶的需要?
③軟件產品質量差,可靠性得不到保證?
④軟件產品可維護性差
⑤軟件成本在計算機係統總成本中所占的比例逐年上升
⑥軟件開發生產率提高的速度遠遠跟不上計算機應用速度普及深入趨勢
什麼是軟件生命周期?劃分生命周期的主要原則是什麼?
(1)軟件的生命周期是指某一軟件項目被提出並著手實現開始,直到該軟件報廢或停止使用為止所經曆的時間。
(2)主要原則:各階段的任務,彼此間儘可能相互獨立。同一階段各項任務的性質儘可能相同,從而降低每個階段任務的複雜性。簡化不同階段之間的聯係,有利於軟件開發過程的組織管理。
軟件生存周期的3個時期和8個階段分彆是什麼?(21、22年考,重點)
軟件的生存周期一般分為軟件計劃、軟件開發和軟件運行3個時期。
軟件計劃時期一般有問題定義和可行性研究兩個階段
開發時期有需求分析、軟件設計(包括概要設計、詳細設計)、編碼和測試4個階段,運行時期主要是維護階段。
簡述軟件工程的基本目標。
①降低軟件開發成本?
②滿足用戶要求的全部軟件功能
③符合用戶要求,令用戶滿意的軟件性能
④具有良好的易用性、可用性和可移植性
⑤較低的維護成本,較高的可靠性
⑥按合同要求完成開發任務,及時交付用戶使用
什麼是軟件工程?它目標和內容是什麼?
(1)軟件工程是指導計算機軟件開發和維護的一門工程學科,采用工程的概念、原理、技術和方法來開發和維護軟件。
(2)目標:
①降低軟件開發成本
②滿足用戶要求的全部軟件功能
③符合用戶要求,令用戶滿意的軟件性能
④具有良好的易用性、可用性和可移植性
⑤較低的維護成本,較高的可靠性
⑥按合同要求完成開發任務,及時交付用戶使用
(3)軟件工程的研究內容是包括軟件開發技術和軟件開發過程管理兩個方麵。
簡述軟件工程的基本原理。
①用分階段的生存周期計劃嚴格管理
②堅持進行階段評審
③實行嚴格的產品控製
④采用現代程序設計技術?
⑤結果可以清楚地審查?
⑥開發小組成員少而精
⑦承認不斷改進軟件工程實踐的必要性
簡述麵向過程軟件工程的開發過程/簡述傳統軟件工程具體過程。(21年考)
①采用結構化技術(結構化分析、結構化設計和結構化實現)完成軟件開發的各項任務。
②把軟件生存周期劃分成若乾個階段,然後順序完成各個階段的任務。
③每一個階段的開始和結束都有嚴格標準,前一階段結束的標準是後一階段工作開始的標準。
④在每一階段結束之前,必須正式地進行嚴格的技術審查和管理複審。
簡述麵向對象軟件工程方法
麵向對象的開發方法的重點是放在軟件生命周期的分析階段。因為麵向對象方法在開發的早期就定義了一係列麵向問題領域的對象,即建立了對象模型,整個開發過程統一使用這些對象。並不過分充實和擴展對象模型。
麵向對象開發過程的特點是開發階段界限模糊,開發過程逐步求精,開發獲動反複迭代。通常開發活動是在分析、設計和實現階段的反複迭代。
麵向過程軟件工程方法和麵向對象軟件工程方法的對比。
與麵向過程的軟件工程的開發思想相比,麵向對象開發方法不再是以功能劃分為導向,而是以對象作為整個問題分析的中心。圍繞對象展開係統的分析和設計工作。在開發過程方麵,麵向對象軟件工程和傳統軟件工程一樣,也是把軟件開發劃分為分析、設計、編碼和測試等幾個階段。但各個階段的具體工作不同。
簡述瀑布模型的優缺點?
優點:①它是一種線性的開發模型,具有不可回溯性。
②過程模型簡單,執行容易。
③將複雜的軟件開發過程明確分解為幾個順序的步驟,降低開發軟件的複雜性。
缺點:①無法適應變更,由於開發模型是線性的用戶隻有等到整個過程的末期才能見到開發成果,從而增加了開發的風險。
②早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重後果。
第二章可行性研究
簡述可行性研究的過程。
①複查並確定係統規模和目標
②研究目前正在使用的係統?
③建立新係統的高層邏輯模型?
④導出和評價各種方案
⑤推薦可行性方案
⑥草擬初步開發計劃
⑦編寫可行性研究報告提交複查
在軟件開發早期階段為什麼要進行可行性研究?可行性研究的任務是什麼?
應該從哪幾個方麵研究目標係統的可行性?
①避免或者減輕項目開發後期可能出現的困境。
②主要任務是,首先需要進行概要的分析研究,初步確定項目的規模和目標,確定項目的約束和限製,必須分析幾種可能解法的利弊,從而判定原定係統的目標和規模是否現實,係統完成後帶來的效益是否大到值得投資開發這個係統的程度。
③經濟可行性、技術可行性、操作可行性、法律可行性。
第三章需求分析
簡述需求分析的常用方法。
①功能分解法?
②結構化分析法?
③信息建模法
④麵向對象方法
實體聯係模型中的基本要素有哪些?分彆如何表示?
①實體聯係模型中的基本要素有實體型、屬性和聯係。
②實體型用矩形表示,屬性用橢圓表示,聯係用菱形表示。
需求分析階段的基本任務是什麼?
①確定對係統的綜合需求。
分析員和用戶雙方確定對軟件係統的綜合要求,具體有功能需求、性能需求、環境需求、接口需 求、用戶界麵需求等的綜合需求。
②分析係統的數據需求。
分析係統的數據要求通常用建立數據模型方法(實體聯係圖),複雜的數據結構利用圖形工具輔助描繪。常用工具有層次方框圖和 Warnier 圖等。
③建立軟件的邏輯模型。
通常用數據流圖、數據字典及實體-聯係圖和主要的處理算法描述目標係統的邏輯模型。
④編寫軟件需求規格說明書。
⑤需求分析評審。目的發現需求分析的錯誤和缺陷,然後修改開發計劃。
需求分析的步驟(20年考)
①需求獲取:調查研究。
②需求提煉:分析建模。?
③需求描述:編寫SRS (需求規格說明書)。
④需求驗證。
怎樣理解分析階段的任務是決定“做什麼”,而不是“怎樣做” ?
需求分析實際上是調查、評價以至肯定用戶對軟件需求的過程,其目的在於精化軟件的作用範圍,也是分析和確認軟件係統構成的過程,以確定未來係統的主要成分及它們之間的接口細節。因此需求分析實際上是一個對用戶意圖不斷進行揭示和判斷的過程,它並不考慮係統的具體實現,而是完整地、 嚴密地描述應當“做什麼”的一種過程。
什麼是數據流圖?其作用是什麼?其中的基本符號各表示什麼含義?(21年考)
①數據流圖是 SA方法中用於表示係統邏輯模型的一種工具。
②它描述係統由哪幾部分組成,各部分之間的聯係等,以直觀的圖形清晰地描述了係統數據的流動和處理過程。
③箭頭表示數據流、圓或橢圓表示變換數據的處理、方框表示數據的源點或終點、雙杠或單杠表示數據存儲(文件)。
簡述繪製數據流圖的步驟。
第一步,先找外部實體(可以是人、物或其他軟件係統)。找到了外部實體,則係統與外部世界的界麵得以確定,係統的源點和終點也就找到了。
第二步,找出外部實體的輸入和輸出數據流。
第三步,在圖的邊上畫出係統的外部實體。
第四步,從外部實體的輸出流(源點)出發按照係統的邏輯需要,逐步畫出一係列變換數據加工,直到找到外部實體處所需的輸入流(終點),形成數據流的封閉。
第五步,按照上述原則進行檢查和修改,父圖步驟與子圖一樣。
簡述繪製數據流圖的基本原則。
①數據流圖中所有的符號必須是四種基本符號和附加符號。
②數據流圖中的主圖(頂層)必須含有四種基本符號,缺一不可。
③數據流圖主圖上的數據流必須封閉在外部實體之間。外部實體可以是一個,也可以是多個。
④加工(交換數據處理)至少有一個輸入數據流和一個輸出數據流,反映出此加工數據的來源與加工的結果。
⑤任何一個數據流子圖必須與它父圖上的一個加工相對應附圖中有幾個加工就可能有幾張子圖,兩者的輸入數據流和輸出數據流必須一致,其所謂的“父子平衡”。
⑥圖上的每個元素都必須有名字(流向數據存儲或從數據存儲流出的數據流除外)。
什麼是數據字典?其作用是什麼?它有哪些條目?
①數據字典是對數據流圖中所包含元素的定義集合。
②數據字典的作用正是在軟件分析和設計的過程中,給人提供數據描述,即對數據存儲(文件)和加工(處理)等名字進行定義。
③數據流、數據流分量(數據基本項)、數據存儲(文件)和加工(處理)。
簡述數據流圖與數據字典的關係。(20年考)
數據流圖和數據字典共同構成係統的邏輯模型,沒有數據字典數據流圖就不嚴格,然而沒有數據流圖數據字典也難於發揮作用。數據流圖和對數據流圖中每個元素的精確定義放在一起,才能共同構成係統的規格說明。
什麼是結構化分析方法?該方法使用什麼描述工具?
(1)結構化分析方法是一種從問題空間到某種表示的映射方法。軟件功能由數據流圖表示,是結構化方法中重要的被普遍采用的方法。它由數據流圖和數據字典構成係統的邏輯模型。
(2)數據流圖,數據字典,結構化語言,判定樹和判定表。
簡述半形式化的結構化分析描述工具。
①數據流圖。數據流圖是一種描述"分解"的結構化過程建模工具。它描述係統由哪幾部分組成、各部分之間的聯係等。
②數據字典。數據字典是關於數據的信息的集合,用來定義數據流圖中的數據和加工。對數據流圖中包含的所有元素的定義的彙集。
③描述加工邏輯的結構化語言、判定表和判定樹。數據流圖中的不能被再分解的每一個基本加工處理邏輯的詳細描述采用結構化語言,判實表和判定樹。
建立全局 E-R模型時,各分E-R模型之間可能出現的衝突有哪些?應如何處理?
(1)各局部E-R模型之間的衝突主要有三類,屬性衝突,命名衝突和結構衝突。
(2)屬性衝突:理論上好解決,但實際上需要各部門討論協商,解決起來也並非易事。
命名衝突:處理方法與屬性衝突的解決方法一樣,也是通過討論協商等方式解決。
結構衝突:集成後的該實體取各局部E-R模型中屬性的並集,再適當調整屬性的次序;實體間的聯係在各局部 E-R模型中具有不同的類型。解決辦法是根據應用的語義對實體之間聯係的類型進行綜合或調整。?
第四章總體設計
簡述總體設計階段的主要目的和任務
(1)總體設計階段的基本目標就是回答“概括地說,係統應該如何實現?”這個問題。
(2)任務
①劃分出組成係統的物理元素
②設計軟件的總體結構,即確定係統中的每個程序是由哪些模塊組成的,每個模塊的功能及模塊和模塊之間的接口、調用關係等。
模塊的獨立性是什麼?怎麼度量?
(1) ①模塊獨立性是模塊化、抽象、信息隱蔽和局部化概念的直接結果。
②模塊獨立性是每個模塊完成一個相對獨立的特定功能,並且和其它模塊之間的接口很簡單
(2)①模塊獨立性從兩方麵衡量:模塊之間的耦合和模塊本身的內聚。
②耦合指模塊之間的相互獨立性的度量,內聚是指模塊內部各個成分之間彼此結合的緊密程度的度量。
③降低模塊之間耦合程度,提高模塊內聚性。提高模塊獨立性。
軟件模塊設計需遵循哪些準則。(20年考)
①降低模塊之間的耦合性,提高模塊的獨立性。
②模塊結構的深度、寬度、扇出和扇入適當。?
③模塊的作用域應該在控製域範圍內。?
④模塊接口設計要簡單,以便降低複雜度和冗餘度。
⑤設計功能可預測並能得到驗證的模塊。
⑥適當劃分模塊,以保持其獨立性。
模塊的耦合性有哪幾種?各表示什麼含義。
①無直接耦合
兩個模塊分彆從屬於不同模塊的控製與調用,它們之間不傳遞任何信息,沒有直接的聯係,相互獨立,稱無直接耦合.軟件係統中所有模塊之間不可能沒有任何聯係。
②數據耦合
兩個模塊之間有調用關係,相互傳遞的信息以參數的形式給出,而傳遞的信息僅僅是簡單的數據,則稱數據耦合。
③標記耦合
兩個模塊之間傳遞的是數據結構,而且被調用模塊不需要作為參數傳遞過來的整個數據結構,隻需要使用數據結構共中部分數據元素,則稱為標記耦合。
④控製耦合
當一個模塊調用另一個模塊時,傳遞的信息控製了該模塊的功能,則稱為控製耦合。
⑤公共環境耦合
兩個或多個模塊共用一個數據環境,稱公共環境耦合。
⑥內容耦合
一個模塊直接訪問另一個模塊的內部數據,一個模塊不通過正常入口而轉入另一個模塊內部,一個模塊有多個入口,這些屬於內容耦合.內容耦合屬於最高程度的耦合,也是最差的耦合,應避免使用。
簡述結構化設計的基本步驟。
①複審數據流圖,必要時可進行修改或精化;
②確定數據流圖類型:如果是變換型,確定邏輯輸入和邏輯輸出邊界,找出變換中心,映射為變換結構的頂層和第一層;如果是事務型,確定事務中心和活動路徑,映射為事務結構的頂層和第一層,建立軟件結構的基本框架。
③分解上層模塊,設計中下層模塊結構。?
④根據軟件結構設計準則對軟件結構求精並改進。?
⑤導出接口描述和全程數據結構。
⑥複審,如果有錯,轉入修改完善,否則進入下一階段詳細設計。