■ Отсутствие необходимости в подключении силовых или сигнальных кабелей на длительное время. Чтобы эффективно выполнять свои функции, мобильные устройства не должны быть "привязанными" к чему-либо в течение длительных промежутков времени. Целесообразно руководствоваться общим правилом, в соответствии с которым устройства и выполняющиеся на них приложения не должны нуждаться в подключении к внешним источникам питания или кабельным коммуникационным линиям более одного раза в день. Насколько часто ваше приложение требует, чтобы устройство работало на полную мощность, а также насколько часто приложению требуется подключение к сетевым данным — это весьма важные факторы, которые следует учитывать при проектировании приложения.
Приведенные выше соображения относительно форм-факторов устройств должны самым серьезным образом учитываться вами при разработке проекта. Разрешение проблем, обусловленных особенностями форм-фактора устройства, а также адаптация программного проекта к различным форм-факторам потребует от вас принятия нестандартных технических решений.
Т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 часто работают в режиме постоянного включения или же для них предусмотрены режимы ожидания, гарантирующие, что после запуска устройства оно перейдет в состояние, аналогичное тому, в котором оно находилось при завершении последнего рабочего сеанса. Хотя и настольные компьютеры все чаще надолго оставляют во включенном состоянии, все же пользователи перезапускают их, начинают и заканчивают рабочие сеансы, не придерживаясь какой-либо определенной периодичности, а также довольно часто запускают и закрывают приложения, что время от времени приводит к сбросу ресурсов, необходимость в которых отсутствует. В противоположность этому, поскольку от мобильных приложений ожидается "мгновенная доступность", их часто оставляют выполняться в фоновом режиме, чтобы исключить периоды ожидания во время запуска и предоставить пользователям возможность продолжить работу с той точки, на которой она была прервана. По этой причине мобильные устройства похожи на серверы в том смысле, что они также должны всегда пребывать в состоянии готовности к немедленному предоставлению услуг своим клиентам.
■ Во многом подобно серверам, приложения мобильных устройств должны обеспечивать эффективную обработку неожиданных сбоев. Окружение, в котором функционируют мобильные устройства, предъявляет высокие требования к устойчивости работы приложений. Соединения часто разрываются, причем нередко это происходит как раз в процессе выполнения какой-либо операции. Пользователю ничего не стоит пошевелить батарею, находящуюся в гнезде в задней части телефона, если он замечает, что она близка к разрядке, или если ему покажется, что устройство работает несколько необычно. Сама операционная система может закрыть приложение в случае нехватки ресурсов. Более того, устройства теряются, их воруют, они падают в воду и вообще подвергаются в руках своих пользователей самым жестоким и суровым испытаниям, какие только можно себе представить. К этому также следует добавить, что пользователь всегда очень остро переживает пропажу своего мобильного телефона или невозможность его дальнейшей эксплуатации, поскольку он осознает, что вместе с телефоном лишился очень важной информации, восстановить которую будет очень трудно. В силу указанных причин мобильные приложения, как и серверы, ответственные за выполнение критически важных задач, должны заботиться о сохранении ценных данных и состояний, которыми они управляют, в долговременной памяти, обеспечивая их сохранность в случае неожиданного разрыва связи или сбоя приложения. Разработчики мобильных приложений должны рассуждать так же, как и разработчики критических серверных приложений, и предпринимать все необходимые меры для обеспечения безопасного сохранения важных для пользователей данных в форме, допускающей их восстановление, если в результате неожиданного сбоя данные окажутся запорченными. Кроме того, разработчики должны предусматривать резервное копирование данных путем их автоматической архивации на внешних носителях, чтобы пользователи имели возможность устранить последствия катастрофической потери важных данных; сами же пользователи редко утруждают себя созданием резервных копий критически важных данных, хотя необходимость этого должна быть совершенно очевидна.