叶鹏 倪友聪
摘要:软件设计是软件工程课程教学的重难点内容。然而目前在教学实践中,由于缺乏相关教学资源使学生难以快速理解和掌握软件设计的理论和技术。针对这一问题,本文提出一种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.