• Введение
  • Распространенные схемы использования мобильных устройств
  • Долговременные и кратковременные виды деятельности
  • Исследовательские и целевые виды деятельности
  • Форм-фактор
  • Требования надежности
  • Важные характеристики мобильных приложений
  • Время запуска
  • Отклик устройства 
  • Фокусирование внимания на отдельных задачах 
  • Настройка взаимодействия с внешними источниками информации
  • Единообразие стиля интерфейса 
  • Различия в архитектуре компьютеров 
  • Резюме 
  • ГЛАВА 2 

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

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

    (А.Н. Уайтхед (А.N. Whitehead, 1861-1947), английский математик и философ) ((Encarta 2004, Quotations))

    Введение

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

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

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

    Распространенные схемы использования мобильных устройств

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

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

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

    Долговременные и кратковременные виды деятельности

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

    Лэптопы в основном используются так же, как и настольные компьютеры, однако и в этом случае уже можно заметить признаки, характерные для использования мобильных устройств. Большее значение придается сокращению времени запуска (или пробуждения) приложения и возможности быстрого перехода пользователя к той работе, которой он занимался до завершения предыдущего рабочего сеанса. Вместе с тем, по характеру их использования лэптопы ближе к настольным компьютерам, чем к мобильным устройствам, что частично объясняется просто близостью физических размеров соответствующих категорий оборудования. Пока вы достанете компьютер из сумки, откроете крышку, запустите компьютер, доберетесь до приложения, с которым собираетесь работать, или подключитесь, если это необходимо, к сети, пользователь мобильного телефона успеет решить массу задач. Поэтому лэптопы очень далеки от модели типа "достань устройство из кармана и работай", соответствующей возможностям мобильных телефонов и PDA.

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

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

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

    Исследовательские и целевые виды деятельности

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

    Хорошим примером подобного рода исследовательского подхода к обработке информации может служить просмотр Web-ресурсов на настольном компьютере. Обычные сетевые соединения с высокой пропускной способностью обеспечивают загрузку больших объемов информации на локальные носители. Это дает возможность загружать больше информации, чем требуется непосредственно в данный момент, просто на тот случай, если предложенная пользователю дополнительная информация может ему пригодиться. В результате загрузки пользователь, как правило, получает документ, насыщенный большим количеством ссылок на самую разнообразную информацию, которая, как предполагается, может предоставлять для него интерес. В процессе ознакомления с содержимым таких документов пользователи обычно переходят к другим, дополнительно указанным документам и часто открывают одновременно несколько окон, чтобы иметь возможность быстро переключаться между документами для нахождения нужной информации. С подобной ситуацией, например, сталкивался каждый, кто использовал Web для поиска вариантов приобретения авиабилетов со скидкой. В этом случае пользователь открывает сразу несколько окон, соответствующих Web-сайтам различных компаний-перевозчиков, в каждом из которых можно получить информацию о тарифах в зависимости от дат вылета и прилета. Из окон браузеров эту информацию часто копируют в электронные письма или другие документы. Если пользователь сталкивается с информационно-насыщенной Web-страницей с множеством ссылок, то предугадать его дальнейшие действия довольно-таки трудно.

    Щелкнет ли пользователь на ссылке?

    Введет ли он новый адрес в адресной строке браузера?

    Будет ли пользователь копировать некоторую информацию из Web-страницы в другой документ?

    Запустит ли он программу электронной почты или службу мгновенного обмена сообщениями?

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

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

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

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

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

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

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

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

    Более пристальный взгляд на мобильные Web-браузеры

    Интересным примером многофункциональных клиентских приложений, выполняющихся на мобильных устройствах, являются мобильные Web-браузеры. Целесообразно сравнить между собой мобильные Web-браузеры и их настольные аналоги, чтобы выяснить, в чем состоит суть различий между ними. Благодаря этому мы получим в свое распоряжение неплохие метафоры для анализа того, как будут вести себя приложения для настольных компьютеров при их переносе на мобильные устройства и какие изменения необходимо в них внести, чтобы работать с ними в мобильных условиях было действительно удобно

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

    Несмотря на то что в их основе лежит одна и та же технология (оба типа браузеров обеспечивают визуализацию HTML-разметки при отображении документов), способы взаимодействия с ними пользователей заметно различаются между собой. Браузеры настольных компьютеров предназначены для доступа к как можно более широкому кругу Web-сайтов, а также для загрузки и отображения сложных документов. Задача же мобильных Internet-браузеров состоит в том, чтобы обеспечивать доступ к Web-сайтам, ориентированным на мобильные устройства, и загрузку документов с одновременным извлечением из них лишь наиболее существенной информации. Типичные мобильные браузеры работают одним из двух способов они либо 1) загружают содержимое, предназначенное специально для мобильных устройств, которое отличается упрощенными схемами компоновки страниц, меньшими размерами фотографий и изображений и приспособлено для просмотра в небольших окнах, либо 2) загружают обычное Web- содержимое, но пытаются вычленить из него и отобразить для пользователя лишь наиболее существенную его часть. 

    Создание оптимальных условий для работы в 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-просмотра для мобильных приложений всегда будут "приложениями-приманками", однако их эксклюзивность отличается от той, которая свойственна их аналогам для настольных компьютеров.

    Форм-фактор

    Ключевой и определяющей характеристикой большинства мобильных устройств являются их размеры. Этот физический фактор служит показателем полезности устройства — если оно способно уместиться в вашем кармане, значит оно полезно! Другими важными аспектами форм-фактора мобильных устройств являются следующие. 

    ■ Возможность пользоваться устройством в условиях большого скопления людей и повышенного шума. Именно эти обстоятельства иногда делают речевой ввод фактически непригодным, хотя и возможным с технической точки зрения. Не менее важно, чтобы и мобильное устройство не доставляло окружающим никаких неудобств (вот почему использование устройств со звуковым выходом будет уместным не при любых обстоятельствах). Множество людей, ведущих разговоры по своим мобильным телефонам во время поездки в переполненном вагоне, не способствуют созданию комфортной обстановки для остальных пассажиров. Если для вашего мобильного приложения требуется звук, продумайте варианты бесшумного режима работы или предусмотрите использование головных телефонов. 

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

    ■ Отсутствие необходимости в подключении силовых или сигнальных кабелей на длительное время. Чтобы эффективно выполнять свои функции, мобильные устройства не должны быть "привязанными" к чему-либо в течение длительных промежутков времени. Целесообразно руководствоваться общим правилом, в соответствии с которым устройства и выполняющиеся на них приложения не должны нуждаться в подключении к внешним источникам питания или кабельным коммуникационным линиям более одного раза в день. Насколько часто ваше приложение требует, чтобы устройство работало на полную мощность, а также насколько часто приложению требуется подключение к сетевым данным — это весьма важные факторы, которые следует учитывать при проектировании приложения.

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

    Т9 — прекрасный пример остроумного технического решения, позволяющего преодолеть ограничения, свойственные мобильным устройствам

    Редактор T9 позволяет быстро вводить текст на мобильных телефонах, имеющих стандартную 12-клавишную клавиатуру. До появления T9 пользователи, вводя текстовые предложения, должны были старательно нажимать на клавиши с цифрами от 1 до 9 вплоть до 4 раз, чтобы добиться ввода нужной буквы. В табл. 2.1 указаны суммарные количества нажатий, необходимые для ввода простого текста "text message" до и после появления T9.

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

    Например, как r, так и s представлены на клавиатуре клавишей с цифрой 7. Если вы хотите ввести слово cars, вам придется выждать одну секунду после ввода r, чтобы программное обеспечение распознало окончание ввода этой буквы и переместило точку вставки в позицию следующей буквы, которая будет вводиться. Каждый, кто хотя бы однажды попробовал пользоваться обоими способами ввода в течение нескольких дней, уже никогда не вернется к старому способу, существовавшему до появления редактора T9.

    Как это все работает? Статистика! Когда вы нажимаете клавиши 8, 3 и 9, программное обеспечение просматривает свой словарь и определяет, что единственными наиболее вероятными словами, которые вы могли вводить, являются слова vex и text, в связи с чем вам и предлагаются оба эти варианта. Когда вы нажимаете последнюю клавишу 8, программное обеспечение обнаруживает, что единственным из хранящихся в его словаре словом, согласующимся с набранной комбинацией, является слово text, которое вам и предлагается. Поддерживая словарь, содержащий слова и ключевые комбинации на вашем национальном языке, программное обеспечение может значительно повысить скорость написания коротких сообщений. Если вам необходимо выйти за пределы словарного запаса словаря, вы можете дополнить его вводом "неизвестных" слов, используя старый механизм ввода.

    Годится ли такой способ для написания романа "Война и мир" с помощью мобильного телефона? Разумеется, нет, но он прекрасно подходит для ввода предложения "Только что закончил чтение романа 'Война и мир' — очень длинная книга!" и отправки его своему другу.

    Редактор Т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

    Требования надежности

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

    ■ Во многом подобно серверам, мобильные устройства и их приложения нередко работают по 24 часа в сутки 7 дней в неделю. Сотовые телефоны и PDA часто работают в режиме постоянного включения или же для них предусмотрены режимы ожидания, гарантирующие, что после запуска устройства оно перейдет в состояние, аналогичное тому, в котором оно находилось при завершении последнего рабочего сеанса. Хотя и настольные компьютеры все чаще надолго оставляют во включенном состоянии, все же пользователи перезапускают их, начинают и заканчивают рабочие сеансы, не придерживаясь какой-либо определенной периодичности, а также довольно часто запускают и закрывают приложения, что время от времени приводит к сбросу ресурсов, необходимость в которых отсутствует. В противоположность этому, поскольку от мобильных приложений ожидается "мгновенная доступность", их часто оставляют выполняться в фоновом режиме, чтобы исключить периоды ожидания во время запуска и предоставить пользователям возможность продолжить работу с той точки, на которой она была прервана. По этой причине мобильные устройства похожи на серверы в том смысле, что они также должны всегда пребывать в состоянии готовности к немедленному предоставлению услуг своим клиентам. 

    ■ Во многом подобно серверам, приложения мобильных устройств должны обеспечивать эффективную обработку неожиданных сбоев. Окружение, в котором функционируют мобильные устройства, предъявляет высокие требования к устойчивости работы приложений. Соединения часто разрываются, причем нередко это происходит как раз в процессе выполнения какой-либо операции. Пользователю ничего не стоит пошевелить батарею, находящуюся в гнезде в задней части телефона, если он замечает, что она близка к разрядке, или если ему покажется, что устройство работает несколько необычно. Сама операционная система может закрыть приложение в случае нехватки ресурсов. Более того, устройства теряются, их воруют, они падают в воду и вообще подвергаются в руках своих пользователей самым жестоким и суровым испытаниям, какие только можно себе представить. К этому также следует добавить, что пользователь всегда очень остро переживает пропажу своего мобильного телефона или невозможность его дальнейшей эксплуатации, поскольку он осознает, что вместе с телефоном лишился очень важной информации, восстановить которую будет очень трудно. В силу указанных причин мобильные приложения, как и серверы, ответственные за выполнение критически важных задач, должны заботиться о сохранении ценных данных и состояний, которыми они управляют, в долговременной памяти, обеспечивая их сохранность в случае неожиданного разрыва связи или сбоя приложения. Разработчики мобильных приложений должны рассуждать так же, как и разработчики критических серверных приложений, и предпринимать все необходимые меры для обеспечения безопасного сохранения важных для пользователей данных в форме, допускающей их восстановление, если в результате неожиданного сбоя данные окажутся запорченными. Кроме того, разработчики должны предусматривать резервное копирование данных путем их автоматической архивации на внешних носителях, чтобы пользователи имели возможность устранить последствия катастрофической потери важных данных; сами же пользователи редко утруждают себя созданием резервных копий критически важных данных, хотя необходимость этого должна быть совершенно очевидна. 

    ■ Во многом подобно серверам, операционные системы и приложения мобильных устройств часто обходятся без использования файлов подкачки. Вероятнее всего, на вашем настольном компьютере по умолчанию поддерживается файл подкачки большого размера, который позволяет переносить неиспользуемые области памяти в файл на диске. Для файла подкачки существует также другое название — страничный файл. Если приложению в связи с его запуском или в соответствии с его запросами требуется память, а имеющейся в системе физической памяти для этого недостаточно, операционная система записывает в файл на диске те страницы памяти, к которым в последнее время не было обращений. Если впоследствии к этим страницам потребуется доступ, они будут восстановлены в памяти с диска, а на диск будут скопированы другие страницы. Благодаря этому ваш компьютер может функционировать так, словно он располагает ОЗУ гораздо большего объема, чем тот, который установлен на самом деле. Это делается для того, чтобы пользователи могли запускать одновременно несколько приложений, одно из которых выполняется с высоким приоритетом и сохраняет свою активность в максимально возможной степени. Кроме того, это позволяет сравнительно безболезненно сбрасывать на диск не освобожденную память, образовавшуюся в результате утечки, поскольку вполне вероятно, что приложение, в котором происходит утечка памяти, успеет завершиться еще до того, как она станет настолько заметной, что займет весь файл подкачки. На серверах, которые должны обеспечивать максимально возможную пропускную способность, эту стратегию стараются не использовать. Применяемая на серверах стратегия заключается в том, чтобы удерживать все объекты в физической памяти, где к ним возможен быстрый доступ. На устройствах же страничные файлы не используются постольку, поскольку в данном случае отсутствуют мощные диски, с которыми можно было бы быстро обмениваться страницами памяти. Установка таких накопителей на устройствах недопустима с точки зрения факторов стоимости, физических размеров, быстродействия и энергопотребления. Вы могли бы попытаться возразить, заявив, что "с теоретической точки зрения подкачку на устройствах можно организовать за счет использования одного из видов флэш-памяти", однако это практически невозможно, поскольку флэш-память не позволяет осуществлять частую многократную запись данных с высокой скоростью. 

    ■ Во время выполнения высокоприоритетных приложений многие мобильные устройства должны решать другие критически важные задачи. Если мобильный телефон окажется неспособным выполнять свои основные функции из-за аварийного завершения работы приложения, замедления реакции на действия пользователя, блокирования пользовательского интерфейса или иных причин, то разумеется, это доставит конечному пользователю мало радости. Для повышения надежности выполнения устройством своих основных функций в большинстве мобильных операционных систем предусмотрены различные уровни защиты, но если ваше приложение не организовано надлежащим образом, то вероятность снижения полезности устройства в отношении выполнения других функций не будет полностью исключена. В терминологии серверов подобные ситуации носят название "отказа в обслуживании" ("denial-of-service"). Как и серверы, многие мобильные устройства должны поддерживать ряд критических служб, которые должны быть доступны для пользователей в любое время.

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

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

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

    Время запуска

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

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

    Отклик устройства 

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

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

    Идеальным вариантом такого подтверждения является выполнения запрошенной операции; лучше этого ничего быть не может. На втором месте в этом отношении стоит подтверждение того, что запрос получен и обрабатывается в фоновом режиме, в то время как приложение сохраняет способность воспринимать другие запросы. Третье место принадлежит отображению курсора ожидания, извещающего пользователя о том, что запрос обрабатывается; приложение ни на какие дальнейшие запросы не реагирует, но пользователь знает, что работа по обслуживанию его запроса начата и выполняется. Самый худший из вариантов — это когда пользователь не видит никакой ответной реакции со стороны устройства и ему остается лишь догадываться о том, воспринят его запрос или нет. Как и в случае других характеристик, которые мы будем изучать, эти требования не являются уникальными для мобильных устройств, но в данном случае они приобретают особое значение в силу специфики работы с этими устройствами и того, чего люди от них ожидают.

    Фокусирование внимания на отдельных задачах 

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

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

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

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

    Настройка взаимодействия с внешними источниками информации

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

    Единообразие стиля интерфейса 

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

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

    Различия в архитектуре компьютеров 

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

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

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

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

    В настольных компьютерах ОЗУ и долговременная память разделены. В то же время, в устройствах ОЗУ часто используются и как рабочая память приложений, и как промежуточная или долговременная память. В качестве долговременных хранилищ данных все чаще используется флэш-память, обычно в виде съемных карт памяти. 

    Некоторые простые подсчеты, касающиеся размеров памяти

    Объем ОЗУ современных многофункциональных мобильных устройств достигает 64 Мбайт. ОЗУ такого объема часто разделяются на программное ОЗУ и виртуальную файловую систему. Предположим, что 32 Мбайт такого ОЗУ приходится на файловую систему, предназначенную для хранения всех долговременных данных, с которыми вы работаете (такими данными могут быть фотографии, документы, музыка или другая информация). При этом в совместном распоряжении операционной системы и приложений остается 32 Мбайт. Допустим, что одновременно выполняются пять приложений (не столь уж редкая ситуация), каждое из которых использует примерно одинаковый объем ОЗУ, а сама операционная система использует те же ресурсы, что и отдельное приложение. В результате этого на каждое приложение приходится примерно 5-6 Мбайт ОЗУ. Хотя этот объем памяти и значителен, он далеко не бесконечен. Несколько крупных цифровых фотографий, перенесенных в память, израсходуют большую часть ОЗУ. Многие мобильные устройства располагают значительно меньшими рабочими объемами ОЗУ, а количество одновременно запускаемых приложений в реальных случаях может превышать то, которое мы использовали выше в качестве примера. Доступный на устройстве объем ОЗУ устанавливает абсолютный предел, превышение которого невозможно ни при каких обстоятельствах. Если имеющаяся физическая память устройства истощена, объекты не будут перемещаться в страничный файл, как это было бы в случае настольных компьютеров. Вероятнее всего, приложение израсходует всю доступную память и закончится аварийно.

    Несколько мегабайт доступного рабочего пространства — это не так уж плохо при условии их эффективного использования, аналогично тому, как однокомнатная квартира на Манхэттене способна предоставить довольно много свободного места, если не забивать ее разным хламом. Стоит только перестать контролировать заполнение квартиры вещами, как очень быстро будет достигнуто критическое состояние, при котором в комнату больше ничего нельзя будет внести, и в ней останется ровно столько места, чтобы его едва хватало для перемещения в пределах квартиры. Будучи набитой лишними вещами, ваша комната станет бесполезной. Аналогичные соображения применимы и в случае мобильных устройств.

    Резюме 

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

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

    С точки зрения компьютерной архитектуры мобильные устройства отличаются от настольных компьютеров и лэптопов тем, что в своем большинстве они не оборудуются жесткими дисками и их ОЗУ используются как для выполнения программ, так и для хранения файлов. В настоящее время появляется все больше устройств, в которых для долговременного хранения файлов может использоваться флэш-память. Флэш-память обеспечивает неплохие возможности для организации долговременного хранения данных, но обычно она не может быть использована для расширения программного ОЗУ, как это делается в настольных компьютерах, в которых для расширения виртуальной памяти используются страничные файлы на дисках. Отсюда следует, что в случае мобильных устройств эффективное управление памятью имеет гораздо большее значение, чем в случае настольных компьютеров, в силу значительной ограниченности объема ОЗУ, используемого для выполнения программ.

    В отношении требований надежности мобильные устройства более близки к серверам, чем к настольным компьютерам. Точно так же как и в случае серверов, общая производительность системы определяется объемом установленного на устройстве ОЗУ, а сами устройства часто непрерывно работают без перезагрузки на протяжении недель или даже месяцев, если только пользователь не обнаружит, что режим работы устройства начинает резко отличаться от нормального. От того, насколько удачно вам удастся организовать управление ресурсами приложения, и, в частности, исключить возможность утечки памяти, будет в значительной мере зависеть общая производительность устройства и степень удовлетворения запросов конечного пользователя. Большую помощь в этом могут оказать среды выполнения управляемых кодов.

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







     


    Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх