国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件體系結(jié)構(gòu)課程教學(xué)改革規(guī)劃與實施

2015-12-29 00:00:00李暾文艷軍劉萬偉董威羅宇
計算機教育 2015年6期

摘要:針對當(dāng)前軟件體系結(jié)構(gòu)課程教學(xué)的挑戰(zhàn),提出基于案例式教學(xué)、翻轉(zhuǎn)課堂和開源軟件的課程教學(xué)改革思路,闡述在軟件工程碩士中進行課程教改的實施過程并說明效果。

關(guān)鍵詞:軟件體系結(jié)構(gòu);翻轉(zhuǎn)課堂;開源軟件

引言

隨著軟件規(guī)模的不斷擴大,軟件體系結(jié)構(gòu)理論產(chǎn)生。軟件體系結(jié)構(gòu)的設(shè)計在中大型軟件項目中更易于顯示它的意義,軟件體系結(jié)構(gòu)課程因此也成為軟件工程學(xué)科中的一門重要課程。軟件體系結(jié)構(gòu)的主題是針對復(fù)雜軟件系統(tǒng)高層結(jié)構(gòu)、組織單元之間相關(guān)關(guān)系的描述,以及圍繞這種描述開展的各項活動,如設(shè)計、評估、管理、測試等。目前,工業(yè)界對軟件架構(gòu)師的要求和需求越來越高,對軟件體系結(jié)構(gòu)課程教學(xué)也提出新的要求——真實,即在課程教學(xué)中讓學(xué)生用真實軟件體驗架構(gòu)師的工作。

1 課程特點和面臨的問題

軟件體系結(jié)構(gòu)課程有其自身的特點,具體表現(xiàn)為以下幾方面。

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

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

(3)理論與實踐的平衡。理論知識是能適用于全體軟件體系結(jié)構(gòu)設(shè)計的一般知識,而實踐要求在盡可能真實的系統(tǒng)上進行真正的設(shè)計折中,以便將一般化的知識與具體軟件項目相結(jié)合,獲得更好的學(xué)習(xí)效果。

國防科技大學(xué)軟件體系結(jié)構(gòu)課程面向軟件工程碩士開設(shè),學(xué)生的特點是專業(yè)背景知識和工作經(jīng)歷參差不齊,學(xué)生主要是來自于計算機專業(yè)和軟件工程專業(yè)的本科生,有的參與過商業(yè)軟件開發(fā),也有的只參與過畢業(yè)設(shè)計,但普遍基本缺乏完整項目的體驗。

我們在近幾年的教學(xué)中發(fā)現(xiàn),將全部的課堂時間用于講授軟件體系結(jié)構(gòu)的抽象理論會使學(xué)生感到枯燥乏味,容易將這門課變成一門需要背誦大量原則而后又無法具體應(yīng)用的課,難以體現(xiàn)和理解軟件體系結(jié)構(gòu)在軟件開發(fā)中的重要地位。此外,在考察了大部分教材后,我們發(fā)現(xiàn)教材上的案例規(guī)模較小,只適合于教學(xué)而無法讓學(xué)生進行實踐。最后,課時有限,只有36學(xué)時,但跨度較長,有12周,如何利用好課時和較長的授課周期,安排好課堂和實踐內(nèi)容,一直是困擾我們的主要問題之一。針對課程特點和存在的問題,我們提出從課堂授課內(nèi)容、授課形式和實踐環(huán)節(jié)對課程教學(xué)進行改進,具體來說,授課內(nèi)容上以學(xué)生動手后進行總結(jié)為主、授課形式上以案例式教學(xué)為主、實踐環(huán)節(jié)上以開源軟件的設(shè)計與分析為主,三者結(jié)合,盡可能地在較為真實的環(huán)境下,使學(xué)生體驗并運用軟件體系結(jié)構(gòu)理論知識于具體的項目中,提升教學(xué)效果。

2 教學(xué)改革方案和實施

