Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Этапы разработки, тестирования и ввода в эксплуатацию мобильных приложений (Анализ языков программирования)

Содержание:

Введение

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

Объект исследования: мобильные приложения.

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

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

Для осуществления поставленной цели необходимо решить задачи:

- выявить особенности классификации мобильных приложений;

- выполнить анализ технологий разработки мобильных приложений;

- сделать анализ языков программирования;

- осуществить анализ сред программирования;

- рассмотреть этапы разработки мобильного приложения;

- разобрать тестирование.

1. Теоретические сведения о разработки мобильных приложений

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

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

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

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

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

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

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

Для разработчиков мобильных приложений более важной является классификация с точки зрения их структуры:

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

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

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

1.2 Анализ технологий разработки мобильных приложений

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

Это связано с тем, что для различных мобильных устройств приходится использовать различные языки программирования, обусловлено тем, что мобильные устройства имеют различные операционные системы. Целевая платформа (или платформы) - iOS, Android, Windows Phone, BlackBerry - будет иметь значительное влияние на язык разработки, которая будет использоваться. Например, можно разрабатывать родные приложения для каждой платформы или использовать сторонний инструмент для оптимизации своих приложений на различных платформах. Второй подход может сэкономить время и усилия, хотя это может повлиять на удобство использования. Современные мобильные устройства предлагают широкий спектр вариантов разработки. Проанализируем основные технологии, используемые для разработки приложений для мобильных телефонов.

Первая технология - это Java 2 Micro Edition (J2ME). Это набор спецификаций и технологий, предназначенных для различных типов портативных устройств. Существуют два основных направления: Connected Device Configuration (CDC) и Connected Limited Device Configuration (CLDC). Направление определяет тип конфигурации центральных библиотек Java, а также параметров виртуальной машины Java (в которой будут использоваться приложения). Устройства, использующие технологию CDC, будут более развитыми, в качестве примера можно привести коммуникаторы. К устройствам CLDC относятся обычные мобильные телефоны, которые аппаратно обладают более скромными возможностями (ресурсами). Специальные режимы позволяют определять функциональность конфигураций для различных типов устройств. Режим Mobile Information Device Profile (MIDP) предназначен для CLDC портативных устройств с возможностью общения. CLDC и MIDP закладывают основу реализации J2ME. Java-код интерпретируется непосредственно самим устройством при помощи так называемой Java Virtual Machine. Этот механизм делает возможным свободное распространение Java-приложений, так как они работают на всех устройствах с аналогичной Java-платформой. Программирование Java-приложений и на сегодняшний день занимает большую часть, так как большинство мобильных устройств (в основном мобильные телефоны) в мире имеют уже установленную Java- систему. Следующая популярная сегодня технология - это технология Qt. Она в основном используется в качестве кроссплатформенной среды, позволяет использовать написанные с ее помощью приложения на различных устройствах и операционных системах, в том числе Windows, Machine OS X, Linux, Symbian, Android и других. С возрастающей пользовательским базой Qt, растет и потребность во встроенных, мобильных приложениях и UI-разработчиков. Qt является одной из наиболее удачных библиотек для C ++. Отладки приложений, разработанных для мобильных устройств, происходит с помощью эмулятора, который содержится в среде разработки. Таким образом, можно писать сложные программы для мобильных устройств с использованием библиотек C ++ и поддержкой платформ.

Для работы Qt на мобильных устройствах необходима установка определенного фреймворка. Еще одной технологией является технология разработки Windows Phone SDK. Код приложения, разрабатываемого, описывается на языке XAML. Хотя на самом деле - это просто XML файлы с языком разметки XAML. Платформа Windows Phone не просто очередная платформа для мобильных устройств. Она включает в себя не только технологическую составляющую, но и полностью проработанную концепцию дизайна интерфейса и взаимодействия с пользователем под названием Metro-дизайн или стиль Metro. Вся разработка под Windows Phone ведется в среде Visual Studio. Для мобильных приложений под Windows Phone отладка и тестирование происходит с помощью эмулятора Windows Phone в среде разработки Windows Phone. Следующая технология разработки - это iPhone SDK. Разработка под операционную систему iOS возможна только с использованием Mac OS X. Но в Интернете можно найти статьи, как можно проводить разработку непосредственно на Macintosh и даже на VM. Стоит заметить, что Apple предоставляет инструменты бесплатно, но платить придется за подписку разработчика. Для написания программ под iPhone предлагается использовать Objective-C. При этом есть возможность писать так же и на C, и C ++ (для этого необходимо менять расширения файлов с .M на .Mm). Правда при этом полностью освободиться от Obj-C не удастся, почти весь API рассчитан именно на Obj-C, исключение составляют например OpenGL (хотя для его инициализации придется использовать несколько строк кода на Obj-C), так же полностью доступны стандартные библиотеки C / C ++. Отладки приложения происходит с помощью среды XCode и эмулятора iPhone установленного в ней.

