Разработка GPS-приложения для Nokia N810: Часть 3. Завершение работы

Разработка GPS-приложения для Nokia N810: Часть 3. Завершение работы

Развертывание, сообщение об ошибках и их исправление, итеративная разработка и окончательный выпуск версии

 

Источник: IBM developerWorks Россия

Автор: Пол Ферилл (Paul Ferrill), технический директор, ATAC

Уровень сложности: средний

18.08.2009

В этой статье:

В этой серии статей
показывается, как построить приложение, работающее с глобальной
системой позиционирования (global positioning system, GPS), используя
Интернет-планшет Nokia N810, работающий под Linux, и его встроенный
GPS-приемник. В этой последней статье из трех мы делаем завершающие
штрихи в разработке GPS-навигатора и готовим его к выпуску.

В
части 1 и
части 2
этой серии из трех статей представлены средства и методы построения
приложения, работающего с глобальной системой позиционирования (global
positioning system, GPS), для Интернет-планшета Nokia N810. Основная
идея программы пришла в результате семейного путешествия на природу и
постоянного вопроса: "Мы уже на месте?" Получить ответ становится
легко, когда есть программируемое устройство со встроенным GPS. Все,
что нужно сделать, это загрузить несколько точек маршрута и — в путь!

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

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

Развертывание

Для
распространения программного обеспечения платформа Maemo использует
пакеты Debian. Nokia очень помогла разработчикам планшетов, четко
определив, как упаковывать приложения для распространения. В этом
процессе может оказать помощь полный набор учебных руководств на сайте Maemo.org,
а также 545-страничное справочное руководство для последнего выпуска
(Diablo). По сути, чтобы приложение правильно работало, нужно создать
.deb-файл и приложить все необходимое.

Поскольку в нашем приложении используется Python,
необходимы дополнительные меры, чтобы гарантировать работу программы.
Большинство современных дистрибутивов Linux® включают Python в
стандартную установку, поэтому обычно предполагается, что интерпретатор
Python будет в наличии. Для работы Python-приложения требуется, чтобы в
начале главного исходного файла была строка для запуска интерпретатора
Python, примерно такого вида:

#!/usr/bin/python2.5

Для N810 под управлением
самой последней версии OS2008 необходим Python версии 2.5.2,
установленный по умолчанию в /usr/bin. Символы #! в первой строке говорят интерпретатору командной строки, что нужно попытаться выполнить файл python2.5, находящийся в каталоге /usr/bin. Затем он берет остальную часть файла как входные данные для интерпретатора Python.

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

Установочные утилиты Python (Distutils) предоставляют
базовые средства для копирования файлов в надлежащие каталоги, то есть,
по существу, установки программного обеспечения. (См. в Resources ссылку на хорошее руководство по Distutils.) Все, что необходимо сделать — создать файл setup.py, примерно как в листинге 1.

Листинг 1. Процедура настройки Python для установки программы (setup.py)

	
from distutils.core import setup

setup(name='pyRWeThereYet',
version='1.0.0',
scripts=['pyRWeThereYet'],
data_files = [
('share/pixmaps', ['RWeThr_icon_26x26.png']),
('share/applications/hildon', ['pyRWeThr.desktop']),
]
)

В учебном руководстве по PyMaemo (см. ссылку в Ресурсах)
приведено хорошее описание этого процесса с приложением-примером
"hello". Другой вариант установки приложений на N810 — "установка одним
щелчком" с помощью файла .install. Это простой текстовый файл с
информацией о репозитории, куда можно загрузить приложение.

В конечном счете приложение нужно проверять после
развертывания на устройстве, но ошибки можно выловить и с помощью
Scratchbox или ESbox (подключаемый модуль для Eclipse — см. Ресурсы).
Можно пройти весь процесс, не прибегая к использованию устройства, пока
все не заработает, как нужно. То же самое относится ко всему процессу
разработки, хотя устройство все-таки потребуется для
аппаратно-зависимых модулей, например, GPS.

Сообщения об ошибках и исправления

В
большинстве проектов с открытым кодом используют какой-либо инструмент
для получения отчетов об ошибках и отслеживания ошибок. Это необходимо
для работы с сообщениями от пользователей. Хорошим местом для
размещения проекта с открытым кодом является существующий уже довольно
длительное время портал Sourceforge. Аналогичные возможности предлагает
Google (см. Ресурсы). Maemo.org предлагает практически такие же возможности на своем сайте Garage (см.
Ресурсы) для проектов, имеющих отношение к платформе разработки Maemo.

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

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

Одной из старейших существующих систем управления
версиями является Concurrent Versioning System (CVS). CVS — это проект
с открытым кодом, доступный практически для любой платформы. Еще одна
программа с открытым кодом, имеющая версии для всех платформ —
Subversion (SVN). Один из новейших инструментов для управления версиями
— GIT, первоначально созданный Линусом Торвальдсом. В нем есть ряд
возможностей, которые делают его особенно удобным для рассредоточенных
команд разработчиков, которым нужны такие функции, как быстрое
ветвление и слияние (см. в Ресурсах ссылки на эти инструменты).

Интегрированная
среда разработки (IDE) Eclipse предоставляет возможности для
подключения как CVS, так и Subversion. На сайте IBM® developerWorks®
есть хорошая статья, в которой обсуждается работа Eclipse с CVS, для
тех, кто хочет специально изучить этот процесс. Для поддержки
Subversion есть Subclipse — подключаемый модуль Eclipse, который
комплектуется графическим инструментом просмотра версий (см. ссылку в Ресурсах). Работа над подключаемым модулем для GIT в Eclipse еще продолжается, почитать о нём можно на сайте GitWiki.

В начало

Итеративная разработка

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

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

В нашем проекте воплотить новые требования было
нетрудно. В версии 0.2 добавилась возможность введения интересующих
пунктов на местности по широте и долготе. Возможность добавить нужные
пункты — это здорово, но что если была сделана ошибка и нужно изменить
или удалить существующую запись? Эти новые требования привели к
появлению версии 0.3. Неплохо сделать какую-либо проверку правильности
для полей ввода. Значения широты и долготы для Северной Америки имеют
допустимые верхние и нижние границы. Добавление этих проверок произошло
в результате сообщения об ошибке от пользователя, в котором указывалась
возможность неправильного расчета расстояния. Когда была определена
действительная причина, ею оказался неправильный ввод пользователем
(отсутствие знака минус [-] перед долготой).

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

В начало

Выпуск окончательной версии

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

Чтобы качество приложения стало как можно ближе к
коммерческому, необходимо сделать несколько завершающих штрихов.
Создание записи в диспетчере приложений N810 облегчит пользователю
запуск программы. Для определения информации, необходимой для запуска
приложения, в Maemo используется файл .desktop. В листинге 2 показано,
как будет выглядеть этот файл для GPS-приложения.

Листинг 2. Содержимое .desktop-файла

	
[Desktop Entry]
Version=1.0.0
Encoding=UTF-8
Name=GPS Are We There Yet?
Exec=/usr/bin/pyRWeThereYet
Icon=hello_icon_26x26
Type=Application

Подробнее узнать о файле .desktop можно на wiki сайта
freedesktop.org.
Еще одним хорошим завершающим штрихом будет пиктограмма приложения. Для
среды Maemo можно создать изображение размером 26х26 пикселов и
сохранить его в формате PNG (Portable Network Graphics). Можно
воспользоваться программой типа GNU Image Manipulation Program (GIMP) и
создать свое собственное изображение, или с помощью Google найти что-то
близкое к тому, что нужно, и соответствующим образом изменить его.

В начало

Заключительные мысли

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

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

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

Разработка для Nokia N810 — это настоящее удовольствие.
Средства разработки и форумы предоставляют множество ресурсов для
результативной работы. Пока ещё это один из самых маленьких из
имеющихся сегодня на рынке компьютеров с Linux. Хотя это, может быть, и
не самое мощное устройство в своем классе, у него определенно есть все
необходимое для реализации GPS-калькулятора расстояний для целей нашего
проекта.

Я хотел бы выразить признательность и отметить вклад
моего 19-летнего сына Мики (Micah), помогавшего с написанием кода на
Python для этой серии статей. Он также обеспечил работающую интеграцию
Eclipse с N810 и провел все необходимое тестирование различных версий.

Ресурсы

Научиться

Получить продукты и технологии

  • Subclipse предоставляет поддержку для Subversion.
  • Дополнительную информацию о CVS можно получить на сайте проекта CVS. Также хорошим выбором будут
    Subversion и GIT. (EN)
  • Scratchbox и ESbox
    предназначены для платформы Maemo и хорошо работают с Eclipse.
  • Используйте в вашем следующем проекте разработки для Linux
    ознакомительные версии ПО IBM,
    которые можно скачать непосредственно с developerWorks.

Обсудить

Об авторе

Пол Ферилл (Paul Ferrill) пишет для компьютерной прессы на протяжении более 20 лет. Он начинал с обзоров сетевых продуктов для PC Magazine,
в том числе таких, как LANtastic и ранние версии Novell Netware. У Пола
есть степени бакалавра и магистра технических наук в области
электроники. Он писал программы для такого количества компьютерных
платформ и архитектур, что уже сам не может вспомнить их все.