國防科技大學(xué)軟件體系結(jié)構(gòu)課是軟件工程碩士的專業(yè)必修課,共36學(xué)時,每周一次課,每次3學(xué)時,共持續(xù)12周。教學(xué)內(nèi)容安排如下:①8學(xué)時:軟件體系結(jié)構(gòu)基礎(chǔ)知識;②10學(xué)時:3個教材案例;③12學(xué)時:外聘專家授課;④4學(xué)時:學(xué)生報告開源項目實踐結(jié)果;⑤2學(xué)時:考試。

上述內(nèi)容安排按順序開展,實驗環(huán)節(jié)與課程教學(xué)同步進行。在教材案例實驗教學(xué)中,我們采用先學(xué)生設(shè)計再教師講授的方式,開源項目的實驗與外聘專家授課互不影響。

2.1 案例式教學(xué)與翻轉(zhuǎn)課堂的結(jié)合

在課程教學(xué)過程中,教師可首先講授軟件體系結(jié)構(gòu)的基礎(chǔ)知識,包括定義、視圖、軟件質(zhì)量屬性、軟件體系結(jié)構(gòu)設(shè)計方法與流程,該階段的理論授課必不可少,是后續(xù)課程和實踐的基礎(chǔ)。在該階段不應(yīng)再引入更多的理論知識,原因是介紹的這些知識已足夠?qū)W生開始初步的設(shè)計實踐活動,而更多的知識如軟件體系結(jié)構(gòu)模式等內(nèi)容的引入將增加學(xué)生的負擔(dān),卻對實踐環(huán)節(jié)沒有幫助。

在介紹軟件體系結(jié)構(gòu)設(shè)計方法和流程時,教師可選用Client/Server體系結(jié)構(gòu)風(fēng)格實現(xiàn)的ATM系統(tǒng) 為案例,在課堂上詳細介紹如何從軟件需求分析開始,得到最后體系結(jié)構(gòu)設(shè)計的過程、方法,同時穿插大量的隨堂練習(xí)。例如,針對ATM系統(tǒng)的全部用例,選取一個用例作為課堂示范,在詳細介紹完針對該用例的靜態(tài)模型、動態(tài)模型、控制狀態(tài)機的設(shè)計后,要求學(xué)生在課堂上及時完成ATM系統(tǒng)其他用例的設(shè)計,為后續(xù)的實踐環(huán)節(jié)打好基礎(chǔ)。

在后續(xù)的授課中,教師可以案例式教學(xué)為主,形式上采用翻轉(zhuǎn)課堂的形式。該階段授課的案例以各種教材收集的案例為主,目的是循序漸進,使學(xué)生能逐步適應(yīng)軟件體系結(jié)構(gòu)的設(shè)計任務(wù)?我們選取的案例有面向服務(wù)體系結(jié)構(gòu)風(fēng)格的在線銷售系統(tǒng)、基于構(gòu)件軟件體系結(jié)構(gòu)模式的緊急事件監(jiān)控系統(tǒng)、實時軟件體系結(jié)構(gòu)的自動行車系統(tǒng)等。在該教學(xué)環(huán)節(jié),針對每一個案例,教師可采用以下教學(xué)模式。

(1)課堂上不會首先介紹和案例相關(guān)的理論知識,而是依序?qū)⒚總€案例以作業(yè)的形式先布置給學(xué)生,每個學(xué)生有一周的時間分析該案例并完成作業(yè)要求的設(shè)計任務(wù),作業(yè)涉及的新知識需要學(xué)生自己查資料學(xué)習(xí)。

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

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

(4)在案例講授過程中,逐漸引入其所采用軟件體系結(jié)構(gòu)模式的知識。

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

2.2 開源軟件的作用

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

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

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

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

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

(5)體系結(jié)構(gòu)評估。根據(jù)提取的體系結(jié)構(gòu)設(shè)計和質(zhì)量屬性,組內(nèi)學(xué)生分別扮演不同的利益攸關(guān)者,實踐ATAM等軟件體系結(jié)構(gòu)評估活動。

(6)源代碼分析。在模塊級別層面上閱讀和分析所選項目的源代碼,繪制模塊級別的軟件結(jié)構(gòu)圖,并與軟件體系結(jié)構(gòu)設(shè)計視圖進行映射。

