軟件體系結(jié)構(gòu)課程教學(xué)改革論文

時(shí)間:2022-04-08 08:57:25

導(dǎo)語(yǔ):軟件體系結(jié)構(gòu)課程教學(xué)改革論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

軟件體系結(jié)構(gòu)課程教學(xué)改革論文

1課程特點(diǎn)和面臨的問題

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

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

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

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

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

國(guó)防科技大學(xué)軟件體系結(jié)構(gòu)課是軟件工程碩士的專業(yè)必修課,共36學(xué)時(shí),每周一次課,每次3學(xué)時(shí),共持續(xù)12周。教學(xué)內(nèi)容安排如下:①8學(xué)時(shí):軟件體系結(jié)構(gòu)基礎(chǔ)知識(shí);②10學(xué)時(shí):3個(gè)教材案例;③12學(xué)時(shí):外聘專家授課;④4學(xué)時(shí):學(xué)生報(bào)告開源項(xiàng)目實(shí)踐結(jié)果;⑤2學(xué)時(shí):考試。上述內(nèi)容安排按順序開展,實(shí)驗(yàn)環(huán)節(jié)與課程教學(xué)同步進(jìn)行。在教材案例實(shí)驗(yàn)教學(xué)中,我們采用先學(xué)生設(shè)計(jì)再教師講授的方式,開源項(xiàng)目的實(shí)驗(yàn)與外聘專家授課互不影響。

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

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

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

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

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

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

2.2開源軟件的作用

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

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

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

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

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

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

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

2.3業(yè)界專家授課

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

3實(shí)施與效果

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

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

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

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

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

4結(jié)語(yǔ)

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

作者:李暾文艷軍劉萬偉董威羅宇單位:國(guó)防科技大學(xué)