E-mail:
Пароль:
Забыли пароль?

Разработка приложений для мобильных платформ iPhone, Android, BlackBerry как одно из возможных направлений обучения в высшей школе в рамках курсов компьютерных наук

Разработка приложений для мобильных платформ iPhone, Android, BlackBerry как одно из возможных направлений обучения в высшей школе в рамках курсов компьютерных наук

XI международная конференция «Информатика: проблемы, методология, технологии – 2011»

Плотников Василий

1. Введение

Последние несколько лет в мире наблюдается все большее распространение устройств на базе мобильных платформ. Появляются новые мобильные платформы. В настоящее время основная часть рынка поделена между несколькими мобильными платформами. С точки зрения различных аналитических агенств, наиболее активно среди них в ближайшие несколько лет будут развиваться iPhone, Android и BlackBerry.

По своей производительности мобильные устройства уже достигли уровня настольных компьютеров. Раньше к платформам, под управлением которых работали, например, мобильные телефоны, предъявлялись жесткие требования. Неотъемлемой частью мобильных платформ являлся набор приложений, тщательно отлаженных, протестированных производителем и загруженных на мобильное устройство вместе с самой платформой. Не была широко распространена загрузка сторонних приложений. Для новых типов мобильных платформ, напротив, загрузка сторонних приложений является одной из основных возможностей. Сторонние разработчики получили возможность создания и установки своих приложений на мобильные платформы. В то же время компанией Apple был создан новый механизм массового распространения мобильных приложений - App Store. Механизм оказался успешным и был взят на вооружение другими компаниями-разработчиками мобильных платформ. Этот механизм позволил сторонним разработчикам получать прибыль от создания и распространения мобильных приложений.

Сейчас в сегменте рынка мобильных приложений работают отдельные разработчики и группы разработчиков, непосредственно ориентированные на разработку мобильных приложений, а также IT-компании с многолетним опытом разработки программного обеспечения, которые открыли новое направление своей деятельности.

Разработка мобильных приложений во многих аспектах сходна с разработкой приложений для настольных компьютеров. В то же время разработка мобильных приложений ставит перед программистами новые задачи. К таким задачам, в частности, относятся более внимательное управление памятью мобильной платформы, учет ограниченного заряда батареи, а также учет возможной нестабильности беспроводного сетевого соединения.

Получение знаний по разработке приложений для мобильных платформ может быть интересно как с точки зрения применения в профессиональной деятельности, так и с точки зрения более глубокого понимания работы мобильного программно-аппаратного комплекса.

Мобильные устройства на базе новых мобильных платформ, в том числе смартфоны, становятся частью повседневной жизни. Они используются для общения. Наряду со стандартными возможностями мобильных телефонов, как-то: звонки, обмен текстовыми сообщениями через SMS или в социальной сети, - создаются приложения, интегрирующие функции обмена информацией, работающие одновременно с несколькими социальными сетями. Все активнее происходит обмен видеоинформацией на основе встраиваемых в смартфоны камер. В путешествиях оказывается очень востребована функциональность GPS-навигатора. Растет интерес к интеграции информации от GPS-навигатора смартфона в социальные сети. У разработчиков появляется возможность использовать собственные приложения в своей повседневной жизни, что позволяет им по-новому взглянуть на свой продукт. При обучении разработке мобильных приложений этот фактор может дополнительно мотивировать и увеличить интерес к процессу обучения.

2. Разработка мобильных приложений

Одной из первых тенденций, сопровождающих быстрое развитие мобильных платформ, стал перенос на них практически всех технологий, развитых для настольных компьютеров [1]. В разработке приложений наметились несколько направлений. Среди них стоит отметить игровые приложения, приложения для работы с социальными сетями и бизнес-приложения, ориентированные на документооборот в средних и крупных компаниях. По способу разработки выделились два основные вида приложений: "native" приложения и web-приложения. "Native" приложения создаются полностью на базе собственного API мобильной платформы. Web-приложения включают клиентское приложение, на основе небольшого количества "native" кода, получающее контент от удаленного серверного приложения и отображающее его с использованием стандартных web-технологий, в том числе HTML, Java Script. Удаленное серверное приложение может быть создано заново или может быть задействовано имеющееся серверное приложение с известным API.