Для написания приложений под Symbian можно использовать язык программирования C ++. Разработка для Symbian OS (если говорить о C ++) обычно ведется на ПК. Среда разработки - привычная для многих программистов Visual Studio, это также могут быть IDE Metrowerks CodeWarrior Development Studio, Borland C ++ BuilderX Mobile Edition, Carbide. C ++ (относительно новая IDE, созданная компанией Nokia на базе Eclipse), снабжена дополнительными инструментальными пакетами (SDK). Разработчику доступны практически все привычные возможности, как создание программное обеспечение (ПО), так и наладка (трассировки, просмотр переменных, стека вызовов, структур классов). Отладки программы запускается в эмуляторе Symbian OS. Эту подсистему правильнее было бы назвать симулятором, поскольку имитируются НЕ аппаратные средства, а лишь программное окружение (соответствующие API операционной системы, реализованные этаж API Win32). При этом программные модули, которые загружаются в эмулятор, представляют собой исполнимые файлы для архитектуры x86, соответствующее ПО для целевой платформы формируется после итоговой компиляции. Это предполагает определенную специфику, но сегодня эмулятор обеспечивает достаточно высокую степень сходства и проблемы возникают только при создании программ, которые нестандартно используют API. Для разработки под Android можно использовать среду Eclipse с установленным плагином ADT. Разработка ведется на языке программирования Java. Есть возможность налаживания с использованием эмулятора встроенного в ADT или непосредственно на мобильном устройстве с ОС Android. Существуют различные версии SDK, которые используются для написания кода для различных версий Android. Поддерживается почти полная обратная совместимость версий. Кроме разработки на языке Java поддерживается возможность более низкоуровневой разработки с использованием Android NDK (Native Development Kit) на языке C / C ++. На долю мобильных устройств на базе Android приходится 50 процентов всех пользователей. Создание приложений для этой платформы отличается от разработки сайта. В данном случае также уделяется внимание интерфейса - дружески и интуитивно понятном. Чтобы не исчезало желание использовать приложение каждый день, важно разработать прототипы и дизайн программы. Разработка приложений для Аndroid требует от разработчиков глубоких знаний и понимания принципов эффективного взаимодействия пользователя с приложением, законов дизайна.

Платформа Android предоставляет разработчикам наибольшую свободу выбора ОС, на которой разрабатывать приложения. Android разработчики могут использовать Windows, Mac или Linux. BlackBerry пользователи могут выбирать между Mac, Windows и Linux. Если вы хотите разработать для iOS и устройств Windows, единственным вариантом является Mac и Windows соответственно. Основные принципы проектирования программного обеспечения для мобильных устройств неизменны независимо от платформы и операционной системы, установленной на ней. Главными отличиями являются технические особенности, такие как инструментарий, API и SDK, парадигмы проектирования интерфейса.

1.3 Анализ языков программирования

На современном этапе развития компьютерных технологий существует большое количество языков программирования для разработки мобильных приложений. Для разработки приложений под платформу Android чаще всего используют язык Java, C # и C ++ (при разработке в Xamarin). Каждая из этих языков программирования имеет свои особенности и предназначена для решения задач определенного типа. Java значительно упрощает жизнь разработчиков, устанавливая жесткие ограничения на способы передачи параметров. Это особенно заметно при сравнении с C ++, где параметры можно передавать: 1) по значению, 2) по ссылке, а учитывая наличие указателей, код программы может стать чрезвычайно запутанным. Язык Java выигрывает в C ++ во многих аспектах и прежде всего упрощает написание кода за счет отсутствия: а) указателей, b) заголовочных файлов, c) множественного наследования. Язык C # разрабатывалась с учетом опыта многих более ранних языков программирования, в первую очередь C ++ и Java [3].

