Обоснование выбора средств разработки

Для реализации поставленных задач был выбран следующий язык программирования и среда разработки соответственно: Java, Android Studio.

Android Studio— это интегрированная среда разработки (IDE) для работы с платформой Android, анонсированная 16 мая 2013 года на конференции Google I/O.

Android Studio, основанная на программном обеспечении IntelliJ IDEA от компании JetBrains, официальное средство разработки Android приложений. Данная среда разработки доступна для Windows, OS X и Linux. 17 мая 2017 на ежегодной конференции Google I/O, Google анонсировал язык Kotlin используемый в Android Studio официальным языком программирования для платформы Android в добавление к Java и С++. Новые функции появляются с каждой новой версией Android Studio. На данный момент доступны следующие функции:

· расширенный редактор макетов: WYSIWYG, способность работать с UI компонентами при помощи Drag-and-Drop, функция предпросмотра макета на нескольких конфигурациях экрана;

· сборка приложений, основанная на Gradle;

· различные виды сборок и генерация нескольких .apk файлов;

· рефакторинг кода;

· статический анализатор кода (Lint), позволяющий находить проблемы производительности, несовместимости версий и другое;

· встроенный ProGuard и утилита для подписывания приложений;

· шаблоны основных макетов и компонентов Android;

· поддержка разработки приложений для Android Wear и Android TV;

· встроенная поддержка Google Cloud Platform, которая включает в себя интеграцию с сервисами Google Cloud Messaging и App Engine;

· Android Studio 2.1 поддерживает Android N Preview SDK, а это значит, что разработчики смогут начать работу по созданию приложения для новой программной платформы;

· новая версия Android Studio 2.1 способна работать с обновленным компилятором Jack, а также получила улучшенную поддержку Java 8 и усовершенствованную функцию Instant Run;

· platform-tools 23.1.0 для Linux без объявления стала исключительно 64-разрядной, даже при попытке установить 32-разрядную версию. Иными словами Android Studio больше НЕ работает (выдаёт неустранимые ошибки) в 32-разрядных версиях Linux;

· в Android Studio 3.0 будут по стандарту включены инструменты языка Kotlin основанные на JetBrains IDE;

Java — сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java-машины.

Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Основные модули программного средства

Основные классы программного средства:

· RealmHelper – класс, ответственный за работу с БД;

· RepositoryImpl – класс, реализующий паттерн «репозиторий», ответственнен за хранение и получение данных;

· SupportLangsGetter – класс, ответственный за получение списка поддерживаемых языков;

· TranslationGetter – класс, ответственный за получение перевода;

· DictionaryApi – интерфейс для работы с веб-сервером Яндекс Словаря;

· TranslateApi – интерфейс для работы с веб-сервером Яндекс Переводчика.

Класс RealmHelper

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

В таблице 1 представлены основные методы класса RealmHelper.

Таблица 1 – «Методы класса RealmHelper»

Название Входные параметры Описание метода Возвращаемое значение
clearHistory - Очистка истории Observable<Boolean>
readAllSupportLanguages - Получение списка всех поддерживаемых языков List<Language>
readAllSupportLanguages - Получение списка всех поддерживаемых языков List<Language>
writeLanguageResponseToRealm Language language Запись языка в БД Void
writeTranslationToRealm Translation translation Запись перевода в БД Observable<Boolean>
clearFavorites - Очистка избранного Observable<Boolean>
getHistory - Получение списка истории List<Translation>
getFavorites - Получение списка избранного List<Translation>

Класс RepositoryImpl

Этот класс реализуюет паттерн «репозиторий», ответственнен за хранение и получение данных;

Методы класса RepositoryImpl представлены в таблице 2.

Таблица 2 – «Методы класса RepositoryImpl»

Название Входные параметры Описание метода Возвращаемое значение
saveTranslation - Сохранить перевод Observable<Boolean>
deleteFavorites - Удалить избранное Observable<Boolean>
deleteHistory - Удалить историю Observable<Boolean>
getFavorites - Получить избранное List<Translation>
getSupportLanguages String ui Возвращает наблюдателя, параметризированного списком поддерживаемых языков Observable<List<Language>>
translateWithoutDict String text, String lang Возвращает наблюдателя, параметризированного неподробным переводом Observable<Translation>
translate String text, String ui Возвращает наблюдателя, параметризированного подробным переводом Observable<Translation>

Класс SupportLangsGetter

Данный класс отвечает за получение поддерживаемых языков.

Методы класса SupportLangsGetter представлены в таблице 3.

Таблица 3 – «Методы класса SupportLangsGetter»

Название Входные параметры Описание метода Возвращаемое значение
getLanguages - Получение списка поддерживаемы языков Observable<List<Language>>

Класс TranslationGetter

Данный класс отвечает за получение перевода.

Методы класса TranslationGetter представлены в таблице 4.

Таблица 4 – «Методы класса TranslationGetter»

Название Входные параметры Описание метода Возвращаемое значение
translate Translation translation Получение перевода Observable<Translation>
getHistory - Получить историю List<Translation>

Продолжение таблицы 4

getFavorites - Получить избранное List<Translation>
deleteHistory - Удалить историю void
deleteFavorites - Удалить избранное void
saveTranslation Translation translation Сохранить перевод void

Класс DictionaryApi

Интерфейс для работы с веб-сервером Яндекс Словаря.

Методы класса DictionaryApi представлены в таблице 5.

Таблица 5 – «Методы класса DictionaryApi»

Название Входные параметры Описание метода Возвращаемое значение
getDictionary String key, String lang, String text, String ui Запрос на получение подробной словарной статьи Observable<DictionaryResponse>

Класс TranslateApi

Интерфейс для работы с веб-сервером Яндекс Переводчика

Методы класса TranslateApi представлены в таблице 5.

Таблица 6 – «Методы класса TrasnlateApi»

Название Входные параметры Описание метода Возвращаемое значение
getSupportLanguages String key, String ui Запрос на получение списка поддерживаемых языков Observable<SupportLanguageResponse>
translate String key, String text, String lang Запрос на получение перевода Observable<TranslationResponse>

UML-диаграмма классов

Обоснование выбора средств разработки - student2.ru
На рисунке 1 и 2 изображена UML-диаграмма классов, которая отображает структуру программного средства, методы основных классов, рабочие сигнатуры и связи между объектами классов.

Рисунок 1 – UML-диаграмма классов

Обоснование выбора средств разработки - student2.ru
Рисунок 2 – UML-диаграмма классов


Наши рекомендации