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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

计算机考研复试之软件工程三十问

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机考研复试之软件工程三十问 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*前言:不知道學習軟工的小伙伴有沒有這種疑問,軟工為何這么難學進去?為何這么繁瑣?為何這么難背?本小白在初學軟工的時候,基本就是長期走神發呆的狀態,因為完全不知道軟在講啥,要考啥。?本次二刷軟工,我花了18小時來整理軟件工程的知識點和可能要考查的面試問題,雖然不能把軟工覆蓋全面,也比不上一些大佬整理得專業和詳細,但是我有信心我自己整理的東西還是比較細致的、比較簡潔明了的、比較抓住重點的、也比較適合廣大考研學生的知識掃盲應考背誦記憶的。

? ? ? ? ?本文參考資料:軟件工程導論(第六版)、本人考研院選的本科PPT、一些考研參考資料和CSDN部分優質博客等。

? ? ? ? ?自身專業水平有限,文章如有錯誤,懇請批評指正。整理知識點不易,若對您學習、備考有幫助,懇請關注、點贊、收藏。你們的支持、鼓勵是我繼續打雞血學習和創作的動力。*/

?

/*********************軟件工程概述************************/

?

問題一:什么是軟件工程目標是什么?內容是什么?軟工方法學三要素是什么?什么是軟件過程

軟件工程是利用科學知識和技術原理來定義、開發和維護軟件的一門學科。

目標是:付出較低的開發成本、取得良好的性能、達到預期的效果……(很多)

軟工內容:軟工包括開發技術開發管理兩方面內容。

軟工方法學三要素:1.方法(指的是開發方法)2.工具(支持方法的工具)3.過程(管理過程)

軟件過程:完成高質量軟件開發中的一系列操作。

?

問題二:軟件工程方法學一般有哪兩種?

結構化方法學(又稱為生命周期方法學):強調自頂向下順序完成軟件開發的任務。結構化方法學中有三種基本控制結構:1.順序2.選擇3.循環

面向對象方法學:盡量模擬人類習慣的思維方式去開發。

補充:面向對象三大特征:1.封裝(把數據和方法放在一個類里封裝起來)2.繼承(子類繼承父類,通過關鍵詞extends)3.多態(相同類型的變量調用同一個方法時呈現出不同的行為特征。Ps:一個細節問題要注意:只有方法才有多態,實例變量不存在多態)

?

問題三:軟件生命周期劃分為哪幾個階段?

生命周期劃分為三個時期八個階段

軟件定義時期:問題定義、可行性研究

軟件開發時期:需求分析、總體設計、詳細設計、編碼和單元測試、綜合測試

軟件運行維護時期:運行維護

?

問題四:什么是軟件危機?(本題自由度較大,選取兩三點就行)

軟件危機指軟件開發的成本和開發時期估計不準、軟件質量不可靠、軟件維護難……

造成軟件危機的主要原因有:軟件本身的特點、軟件開發和維護的方法等……

?

問題五:軟件生命周期中有哪幾種模型?哪些適用于面向對象的軟件開發?

軟件生命周期中常見的模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、Rational統一過程、敏捷過程、微軟過程等等。

噴泉模型適用于面向對象的軟件開發。(因為噴泉模型在整個開發過程中都使用“對象”這個概念,很容易實現各個開發步驟的反復迭代(求精)和逐步深化,因此噴泉模型很好實現了面向對象開發的無縫和迭代特性)

?

?

/*************************可行性研究***********************/

?

問題六:為什么要進行可行性研究

用最小的代價、在盡可能短的時間內確定問題是否能被解決。(注意:不是去解決問題)

?

