понедельник, 9 июля 2007 г.

Особенности разработки мобильных приложений

Сегодня разработка ПО все больше и больше "мобилизируется". Десктопное приложение в глазах пользователей все чаще выглядит неполноценным, если не имеет мобильной версии. Поэтому наиболее общий вводный экскурс в разработку мобильного ПО для людей, которые раньше тратили 99,(9) рабочего времени на написание обычного софта, думаю, должен быть интересен и полезен. Итак, выделим основные отличия в разработке и рассмотрим каждое из них более детально.


  • Быстродействие. Снова, как в былые времена, нельзя рассчитывать на то, что процессор всемогущ и осилит любой сколь угодно неоптимальный алгоритм. Нужно искать наименее ресурсоемкие решения всех возникающих задач. Об этом нужно помнить на протяжении всего процесса разработки, т.к. в итоге это выльется в качество всего приложения. Для мобильных приложений достаточно распространена ситуация, когда есть два приложения, которые выполняют одни и те же задачи, но одно работает в два раза медленнее другого. Почему? Смотрите выше.
  • Качественный интуитивный UI - ключ к успеху приложения. Это может показаться общей фразой, справедливой для любого ПО. Однако для мобильных устройств она приобретает особое значение, т.к. их органы управления на сегодня исключительно неудобны и ограничены в своей функциональности. Если вы видите какую-то программу, которая хорошо продается и у нее есть недостатки в UI - сделайте точно такую же программу, где все действия можно будет выполнять значительно меньшими усилиями и их выполнение будет являться более очевидным и вы сорвете банк.
  • Энергопотребление. Это на сегодня краеугольный камень всей мобильной индустрии. Сейчас не существует достаточно емких источников питания, в результате чего страдают конечные пользователи. Если ваше приложения для ожидания завершения задачи в параллельном потоке будет входить в "холостой" цикл, а не вызывать sleep, пользователи будут страдать еще больше. Дело в том, что мобильные процессоры зачастую используют сложные алгоритмы оптимизации энергопотребления, которые смотрят на текущий уровень загрузки процессора и если вы не вызываете sleep несмотря на то, что программа ничего полезного не делает, система не сможет этого определить, а следовательно снизить тактовую частоту и сэкономить немного энергии. Еще один пример - выключение анимации, когда программа в фоновом режиме или выключен экран. Кстати этот пункт также вплотную связан с пунктом про быстродействие и оптимальность алгоритмов.
  • Корректная реакция на внешние события. Т.к. выполнения программ - зачастую не основная функция мобильных устройств, с устройством может происходить множество нехарактерных для настольного ПК событий, на которые необходимо корректно реагировать. Основным таким событием, конечно, является входящий звонок. Также сюда можно отнести переход устройства в спящий (энергосберегающий) режим, смену способа передачи данных (например UMTS/WiFi). Если, например, вы написали аудио плеер, то при приходе звонка ваша программа должна корректно отреагировать и приостановить воспроизведение, снова включив его по завершении звонка.
  • Защита конфиденциальной информации. Также к особенностям, видимо, можно отнести то, что данные на мобильном устройстве подвержены большему риску, чем на любом офисном или другом ПК в силу возможности кражи и просто большей доступности вашего устройства для окружающих. Поэтому крайне желательно конфиденциальные данные надежно прятать, чтобы их нельзя было легко прочесть взяв "посмотреть" устройство, а также шифровать доступными средствами, чтобы увеличить время до их прочтения при краже устройства.

  • Итак, это наиболее важные на мой взгляд особенности, на которые, к стати, можно не обращать никакого внимания :) Однако результатом такого отношения как правило становится некачественный конечный продукт, масса негативных эмоций у пользователей и как следствие удивительно низкая коммерческая успешность проекта. Поэтому привыкайте создавать только качественное ПО. Дерзайте!

    Комментариев нет: