Blending an Android development course
with software engineering concepts.
Abstract The tremendous popularity of mobile computing and Android in particular has attracted millions of developers who see opportunities for building their own start-ups. As a consequence Computer Science students express an increasing interest into the related technology of Java development for Android applications. Android projects are complex by nature and relatively large software products while their development calls for the application of established software engineering practices and tools. However, most software engineering courses focus on lsquo;conventionalrsquo; software development for desktop or web applications. In this paper we report on the design, implementation and assessment of a novel short course aiming at bridging the gap between software engineering and Android development. The goal is to demonstrate the need for applying software engineering principles on Android development as well as to emphasize that writing software for mobile devices should be regarded as an equally serious programming activity. The proposed course covers design principles, patterns, metrics, refactorings and collaborative software development. The course has been delivered to three groups of undergraduate and postgraduate students at two different institutes. The course has been evaluated: a) by performing a student satisfaction survey, b) through summative assessment of studentsrsquo; performance, c) by investigating whether the proposed course modified the studentsrsquo; career interests and d) by employing assessment by peers based on rubrics. The results indicate that such a short course is capable of increasing studentrsquo;s interest on Android development as well as their awareness of the importance of software engineering concepts on mobile application software development.
1 Introduction
Today Android is a very common development platform and its share is continuously rising (Whitney 2012). According to Gartner (2013) tablet shipments has grown by 53.4 % in 2013 with shipments reaching 184 million units, with Android accounting for 38 % of shipments. All device shipments excluding PCs for 2013 were 2.2 billion. From these figures it can be easily concluded that this is a vast market and that a very large percentage of mobile devices of any kind (smartphones, mobile phones, tablets etc.) are operated by Android OS. In the same study it is stated that “hellip;the mobile phone market will continue to experience steady growthhellip;” and “hellip;Android will remain the leading device OShellip;”. “Google Play”, the Androidrsquo;s Software Application Market reached over 1 million apps on July 2013 with over 50 billion downloads (Victor 2013).
A direct consequence of the tremendous proliferation of mobile devices is an analogous exponential rise in the demand for skilled mobile application developers. Various studies emphasize the continuous shortage of skilled computer science graduates needed to fill vacancies in the mobile applications market. According to the European Vacancy and Recruitment Report for 2012 (European Commission 2012), mobile application development has been identified as one of the “top bottleneck occupations” (i.e., occupations with increased demand and limited supply) in the field of Information and Communication Technologies. According to another study of Mulligan and Card in 2014 (Mulligan and Card2014), developers of applications targeting mobile and social platforms took in $23.7 billion in 2013 with a forecast of $85.3 billion for 2018.
To address this shortfall, tertiary education institutes around the world are adapting their curricula and accommodate courses on mobile application development, with Android being the OS of choice, mainly because development is based on the Java programming language, which constitutes a core course in most universities. Nevertheless, successful mobile application development requires a background not only in Android specifics pertaining to the Android libraries and the limitations imposed by mobile devices, but also in more general software engineering knowledge. Software projects aiming at the development of competitive mobile applications require the application of various principles and techniques in order to achieve high-quality, maintainable, reusable, testable and comprehensible software. An overview of software engineering research issues related to the emerging field of mobile application development can be found in the study by Wasserman (2010).
Computer Science and Information Technology curricula include software engineering as a key Knowledge Area (ACM 2013) and as a result most computer science related departments offer at least one “conventional” software engineering course. By conventional we mean that in most cases the introduced concepts are exemplified on either desktop applications standing individually on a personal computer, and recently on web applications employing server and/or client side development. To the best of our
剩余内容已隐藏,支付完成后下载完整资料
将Android开发与软件工程概念相结合
摘要
移动计算和Android的巨大流行已吸引了数百万开发商,他们看到了建立自己的初创企业的机会。因此,计算机科学的学生表示越来越感兴趣Java开发的Android应用程序的相关技术。 Android项目本质上是复杂的,相对较大的软件产品,而它们的开发需要应用已建立的软件工程实践和工具。然而,大多数软件工程课程侧重于用于桌面或Web应用程序的“常规”软件开发。在本文中,我们报告了一个新的短期课程的设计,实施和评估,旨在弥合软件工程和Android开发之间的差距。目标是证明在Android开发中应用软件工程原理的必要性,并强调用于移动设备的编写软件应被视为同样严肃的编程活动。提出的课程包括设计原则,模式,度量,重构和协作软件开发。该课程已交付给两个不同研究所的三组本科生和研究生。课程已经过评估:a)通过执行学生满意度调查,b)通过对学生的表现进行总结性评估,c)通过调查所提议的课程是否修改学生的职业兴趣,以及d)通过使用基于量表的同学的评估。结果表明,这样的短的课程能够增加学生对Android开发的兴趣,以及使他们意识到软件工程概念对移动应用软件开发的重要性。
1简介
今天Android是一个非常常见的开发平台,它的份额不断增加(惠特尼2012)。根据Gartner(2013),平板电脑出货量在2013年增长了53.4%,出货量达到1.84亿台,Android占出货量的38%。 2013年以外的所有设备出货量为22亿件。从这些数字可以很容易地得出结论,这是一个巨大的市场,并且任何类型的移动设备(智能手机,手机,平板电脑等)的很大百分比是由Android操作系统。在同一研究中,它表示“...手机市场将继续经历稳步增长...”和“... Android将保持领先的设备操作系统...”。 “Google Play”,Android的软件应用市场在2013年7月达到了超过100万个应用,下载量超过500亿(Victor 2013)。
移动设备的巨大增长的直接后果是对技术移动应用开发者的需求指数的类似的上升。各种研究强调了填补移动应用市场空缺所需的熟练计算机科学毕业生的持续短缺。根据2012年“欧洲空缺和招聘报告”(欧洲委员会2012年),移动应用程序开发被确定为信息通信技术领域的“顶级瓶颈职业”之一(即需求增加和供应有限的职业) 。根据Mulligan和Card在2014年的另一项研究(Mulligan和Card 2014),面向移动和社交平台的应用程序开发人员在2013年获得了237亿美元,2018年的预测为853亿美元。
为了解决这个缺陷,世界各地的高等教育机构正在调整他们的课程,并容纳移动应用程序开发课程,Android是首选操作系统,主要是因为开发是基于Java编程语言,这是大多数大学的核心课程。然而,成功的移动应用程序开发需要一个背景,不仅在Android细节关于Android库和移动设备施加的限制,而且在更一般的软件工程知识。旨在开发竞争性移动应用的软件项目需要应用各种原理和技术,以实现高质量,可维护,可重复使用,可测试和易于理解的软件。 Wasserman(2010)的研究中可以找到与移动应用程序开发的新兴领域相关的软件工程研究问题的概述。
计算机科学与信息技术课程包括软件工程作为一个关键的知识领域(ACM 2013),因此大多数计算机科学相关部门提供至少一个“常规”软件工程课程。通常,我们意味着在大多数情况下,引入的概念被示例为在个人计算机上单独站立的桌面应用程序上,以及最近在使用服务器和/或客户端侧开发的web应用程序上。据我们所知,很少有将软件工程概念引入移动软件开发课程的课程。同时,用于特定平台的软件开发经常被感知和教导为纯技术技能,没有与软件工程的直接连接。结果是,即使是有经验的移动应用程序员也不会接受或应用软件工程实践。此外,Android开发的诱惑可以作为一种工具,以一种有吸引力的方式将软件工程概念传达给计算机科学生。
在本文中,我们介绍一个短期课程,旨在说明在Android应用程序开发的上下文中选定的软件工程原理,概念和技术。目标是展示用于Android应用程序的Java编程(通常被认为是一个孤立的活动)可以大大受益于应用软件工程最佳实践。课程结构围绕一个基本的Android应用程序,通过讨论可以通过适当的技术或指南,如设计原则,设计模式,重构,软件度量,测试,版本控制系统等来解决的限制或机会逐渐增强。
拟议课程已在希腊塞萨洛尼基马其顿大学和沙特阿拉伯利雅得技术培训师学院提供给三个不同的学生群体(两组本科生和一组研究生)。学生有关于Java编程语言,Android开发和软件工程的混合先验知识,允许评估拟议课程的弱点和优势。该课程由定制的内容管理系统(在第4节中描述)提供支持,其可以基于先前的经验以顺序方式或从适当的基点开始。已经执行了使用多个数据源来评估所提议的课程的尝试。特别是,课程以四种方式进行了评估,其中前三个对应于评估培训计划的前三个级别(Kirkpatrick和Kirkpatrick 2006)。为了调查学生的满意度和他们对课程内容的价值的看法,调查已经提供了捕获先前的知识水平和对课程的不同方面的意见。与其他引入新课程的方法类似,我们还在课程结束时使用总结性评估来调查学习目标的实现情况。作为评估课程的第三种方式,我们研究了该课程是否已经改变了学生对与Android开发和软件工程相关的职业的兴趣。最后,我们征求了专家在教育学的意见,使用标准化的课程设计和实施课程。本文的其余部分概述如下:Android开发和软件工程教育的相关工作的概述提供了2.第3节介绍拟议课程的大纲;详细的结构以及在每个步骤引入的软件工程概念。支持拟议课程的相关网页在第4节中介绍。第5节重点介绍课程的评估,提出应用的方法以及每种评估类型的结果。第6节概述了关于实施拟议课程的主要挑战,遵守课程指南以及解释评估结果的讨论。最后,我们在第7节结束。
2相关工作
正如已经提到的,尽管Android操作系统的普及和普及,但是在全球大多数高等教育机构中,Android中的应用程序开发教学仍然非常有限:“...鉴于平台(Android)的新颖性,教科书目前存在教授Java或任何其他高级课程使用Android示例。此外,大多数Java语言课本是用于CS1 / CS2课程。“(Riley 2012)。
移动设备在计算机科学课程中的集成已经在Mahmoud(2008)的研究中进行了讨论,该研究强调需要考虑受限资源(小屏幕,有限内存等)的重要因素。此外,作者强调了为“正常”PC和移动设备编译应用程序的差异。据称,在介绍性编程课程中尽早引入移动设备和移动应用程序开发的基础是必要的。在所述课程的上下文中,学生被要求开发两个版本的抵押计算器应用程序:一个用于桌面和一个用于移动平台,因此他们可以区分两种方法之间的差异(和相似性)。
在Akopian等人的工作中采用了不同的方法。 (2013),作者依靠已经开发的模板(Android程序)在短期内教授Android开发的基本原理。学生被要求通过修改现有代码来改变程序中的特定方面。问题和活动已经非常仔细地结构化和解释,以引导学生到需要改变的变量或代码片段的正确位置。通过结构化彩色的例子,学生的活动正在慢慢升级到最困难的。根据一门课程和一门课后调查,学生的满意度已经实现,同时坚信,通过课程已经获得基本技能。
虽然该课程的结构与拟议的Android短课程相似,但应该提及的是,它已设计用于电气工程部门,在编程课程上有很大的时间限制。因此,其内容相当简单,更重要的是,它没有解决在Android开发环境中的任何软件工程问题。
由Heckman等人进行的评价的证据(2011)意味着使用更先进和最先进的技术(如移动设备)来教授低级编程课程可能是有益的。特别地,作者使用Android操作系统平台在弗吉尼亚大学和北卡罗来纳州立大学教授Java和软件工程课程。虽然没有提供有关课程的细节,但目标与本文提出的课程类似,即使用Android来教授Java(如抽象)和软件工程概念(如设计,测试和模式)。
Petkovic et al。 2006年(Petkovic等人2006年)声称,软件工程的实践教学也应该侧重于团队合作,沟通能力和组织问题,以反映真实软件开发项目的全球化和开源方面。作者建议学生应分为四到六人的小组,以模拟现实生活中的软件开发,并承担通过五个里程碑构建一个网络应用程序的任务。该课程还强调了在没有面对面会议的情况下进行协作的必要性,为此,使用版本控制系统至关重要。
他们工作的主要动机是,过程,团队合作和沟通的传统课堂教学与主要最终项目,密集教师互动以及真实软件生命周期的现实模拟的结合是至关重要的。在计算机科学教育界早期已经认识到合作学习的优点,学生在小组中一起工作,增强对方的学习能力(Tenenberg 1995)。相同的信念由当前工作的作者共享,并且在所提议的课程的设计期间被考虑。在我们的例子中,学生也被分成小组,如(Petkovic et al。2006)所描述的,除了他们被单独留下来形成小组。这种方法似乎更适合阿拉伯语或希腊文化,在那里学生往往倾向于他们之间的现有债券。
Hu等人已经讨论了基于Android设计智能手机软件开发课程的挑战。 (2010)。本文介绍了一个完整的学期课程,重点是基础平台:课程的前两部分包括智能手机及其操作系统的介绍。接下来的三个部分是介绍Android开发环境,而只有第七部分是致力于软件开发。作者承认三个设计原则,第二个说明教学内容应该强调实践而不是理论,第三个提到课程内容应该满足行业的需要。作者提到的一些主要挑战和在拟议课程的教学期间也面临着课程的时间,需要花费在讨论操作系统的细微差别和特殊的以Android为中心的可视化,移动操作系统的不断变化的景观和不可避免的连续变化的Android插件,库,版本等。手册中提出的短期课程是根据IEEE计算机学会计算课程联合任务组和计算机协会(ACB)(LeBlanc和Sobel 2004),其中制定了一套有效教育活动的指导方针。这些准则强调需要专注于作为软件工程师开始实践所必需的专业问题,学生需要完成涉及单个工作的任务以及需要同行之间协作的任务。
3本课程
3.1学习成果和课程结构
拟议的课程(可以在高级本科或研究生课程中提供)旨在在Android开发的上下文中介绍软件工程概念和技术。如果学生有这两个领域(软件工程和Java / Android开发)的背景,目的是突出移动应用程序开发可以受益于采用软件工程课程中学到的最佳实践。如果学生缺乏任何相关领域的背景,该课程也可以作为相应主题的介绍性研讨会,因为它包括理论方面和实验室活动。
短期课程与ACM(2013年)计算机科学本科课程的2013年课程指南一致,其中基于平台的开发(PBD)已升至计算机科学知识体系中的知识领域(KA)。指南建议,应提供选修课(在编程互动系统领域),涵盖特定编程范式和移动开发的需要,这些被指定为“高需求”课程。在ACM报告中,注意到,基于平台的开发作为关于应用编程接口(API)或受限环境的开发的一般技能与诸如软件开发基础(SDF)的其它知识领域直接相关。因此,移动开发和软件工程之间的关系是深刻的。
根据建设性对齐方法(Biggs和Tang 2011),重要的是开始推理计划课程旨在实现的结果,然后将教学和评估策略与明确说明的结果相一致。学习成果是学习者在完成课程,课程或整个课程后应该知道,理解和/或能够演示的陈述。与教学目标或目标相比,结果提供了更精确,更清晰和更容易撰写的优势(Kennedy等人2006)。
我们将所建议的短期课程的学习成果制定如下,将其放置在修订的Bloom分类法(Krathwohl 2002)的适当知识和认知过程维度中:表1
表格1 根据修订的Bloom分类法的课程学习成果
知识维度 |
认知过程维度 |
|||||
1记忆 |
2理解 |
3应用 |
4分析 |
5评价 |
6创新 |
|
A事实语言 |
(1) |
|||||
B概念知识 |
(1) |
(2) |
(3) |
|||
C程序性知识 |
(2) |
(3) |
||||
D元认知知识 |
说明将软件工程实践应用于Android开发的好处。
在Android应用程序中应用设计原理和设计模式。
识别和解决Android应用程序中的设计问题。
有关课程的知情选择必须清楚地定义所需的信息和通信技术(ICT)技能,除了基本的知识领域和学习成果。 可用于此目的的工具是信息时代技能框架(SFIA),其提供6个类别和19个子类别,包括总共96个ICT专业技能(SFIA基金会2015)。 这些技能的定义相当普遍,独立于基础知识领域,以便它们可以转移到不同的ICT领域/学科。 除了一般定义外,SFIA还在以下7个职责级别(每种情
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[138864],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。