Игровые приложения пишутся на "native" коде для достижения максимальной производительности. Для приложений, работающих с социальными сетями, создается клиентское приложение, использующее для получения данных стандартный API сервера той или иной социальной сети. Для разработки бизнес-приложений используется как "native" код, так и web-технологии.

При разработке мобильного приложения программист должен понимать, как его приложение использует память платформы. Несколько полезных подходов для уменьшения использования памяти при разработке мобильных приложений представлены в статье "On Mobile Java Memory Consumption" [2]. Указанные подходы в первую очередь ориентированы на платформу Java ME. Однако они могут быть распространены и на другие мобильные платформы. Подходы включают отказ по возможности от использования маленьких классов в одном коде, так как классы требуют дополнительной памяти, и, когда необходим отдельный обработчик команд для элемента пользовательского интерфейса, рекомендуется использовать основной объект в качестве обработчика, даже если требуется дополнительная логика. Другой подход заключается в том, чтобы избегать зависимостей между классами и подбирать размер таких структур данных, как векторы и строки. Необходимо уделять внимание наследованию и убеждаться, что любой класс, который наследует методы, использует эти методы. Все эти подходы способствуют увеличению производительности мобильного приложения. Их применение будет содействовать формированию обучаемых как более компетентных программистов.

Другой проблемой для мобильных устройств является большое разнообразие их экранов и разрешений. Практическое решение для создания "гибкого" графического пользовательского интерфейса для платформы Java ME показано в статье "Better MIDlets by design" [3]. Оно основано на уделении внимания тому, как пункт меню отображается на экране при использовании высокоуровневого API платформы Java ME, а в случае использования низкоуровневого API требует большего времени тестирования на различных устройствах.

3. Мобильные платформы

В настоящий момент среди достаточно широкого разнообразия мобильных платформ на мировом рынке выделяются iPhone, Android и BlackBerry. Платформы iPhone и BlackBerry разрабатываются и поддерживаются на рынке в основном только компаниями-разработчиками. Исходные коды этих платформ закрыты. В противовес iPhone и BlackBerry, платформа Android, разработанная компанией Google, поддерживается альянсом компаний OHA (Open Handset Allianse), среди которых присутствуют такие компании, как HTC, Intel, Samsung. Исходные коды этой платформы открыты. Это позволяет различным компаниям-разработчикам мобильных аппаратных систем использовать Android в качестве базовой программной платформы. Каждая компания может доработать платформу Android в соответствии со своими требованиями.

Каждая из перечисленных выше мобильная платформа имеет свой программный язык и инструментарий для разработки приложений. Важным вопросом для программиста, решившего попробовать свои силы в разработке мобильных приложений, является выбор мобильной платформы. И действительно, программный язык и инструментарий для платформ iPhone, Android и BlackBerry существенно отличаются. Переход между ними во многом требует повторного изучения новой платформы.

4. Языки и инструментальные средства

4.1 iPhone

Используется язык Objective-C. Разработка ведется на настольной операционной системе Mac OS X. В качестве интегрированной среды разработки используется Xcode. С Xcode интегрированы приложение для поиска утечек и наблюдения за выделением памяти Instruments и приложение Interface Builder для создания графического интерфейса. Для симуляции работы приложения на мобильном устройстве служит iPhone Simulator. С использованием iPhone Simulator нельзя проверить работу некоторых специфических API, например работу с акселерометром, гео-позиционированием и камерой. iPhone Simulator входит в состав iPhone SDK (Software Development Kit). iPhone SDK содержит фреймворки и библиотеки для сборки приложений под реальное устройство iPhone и iPhone Simulator. Xcode и iPhone SDK можно загрузить on-line [4] с официального сайта разработчиков приложений для платформ компании Apple. Для загрузки инструментария требуется регистрация. Регистрация предполагает участие в одной из программ для разработчиков. Наиболее простой является программа iOS Developer Program. Она бесплатна и позволяет загрузить и использовать инструментарий разработки, а также загружать и тестировать собственные приложения на iPhone Simulator. Возможность загрузки приложений на реальное устройство отсутствует. Для получения бесплатной возможности загрузки и тестирования на реальном устройстве можно использовать программу iOS University Program. Однако требуется подтверждение того, что участник программы действительно будет использовать реальное устройство iPhone лишь в целях университетского обучения.

