上社交应用和游戏应用来比较学习软件体系结构.docx
- 文档编号:8268483
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:221.44KB
上社交应用和游戏应用来比较学习软件体系结构.docx
《上社交应用和游戏应用来比较学习软件体系结构.docx》由会员分享,可在线阅读,更多相关《上社交应用和游戏应用来比较学习软件体系结构.docx(17页珍藏版)》请在冰豆网上搜索。
上社交应用和游戏应用来比较学习软件体系结构
通过开发Android平台上的社交应用和游戏应用来比较学习软件体系结构
1.引言
电脑游戏和视频游戏非常受儿童和青少年的欢迎,在年轻人的文化发挥了突出的作用[1]。
现在游戏可以在技术丰富的配备了笔记本电脑,智能手机,游戏机(移动和固定),机顶盒,和其他数字设备的环境中运行。
从这一现象,人们相信将年轻人对游戏的内在动机与教育内容和目标结合就会变成Prensky称之为“以数字游戏为基础的学习”的学习方法[2]。
青年学生生活的游戏中除了丰富的外观,游戏开发技术已经成熟,并且越来越先进[3]。
基于现有的各种游戏开发环境,游戏开发过程中的全部责任可以分为几个的专家领域和角色,如游戏程序员,3D模型的创造者,游戏设计师,音乐家,漫画家,剧作家,等等。
游戏内容与技术相结合的过程可以通过游戏引擎和使用网络上的各种用户和专家社区的可用信息得到简化。
例如,微软的XNA游戏开发工具包提供的游戏循环函数绘制及更新游戏内容,而且还提供了方便的游戏开发组件来加载不同格式的图形,音频和视频。
这使得游戏迷们如无论有没有编程背景的学生修改现有的游戏或开发新游戏。
他们可以用这些游戏创作工具实现自己的游戏概念设计,学习发展技能和相关知识,积累相关的实际经验。
在这种情况下,不但游戏可以用于学习而且通过激发任务机制,游戏开发工具可以用来研究计算机科学(CS),软件工程(SE),和游戏编程相关主题。
一般来说,游戏可以用三种方式集成在教育中[4,5]。
首先,游戏可以用来代替传统的练习,鼓励学生把额外的努力用来做练习,给老师或助教一个实时地监控学生是如何练习的机会[6,7]。
第二,游戏可以作为一个讲座的一部分来促进学生的参与,增加学生的动力[8,9]。
第三,将要求学生们修改或开发游戏作为使用游戏开发框架(GDF)学习CS和SE方面技能的课程的一部分。
我们把后者的学习方法为以游戏开发为基础的学习(GDBL)。
GDF表示可以用来开发或修改游戏,例如,该工具包的游戏引擎,游戏编辑器,或游戏(模拟)平台,甚至任何集成开发环境(IDE),如VisualC++,Eclipse和AndroidSDK,J2ME,因为所有的人都可以用来开发游戏。
本文重点研究学生通过在Android平台开发游戏应用学习软件体系结构和在Android平台开发社交应用(例如,天气预报,聊天软件)学习软件体系结构的相似点和不同点。
将游戏开发放到CS或者SE课程中的动机是利用学生对游戏及游戏开发的迷恋来激发他们通过该项目更多更好的学习课程材料。
2.相关工作
本节描述了GDBL方法在软件工程领域的使用的研究背景和以前的结果。
2.1研究背景
最早的类似的通过在游戏的环境中编程来学习的应用在20世纪70年代早期。
Logo语言[11],龟图形,是一种最古老的用来介绍计算概念给初学者的图书馆。
这个概念是基于一只可以在2D屏幕上移动的“海龟”,该“海龟”用可设置开关屏幕的画笔画就,因此,可能会留下龟运动的痕迹。
编程使该“海龟”画不同的花样,这可以用来介绍一般的计算技巧,如程序操作,迭代,递归。
此外,在1987,Micco学术性的提出了一个写井字游戏的使用[12]。
后来,其他的研究已经使用专业游戏编程工具如StageCastCreator[13],Gamemaker[14],Alice[15]和NeverwinterNights[16]。
此外,文章[17]提出了使用手机游戏开发作为激励工具和计算机课程的学习背景调查。
他们的调查表明游戏编程和计算机科学领域的游戏开发之间的关系--游戏发展可以用在学习人工智能(AI),数据库,计算机网络,SE,人机交互,计算机图形学,计算机体系结构,算法,编程和操作系统。
这些研究表明,游戏制作和技术的编程技巧得到激励以及故事性的发展。
制作游戏激励和开发评书以及技术的编程技巧的。
制作游戏的任务其性质在目的上不尽相同---因此搭建环境并平衡游戏角色这些事情由学习者来承担。
最近的游戏编程工具包往往具有比Logo语言更强的视觉效果,无论是因为这个原因,或者因为他们有一种可视化的编程语言,或两个原因同时的作用,使得设计者能够轻松创建图形游戏。
这种变化使学习者的重点远离了低级编程,而是强制往其他角色如设计师或软件开发者转变。
因此,我们通过实验研究了如何将GDFS用于教育,探讨传统的授课进化为动态的,合作的,和对当前技术丰富的环境下的学生有吸引力的授课。
然而,这种说法有待进一步相关理论,应用经验,评价结果和经验证据的支持。
这是一个分享我们的经验和实证结果在GDBL领域采用Android软件体系结构课程的动机。
2.2课程和项目设置
挪威科技大学(NTNU)(课程代码TDT4240)的软件体系结构课程的教学方式和其他大多数大学不一样,因为学生也必须在项目中实现他们自己设计的软件体系结构。
这样做的动机是为了让学生了解架构和实现之间的关系,并能够真正的对体系架构和实施是否符合应用程序指定质量要求进行评价。
在软件体系结构课程中的架构项目和其他软件工程课程项目的相似,只是软件体系结构课程中项目都是从软件体系结构的角度进行。
在整个项目中,学生们必须根据指定的项目使用的软件体系结构技术,方法和工具来成功学到东西。
软件体系结构的项目包括以下几个阶段:
(i)COTS(商用成品)练习:
学习相关技术并用来开发一个简单的游戏。
(ii)设计模式:
学习如何通过改变现有系统中的应用设计模式来应用设计模式。
(iii)需求和体系结构:
列表功能,质量的要求和对游戏的软件体系结构的设计。
(iv)架构评估:
使用的架构权衡分析法(ATAM)[18-20]评价方法对项目的软件体系结构方面的质量要求进行评估。
(v)实施:
做详细的设计,并在新建的架构和根据评估结果做出修改的基础上实现该游戏。
(vi)项目评估:
使用事后分析法(PMA)[21]将项目作为一个整体进行评估。
在项目的前两个阶段,学生将独立完成他们的工作任务。
在3–6阶段,4-5个学生组成一个团队,并在自己的团队中完成相应的工作。
同时,在项目进行期间,学生将专注于一个固定的初级指定质量属性。
对于中等质量属性,学生可以选择他们喜欢的质量属性。
学生花大部分时间在实施(六周),但也鼓励他们在早期阶段开始实现该游戏以测试他们的架构选择(增量开发)是否合理。
在实施阶段,学生通过多次迭代不断扩展,完善软件体系结构使其得到改进。
2.3早期的成果
此前,该项目的目标是开发Java方面的Khepera机器人模拟器的华盛顿州立大学的机器人控制器(机器人)[22],该机器人控制器着重于一些指定的质量属性如可用性,性能,可修改性,或可测性。
开始时,学生们被要求编写的机器人控制器能控制一个机器人在一个迷宫中移动,并在迷宫中收集四个球,并把它们带到迷宫中一个固定的位置中。
在2008年,学生们可以在机器人控制器项目和游戏开发项目之间进行选择。
两种项目的过程,成果,和对项目的评价是一样的--只是领域不一样。
在游戏项目中,学生们被要求使用微软XNA框架和C#语言开发一个游戏。
最后,对软件体系结构课程进行评价[23,24]。
评价是基于一个项目的调查数据,学生的项目可交付成果,和其他可访问的课程信息。
研究的主要结论是,游戏开发项目可以成功地如果我们考虑机器人作为评价基准用来教软件体系结构。
整合我们在2008年运行软件体系结构课程的游戏项目的经验,在2010-2011年期间我们软件体系结构课程项目中增加了一个COTS-Android的项目作为给学生的一个新的选择。
学生们现在可以在除了在Java机器人项目和XNA游戏项目之间进行选择,还可以在Android平台开发一个社交应用程序或游戏。
由于COTS和所选择领域的独立性,学生们在项目过程中必须专注于相同的软件体系结构问题,并按照相同的模板编程。
游戏和社交Android项目的引进,使我们得以比较学生在项目所涉及的领域如何影响学习和项目经验以及COTS的独立性。
在下面的章节中详细说明。
3研究方法
本节描述我们使用Android开发作为软件体系结构中的项目的实验中获得的相关数据的研究方法。
3.1研究目的
本文重点研究使用相同的COTS但具有不同的发展领域来探讨不同领域是否产生不同的输出。
在我们以前的研究,GDBL结论的有效性是基于不同的COTS机器人和XNA。
本文不探讨XNA和Java开发的机器人控制器开发的游戏,只注重Android平台的社会应用和游戏应用的开发。
我们的评估包括五个主题:
选择域分布,学生对项目感知,项目交付的代码质量和复杂性,学生的努力和成绩,获奖项目等级。
3.2GQM方法
社会和游戏项目的比较应该有助于发现差异,揭示在Android平台上引入项目的影响。
这个评价是一个模拟试验,而不是一个受控制的试验。
采用的研究方法是基于目标问题度量方法(GQM)[25],我们首先确定研究目标(概念层面),然后定义一组研究问题(操作层面),并描述了一套指标来回答研究问题的定义(数量级)。
在我们的例子中,回答问题的研究使用的指标的定量和定性数据共同决定的。
表1:
展示了用于分析软件体系结构课程的游戏开发项目的GQM方法。
目标
分析
软件开发项目
为了
在同一COTS社交应用与游戏应用领域比较
关于
两个领域的项目的差异性和有效性
看待的角度
研究员和教育家
上下文索引
在软件体系结构课程的学生
问题
Q1:
如何看待选择选择一个Android社会项目的学生和选择Android游戏项目的学生他们的选择是否有任何差异?
Q2:
在软件架构设计的学生做一个Android的游戏项目与学生做一个Android社会项目有什么不同?
Q3:
在项目实施工作中的学生做Android游戏项目与学生做一个Android社会项目是否有任何差异?
Q4:
学生在性能上做一个Android的游戏项目与做一个Android社会项目有什么区别?
Metric
M1:
选择游戏项目与社会项目的学生数量。
M2:
问卷调查,5级李克特量表:
强烈不同意
(1),不同意
(2),中立(3),同意(4),强烈同意(5)
M3:
项目报告
M4:
源代码文件
M5:
花费的时间
M6:
项目得分
3.3.研究步骤
当学生开始的项目,并按照项目的阶段进行时,他们应该报告他们花在项目的每个阶段的时间。
前两个阶段让学生单独或成对熟悉COTS、架构和设计模式。
该项目的主要工作是在项目3-5阶段,包括需求说明,架构设计,架构评估,项目实现和测试。
学生每个阶段要上交自己的成果,这由课程负责人评估和反馈,在最后交作品之前使作品不断改善。
在5阶段的结束,学生们会上交一个最终的作品,该作品是经过课程负责人评估和分级的。
完成5阶段后,学生回答一个问卷调查,主要集中在学生如何看待该项目。
在6阶段,学生必须对其进行项目的事后分析作为一个整体来反映他们在项目中取得的成绩和挑战。
4研究结果
在2010年和2011年,学生可以选择使用三个COTS做项目:
机器人(Java),XNA(C#),和Android(Java)。
学生选择的COTS结果展示在图1中,其中36名学生选择了Khepera机器人(19%),55名学生选择了XNA(27%),和102名学生(54%)选择了Android。
选择Android的学生中,58名学生(57%)选择了社会应用,44名学生(43%)选择了游戏应用。
从学生选择中我们看到,51%的人选择了游戏开发领域,30%的人选择了社会应用,19%的人选择机器人控制器。
图1:
软件架构项目类型的选择分布图
图1的数据清楚地表明,大多数学生喜欢游戏开发相比其他领域。
Android是目前最流行的COTS,我们相信这是由于开发商其开放性,Java的开发,有吸引力的设备,创新的特点和发展,和一个通过Android标记共享开发的应用程序的新方式。
在项目的第一阶段,学生们被要求填写一份调查问卷,选择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社交领域也一样。
但这不是机器人领域的情况。
下面的小节重点分析在以下四个方面是否社交领域和游戏领域不同而产生明显不同的输出:
(1)学生对项目的感受,
(2)软件体系结构的设计复杂度,(3)学生在项目中的实现成果(4)学生在项目的评分。
4.1学生对项目的不同感受。
学生们完成了他们的软件体系结构设计一个星期后,我们做了一个关于项目的调查。
本次调查的目的是揭示在学生对组队完成在Android平台上的社交应用项目与组队完成相同COTS的游戏项目的感受可能存在的差异。
在调查报告中让学生回想该项目对他们学习软件体系结构有何帮助。
该调查定义的假设如下。
H0:
学生对Android平台上的社交应用或者游戏应用来作为软件体系结构项目的感受没有任何差异。
我们将采用Kruskal-Wallis检验假设[26],因为它是群体之间的人口平均数测试的平等的非参数方法[24]。
此测试通常是
(1)用户不能假设一个正常的人口
(2)两组样本大小是不同的。
表2展示Kruskal-Wallis检验对报表PS1–PS6检验的结果。
44个游戏项目的学生中38个学生做了问卷,58个社会项目的学生中的35个学生做了问卷。
问卷中的每个项目是通过分配一个从1到5的5个程度值的答案,其中1表示非常反对,5表示非常同意。
表2:
Wilcoxon测试PS1-PS11报表
陈述
COTS
平均
中点
标准偏差
P
PS1:
从ATAM上讲我发现它很难评价其他组的结构?
Game
3.45
4
1.06
0.178
Social
3.77
4
0.91
PS2:
我发现很难把重点放在我们分配的质量属性上
Game
3.05
3
1.09
0.024
Social
3.57
4
0.85
PS3:
我发现很容易集成建筑或设计图案
Game
3.21
3
0.93
0.332
Social
2.94
3
1.03
PS4:
我花了更多的时间有关技术问题,而不是建筑事宜
Game
3.71
4
1.20
0.175
Social
4.06
4
1.03
PS5:
在项目过程中,我学到了很多关于软件架构的知识
Game
3.50
4
0.86
0.552
Social
3.31
4
0.99
PS6:
如果我能及时回到过去的话,我会选择另一个项目
Game
1.13
1
0.34
0.289
Social
1.20
1
0.41
从测试结果中,问卷调查的回答中显著性差异(P≤0.05)最低的是PS2(P=0.024)。
我们得出这样的结论:
Android游戏和Android社交应用之间显著的差异在于学生对项目中困难的感知的重点集中在项目指定的质量属性上。
Android游戏在量表的得分是3分,而Android社交应用的得分为4分。
这表明,Android游戏项目的学生对PS5表示中立的态度,但Android社交应用项目的学生对PS5倾向于同意。
一个可能的解释是,一个游戏的质量属性,如可修改性或可测性,,很容易让学生联想,并抓住学生的注意力使学生去深入的了解它。
但社交应用程序可能更多的固定印象在学生的生活,故激发学生去思考的影响没有游戏的深刻。
其他的报表在学生感知方面没有显著差异。
此外,即使其他两组的P值无显著性差异,PS1和PS4的平均值还表明学生从游戏项目中发现评价其他组在ATAM方面的架构没有那么困难,比社交应用项目的学生在技术问题上花费更少的时间。
此外,PS6:
学生必须回答如果他们能够回到过去的时间,他们是否会选择另一个项目。
图2展示了更详细的统计信息。
图2显示,相比选择游戏项目的学生的比例(13%)选择社交应用项目的学生中有较高比例的学生,会选择另一个项目(20%)。
总的来说,调查显示最显著的差异是选择游戏项目的学生更注重软件的质量属性。
报表获得的P值(P1,P2,P4)显示选择游戏项目的学生比选择社交应用项目的学生更积极的反馈他们对自己项目的感受。
图2:
关于PS6:
如果你能回到过去你会选择相同的项目吗
4.2软件体系结构设计上的差异
凭经验是很难评估一个软件的架构,但我们选择通过设计模式的学生选择人数,主要模块/类的软件体系结构的逻辑视图的数量,和体系结构层次结构的数目来评估一个软件体系结构的好坏。
我们承认,这样比较会有很多误差源,因为这两个领域差别太大。
然而,在本课程的重点是软件设计模式的应用,从逻辑视图上主要对足够详细的软件体系结构提出不同的看法。
实验数据应强调项目的两种类型项目之间的任何差异。
实验数据通过阅读和分析12个游戏项目小组和16个社交应用项目小组最终的项目报告收集而来。
4.2.1设计模式的使用
表3是对软件体系结构和设计模式应用于社交应用项目和游戏项目数量的描述性统计。
表3的结果表明,设计模式在两种类型的项目中的使用有一些差异。
表4展现的Kruskal-Wallis检验的结果表明设计模式在的两个不同的项目类型中实现的数量在统计上无明显差异。
表4提出设计模式在的两个不同的项目类型中实现的数量在统计上无明显差异。
根据阅读项目报告,图3给出了设计模式在社交项目小组和游戏项目小组使用的分布。
这些图表显示,在这两种类型的项目中Observer模式是最受欢迎的。
此外,AbstractFactory模式和State模式在游戏项目小组中排名前三的模式,社交应用项目小组中排名前三的模式还有集合模式和模板模式。
游戏项目比社交应用项目在应用的体系结构和设计模式方面有更多的多样性。
例如,游戏项目使用的八种设计模式相比社交应用项目的六种设计模式,如图3所示。
即使没有显著差异,但P值接近0.1。
在表中,在他们的项目4implies游戏队使用的设计模式中,这可能会导致游戏项目的使用比在全面统计图3所示的社会项目的更多类型的模式。
图3:
游戏和社会项目的设计模式的使用分布
表3:
使用设计模式
平均
标准偏差
最大
最小
设计模式
Game
2.67
1.92
7
1
Social
1.56
0.73
3
1
表4:
假设检验的数量采用的设计模式
假设
COTS
N
Median
P
无差异的设计模式数
Game
12
2
0.111
Social
16
1
4.2.2软件体系结构的复杂性。
体现软件体系结构的复杂性的两个指标[24]:
(1)在软件体系结构的逻辑视图描述的主要模块或类的数目;
(2)在软件体系结构的逻辑视图的层次结构的数目。
选择体现计算复杂性的逻辑视图的原因是,逻辑视图是给软件体系结构设计提供最好的概述的东西中主要的一个。
表5列出了主要模块/类的数量和社交应用项目和游戏项目中的软件体系结构的逻辑视图的层次结构的数目的统计。
表5表明游戏项目小组比社交应用项目平均接近4或者更多主要模块/类(28%),小于标准偏差。
此外,在游戏项目中的软件体系结构的层次数是社交应用项目中的软件体系结构的层次数的两倍。
表6给出了从Kruskal-Wallis检验得出结果,对软件体系结构的主要模块/类的数目和层次的数目。
两个检验都给出了p值(P<0.05)具体地说,试验表明,在软件体系结构中的主要类的数目和层次的数目在统计上有着显著的差异。
从这个结果,这意味着游戏项的软件体系结构比社交应用的软件体系结构要复杂;这可能是由于他们用更多的方式来实现他们的游戏项目导致这种差异。
表5:
测量软件体系结构的复杂性
主要模块的数/类
结构上的的水平数量
Game
Social
Game
Social
平均
14
9.7
3
1.75
标准偏差
4.9
6.6
0.6
0.77
最大
21
28
4
3
最小
7
3
2
1
表6-1:
假设检验架构的复杂性
假设
COTS
N
Median
P
没有数的区别主要模块/类
Game
12
14
0.021
Social
16
7
建筑水平在数量上无差异
Game
12
3
0.000
Social
16
2
4.3在项目中投入精力的差异。
要评估每个项目的学生投入的努力,需要两个指标作为衡量标准:
(1)花在项目上的时间
(2)软件体系结构、项目文件的大小和代码行数的多少。
4.3.1时间的花费
我们要求学生估计使用了多少小时去完成软件体系结构的项目的3–5阶段(核心项目的阶段)。
表7显示了每个小组给出的估计小时数。
根据每个小组投入的时间,我们使用Kruskal-Wallis试验对每个小组在项目花费的小时数进行了差异测试。
根据以前的研究成果,游戏项目小组和社交应用小组所花费的时间在统计上的并没有显著差异。
相反,在这两个项目花费的时间分布是非常相似的。
表7-1:
每队花在项目上的时间。
每队的时间(小时)
Game
Social
平均
334
338
标准偏差
133.7
114.7
最大
520
535
最小
110
183
4.3.2项目分析
此外,我们选择将项目的实现程度作为标准来对在项目过程中工作量的多少进行评估。
它可以提供一个良好的软件体系结构的复杂性和由此产生应用程序的实现[24]。
由于两个类型的小组都使用Android平台,在复杂性方面该领域具有可比性,我们期望找到实现效率上的差异。
在项目开发的过程中,他们可以免费的使用Android网络资源或者其他的开源库,这样可以节约编写代码实现设计好的软件体系结构的时间。
以下指标进行计算学生小组的工作量:
(1)源文件数(NOF);
(2)代码中的注释的数量(NOC);(3)源代码中不计空行和注释行的行数(LOC)。
表9给出了游戏项目小组和社交应用小组工作量的比较,表中只统计Java代码文件,外部库代码文件和资源文件将不统计到表中。
我们使用Kruskal-Wallis检验方法对实现两种不同的项目所得到的文件的数量和代码行数的差异进行了测试,表10显示了该测试的结果。
Kruskal-Wallis检验的结果表明,两种类型的项目的LOC在统计上的没有显著差异。
但P接近0.1。
表9的平均值表明游戏项目小组在项目进行过程中把更多的精力放在实施阶段,如编码,作注释,将结构代码放到多个文件。
从表7,8,9,10,我们可以发现游戏项目小组在相似的时间开销(334VS338)编写的代码比平均代码量几乎多三分之一(超过133%)。
这意味着游戏项目小组更高效,他们努力的编码,写注释,尽量在和社交应用项目小组类似的时间内开发出一个复杂的游戏软件体系结构。
表8-1:
假设花费小时
假设
COTS
N
Median
P
每队的时间支出无差异
Game
12
362
0.889
Social
16
334
表9-1:
架构项目实施的指标
NoF
NoC
LoC
Game
Social
Game
Social
Game
Social
平均
37
24
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 社交 应用 游戏 比较 学习 软件 体系结构
![提示](https://static.bdocx.com/images/bang_tan.gif)