Java и C # подобные языки. Оба эти языки можно рассматривать, как попытку усовершенствовать C ++, и в обоих случаях это удалось. Свойства, характерные как для C #, так и для Java: 1) исходный текст программы компилируется в промежуточный код, не зависит от языка и платформы; этот код в дальнейшем выполняется в специальном управляемой среде; 2) автоматический сбор мусора (Garbage Collection) и запрет на использование указателей.

В C # допускается ограниченное использование указателей в блоках кода, обозначенных как "ненадежные"; 3) объекты создаются с помощью ключевого слова new, выделение памяти осуществляется с "купи" (heap), находящийся в распоряжении среды выполнения; 4) многопоточность поддерживается путем блокирования объектов; 5) интерфейсы, множественная реализация интерфейсов классом, однократное подражания базового класса производным; 6) внутренние классы; 7) отсутствие глобальных функций и констант, все элементы должны принадлежать классам; 8) массивы и строки из встроенной длиной и проверкой границ; 9) не применяются операторы «->», «::». Во всех случаях используется оператор «."; 10) null и boolean / bool является ключевым словам; 11) любая величина должна быть проинициализированы до того, как будет использована; 12) нельзя использовать целые числа (integers) для управления операторами if. Хотя в языках C # и Java достаточно много общего, но все равно нельзя их отождествлять. C # теоретически таким же портативным, как Java, но сегодня он поддерживается на гораздо меньшем количестве платформ. Java позволяют создавать независимые от платформы программы путем компиляции в промежуточное представление, которое называется байткод.

Преимущества языка Java:

1. Одно из основных преимуществ языка Java - независимость от платформы, на которой выполняются программы: один и тот же код можно запускать под управлением операционных систем Windows, Solaris, Linux, Machintosh и др. Это действительно необходимо, когда программы загружаются через Интернет для дальнейшего выполнения под управлением различных операционных систем.

2. Синтаксис языка Java похож на синтаксис языка C ++, и программистам, знают языка С и C ++, его изучение не составляет труда.

3. Кроме того, Java - полностью объектно-ориентированный язык, даже в большей степени, чем C ++. Все сущности в языке Java являются объектами, за исключением немногих основных типов (primitive types), например чисел.

4. Высокая надежность. Разработчики снабдили язык Java средствами, позволяющими исключить саму возможность создавать программы, в которых были бы скрыты наиболее распространенные ошибки. Для этого в языке Java сделано следующее: - исключена возможность явного выделения и освобождения памяти. Память в языке Java освобождается автоматически с помощью механизма сборки мусора.

Программист застрахован от ошибок, связанных с неправильным использованием памяти; - введены истинные массивы и запрещена арифметика указателей. Теперь программисты в принципе не могут стереть данные из памяти в результате неправильного использования указателей; - исключена возможность перепутать оператор присваивания с оператором сравнения на равенство. Теперь нельзя даже скомпилировать выражение if (еntries = 3); - исключено множественное наследование. Оно заменено новым понятием - интерфейсом. Интерфейс дает программисту почти все, что он может получить от множественного наследования, избегая при этом сложностей, возникающих при управлении иерархиями классов. Несмотря на все вышеперечисленные преимущества языка Java, решено осуществлять разработку мобильного приложения именно с ее использованием.

1.4 Анализ сред программирования

Для разработки приложений на языке программирования Java популярны Eclipse и Android Studio. Eclipse [4] - свободно модульные интегрированные среды разработки программного обеспечения. Разрабатывается и поддерживается Eclipse Foundation и включает проекты, такие как платформа Eclipse, набор инструментов для разработчиков на языке Java, средства для управления исходными кодами, визуальные построители GUI и тому подобное. Написанный в основном на Java, может быть использован для разработки приложений на Java и, с помощью различных плагинов, на других языках программирования, включая Ada, C, C ++, COBOL, Fortran, Perl, PHP, Python, R, Ruby (включая каркасом Ruby on Rails), Scala, Clojure и Scheme. Среды разработки частности включают Eclipse ADT (Ada Development Toolkit) для Ada, Eclipse CDT для C / C ++, Eclipse JDT для Java, Eclipse PDT для PHP. Eclipse представляет собой фреймворк для разработки модульных кросплатформових приложений с рядом особенностей: - возможность разработки ПО на многих языках программирования (родным является Java) - кросс-платформенных; - модульная предназначена для дальнейшего расширения независимым разработчиками; - с открытым исходным кодом; - разрабатывается и поддерживается фондом Eclipse, куда входят такие поставщики ПО, как IBM, Oracle, Borland. Eclipse прежде всего полноценная Java IDE, нацеленная на групповую разработку, имеет средства работы с системами контроля версий (поддержка CVS входит в поставку Eclipse, активно развиваются несколько вариантов SVN модулей, существует 28 пидтримкаVSS и других).