На официальном сайте разработчиков приложений для платформ компании Apple также можно найти подробные инструкции по установке и использованию инструментария.

4.2 Android

Изначально имелась возможность разрабатывать приложения только с использованием языка Java в форме JNI (Java Native Interface), разработанного компанией Google. Приложения для платформы Android собираются в байт-код для исполнения виртуальной машиной Dalvik. При сборке приложений возможно использовать сторонние jar-файлы, собранные для виртуальной машины Java. В процессе сборки байт-код виртуальной машины Java пересобирается в байт-код виртуальной машины Dalvik специальной утилитой, входящей в состав инструментария разработки приложений.

В июне 2009 вышел первый официальный релиз Android NDK (Native Development Kit). Разработчики получили возможность разрабатывать собственные библиотеки на языке C для платформы Android. Использование кода на языке C в критических по производительности участках приложения существенно повышает его быстродействие. Разработка может вестись на инструментальных машинах под управлением Windows, Linux, Mac OS X. Существуют два способа разработки: с использованием консольных утилит и с использованием ADT plug-in для Eclipse. Для имитации работы на реальном устройстве Android служит эмулятор Android, созданный на базе виртуальной машины Qemu. Эмулятор Android входит в состав Android SDK. Также в Android SDK входят средства профилирования, отладки и создания графического интерфейса приложений. Загрузить Android SDK и Android NDK можно on-line [5] с официального сайта разработчиков для платформы Android. На той же странице Internet расположена ссылка на пошаговую инструкцию по установке инструментария.

Использование инструментария разработки под платформу Android, эмулятора, а также загрузка и тестирование на реальном устройстве не требуют оплаты.

4.3 BlackBerry

Инструментальная машина для создания приложений может работать под управлением одной из операционных систем: Windows, Linux, Mac OS X. Разработка приложений ведется на языке Java. Используется платформа Java Micro Edition (Java ME) в конфигурации Connected Limited Device Configuration (CLDC) и Mobile Information Device Profile (MIDP). Платформа Java ME в указанной конфигурации используется также для достаточно широкого набора других платформ. Кроме того, платформа Java ME проще платформы Java Standard Edition (SE), изучение которой часто входит в программу обучения компьютерным наукам. Это упрощает начало разработки мобильных приложений под платформу BlackBerry для студентов факультетов компьютерных наук. Для ознакомления с Java ME рекомендуется использовать Sun Microsystem Java Wireless Toolkit для CLDC. В нее встроен эмулятор работы приложений на мобильных устройствах. Для разработки приложений как для Java ME, так и для BlackBerry, используется BlackBerry Java Development Environment (JDE). JDE существует в виде отдельного IDE и в виде plug-in для Eclipse. BlackBerry JDE позволяет использовать такие функциональные возможности аппаратной платформы BlackBerry, как камера, медиа, акселерометр. JDE включает необходимые инструменты для конвертирования существующих Java ME MIDlets в формат (.cod) для платформы BlackBerry. Загрузить инструментарий для разработки приложений для платформы BlackBerry можно после перехода по соответствующим ссылкам на странице [6] официального сайта платформы BlackBerry.

5. Инструментарий кросс-платформенной разработки

Различия в языке и инструментарии разработки для рассматриваемых мобильных платформ определяют существенные временные и экономические затраты при разработке и поддержке кросс-платформенных приложений. А задача создания мобильного приложения, способного работать на нескольких платформах, остается актуальной. Существует ряд кросс-платформенных инструментов, которые позволяют использовать один и тот же код для нескольких мобильных платформ. Для сборки приложений под конкретную платформу должен быть установлен SDK для этой платформы. К кросс-платформенным инструментам, к примеру, относятся Rhodes и PhoneGap [7].

5.1 Rhodes

Инструмент создан компанией Rhomobile. Доступен в том числе и для платформ iPhone, Android и BlackBerry. Позволяет создавать кросс-платформенные приложения с использованием HTML, CSS, JavaScript и Ruby. Предназначен для программистов, которые имеют опыт web-разработки и хотят создавать мобильные приложения без необходимости изучать инструментарий и языки для каждой мобильной платформы. Rhodes в первую очередь предназначен для создания бизнесс-приложений с набором экранов, состоящих из стандартных графических элементов. Не предназначен для разработки игр, где требуется высокая производительность, а также приложений, включающих специфические графические элементы. Rhodes является открытым продуктом.

