簡介
軟體工程專業是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它涉及到程式設計語言,資料庫,軟體開發工具,系統平台,標準,設計模式等方面。在現代社會中,軟體套用於多個方面。典型的軟體比如有電子郵件,嵌入式系統,人機界面,辦公套件,作業系統,編譯器,資料庫,遊戲等。同時,各個行業幾乎都有計算機軟體的套用,比如工業,農業,銀行,航空,政府部門等。這些套用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量。
相關學者、組織機構都分別給出了定義:
Boehm:運用現代科學技術知識來設計並構造電腦程式及為開發、運行和維護這些程式所必需的相關檔案資料。
IEEE:軟體工程是開發、運行、維護和修復軟體的系統方法。
Fritz Bauer:建立並使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟體的一系列方法。
發展過程
概念提出
1960年代末期,電腦程式在複雜度、規模和套用領域等方面的增長引人注目,這導致上千億資金花費在軟體開發上,許多人的工作和生活依賴於軟體開發的成果。軟體產品幫助人們獲得更高的工作和生產效率,同時也給人們提供一個更加安全、靈活和寬鬆的工作與生活環境。儘管有很多成功之處,許多軟體產品在成本、工期、質量等方面存在嚴重問題。主要原因是:
軟體產品是複雜的人造系統,具有複雜性、不可見性和易變性,難以處理。個人或小組開發小型軟體非常有效的編程技術和過程,在開發大型、複雜系統時難以發揮同樣的作用。
1968年在德國舉行的NATO軟體工程會議上,為應對“軟體危機”的挑戰,提出了“軟體工程”的術語。這個時期有代表性的軟體工程定義是“為了經濟地獲得在真實機器上可靠工作的軟體而制定和使用的合理工程原則和方法”。
1972年IEEE學會的計算機協會第一次出版了《軟體工程學報》。此後,“軟體工程”這個術語被廣泛用於工業、政府和學術界,眾多的出版物、團體和組織、專業會議在它們的名稱里使用“軟體工程”這個術語,很多大學的計算機科學系先後設立軟體工程課程。
學科雛形
軟體工程早期的發展是理清軟體工程過程的各種活動,提出軟體生命周期的概念和軟體開發的瀑布模型,制定軟體生命周期中主要活動的質量標準。
1991年,ACM和IEEE/CS的計算教程CC1991專題組將“軟體工程”列為計算學科的九個知識領域之一。
1980年代末到1990年代初,計算機硬體普遍採用大規模積體電路。在單主機計算模式下,基於瀑布模型的軟體開發過程和結構式過程語言編程范型占主導地位。軟體工程得到巨大的發展。以階段論看待軟體生命周期,給規範和規程的制定、工具研製、預算管理、工程核算、組織質量過程帶來極大方便,基於瀑布模型的軟體工程的研究在軟體需求分析、軟體設計、軟體測試、軟體質量保證、軟體過程改進等多個子領域得到深化和擴展,形成了軟體工程學科的雛形。
學科確立
1970年代末期,美國制定研究生教育計畫時採納了IEEE/CS提出的、制定軟體工程教程的建議,為軟體工程教育打下了基礎。
1980年代末和1990年代初,軟體工程教育得到卡內基-梅隆大學軟體工程研究所(SEI)的培育和支持。他們調查軟體工程教育的現狀;出版軟體工程推薦教程;在卡內基-梅隆大學建立軟體工程碩士教育計畫;組織和推動軟體工程教育者研討會。
1993年,IEEE-CS和ACM為把軟體工程建設成為一個專業,建立了IEEE-CS/ACM聯合指導委員會。隨後,該指導委員會被軟體工程協調委員會(SWECC)替代。SWECC給出了“軟體工程職業道德規範”、“本科軟體工程教育計畫評價標準”和“軟體工程知識體”(SWEBOK)。SWEBOK全面描述了軟體工程實踐所需的知識,為開發本科軟體工程教育計畫打下了基礎。
2004年8月,全世界五百多位來自大學、科研機構和企業界的專家、教授經過多年的努力,推出了軟體工程知識體、軟體工程教育知識體(SEEK)兩個檔案的最終版本,標誌著軟體工程學科在世界範圍正式確立,並在本科教育層次上迅速發展。軟體工程、計算機科學、計算機工程、信息系統、信息技術並列成為計算學科下的獨立學科。
教育發展
中國的軟體工程基礎技術研究始於1980年代初。當時,軟體開發方法學成為研究熱點。1980年在北京召開了中國首屆軟體工程研討會,之後,許多高等學校和科研單位陸續開展了軟體開發方法學、CASE工具和環境、面向對象技術等軟體工程基礎技術的研究。“軟體工程核心支撐環境”,“軟體工程技術、工具和環境的研究與開發(SEP)”等課題列入國家重點科技攻關項目,其科研成果代表了中國軟體工程技術研究的水平。與此同時,部分高校面向研究生開設了軟體工程課程,開始引進和編寫軟體工程教材。1984年和1985年,國家科委選擇重點高校招收了兩批(200人)軟體工程碩士,為軟體工程教育積累了經驗。此後,高等院校開始為本科開設軟體工程課程。部分高校從1988年開始試辦軟體工程專業(後來在學科調整時又歸併到計算機科學與技術學科)。
1990年代,軟體重用和軟體構件技術成為研究熱點,面向對象方法和技術成為軟體開發的主流技術,軟體過程研究及軟體企業的過程改善受到廣泛重視。隨著軟體工程技術的發展,高校又增設了面向對象技術,支持面向對象技術的Smalltalk語言、軟體過程管理、軟體測試技術、軟體過程度量等課程,軟體工程領域的教學內容不斷豐富,教學時數不斷增加,教學改革不斷深入。
為適應中國經濟結構戰略性調整,實現軟體產業和軟體人才培養的跨越式發展,2000年發布了18號檔案《國務院關於印發鼓勵軟體產業和積體電路產業發展的若干政策的通知》,2001年經教育部和國家計委批准,全國成立了35所示範性軟體學院。各高校軟體學院和計算機學院(系)為培養高層次、實用型、複合型、具有國際競爭力的人才,要求學生在思維創新的基礎上,提高技術創新和工程創新能力,提高軟體工程實踐和軟體工程管理能力。這有效地促進了中國軟體工程學科的發展,中國軟體工程教育開始走向成熟。
組成結構
ACM和IEEE-CS發布的SWEBOK定義了軟體工程學科
的內涵,它由10個知識域構成。
(1)軟體需求
軟體需求描述解決現實世界某個問題的軟體產品,及對軟體產品的約束。軟體需求涉及需求抽取、需求分析、建立需求規格說明和確認,涉及建模、軟體開發的技術、經濟、時間可行性分析。軟體需求直接影響軟體設計、軟體測試、軟體維護、軟體配置管理、軟體工程管理、軟體工程過程和軟體質量等。
(2)軟體設計
設計是軟體工程最核心的內容。設計既是“過程”,也是這個過程的“結果”。軟體設計由軟體體系結構設計、軟體詳細設計兩種活動組成。它涉及軟體體系結構、構件、接口、以及系統或構件的其它特徵,還涉及軟體設計質量分析和評估、軟體設計的符號、軟體設計策略和方法等。
(3)軟體構造
通過編碼、單元測試、集成測試、調試、確認這些活動,生成可用的、有意義的軟體。軟體構造除要求符合設計功能外,還要求控制和降低程式複雜性、預計變更、進行程式驗證和制定軟體構造標準。軟體構造與軟體配置管理、工具和方法、軟體質量密切相關。
(4)軟體測試
測試是軟體生存周期的重要部分,涉及測試的標準、測試技術、測試度量和測試過程。測試不再是編碼完成後才開始的活動,測試的目的是標識缺陷和問題,改善產品質量。軟體測試應該圍繞整個開發和維護過程。測試在需求階段就應該開始,測試計畫和規程必須系統,並隨著開發的進展不斷求精。正確的軟體工程質量觀是預防,避免缺陷和問題比改正好。代碼生成前的主要測試手段是靜態技術(檢查),代碼生成後採用動態技術(執行代碼)。測試的重點是動態技術,從程式無限的執行域中選擇一個有限的測試用例集,動態地驗證程式是否達到預期行為。
(5)軟體維護
軟體產品交付後,需要改正軟體的缺陷、提高軟體性能或其他屬性、使軟體產品適應新的環境。軟體維護是軟體進化的繼續。軟體維護要支持系統快速地、便捷地滿足新的需求。基於服務的軟體維護越來越受到重視。軟體維護是軟體生存周期的組成部分。然而,歷史上維護從未受到重視。情況有了改變,軟體組織力圖使軟體運營時間更長,軟體維護成為令人關注的焦點。
(6)軟體配置管理
為了系統的控制配置變更,維護整個系統生命周期中配置的一致性和可追蹤性,必須按時間管理軟體的不同配置,包括配置管理過程的管理、軟體配置鑑別、配置管理控制、配置管理狀態記錄、配置管理審計、軟體發布和交付管理等。
(7)軟體工程管理
運用管理活動,如計畫、協調、度量、監控、控制和報告,確保軟體開發和維護是系統的、規範的、可度量的。它涉及基礎設施管理;項目管理;度量和控制計畫三個層次。度量是軟體管理決策的基礎。近年來軟體度量的標準、測度、方法、規範發展較快。
(8)軟體工程過程
管理軟體工程過程的目的是,實現一個新的或者更好的過程。軟體工程過程關注軟體過程的定義、實現、評估、測量、管理、變更、改進,以及過程和產品的度量。軟體工程過程分為,①圍繞軟體生存周期過程的技術和管理活動,即需求獲取、軟體開發、維護和退役的各種活動。②對軟體生存周期的定義、實現、評估、度量、管理、變更和改進。
(9)軟體工程工具和方法
軟體開發工具是以計算機為基礎的,用於輔助軟體生存周期過程。通常,工具是為特定的軟體工程方法設計的,以減少手工操作的負擔、使軟體工程更加系統化。軟體工具的種類很多,從支持個人到整個生存周期。軟體工具分為:需求工具、設計工具、構造工具、測試工具、維護工具、配置管理工具、工程管理工具、工程過程工具、軟體質量工具等。
軟體工程方法支持軟體工程活動,使軟體開發更加系統,並能獲得成功。軟體開發方法不斷發展。當前,軟體工程方法分為:①啟發式方法,包括結構化方法、面向數據方法、面向對象方法和特定域方法;②基於數學的形式化方法;③用軟體工程多種途徑實現的原型方法,原型方法幫助確定軟體需求、軟體體系結構,用戶界面等。
(10)軟體質量
軟體質量貫穿整個軟體生存周期,涉及軟體質量需求、軟體質量度量、軟體屬性檢測、軟體質量管理技術和過程等。
SWEBOK還把軟體工程相關學科列為知識域,它們是軟體工程發展不可或缺的部分。相關學科知識域包括計算機工程、計算機科學、數學、管理學、項目管理、質量管理、系統工程學和軟體人類工程學八個領域。
學科地位
軟體工程學科是計算學科的分支,計算學科中理論、抽象、設計等三個學科形態,綁定、大問題的複雜性、概念和形式模型、一致性和完備性、效率、演化、抽象層次、按空間排序、按時間排序、重用、安全性、折衷與決策等十二個基本概念,數學方法、系統科學方法在軟體工程學科中占有重要地位。此外,軟體工程還十分重視管理過程,以提高軟體產品的質量、降低開發成本、保證工程按時完成。系統性、規範性、可度量性也是軟體工程非常關注的。
軟體工程學科的理論基礎是數學、計算機科學。軟體工程的研究和實踐涉及人力、技術、資金、進度的綜合管理,是開展最最佳化生產活動的過程;軟體工程必須劃分系統的邊界,給出系統的解決方案。因此,軟體工程的相關學科有計算機科學與技術、數學、計算機工程、管理學、系統工程和人類工程學等。
培養方案
主修課程
主幹學科:馬克思主義理論、大學外語、高等數學、大學物理、物理實驗、線性代數、機率論與數理統計、程式設計語言、數據結構、離散數學、作業系統、編譯技術、軟體工程概論、統一建模語言、軟體體系結構、軟體需求、軟體項目管理
該專業除了學習公共基礎課外,還將系統學習離散數學、數據結構、算法分析、面向對象程式設計、現代作業系統、資料庫原理與實現技術、編譯原理、軟體工程、軟體項目管理、計算機安全等課程,根據學生的興趣還可以選修一些其它選修課。
實踐環節:畢業實習、課程設計、計算機工程實踐、生產實習、畢業設計(論文)。
培養要求
本專業是培養適應計算機套用學科的發展,特別是軟體產業的發展,具備計算機軟體的基礎理論、基本知識和基本技能,具有用軟體工程的思想、方法和技術來分析、設計和實現計算機軟體系統的能力,畢業後能在IT行業、科研機構、企事業中從事計算機套用軟體系統的開發和研製的高級軟體工程技術人才。
掌握和計算機科學與技術相關的基本理論知識,具有一般計算機相關工程的分析設計和解決實際問題的能力。了解文獻檢索、資料查詢的基本方法,具有一定的科學研究和實際工作能力。能夠運用學習知識和外文閱讀能力查閱外文資料。養成積極參加體育鍛鍊和健康的文化活動的良好習慣,達到國家規定的大學生體育合格標準,身心健康。
就業導向
就業方向
本專業學生畢業後可以從事各級各類企事業單位的辦公自動化處理、計算機安裝與維護、網頁製作、計算機網路和專業伺服器的維護管理和開發工作、動態商務網站開發與管理、軟體測試與開發及計算機相關設備的商品貿易等方面的有關工作。
除考取國內外名牌大學研究生外,主要畢業去向是計算機軟體專業公司﹑信息諮詢公司﹑以及金融等其它獨資、合資企業。
就業前景
中國的軟體行業規模不是很大,有些軟體企業在軟體製作上,也只是採用了
一些軟體工程的思想,距離大規模的工業化大生產比較還是有一定的差距;原因有管理體制的問題,市場問題,政策問題,也有軟體工程理論不全面和不完善的問題。所以軟體工程的研究和套用,以及中國軟體行業的進一步發展,都需要一定的既有軟體工程的理論基礎和研究能力,又有一定的實踐經驗的軟體工程科學技術人員來推動。軟體工程的前途是光明的。
軟體服務外包屬於智力人才密集型現代服務業。大量著名外包企業落戶寧波。主要就業去向包括軟體外包與服務企業、信息產品與服務企業,擔任程式設計師、軟體測試員、項目經理等工作崗位。
就業崗位
Java方向:JAVA初級程式設計師、JAVA計算程式設計師 、 JAVA工程師 、J2EE系統工程師等。
.Net方向: .Net程式設計師網站開發工程師 .Net工程師等。
其它方向: 簡單的管理信息系統開發和維護人員 、網頁製作和客戶端腳本程式編寫人員 、初級資料庫管理和 維護人員 、資料庫開發工程師 、系統分析設計工程 、軟體項目配置管理員 、文檔編寫工程師。
開設院校
北京大學軟體與微電子學院 | 北京工業大學軟體學院 | 東北大學軟體學院 | 北京航空航天大學軟體學院 |
哈爾濱工業大學軟體學院 | 北京交通大學軟體學院 | 東南大學軟體學院 | 電子科技大學軟體學院 |
華中科技大學軟體學院 | 北京理工大學軟體學院 | 復旦大學軟體學院 | 華東師範大學軟體學院 |
西安電子科技大學軟體學院 | 北京郵電大學軟體學院 | 湖南大學軟體學院 | 華南理工大學軟體學院 |
西北工業大學軟體與微電子學院 | 重慶大學軟體學院 | 吉林大學軟體學院 | 上海交通大學軟體學院 |
西安交通大學軟體學院 | 大連理工大學軟體學院 | 南京大學軟體學院 | 天津大學軟體學院 |
中國科學技術大學軟體學院 | 國防科技大學軟體學院 | 南開大學軟體學院 | 同濟大學 軟體學院 |
雲南大學軟體學院 | 武漢大學軟體學院 | 清華大學軟體學院 | 四川大學軟體學院 |
浙江大學軟體學院 | 南昌大學軟體學院 | 山東大學軟體學院引 | 中南大學軟體學院 |
中山大學軟體學院 | 廈門大學軟體學院 | 哈爾濱工業大學軟體學院 | 河南大學軟體學院 |
培養目標
軟體工程專業面向社會經濟發展和國防現代化建設的需求,培養具有基礎寬厚,知識、能力、素質協調發展,系統地掌握計算機軟體領域的基本理論、知識和技能,具有較強的國際交流能力,德才兼備、身心健康、求真務實、敢於創新、勇於實踐,能在科研院所、教育、企事業和行政管理等單位從事計算機軟體開發、科研、教學和套用的高素質研究套用型專門人才。
考試大綱
一、考試要求
主要考查學生對軟體工程基本概念、原則和軟體過程模型的理解與掌握;對軟體需求工程、軟體設計、軟體實現、軟體測試、軟體維護、軟體項目管理、Web軟體開發等方面的方法和技術的理解與掌握;以及綜合運用軟體工程技術和管理方法,分析解決實際軟體問題的能力。
二、考試內容
1.軟體工程的基本概念與軟體過程模型
軟體工程的目標與原則,軟體質量要素;軟體工具與環境;常用的軟體過程模型,敏捷軟體開發與極限編程。
2.軟體需求工程
軟體需求的概念與質量要素,需求工程的過程模型;用例驅動的需求獲取方法;基於UML(統一建模語言)的面向對象的需求分析方法;需求規約,需求評審與驗證。
3.軟體設計
軟體設計的概念、原則與質量要素,軟體設計的過程模型;用戶界面設計的原則與方法;軟體體系結構的概念與表示,基於UML的面向對象的體系結構設計和軟體詳細設計方法;Web軟體的設計方法;設計規約,設計評審與驗證。
4.軟體實現與測試
軟體實現的概念、原則與質量要素;編程風格;軟體調試;軟體測試的概念與原則,軟體測試的過程模型;白盒與黑盒測試;單元測試、集成測試、確認測試與系統測試;面向對象軟體的測試方法。
5.軟體維護
軟體維護的概念,軟體可維護性;軟體維護的過程模型;軟體維護的方法;逆向工程與軟體重構。
6.軟體項目管理
軟體項目管理的概念與原則;軟體度量與估算;軟體項目的風險分析,軟體項目計畫及執行,軟體項目組織,軟體質量保證,軟體配置管理,基於CMM和CMMI的軟體過程改進。
三、考試形式
考試形式為閉卷、筆試,考試時間為3小時,滿分150分。
題型包括:判斷題、選擇題、填空題、簡答題、分析設計題等。
四、參考書目
1.《軟體工程》.齊治昌,譚慶平,寧洪.高等教育出版社,2012。第三版
2.《軟體工程實踐教程》.譚慶平,毛新軍,董威.高等教育出版社,2009。第一版