Учитывая бесплатность, во многих организациях Eclipse - корпоративный стандарт для разработки ПО на Java. Второе назначение Eclipse - служить платформой для новых расширений. Таковы C / C ++ Development Tools (CDT), разрабатываемые инженерами QNX вместе с IBM, средства для поддержки других языков разных разработчиков. Множество расширений дополняет Eclipse менеджерами для работы с базами данных, серверами приложений и других. Eclipse - это универсальная среда разработки, поддерживает много языков программирования. Есть и другие среды разработки с поддержкой Android (Net Beans, например), но для удобства используют среду Eclipse с установленным плагином ADT. Разработка ведется на языке программирования Java. Есть возможность налаживания с использованием эмулятора встроенного в ADT или непосредственно на мобильном устройстве с ОС Android. Для описания интерфейса приложений используется еще один язык - XML (расширяемый язык разметки). ADT плагин позволяет конструировать интерфейс Android-приложений без написания XML кода вручную. Этот же плагин связывает среду Eclipse с эмулятором Android-устройства. Эмулятор - это виртуальный аналог реального телефона с ограниченной функциональностью. Он необходим для тестирования написанных приложений.

Android Studio [5] - это относительно новая среда разработки Андроид приложений, основанная на платформе Intellij IDEA компании JetBrains. Среда разработки адаптировано для выполнения типовых задач, решаемых в процессе разработки приложений для платформы Android. В том числе в среду включены средства для упрощения тестирования программ на совместимость с различными версиями платформы и инструменты для проектирования приложений, работающих на устройствах с экранами разного разрешения (планшеты, смартфоны, ноутбуки, часы, очки и т.д.). Кроме возможностей, присутствующих в IntelliJ IDEA, в Android Studio реализовано несколько дополнительных функций, таких как новая унифицированная подсистема составления, тестирования и развертывания приложений, основанная на сборочном инструментарии Gradle и поддерживающая использование средств непрерывной интеграции. Для ускорения разработки приложений представлена коллекция типовых элементов интерфейса и визуальный редактор для их компоновки, предоставляет удобный предварительный просмотр различных состояний интерфейса приложения (например, можно посмотреть, как интерфейс будет выглядеть для различных версий Android и для различных размеров экрана). Для создания нестандартных интерфейсов присутствует мастер создания собственных элементов оформления, поддерживает использование шаблонов.

Android Studio имеет некоторые недостатки, а именно связанные с быстродействием: 1) процессы выполняются неоправданно долго, так как постоянная синхронизация с Gradle значительно замедляет компиляцию проектов, по сравнению с Eclipse; 2) частые зависания окон программы, очень медленная работа с SpellChecker.

2. Разработка моделей и структур мобильного приложения

2.1. Этапы разработки мобильного приложения

Бизнес-анализ целевого рынка

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

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

Планируются ли продажи / конверсия переходов в продажу товаров и услуг в рамках приложения?

Кто ваша целевая аудитория и за счет кого она может пополниться?

Насколько высока конкуренция в сфере, в которой вы планируете работать (в том числе — с приложением)?

Какими приложениями пользуется ваша аудитория и аудитория ваших конкурентов, пересекаются ли они между собой? Готовы ли они пользоваться вашим приложением вместо приложений-аналогов?

Каков бюджет на разработку и продвижение полученного приложения?

Выработка согласованного решения

Перед началом разработки необходимо получить от заказчика техническое задание (ТЗ) или предоставить ему бриф для заполнения и дальнейшей работы по этому документу.

После получения заполненного брифа и / или ТЗ можно приступать к прототипированию и составлению пользовательских профилей для оценки возможностей итогового продукта.

На основе видения дизайнера, бизнес-оценки и согласования подробностей ТЗ можно запускать процесс разработки.

Прототипирование

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

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

Написание кода и внедрение технологий

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

