軟件體系結構課程教學改革論文

時間:2022-04-08 08:57:25

導語:軟件體系結構課程教學改革論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

軟件體系結構課程教學改革論文

1課程特點和面臨的問題

軟件體系結構課程有其自身的特點,具體表現為以下幾方面。

(1)知識面涵蓋極為廣泛。軟件體系結構各階段的活動大量涉及網絡、數據庫、操作系統、軟件工程等課程的知識,是對這些知識的綜合考慮和運用,對學生的背景知識要求非常高。

(2)課程知識抽象程度高。軟件體系結構設計著重于對軟件宏觀層面的探索,這種探索與學生非常熟悉的具體編碼距離非常遠,如果主要依賴于課堂講授,學生難于理解和掌握。

(3)理論與實踐的平衡。理論知識是能適用于全體軟件體系結構設計的一般知識,而實踐要求在盡可能真實的系統上進行真正的設計折中,以便將一般化的知識與具體軟件項目相結合,獲得更好的學習效果。國防科技大學軟件體系結構課程面向軟件工程碩士開設,學生的特點是專業背景知識和工作經歷參差不齊,學生主要是來自于計算機專業和軟件工程專業的本科生,有的參與過商業軟件開發,也有的只參與過畢業設計,但普遍基本缺乏完整項目的體驗。我們在近幾年的教學中發現,將全部的課堂時間用于講授軟件體系結構的抽象理論會使學生感到枯燥乏味,容易將這門課變成一門需要背誦大量原則而后又無法具體應用的課,難以體現和理解軟件體系結構在軟件開發中的重要地位。此外,在考察了大部分教材后,我們發現教材上的案例規模較小,只適合于教學而無法讓學生進行實踐。最后,課時有限,只有36學時,但跨度較長,有12周,如何利用好課時和較長的授課周期,安排好課堂和實踐內容,一直是困擾我們的主要問題之一。針對課程特點和存在的問題,我們提出從課堂授課內容、授課形式和實踐環節對課程教學進行改進,具體來說,授課內容上以學生動手后進行總結為主、授課形式上以案例式教學為主、實踐環節上以開源軟件的設計與分析為主,三者結合,盡可能地在較為真實的環境下,使學生體驗并運用軟件體系結構理論知識于具體的項目中,提升教學效果。

2教學改革方案和實施

國防科技大學軟件體系結構課是軟件工程碩士的專業必修課,共36學時,每周一次課,每次3學時,共持續12周。教學內容安排如下:①8學時:軟件體系結構基礎知識;②10學時:3個教材案例;③12學時:外聘專家授課;④4學時:學生報告開源項目實踐結果;⑤2學時:考試。上述內容安排按順序開展,實驗環節與課程教學同步進行。在教材案例實驗教學中,我們采用先學生設計再教師講授的方式,開源項目的實驗與外聘專家授課互不影響。

2.1案例式教學與翻轉課堂的結合

在課程教學過程中,教師可首先講授軟件體系結構的基礎知識,包括定義、視圖、軟件質量屬性、軟件體系結構設計方法與流程,該階段的理論授課必不可少,是后續課程和實踐的基礎。在該階段不應再引入更多的理論知識,原因是介紹的這些知識已足夠學生開始初步的設計實踐活動,而更多的知識如軟件體系結構模式等內容的引入將增加學生的負擔,卻對實踐環節沒有幫助。在介紹軟件體系結構設計方法和流程時,教師可選用Client/Server體系結構風格實現的ATM系統為案例,在課堂上詳細介紹如何從軟件需求分析開始,得到最后體系結構設計的過程、方法,同時穿插大量的隨堂練習。例如,針對ATM系統的全部用例,選取一個用例作為課堂示范,在詳細介紹完針對該用例的靜態模型、動態模型、控制狀態機的設計后,要求學生在課堂上及時完成ATM系統其他用例的設計,為后續的實踐環節打好基礎。在后續的授課中,教師可以案例式教學為主,形式上采用翻轉課堂的形式。該階段授課的案例以各種教材收集的案例為主,目的是循序漸進,使學生能逐步適應軟件體系結構的設計任務。我們選取的案例有面向服務體系結構風格的在線銷售系統、基于構件軟件體系結構模式的緊急事件監控系統、實時軟件體系結構的自動行車系統等。在該教學環節,針對每一個案例,教師可采用以下教學模式。

(1)課堂上不會首先介紹和案例相關的理論知識,而是依序將每個案例以作業的形式先布置給學生,每個學生有一周的時間分析該案例并完成作業要求的設計任務,作業涉及的新知識需要學生自己查資料學習。

(2)在下一次課之前要求學生必須交作業,在下一次課上,圍繞上次布置的案例進行詳細講解并以參考設計的形式介紹給學生。

(3)在該案例的每個設計階段,指出學生作業中的普遍問題并引導學生將其作業與參考設計進行對比,找出不足之處。

(4)在案例講授過程中,逐漸引入其所采用軟件體系結構模式的知識。這種教學模式將進行3輪,分別將選取的案例講授并實踐完畢。經過該教學環節,學生首先能在課程的早期就進入較大項目的實踐,而不需要等到所有的理論知識都介紹完;其次,對每個案例的每個設計階段和結果,學生都已在作業中進行過深入的思考和實踐,因此能在課堂上馬上抓住設計的重點并發現自己設計的不足之處;最后,教師結合具體案例介紹各種軟件體系結構模式將抽象知識具體化,使學生通過對幾個體系結構風格的學習進一步(自學)掌握更多的風格,理解體系結構風格的意義。

