Тех. документы
Технические документы

{chronoforms}white_papers_form{/chronoforms}

ВСЕ ДЕЛО В ПРАВИЛЬНЫХ ИНСТРУМЕНТАХ

Полина Черкасова, Владимир Назаров

Мобильные устройства с сенсорным экраном прочно вошли в нашу повседневную деловую жизнь, и количество и разнообразие инструментов разработки мобильных приложений невероятно возросло. На рынке полно мобильных акселераторов, компиляторов, студий и компонентов. Эти инструменты обещают решить любую проблему разработки ПО, в том числе укоротить процесс разработки или даже провести автоматическое развертывание вашего приложения сразу во всех основных операционных системах. Трудно угадать, что работает, а что нет. В этой статье мы поможем вам разобраться в панораме существующих сегодня мобильных инструментов. Вы найдете указания и полезные пояснения по каждому аспекту разработки вашего ПО, чтобы ваше приложение было успешным… каждый раз, без исключения.

ЧАСТЬ I. НАЧАЛО РАБОТЫ

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

  • Существующую базу мобильных устройств в вашей компании или, если вы разрабатываете коммерческий продукт, который будет использоваться другими компаниями, мобильные платформы, которыми пользуются ваши клиенты.
  • Версии мобильных ОС, которые вы хотите поддерживать. Например, iOS от Apple сегодня существует в версии 6. Будете ли вы поддерживать версии 4 и 5?
  • Если вы собираетесь поддерживать разные ОС, порядок, в котором вы разрабатываете и развертываете мобильные приложения.
  • Предназначено ли приложение для планшетов, смартфонов, или и тех, и других.

В настоящий момент существует четыре надежные мобильные платформы:

  • Apple iOS
  • Google Android
  • Microsoft Windows Phone 8/Windows 8
  • Blackberry – разные ОС, включая только что выпущенную BB10

Почти сразу же вам придется принять другое чрезвычайно важное разработческое решение: создавать приложения, которые будут «родными» для каждой мобильной платформы, которую поддерживает ваша организация, или использовать инструменты, которые обещают разработку приложения для разных платформ с использованием одной кодовой базы (так называемая модель "Write-Once, Deploy-Anywhere" – «один раз напиши и запускай, где угодно»). Хотя функциональность каждой мобильной платформы подобна, каждая имеет принятый набор стандартов интерфейса и ожидаемые уровни производительности основных устройств. Конечным пользователям важно, чтобы приложение выглядело и работало, как «родное», и если вы разрабатываете продукт для других компаний, чрезвычайно важно создать нечто, что будет отвечать ожиданиям рынка. Встает вопрос: помогут ли инструменты межплатформной реализации выполнить работу для вашего приложения? Чтобы это определить, нужно сначала ответить на два простых, но важных вопроса:

  • Какие обычные возможности, являющиеся частью ОС, вам нужно будет использовать?
  • Какая часть приложения будет работать в режиме онлайн (при подключении к интернет), а какая – офлайн (при отключении от интернет)?

iPhone

Android

ОБЫЧНЫЕ ВОЗМОЖНОСТИ И ФУНКЦИИ ПРИЛОЖЕНИЯ

Какие возможности предусмотрены для вашего приложения? Каждое мобильное устройство содержит набор обычных базовых функций, которые ускоряют и существенно облегчают разработку приложений. Обычно эти функции включают:

Движение, местоположение и навигация

  • Датчик поворота экрана
  • Геолокация
  • Мультитач

Управление данными

  • SQLite
  • File System IO
  • Копирование/вставка

Производительность и коммуникации

  • Контакты
  • Текстовые сообщения
  • Электронная почта
  • Телефон
  • Bluetooth

Медиа

  • Звуки
  • Вибрация
  • Изображения
  • Запись видео
  • Фотокамера

ИСПОЛЬЗОВАНИЕ ОНЛАЙН ИЛИ ОФФЛАЙН

Приложения могут хранить данные и программный код в разных местах, таким образом делая возможным использование офлайн или предотвращая его. Место хранения данных и программного кода связано с «толщиной». То есть «толщина» играет свою роль в том, как разрабатывается приложение… и как оно работает. Ключевые различия показаны на схеме внизу.