這些實踐將持續(xù)5周,授課教師和輔導(dǎo)教師需要全程跟蹤每個小組的活動。經(jīng)過該環(huán)節(jié),學(xué)生可以利用真實的大型軟件項目體驗軟件體系結(jié)構(gòu)相關(guān)的活動,包括需求分析、體系結(jié)構(gòu)設(shè)計與評估等;通過閱讀源代碼,與體系結(jié)構(gòu)設(shè)計進行比較,體驗體系結(jié)構(gòu)設(shè)計的決策在實踐中如何體現(xiàn);通過質(zhì)量屬性的建模和體系結(jié)構(gòu)評估活動,體驗體系結(jié)構(gòu)設(shè)計中折中是如何進行的。

2.3 業(yè)界專家授課

在利用開源軟件進行實踐的同時,我們邀請業(yè)界一線架構(gòu)師進行授課。聘請的專家來自各個行業(yè),開發(fā)的商業(yè)項目多種多樣,如醫(yī)院信息管理系統(tǒng)、健康信息管理系統(tǒng)、在線照片分享系統(tǒng)、智能樓宇監(jiān)控系統(tǒng)等,這些項目有實際的應(yīng)用背景、用戶、利益攸關(guān)者、質(zhì)量屬性等,不再是教材中的假想案例。專家會結(jié)合每個具體案例介紹從需求到體系結(jié)構(gòu)設(shè)計、軟件發(fā)布的整個軟件開發(fā)過程,帶著學(xué)生一起思考和設(shè)計,課堂上安排適量的隨堂練習(xí)。與理論知識相呼應(yīng),專家重點介紹在體系結(jié)構(gòu)設(shè)計階段的具體考量和取舍及其原因。同時,專家也會從自身的角度講述對軟件體系結(jié)構(gòu)的認識以及對軟件體系結(jié)構(gòu)設(shè)汁的一些感悟,如軟件體系結(jié)構(gòu)不是一次設(shè)計出來,而是“磨”出來的等。

通過該授課環(huán)節(jié),學(xué)生將具體見識到一線架構(gòu)師的工作及其在軟件團隊中的作用。一線架構(gòu)師對軟件體系結(jié)構(gòu)結(jié)合具體項目的講授用的是平實、具體的語言,更容易讓學(xué)生接受和理解。學(xué)生再與課堂上學(xué)到的理論知識對照,能發(fā)掘出理論知識更深一層的含義,也能在具體的項目中發(fā)現(xiàn)理論知識的應(yīng)用。

我們認為專家授課對學(xué)生影響最大的是軟件工程中一般原則的具體應(yīng)用方法,每位專家都有自己一套獨特的分析設(shè)計方法,雖然看起來不一樣,但是對軟件工程、軟件體系結(jié)構(gòu)等設(shè)計原則的體現(xiàn)是一致的,使學(xué)生認識到課堂上學(xué)習(xí)到的一般原則是如何靈活地體現(xiàn)在設(shè)計中的。

3 實施與效果

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

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

(2)在案例的選擇上從教材案例到實際開源項目,循序漸進,學(xué)生在各實驗中能馬上運片j所學(xué)知識,不會出現(xiàn)無從下手的情況。實際開源項目上的實驗?zāi)芸简瀸W(xué)生的綜合應(yīng)用能力,增強學(xué)生的信心。

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

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

4 結(jié)語

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

临安市| 呼和浩特市| 台东县| 中阳县| 阿荣旗| 龙里县| 登封市| 靖边县| 柳林县| 甘孜县| 霍邱县| 桂林市| 天气| 广丰县| 张家川| 木兰县| 会同县| 海淀区| 天气| 乌鲁木齐县| 威海市| 卫辉市| 祁门县| 舒兰市| 呼伦贝尔市| 新郑市| 南丰县| 德化县| 文水县| 志丹县| 高唐县| 枣强县| 同德县| 襄城县| 东乡族自治县| 夏河县| 高青县| 青川县| 黄陵县| 额敏县| 津南区|