Выбор мобильной платформы и изучение инструментов разработки - Исследование алгоритмов

Практическая реализация алгоритмов, представленных в предыдущих пунктах, предполагает:

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

На современном рынке мобильных устройств конкурируют 3 основные операционные системы (ОС): Android, iOS и Windows Phone. Для того, чтобы определиться с выбором, в таблице 1.2 подготовлен краткий сравнительный обзор этих платформ.

В силу открытости, доступности и высокой распространенности, в качестве платформы была выбрана ОС Android.

Для работы с платформой Android была использована интегрированная среда разработки Android Studio 0.9.9 URL:https://developer. android. com/sdk/index. html, основанная на программном обеспечении IntelliJ IDEA и системе Gradle. Android Studio не случайно предпочтена среде Eclipse. Выбор обуславливается тем, что эта среда:

    - специально предназначена для разработчиков Android; - позиционируется непосредственно как замена Eclipse Конференция Google I/O, 03.2013 (в связи с чем рекомендован переход с Eclipse);

Таблица 1.2

Сравнительный обзор основных мобильных платформ Данные по мировому рынку мобильных устройств на 30.01.2015. URL: http://4pda. ru/2015/01/30/199363/

Доля устройств, использующих данную ОС, %

Ресурсозатратность разработки

Среда разработки

Язык разработки

Android

81,5

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

Eclipse IDE;

Android Studio

Java

IOS

14,8

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

Xcode IDE

Objective-C

Windows Phone

2,7

Низкая (за счет низкой конкуренции внутри магазина)

Microsoft Visual Studio

C++, C#, Visual Basic или XAML

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

Дополнительно была использована интегрированная среда разработки приложений на языке C++ Microsoft Visual Studio 2010.

Для того, чтобы получить возможность реализовать алгоритм обучения каскадного классификатора практически, в работе была использована библиотека машинного зрения OpenCV URL:http://opencv. org/ с открытым исходным кодом. Библиотека написана на оптимизированном C и C++, работает под Linux, Windows и Mac OS X. Фактически, OpenCV - это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения. Структурно библиотека OpenCV разделена на небольшие модули по функциональному использованию. Отдельно стоит отметить модуль методов и моделей машинного обучения opencv_ml. Так, OpenCV включает в себя подбиблиотеку общего назначения MLL (Machine Learning Library, Библиотека Обучения Машин). Эта подбиблиотека решает задачи статистического распознавания образов, классификации и кластеризации. В работе используется версия библиотеки OpenCV 2.4.9.

Заявленная библиотека подходит как для программирования на языке C++, так и для разработки под Android. Она предоставляет несколько утилит, необходимых для тренировки каскадного классификатора: Opencv_haartraining, Opencv_traincascade, Opencv_createsamples и Opencv_performance. Подробнее использование этих приложений описано в следующей главе.

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

    1) SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation и Dependency inversion):
      - принцип единственной обязанности класса (т. е. на каждый класс должна быть возложена только одна обязанность); - принцип открытости/закрытости программных сущностей (т. е. программные сущности должны быть открыты для расширения, но закрыты для изменения); - принцип подстановки Барбары Лисков (т. е. функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом); - принцип разделения интерфейса (т. е. несколько специализированных интерфейсов лучше, чем один универсальный); - принцип инверсии зависимостей (зависимости внутри системы строятся на основе абстракций, модули верхнего уровня не зависят от модулей нижнего уровня, абстракции не должны зависеть от деталей, детали должны зависеть от абстракций);
    1) DRY (Don't repeat yourself): принцип нацеленности на снижение повторения информации различного рода; 2) KISS (Keep it short and simple): принцип, при котором простота системы декларируется в качестве основной цели и/или ценности; 3) YAGNI (You Ain't Gonna Need It): принцип, при котором в качестве основной цели и/или ценности декларируется отказ от добавления избыточной функциональности, т. е. от функциональности, в которой нет непосредственной надобности.

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

    - независимыми от фреймворков; - тестируемыми; - независимыми от интерфейса пользователя (user interface, UI); - независимыми от баз данных; - независимыми от любой внешней службы.

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

Похожие статьи




Выбор мобильной платформы и изучение инструментов разработки - Исследование алгоритмов

Предыдущая | Следующая