5.2 PhoneGap

Открытый фреймворк для создания "native" приложений с использованием HTML, CSS и JavaScript, в том числе, для платформ iPhone, Android и BlackBerry. Проект спонсируется компанией Nitobi. Позволяет через JavaScript APIs использовать данные контактов, гео-позиционирования, камеры и акселерометра, которые не доступны для web-приложений. Позволяет легко конвертировать существующие мобильные web-приложения для работы в PhoneGap. PhoneGap APIs меняются достаточно часто, что может быть объяснено стремлением удовлетворять развивающимся стандартам W3С. Как и все кросс-платформенные фреймворки не очень подходит для создания приложений, требующих интенсивных математических вычислений или 3D-анимации.

6. Мобильные устройства в курсах компьютерных наук

К настоящему моменту для обучения разработке мобильных приложений созданы учебные программы во многих университетах и институтах по всему миру. Среди них можно назвать Smartphone Programming Course for Undergraduates "Mobile Application Development" в Wireless Institute, University of Notre Dame [8], Mobile Software Engineering Undergraduate Degree Programme, University of Glasgow [9], University of Illinois computer science project Mobile Learning Communities (MLC) [10].

6.1 NordSecMob

NordSecMob - магистерская программа по компьютерной безопасности и мобильным технологиям. Программа дает студентам широкие знания по различным аспектам современных архитектур обмена данными и их развитию. Ключевыми областями учебного плана являются сетевые приложения и сервисы, информационная безопасность и работа с сетью с использованием мобильных устройств. Магистры будут способны разрабатывать свои собственные решения для мобильного Internet.

Программа NordSecMob является одним из магистерских курсов высшего европейского качества, выбранных European Commission Erasmus Mundus Programme. Программы Erasmus Mundus предназначены для студентов любой страны мира. Участниками программы уже стали многие студенты из России.

На сайте программы NordSecMob [11] можно найти полные тексты магистерских диссертаций ее участников. Часть магистерских исследований выполнена на мобильной платформе Android. Необходимо отметить, что базовым университетом программы является Aalto University School of Science (ранее Helsinki University of Technology, TKK), Finland, а одним из спонсоров программы является компания Nokia. С этими факторами связана заметная ориентированность программы на платформы Symbian и MeeGo (Maemo), развиваемые компанией Nokia.

6.2 CMER

Centre for Mobile Education and Research (CMER) [12] создан на базе Department of Computing and Information Science, University of Guelph, Canada. Миссией CMER является вовлечение на передовой рубеж прикладных исследований в разработке новейших приложений и сервисов для содействия образованию в области мобильных устройств, а также интеграция мобильных устройств в учебный план компьютерных наук. CMER частично организован компанией RIM, производителем мобильной платформы BlackBerry.

В CMER разработан академический цикл для интеграции мобильных устройств в компьютерное образование (CMER Academic Kit for Integrating Mobile Devices into Computing Education). На сайте CMER представлены подробные материалы по академическому циклу. Описание цикла может быть найдено в статье Mahmoud Q.H. и др. "An Academic Kit for Integrating Mobile Devices into the CS Curriculum" [13].

Цикл включает учебные материалы для полного вводного курса по разработке мобильных приложений, а также конкретные учебные модули для интеграции мобильных устройств в курсы программной инженерии, разработки игр, web-сервисов, информационной безопасности и операционных систем. В описании цикла демонстрируются примеры его успешного внедрения в обучение в Department of Computing and Information Science, University of Guelph. В описании цикла отмечается, что в фактическом стандарте высшего компьютерного образования ACM Computing Curricula [14] для США и Канады курс Wireless and Mobile Computing является факультативным в рамках области знаний "Net-Centric Computing". Утверждается необходимость включения курса по разработке мобильных приложений в современный обязательный учебный план для компьютерных наук.

6.3 Открытые платформы для мобильных устройств