2.2開源軟件的作用

在學生掌握并實踐了軟件體系結構設計方法和過程,并且見識并理解了一些常用的軟件體系結構模式后,教師就可以引導學生用真實的大型軟件進行實踐。我們選擇開源軟件作為課程實踐的主要項目,首先將學生分成3~4人一組,要求每組從中選擇一種軟件作為實踐對象,這些開源項目主要依托SourceForge進行開發,也允許學生從GitHub選擇項目進行實踐,這些項目都是非常經典的開源項目,共同特點是規模大、用戶多、文檔多,便于學生開展學習和分析。在具體實踐時,學生將經歷以下幾個階段。

(1)了解項目。對所選擇的項目,首先閱讀對應的章節,了解該開源軟件的需求、應用背景、體系結構概貌等知識。

(2)識別利益攸關者(stakeholder)。仔細分析所選的項目,假想作為架構師開發這樣的項目,該項目涉及的利益攸關者會有哪些、各自的利益訴求是什么等。

(3)標識質量屬性。根據已學的質量屬性及其度量,分析所選項目會有哪些主要的、潛在可能的質量屬性需求,并利用文獻中介紹的方法對質量屬性進行建模。

(4)體系結構描述。根據所學的“4+1”視圖,對所選開源項目的體系結構視圖進行描述和刻畫。

(5)體系結構評估。根據提取的體系結構設計和質量屬性,組內學生分別扮演不同的利益攸關者,實踐ATAM等軟件體系結構評估活動。

(6)源代碼分析。在模塊級別層面上閱讀和分析所選項目的源代碼,繪制模塊級別的軟件結構圖,并與軟件體系結構設計視圖進行映射。這些實踐將持續5周,授課教師和輔導教師需要全程跟蹤每個小組的活動。經過該環節,學生可以利用真實的大型軟件項目體驗軟件體系結構相關的活動,包括需求分析、體系結構設計與評估等;通過閱讀源代碼,與體系結構設計進行比較,體驗體系結構設計的決策在實踐中如何體現;通過質量屬性的建模和體系結構評估活動,體驗體系結構設計中折中是如何進行的。

2.3業界專家授課

在利用開源軟件進行實踐的同時,我們邀請業界一線架構師進行授課。聘請的專家來自各個行業,開發的商業項目多種多樣,如醫院信息管理系統、健康信息管理系統、在線照片分享系統、智能樓宇監控系統等,這些項目有實際的應用背景、用戶、利益攸關者、質量屬性等,不再是教材中的假想案例。專家會結合每個具體案例介紹從需求到體系結構設計、軟件的整個軟件開發過程,帶著學生一起思考和設計,課堂上安排適量的隨堂練習。與理論知識相呼應,專家重點介紹在體系結構設計階段的具體考量和取舍及其原因。同時,專家也會從自身的角度講述對軟件體系結構的認識以及對軟件體系結構設計的一些感悟,如軟件體系結構不是一次設計出來,而是“磨”出來的等。通過該授課環節,學生將具體見識到一線架構師的工作及其在軟件團隊中的作用。一線架構師對軟件體系結構結合具體項目的講授用的是平實、具體的語言,更容易讓學生接受和理解。學生再與課堂上學到的理論知識對照,能發掘出理論知識更深一層的含義,也能在具體的項目中發現理論知識的應用。我們認為專家授課對學生影響最大的是軟件工程中一般原則的具體應用方法,每位專家都有自己一套獨特的分析設計方法,雖然看起來不一樣,但是對軟件工程、軟件體系結構等設計原則的體現是一致的,使學生認識到課堂上學習到的一般原則是如何靈活地體現在設計中的。

3實施與效果

我們在近3屆軟件工程碩士“軟件體系結構”課程教學中實施該教改方案,3屆學生人數分別為70人、37人、40人。課堂教學上嚴格按照安排的學時展開,授課教師和輔導教師全程跟蹤指導,隨時發現學生學習中的問題,全部課程在12周內完成。問卷調查顯示,與以前的教學效果相比,學生對軟件體系結構及其相關技術、方法的理解更深,突出體現在以下幾方面。

(1)通過安排的實驗,學生能在理論學習的同時盡早開始實踐,對軟件體系結構方法和技術的運用緊跟理論學習,將抽象知識具象化。

(2)在案例的選擇上從教材案例到實際開源項目,循序漸進,學生在各實驗中能馬上運用所學知識,不會出現無從下手的情況。實際開源項目上的實驗能考驗學生的綜合應用能力,增強學生的信心。

(3)授課方式上先做再講,比簡單的預習和閱讀資料更能給學生帶來挑戰,學生上課時的疑問更多,聽課時注意力更集中,能及時發現自己的不足并改進。

(4)一線架構師的授課非常受學生歡迎,學生認識到抽象原則知識在實踐中如何運用:原則上遵循,實際操作時靈活。

4結語

我們在軟件體系結構課程教學方面進行探索和實踐,設計的教學內容、授課形式和安排的實驗對提升教學效果非常有效,但在實踐中也發現要堅持這種教學方案,對教師和學生的要求都非常高,每年都需要重新設計教學案例并聘請一線架構師,工作量非常大。對學生而言,要堅持做完所有的實驗需要花費大量時間,如能堅持下來必有收獲,但實際教學中存在搭便車和抄襲的現象。今后,針對新的問題,我們還將在軟件體系結構課程教學上不斷探索,尋求更好的培養方式,以期達到更佳的培養效果。

作者:李暾文艷軍劉萬偉董威羅宇單位:國防科技大學