Тестирование

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

Создание предрелизной версии

В результате серии тестов и доработок приложения должна быть получена рабочая версия приложения. Именно эту версию и предстоит добавить в магазин приложений: Apple App Store, Google Play, магазин приложений Windows Phone (в зависимости от того, для какой платформы ведется разработка) или любой аналогичный сервис для дистрибуции приложений.

Добавление приложения в магазин

Финальный этап работы студии — добавление приложения на ревью в один из указанных выше магазинов приложений (в случае Componentix речь идет об App Store или о Google Play).

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

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

Поскольку эти услуги предоставляются отдельно от основного пакета услуг, то и оплачиваются отдельно. Помимо маркетинга и техподдержки возможно также размещение приложения в App Store или Google Play от имени заказчика (услуга White Label), обеспечение серверной поддержки для приложения.

Android использует специальные механизмы описания действий основанные на Internet. При необходимости выполнить действие (вызов, отправка почты, SMS) вызывается Internet. Для обмена данными между приложениями используется Content Providers. Обычно для создания проекта используются Android SDK, Java и IDE. Каждый язык программирования - уникальная и копирует методы и классы. В парадигме программирования, каждый из языков связана одна с одной концепциями, принципами и абстракциями, определяющих фундаментальный стиль программирования. Родных языках для Android является языка разметки XML, C ++ и C #.

Методы программирования под Android [6]: программирование под Android - это Java, приложения которой транслируются в байт-код, выполняемый виртуальной Java-машиной JVM; использование разметки RelativeLayout и свойство «fill_parent» для этой разметки; использование пустых элементов разметки TextField с нулевой высотой и шириной с параметром «centerInParent» равным «true» для выравнивания элементов по центру экрана; использование элегантных способов доступа к данным, таких как values [SensorManager.DATA_X]; использование методов onPause () / onResume () для сохранения или закрытия всего того, что этого требует; использование цветной разметки для объектов. Установление цвета фона для некоторых объектов. Это позволяет выделить ошибки и находить их быстрее; использование IDE, которая соответствует личным предпочтениям и требованиям разработчика.

Eclipse - IDE класса «все в одном» для которой существует множество дополнений. Eclipse имеет расширенный визуальный редактор интерфейса, есть возможность редактирования XML-файлов в GUI по принципу конструктора, просто собирая 32 Layout-и из предложенных «деталей»; плагин Eclipse MAT поможет найти истоки в памяти проекта; IntelliJ IDEA одна из самых быстрых и удобных IDE; использование нескольких рабочих мониторов для программирования. Добавление окна приложений на нескольких экранах (окно IDE, эмулятор, превью и документация) использование команды Source - Format для форматирования XML-файлов для приведения их в читабельный вид; использования плагина XML Tools для Notepad ++ для быстрого редактирования XML-файлов и понимание структуры кода использование Intents с помощью отдельного метода; избежание создания множества объектов. Использование существующих объектов; использования пулов потоков (thread pools), встроенных классов AsyncTask; хранения данных в SQLite, если они занимают большой объем; использование шаблонов (заранее заготовленные кусочки кода), которые можно быстро воспользоваться для вставки в проект при нажатии Ctrl + Space.

Существуют принципы разработки производительных приложений под Android. Основные из них: необходимо экономить аппаратные ресурсы, эффективно работать с выделением памяти, протоколировать и анализировать ход выполнения приложения, избегать лишних объектов и создавать методы статическими; для констант, классов необходимо использовать модификатор static final и не использовать enum там, где модификатор не вписывается.

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

База данных - совокупность данных, хранящихся в соответствии со схемой данных и отражают состояние объектов и их взаимосвязей, манипулирование которыми выполняются в соответствии с правилами средств моделирования данных. Базы данных является мощным и удобным способом хранения и пользования информацией. Они жизненно необходимы в огромном количестве учебных заведений, учреждений, организаций, предприятий. Важность баз данных трудно переоценить. Реляционная база данных - коллекция связанных таблиц. Разница между базой данных и реляционной базой данных находится в строении таблиц. Если вести учет компании на серии таблиц Excel, то работа идет только с базой данных. Можно получать информацию по каждой таблице, но тогда не будет возможности использовать информацию из одной таблицы в качестве основы для запроса информации, содержащейся на другом листе. В реляционной базе данных, таблицы построены так, что есть логическая связь между ними. На основании информации, найдено в одной таблице, можно получить соответствующую информацию из другой таблицы.

