軟件工程前生今世
— 筆記整理自 北京理工大學 計算機學院
軟件工程的歷史
-
軟件開發
- 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,請確保網絡的可訪問性
上圖這是一段描述語言,也可以說是僞代碼,用來形式化描述系統要幹什麼,也就是做什麼的問題
- 形式化 -> 如何描述“做什麼”問題
- 工程化 -> 總結軟件開發過程的規律,解決“怎麼做”
- 軟件危機促進了軟件自動化的發展
- 軟件自動化的目標是解決軟件問題:質量、成本、進度