На базе вычислительной системы ИМО МФ ПетрГУ (кафедры Информатики и математического обеспечения Математического факультета Петрозаводского государственного университета) размещен ресурс [15], на котором концентрируются материалы на русском языке о применении ОПП при разработке приложений для мобильных устройств и, прежде всего, для интенсивно развивающихся мобильных Интернет устройств (Mobile Internet Devices - MID). Ресурс фокусируется на Интернет планшетах Nokia (NIT) на основе ОПП maemo и классических платформах на базе ОС Symbian (S60). На ресурсе в первую очередь представляются учебные материалы (либо ссылки на них), предназначенные для освоения методов разработки приложений студентами и начинающими работу в средах открытых программных платформ (в том числе и мобильных). С сентября 2009 года на кафедре ИМО ведутся включенные в учебный план семестровые курсы «Программирование для Интернет планшетов» и «Программирование в ОС Symbian». Прослушавшие эти курсы студенты в весеннем семестре разрабатывают учебные программные проекты. Ход и результаты разработки представлены на этом ресурсе. Работа над ресурсом поддерживается компанией Nokia.

7. ФГОС ВПО по специальности 090301 Компьютерная безопасность

В 2009 году был принят ФГОС ВПО (Федеральный государственный стандарт высшего профессионального образования) по специальности 090301 Компьютерная безопасность [16]. В рамках указанной специальности существует специализация "Безопасность программного обеспечения мобильных систем". Среди прочего выпускник по указанной специализации должен обладать следующими компетенциями: способен разрабатывать алгоритмы и методы реализации мобильных агентов, их управление (ПСК-6.5); способен эксплуатировать системы и инструментальные средства проектирования и разработки приложений для решения различных профессиональных, исследовательских и прикладных задач (ПСК-6.7); способен применять средства разработки программного обеспечения для мобильных устройств (ПСК-6.9). С целью получения специализации "Безопасность программного обеспечения мобильных систем" при изучении базовой части цикла обучающийся должен знать: языки высокоуровневого программирования для мобильных систем; архитектуры основных мобильных ОС; архитектуру мобильных ОС; угрозы информационной безопасности мобильных систем и т.д.

Таким образом, в России существует федеральная образовательная программа, одним из основных направлений которой является разработка мобильных приложений.

8. Мобильные платформы как объект научных исследований

Бурное индустриальное развитие мобильных платформ в настоящее время имеет своей основой экономический интерес как крупных компаний, так и отдельных программистов. Разработка приложений для мобильных платформ по большей части базируется на накопленном опыте и "лучших практиках". Но систематический научный анализ в этой новой сфере программирования проводился в гораздо меньшей степени по сравнению, к примеру, с разработкой приложений для настольных компьютеров. В то же время при разработке мобильных приложений есть целый ряд особенностей, которые нет необходимости учитывать при разработке других типов приложений.

В своей статье "Software Engineering Issues for Mobile Application Development" [17] Wasserman выделяет две области исследований в инженерии мобильного ПО: пользовательский опыт (The User Experience) и нефункциональные требования (Non-functional Requirements). С пользовательским опытом автор связывает следующие возможные направления исследований:

  • Как определить, какие функции должны присутствовать в мобильной версии традиционного приложения? Существуют ли техники, которые могут гарантировать максимальное переиспользование кода среди различных версий?
  • Каковы сопоставимые усилия для создания "native" мобильных приложений (или их наборов для различных платформ) в сравнении с мобильными web-приложениями? Есть ли измеряемое различие в удовлетворении пользователей или производительности между "native" и web-приложениями?
  • Как дизайнер ПО интегрирует различные формы ввода и сенсоры в дизайн приложения?

С нефункциональными требованиями автор связывает следующие возможные направления исследований:

  • Одинаково ли ведут себя мобильные web-приложения в случае соединения с использованием телефонных сетей (3G, 4G), 802.11 (WiFi) и 802.16 (WiMax)? Есть ли различия в безопасности? Есть ли значимые различия в устойчивости связи? Адекватна ли традиционная техника возврата сообщения об ошибках и управления исключениями или более высокая вероятность обрыва соединения (или прерывания связи) требует дополнительных механизмов обработки ошибочных ситуаций?
  • Нужны ли новые механизмы, чтобы гарантировать целостность данных, или достаточно традиционной техники синхронизации в клиент-серверных системах? Являются ли потенциальная возможность потери соединения или заряда батареи рисками для программы и/или целостности данных, если подобное событие произойдет в процессе транзакции или обновления системы?
  • Должны ли приложения быть спроектированы по-разному в зависимости от скорости передачи данных в сети, в которой они будут использоваться? В Азии некоторые страны предоставляют скорость передачи данных 50 МБ/с или выше в то время, как типичные скорости, к примеру, в США, даже для сетей 3G, ниже 1 МБ. * Как разработчик должен создавать приложение, чтобы максимально увеличить время работы батареи и использование ресурсов?
  • Это лишь небольшой перечень возможных направлений исследований.

