葉鵬 倪友聰


摘要:軟件設計是軟件工程課程教學的重難點內容。然而目前在教學實踐中,由于缺乏相關教學資源使學生難以快速理解和掌握軟件設計的理論和技術。針對這一問題,本文提出一種Android快速開發框架AF4Ad,在此基礎上將AF4Ad框架應用到實踐教學案例,并通過對比分析使用和不使用AF4Ad框架兩種情形下對于學生的軟件設計的影響,進而說明AF4Ad框架的有效性。
關鍵詞:軟件工程;軟件框架;實踐教學
中圖分類號:G642.41 ? ? 文獻標志碼:A ? ? 文章編號:1674-9324(2015)43-0242-02
一、引言
在本科階段的軟件工程課程教學中,軟件設計能力被作為學生的重點需要培養的能力。然而,對于軟件設計能力培養的難點在于:在軟件設計實踐中不但要理解信息隱蔽、模塊化等抽象概念,而且還要掌握高內聚、低耦合等設計原則。因而,軟件設計一直被認為是軟件工程課程教學中亟待解決的難點。由于缺乏與軟件設計相關的教學資源,使得學生往往難以在有限教學課時內理解和掌握軟件設計的抽象理論和技術,影響了軟件工程課程的教學效果。近幾年國內外在軟件工程教學研究工作中,主要是通過引入CDIO[1]思想改進傳統的軟件工程課程教學[2-5],特別是強調了以項目驅動的方式培養和提高學生的軟件開發的實踐能力[6-8]。這些研究都針對軟件工程教學改革進行了有益的探索,但仍然缺乏有效的教學資源來幫助學生快速理解和掌握軟件設計的理論和技術,并切實培養和提高他們軟件開發的實踐能力。
二、軟件框架AF4Ad簡介
軟件框架AF4Ad是重要的教學資源。它幫助學生理解抽象的軟件設計理論知識,同時也為他們運用這些知識進行軟件設計實踐起到指導作用。基于Android SDK[9],在AF4Ad框架中設計并實現了一組可重用的軟件構件。AF4Ad框架本身不僅可以幫助學生更好理解軟件體系結構風格、設計模型和軟件框架等知識,而且還能使學生利用它提供的可重用構件高效地進行Android移到應用軟件的開發。AF4Ad框架被分為用戶界面層(UI layer),領域層(Domain layer)和基礎層(Foundation Layer),如圖1所示。UI層實現圖形用戶界面,提供應用程序與用戶交互的功能;Domain層用于封裝業務實體和業務服務,并向UI層提供業務功能接口;Foundation層則用于封裝一組通用服務(網絡通信、數據持久化等),并向Domain層提供統一的接口。
三、AF4Ad框架在軟件設計實踐教學案例中運用
為了說明AF4Ad框架的有效性,我們開展了對照實驗研究。首先選取Android移動應用軟件中最為常見的用戶登錄模塊為實驗案例,然后隨機挑選10名學生,并將它們分成兩個組,一個是實驗組,另一個是對照組。其中實驗組采用我們前期提出的設計方法[10],使用AF4Ad框架設計用戶登錄模塊,而對照組不使用本文提出的AF4Ad框架完成設計工作。最后,通過使用CK套件[11]分析兩個組的設計方案的內聚性和耦合性。
實驗結果如表1所示。其中CBO用于度量對象之間的耦合性。CBO值越小,表明該類獨立性越強,修改它時所涉及的類也越少,維護的代價越小。LCOM用于度量對象的內聚性。LCOM值記錄類中訪問相同成員屬性的成員方法數量,LCOM可表明類的各成員方法之間的獨立性。LCOM越大,類的封裝性越差,內聚度就越小;而LCOM越小,類的封裝性越好,內聚度就越大。圖2反映了所有類的平均CBO值和LCOM值。
實驗結果表明,實驗組設計方案的內聚性平均提高了50%,耦合性平均降低了60%。實證了AF4Ad框架的有效性。
四、結語
AF4Ad框架為軟件設計實踐教學提供了一種有效的教學資源。實驗證明,AF4Ad框架為學生在軟件設計時提供了有效支持,幫助他們能更好地理解軟件設計的抽象概念,使他們更容易進行軟件設計實踐,進而獲得更好的設計方案。下一步,將繼續完善該框架的內容,使其能更好支持軟件設計的實踐教學過程。
參考文獻:
[1]Crawley E F,Malmqvist J,Lucas W A,et al. The CDIO Syllabus v2. 0. An Updated Statement of Goals for Engineering Education[C]. Proceedings of 7th International CDIO Conference,Copenhagen,Denmark,2011.
[2]韓智,張振虹,李興娟.基于CDIO理念的軟件工程課程教學改革[J].計算機教育,2010,(11):56-59.
[3]張德海,柳青,黃光能.基于CDIO的軟件工程教學質量保障體系構建探索與實踐[J].計算機工程與科學,2011,33(A1):182-185.
[4]梁瑞仕,曾荔枝,楊亮.基于CDIO理念的本科《軟件工程》教學改革研究[J].現代計算機:上半月版,2011,(8):25-26.
[5]蔡建平,黃志清.CDIO工程教育理念在軟件開發綜合能力培養中的實踐[J].教育技術期刊,2011,2(5):1-7.
[6]Chen C Y,Chong P P. Software engineering education:A study on conducting collaborative senior project development[J]. Journal of Systems and Software,2011,84(3):479-491.
[7]徐玲,張小洪,文俊浩,等.軟件工程專業實踐教學體系的構建[J].計算機教育,2010,(11):137-1149.
[8]Ragan E D,Frezza S,Cannell J. Product-based learning in software engineering education[C]. Frontiers in Education Conference,2009. FIE'09. 39th IEEE,2009. IEEE,2009:1-6.
[9]余世龍.Google Android SDK開發范例大全[J].2010.
[10]葉鵬,倪友聰.基于軟件框架的軟件設計實踐教學方法研究[J].計算機教育,2014,(2):28.
[11]Chidamber S R,Kemerer C F. A metrics suite for object oriented design[J]. Software Engineering,IEEE Transactions on,1994,20(6):476-493.