軟件工程:軟件工程概述13個問題解答?

1、軟件工程為什麼要強調規範化和文檔化?

軟件工程強調規範化和文檔化。規範化的目的是使眾多的開發者遵守相同的規範,使軟件生產擺脫個人生產方式,進入標準化、工程化的生產方式。

文檔化是將軟件的設計思想、設計過程和實現過程完整地記錄下來,以便於後人的使用和維護,在開發過程中各類相關人員藉助於文檔進行交流和溝通。另外,在開發過程中產生的各類文檔使得軟件的生產過程由不可見變為可見,便於管理者對軟件生產進度和開發過程進行管理。在用戶最終驗收時可以通過對提交的文檔進行技術審查和管理審查,保證軟件的質量。


軟件工程:軟件工程概述13個問題解答?


2、軟件工程層次是如何劃分的?

軟件工程的內容具有層次化結構,最底層是質量保證層,中間是過程層和方法層,最上層是工具層。

如:工具層,方法層,過程層,質量保證層

其中過程層定義了一組關鍵過程域,目的是保證軟件開發過程的規範性和可控性。方法層提供了軟件開發的各種方法,包括如何進行軟件需求分析和設計,如何實現設計,如何測試和維護等方法。

軟件工程的研究內容具有層次化結構,它的最底層是質量保證層,中間是過程層和方法層,最上層是工具層。

全面的質量管理和質量需求是推動軟件工程過程不斷改進的動力,正是這種改進的動力導致了更加成熟的軟件工程方法不斷湧現。過程層定義了一組關鍵過程域,目的是保證軟件開發過程的規範性和可控性。方法層提供了軟件開發的各種方法,包括如何進行軟件需求分析和設計,如何實現設計,如何測試和維護等方法。工具層為軟件工程方法和過程提供了自動或半自動的支撐環境。目前市場上已經有許多不錯的軟件工程工具,應用效果良好。

軟件工程:軟件工程概述13個問題解答?

3、什麼是軟件生存週期模型?

軟件生命週期模型反映的是軟件開發過程、活動和任務的結構框架。它能夠清晰、直觀地表達軟件開發全過程,明確規定要完成的主要活動和任務。對於不同的軟件系統,可能採用不同的開發方法,使用不同的程序設計語言、不同的管理方法和手段、以及各種具有不同技能的人員參與工作,但是對於軟件生命週期模型來說都應該是穩定有效和普遍適用的。

到目前為止,已經提出了多種模型,主要有瀑布模型、演化模型、噴泉模型、螺旋模型、智能模型。模型的選擇是基於軟件的特點和應用領域。

4、軟件工程的發展至今為止經歷了哪幾個階段?各階段的特徵是什麼?

軟件工程經歷了以下幾個發展階段:結構化程序設計、面向對象的程序設計和系統分

析、基於組件軟件系統開發等三個階段。

結構化程序設計:

世紀年代中葉到的上代初,程序模塊概念的提出,逐漸形成了結構化程序設計的思想。模塊是指一組邏輯相關、功能聚合的子例程或函數,這些子例程或函數可以改變程序的狀態或進行數據的特定計算處理。模塊化的思想強調模塊的獨立性,將程序系統分割為一組鬆散連接的組成模塊,有利於大型軟件

系統的小組開發模式的實施,可以有效減小和控制系統的複雜性。

面向對象的程序設計:

模塊發展的下一階段是抽象數據類型發展的高級階段是面向對象的程序設計和系統分析。面向對象的程序設計以對象作為程序設計的基本構件,整個程序由不同的對象組成,各對象分工執行各自在系統中負責完成的任務,並通過相互協作實現系統的整體任務。面向對象的程序設計和系統分析主要任務是發現系統中的對象及對象其間的類層次關係和服務關係,將數據和對數據的處理封裝在一個個的對象中,通過建立對象間的關係構造系統的整體任務求解模型。

基於組件軟件系統開發:

組件化是軟件技術發展到一定階段的產物,是改善軟件的可靠性、可維護性、可重用性行之有效的方法。

在20世紀70年代基本形成了軟件工程的概念、框架、方法和手段,被稱之為第一代軟件工程,即傳統軟件工程。結構化分析、結構化設計和結構化編程方法是這個時期的代表。

80年代出現的Smalltalk 80程序設計語言標誌著面向對象程序設計進入了實用階段,從80年代中到90年代中,研究的重點轉移到面向對象分析和設計上來,從而演化成軟件工程的第二代,稱之為對象工程。

90年代後期,軟件工程的一個重要進展就是基於組件的開發方法。為了提高軟件生產力,避免草率地開發應用程序,儘可能地利用可複用組件來組裝成新的應用軟件系統。到目前為止,組件技術的研究和發展形成了新一代軟件工程,即第三代軟件工程,也有不少人稱之為組件工程。

