閱讀屋>職業/專業/職能> 面向軟體系統設計的軟體工程專業關鍵課程建設論文

面向軟體系統設計的軟體工程專業關鍵課程建設論文

面向軟體系統設計的軟體工程專業關鍵課程建設論文

  高階軟體設計人才不僅要有過硬的設計技能,還要有牢固的工程觀、系統觀和產品觀。本文基於南京大學軟體開發學院的教學實踐,以軟體系統的設計與構造為主線,提出了圍繞軟體設計設定和實施的軟體工程專業關鍵課程方案。該方案強調在專業入門課程就開始培養學生的軟體工程觀念和系統觀念,並一以貫之地教授學生在軟體工程思想的指導下進行軟體設計的能力。

  一、概述

  作為國家戰略性新興產業,軟體業急需一批領軍型軟體人才。教育部在2002年批准開辦軟體工程(以下簡稱SE)專業並設立國家示範性軟體學院,2011年批准設立軟體工程一級學科並把軟體工程師培養列入了卓越工程師教育培養計劃。至2013年,我國有425所高校開設軟體工程專業,設點數、招生數及就業質量均進入前十。因此,研究與建設軟體工程專業關鍵課程體系對於軟體人才培養具有重要的現實意義和積極的推動作用。

  國際上,IEEE和ACM共同制定了軟體工程學科教程CCSE[1,2],給出了軟體工程專業的教育知識體系,提出了組織和設計課程體系的若干建議,是公認的軟體人才培養工作基礎。CCSE推薦課程包括SE基礎課程5門、CS中級課程3門和SE高階課程6門,並提出了SE優先的課程方案和CS過渡的課程方案。

  但是,SE專業在教學實施中面臨以下難題[3]:(1)傳統計算機科學(以下簡稱CS)專業的軟體工程課程如何合理過渡到SE基礎課程和6門SE高階課程;(2)如何落實SE優先的教學理念,解決關鍵課程的教學實踐與教學資源;(3)如何實施軟體工程課程與程式設計類課程的融合教學。

  具體來說,目前國際國內缺乏對SE關鍵課程的教學實踐,SE優先的基礎課程與部分高階課程屬於全新構造,難覓教材和成熟的教學資源,從而導致SE專業教學在實施時面臨很大困難,大多數學校只能因循計算機科學專業傳統課程過渡。因此,貫徹SE優先的教育理念與落實系統化的SE專業教學體系成為擺在廣大SE教育者面前的一個巨大挑戰。針對這些問題,南京大學軟體工程專業經過多年教學實踐,以軟體開發的.核心工作——軟體系統設計與構造為主線,提出了面向軟體系統設計與構造的SE專業關鍵課程教學實施方案。

  二、設定思路

  CS傳統課程按照知識領域安排,非常適合於培養研究性人才。軟體產業則迫切需要能夠綜合運用各種工程技術知識解決具體問題的實用性人才。為此,南京大學SE專業教學體系從能力培養入手,強調持續培養學生的工程觀、系統觀和產品觀;面向“軟體系統設計與構造”主線,規劃專業關鍵課程,實踐並求精CCSE的SE優先課程設定方案;探索關鍵課程的教學內容與教學方法,建設相關教材與教學案例。

  1.提出軟體工程專業課程改革的基本策略。在專業教學早期開始培養學生工程觀、系統觀與產品觀,引導學生持續以軟體工程觀的角度學習與體驗軟體系統分析、設計與構建的過程。在一年級開設軟體工程課程,專業入門時就樹立學生的工程觀和系統觀,將質量、成本、度量、折中、決策、紀律、規範等工程理念貫穿後續課程,透過反覆強化來培養學生牢固的工程理念以及基於工程理念解決問題和進行開發的能力。

  2.規劃與實踐SE優先的專業關鍵課程。遵循工程的整合與創新特徵,面向“軟體系統設計與構造”,按照軟體系統規模由小及大的次序建立專業教學主線,即以小規模系統、中規模系統、中規模產品、大規模系統技術、應用領域來部署SE專業課程的展開。在單門課程中強調構建系統的全面知識融合教學,培養學生解決實際問題的綜合能力。

  3.探索適應培養卓越軟體人才的教學方法。軟體人才培養必須重視學生的工程實踐能力、設計能力與創新能力培養,重視實驗、實訓、實習等培養過程,特別是理論教學與實踐教學的完美融合。主要的教學方法包括:面向具體的軟體系統構造專案開展綜合性知識教學;加強課程教學案例與實踐用例建設,實施理論、案例、實踐相輔相成的教學;探索校企合作教學、面向問題教學、體驗式教學、面向實際教學、研討式教學、軟體創新設計競賽教學等適合卓越人才培養的新型教學方法。

  三、課程體系框架

  下圖給出了南京大學SE專業的課程體系框架[4,5],其中左側為重點建設的SE專業關鍵性基礎課程,右側為其他SE專業基礎課程和高階課程,後者在教學上較為成熟,故不贅述。

  面向“軟體系統設計與構造”的SE專業關鍵課程共7門,分別為計算系統基礎、軟體工程與計算Ⅰ、軟體工程與計算Ⅱ、軟體工程與計算Ⅲ、軟體需求工程、軟體系統設計與體系結構、人機互動的軟體工程方法,分別重點解決學生計算系統分層構建、個人級小規模軟體系統設計與構造、小組級中小規模軟體系統設計與構造、模擬團隊級中規模軟體產品設計與構建、大規模軟體系統的需求技術、大規模軟體系統的設計技術、互動式軟體系統設計與評估技術等關鍵效能力培養。

  南京大學軟體工程專業課程體系結構圖

  這7門關鍵課程均圍繞一個具體的軟體系統教學案例,融合構建系統所需的多方面知識展開每門課程的教學。各課程都精心設計了一個教學講解用的軟體系統構建案例,並同步設計了一個培養學生工程能力的實踐用例。課程圍繞教學案例和實踐用例的構建活動組織課程教學和實踐教學。課程同時力圖打破傳統課程的技術藩籬,將程式設計、軟體工程、交流與溝通、團隊動力學、職業素質、過程管理、工程經濟學等知識進行融合教學,在案例中引導學生使用軟體工程的觀念來觀察、體驗和實踐計算系統軟體的設計與構建過程,訓練其軟體系統設計與構造的綜合能力。

  四、課程描述

  “計算系統基礎”,以一個經典計算機指令集MIPS的簡化版本DLX為線索,以C語言為載體,使初學者可以建立起完整的計算概念,瞭解經典計算系統的工作原理,理解計算系統自底向上、逐次構造的過程;理解結構化程式設計,能夠利用自頂向下、逐步求精的方法完成小規模的結構化程式。具體教學內容包括:資料的機器級表示、數字邏輯、馮·諾伊曼模型、機器語言、組合語言、輸入和輸出、Trap 機制和子例程、結構化程式設計和語言處理。

  “軟體工程與計算Ⅰ”,在軟體工程理念指導下,側重於程式設計教學。以一個計算示例和實踐用例的迭代式增量開發實踐為線索,全面培養學生在個人開發級別的小規模軟體系統構建能力,讓學生初步體驗軟體工程方法與技術在系統開發中的關鍵作用。具體教學內容包括:程式設計基礎、面向物件程式設計語言;OOA、OOD、除錯與測試等軟體工程知識;個人級別的軟體開發活動管理、個人級別的軟體職業知識。

  “軟體工程與計算Ⅱ”,以經典軟體工程方法與技術為主線,軟體設計與構造知識為教學重點,軟體系統構建例項(計算系統示例與學生實踐用例)為切入點,培養學生基於瀑布模型的、簡單小組開發級別的、中小規模軟體系統構建能力。具體教學內容包括:軟體工程歷史、軟體職業知識;適用於中小規模軟體產品開發的軟體工程方法、原則與實踐;軟體工程方法指導下的程式設計原則與實踐;小組級別的簡單軟體開發活動管理;包括程式碼和重要文件在內的關鍵軟體開發製品。

  “軟體工程與計算Ⅲ”,以螺旋模型和團隊實踐為特徵,透過開發一箇中等規模軟體產品的方式,培養學生對程式設計和軟體工程方法的實際運用能力,同時強化學生的職業技能和專案管理能力。將學生組織成8人左右的團隊,按照6個階段(即專案啟動階段、第一迴圈、第二迴圈、第三迴圈、第四迴圈、專案部署階段)合作完成一個具有一定複雜度的具體專案。在專案完成過程中,涉及需求、設計、實現和質量保障,強調團隊協作、文件寫作、工具使用、陳述等能力,並在軟體團隊中對軟體開發進行管理。

  “軟體需求工程”,以需求工程技術、軟體經濟學和迭代過程為特徵,結合工業界例項綜合分析,培養學生構建大規模軟體系統所需要的需求獲取、分析與建模能力,試圖讓學生把握需求工程工作給後繼軟體專案工作帶來的影響。具體教學內容包括:需求工程基礎、需求獲取方法與技術、需求分析方法、需求分析模型與建模技術、需求管理與需求工程過程知識、軟體工程經濟學等。

  “軟體系統設計與體系結構”,以軟體設計、體系結構、可複用軟體過程為特徵,結合複雜工程案例及其重構,培養學生構建大規模軟體系統所需要的綜合設計技術能力。具體教學內容包括:軟體設計的要素、軟體設計的支援與評價、軟體設計方法、體系結構設計、詳細設計、基於中介軟體的設計、基於複用的設計和設計演化。

  “人機互動的軟體工程方法”,以使用者為中心的設計與軟體再工程為特徵,培養學生互動式產品開發的軟體分析、設計和評估技術。具體教學內容包括:可用性工程、人機互動介面的經典模型、人機互動的需求工程方法、人機互動的設計方法以及基於行為觀測與眼動分析的互動評估技術等。

  五、教學方法

  軟體人才培養需要重視教學方法改革,面向軟體系統設計與構造的SE專業採用了一系列新型教學方法。

  面向問題教學要求各課程都以工程問題開始,並依照工程問題的解決過程和活動來組織教學,這既體現了多種知識的融合運用,又培養了學生的問題解決能力。體驗式教學要求各課程在實驗設計時必須考慮模擬現實環境的不確定性因素,讓學生體驗真實的開發氛圍,這既能培養他們綜合運用各種知識與方法解決問題的能力,又能重點訓練他們的折中、決策、溝通等非技術能力。面向實際教學要求各課程在講授軟體開發方法與技術時,要結合實踐調查資料說明企業對不同方法、技術的選擇與權衡情況以及應用效果,要突出企業界的主流方法與技術,遵循企業界的行業標準與規範,這既能讓學生更深入地理解方法與技術,又能開拓他們的視野。研討式教學要求各課程針對教學難點和重點,給出啟發式問題,讓學生自行收集資料,研討解決,這既培養了學生的問題解決能力,又培養了他們的創新能力。基礎課程結合軟體創新設計競賽教學鼓勵低年級學生在導師指導下,結合課程教學內容,自由選題,參加軟體創新設計競賽,鼓勵學生創新。部分高階課程採取實訓實習後回顧教學,透過理論教學考試和實訓實習後再回顧總結報告綜合評定分數,促使學生學習理論、實踐體驗、再總結提高,以提高他們的工程認知能力與創新能力。還有部分高階課程採取校企聯合設計課程、聯合實施教學的校企合作教學。

【面向軟體系統設計的軟體工程專業關鍵課程建設論文】相關文章: