前言:想要寫出一篇引人入勝的文章?我們特意為您整理了軟件工程創(chuàng)新性實驗教學課程實踐范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:傳統(tǒng)的軟件開發(fā)方法以及對應的軟件工程課程實驗設計通常缺乏一致性、系統(tǒng)性,不利于提高學生軟件開發(fā)的綜合實踐能力。針對上述問題,開設實施了軟件工程創(chuàng)新性實驗教學項目“基于AADL模型驅動的軟件開發(fā)方法”,使得軟件開發(fā)過程的各個階段集成于統(tǒng)一、一致的建??蚣苤?。同時,輔以“做中學”與項目驅動相結合的教學模式,讓學生從實踐中體驗一個完整的軟件開發(fā)過程,提高學生的自主學習探索、軟件開發(fā)綜合實踐能力,為軟件工程實踐教學的開展提供實用的可選方案。
關鍵詞:軟件工程;創(chuàng)新性實驗教學;AADL;模型驅動;項目
驅動傳統(tǒng)軟件工程課程教學主要以經(jīng)典的結構化方法學和面向對象方法學為主線,講授兩種方法學在軟件生命周期開發(fā)各個階段的原理、方法及工具的應用[1]。在課程實驗階段,結構化方法學通常使用數(shù)據(jù)流圖、軟件架構圖、流程圖[2]等不同的描述方式來分別刻畫軟件從需求分析、概要設計到詳細設計的開發(fā)模型,對于軟件開發(fā)初級者來說,同一軟件在開發(fā)過程中采用不同描述手段,在兩個不同階段之間,都需要進行手工的模型轉換(例如從數(shù)據(jù)流圖到軟件架構圖的轉換),容易引入錯誤,很難保證所建模軟件系統(tǒng)的輸入輸出一致性。而面向對象的軟件開發(fā)方法學盡管在軟件開發(fā)生命周期的各個階段主要采用統(tǒng)一的UML語言來建模軟件,但是由于仍然采用了多種視圖模型[3](如用例圖、類圖、順序圖等)來描述同一軟件不同階段的開發(fā),同樣容易導致軟件開發(fā)的不一致性。基于上述問題,軟件工程創(chuàng)新性實驗教學課程引進了一種有別于傳統(tǒng)軟件方法學的新型軟件開發(fā)方法,即基于AADL(ArchitectureAnalysisandDesignLanguage)[4]模型驅動的軟件開發(fā)方法?;谀P万寗拥能浖_發(fā)方法[3]主要以高度抽象的模型為核心,將軟件開發(fā)焦點聚焦于需求功能的獲取、軟件體系架構及業(yè)務邏輯的設計,而底層與平臺實現(xiàn)相關的代碼框架則可以由相應的軟件工具自動生成,極大地提高了軟件開發(fā)效率。基于UML的軟件開發(fā)方法也屬于模型驅動的開發(fā)方法之一。為了避免UML多種視圖模型可能導致的軟件開發(fā)不一致性,本課程結合當前高可信系統(tǒng)的開發(fā)研究熱點,選取了美國汽車工程師協(xié)會提出的體系結構分析與設計語言AADL作為模型驅動開發(fā)方法的建模語言。該語言支持自頂向下、粒度逐級細化的基于組件的開發(fā)方法,將系統(tǒng)、子系統(tǒng)、進程、線程、子程序等常用的計算機運行時組件集成于統(tǒng)一的描述框架中,能夠較好地保證軟件開發(fā)的一致性。另外,該語言除了提供圖形化的表示方式以外,還提供具有精確語義的文本描述以及支持第三方插件的通用XML描述方式,因此便于在軟件設計早期對其表示的軟件體系架構模型進行分析校驗,盡早地檢測出系統(tǒng)設計缺陷,有效地減少軟件故障檢測成本。本課程在引入上述方法的同時,還結合“做中學”[5]與項目驅動相結合的教學模式,將基于AADL模型驅動的開發(fā)方法應用于實踐項目的開發(fā)過程中,從而使需求分析、概要設計、詳細設計、代碼生成等開發(fā)過程集成于統(tǒng)一的開發(fā)框架中,讓軟件開發(fā)者對于軟件開發(fā)各階段的系統(tǒng)一致性及軟件回溯確認驗證有一個良好的開發(fā)實踐,聚焦于業(yè)務需求、架構設計,提高軟件開發(fā)綜合實踐能力。
1基于AADL模型驅動的軟件開發(fā)方法的應用
本課程選取了AADL語言作為模型驅動的建模語言,能將軟件工程開發(fā)各階段統(tǒng)一于視圖一致的框架中,能夠很好地順應經(jīng)典的瀑布模型的開發(fā)過程。在軟件開發(fā)的不同階段,仍然采用以AADL組件為基礎的統(tǒng)一視圖,下層視圖模型在上層的視圖模型的基礎上,提供組件粒度更細的視圖。例如,AADL系統(tǒng)及細化的子系統(tǒng)組件模型對應于需求分析階段的業(yè)務需求建模;AADL進程組件模型在系統(tǒng)需求模型的輸入輸出接口限定下進一步推導出體系結構模型,對應于軟件工程的概要設計階段;AADL線程組件及子程序模型作為進程模型內(nèi)部的執(zhí)行體,刻畫軟件的動態(tài)行為,對應于軟件工程的詳細設計階段。由于該方法遵循自頂向下、逐級求精的方法學,所以每個階段獲取的AADL模型都是基于上一階段的模型框架下細化得到,便于復審驗證分析。若發(fā)現(xiàn)某個開發(fā)階段的模型缺陷,可以回溯至上一階段進行重新分析與設計。對于最終確認的詳細設計模型,學生可以進一步手動完成整個編碼工作,也可以選取相應的代碼生成工具生成代碼框架,再補充完整業(yè)務代碼。該方法在需求分析、設計階段通過對模型進行早期分析驗證來部分替代傳統(tǒng)的代碼測試方法,以減小代碼測試晚期檢測到的錯誤代價。
2以“做中學”模式提高學生探究式學習能力
2.1教學設計
課程實驗采取“做中學”教學模式,以促進學生自主學習,探索未知科學的能力。參與課程的學生包括計算機專業(yè)以及來自于地理信息科學、機械電子工程、信息科學、信息管理等非專業(yè)的學生,基礎各不相同,且大部分同學從未接觸過AADL語言建模項目,所以配套編寫了詳細的實驗指導書,提前分發(fā)給學生進行實驗準備與預習。給學生提供豐富的國內(nèi)外文獻參考資料,學生可以在遇到問題時進行查閱解惑,并要求學生將問題及解決方案寫入報告。要求學生通過系列調(diào)研后,自主選擇一種AADL語言建模工具,在實踐中快速學習一門語言的使用與相應的建模方法。課程同時也給予學生自由的探索空間,對于問題的解決給予開放式的策略,不作過多限制。例如在AADL建模時,學生可以選擇AADL文本、XML、圖形表示之一,但要求整個軟件建模階段采用前后一致的表示方式,以便于模型的分析與驗證。對于模型分析驗證的方法可以基于不同的表示形式,采取不同的分析手段。
2.2教學效果
學生通過自主學習實驗指導書以及查閱文獻資料,能夠選擇當前流行的AADL語言建模工具(如OSATE等)輔助軟件系統(tǒng)的開發(fā),并能通過工具自帶示例快速的學習AADL語法,體驗該語言的建模特性。例如,有的學生選擇采用AADL文本的建模方法,并利用現(xiàn)有的詞法、語法分析工具(如LEX,YACC)對AADL文本進行分析驗證;有的學生則以AADL文本相對應的XML表示為基礎,采用XML解析技術(如DOM、SAX)自己實現(xiàn)模型解析與分析的邏輯。有的學生采用圖形表示方式進行建模,直觀明了,但發(fā)現(xiàn)圖形表示的模型不便于之后的模型檢測,因此利用相應工具將圖形轉換為文本方式,進行進一步處理。通過做中學的模式,學生通過實踐,發(fā)現(xiàn)具體問題,激發(fā)學生的求知欲與好奇心,再輔以詳實的實驗指導書和豐富的參考資料,提高學生自主探究解決問題的能力。
3以項目驅動提高學生綜合實踐能力
3.1教學設計
通過項目制的方式,讓學生組成2~3人的團隊實踐一個完整的基于模型驅動的軟件開發(fā)過程,提高學生的綜合知識應用能力、溝通合作能力、軟件復審能力、文檔撰寫能力等多項綜合實踐能力。首先,學生需要綜合軟件工程、操作系統(tǒng)、計算機組成原理等多門課程的知識來理解AADL各組件的建模語義,并將其準確地應用于項目開發(fā)各階段的建模。其次,每組學生都要負責該組項目開發(fā)的一個或多個階段的建模與分析任務,負責每個階段建模的學生還需要對其建立的模型采用適當?shù)姆绞竭M行分析驗證,如果發(fā)現(xiàn)問題,可回溯至上一階段的模型,與其負責的學生進行溝通確認,共同解決問題。同時,在每個階段需要輸出規(guī)范的文檔,以備復審,且作為下一階段開發(fā)的依據(jù)。
3.2教學效果
多數(shù)團隊項目成員能夠嚴格按照軟件開發(fā)瀑布模型各階段進行任務分工,并利用AADL語言固有的分層組件語義進行自頂向下逐級細化的開發(fā)。例如,負責需求建模的成員使用AADL語言精確地刻畫出系統(tǒng)及子系統(tǒng)模型的輸入輸出接口,并給出相應的需求分析文檔。該團隊負責概要設計的成員依據(jù)該需求分析文檔,繼續(xù)在由AADL系統(tǒng)組件刻畫的需求模型的接口之下進一步細化推導出體系架構模型,并輸出概要設計文檔。負責詳細設計的成員依據(jù)概要設計文檔,在由AADL進程組件刻畫的體系架構模型的接口之下進一步刻畫系統(tǒng)的動態(tài)行為模型,以保持系統(tǒng)的一致性和可回溯性。由于整個軟件開發(fā)過程的一致性,當發(fā)現(xiàn)問題時,團隊成員能夠依據(jù)該階段的模型和撰寫的文檔快速向上回溯,通過進一步溝通探討,及時解決問題。
4結語
該項目作為華中農(nóng)業(yè)大學本科創(chuàng)新性實驗項目之一,來自于計算機科學與技術等六個不同專業(yè)的學生參加了總共30個學時的課程實驗。學生自由組成了多個小組體驗了基于AADL模型驅動的軟件開發(fā)方法,通過“做中學”的方式,從實際項目中體驗了軟件工程從需求分析到詳細設計的自頂向下逐級細化的設計思想,提高了學生的自主學習探索能力以及軟件開發(fā)綜合實踐能力,增加了學生探究科研、開發(fā)可信軟件的興趣。該項目為軟件工程創(chuàng)新性教學改革提供了一種實用可行的參考方案。
參考文獻
[1]竇萬峰.軟件工程方法與實踐(第3版)[M].北京:機械工業(yè)出版社,2016.
[2]竇萬峰.軟件工程實驗教程(第3版)[M].北京:機械工業(yè)出版社,2016.
[3]杜德慧.UML建模分析與設計:基于MDA的軟件開發(fā)[M].北京:機械工業(yè)出版社,2018.
[4]楊志斌,皮磊,胡凱,等.復雜嵌入式實時系統(tǒng)體系結構設計與分析語言:AADL[J].軟件學報,2010,21(5):899-915.
[5]鄒欣.構建之法:現(xiàn)代軟件工程(第三版)[M].北京:人民郵電出版社,2017.
作者:王穎 陳仲民 王建勇 單位:華中農(nóng)業(yè)大學信息學院