軟件工程至今還在不斷髮展,無論是組件工程還是對象工程都在不斷髮展,即使是傳統軟件工程的一些基本概念、框架,也隨著技術的進步在發生變化。總之,軟件工程代與代之間並沒有鴻溝,它們不僅交叉重疊,也攜手並進。

5、根據相關的法律,對於侵犯軟件著作權的行為,根據情節應當給予什麼處罰?


對於侵犯軟件著作權的行為,要根據情況承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任;損害社會公共利益的,由著作權行政管理部門責令停止侵權行為,沒收違法所得,沒收、銷燬侵權複製品,並處罰款;

情節嚴重的,著作權行政管理部門可以沒收用於製作侵權複製品的材料、工具、設備等;觸犯刑律的,依法追究刑事責任。

6、職業化軟件工程師十大忌諱是哪些?

  1. 對外交付半成品
  2. 不遵守標準和規範
  3. 不積極幫助他人
  4. 版權意識不敏感
  5. 對待計劃不嚴肅
  6. 公事私事相混淆
  7. 不注意知識更新
  8. 不主動與人溝通
  9. 不遵守職業規則
  10. 不夠誠實和正直

7、什麼叫職業化?職業化軟件工程師的必備條件是什麼?


所謂職業化,簡單說就是能勝任工作,讓人放心。

“能勝任工作”,就需要具備相應的專業技能、知識和經驗;“讓人放心”意味著很多,包括遵守行業成文的或未成文的規則和規範,積極有效地和同事溝通,確保自己的工作產品是大家所期望的,儘可能地向客戶提供最專業的服務和產品。自律、溝通和技能是成為職業化軟件工程師的必要條件。

自律:

軟件區別於其它傳統產品,軟件只有安裝運行後,人們才看見它的界面;開發進度也是肉眼看不見的,很難準確判斷開發任務完成了80%還是30%;質量更是不可見的,只有通過非常認真、全面的測試和度量,才能瞭解代碼的質量。一個程序員認真思考問題時的模樣和他發呆時的表現一樣,外人很難判斷。因此說,“自律”對軟件工程師來說更為重要。

溝通:

軟件的規模越來越大,而且處在不斷的變化過程中。因此需要軟件工程師進行大量書面的、口頭的、或面對面的溝通。大到產品的整體功能和性能要求,小到程序的結構,甚至一個函數、一個變量的含義都需要溝通。溝通有標準化的、可視化的工具語言,如UML。軟件工程強調文檔的重要性就是以文檔作為溝通的工具,與客戶溝通明確用戶需求;工程師之間溝通明確設計方案,市場人員和工程師溝通確定產品特徵。軟件工程的實踐表明,缺乏主動溝通,往往導致整個團隊的技術方案出現偏差,使整個項目的進度受到影響。

技能:

軟件工程師常常強調自己掌握的編碼技術,往往忽視用戶需求和軟件開發的規範。作為職業化軟件工程師,需求分析、軟件設計、軟件構造、軟件測試、軟件維護、配置管理、軟件項目管理、軟件過程改進、軟件工具和方法以及軟件質量保證等是更為重要的技能。

軟件工程:軟件工程概述13個問題解答?


8、請比較軟件生命週期瀑布模型和螺旋模型的特點。

瀑布模型有什麼特點?

1、其核心思想是按工序將問題簡單化。

2、採用結構化的分析與設計方法將邏輯實現以物理實現分開。

3、瀑布型將軟件生命週期劃分為軟件計劃、需求分析和定義(前兩者為定義階段)、軟件設計、軟件編碼、軟件測試(前面為開發階段)、軟件運行維護(最後一個為維護階段)6個階段。

優點:

可強迫開發人員採用規範的方法(例如,結構化技術);

嚴格地規定了每個階段必須提交的文檔;

要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證。

螺旋模型的主要特點和優點有:

1)支持用戶需求的動態變化。

2)原型可看作形式的可執行的需求規格說明,易於為用戶和開發人員共同理解,還可作為繼續開發的基礎,併為用戶參與所有關鍵決策提供了方便。

3)螺旋模型特別強調原型的可擴充性和可修改性,原型的進化貫穿整個軟件生存週期,這將有助於目標軟件的適應能力。

4)為項目管理人員及時調整管理決策提供了方便,進而可降低開發風險。

