軟件工程筆記:軟件工程前生今世

軟件工程前生今世

— 筆記整理自 北京理工大學 計算機學院

軟件工程的歷史

  • 軟件開發

    • 50-60年代:手工作坊
    • 60-70年代:合作生產
    • 70年代以後:工程化
  • 1968年"軟件危機"概念出現

    • 之後出現了軟件工程的概念
    • 也就是把軟件開發活動工程化
  • 三角模型:質量、進度、成本

    • 軟件質量滿足不了我們的需求
    • 軟件規模大了之後,難以控制,總是出現延期,進度失控
    • 預算不夠用,就像一個黑洞把客戶的錢大量吸進去
    • 這三個要素出現了嚴重的問題
  • 人們被迫研究軟件生產中的技術手段和管理方法

關於軟件工程

  • 軟件工程是應用計算機科學、數學及管理科學等原理開發軟件的工程。它借鑑傳統工程(比如:土木工程)的原則、方法,以提高質量,降低成本爲目的。
  • 軟件工程三要素: 方法、過程、工具 共同作用於軟件的質量

CS學科

榮升一級學科

1 )計算機科學與技術 0812

  • 081201 計算機系統結構
  • 081202 計算機軟件與理論
  • 081203 計算機應用技術
  • 081204 計算機網絡與信息安全

2 ) 軟件工程 0835

  • 083501軟件工程理論與方法
  • 083502軟件工程技術
  • 083503軟件服務工程
  • 083504領域軟件工程

軟件工程的知識體系

2001年SWEBOK(Software Engineering Body of Knowledge)把軟件工程 主體知識分爲10個領域

備註:圖片託管於github,請確保網絡的可訪問性

軟件工程的跨界

軟件工程的研究除計算機軟件本身外,還涉及衆多其他的領域 ,如管理科學、心理學、經濟學、人機工程學等,因此,它是一門綜合性學科。

  • 《完美軟件開發:方法與邏輯》
  • 《軟件工程經濟學》
  • 《自動化軟件測試》
  • 《人機工程學》
  • 《軟件心理學》

軟件自動化級別

  • 問題的非形式描述
  • 軟件功能描述
  • 軟件設計描述
  • 編碼
  • 測試

後面三個屬於 低級自動化
後面四個屬於 中級自動化
全部則屬於 高級自動化

關於高級自動化,舉個例子:比如我們用語音描述自己想要的軟件樣子, 機器一下就生成了這樣的軟件, 比較科幻,但是我們相信這是一個在不遠的將來可實現的科幻

軟件主要開發活動所佔比例

1 )傳統比例

  • 分析:20%
  • 設計:15%
  • 編碼:20%
  • 測試:45%

投入大量的人力測試是因爲我們要保證軟件的質量,一般編碼人員和測試人員的比例是:1:1.2 或 1:1.5,體現了對測試的重視

2 ) 當前比例

  • 分析:30%
  • 設計:15%
  • 編碼:30%
  • 測試:25%

隨着我們工具能力的提高,我們對分析更加的重視, 分析的比較好,設計就可以快速完成,有很多自動化的工具可以幫助我們測試,所以測試比例有所減少,由於我們自動編碼的技術還不是很成熟,所以編碼環節佔了30%

3 ) 將來期望比例 CASE 目標比例

  • 分析:45%
  • 設計:40%
  • 測試:15%

編碼沒有了,我們希望通過自動化工具自動產生代碼

軟件工程的發展

備註:圖片託管於github,請確保網絡的可訪問性

上圖這是一段描述語言,也可以說是僞代碼,用來形式化描述系統要幹什麼,也就是做什麼的問題

  • 形式化 -> 如何描述“做什麼”問題
  • 工程化 -> 總結軟件開發過程的規律,解決“怎麼做”
  • 軟件危機促進了軟件自動化的發展
  • 軟件自動化的目標是解決軟件問題:質量、成本、進度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章