В Android используется база данных SQLite - это достаточно популярная, легкая и быстрая реляционная база данных [7]. Особенностью SQLite является то, что она не использует парадигму клиент-сервер, то есть движок SQLite не является отдельным процессом, с которым взаимодействует приложение, а предоставляет библиотеку, с которой программа компилируется и движок становится составной частью программы. Таким образом, как протокол обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том устройстве, на котором выполняется приложение. Простота реализации достигается за счет того, что перед началом выполнения транзакции весь файл, хранящий базу данных, блокируется; ACID-функции достигаются, в том числе за счет создания файла-журнала. Несколько процессов могут одновременно без проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, когда никаких других запросов в это время не обслуживается; иначе попытка записи заканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.

В комплекте поставки идет также функциональная клиентская часть в виде исполняемого файла sqlite3, с помощью которого демонстрируется реализация функций основной библиотеки. Клиентская часть работает из командной строки, и позволяет обращаться к файлу БД на основе типовых функций ОС. Благодаря архитектуре движка, возможно, использовать SQlite как на встраиваемых (embedded) системах, так и на выделенных машинах с гигабайтными массивами данных.

Особенности SQLite:

- транзакции атомарные, последовательные, изолированные и крепкие (ACID) даже после сбоев системы и сбоев питания;

- установление конфигурации - не требует ни установки, ни администрирования;

- база данных хранится в одном кроссплатформенном файле на диске;

- поддержка терабайтных размеров баз данных и гигабайтного размера строк и BLOB (Binary Large Object) - малый размер кода: меньше 350KB полностью настроен, и менее 200KB с опущенными дополнительными функциями; - быстрее популярные движки клиент-серверных баз данных для наиболее распространенных операций;

- простой, легкий в использовании API; написанная в ANSI C, включена привязка к TCL; доступны также привязки для десятков других языков;

- хорошо прокомментирован исходный код со 100% тестовым покрытием ветвей;

- доступен как единый файл исходного кода на ANSI C, который можно легко вставить в другой проект;

- автономность (нет внешних зависимостей) - кроссплатформенность: из коробки поддерживается Unix (Linux и Mac OS X), OS / 2, Windows (Win32 и WinCE). Легко переносится на другие системы;

- поставляется с автономным клиентом интерфейса командной строки, который может быть использован для управления базами данных SQLite.

Думая о построении различных таблиц, которые нужны в нашей базе данных, необходимо рассмотреть, как организовать эти таблицы и связать друг с другом. В основном, это будет сделано с помощью ключей. Есть 2 типа ключей в таблице: первичный ключ - значение, является уникальным для каждой записи; внешний ключ - первичный ключ одной таблицы находится в другой таблице. Использование SQLite дает разработчику и пользователю несколько неоспоримых преимуществ: - не нужно устанавливать дополнительное программное обеспечение; - данные хранятся в локальном файле, что создает прозрачность их контроля, то есть их можно просматривать и редактировать независимо от вашего приложения; - возможность импорта или экспорта таблиц в другие СУБД; - в коде используются привычные SQL запросы, что позволяет в любой момент перевести приложение на работу с другими СУБД .

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

2.2 Тестирование

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

Тестирование программного кода - процесс выполнения программного кода, направленный на выявление существующих в нем дефектов.

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

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

Анализ методов тестирования

Черный ящик

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

Белый ящик

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

Тестирование с использованием эмулятора

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

Ниже представлен список доступных инструментов для тестирования приложений среди самых популярных мобильных операционных систем:

1) Google Android Emulator. Android Эмулятор запускается на Windows как отдельное приложение без необходимости полностью загружать и устанавливать Android SDK.

2) Официальный Android SDK Emulator. Включает в себя эмулятор мобильного устройства, реализующий все аппаратные и программные особенности типичного устройства.

3) MobiOne. MobiOne Developer это mobile Web IDE для Windows помогает разработчику программировать, тестировать, отлаживать упаковывать и внедрять мобильные веб-приложения на устройства, такие как iPhone, BlackBerry, устройства на Android и Palm Pre.

4) TestiPhone. Основанный на браузере симулятор для быстрого тестирования веб-приложений для iPhone. Работает с использованием Internet Explorer 7, Firefox 2 и Safari 3.