瀑布模型最重要的特點:只有當一個階段的任務完成、交付相應的文檔、通過審查小組的審查合格後,才能開始下一個階段的工作。瀑布模型的優點:有利於大型軟件開發過程中人員的組織、管理,有利於軟件開發方法和工具的研究,從而提高了大型軟件項目開發的質量和效率。瀑布模型的缺點:(1)開發過程一般不能逆轉,否則代價太大;(2)實際的項目開發很難嚴格按該模型進行;(3)客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。(4)軟件的實際情況必須到項目開發的後期客戶才能看到,這要求客戶有足夠的耐心。

螺旋模型的主要優勢在於它是風險驅動的,每個方案在實施前都要經過風險分析。如果風險過大,則項目應該停止,或改變方案。螺旋模型的優點:(1)設計上的靈活性,可以在項目的各個階段進行變更;(2)以小的分段來構建大型系統,使成本計算變得簡單容易;(3)客戶始終參與每個階段的開發,保證了項目不偏離正確方向以及項目的可控性;(4) 隨著項目推進,客戶始終掌握項目的最新信息 , 從而他或她能夠和管理層有效地交互。 螺旋模型的缺點:(1)採用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發中,如果未能夠及時標識風險,勢必造成重大損失;(2)過多的迭代次數會增加開發成本,延遲提交時間。

9、指出瀑布模型中下列任務的順序:驗收測試,項目計劃,單元測試,需求評審,成本估計,概要設計,詳細設計,系統測試,設計評審,編碼,需求規格說明書。

項目計劃->成本估計->需求規格說明書->需求評審->概要設計->詳細設計->設計評審->編碼->單元測試->系統測試->驗收測試

10、什麼是軟件危機?軟件危機表現在哪幾個方面?

由於軟件具有上述這些特點,長期以來一直沒有發明一種高效的開發方法,從而導致軟件生產效率非常低,交付期一拖再拖,最終交付的軟件產品在質量上很難保障。這種現象早在20世紀60年代被定義為“軟件危機”。它的具體表現如下:

1) “已完成”的軟件不滿足用戶的需求。

2) 開發進度不能保障,交付時間一再拖延。

3) 軟件開發成本難以準確估算,開發過程控制困難造成開發成本超出預算。

4) 軟件產品的質量沒有保證,運算結果出錯、操作死機等現象屢屢出現。

5) 軟件通常沒有適當的文檔資料,或文檔與最終交付的軟件產品不符,軟件的可維護程度非常低。

11、試述產生軟件危機的主要原因?

導致軟件危機的主要原因有:

(1)軟件日益複雜和龐大

(2)軟件開發管理困難和複雜

(3)軟件開發技術落後

(4)生產方式落後

(5)開發工具落後

(6)軟件開發費用不斷增加

軟件的特點是導致軟件危機的客觀因素,而軟件開發和軟件維護過程中使用的不正確方法是主觀因素,主要表現為:忽視軟件開發前期的調研和分析工作,沒有統一的、規範的方法論指導,文檔資料不齊全,忽視人員之間的交流,忽視測試工作,輕視軟件的維護。

12、什麼是軟件工程?軟件工程的目標是什麼?

什麼是軟件工程?軟件工程的目標是什麼?

軟件工程的定義:

軟件工程是一門旨在生產無故障的、及時交付的、在預算之內的和滿足用戶需求的軟件的學科。本質上,軟件工程就是採用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理方法和先進軟件開發技術結合起來,運用到軟件開發和維護過程中,解決軟件危機。

1、將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護過程,也就是說,將工程化應用於軟件開發和管理之中;

2、對1中所選方法的研究。

軟件工程的目標:

實現預期的軟件功能,達到較好的軟件性能,滿足用戶的需求;

增強軟件過程的可見性和可控性,保證軟件的質量;

提高所開發軟件的可維護性,降低維護費用;

提高軟件開發生產率,及時交付使用;

合理預算開發成本,付出較低的開發費用。

軟件工程是:① 將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護過程,也就是說將工程化應用於軟件開發和管理之中;② 對①中所選方法的研究”。

軟件工程旨在開發滿足用戶需要、及時交付、不超過預算和無故障的軟件,其主要目標如下:

a) 實現預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。

b) 增強軟件過程的可見性和可控性,保證軟件的質量。

c) 提高所開發軟件的可維護性,降低維護費用。

d) 提高軟件開發生產率,及時交付使用。

e) 合理預算開發成本,付出較低的開發費用。

13、職業化軟件工程師要注意的問題是什麼?

職業化軟件工程師要注意的十大問題:

  1. 高質量地完成任務
  2. 遵守行業標準,不能肆意按照自己的想象來發揮
  3. 積極幫助他人
  4. 版權意識敏感
  5. 嚴格遵守計劃
  6. 公私分明
  7. 注意知識更新
  8. 善於溝通
  9. 遵守職業規則⑩誠實和正直。


分享到:


相關文章: