軟件工程前三章作業
第1章 緒論
1. 什么是軟件危機?為什么會產生軟件危機?
(1)軟件危機是計算機軟件開發和維護過程所遇到的一系列問題。表現為:
-
開發成本急劇上升。
-
質量很不可靠。
-
供不應求:軟件開發率跟不上計算機應用迅速深入的趨勢。
-
軟件可維護性差——錯誤難以改正,新功能難以增加。
-
沒有文檔資料——給軟件交流,系統的管理、維護造成困難。
(2)軟件危機的原因:
-
軟件維護費用急劇上升,直接威脅計算機應用的擴大。
修改程序困難,抽調大量人員,影響其他軟件開發等。
越晚發現錯誤,改正的成本就越高(因此強調重視需求)。
-
軟件生產技術進步緩慢,是加劇軟件危機的重要原因。(軟件開發理念和手段與客觀實際存在的差異)
1)對軟件本身的認識存在差異。
2)對軟件 的服務對象認識不足。
3)對軟件開發缺乏科學管理。
4)軟件開發手段落后。
2. 何謂面向對象軟件工程?簡述它與傳統軟件工程的差別和聯系。
(1)面向對象軟件工程以面向對象程序設計為基礎,其開發過程可包括以下階段: OO分析與對象抽取→對象詳細設計→面向對象的編碼和測試
(2)它與傳統軟件工程的差別和聯系。
-
傳統軟件工程方法適用於中小型軟件產品開發;面向對象軟件工程方法適用於大型軟件產品開發。
-
傳統方法中系統是過程的集合;面向對象方法中系統是交互對象的集合。
-
傳統方法過程與數據實體交互;面向對象方法對象與人或其它對象交互。
-
傳統方法中過程接受輸入並產生輸出;面向對象方法中對象發送與響應消息。
-
傳統軟件工程是以結構化程序設計為基礎,而面向對象軟件工程是以面向對象程序設計為基礎。
-
與面向過程的軟件工程的開發思想相比,面向對象開發方法不再是以功能划分為導向,而是以對象作為整個問題分析的中心,圍繞對象展開系統的分析與設計工作。
-
傳統軟件工程開發過程包括需求分析、總體設計、詳細設計、面向過程的編碼和測試;面向對象軟件工程開發過程包括需求分析與對象抽取、對象詳細設計、面向對象的編碼和測試。
第2章 軟件生存周期與軟件過程
1. 什么是軟件生存周期?把生存周期划分為階段的目的是什么?
(1)一個軟件從開始立項起,到廢棄不用止,統稱為軟件的生存周期。
(2)說法1:使得軟件規模增長而大大增加的軟件復雜性變得較易控制和管理。
說法2:
-
有利於軟件工程開發工程的組織和管理;
-
降低了整個軟件開發過程中的困難程度;
-
對每個階段都可選用最優的管理方法——保證軟件質量、提高生產效率。
6. 比較增量模型和螺旋模型的特點及異同。
(1)增量模型是瀑布模型的順序特征與快速原型法的迭代特征相結合的產物。
(2)螺旋模型是一種迭代模型,每迭代一次,螺旋線就前進一周。
(3)增量模型每個增量都具有高內聚低耦合,高度的獨立性。而螺旋模型它在結合瀑布模型與快速原型的基礎上還增加了風險分析,在項目的所有階段都考慮各類風險,從而能在風險變成問題之前降低它的風險。
10. 試比較RUP和XP的差異。
(1)RUP(Rational Unified Process),即統一過程,描述了軟件開發中的各個環節應該做什么、怎么做、什么時候做以及為什么做,描述了一組以某種順序完成的活動。
(2)RUP總結了6條最有效的軟件開發經驗,這些經驗被稱為“最佳實踐”。分別為:迭代式開發,管理需求,使用基於構件的體系結構,可視化建模,驗證軟件質量,控制軟件變更。
(3)RUP將軟件開發分為四個階段:初始、細化、構建、提交。
(4)極限編程(extreme programming,XP)是一種輕量級的、敏捷的軟件開發方法。具有4個價值觀、4個方面改善、12個核心實踐。
-
4個價值觀:交流、簡單、反饋、勇氣。
-
4個方面改善:加強交流、從簡單做起、尋求反饋、勇於實事求是。
-
12個核心實踐:完整團隊、計划對策、測試、簡單設計、結對編程、小軟件版本、設計改進、持續集成、代碼共有、編碼標准、系統比喻和可持續性的速度。
11. 可行性分析下包含哪些內容?
經濟可行性、技術可行性、操作可行性、法律可行性。
第3章 結構化分析和設計
12. 某事務系統具有下列功能:
(1)讀入用戶命令,並檢查其有效性;
(2)按照命令的編號(1~4號)進行分類處理;
(3)1號命令計算產品工時,能根據用戶給出的各種產品數量,計算出各工種的需要工時和缺額工時;
(4)2號命令計算材料消耗,根據產品的材料定額和用戶給出的生產數量,計算各種教材的需求量;
(5)3號命令編制材料定貨計划;
(6)4號命令計算產品成本。
試用結構化分析和設計方法畫出該系統的數據流(DFD)圖並據此導出系統的模塊結構(SC)圖。
DFD圖

SC圖

15. 選一種排序算法從小到大,分別用流程圖、N-S圖和PDL語言描述。