5) iPhoney. Предоставляет точную среду веб-браузера, разработанная Safari. Может быть использована для разработки веб-сайтов для iPhone. Не является эмулятором iPhone. iPhoney запускается только на Mac OS X 10.4.7 и выше.

6) BlackBerry Simulator. Существует множество официальных эмуляторов BlackBerry. С любым из них возможна проверка того, как ПО, экран, клавиатура устройства будут работать с приложением. Для платформы Android самыми популярными эмуляторами являются: Bluestacks, Android SDK Emulator, Andy, Youwave, Oracle VM VirtualBox, GenyMotion. Ниже приведены их преимущества и недостатки.

Bluestacks [8] на данный момент является одним из самых известных эмуляторов для ПК благодаря довольно-таки простому интерфейсу и хорошего арсенала возможностей.

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

К явным минусам эмулятора можно отнести: некорректная работа в Windows x64; может встречаться проблема при запуске из-за конфликтов с антивирусом; сложность в работе с онлайн-приложениями.

Andy главный конкурент Bluestacks на рынке эмуляторов андроид. И не зря, поскольку программа имеет ряд преимуществ: согласно сравнительному анализу, Andy превосходит конкурента благодаря более стабильной работе игр; полноценная поддержка онлайн-приложений на ПК; возможность использования андроид-гаджета, как игровой контроллер; быстродействие в работе даже на слабых ПК, которая опять же направлено на игровую составляющую программы; настройка виртуальной машины Andy: объем оперативной памяти, необходимый приложением, количество ядер процессора и т.д. .; корректная работа с Windows x64.

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

Одно из преимуществ AVD при тестировании устройств возможность задавать произвольные значения для расширения и плотности пикселей экрана. Также Android SDK Emulator имеет и другие преимущества: возможность протестировать приложение на разных версиях ОС Android, на устройствах с различными типами дисплея; различные настройки, необходимые для тестирования, например, изменение ориентации экрана; эмуляция SD-карты.

Из недостатков можно выделить следующие: большой промежуток времени между нажатием кнопки «Run» и запуском программы на эмуляторе; эмулятор работает очень медленно.

Youwave отличный эмулятор Android для Windows, который не так известен, как эмуляторы Andy или Bluestacks, но также имеет ряд преимуществ: малые системные требования ПК, что позволит запустить эмулятор даже на слабом компьютере поддержка даже старых версий Аndroid, начиная с 2.3; интуитивный интерфейс.

Из явных минусов следует выделить отсутствие поддержки русского языка.

Oracle VM VirtualBox отличается от вышеназванных эмуляторов благодаря огромному арсеналу инструментов. Также кроме версии для ПК существует приложение для Windows-планшетов. Программа ориентирована больше на разработчиков приложений. Из отличительных качеств можно выделить следующие: возможность установить сразу несколько виртуальных систем Аndroid на ПК; большой функционал; стабильность при работе на различных версиях Windows.

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

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

Проанализировав все преимущества и недостатки эмуляторов, решено использовать Android SDK Emulator, так как он лучше всего подходит для разработки приложений на ОС Windows x64.

Тестирование автоматизированной системы

Для тестирования автоматизированной системы ведения, например, семейного бюджета применен функциональный вид тестирования на Android SDK Emulator. При данном подходе текст программы будет доступен и программа рассматривается как «черный ящик».

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

Заключение

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

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

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

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

Кроме того, сейчас разработчиком программы может стать абсолютно каждый.

Список литературы

  1. Классификация мобильных приложений [Электронный ресурс]. - Режим доступа: http://voroninstudio.eu/uk/service/razrabotka-mobilnih-prilozheniy
  2. Технологии разработки мобильных приложений. [Электронный ресурс]. - Режим доступа: http://lektsii.net/2-50017.html
  3. Языки программирования. [Электронный ресурс]. - Режим доступа: http://zei.narod.ru/Comparison_C__Java_Cpp_3.pdf
  4. Eclipse. [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/Eclipse
  5. Android Studio. [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/Android_Studio
  6. Методология разработки приложений. [Электронный ресурс]. - Режим доступа: http://android.mobile-review.com/articles/22580/
  7. SQLite. [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/SQLite
  8. Эмуляторы Android. [Электронный ресурс]. - Режим доступа: http://appstips.ru/articles/emulyatory-android.html