《通过开发Android平台上的社交应用和游戏应用来比较学习软件体系结构.doc》由会员分享,可在线阅读,更多相关《通过开发Android平台上的社交应用和游戏应用来比较学习软件体系结构.doc(37页珍藏版)》请在三一办公上搜索。
1、通过开发Android平台上的社交应用和游戏应用来比较学习软件体系结构1.引言电脑游戏和视频游戏非常受儿童和青少年的欢迎,在年轻人的文化发挥了突出的作用1。现在游戏可以在技术丰富的配备了笔记本电脑,智能手机,游戏机(移动和固定),机顶盒,和其他数字设备的环境中运行。从这一现象,人们相信将年轻人对游戏的内在动机与教育内容和目标结合就会变成Prensky称之为“以数字游戏为基础的学习”的学习方法2。青年学生生活的游戏中除了丰富的外观,游戏开发技术已经成熟,并且越来越先进3。基于现有的各种游戏开发环境,游戏开发过程中的全部责任可以分为几个的专家领域和角色,如游戏程序员,3D模型的创造者,游戏设计师,
2、音乐家,漫画家,剧作家,等等。游戏内容与技术相结合的过程可以通过游戏引擎和使用网络上的各种用户和专家社区的可用信息得到简化。例如,微软的XNA游戏开发工具包提供的游戏循环函数绘制及更新游戏内容,而且还提供了方便的游戏开发组件来加载不同格式的图形,音频和视频。这使得游戏迷们如无论有没有编程背景的学生修改现有的游戏或开发新游戏。他们可以用这些游戏创作工具实现自己的游戏概念设计,学习发展技能和相关知识,积累相关的实际经验。在这种情况下,不但游戏可以用于学习而且通过激发任务机制,游戏开发工具可以用来研究计算机科学(CS),软件工程(SE),和游戏编程相关主题。一般来说,游戏可以用三种方式集成在教育中4
3、,5。首先,游戏可以用来代替传统的练习,鼓励学生把额外的努力用来做练习,给老师或助教一个实时地监控学生是如何练习的机会6,7。第二,游戏可以作为一个讲座的一部分来促进学生的参与,增加学生的动力8,9。第三,将要求学生们修改或开发游戏作为使用游戏开发框架(GDF)学习CS和SE方面技能的课程的一部分。我们把后者的学习方法为以游戏开发为基础的学习(GDBL)。GDF表示可以用来开发或修改游戏,例如,该工具包的游戏引擎,游戏编辑器,或游戏(模拟)平台,甚至任何集成开发环境(IDE),如Visual C + +,Eclipse和Android SDK,J2ME,因为所有的人都可以用来开发游戏。本文重点
4、研究学生通过在Android平台开发游戏应用学习软件体系结构和在Android平台开发社交应用(例如,天气预报,聊天软件)学习软件体系结构的相似点和不同点。将游戏开发放到CS或者SE课程中的动机是利用学生对游戏及游戏开发的迷恋来激发他们通过该项目更多更好的学习课程材料。2.相关工作本节描述了GDBL方法在软件工程领域的使用的研究背景和以前的结果。2.1 研究背景最早的类似的通过在游戏的环境中编程来学习的应用在20世纪70年代早期。Logo语言11,龟图形,是一种最古老的用来介绍计算概念给初学者的图书馆。这个概念是基于一只可以在2D屏幕上移动的 “海龟”,该“海龟”用可设置开关屏幕的画笔画就,因
5、此,可能会留下龟运动的痕迹。编程使该“海龟”画不同的花样,这可以用来介绍一般的计算技巧,如程序操作,迭代,递归。此外,在1987,Micco学术性的提出了一个写井字游戏的使用12。后来,其他的研究已经使用专业游戏编程工具如Stage Cast Creator 13,Gamemaker 14 ,Alice 15和Neverwinter Nights 16。此外,文章17提出了使用手机游戏开发作为激励工具和计算机课程的学习背景调查。他们的调查表明游戏编程和计算机科学领域的游戏开发之间的关系-游戏发展可以用在学习人工智能(AI),数据库,计算机网络,SE,人机交互,计算机图形学,计算机体系结构,算法
6、,编程和操作系统。这些研究表明,游戏制作和技术的编程技巧得到激励以及故事性的发展。制作游戏激励和开发评书以及技术的编程技巧的。制作游戏的任务其性质在目的上不尽相同-因此搭建环境并平衡游戏角色这些事情由学习者来承担。最近的游戏编程工具包往往具有比Logo语言更强的视觉效果,无论是因为这个原因,或者因为他们有一种可视化的编程语言,或两个原因同时的作用,使得设计者能够轻松创建图形游戏。这种变化使学习者的重点远离了低级编程,而是强制往其他角色如设计师或软件开发者转变。因此,我们通过实验研究了如何将GDFS用于教育,探讨传统的授课进化为动态的,合作的,和对当前技术丰富的环境下的学生有吸引力的授课。然而,
7、这种说法有待进一步相关理论,应用经验,评价结果和经验证据的支持。这是一个分享我们的经验和实证结果在GDBL领域采用Android软件体系结构课程的动机。2.2 课程和项目设置挪威科技大学(NTNU)(课程代码TDT4240)的软件体系结构课程的教学方式和其他大多数大学不一样,因为学生也必须在项目中实现他们自己设计的软件体系结构。这样做的动机是为了让学生了解架构和实现之间的关系,并能够真正的对体系架构和实施是否符合应用程序指定质量要求进行评价。在软件体系结构课程中的架构项目和其他软件工程课程项目的相似,只是软件体系结构课程中项目都是从软件体系结构的角度进行。在整个项目中,学生们必须根据指定的项目
8、使用的软件体系结构技术,方法和工具来成功学到东西。软件体系结构的项目包括以下几个阶段:(i)COTS(商用成品)练习:学习相关技术并用来开发一个简单的游戏。(ii)设计模式:学习如何通过改变现有系统中的应用设计模式来应用设计模式。(iii)需求和体系结构:列表功能,质量的要求和对游戏的软件体系结构的设计。(iv)架构评估:使用的架构权衡分析法(ATAM)18-20评价方法对项目的软件体系结构方面的质量要求进行评估。(v)实施:做详细的设计,并在新建的架构和根据评估结果做出修改的基础上实现该游戏。(vi)项目评估:使用事后分析法(PMA)21将项目作为一个整体进行评估。在项目的前两个阶段,学生将
9、独立完成他们的工作任务。在36阶段,4-5个学生组成一个团队,并在自己的团队中完成相应的工作。同时,在项目进行期间,学生将专注于一个固定的初级指定质量属性。对于中等质量属性,学生可以选择他们喜欢的质量属性。学生花大部分时间在实施(六周),但也鼓励他们在早期阶段开始实现该游戏以测试他们的架构选择(增量开发)是否合理。在实施阶段,学生通过多次迭代不断扩展,完善软件体系结构使其得到改进。2.3早期的成果此前,该项目的目标是开发Java方面的 Khepera机器人模拟器的华盛顿州立大学的机器人控制器(机器人)22,该机器人控制器着重于一些指定的质量属性如可用性,性能,可修改性,或可测性。开始时,学生们
10、被要求编写的机器人控制器能控制一个机器人在一个迷宫中移动,并在迷宫中收集四个球,并把它们带到迷宫中一个固定的位置中。在2008年,学生们可以在机器人控制器项目和游戏开发项目之间进行选择。两种项目的过程,成果,和对项目的评价是一样的-只是领域不一样。在游戏项目中,学生们被要求使用微软XNA框架和C#语言开发一个游戏。最后,对软件体系结构课程进行评价23,24。评价是基于一个项目的调查数据,学生的项目可交付成果,和其他可访问的课程信息。研究的主要结论是,游戏开发项目可以成功地如果我们考虑机器人作为评价基准用来教软件体系结构。整合我们在2008年运行软件体系结构课程的游戏项目的经验,在2010-20
11、11年期间我们软件体系结构课程项目中增加了一个COTS-Android的项目作为给学生的一个新的选择。学生们现在可以在除了在Java机器人项目和XNA 游戏项目之间进行选择,还可以在Android平台开发一个社交应用程序或游戏。由于COTS和所选择领域的独立性,学生们在项目过程中必须专注于相同的软件体系结构问题,并按照相同的模板编程。游戏和社交Android项目的引进,使我们得以比较学生在项目所涉及的领域如何影响学习和项目经验以及COTS的独立性。在下面的章节中详细说明。3 研究方法本节描述我们使用Android开发作为软件体系结构中的项目的实验中获得的相关数据的研究方法。3.1研究目的本文重
12、点研究使用相同的COTS但具有不同的发展领域来探讨不同领域是否产生不同的输出。在我们以前的研究,GDBL结论的有效性是基于不同的COTS机器人和XNA。本文不探讨XNA和Java开发的机器人控制器开发的游戏,只注重Android平台的社会应用和游戏应用的开发。我们的评估包括五个主题:选择域分布,学生对项目感知,项目交付的代码质量和复杂性,学生的努力和成绩,获奖项目等级。3.2 GQM方法社会和游戏项目的比较应该有助于发现差异,揭示在Android平台上引入项目的影响。这个评价是一个模拟试验,而不是一个受控制的试验。采用的研究方法是基于目标问题度量方法(GQM) 25 ,我们首先确定研究目标(概
13、念层面),然后定义一组研究问题(操作层面),并描述了一套指标来回答研究问题的定义(数量级)。在我们的例子中,回答问题的研究使用的指标的定量和定性数据共同决定的。表1:展示了用于分析软件体系结构课程的游戏开发项目的GQM方法。目标分析软件开发项目为了在同一COTS社交应用与游戏应用领域比较关于两个领域的项目的差异性和有效性看待的角度研究员和教育家上下文索引在软件体系结构课程的学生问题Q1:如何看待选择选择一个Android社会项目的学生和选择Android游戏项目的学生他们的选择是否有任何差异?Q2:在软件架构设计的学生做一个Android的游戏项目与学生做一个Android社会项目有什么不同?
14、Q3:在项目实施工作中的学生做Android游戏项目与学生做一个Android社会项目是否有任何差异?Q4:学生在性能上做一个Android的游戏项目与做一个Android社会项目有什么区别?MetricM1:选择游戏项目与社会项目的学生数量。M2:问卷调查,5级李克特量表:强烈不同意(1),不同意(2),中立(3),同意(4),强烈同意(5)M3:项目报告M4:源代码文件M5:花费的时间M6:项目得分3.3. 研究步骤当学生开始的项目,并按照项目的阶段进行时,他们应该报告他们花在项目的每个阶段的时间。前两个阶段让学生单独或成对熟悉COTS、架构和设计模式。该项目的主要工作是在项目3-5阶段,
15、包括需求说明,架构设计,架构评估,项目实现和测试。学生每个阶段要上交自己的成果,这由课程负责人评估和反馈,在最后交作品之前使作品不断改善。在5阶段的结束,学生们会上交一个最终的作品,该作品是经过课程负责人评估和分级的。完成5阶段后,学生回答一个问卷调查,主要集中在学生如何看待该项目。在6阶段,学生必须对其进行项目的事后分析作为一个整体来反映他们在项目中取得的成绩和挑战。4 研究结果在2010年和2011年,学生可以选择使用三个COTS做项目:机器人(Java),XNA(C #),和Android(Java)。学生选择的COTS结果展示在图1中,其中36名学生选择了Khepera机器人(19%)
16、,55名学生选择了XNA(27%),和102名学生(54%)选择了Android。选择Android的学生中,58名学生(57%)选择了社会应用,44名学生(43%)选择了游戏应用。从学生选择中我们看到,51%的人选择了游戏开发领域,30%的人选择了社会应用,19%的人选择机器人控制器。图1:软件架构项目类型的选择分布图图1的数据清楚地表明,大多数学生喜欢游戏开发相比其他领域。Android是目前最流行的COTS,我们相信这是由于开发商其开放性,Java的开发,有吸引力的设备,创新的特点和发展,和一个通过Android标记共享开发的应用程序的新方式。在项目的第一阶段,学生们被要求填写一份调查问
17、卷,选择COTS和领域的原因。最重要的原因是:(1)编程列表的原因(熟悉Java或C #)(70.7%),(2)了解COTS(机器人,XNA,Android)(59.5%),(3)游戏动机或娱乐的原因(40.1%),(4)社会应用的动机(39.5%),(5)了解该领域(机器人,游戏,社会)(34.2%),(6)硬件上运行游戏的动机,Android手机,Zune播放器(33%),和(7)做了游戏,然后将自己的游戏放到Android市场或XNA俱乐部(24.5%)。从上面的数据,我们发现,游戏领域已经吸引学生注意力和吸引力的外围设备的优势,如硬件或软件市场, Android社交领域也一样。但这不是
18、机器人领域的情况。下面的小节重点分析在以下四个方面是否社交领域和游戏领域不同而产生明显不同的输出:(1)学生对项目的感受,(2)软件体系结构的设计复杂度,(3)学生在项目中的实现成果(4)学生在项目的评分。4.1学生对项目的不同感受。学生们完成了他们的软件体系结构设计一个星期后,我们做了一个关于项目的调查。本次调查的目的是揭示在学生对组队完成在Android平台上的社交应用项目与组队完成相同COTS的游戏项目的感受可能存在的差异。在调查报告中让学生回想该项目对他们学习软件体系结构有何帮助。该调查定义的假设如下。H0:学生对Android平台上的社交应用或者游戏应用来作为软件体系结构项目的感受没
19、有任何差异。我们将采用Kruskal-Wallis检验假设26,因为它是群体之间的人口平均数测试的平等的非参数方法24。此测试通常是(1)用户不能假设一个正常的人口(2)两组样本大小是不同的。表2展示Kruskal-Wallis检验对报表PS1PS6检验的结果。44个游戏项目的学生中38个学生做了问卷,58个社会项目的学生中的35个学生做了问卷。问卷中的每个项目是通过分配一个从1到5的5个程度值的答案,其中1表示非常反对,5表示非常同意。表2: Wilcoxon测试PS1-PS11报表陈述COTS平均中点标准偏差PPS1:从ATAM上讲我发现它很难评价其他组的结构?Game3.4541.060
20、.178Social3.7740.91PS2:我发现很难把重点放在我们分配的质量属性上Game3.0531.090.024Social3.5740.85PS3:我发现很容易集成建筑或设计图案Game3.2130.930.332Social2.9431.03PS4:我花了更多的时间有关技术问题,而不是建筑事宜Game3.7141.200.175Social4.0641.03PS5:在项目过程中,我学到了很多关于软件架构的知识Game3.5040.860.552Social3.3140.99PS6:如果我能及时回到过去的话,我会选择另一个项目Game1.1310.340.289Social1.20
21、10.41从测试结果中,问卷调查的回答中显著性差异(P0.05)最低的是PS2(P = 0.024)。我们得出这样的结论:Android游戏和Android社交应用之间显著的差异在于学生对项目中困难的感知的重点集中在项目指定的质量属性上。Android游戏在量表的得分是3分,而Android社交应用的得分为4分。这表明,Android游戏项目的学生对PS5表示中立的态度,但Android社交应用项目的学生对PS5倾向于同意。一个可能的解释是,一个游戏的质量属性,如可修改性或可测性,很容易让学生联想,并抓住学生的注意力使学生去深入的了解它。但社交应用程序可能更多的固定印象在学生的生活,故激发学生
22、去思考的影响没有游戏的深刻。其他的报表在学生感知方面没有显著差异。此外,即使其他两组的P值无显著性差异,PS1和PS4的平均值还表明学生从游戏项目中发现评价其他组在ATAM方面的架构没有那么困难,比社交应用项目的学生在技术问题上花费更少的时间。此外,PS6:学生必须回答如果他们能够回到过去的时间,他们是否会选择另一个项目。图2展示了更详细的统计信息。图2显示,相比选择游戏项目的学生的比例(13%)选择社交应用项目的学生中有较高比例的学生,会选择另一个项目(20%)。总的来说,调查显示最显著的差异是选择游戏项目的学生更注重软件的质量属性。报表获得的P值(P1,P2,P4)显示选择游戏项目的学生比
23、选择社交应用项目的学生更积极的反馈他们对自己项目的感受。图2:关于PS6:如果你能回到过去你会选择相同的项目吗4.2软件体系结构设计上的差异凭经验是很难评估一个软件的架构,但我们选择通过设计模式的学生选择人数,主要模块/类的软件体系结构的逻辑视图的数量,和体系结构层次结构的数目来评估一个软件体系结构的好坏。我们承认,这样比较会有很多误差源,因为这两个领域差别太大。然而,在本课程的重点是软件设计模式的应用,从逻辑视图上主要对足够详细的软件体系结构提出不同的看法。实验数据应强调项目的两种类型项目之间的任何差异。实验数据通过阅读和分析12个游戏项目小组和16个社交应用项目小组最终的项目报告收集而来。
24、4.2.1设计模式的使用表3是对软件体系结构和设计模式应用于社交应用项目和游戏项目数量的描述性统计。表3的结果表明,设计模式在两种类型的项目中的使用有一些差异。表4 展现的Kruskal-Wallis检验的结果表明设计模式在的两个不同的项目类型中实现的数量在统计上无明显差异。表4提出设计模式在的两个不同的项目类型中实现的数量在统计上无明显差异。根据阅读项目报告,图3给出了设计模式在社交项目小组和游戏项目小组使用的分布。这些图表显示,在这两种类型的项目中Observer模式是最受欢迎的。此外,Abstract Factory模式和State模式在游戏项目小组中排名前三的模式,社交应用项目小组中排
25、名前三的模式还有集合模式和模板模式。游戏项目比社交应用项目在应用的体系结构和设计模式方面有更多的多样性。例如,游戏项目使用的八种设计模式相比社交应用项目的六种设计模式,如图3所示。即使没有显著差异,但P值接近0.1。在表中,在他们的项目4implies游戏队使用的设计模式中,这可能会导致游戏项目的使用比在全面统计图3所示的社会项目的更多类型的模式。图3:游戏和社会项目的设计模式的使用分布表3:使用设计模式平均标准偏差最大最小设计模式Game2.671.9271Social1.560.7331表4:假设检验的数量采用的设计模式假设COTSNMedianP无差异的设计模式数Game1220.111
26、Social1614.2.2软件体系结构的复杂性。体现软件体系结构的复杂性的两个指标24:(1)在软件体系结构的逻辑视图描述的主要模块或类的数目;(2)在软件体系结构的逻辑视图的层次结构的数目。选择体现计算复杂性的逻辑视图的原因是,逻辑视图是给软件体系结构设计提供最好的概述的东西中主要的一个。表5列出了主要模块/类的数量和社交应用项目和游戏项目中的软件体系结构的逻辑视图的层次结构的数目的统计。表5表明游戏项目小组比社交应用项目平均接近4或者更多主要模块/类(28%),小于标准偏差。此外,在游戏项目中的软件体系结构的层次数是社交应用项目中的软件体系结构的层次数的两倍。表6给出了从Kruskal-
27、Wallis检验得出结果,对软件体系结构的主要模块/类的数目和层次的数目。两个检验都给出了p值(P0.05)具体地说,试验表明,在软件体系结构中的主要类的数目和层次的数目在统计上有着显著的差异。从这个结果,这意味着游戏项的软件体系结构比社交应用的软件体系结构要复杂;这可能是由于他们用更多的方式来实现他们的游戏项目导致这种差异。表5:测量软件体系结构的复杂性主要模块的数/类结构上的的水平数量GameSocialGameSocial平均149.731.75标准偏差4.96.60.60.77最大212843最小7321表6-1:假设检验架构的复杂性假设COTSNMedianP没有数的区别主要模块/类
28、Game12140.021Social167建筑水平在数量上无差异Game1230.000Social1624.3在项目中投入精力的差异。要评估每个项目的学生投入的努力,需要两个指标作为衡量标准:(1)花在项目上的时间(2)软件体系结构、项目文件的大小和代码行数的多少。4.3.1时间的花费我们要求学生估计使用了多少小时去完成软件体系结构的项目的35阶段(核心项目的阶段)。表7显示了每个小组给出的估计小时数。根据每个小组投入的时间,我们使用Kruskal-Wallis试验对每个小组在项目花费的小时数进行了差异测试。根据以前的研究成果,游戏项目小组和社交应用小组所花费的时间在统计上的并没有显著差异
29、。相反,在这两个项目花费的时间分布是非常相似的。表7-1:每队花在项目上的时间。每队的时间(小时)GameSocial平均334338标准偏差133.7114.7最大520535最小1101834.3.2项目分析此外,我们选择将项目的实现程度作为标准来对在项目过程中工作量的多少进行评估。它可以提供一个良好的软件体系结构的复杂性和由此产生应用程序的实现24。由于两个类型的小组都使用Android平台,在复杂性方面该领域具有可比性,我们期望找到实现效率上的差异。在项目开发的过程中,他们可以免费的使用Android网络资源或者其他的开源库,这样可以节约编写代码实现设计好的软件体系结构的时间。以下指标
30、进行计算学生小组的工作量:(1)源文件数(NOF);(2)代码中的注释的数量(NOC);(3)源代码中不计空行和注释行的行数(LOC)。表9给出了游戏项目小组和社交应用小组工作量的比较,表中只统计Java代码文件,外部库代码文件和资源文件将不统计到表中。我们使用Kruskal-Wallis检验方法对实现两种不同的项目所得到的文件的数量和代码行数的差异进行了测试,表10显示了该测试的结果。Kruskal-Wallis检验的结果表明,两种类型的项目的LOC在统计上的没有显著差异。但P接近0.1。表9的平均值表明游戏项目小组在项目进行过程中把更多的精力放在实施阶段,如编码,作注释,将结构代码放到多个
31、文件。从表7,8,9,10,我们可以发现游戏项目小组在相似的时间开销(334 VS 338)编写的代码比平均代码量几乎多三分之一(超过133%)。这意味着游戏项目小组更高效,他们努力的编码,写注释,尽量在和社交应用项目小组类似的时间内开发出一个复杂的游戏软件体系结构。表8-1:假设花费小时假设COTSNMedianP每队的时间支出无差异Game123620.889Social16334表9-1:架构项目实施的指标NoFNoCLoCGameSocialGameSocialGameSocial平均3724101653625851949标准偏差131380775511721368最大54452571
32、288641735082最小15520637844390表10:假设检验项目实施代码假设NMedianP代码的行数没有差异Game1226720.114Social1615234.4项目的成绩差异该项目的得分是0分和30分之间,以总成绩30%。项目等级区间划分为:A:评分90%;B:评分80%并且评分90%分;C:评分60%并且评分80%;D:评分50%并且评分60%;E:评分40%并且评分50%;F:评分40%(失败)。为了调查项目小组给选择Android游戏项目和Android社交应用项目的学生评分是否有任何差异,假设没有任何差异, Kruskal-Wallis检验是用来检验这一假设,因为
33、我们不能假设一个正常的人口而两组样本的大小是不同的。表11给出了Kruskal-Wallis检验的结果:每个游戏项目和社交应用项目的学生项目成绩的差异。表11:Kruskal-Wallis测试不同的项目得分。假设COTSNMedianP项目得分组无差异Game44260.997Social5826项目开发时使用同样的COTS项目成绩没有明显的差异。我们单独运行2010年的社交应用项目和2011年的游戏项目。该项目的实施要求和模板在3-6阶段是2年保持相同,并且评价的过程和评委是一样的;我们可以发现学生在同等条件下都完成了项目,这说明困难可能是类似的。所以,我们只得出对于项目成绩无显著差异的结论
34、。为了得到的分数的概述,图4给出了两种类型的项目(游戏项目与社交应用项目)等级分布。图4:项目分布5有效性的威胁我们现在考虑什么是本次评估的有效性最重要的威胁。5.1内部有效性一个实验的内部有效性的问题“有关是否观察到A(假定为处理)和B(假定为结果)之间协同改变,这反映了这些被操作或测量的变量A和B的因果关系”27。如果B的改变引起了除了对A之外的其他操作,这就是内部有效性的一个威胁。这个评估有两个主要的内部有效性的威胁。第一内部威胁的是两组在评价中使用的样本不是随机的。允许学生选择Android游戏和Android的社交应用中的一个项目。我们不认为学生选择一个项目的一个特定类型就高于其他的
35、类型,从而损害了评价结果。第二个内部威胁是如果有任何差异,学生必须怎样独立的完成自己所选择的领域的项目。独立做一个社交应用项目或一个游戏项目,学生必须完全的完成项目中的相同阶段,提供在2010和2011相同的文档模板基础上完全相同的文件。我们已经确定了两种类型的项目是如何进行的的差异。游戏项目小组和社交应用项目小组的学生所经历的项目的1-2阶段是不同的。这两个阶段不是包含数据和用于评估项目材料的一部分。我们不认为这些差异对学生在他们的项目中所使用的方式有重大影响,因为它是准备阶段,我们对这两个阶段重视但是最后又排除在外。5.2 结构有效性结构有效性关心的是哪个推断得到保证的程度:(1)观察到的
36、人,设置,和的原因和影响操作包括在一项研究中(2)可能有异议的情况的结构。因此,现在的问题是,研究的取样资料是否可以作为一般结构的度量27。在软件体系结构课程使用Android项目的评估中,我们的研究目标是调查Android平台上的游戏项目和社交应用项目的差异性和相似性。GQM方法对这个目标具体化为四个可以支撑指标的研究问题。为了回答这四个研究问题,数据源和度量变量可以从我们的软件体系结构课程中进行选择。我们不能断言评估中所选择的数据源和度量可以给所有的结构提供证据,但是它们都是有助于描述两种不同的项目之间的区别的强大指标。在整个评估的过程中,我们使用不同的方法进行比较,最后得出评估结果。方法
37、的选择是根据描述和可视化使用可用的数据的两组之间的差异的最佳方式。方法的选择是基于使用可用数据描述和可视化两种小组之间的差异的最好方法。5.3 外部有效性外部有效性存在问题是是否持有一种因果关系(1)实验中的人员,设置,处理和输出是否有变化(2)实验原计划或开始时的人员,设置,处理和结果是否在实验中用到27。本文报告的结果对其他老师考虑引进游戏项目作为软件体系结构课程的一部分具有重大意义。此外,该结果对那些考虑引进游戏项目到SE和CS课程的老师也具有重大意义,因为这些课程中有很多相似的特点。这个研究的一个限制是评估中的学科是CS或者SE的学生在他们大学前三年已经完成了的。这并不证明这个结果对于
38、那些没有或者少于三年CS或者SE学习背景的学生是无效的。6 结论根据我们在软件体系结构课程中以前使用XNA的实验和现在使用Android的实验,我们发现游戏的动力和相关有趣的外围设备是一个最有吸引力的因素。另外,一个新的COTS-Android在软件体系结构中的课程中得以介绍,本文目的是确定相同COTS下不同的输出,通过回答四个研究问题来得到评估结果。第一个问题问的是学生选择Android游戏项目或者Android社交应用项目对软件体系结构项目的感受是否有差异(RQ1)。在统计上的重大发现是,社交应用项目的学生比游戏项目的学生更难以专注于特定的质量属性(P = 0.024)。从P值较低的其他数
39、据也反映出游戏项目小组比社交应用项目小组对项目的要求的态度更积极。此外,研究结果表明,如果必须重新做一个项目,20%做Android社交应用项目的学生会选择其他的项目,这个数目要比游戏项目的学生要多。第二个研究问题问的是学生选择Android游戏项目或者Android社交应用项目,设计软件结构的是否有什么差异(RQ2)。即使项目报告分析认为,项目中使用的设计模式无显著差异,但P值接近0.1,表明游戏项目使用的模式比社交应用项目的模式更多样化。此外,统计意义上的差异说明,游戏项目中的软件体系结构基本比社交应用项目中的软件体系结构复杂(P0.05)。第三个研究问题问的是学生对项目投入的努力是否因为
40、选择Android游戏项目或者Android社交应用项目不同而有差异(RQ3)。结果表明,在相同的时间,游戏项目小组投入的努力平均是Android社交应用项目小组的投入的努力的133%,并且游戏项目小组的学生在代码中写的详细注释和在多文件中组织的代码量是社交应用项目小组的两倍。第四个即最后的研究的问题是做一个游戏项目与做一个社会项目学生的表现是否有差异(RQ4)。两种类型项目的比较表明,在项目中统计上没有明显差别。根据先前的结论,并与以前关于XNA和机器人在软件体系结构课程中的应用的调查24,我们发现存在着相当类似的有关游戏领域(XNA和Android游戏)的结论,(1)游戏领域的持续流行;(
41、2)学生对项目更好的感知(3)更多的设计模式和软件体系结构的高度复杂性(4)和社交应用项目相同的项目成绩。提到Android COTS专有的, Android游戏项目的主要差异可以在软件体系结构教学方面作为一个有趣并且有效的工具来激励学生应用更多设计模式及更多富有成效的代码,从而设计出复杂度高的软件体系结构,这是Android社交应用项目无法达到的。此外,在对学生的问卷调查中,相对于XNA和机器人模拟器,Android是一个有吸引力的平台,这样就鼓励我们在使用Android在软件工程实践中作为一种开发工具的改善工作方面做更多的实践,并鼓励我们引进跟多选择的可能,比如iPhone SDK放到CO
42、TS中作为一个新的领域。参考文献1 S. M. Dorman, “Video and computer games: effect on children and implications for health education,” Journal of School Health, vol. 67, no. 4, pp. 133138, 1997.2 M. Prensky, “Digital game-based learning,” Computers in Entertainment, vol. 1, pp. 2124, 2003.3 J. Blow, “Game developmen
43、t: harder than you think,”Queue,vol. 1, pp. 2837, 2004.4 K. Sung, C. Hillyard, R. L. Angotti, M. W. Panitz, D. S.Goldstein, and J. Nordlinger, “Game-Themed Programming Assignment Modules: a pathway for gradual integration of gaming context into existing introductory Programming Courses,”IEEE Transac
44、tions on Education,vol.54,no.3,pp.416427, 2010.5 A. I. Wang and B. Wu, “An application of a game development framework in higher education,”International Journal of Computer Games Technology, vol. 2009, no. 1, Article ID 693267, 12pages, 2009.6 B. A. Foss and T. I. Eikaas, “Game play in engineering
45、educationconcept and experimental results,”International Journal of Engineering Education, vol. 22, no. 5, pp. 10431052,2006.7 G. Sindre, L. Natvig, and M. Jahre, “Experimental validation of the learning effect for a pedagogical game on computer fundamentals,”IEEE Transactions on Education,vol.52,no
46、.1,pp.1018, 2009.8 A. I. Wang, “An evaluation of a mobile game concept for lectures,” inProceedings of the IEEE 21st Conference on Software Engineering Education and Training, 2008.9 A.I.Wang,T.fsdahl,andO.K.Mrch-Storstein,“LECTUREQUIZa mobile game concept for lectures,” inProceedings of the 11th IA
47、STED International Conference on Software Engineering and Application (SEA 07), 2007.10 M. S. El-Nasr and B. K. Smith, “Learning through game modding,”Computers in Entertainment, vol. 4, no. 1, pp. 4564,2006.11 G. Lukas, “Uses of the LOGO programming language in undergraduate instruction,” inProceedings of the