9. Заключение

В связи с бурным индустриальным развитием мобильных платформ изучение разработки мобильных приложений актуально как с точки зрения высшего образования, так и с точки зрения науки. За рубежом и в России к настоящему моменту приняты стандарты высшего образования в сфере инженерии мобильных устройств. Есть целый ряд примеров, в основном в Европе и Северной Америке, успешного внедрения курсов инженерии мобильных устройств и разработки приложений для них в стандартные курсы компьютерных наук. Имеет смысл на базе российского и зарубежного опыта интегрировать изучение инженерии мобильных устройств и, в частности, разработки мобильных приложений в базовые курсы компьютерного образования российских ВУЗов. В связи с наиболее быстрым развитием платформ iPhone, Android и BlackBerry в первую очередь следует рассмотреть возможности обозначенной интеграции на основе именно этих платформ.

Литература:

[1] Mahmoud, Q.H., and Popowicz, P., "A Mobile Application Development Approach to Teaching Introductory Programming", 40th ASEE/IEEE Frontiers in Education Conference, Session T4F, October 27-30, Washington, DC.
[2] Hartikainen, V., Liimatainen, P.P., and Mikkokek, T., "On Mobile Java Memory Consumption." Procceedings of the 14th Euromicro International Conference on Parallel, Distributed, and Network-based Processing (PDP2006), Montbeliard-Sochaux, France, pp. 333-339.
[3] Kontio, M., "Better MIDlets by design." IBM developerWorks, www.ibm.com/developerworks/wireless/library/wi-design.html, просматривалось 24 января 2011.
[4] iOS Dev Center: https://developer.apple.com/devcenter/ios/index.action#downloads.
[5] Download the Android SDK: http://developer.android.com/sdk/index.html.
[6] Key Information for Developing Java Applications: http://us.blackberry.com/developers/javaappdev.
[7] Allen, S., and Graupera, V., and Lundrigan, L, "Pro Smartphone Cross-Platform Development".
[8] A Smartphone Programming Course for Undergraduates: http://wireless.nd.edu/wi-nd-mobileapps-white-paper.pdf.
[9] Mobile Software Engineering Undergraduate Degree Programme: http://www.gla.ac.uk/undergraduate/degrees/mobilesoftwareengineering.
[10] University of Illinois computer science project Mobile Learning Communities (MLC): http://cs.illinois.edu/news/2010/Jan12-1.
[11] NordSecMob: http://nordsecmob.tkk.fi.
[12] CMER: http://cmer.cis.uoguelph.ca.
[13] Mahmoud, Q.H., Ngo, T., Niazi, R., Popowicz, P., Sydoryshyn, R., Wilks, M., and Dietz, D., "An Academic Kit for Integrating Mobile Devices into the CS Curriculum.", Proceedings of the 14th ACM-SIGCSE Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE 2009), Paris, France, pp. 40-44. или http://cmer.cis.uoguelph.ca/cmer-ak/AcademicKit-V1.0/publications/ITICSE2009-Paper.pdf.
[14] ACM Computing Curricula (ACM-CC 2001): http://www.acm.org/education/education/education/curric_vols/cc2001.pdf, (обновлен в 2008).
[15] Открытые платформы для мобильных устройств: http://oss.fruct.org.
[16] ФГОС ВПО по специальности 090301 Компьютерная безопасность: http://www.edu.ru/mon-site/pro/fgos/vpo/pv090301s.pdf.
[17] Anthony I. Wasserman, "Software Engineering Issues for Mobile Application Development", FoSER 2010, November 7-8, 2010, Santa Fe, New Mexico, USA, http://www.cmu.edu/silicon-valley/wmse/wasserman-foser2010.pdf.

Возврат к списку

ѕрокрутить вверх