2) широкого набора библиотек управляемых классов.
Основной исполнительный механизм .NET Compact Framework реализован на собственном коде. Его задачей является загрузка управляемого кода, компиляция, запуск и выполнение всех задач, связанных с обеспечением выполнения управляемого кода. Платформа .NET Compact Framework перенесена на несколько различных семейств процессоров, включая х86, StrongARM, SH3, MIPS и другие.
Исполнительный механизм .NET Compact Framework и библиотеки времени выполнения имеют встроенную поддержку операций с плавающей запятой. Это следует особо подчеркнуть, так как не каждая среда выполнения мобильных устройств может похвастаться этим. Понимание этого играет очень важную роль, если до того, как приступить к работе с мобильными устройствами, вы занимались разработкой программ для настольных компьютеров или серверов.
Например, для Java J2ME CLDC (Common Limited Device Configuration) версии 1.0 поддержка операций с плавающей запятой не требуется, чего нельзя сказать о версии J2ME CLDC 1.1. Java MIDP 2.0 (Mobile Information Device Profile) требует только поддержки CLDC 1.0. Если вы ориентируетесь на мобильные устройства со средой выполнения J2ME, выясните, какую версию CLDC поддерживает эта среда.
Большинство многофункциональных мобильных приложений в той или иной форме требуют выполнения вычислений с десятичными числами. Хотя и существуют способы имитации некоторых операций с плавающей запятой путем выполнения целочисленных операций с фиксированной запятой, они могут делать вычисления громоздкими и не обеспечивают достаточной гибкости, необходимой для удовлетворения повышенных запросов.
Определяя требования к среде выполнения своего мобильного приложения, обратите особое внимание на наличие поддержки математических функций, причем не только тех, которые предназначены для выполнения операций с плавающей точкой, но и тех, которые используются для обработки величин, представляющих валюту, дату и время. Нелишне также удостовериться в том, что обеспечивается поддержка и таких более сложных библиотечных функций, как тригонометрические и экспоненциальные функции. В .NET Compact Framework все эти средства поддерживаются.
Преимуществом сред выполнения, в которых поддержка операций с плавающей запятой отсутствует, является то, что они занимают меньше места в памяти и способны выполняться в более простом окружении. Их большим недостатком является ограниченность функциональных возможностей, предлагаемых разработчикам приложений. Тщательно проанализируйте свои потребности и выберите среду выполнения и целевые устройства, которые обладают всеми необходимыми для вас показателями функциональности и гибкости.
Ниже перечислены API-интерфейсы, используемые разработчиками при создании приложений. Эти API-интерфейсы можно разбить на следующие четыре логические категории:
1.
2.
3.
4.
Исполнительный механизм .NET Compact Framework и библиотеки классов проектировались таким образом, чтобы их можно было сравнительно легко переносить на устройства различных типов, работающие под управлением различных операционных систем. Одними из первых целевых устройств были те, которые работали под управлением операционных систем Windows СЕ 4.1, Pocket PC 2000/2002/2003 и выше, а также Microsoft Smartphone. В будущем возможна поддержка и других платформ, не относящихся к семейству платформ Windows.
Следует также отметить, что поскольку платформа .NET Compact Framework создавалась поверх стандартов ЕСМА и ISO для инфраструктуры общего языка (Common Language Infrastructure — CLI), то вполне возможно, что другие организации разработают собственные варианты реализации CLI для языков С# и VB.NET, ориентированные на различные типы устройств. В этих реализациях библиотеки базовых классов, вероятнее всего, останутся теми же, но высокоуровневые библиотеки в них могут быть другими. В настоящее время существует, по крайней мере, две реализации CLI от независимых производителей, предназначенные для настольных компьютеров и серверов.
Резюме
Современные многофункциональные мобильные устройства предоставляют разработчикам замечательные возможности для создания конкурентоспособного мобильного программного обеспечения. Программы для мобильных устройств способны украсить людям досуг, доставить им ценную информацию и облегчить принятие решений, а также увеличить производительность труда за счет того, что работа может выполняться не только за рабочим столом. Учитывая богатое разнообразие новейших технологий и возможностей, наше время можно считать поистине благодатным для разработчиков программного обеспечения.
Удачные мобильные приложения предоставляют пользователям интерфейсы, позволяющие сосредоточиться на сути задачи и быстро получить результат. Ключевым фактором таких удобств в работе является производительность приложения.
При создании мобильных приложений первостепенным вопросом, на который всегда требуется находить ответ, является следующий: "Должно ли приложение быть локальным или основанным на браузере?" Вариант локальных приложений позволяет создавать максимально удобные условия работы для пользователей и обеспечивает возможность запуска приложений даже при отсутствии подключения к сети, хотя и требует предварительной установки на устройстве соответствующего программного обеспечения.
Если выбран вариант многофункционального приложения, развернутого на локальном устройстве, то необходимо дать ответ также на следующий вопрос: "Следует ли создать приложение с использованием собственного кода или же с использованием среды выполнения управляемого кода?" Ответ по умолчанию подразумевает использование управляемого кода, поскольку в этом случае вы получаете существенный выигрыш в производительности и надежности, которые обеспечиваются современными средами, поддерживающими управляемый код.
В настоящее время имеется несколько таких сред, самыми популярными из которых являются среды J2ME и .NET Compact Framework. В оставшейся части книги описываются наиболее важные аспекты приложений и сред выполнения для мобильных устройств и излагаются основные идеи и методы разработки программного обеспечения, при помощи которых вы сможете создавать замечательные мобильные приложения. Для иллюстрации этих идей, которая сопровождается множеством примеров, в книге применяется платформа .NET Compact Framework. Независимо от сделанного вами выбора языка или среды выполнения, обсуждающиеся в книге общие принципы в равной степени относятся к разработке мобильных приложений как с использованием собственных кодов, так и с использованием сред выполнения управляемого кода.
Хочется надеяться, что чтение этой книги доставит вам удовольствие, и вы испытаете немало приятных минут, изучая и исследуя на практике те замечательные возможности, которые мобильные устройства открывают перед разработчиками новейшего программного обеспечения!
ГЛАВА 2
Характеристики мобильных приложений
Интеллект – это дар быстрого проникновения в суть вещей, который следует отличать от обычных способностей, означающих просто умение действовать со знанием дела по отношению к тому, суть чего уже понята.
Введение
Мобильные приложения отличаются от своих настольных собратьев, и поэтому стоит потратить некоторое время на рассмотрение вопроса о том, какие именно факторы обусловливают их специфику. Чтобы добиться успеха при разработке мобильных приложений, важно хорошо понимать, что на самом деле представляют собой мобильные устройства и чем они отличаются от настольных и портативных вычислительных машин, с которыми также взаимодействуют пользователи.
Данная глава должна подготовить необходимую для этого почву и приучить вас мыслить категориями "мобильности". От умения рассуждать с учетом специфики устройств зависит очень многое, поскольку это самым радикальным образом повлияет на ваш подход к проектированию приложений. Создание неординарных мобильных приложений требует хорошего понимания того, какие именно ключевые характеристики делают то или иное приложение действительно замечательным. В этой главе даются ответы на такие вопросы: "Чем именно отличается использование приложений для мобильных устройств от использования приложений для настольных компьютеров?" и "Каковы наиболее важные отличительные характеристики хороших мобильных приложений?"
Вооружившись этими знаниями, вы сможете сосредоточиться на изучении способов преодоления тех трудностей, с которыми чаще всего приходится сталкиваться при разработке программного обеспечения для мобильных устройств.
Распространенные схемы использования мобильных устройств
Наиболее существенные различия между приложениями для мобильных устройств и приложениями для настольных компьютеров обусловлены, вероятно, тем, каким именно образом люди их используют. Представьте, что вы сидите за компьютером — и что вы при этом делаете? Если вы относитесь к самой многочисленной категории пользователей, то используете компьютер в основном для следующих видов работы: просмотр ресурсов в Web, работа с документами (обработка текстовых документов, электронных таблиц, рисунков и тому подобного) и общение (электронная почта, мгновенный обмен сообщениями и так далее). В типичных случаях все эти виды деятельности носят долговременный, исследовательский характер, и пользователь периодически переходит от одного из этих основных занятий к другому. Если вы разработчик (и можно побиться об заклад, что это действительно так, иначе зачем вам читать эту книгу?), то можете дополнить этот список разработкой программного обеспечения, которая, несомненно, также относится к видам деятельности, растянутым во времени и требующим проведения исследований. Если же вы используете компьютер для игр, то должны знать, что многие из самых интересных игр требуют от игроков активного исследования сложных виртуальных миров и взаимодействия с ними, что также поглощает много времени и заставляет пользователя тщательно продумывать каждый свой шаг.
В большинстве случаев способы использования настольного и мобильного вариантов одного и того же приложения отличаются между собой, хотя и дополняют друг друга. Как правило, работа пользователя с мобильным приложением носит характер кратковременных сеансов взаимодействия, которое либо прерывается извне, либо само вызывает прерывание сеанса. Обычно пользователь либо реагирует на попытку прервать его работу, либо использует устройство для немедленной передачи запроса определенному лицу или процессу. Прекрасной иллюстрацией этого может служить типичная практика использования современных мобильных телефонов. Когда вы совершаете телефонный звонок или отправляете текстовое SMS-сообщение, ваш абонент получает сигнал прерывания; если же звонят или посылают SMS-сообщением вам, то прерывается ваша работа. Эта же модель использования переносится и на любое другое приложение, выполняющееся на мобильных устройствах. Мобильное приложение может считаться удачно разработанным лишь в том случае, если пользоваться им столь же просто и естественно, как связываться с кем-то по телефону или обмениваться SMS-сообщениями.
Кроме того, приложениям для мобильных устройств присуща ярко выраженная специализация, обеспечивающая максимально удобный доступ пользователя к ограниченному набору определенных возможностей, что и отличает устройства от той универсальной исследовательской среды, создание которой характерно для успешных приложений, выполняющихся на настольных вычислительных машинах. Поскольку управление мобильными устройствами чаще всего осуществляется одной рукой или с помощью небольшого экрана с перьевым устройством ввода, очень важно обеспечить пользователя возможностями оперативной идентификации и быстрого нахождения нужной ему информации или средств. Возможность быстрой навигации в пределах немногочисленного набора ключевых средств является важным показателем качества разработки мобильного приложения.
Долговременные и кратковременные виды деятельности
Работа за настольными компьютерами, как правило, ведется на протяжении длительных рабочих сеансов. Самыми обычными являются часовые сеансы, однако нередко они затягиваются на несколько часов. В процессе длительной работы формируются и разрабатываются идеи, а сама работа носит итеративный характер со свойственными ему возвратами к уже пройденным этапам. Поэтому большее значение имеет не сокращение длительности подготовки к работе, а предоставление пользователю богатого набора разнообразных средств, которые могут ему понадобиться в процессе исследования и обработки соответствующей информации.
Лэптопы в основном используются так же, как и настольные компьютеры, однако и в этом случае уже можно заметить признаки, характерные для использования мобильных устройств. Большее значение придается сокращению времени запуска (или пробуждения) приложения и возможности быстрого перехода пользователя к той работе, которой он занимался до завершения предыдущего рабочего сеанса. Вместе с тем, по характеру их использования лэптопы ближе к настольным компьютерам, чем к мобильным устройствам, что частично объясняется просто близостью физических размеров соответствующих категорий оборудования. Пока вы достанете компьютер из сумки, откроете крышку, запустите компьютер, доберетесь до приложения, с которым собираетесь работать, или подключитесь, если это необходимо, к сети, пользователь мобильного телефона успеет решить массу задач. Поэтому лэптопы очень далеки от модели типа "достань устройство из кармана и работай", соответствующей возможностям мобильных телефонов и PDA.
Что же касается мобильных устройств, то аналогичные действия пользователь может выполнить гораздо быстрее, и в типичных случаях на это уходит от нескольких секунд до нескольких минут. Такие операции, как выполнение телефонного звонка, просмотр расписания встреч или отправка и чтение сообщений, осуществляются в процессе часто повторяющихся, но кратковременных сеансов. В случае мобильных устройств даже игры относятся к кратковременным видам деятельности. Обычно мобильные устройства используются для игр в течение коротких промежутков времени в перерывах между выполнением других операций. Игры предназначены для того, чтобы помочь людям скоротать время в ожидании поезда, долгого пребывания в аэропорту или в ожидании партнера, опаздывающего на встречу с вами, назначенную в парке. Именно факторы кратковременности использования и возможности немедленного доступа к необходимым средствам и заставляют нас держать мобильные устройства в "постоянно включенном" состоянии или в состоянии "немедленной готовности к включению", в которых время, необходимое для получения доступа к устройству, сопоставимо со временем, которое уходит на извлечение устройства из кармана.
Важно отметить, что, невзирая на кратковременность рабочих сеансов, данные, с которыми работает пользователь, нередко имеют долговременный характер. Пользователь мобильного устройства может захотеть продолжить игру с того места, на котором она была прервана во время предыдущего сеанса. В случае приложений, предназначенных для повышения производительности труда, эта тенденция становится еще более заметной, что можно проиллюстрировать на примере адресной книги мобильного телефона (которая должна быть постоянно доступной).
В процессе ведения переговоров по телефону или во время личных встреч часто приходится обращаться к расписанию встреч и заносить в него дату и время очередной встречи. Пользователь должен иметь возможность быстро получить доступ к устройству, перейти к списку личных контактов, создать новый пункт расписания и сразу же продолжить ведение переговоров без какой-либо задержки. Соответствующие данные остаются актуальными в течение длительного времени и должны храниться долго, но само приложение используется в течение коротких периодов времени в режиме немедленного доступа к информации.
Исследовательские и целевые виды деятельности
Настольные и переносные компьютеры предлагают богатую возможностями платформу для исследования информации. Большие размеры экрана позволяют отображать массу второстепенной информации, которая может представлять интерес для пользователей. Эффективные средства навигации по экрану, обеспечиваемые клавиатурой и мышью, предоставляют пользователю возможность свободного перемещения между различными разделами информации. Благодаря этому он может очень быстро переходить к любому отображенному на экране разделу, переключаться между открытыми в данный момент многоуровневыми окнами, быстро вводить и просматривать большие объемы данных за короткое время или перетаскивать информацию из одного документа в другой. Все эти методы работы с информацией носят, по сути дела, исследовательский характер.
Хорошим примером подобного рода исследовательского подхода к обработке информации может служить просмотр Web-ресурсов на настольном компьютере. Обычные сетевые соединения с высокой пропускной способностью обеспечивают загрузку больших объемов информации на локальные носители. Это дает возможность загружать больше информации, чем требуется непосредственно в данный момент, просто на тот случай, если предложенная пользователю дополнительная информация может ему пригодиться. В результате загрузки пользователь, как правило, получает документ, насыщенный большим количеством ссылок на самую разнообразную информацию, которая, как предполагается, может предоставлять для него интерес. В процессе ознакомления с содержимым таких документов пользователи обычно переходят к другим, дополнительно указанным документам и часто открывают одновременно несколько окон, чтобы иметь возможность быстро переключаться между документами для нахождения нужной информации. С подобной ситуацией, например, сталкивался каждый, кто использовал Web для поиска вариантов приобретения авиабилетов со скидкой. В этом случае пользователь открывает сразу несколько окон, соответствующих Web-сайтам различных компаний-перевозчиков, в каждом из которых можно получить информацию о тарифах в зависимости от дат вылета и прилета. Из окон браузеров эту информацию часто копируют в электронные письма или другие документы. Если пользователь сталкивается с информационно-насыщенной Web-страницей с множеством ссылок, то предугадать его дальнейшие действия довольно-таки трудно.
Щелкнет ли пользователь на ссылке?
Введет ли он новый адрес в адресной строке браузера?
Будет ли пользователь копировать некоторую информацию из Web-страницы в другой документ?
Запустит ли он программу электронной почты или службу мгновенного обмена сообщениями?
Количество возможных вариантов практически ничем не ограничивается, и поэтому в типичных случаях деятельность такого пользователя носит исследовательский характер.
Аналогичная схема использования характерна и для таких многофункциональных клиентских приложений, устанавливаемых на персональных компьютерах, как приложения электронной почты, электронные таблицы или такие приложения, предназначенные для создания содержимого, как текстовые процессоры и графические редакторы, а также инструментальные средства разработчика. Пользователи часто и совершенно произвольным образом "переключаются между задачами", чтобы получить нужную им информацию из различных источников и объединить ее, как того требуют текущие обстоятельства. Пользователь, готовящий текстовый документ, постоянно возвращается к его отдельным частям, изменяя состав содержимого и схему его компоновки, пересматривая текст и свободно переходя от одного места к другому в рамках документа. Пользователи могут переключаться на другие приложения для получения требуемой информации и копирования ее в документы, с которыми они работают. Пользовательский интерфейс, предлагаемый электронными таблицами, имеет еще более ярко выраженное исследовательское назначение, предоставляя в распоряжение пользователя огромное табличное пространство, позволяющее вводить, изменять и анализировать данные, рисовать диаграммы и решать различные задачи с использованием сценариев "что если". Инструментальные средства разработки приложений по самой своей природе являются инструментами исследовательской деятельности, предоставляя разработчику возможность быстро перемещаться в пределах документа для исследования разрабатываемого им кода и структуры пользовательского интерфейса, просмотра определений и преобразования кода, а также поиска справочных материалов, имеющих отношение к решаемым разработчиком задачам. В силу самой своей сути отладка программных кодов включает в себя элементы исследования, эксперимента и анализа.
Наилучшие приложения для настольных компьютеров предоставляют пользователям возможность всестороннего исследования информации. В отличие от этого лучшие образцы мобильных приложений обеспечивают пользователям возможность быстрой и эффективной фокусировки внимания на конкретных видах информации и услугах, позволяя при этом обходиться лишь минимальным количеством навигационных элементов управления или вообще без таковых.
Работа одного и того же пользователя с локальными документами на мобильных устройствах и настольных компьютерах происходит по-разному. Во многих случаях полезно иметь возможность использовать мобильные устройства для просмотра и незначительной правки текстовых документов, созданных на настольных компьютерах, однако мобильные устройства почти никогда не применяются для создания и подготовки документов. Ничуть не рискуя быть опровергнутым, можно побиться об заклад, что 90 процентов содержимого всех документов создается на настольных компьютерах, тогда как на устройствах эти документы главным образом лишь читаются.
Кроме приложений, используемых для путешествий по безбрежным пространствам Internet и обработки документов, существуют также пользовательские приложения. На настольных компьютерах можно встретить множество самых различных приложений подобного рода — специфические профессиональные приложения, коммуникационные и аналитические приложения, приложения для ввода и учета данных и так далее. Для всех таких приложений доступны их мобильные аналоги. Между приложениями этой категории, которые предназначены для использования на настольных компьютерах и мобильных устройствах, существуют те же различия в отношении "исследовательского или целевого" характера их использования, которые мы выше уже обсуждали. Чтобы быть полезными, приложения для мобильных устройств должны обеспечивать пользователям возможность большей концентрации на выполнении узкоспециализированных задач, чем это обеспечивается версиями этих же приложений для настольных компьютеров, которые ориентируются на более ярко выраженный "исследовательский" характер работы. Можно считать, что мобильные приложения просто предлагают иное представление данных и процессов по сравнению с аналогичными вариантами приложений, ориентированных на настольные компьютеры. В обоих случаях данные и процессы остаются одними и теми же, но способ их представления изменяется с учетом того, чтобы обеспечить как можно более быстрый доступ к ключевым элементам, которые могут понадобиться пользователю, работающему в мобильных условиях.
Распространенная ошибка разработчиков при переносе на мобильные устройства приложений, предназначенных для настольных компьютеров, заключается в том, что они пытаются сделать это, буквально "втискивая" приложение в устройство без внесения в него каких-либо существенных изменений. Если вспомнить обсуждавшиеся выше различия в способах использования приложений на настольных компьютерах и мобильных устройствах, то станет понятным, что такой подход просто не способен привести к получению удовлетворительных результатов.
Вторая распространенная ошибка состоит в том, что от приложения и его интерфейса постепенно отсекают некоторые их части до тех пор, пока приложение не сможет выполняться на мобильном устройстве. Близки к этому и попытки переноса на мобильное устройство крупного пользовательского интерфейса по частям путем его разбиения на ряд вложенных диалогов, которые удается отобразить на небольшом экране. В результате такого подхода вместо рационально продуманной версии приложения для мобильного устройства обычно получают лишь некое усеченное подобие приложения для настольных компьютеров, отличающееся меньшими функциональными возможностями. В этом отношении главным вопросом, на который необходимо дать ответ, является следующий: "Каким должно быть представление данных и процессов приложения, чтобы оно наилучшим образом удовлетворяло запросам тех, кто пользуется мобильными устройствами?" Получив ответ на этот вопрос, вы можете приступить к созданию пользовательского интерфейса с нуля.
Очень важно тщательно продумывать сценарии возможных действий пользователя при работе в мобильных условиях и специально оптимизировать решение соответствующих задач таким образом, чтобы они выполнялись эффективнее, чем на настольном компьютере. Не менее важен анализ того, какие части приложения не являются критическими для его мобильного варианта. Впоследствии об этих частях можно будет позаботиться лишь во вторую очередь или даже вообще отказаться от них. В обслуживании потребностей пользователя ваше приложение должно вести себя подобно линзе типа "рыбий глаз", предоставляя возможность "широкого обзора", но при этом оставаясь нацеленным на решение наиболее важных для пользователя задач.
Интересным примером многофункциональных клиентских приложений, выполняющихся на мобильных устройствах, являются мобильные Web-браузеры. Целесообразно сравнить между собой мобильные Web-браузеры и их настольные аналоги, чтобы выяснить, в чем состоит суть различий между ними. Благодаря этому мы получим в свое распоряжение неплохие метафоры для анализа того, как будут вести себя приложения для настольных компьютеров при их переносе на мобильные устройства и какие изменения необходимо в них внести, чтобы работать с ними в мобильных условиях было действительно удобно
В настоящее время Internet-браузеры предлагаются многими мобильными устройствами, однако по способу их использования браузеры этого типа отличаются от их аналогов, устанавливаемых на настольных компьютерах.
Несмотря на то что в их основе лежит одна и та же технология (оба типа браузеров обеспечивают визуализацию HTML-разметки при отображении документов), способы взаимодействия с ними пользователей заметно различаются между собой. Браузеры настольных компьютеров предназначены для доступа к как можно более широкому кругу Web-сайтов, а также для загрузки и отображения сложных документов. Задача же мобильных Internet-браузеров состоит в том, чтобы обеспечивать доступ к Web-сайтам, ориентированным на мобильные устройства, и загрузку документов с одновременным извлечением из них лишь наиболее существенной информации. Типичные мобильные браузеры работают одним из двух способов они либо 1) загружают содержимое, предназначенное специально для мобильных устройств, которое отличается упрощенными схемами компоновки страниц, меньшими размерами фотографий и изображений и приспособлено для просмотра в небольших окнах, либо 2) загружают обычное Web- содержимое, но пытаются вычленить из него и отобразить для пользователя лишь наиболее существенную его часть.
Следует отметить, что извлечение лишь наиболее существенной части содержимого типичных HTML-страниц с сохранением возможности приемлемого представления документов на мобильных устройствах является сложной проблемой. Учитывая огромное разнообразие возможных схем компоновки страниц с помощью HTML, а также тот факт, что наряду с основной информацией страницы заполняются второстепенным содержимым и рекламой, очень трудно определить, какая именно информация является наиболее существенной, и разместить эту информацию на небольшом экране мобильного устройства. Вместо того чтобы возлагать всю нагрузку на устройство, очень часто можно добиться лучших результатов, перекладывая решение большинства проблем на сервер. Часто такие популярные Web-сайты, как MSNBC или ВВС, предлагают отдельные версии содержимого, рассчитанные на мобильные устройства. Для решения этой задачи на двух упомянутых сайтах используются различные подходы, каждый из которых заслуживает внимания:
• http://www.msnbc.com/news/MobileChannel/mmc.asp. Этот Web-сайт автоматически подстраивает свой ответ под возможности браузера, выполняющего запрос. Результаты, получаемые при доступе к Web-сайту с обычного браузера настольного компьютера и браузера мобильного устройства, значительно различаются между собой.
• http://news.bbc.co.uk/text_only.stm. На этом сайте ВВС для представления Web-содержимого используются изображения с низким разрешением и ограниченное форматирование, что обеспечивает возможность эффективного просмотра содержимого на мобильных устройствах.
Задача отображения HTML-содержимого на мобильных устройствах может быть решена гораздо эффективнее, если сервер принимает участие в решении проблем, испытываемых устройством, и предоставляет упрощенное представление данных. Преодоление проблем, с которыми приходится сталкиваться приложениям на мобильных устройствах, за счет создания дополнительных специализированных служб на сервере — неплохая идея не только для Web-приложений, но и вообще для всех приложений, которым требуется доступ к данным, находящимся на сервере. Если для упрощения проблем разработки приложений, с которыми приходится сталкиваться в случае мобильных устройств, некоторую часть работы можно переложить на сервер, то в большинстве случаев этим надо обязательно воспользоваться.
Кроме того, в отличие от адресной строки браузеров настольных компьютеров, которая всегда на виду и используется довольно часто, адресная строка браузеров мобильных устройств во многих случаях остается скрытой, и ею пользуются гораздо реже. Из-за небольших размеров экрана и ограниченных возможностей механизма ввода, а также вследствие того, что на ввод URL-адресов уходит больше времени, а сама адресная строка занимает драгоценное экранное пространство, в случае мобильных устройств она менее употребительна. Добавьте к этому также тот факт, что значительную часть обычного Web-содержимого воспроизвести на мобильных устройствах приемлемым образом не удается. Все эти факторы заметно сужают возможности устройств в отношении полностью свободной навигации по адресам Web-сайтов.
Ничто из вышесказанного не должно создавать у вас впечатления, будто разработка Web-приложений для мобильных устройств и бесполезна, и неинтересна — это абсолютно не так! Существует немало отличных мобильных Web-приложений, предлагающих пользователю множество удобных возможностей при доступе к Web-ресурсам. В настоящее время, когда появились такие технологии разработки Web-приложений на стороне сервера, как ASP.NET Mobile Controls. Web-разработчикам стало легче создавать "мобильные представления" уже существующего Web-содержимого. Средства Web-просмотра для мобильных приложений всегда будут "приложениями-приманками", однако их эксклюзивность отличается от той, которая свойственна их аналогам для настольных компьютеров.
Форм-фактор
Ключевой и определяющей характеристикой большинства мобильных устройств являются их размеры. Этот физический фактор служит показателем полезности устройства — если оно способно уместиться в вашем кармане, значит оно полезно! Другими важными аспектами форм-фактора мобильных устройств являются следующие.
Приведенные выше соображения относительно форм-факторов устройств должны самым серьезным образом учитываться вами при разработке проекта. Разрешение проблем, обусловленных особенностями форм-фактора устройства, а также адаптация программного проекта к различным форм-факторам потребует от вас принятия нестандартных технических решений.
Редактор T9 позволяет быстро вводить текст на мобильных телефонах, имеющих стандартную 12-клавишную клавиатуру. До появления T9 пользователи, вводя текстовые предложения, должны были старательно нажимать на клавиши с цифрами от 1 до 9 вплоть до 4 раз, чтобы добиться ввода нужной буквы. В табл. 2.1 указаны суммарные количества нажатий, необходимые для ввода простого текста "text message" до и после появления T9.
Двенадцать клавиатурных нажатий вместо двадцати двух соответствуют 40-процентной экономии количества нажатий. На практике T9 позволяет сэкономить еще больше времени. Поскольку вам больше не надо выдерживать длительность пауз, подтверждающих конкретный ввод в тех случаях, когда вы хотите ввести две последовательные буквы, представленные одной и той же клавишей.
Например, как r, так и s представлены на клавиатуре клавишей с цифрой 7. Если вы хотите ввести слово
Как это все работает? Статистика! Когда вы нажимаете клавиши 8, 3 и 9, программное обеспечение просматривает свой словарь и определяет, что единственными наиболее вероятными словами, которые вы могли вводить, являются слова
Годится ли такой способ для написания романа "Война и мир" с помощью мобильного телефона? Разумеется, нет, но он прекрасно подходит для ввода предложения "Только что закончил чтение романа 'Война и мир' — очень длинная книга!" и отправки его своему другу.
Редактор Т9 отлично иллюстрирует идею "думающего телефона" и способы решения проблем, которые проявляются при вводе типичной информации в мобильные устройства. Эта конструктивная идея учит многому. Ключевой посыл можно было бы сформулировать так: "Не бросайтесь решать общие проблемы; решайте конкретные проблемы, с которыми сталкиваются ваши пользователи, а далее — оптимизируйте, оптимизируйте и еще раз оптимизируйте!"
Таблица 2.1. Нажатия клавиш мобильного телефона, необходимые для ввода текста "text message"
| Требуемая буква | Нажатия клавиш до появления Т9 | Нажатия клавиш после появления Т9 |
|---|---|---|
| Т | 8, = t | 8, = t |
| Е | 3,3, = d,e | 3, = е |
| X | 9,9, = w,x | 9, = х |
| T | 8, = t | 8, = t |
| <пробел> | 1, = пробел | 1, = пробел |
| M | 6, = m | 6, = m |
| E | 3,3 = d,e | 3, = e |
| S | 7,7,7,7, = p,q,r,s | 7, = s |
| S | 7,7,7,7, = p,q,r,s | 7, = s |
| А | 2, = а | 2, = а |
| G | 4, = g | 4, = g |
| E | 3,3 = d,e | 3, = e |
| Общее количество нажатий | 22 | 12 |
Требования надежности
Как ни парадоксально, но в отношении требований надежности мобильные устройства более близки к серверам, чем к настольным компьютерам. Причины этого заключаются в следующем:
В силу указанных причин очень важно, чтобы ваше мобильное приложение могло выполняться эффективно и бесперебойно в течение длительных периодов времени
Важные характеристики мобильных приложений
Сравнению и противопоставлению мобильных устройств и их приложений с их настольными и серверными аналогами мы отвели в этой главе достаточно много места и времени. Поэтому сейчас будет весьма уместно перечислить все то, что делает мобильное приложение по-настоящему качественным.
Время запуска
Важной характеристикой мобильных приложений является время их запуска. Поскольку мобильными устройствами обычно пользуются часто и в течение непродолжительных промежутков времени, способность мобильного приложения к быстрому запуску является обязательным требованием. Возможно, 6-секундное созерцание заставки текстового процессора, энциклопедии или среды разработки в ожидании появления основного окна соответствующей программы и доставляет мало удовольствия, однако, с учетом общей длительности типичного сеанса работы с такими приложениями, этот фактор можно считать малозначительным.
В случае же мобильного приложения, которое пользователь собирается использовать в течение 20 секунд для уточнения или обновления небольшой порции информации, потеря 6 секунд представляется непозволительной роскошью. Разумно руководствоваться мнемоническим правилом, согласно которому длительность сеанса работы пользователя с приложением должна намного превосходить длительность запуска этого приложения. В случае приложений для настольных компьютеров рабочие сеансы длятся дольше, и поэтому пользователи готовы мириться с периодами ожидания большей длительности. В случае же мобильных приложений длительность рабочих сеансов меньше, и поэтому выдвигается требование, чтобы длительность периода запуска приложения была соответственно меньшей. Длительность периода запуска приложения является важным фактором и в случае настольных компьютеров, но в случае мобильных устройств, которые характеризуются нерегулярностью и кратковременностью рабочих сеансов, этот фактор приобретает решающее значение.
Отклик устройства
Воспринимая мобильные устройства как послушные механические игрушки, люди ожидают от них соответствующего поведения. Когда пользователь воздействует на манипулятор, нажимает на кнопку или любым иным образом манипулирует элементами управления устройства, он рассчитывает на физическую реакцию с его стороны. Не получив немедленной реакции со стороны устройства, нетерпеливый пользователь начинает нервничать и тут же повторяет попытку выполнения нужной операции.
Если повторная попытка манипуляции элементом управления, выполнения щелчка или иного аналогичного действия будут обработаны вашим приложением или, ошибочно, другим приложением, то в результате этого могут возникнуть проблемы. Поэтому крайне важно заботиться о том, чтобы после выполнения каких-либо действий с устройством пользователь получал от него немедленное подтверждение реакции на эти действия в той или иной форме.
Идеальным вариантом такого подтверждения является выполнения запрошенной операции; лучше этого ничего быть не может. На втором месте в этом отношении стоит подтверждение того, что запрос получен и обрабатывается в фоновом режиме, в то время как приложение сохраняет способность воспринимать другие запросы. Третье место принадлежит отображению курсора ожидания, извещающего пользователя о том, что запрос обрабатывается; приложение ни на какие дальнейшие запросы не реагирует, но пользователь знает, что работа по обслуживанию его запроса начата и выполняется. Самый худший из вариантов — это когда пользователь не видит никакой ответной реакции со стороны устройства и ему остается лишь догадываться о том, воспринят его запрос или нет. Как и в случае других характеристик, которые мы будем изучать, эти требования не являются уникальными для мобильных устройств, но в данном случае они приобретают особое значение в силу специфики работы с этими устройствами и того, чего люди от них ожидают.
Фокусирование внимания на отдельных задачах
Еще одной характеристикой мобильного приложения, определяющей его успешность, является степень его специализации. Для приложения должен быть четко определен набор задач, эффективное решение которых оно должно обеспечивать; совершаемые при этом операции должны выполняться быстро и требовать лишь минимального количества щелчков, нажатий или иных действий со стороны пользователя.
Именно по этой причине в устройствах часто предусматриваются специальные кнопки, соответствующие отдельным задачам, которые способно решать данное устройство (например, кнопка для перехода непосредственно к базе данных, хранящей информацию о контактах, кнопка для просмотра календаря встреч или кнопка для считывания штрих-кода и передачи его определенному приложению).
Вы должны приложить максимум усилий к тому, чтобы как можно точнее определить круг тех часто встречающихся задач, решение которых должно требовать минимума действий со стороны пользователя. Этой рекомендацией следует руководствоваться как в отношении высокоуровневых функций приложения, так и в отношении низкоуровневых задач, которые обычно приходится решать пользователям в процессе работы с данным приложением. Например, если мобильное приложение должно обеспечивать быстрый ввод дат, то вы должны позаботиться о максимальном упрощении (и ускорении) указанного процесса и измерении его эффективности. Если ваше мобильное приложение должно обеспечивать возможность указания определенного местоположения при помощи схемы городских улиц, чтобы пользователь мог выбрать маршрут движения к конечному пункту назначения, то вы должны позаботиться о том, чтобы это могло быть сделано как можно быстрее.
Одна из распространенных ошибок, допускаемых разработчиками при создании приложений для мобильных устройств, состоит в том, что программный код стараются сделать как можно более коротким, чтобы тем самым максимально уменьшить размер приложения. Хотя подобные цели и являются благородными, они не должны достигаться за счет снижения производительности труда пользователей. Не жалейте времени на написание дополнительного кода, фокусирующего внимание пользователей на выполнении специализированных задач и позволяющего сократить время получения конечного результата
Настройка взаимодействия с внешними источниками информации
Очень важно понимать, что создание отличного мобильного приложения — это не только написание кода, который правильно выполняется на устройстве. Не следует забывать также о внешнем программном обеспечении, с которым взаимодействует ваше мобильное приложение. Необходимо, чтобы в приложении соответствующим образом учитывались особенности информационных источников, обслуживающих мобильные устройства, и осуществлялась проверка того, что информация предоставляется в той форме, которая соответствует данному устройству. В качестве примера можно привести службы электронной почты для мобильных устройств. Многофункциональные почтовые приложения требуют наличия соответствующего программного обеспечения как на стороне сервера, так и на стороне клиента. Клиент осуществляет доступ к серверу для получения информации относительно поступивших сообщений и загружает соответствующее содержимое в локальное устройство. Поскольку сетевые соединения, используемые мобильными устройствами, отличаются нерегулярностью доступа к ним, пониженной пропускной способностью, а во многих случаях и более высокой стоимостью по сравнению с теми соединениями, которые используются персональными компьютерами, почтовые службы сервера должны быть приспособлены для удовлетворения этих требований. Обычно это достигается за счет того, что на сервере предоставляются средства, позволяющие ограничивать объем загружаемого содержимого, или фильтры, пропускающие лишь ту информацию, которая действительно может потребоваться пользователю мобильного устройства. Для обеспечения поддержки эффективных сценариев при обслуживании мобильных устройств может потребоваться расширение функциональных возможностей тех служб на стороне сервера, которые первоначально предназначались для обслуживания персональных компьютеров. Кроме того, должны быть предусмотрены такие механизмы настройки конфигурационных параметров приложения для его выполнения на серверах, настольных компьютерах и самих мобильных устройствах, при помощи которых пользователи смогут определять свои информационные запросы и настраивать информационные фильтры таким образом, чтобы обеспечивалось выполнение соответствующих требований. Проектирование мобильных приложений далеко не ограничивается физическими границами самих мобильных устройств.
Единообразие стиля интерфейса
С учетом того, что любое мобильное устройство отличается компактностью и самодостаточностью, желание пользователей работать с интерфейсом, который не зависит от характера решаемых с помощью устройства задач, представляются вполне естественными. Каждое мобильное устройство имеет собственный функциональный колорит. Типичное удачно спроектированное приложение воспринимается не как разрозненный набор средств, а как гармоничное расширение возможностей самого устройства
По этой причине при проектировании приложений для мобильных устройств очень важно придерживаться единого стиля. Способы запуска и остановки приложений, перемещения в пределах интерфейса, а также организации диалогов между пользователем и приложениями должны тщательно продумываться отдельно для каждого типа устройств. Пользователи мобильных устройств подсознательно подстраиваются под метафоры пользовательского интерфейса, и любые отклонения от привычных шаблонов доставляют им ощутимые неудобства. Создание привычной рабочей среды много значит и в случае приложений для настольных компьютеров, но в силу разнообразия возможностей, которые предлагаются такими приложениями, они позволяют добиться одной и той же цели несколькими способами (например, при помощи сочетаний клавиш, щелчков мышью, меню и панелей инструментов). В случае же мобильных устройств для решения данной задачи часто имеется только один путь, и пользователь невольно привыкает к одному определенному способу. Гораздо лучше иметь четыре различных версии приложения, каждая из которых соответствует определенной метафоре пользовательского интерфейса конкретного устройства, чем одно общее приложение, которое не может быть интегрировано надлежащим образом ни в одно целевое устройство.
Различия в архитектуре компьютеров
Если воспользоваться аналогией из области архитектуры, то настольные и переносные компьютеры можно уподобить большим усадьбам в сельской местности. Тогда в отношении мобильных устройств можно сказать, что они похожи на отдельные или коммунальные городские квартиры. Каждый из этих типов жилищ предназначен для удовлетворения определенных нужд и выдвигает специфические требования относительно наиболее эффективных способов их использования.
Обычно усадьбы характеризуются крупными размерами, и в них имеется много мест, пригодных для хранения различных вещей. Одни из таких мест находятся неподалеку, тогда как добраться к другим несколько труднее. В усадьбах редко используемые вещи обычно хранятся на чердаках или в подвалах, откуда их можно периодически извлекать по мере того, как в них возникает необходимость.
С другой стороны, в условиях городских квартир мест, пригодных для хранения вещей, значительно меньше. В квартирах хранят вещи, которые должны быть всегда под рукой. Те же вещи, которыми пользуются редко, в квартире не держат. Вместо того чтобы приобретать редко используемые вещи, их часто выгоднее арендовать.
То же самое справедливо и в отношении мобильных устройств. Как оперативная память, так и память для долговременного хранения данных ориентированы на хранение той информации, которая используется чаще всего. Редко используемые данные должны выталкиваться на серверы, откуда их можно будет запросить, когда они потребуются.
В настольных компьютерах ОЗУ и долговременная память разделены. В то же время, в устройствах ОЗУ часто используются и как рабочая память приложений, и как промежуточная или долговременная память. В качестве долговременных хранилищ данных все чаще используется флэш-память, обычно в виде съемных карт памяти.
Объем ОЗУ современных многофункциональных мобильных устройств достигает 64 Мбайт. ОЗУ такого объема часто разделяются на программное ОЗУ и виртуальную файловую систему. Предположим, что 32 Мбайт такого ОЗУ приходится на файловую систему, предназначенную для хранения всех долговременных данных, с которыми вы работаете (такими данными могут быть фотографии, документы, музыка или другая информация). При этом в совместном распоряжении операционной системы и приложений остается 32 Мбайт. Допустим, что одновременно выполняются пять приложений (не столь уж редкая ситуация), каждое из которых использует примерно одинаковый объем ОЗУ, а сама операционная система использует те же ресурсы, что и отдельное приложение. В результате этого на каждое приложение приходится примерно 5-6 Мбайт ОЗУ. Хотя этот объем памяти и значителен, он далеко не бесконечен. Несколько крупных цифровых фотографий, перенесенных в память, израсходуют большую часть ОЗУ. Многие мобильные устройства располагают значительно меньшими рабочими объемами ОЗУ, а количество одновременно запускаемых приложений в реальных случаях может превышать то, которое мы использовали выше в качестве примера. Доступный на устройстве объем ОЗУ устанавливает абсолютный предел, превышение которого невозможно ни при каких обстоятельствах. Если имеющаяся физическая память устройства истощена, объекты не будут перемещаться в страничный файл, как это было бы в случае настольных компьютеров. Вероятнее всего, приложение израсходует всю доступную память и закончится аварийно.
Несколько мегабайт доступного рабочего пространства — это не так уж плохо при условии их эффективного использования, аналогично тому, как однокомнатная квартира на Манхэттене способна предоставить довольно много свободного места, если не забивать ее разным хламом. Стоит только перестать контролировать заполнение квартиры вещами, как очень быстро будет достигнуто критическое состояние, при котором в комнату больше ничего нельзя будет внести, и в ней останется ровно столько места, чтобы его едва хватало для перемещения в пределах квартиры. Будучи набитой лишними вещами, ваша комната станет бесполезной. Аналогичные соображения применимы и в случае мобильных устройств.
Резюме
Мобильные устройства существенно отличаются от настольных компьютеров и лэптопов. По этой причине между приложениями для мобильных устройств и приложениями для настольных компьютеров имеется множество различий. На настольных компьютерах работа с приложениями обычно осуществляется в виде длительных рабочих сеансов, и приложение считается удовлетворительным, если оно в состоянии предложить пользователю удобную среду для исследования информации, с которой ведется работа. Работа с приложениями для мобильных устройств обычно происходит во время нерегулярных, часто повторяющихся, но кратковременных рабочих сеансов. В силу этого хорошее мобильное приложение должно предлагать не универсальную среду исследовательского характера, а эффективную рабочую среду, сфокусированную на выполнении специализированных задач.
Малое время запуска, способность к быстрому отклику и целевая ориентация — вот отличительные признаки качественно спроектированного мобильного приложения. Будучи вместе взятые, эти факторы формируют в процессе использования мобильных устройств высокопроизводительную пользовательскую среду. Всегда помните об этом, когда проектируете создаете и тестируете свои приложения для мобильных устройств.
С точки зрения компьютерной архитектуры мобильные устройства отличаются от настольных компьютеров и лэптопов тем, что в своем большинстве они не оборудуются жесткими дисками и их ОЗУ используются как для выполнения программ, так и для хранения файлов. В настоящее время появляется все больше устройств, в которых для долговременного хранения файлов может использоваться флэш-память. Флэш-память обеспечивает неплохие возможности для организации долговременного хранения данных, но обычно она не может быть использована для расширения программного ОЗУ, как это делается в настольных компьютерах, в которых для расширения виртуальной памяти используются страничные файлы на дисках. Отсюда следует, что в случае мобильных устройств эффективное управление памятью имеет гораздо большее значение, чем в случае настольных компьютеров, в силу значительной ограниченности объема ОЗУ, используемого для выполнения программ.