問題七:可行性研究工具有哪些?(這是重點)

  • 系統流程圖:系統流程圖是概括的描繪物理系統的傳統工具。
  • 數據流圖:描繪信息流和數據從輸入移動到輸出的過程中經受的變換
  • 數據字典:是關于數據的信息的集合,是對數據流圖中包含的所有元素的定義的集合
  • ?

    問題八:請介紹一下可行性研究的方法。

    首先分析問題,試探性的導出問題的各種解,然后進行各種分析和比較,選擇和推薦可行的解決方案。采用系統流程圖描述物理數據流;運用數據流圖并結合數據字典構建系統的邏輯模型。可行性研究的結果產生可行性研究報告

    ?

    ?

    /*************************需求分析***********************/

    ?

    問題九:什么是需求分析?(記住要點,用自己的話說)

    需求分析是發現、求精、建模、規格說明和復審的過程。

    即:先與用戶交流,了解基本需求……繼續深入,逐步求精需求……建立分析模型……寫成軟件規格說明書……嚴格評審……最終得到用戶確認。

    補充:一般從1.一致性2.完整性3.現實性4.有效性 四方面去復審軟件需求規格說明書。

    ?

    問題十:請介紹一下什么是需求工程。

    需求工程包括需求分析需求管理需求分析任務主要包括:1.需求獲取2.需求建模3.規格說明4.需求驗證。需求管理是對系統需要變更了解和控制的工程,包括標識、控制和跟蹤需求的活動。

    ?

    問題十一:需求分析是一項軟件工程活動,它的兩大主要目標是什么?

  • 建立分析模型:可用實物——聯系圖建立數據模型,可用數據流圖建立邏輯模型,可用狀態圖建立行為模型。(其中,數據字典是把三種分析模型粘合在一起的“粘合劑”,是分析模型的“核心”)
  • 編寫需求規格說明書(簡稱:規格說明)
  • ?

    ?

    /**************************總體設計*************************/

    ?

    問題十二:軟件總體設計階段的主要任務是什么?

    如果簡要作答:1.確定系統的物理模型2.確定軟件的體系結構

    詳細作答(課本上的原話):總體設計階段的基本目的是用比較抽象概括的方法確定系統如何完成預定的任務,也就是說,應該確定系統的物理配置方案,進而確定組成系統的每個程序的結構

    ?

    問題十三:從技術觀點上看,軟件設計包括了什么內容?

  • 數據設計2.體系結構設計3.接口設計4.過程設計
  • Ps:本題為PPT上的知識點,軟件設計包括了總體設計和詳細設計

    ?

    問題十四:基本的軟件設計原理有哪些?

  • 模塊化(使復雜問題“分而治之”)
  • 抽象(抓事務本質特征,先不考慮細節)
  • 逐步求精(集中精力先解決主要問題,盡量推遲對細節的考慮)
  • 信息隱藏和局部化(將某些模塊的某些過程和數據隱藏起來,其他模塊不能訪問它)
  • 模塊獨立性(模塊獨立性是模塊化、抽象、信息隱藏的直接產物)
  • ?

    問題十五:什么是內聚性,什么是耦合性,針對這兩個特性應該注意什么問題?

    內聚性:內聚是一個模塊內部各個元素彼此結合緊密程度的度量

    耦合性:耦合是模塊間互相連接的緊密程度的度量

    應注意以下問題:軟件設計應追求高內聚、低耦合。

    盡量使用數據耦合,少用控制耦合特征耦合,限制外部耦合公共環境耦合的范圍,不用內容耦合

    盡量做到高內聚,中等程度的內聚也可以采用,堅決不使用低內聚

    ?

    問題十六:軟件結構設計的主要手段有哪些?應該遵循的最主要原理是什么?

    軟件設計原理啟發規則是軟件結構設計的兩大主要手段,模塊獨立性是其應遵循的最主要原理。

    補充:層次圖、HIPO圖、結構圖,是描繪軟件結構的常用工具。

    ?

    問題十七:講述一下什么是結構化設計方法。

    結構化設計(SD)是一種面向數據流的設計方法,并基于模塊化自頂向下逐步求精結構化程序設計等技術,可與結構化分析(SA)方法銜接。

    ?

    問題十八:數據處理的類型有哪兩種?請分別介紹一下。(也可問,信息流的類型有哪幾種)

  • 變換流:信息輸入系統,由外部形式變為內部形式。進入系統的信息經過變換中心,加工處理,再輸出系統,由內部形式再變為外部形式。
  • ? ? ?即:輸入+變換中心+輸出

    ? ? ? 2.事務流:數據沿著輸入通路到達一個事務中心,事務中心根據事務的類型在若干個活動流中選擇一個來執行,這種數據流稱作事務流。

    ?

    問題十九:變換分析步驟有哪些?

  • 重畫數據流圖
  • 區分邏輯輸入、邏輯輸出和變換中心部分
  • 進行一級分解,設計模塊結構頂層和第一層
  • 進行二級分解,設計模塊結構的中、下層
  • ?

    /*************************詳細設計**************************/

    ?

    問題二十:詳細設計階段的根本目標是什么?主要任務是什么?

    詳細設計的根本目標是確定應該怎么具體的實現所需求的系統。主要任務是過程設計。需要注意,過程設計應該在數據設計、體系結構設計和接口設計之后進行,過程設計的主要內容是設計解題的詳細步驟,即算法。

    Ps:接口設計中,人機界面設計是一個重要組成部分,設計原理是一個迭代過程,反復琢磨逐步求精。

    ?

    問題二十一:過程設計工具有有哪些?

    過程設計中,主要分為三類

  • 圖形工具:程序流程圖(直觀,但逐步求精不理想,不易表示數據結構)、N-S(又叫盒圖,容易確定數據作用域,容易表現嵌套關系)、PAD(又叫問題分析圖,problem analysis diagram,PAD翻譯成程序代碼比較容易,支持逐步求精,支持表示程序邏輯,支持描繪數據結構
  • 表格工具:判定表(能表示復雜的條件組合和動作關系)、判定樹(判定表的變種,表達簡單,但是形式不唯一。PS:樹的形式不唯一很好理解)
  • 語言工具:PDL(設計程序用語言或者偽代碼,易于書寫但是不夠形象)
  • 補充:在過程設計中,有面向數據結構的設計方法,主要有Jackson方法和Warnier方法。

    ?

    問題二十二:程序復雜程度的度量方法有哪些?

  • McCabe方法:根據程序控制流的復雜程度度量程序復雜度,度量結果成為程序的環形復雜度。
  • 此為重要內容:環形復雜度有三種計算方法①數一數流圖的區域個數②V(G)=E-N+2;E是條數,N是結點數③V(G)=P+1;P是判定節點數目

    ? ? ?2. Halstead方法:根據程序中運算符和操作數的總數來度量程序的復雜度。

    ?

    ?

    /***************************軟件測試***************************/

    ?

    問題二十三:軟件測試和軟件開發有什么異同?

    軟件開發過程是一個自頂向下、逐步求精的過程,而軟件測試過程是采用相反順序安排的自底向上,逐步集成的過程。

    ?

    ?

    問題二十四:軟件測試的過程有哪幾個步驟?

  • 單元測試:檢查各個程序模塊是否完成了功能
  • 集成測試:把測試過的模塊組裝起來,測試軟件體系結構
  • 確認測試:檢查已經實現的軟件是否滿足了需求規格說明書的需求
  • 系統測試:把已經確認的軟件納入實際運行環境,與其他系統成分一起測試
  • 驗收測試:向用戶表明系統已經符合了用戶預期標準
  • ?

    問題二十五:單元測試有哪些內容?

    總體上說,單元測試是依據詳細設計說明書源程序清單,來了解該模塊的I/O條件和模塊的邏輯結構。主要采用白盒測試,輔以黑盒測試。

  • 模塊接口測試
  • 局部數據結構測試
  • 路徑測試
  • 錯誤處理測試
  • 邊界測試(注意找數據流、控制流中的剛好等于、大于、小于)
  • ?

    問題二十六:什么是黑盒測試?

    黑盒測試法: 把程序看作一個黑盒子,完全不考慮程序的內部邏輯結構和內部特性。它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當地接收輸入數據并產生正確的輸出信息,程序運行過程中能否保持外部信息的完整性。黑盒測試又稱為功能測試基于規格說明書的測試

    黑盒測試包括:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、功能圖法和接口測試法。

    補充:等價類劃分法不好理解,解釋一下。即將所有的輸入數據劃分成若干部分,然后從每一部分中選取少數有代表性的數據作為測試用例。

    ?

    問題二十七:什么是白盒測試?

    白盒測試法: 是把測試對象看成一個玻璃盒子,允許測試人員利用程序內部的邏輯結構及有關信息,設計測試用例對程序所有的邏輯路徑進行測試,通過在不同點檢查程序的狀態,確定實際狀態是否與預期一致。白盒測試又稱為結構測試基于程序的測試

    白盒測試包括:邏輯覆蓋測試、基本路徑測試、控制機構測試和數據流測試。

    ?

    問題二十八:白盒測試中的邏輯覆蓋測試主要有哪些?

    首先,邏輯覆蓋測試指的是對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次。可分為1.語句覆蓋2.判定覆蓋3.條件覆蓋4.判定——條件覆蓋5.條件組合覆蓋6.路徑覆蓋。

    Ps:語句覆蓋是最弱的邏輯覆蓋,條件組合覆蓋是最強的邏輯覆蓋。

    ?

    問題二十九:黑盒測試中使用各種測試方法的綜合策略是什么?

  • 任何時候都必須使用邊界值分析測試法,它的檢錯能力最強
  • 必要時使用等價類劃分法補充測試用例
  • 錯誤推測法再追加一些測試用例
  • ?

    問題三十:什么是軟件調試?有哪些調試方法?

    軟件調試,是在測試成功后進行的工作,用以進一步診斷和改正程序中的潛在錯誤。

    調試由兩部分組成1.確定程序中可疑錯誤的確切性質和位置2.對程序修改,排除這個錯誤。

    主要的調試方法有1.強行排錯2.回溯法調試3.對分查找法4.歸納法5.演繹法

    ?

    //本文到此結束,麻煩關注我點個贊再走唄~~球球點個贊!

    ?

    總結

    以上是生活随笔為你收集整理的计算机考研复试之软件工程三十问的全部內容,希望文章能夠幫你解決所遇到的問題。

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