ТолщинаОписаниеДоступ к интернету
Толстый клиент Код и данные хранятся в устройстве. Может работать офлайн с периодической синхронизацией с данными сервера или быть подключенным в реальном времени.
Умный клиент Код хранится в устройстве; резидентные данные отсутствуют или незначительны. Используется, если данные хранятся в основном на сервере, но предполагает высокую степень взаимодействия с пользователем, как в случае локального клиента. Возможности работы офлайн ограничены.
Тонкий клиент Браузер или подобный базовый клиент. Требует доступа к интернету.
Текстовые сообщения Электронная почта, СМС, мгновенные сообщения или другая технология обмена сообщениями, которая используется для передачи данных и пользовательского интерфейса. Требует доступа к интернету или сетям СМС.

ЧАСТЬ 2. ТЕХНИЧЕСКИЕ СООБРАЖЕНИЯ ПО РАЗРАБОТКЕ ПРИЛОЖЕНИЙ

Каждый из трех нижеследующих типов приложений имеет уникальный набор инструментов, которые делают возможной модель «один раз напиши и запускай, где угодно»:

  • Веб-приложения. Разработанные изначально для доступа к веб-сайтам и их использования, эти приложения могут быть перенесены и эффективно работать на смартфоне или планшете в мобильном браузере, по-разному визуализируясь для устройств разных размеров и используя преимущества сенсорного экрана. Поскольку существует несколько популярных мобильных браузеров, для каждого из них потребуется несколько отличная версия окончательного html-кода.
  • Родные приложения. Эти приложения разработаны специально только для одного типа мобильной операционной системы... и выглядят и ведут себя, подобно всем остальным приложениям для этой операционной системы. Разработка таких приложений соответствует инструкциям к данной конкретной платформе. В то же время родные «генераторы» могут производить родные приложения для разных платформ, но поведение приложения будет оставаться постоянным для всех из них (в некоторых случаях при использовании могут происходить странные вещи).
  • Приложения «в оболочке». Конечному пользователю эти приложения кажутся родными, но на самом деле они выполняются в виртуальной машине или в среде исполнения определенного языка (html, java script, .NET, C, java). Процесс инсталляции для них не отличается от процесса инсталляции для родных приложений.

Веб-приложения имеют крайне ограниченный доступ к локальным ресурсам, но в случае оболочек и родных приложений доступ полный или почти полный. Мы рассмотрим инструменты для каждого типа приложений в Части 3 этой статьи.

БЕЗОПАСНОСТЬ И АВТОРИЗАЦИЯ ПРИЛОЖЕНИЯ

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

  • Как вы собираетесь интегрировать свое приложение в существующую систему корпоративной безопасности?
  • Позволит ли межсетевой экран вашей корпорации приложению получить доступ к информации?
  • Рассматривали ли вы возможность использования услуг провайдеров авторизации третьей стороны, таких как Facebook, LinkedIn, Amazon или Windows Live?
  • Безопасно ли сохранять учетные данные локально на устройстве?
  • Безопасно ли сохранять данные локально на устройстве? Можете ли вы гарантировать, что другие люди/приложения не получат доступ к ним?
  • Безопасно ли передавать данные с сервера на устройство и наоборот?

ПРОИЗВОДИТЕЛЬНОСТЬ ПРИЛОЖЕНИЯ

При тестировании завершенного приложения при различных сценариях и условиях, помните о том, что мобильные устройства, а значит, и ваше приложение, будет подвержено ухудшению работы вследствие плохого качества интернет-соединений. Если вы разработали приложение «в обертке», плохая работа может быть связана с несовершенством сборки времени выполнения (run-time implementation). Помните об этих сценариях:

  • Качество интернет-соединения.
  • Качество сборки времени выполнения.

КЭШИРОВАНИЕ ДАННЫХ И ОТЛОЖЕННАЯ СИНХРОНИЗАЦИЯ

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

МЕТОДЫ ВЫПУСКА

Каждая мобильная платформа предоставляет некоторые варианты выпуска вашего родного приложения, в том числе развертывание через магазин, развертывание по ссылке и корпоративное развертывание. Эти ресурсы помогут вам выбрать правильный процесс выпуска для вашего бизнеса:

5 Options for Distributing Your iOS App to a Limited Audience (Legally)

App packages and deployment (Windows Store apps) (Windows)

How to Distribute Compiled Windows 8 Metro Applications without Windows Store?

Android. Open Distribution

ТЕХНИЧЕСКОЕ ЗАМЫКАНИЕ

Когда вы выбрали инструмент и разработали межплатформное приложение, невероятно сложно перейти от одного провайдера технологии «один раз напиши и запускай, где угодно» к другому, когда он больше не соответствует вашим потребностям. В типичном случае вам, в конце концов, придется переписывать значительную часть кода. Вот два предложения. Во-первых, если вы использовали инструмент с открытым исходным кодом (Open Source), вы всегда можете внести улучшения или создать клон кода. Во-вторых, если вы считаете, что в будущем можете решить перестать использовать возможность «один раз напиши и запускай, где угодно», выберите родной генератор, который:

  • Не ссылается на библиотеки третьих сторон в сгенерированных компонентах
  • Генерирует хорошо сформатированный и легко читаемый родной код.

В результате, у вас всегда будет возможность и далее разрабатывать генерированные компоненты с полной свободой.

ЭМУЛЯЦИЯ И «РОДНОЕ» УСТРАНЕНИЕ ОШИБОК

Существует множество эмуляторов, которые моделируют, как ваше мобильное приложение будет выглядеть на разных устройствах. Эмуляторы включают и инструменты разработки мобильных приложений, и симуляторы. (См. Google Chrome Mobile Simulator и 10 Excellent Tools for Testing Your Site on Mobile Devices). Помните, что одно лишь то, что приложение хорошо работает в симуляторе, не гарантирует, что оно будет хорошо работать на мобильном устройстве. Может быть довольно неприятно, если вы не можете устранить ошибки в приложении на устройстве и найти главную причину проблемы. Для этого убедитесь, что вы либо можете устранить ошибки приложения на устройстве, либо что ваш инструментарий достаточно хорош, чтобы дать вам выжить без отладчика.

ЧАСТЬ 3. ВЫБОР ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ РАЗРАБОТЧИКА

Ниже приведены инструкции для выбора подходящих инструментов для конкретной задачи разработки приложения: перенос веб-приложения, разработки родного приложения или разработки оболочки.

ПЕРЕНОС ВЕБ-ПРИЛОЖЕНИЯ

Самые популярные средства разработки теперь предлагают поддержку разработки мобильных приложений. Например, Microsoft .NET MVC 4.5, в которое входит Visual Studio 2012, включает поддержку разработки мобильных приложений на основе веб-приложений под Microsoft. Возможны два уровня адаптации вашего приложения к устройству:

  1. 1. Приложение хорошо выглядит и использует возможности, пользовательский интерфейс удобен, но пользователь может видеть, что приложение является чужим для устройства. Например, кнопки в вашем приложении имеют иную рамку, чем кнопки в приложениях, поставляемых с устройством.
  2. 2. Приложение выглядит совершенно родным и «одето» точно так же, как и родные приложения.

Если вам достаточно первого уровня, вот несколько советов:

  • Очень просто придать разный внешний вид в зависимости от клиентской платформы с функцией «вид дисплея» (Display Modes). Вы можете различать устройства по размеру экрана или операционной системе.
  • Шаблон проектов ASP.NET по умолчанию использует адаптивный рендеринг, что позволяет получить привлекательный вид и в браузерах для настольных компьютеров, и в мобильных браузерах.
  • Мобильный шаблон проектов и библиотека элементов управления jQuery Mobile (Microsoft) позволяет создать интерфейс пользователя, оптимизированный для работы с сенсорным экраном.

Если вы считаете, что вам необходим второй уровень адаптации, то существуют библиотеки элементов управления третьих сторон, оптимизированные для работы с сенсорным экраном, которые позволят вашим веб-сайтам выглядеть «родными»:

Dev Express DXTREME

Sencha Touch

ОБОЛОЧКИ

Оболочка – это вид виртуального устройства, которое может размещать один и тот же код на разных мобильных устройствах, обеспечивая API для доступа к локальным ресурсам. Вот наиболее популярные механизмы:

ТехнологияЯзык
Appcelerator Titanium HTML 5
PhoneGap (Open Source) HTML 5
Marmelade SDK C, C++
MoSync (Open Source) C, C++, java, java script
Rhomobile HTML 5, Ruby
SuperWaba Java
IBM Worklight Java
Drupal PHP, visual

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

РОДНЫЕ ГЕНЕРАТОРЫ

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

ИнструментМетаязык
AnyPresence Visual
webMethods mobiledesigner Java
DragonRAD Visual
Smartface Platform Visual
Infinite Monkeys Visual
Sencha Touch Java Script

ЧАСТЬ 4. РЕКОМЕНДАЦИИ КОМПАНИИ VIACODE

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

  • Родные генераторы прекрасно выглядят на бумаге, но большинство продуктов очень новы и относительно не проверены. Будьте осторожны. Наш опыт показывает, что большинство из них еще не достаточно стабильны, чтобы их всерьез рассматривать как платформу для разработки фирменных приложений. В то же время, инструменты развиваются так быстро, что уровень технологии может измениться за пару месяцев. Мы советуем:
  • Начинайте с малого. Убедитесь, что вы получаете качественный код для простого приложения, и после этого попробуйте провести развертывание в разных ОС, чтобы увидеть, какой результат вы получите.
  • Чистый код лучше. Мы много раз сталкивались с множеством компаний, которые становились заложниками выбора инструментов разработки, который они сделали много месяцев или лет назад. Ваш код должен быть таким, чтобы его было просто перенести с одного инструмента на другой, и хотя инструменты дорого стоят и переход от одного к другому всегда болезнен, мобильный рынок достаточно нов, чтобы не прекращать поисков следующих, новых вариантов.
  • Не забывайте о сервере. Некоторые родные генераторы создают коды для межплатформенного ПО, интеграции данных и других функций. В этом большое преимущество. Наш опыт показывает, что разработчики часто забывают о серверной стороне, полагая, что веб-инфраструктура и мобильная инфраструктура – это одно и то же. Это не так. Их модели использования отличаются, и вашим мобильным приложениям может потребоваться доступ к дополнительным источникам данных.
  • Для базовых приложений, которые не обязательно должны казаться родными, существует множество хороших вариантов. Во вселенной Microsoft, комбинация Microsoft .NET MVC 4.5 и jQuery Mobile (Microsoft) позволяет создавать привлекательные пользовательские интерфейсы на основе веб-технологий с использованием сенсорного экрана, если вас не интересует родной вид и ощущения от приложения. Если вы делаете что-то внутри фирмы, где вид и ощущения отходят на второй план перед необходимостью выполнить работу, то вас обрадует известие, что большинство наборов инструментов для веб-программирования предлагают достаточно функциональные и ясные базовые мобильные инструменты.
  • Разработка мобильного программного обеспечения, которое должно казаться родным, связана с уровнями сложности. Если для вас имеет значение, чтобы приложение выглядело и работало, как родное, и большая часть вашей работы направлена на устройство в отличие от комбинации «устройство плюс серверная часть», вы можете найти хорошие решения, но чтобы быть уверенными, что выбран правильный инструмент, вам следует глубоко копать. В настоящее время, Dev Express DXTREME и Sencha Touchпредлагают инструменты контроля и разработки, которые хорошо работают в iOS, Android и Windows; но чем сложнее ваше приложение, тем больше вам придется на самом деле изучить широкий спектр инструментов, чтобы найти именно то, что вам нужно.

Мы считаем, что следующие инструменты достаточно хорошо отработаны и стабильны, и их можно рассматривать для разработки приложений для предприятий:

Компания VIAcode, штаб-квартира которой расположена в Западном Хартфорде (Коннектикут, США), разрабатывает и поставляет коммерческие или «внутренние» программные продукты, которые коренным образом изменяют эффективность работы наших клиентов. Мы несравненно расширим ваши технические возможности, привлекая специалистов мирового уровня в течение всего жизненного цикла разработки приложений, чтобы удовлетворить ваши потребности в программном обеспечении точно в срок и в рамках бюджета. Связаться с нами можно по телефону: 1.860.882.1150 или электронной почтой: This email address is being protected from spambots. You need JavaScript enabled to view it..