Какой компонент управляет распределенным множеством данных приложения
Перейти к содержимому

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

  • автор:

1. Распределенные приложения. Введение

Зачастую для предоставления телекоммуникационных услуг требуется создание распределённых приложений (распределённых информационных систем).

Распределённое приложение – это программа, состоящая из нескольких взаимодействующих частей, каждая из которых, как правило, выполняется на отдельном компьютере (или другом устройстве) сети:

Например, одна часть приложения, выполняющаяся на компьютере пользователя, может поддерживать специализированный графический интерфейс вторая работать на мощном выделенном компьютере и заниматься статистической обработкой введенных пользователем данных, а третья — заносить полученные результаты в базу данных на компьютере с установленной стандартной СУБД. Распределенные приложения в полной мере используют потенциальные возможности распределенной обработки, предоставляемые вычислительной сетью, и поэтому часто называются сетевыми приложениями

Распределённая система – программно-аппаратное решение, состоящее из компонентов, функционирующих на физически удаленных и независимых друг от друга гетерогенных узлах, представляющееся пользователям единой объединенной системой.

Распределенные вычислительные системы обладают такими общими свойствами, как:

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

Недостатки распределённых систем:

  • коммуникационная среда – слабое место распределённых систем, поэтому ошибки в таких системах возникают чаще, чем в монолитных;
  • архитектура распределённого приложения сложнее чем монолитного.

Требования к разрабатываемым распределённым системам:

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

    1 Типовые архитектуры распределённых приложений

    К таковым относятся:

    • Клиент-сервер;
    • Мобильные агенты;
    • Тонкий клиент;
    • Архитектура peer-to-peer (P2P).

    1.1 Архитектура клиент-сервер

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

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

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

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

    Далее представлены несколько моделей, реализующих архитектуру клиент-сервер.

    1.1.1 Модель сервиса

    Модель сервиса реализует ситуацию, когда услугу выполняет не один, а несколько серверов, представляемых клиенту как единое целое. Т.е. сервер имеет сложную структуру.

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

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

    1.1.2. Технология Proxy

    Примером данной модели является привычная для нас структура: браузер – proxy-сервер — web-сервер.

    Отличие от предыдущих моделей заключается в том, что клиент соединяется не с сервером, а с некоторым промежуточным компонентом (посредником).

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

    Недостаток: при неправильном построении посредник может стать узким местом системы в целом.

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

    1.2 Мобильные клиенты

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

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

    1.3 Тонкий клиент

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

    Решить эту проблему можно, используя технологию «тонкого клиента». Суть этой технологии состоит в том, что клиент выполняет очень ограниченную по функционалу задачу (часто — только прием ввода с клавиатуры и других устройств и обработка команд рисования). Схема работы подобных систем в простейшем случае следующая. Клиентская программа передает весь ввод пользователя (нажатия клавиш, движение мыши и т.д.) по сети серверу.

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

    1.2 Архитектура P2P (Peer to Peer)

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

    Таким образом, на одном и том же узле в один момент выполняются части системы, обрабатывающие запросы других частей (и узел выполняет «серверную» часть), а в другой момент времени — части системы, посылающие запросы (и узел выполняет «клиентскую» часть). Причем приложение может быть устроено так, что вызывающая часть не знает, локально или удаленно расположена вызываемая.

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

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

    Помимо чистых P2P-сетей, существуют так называемые гибридные сети, в которых существуют серверы, используемые для координации работы, поиска или предоставления информации о существующих машинах сети и их статусе (on-line, off-line и т. д.). Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря гибридным схемам с независимыми индексационными серверами, синхронизирующими информацию между собой. При выходе из строя одного или нескольких серверов, сеть продолжает функционировать. К частично децентрализованным файлообменным сетям относятся, например EDonkey, BitTorrent.

    Разработка приложений для Android 4.0

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

    ИНТУИТ

    Внимание !
    Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!
    Какой метод не участвует в жизненном цикле Activity

    Где хранится сертификат приложения (cert.rsa) при построении в APK?

    Что такое кибернетика?

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

    Что такое информационная революция?

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

    На сайте размещено приложение. Как пользователь сможет установить это приложение?

    пользователи должны запустить Development Mode на своем устройстве
    Google должен предоставить сайту подписанные SSL сертификаты, которые должны быть установлены на веб-сервере
    пользователи должны активировать опцию Unknown Sources в настройках своего устройства
    файл .apk должен быть подписан распознаваемым сертификатом

    Когда началась кибернетическая революция?

    Что считается ключевым ресурсом в настоящее время?

    Необходимо проверить имеет ли вызываемый процесс разрешение для программного доступа к сервису. Что для этого используется?

    Что такое адаптивность?

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

    Что такое SoC?

    System on Chip
    System of Control
    System of Chaos

    Что значит, что узлы i и j согласованы?

    их состояния совпадают со средним состоянием системы
    их состояния равны нулю
    их состояния совпадают

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

    будут сжаты
    удалятся
    останутся
    будут скопированы на внешнее устройство
    будут зашифрованы и сохранены, на случай, если приложение будет переустановлено

    Что такое онтология?

    совокупность накопленных знаний
    алгоритм распределения информации
    функция управления

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

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

    На Android market опубликовано приложение, в файле манифеста которого прописана 5-я версия maxSdk. От пользователей поступают жалобы, что после обновления Android до версии 2.0.1 (API level 6) они не могут использовать данное приложение. После какого обновления приложение сможет работать на новой версии Android?

    установить 6-ю версию targetSdk или выше, и удалить предыдущие элементы из файла манифеста
    выполнить метод upgradeApp() в классе Activity
    опубликовать новую версию приложения, настроенную под новую версию ОС
    установить 6-ю версию targetSdk или выше, и удалить предыдущие элементы из файла манифеста
    добавить в файл манифеста элемент <upgrade previous=»5″ new=»6″ />

    К какому термину в последнее время приравнивают термин встроенные системы?

    Какая последовательность понятий более правильна при построении связи информация-управление?

    информация, сигнал, данные, знания, управление
    информация, данные, знания, сигнал, управление
    информация, сигнал, знания, данные, управление

    Когда вновь обретенная информация становится значимой (обретает смысл)?

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

    Как влияют помехи на сбор данных в любом регистрирующем устройстве?

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

    В каком случае информация может быть значимой?

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

    К какой тематике заметен всплеск теории управления в последнее время?

    управление персоналом
    конструкция роботов
    управления в сетях объектов

    «Собирателем» каких основных компонент прогресса второй половины XX вв. выступает теория управления?

    теория управления, теория коммуникаций, информатика
    теория управления, имитационное моделирование
    теория управления, теория вероятности

    Для чего предназначен Android SDK?

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

    Что такое Eclipse?

    Java-машина
    среда разработки
    Операционная система

    Какие версии Android API поддерживаются SDK?

    любые по выбору программиста
    только самая свежая версия
    только те версии, которые включены в установочный файл SDK

    Что нельзя сделать с помощью плагина ADT?

    запустить сеанс отладки Android-приложения в Eclipse
    создать Android-проект в Eclipse
    запустить Eclipse в Dalvik

    Как называется базовый класс кнопок в Android API?

    Для чего предназначен класс ListAdapter?

    корректное отображение списка внутри layout
    связывает данные списка и их представление на экране
    содержит список адаптеров Android

    Как размещает виджеты LinearLayout?

    в зависимости от возможностей экрана устройства
    и по горизонтали, и по вертикали
    только по вертикали
    только по горизонтали

    На каких устройствах возможна отладка Android-приложений через ADB?

    только на виртуальных
    только на реальных
    и на реальных, и на виртуальных

    Что такое logcat?

    система ведения лога Android
    протокол для отладки Java-приложений
    демон для отправки информации о сбое

    Какая фильтрация сообщений возможна в logcat?

    по тэгу и приоритету
    по дате
    по PID

    В чем основные отличие децентрализованной стратегии управления от централизованной?

    отсутствие жестко ориентированных связей
    отсутствие единого центра принятия решений
    отсутствие помех и задержек

    Какими основными свойствами обладает интеллектуальный агент?

    адаптивность, социальность.
    реактивность, автономность, адаптивность.
    реактивность, проактивность, социальность

    С какими непреодолимыми сложностями сталкиваются классические методы решения задач в современных реальных условиях?

    требуется постоянное обновление информации о текущем состоянии среды
    требуется найти адекватную математическую модель
    требуется огромный объем ресурсов

    В чем заключается мультиагентный подход решения задач?

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

    В какой схеме проектирования программного обеспечения каждой сущности ставится в соответствие программный агент, который представляет интересы данной сущности?

    «Традиционной» схеме на основе детерминированного алгоритма
    на базе мультиагентной системы
    электронной

    Какие ситуации называются проявлением эмерджентного интеллекта?

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

    Что понимается под термином «Интеллект роя»?

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

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

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

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

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

    способность одновременно получать информацию со всех элементов системы
    способность самостоятельно принимать решения и автоматически перестраиваться под изменения в среде
    способность выделения дополнительных ресурсов для решения новых задач

    Верно ли следующее определение агента: агент — разумная сущность, помещенная во внешнюю среду, способная взаимодействовать с ней, совершая автономные рациональные действия для достижения целей?

    да
    нет, агент не совершает автономных действий
    нет, агент может взаимодействовать только с другими агентами, а не со всей средой

    Как соотносятся желания и намерения агентов?

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

    В чем заключается свойство агента — реактивность?

    агент может реагировать на близость к другим агентам
    агент может собирать информацию о состоянии внешней среды
    агент ощущает внешнюю среду и реагирует на изменения в ней

    В чем заключается свойство агента — социальность?

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

    В чем заключается свойство агента — проактивность?

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

    Где задается внешний вид интерфейса пользователя приложения camserver?

    во внешнем файле ресурсов
    в исходном тексте
    в файле проекта

    В каком файле необходимо прописать оборудование и функции, которые будем использовать в приложении?

    Какой, на сегодняшний день, рекорд скорости радиоуправляемой модели самолетов с реактивным двигателем?

    150 км/час
    300 км/час
    400 км/час
    свыше 400 км/час

    Как распределяются задачи в МАС?

    задачи распределены между агентами
    задачи поступают к одному из агентов – к агенту-лидеру
    задачи поступают на общий сервер, после чего распределяются между агентами

    Верно ли, что МАС обычно состоит из следующих основных частей: множество организационных единиц, среда, множество отношений между агентами, множество задач?

    да, верно
    нет, отсутствует множество действий агентов
    нет, отсутствует множество намерений

    Какие стандарты для интеллектуальных агентов поддерживает JADE?

    Что такое JADE?

    Java Autonomous Development Environment
    Java Agent Development Framework
    Java Agent Development Environment

    Какого типа агенты поддерживаются в JADE?

    простые, а также агенты с одним дополнительным свойством
    от простых, только реагирую¬щих, до сложных — ментальных
    простые, только регистрирующие

    К проектам на каком языке подключается JADE?

    Что такое BDI?

    платформа для разработки МАС, основанная на убеждениях-желаниях-намерениях
    модель логики агентов, основанная на убеждениях-желаниях-намерениях
    стандарт для интеллектуальных агентов

    Для чего используется язык KQML?

    для описания агентов в среде MadKIT
    для общения агентов
    для описания агентов в среде AgentBuilder

    Что такое MASON?

    платформа для разработки мультиагентных систем
    Java библиотека для моделирования мультиагент¬ных систем
    язык для описания агентов

    Для чего чаще всего используются МАС в промышленности?

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

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

    детектор образов
    конструктор сцены
    адаптивный планировщик

    Для чего может эффективно использоваться МАС в компании, занимающейся перевозками пассажиров (такси)?

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

    Есть ли в схеме взаимодействия модулей инструментальной системы отдельный модуль, отвечающий за улучшение конфигурации сети?

    да, эволюционный дизайн
    нет, за это отвечает конструктор сцены
    нет

    Что делает моделирующая система в схеме взаимодействия модулей инструментальной системы?

    строит план распределения заказов
    осуществляет моделирование ситуации по принципу «Что если?»
    строит модель системы

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

    адаптивный планировщик
    конструктор сцены
    редактор онтологии

    Может ли контейнер в JADE содержать несколько агентов?

    контейнеры вообще не содержат агентов
    нет, он может собержать только одного
    да

    Сколько стоит лицензия на покупку платформы JADE?

    50$
    200$
    JADE – бесплатная платформа

    Есть ли в JADE, который управляет другими агентами?

    да, AMS агент
    нет
    да, DF агент

    Какой контейнер должен быть создан первый?

    контейнеры создаются все одновременно
    любой
    главный контейнер

    Что представляет ил себя агент DF агент?

    это главный контейнер
    это желтые страницы, в котором записываются адреса, имена и возможности агентов в системе
    это агент, который управляет другими агентами

    Что нужно сделать, чтобы добавить нового агента в главный контейнер?

    перейти в меню Run Configuration
    создать новый класс в папке \src
    войти во вкладку Action и добавить класс нового Агента

    Что нужно сделать для того, чтобы создать нового агента в JADE?

    создать новый класс в папке \src
    обратиться к агенту AMS
    нажать Add External JARs и указать путь к новому агенту

    Верно ли, что в задаче достижения консенсуса каждый агент стремится уменьшить откло¬нение своей целевой переменной от соответствующих переменных своих соседей?

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

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

    задачи достижения консенсуса
    задачи управления формациями
    задачи рандеву

    Какие задачи чаще рассматриваются в системах с огромным числом?

    Что понимается под задачей рандеву?

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

    А каких случаях алгоритмы стохастический аппроксимации с убывающим размером шага показывают плохую работоспособность?

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

    Применяются ли алгоритмы стохастический аппроксимации с убывающим размером шага для управления стохастическими системами?

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

    Для чего используется теория графов в описании задачи достижения консенсуса?

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

    Что означает, что узел j является соседом узла iв ориентированном графе?

    Узел i может передать информацию узлу j, а узел i получает информацию от узла j
    Узел i получает информацию от узла j
    Узел i может передать информацию узлу j

    В каком случае считается, что все узлы системы достигли консенсуса?

    когда состояния всех узлов совпадают и равны среднему значению по всех системе
    когда все узлы согласованы
    когда все состояния равны нулю

    Какую информацию имеет каждый узел в каждый момент времени для формирования управления?

    информацию о собственном состоянии и о состояниях соседей
    зашумленные наблюдения о состояниях соседей
    зашумленные наблюдения о состояниях соседей и о собственном состоянии

    В чем заключается задача балансировки загрузки сети?

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

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

    пульт управления
    излучатель радиосигнала
    приемник радиосигнала для телеметрии
    наземную базовую станцию
    другие средства связи (радиомодем, Wi-Fi, Bluetooth)

    только 2 первых элемента
    только 4 первых элемента
    могут включать все эти элементы
    не может включать ни одного элемента

    Комплекс электронного оборудования в современных радиоуправляемых самолетах может включать в себя следующих элементов:

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

    могут включать все эти элементы
    только 5 первых элементов
    только 4 первых элемента
    только 6 первых элементов

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

    аналоговый и цифровой
    цифровой
    аналоговый

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

    с полым ротором
    бесколлекторный двигатель
    шаговый
    коллекторного двигателя

    Как называется коэффициент в протоколе консенсуса?

    шаг дискретизации
    весовой коэффициент
    размер шага протокола управления

    Как влияет коэффициент на скорость сходимости к консенсусу?

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

    Какого типа аккумуляторные батареи, не могут работать при низких температурах (ниже минус 5 град. С)?

    батареи типа LiFePO4
    батареи типа Pb, Ni-Mh, Ni-Cd
    никакие
    батареи типа Li-Po

    В современном навигационном оборудовании беспилотных летательных аппаратах применяют системы:

    обе системы
    ни одной из них
    GPS
    ГЛОНАСС

    Какая схема построения управления комплексом стабилизации используется в БПЛА в представленном проекте?

    Квадрокоптер, это:

    самолет
    подводная лодка
    летательный аппарат с четырьмя моторами
    новый тип автомобиля

    Какой датчик установлен практически в каждом мобильном устройстве?

    градусник
    фотокамера
    тепловой датчик
    акустический датчик

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

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

    Как обычно происходит обмен данными, если используются несколько БПЛА при использовании двухуровневой системы управления?

    в воздухе между микрокомпьютерами БПЛА и на земле, между базовыми станциями
    на земле, между базовыми станциями
    в воздухе между микрокомпьютерами БПЛА

    Из чего, как правило, состоит комплекс БПЛА?

    из одного БПЛА и микрокомпьютера
    из одного БПЛА и нескольких базовых станций
    из одного БПЛА и базовой станции под управлением человека

    Что находится на верхнем уровне управления при использовании двухуровневой системы управления?

    Что происходит на верхнем уровне управления при использовании двухуровневой системы управления?

    происходит управление полетом БПЛА
    определяется глобальная задача для БПЛА, задаются характеристики полета
    происходит пересылка данных с БПЛА

    Что предлагается добавить в двухуровневую схему управления для применения мультиагентного подхода к группе БПЛА?

    средний уровень, который осуществляется за счёт дополнительного микрокомпьютера установленного в БПЛА
    средний уровень, который осуществляется за счет дополнительного автопилота
    средний уровень, который осуществляется за счет дополнительного средства связи

    Что происходит на среднем уровне управления при использовании трехуровневой системы управления?

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

    Зачем БПЛА, летающим в группе, взаимодействовать друг с другом?

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

    В чем состоит основная задача автопилота?

    Управление исполнительными механизмами
    обмен данными между БПЛА
    формирование начальной программы полета для каждого БПЛА

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

    на базовой станции
    на бортовом микрокомпьютере
    на самом автопилоте

    В чем состоит основная задача автопилота базовой станции?

    корректировка глобальной миссии, изменение программы автопилота, сбор информации
    формирование начальной программы полета для каждого БПЛА, определение глобальной миссии, сбор и обработка информации, определение глобальной миссии
    изменение программы автопилота, сбор и обработка информации

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

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

    По средством какого модуля осуществляется связь между дополнительными микрокомпьютерами разных БПЛА?

    модуля GSM
    модуля Wi-Fi с протоколом 802.11n
    модуля Bluetooth

    По средством какого модуля может осуществляется связь между БПЛА и базовой станцией?

    по выделенному радиоканалу и модему GSM
    встроенному модему GSM
    выделенному радиоканалу с частотой 2.4 GHz

    Как осуществляется взлет БПЛА?

    с рук оператора или с катапульты
    с земли или с рук оператора
    с земли

    Для чего используются термические потоки при полете группы БПЛА?

    для увеличения дальности полета БПЛА
    для увеличения времени полёта БПЛА
    для увеличения высоты полета БПЛА

    Для чего предназначена специальная программа The Intel Hardware Accelerated Execution Manager (Intel® HAXM)?

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

    С какой версии OC Android началачь официальная поддержка Intel x86 Atom System Image?

    Какие действия необходимы для запуска дочернего контейнера в платформе JADE при работе в Eclipse IDE?

    запустить платформу с аргументом –container
    запустить платформу с аргументом –gui
    запустить платформу дважды с аргументами –gui для первого запуска и –container при втором запуске

    Выберите существующую версию OS Android:

    Android 2.3.3
    Android Eclipse
    Android A5
    Android OS X

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

    OS Android является продуктом компании:

    Программа Eclipse является:

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

    Java Development Kit это:

    среда разработки
    пакет обучающих программ
    необходимый компонент для программирования на Android
    инструмент разработчика Android

    Для каких целей используется AVD manager в Android SDK?

    AVD — это дебаггер, входящий в состав Android SDK
    инструмент для создания пользовательского интерфейса Android (Android Visual Designer)
    создание виртуальных устройств для проверки работоспособности приложений
    в Android SDK нет никакого AVD manager

    Виртуальное устройство

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

    Функция Snapshot позволяет виртуальному устройству:

    загружать устройство с последнего сохраненного состояния
    получать ресурсы с компьютера «на лету»
    использовать веб-камеру как камеру телефона
    делать фотографии экрана устройста

    Параметр Scale Display to Real Size

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

    Какой параметр при создании нового проекта определяет самую низкую версию SDK, на которой это приложение будет иметь возможность запускаться?

    Basic SDK
    from SDK version
    Build SDK
    Minimum Required SDK

    https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

    Какой параметр при создании нового проекта определяет версию SDK, для которой это приложение будет создаваться?

    Build SDK
    SDK version
    Target SDK
    Minimum Required SDK

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

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

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

    res (resourses)
    android
    libs (libraries)
    dat (data)

    Для каких целей используются .java файлы в проекте?

    .java файлы необязательны, но они позволяют запускать приложение на более старых версиях Android
    в проекте нет .java файлов, при разработке используются только различные ресурсы и xml-файлы
    они содержат программный код проекта
    .java файлы содержат информацию о приложении и сообщают ее устройству или, например, Google Play

    В каком xml-файле по умолчанию содержится текстовое содержимое элементов пользовательского интерфейса?

    По умолчанию в новом проекте присутствует код, определяющий внешний вид запускаемого Activity в .java файле, это:

    Какой из методов позволяет определять нажатие на элемент пользовательского интерфейса?

    Какой метод по умолчанию присутствует в main.java?

    Для чего используется оператор If?

    для загрузки файлов из сети интернет(сокращение от Internet File)
    оператор задания условия
    оператор try if\catch if используется для обработки исключений
    данный оператор используется только в Objective C при разработке на приложений для различных Apple-устройств

    В какой файл нужно добавлять информацию при создании нового Activity?

    Использование FindViewByID

    устанавливает внешний вид для Activity
    позволяет получить объект из xml-разметки
    не характерно для Android-разработки
    позволяет обращаться к созданному элементу интерфейса

    В каком окне отображаются параметры выбранного элемента пользовательского интерфейса?

    Верно ли, что объект с шириной 100 dp будет всегда занимать 100 пикселей на экране устройства?

    нет, он никогда не будет иметь ширину в 100 пикселей, поскольку при использовании dp элемент всегда уменьшается, чтобы лучше выглядеть на экране, поэтому он будет иметь размер от 1 до 99.9 пикселей в зависимости от параметров устройста
    да, именно так
    объект всегда будет иметь ширину равную ширине экрана устройства, то есть 100%
    нет, не всегда, но вариант, что он будет занимать ровно 100 пикселей возможен

    Что обозначает wrap_content в параметрах размера элемента?

    объект будет занимать объем, равный объему содержимого
    объект будет занимать объем в соответствии с другими параметрами
    объект будет растянут на весь Layout, а его содержимое отцентровано
    объект будет занимать все доступное место и растягивать свое содержимое

    DP не является универсальным размером для определения размера текста, тк:

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

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

    rp — Relative Pixels
    пункты(не нужно указывать размерность) — стандартная единица определения кегля(размера шрифта) , 1/72 дюйма
    sp(sip) — Scale Independent Pixels
    dp(dip) — Device Independent Pixels

    Какой из нижеприведенных единиц измерения не существует в OS Android?

    Зачем при использовании метода getText на элементе EditText мы добавляет toString?

    toString передает содержимое EditText в строку под определенным номером, например toString(3)
    чтобы отправить текст данного окна в string.xml
    данная команда отправляет текст в переменную String, например toString(stringVariable)
    чтобы получить строковое значение текста

    В какой формате задается цвет при разработке на OS Android?

    255.255.255 (RGB)
    SetColor.ColorBlack
    0.0.0.100 (CMYK)
    #FFFFFF (HEX)

    Какой параметр отвечает за текстовое содержание элемента TextView?

    Layout при разработке на Android это

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

    Какого вида Layout не существует в Android?

    Выберите существующий в Android тип Layout

    Термин «тема» при разработке на Android это:

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

    В каком файле определяется тип Layout?

    В каком файле по умолчанию хранится Layout?

    Как называется окно, отображающее сообщения дебаггера?

    Для отправки сообщений в дебаггер мы используем:

    Как поставить точку прерывания?

    add — BreakPoint и указать точное время прерывания
    использовать код MakeBreakPoint(this)
    двойным нажатием мыши на полях кода

    Можем ли мы добавить картинки в список?

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

    Как вызываются списки при разработке для Android?

    Какой оператор позволяет задавать условия?

    if. what if
    if. then
    if. or if
    if. else if

    Выберите верный код:

    Какой элемент нужно добавить первым при создании списка в xml-файле?

    String
    Integer Array
    String Array
    Style/Theme

    Какого типа должен быть xml-файл при создании списка?

    Для чего используются папки drawable ldpi, mdpi, hdpi и xhdpi?

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

    Какой из данных параметров не является конфигуратором Layout?

    Что такое ориентация экрана устройства?

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

    Какого варианта Orientation не существует в Android?

    Переключения между активностями осуществляются

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

    Разместить на активности больше элементов, чем одновременно помещается на экран мобильного устройства

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

    Внимание !
    Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!
    Какого определения размера экрана не существует в системе Android?

    Как выглядит папка, содержащая видоизмененный Layout?

    Какой root element нужно выбрать при создании xml-файл для анимации?

    Какой операции нет при создании Tween-анимации на Android?

    Покадровая анимация

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

    Какой элемент используется для отображения анимации?

    При создании Tween-анимации используется следующий код активации:

    Какой командой запускается покадровая анимация из java файла?

    За что отвечает опция Solid при создании новой фигуры?

    за заливку
    за целостность
    за глубину цвета
    за непрозрачность

    #10FF00FF — цвет в RGB-формате. Почему здесь 8 символов, а не 6, как в обычном RGB-цвете?

    два первых символа не используются и задаются произвольно
    два первых символа отвечают за прозрачность
    Android использует RGB формат в 9 символов, по 3 знака на каждый из трех цветов(Red Green Blue), но если первый символ 0, то он не используется
    два последних символа нужны для Android и всегда задаются FF

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

    Выберите несуществующий параметр Shape

    XML-файл для изображения должен иметь тип

    Какие виды меню присутствуют в Android?

    только опциональное
    контекстное и всплывающее
    опциональное и всплывающее
    контекстное и опциональное

    Какой метод позволяет отследить нажатие на элемент опционального меню?

    Выберите несуществующий параметр элемента меню

    Как запустить инструмент 9patch?

    android-sdk/tools/draw9patch
    android-sdk/tools/9patch
    edit — 9patch
    правой кнопкой по объекту — use 9patch

    Для чего используется инструмент 9patch?

    для проверки версии приложения
    для создания обновлений-патчей для нашего приложения
    для модификации приложения
    для обработки изображений

    Какой кнопки не существует:

    Как установить положение полосы прогресса?

    progress.Progress = 10
    progress.Progress(10)
    progress = 10
    progress.setProgress(10)

    Какой класс позволяет создавать предупредительные окна-сообщения в Android?

    Какие виды ProgressDialog существуют в Android?

    STYLE_HORIZONTAL и STYLE_SPINNER
    STYLE_HORIZONTAL и STYLE_VERTICAL
    STYLE_VERTICAL и STYLE_ROLLER
    STYLE_SPINNER и STYLE_ROLLER

    Выберите правильный синтаксис использования звукового файла из resources:

    Uri.parse («android.resource://com.example1.status/» +R.raw.sound)
    Uri.parse(«android.resource://com.example1.status/R.raw.windowsding»)
    Uri(«android.resource://com.example1.status/» +R.raw.windowsding)
    Uri.parse(R.raw.windowsding)

    Где отображаются Notification?

    в центре экрана
    сверху в панели состояния
    в дебаггере
    в нижнем углу экрана

    Какой командой выводится Notification?

    Для того, чтобы получать результат после выполнения Activity используется:

    Для чего используется класс MediaPlayer в Android?

    воспроизведение аудио и видео
    в Android нет такого класса
    воспроизведение видео
    воспроизведение аудио

    Какой элемент в Layout используется для отображения видео?

    Выберите вариант кода, позволяющий закомментировать код в Java

    Какой из данных запретов действует на файлы проекта?

    использовать только кириллицу
    использовать только заглавные буквы
    не использовать цифры
    не использовать пробелы

    Нужно ли задавать разрешение для использования камеры устройства приложением?

    да, нужно добавить разрешение в AndroidManifest
    нет, оно будет добавлено автоматически
    нет, не нужно
    да, нужно указать разрешение в java-коде

    Какой командой применяются настройки SharedPreferences.Editor?

    С помощью какого класса создаются меню опций?

    Для того, чтобы сохранять данные по закрытию приложения используется:

    OnExit метод
    OnApplicationClose метод
    OnFinish метод
    OnStop метод

    Нужно ли каждый раз заполнять базу данных заново при включении приложения?

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

    Какое утверждение верно?

    база данных хранится внутри приложения и ее наличие можно проверить лишь через Java код
    база данных удаляется при выключении приложения
    база данных сохраняется в данных вашего профиля и при включенной синхронизации передается в интернет на сервера Google
    база данных хранится на телефоне и файл базы данных можно увидеть через DDMS File Explorer

    Почему после execSQL мы используем синтаксис заглавными буквами в кавычках?

    данный код был заимствован из PHP
    это код SQL
    особенность программирования на Java
    потому что это содержимое нашей таблицы\базы

    Выберите разрешение, которое нужно добавить в Manifest файл, когда приложение будет использовать интернет соединение

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

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

    Для чего используются Content Providers?

    для передачи данных в Интернет
    для скачивания информации из сети Интернет
    для синхронизации данных с сервисами Google
    для передачи данных между разными приложениями

    Операция MoveToNext

    увеличивает значение integer на 1
    выбирает следующий элемент массива
    приравнивает указанный элемент массива к следующему элементу
    проверяет наличие следующего элемента

    Какой Permission нужно добавить в AndroidManifest для обработки данных контактной книги?

    C помощью какого инструмента генерируется MD5 отпечаток для получения ключа, позволяющего разрабатывать приложения с использованием Google карт?

    MD5tool в Windows/system32
    keytool в папке Java
    MD5 generation tool в папке Java
    keygen в папке Android SDK

    Activity, использующее Google карты должно

    выполнять (код implements) MapsActivity
    расширять (код extends) Maps
    расширять (код extends) MapActivity
    выполнять (код implements) Maps

    Какой компонент(компоненты) должны быть установлены при разработке приложений, использующих Google карты?

    любые Android API
    такие же, как и для любого другого приложения
    Google API
    любые Android API не ниже версии 10

    Какое из данных разрешений позволяет использовать GPS?

    Какой элемент помогает контролировать местоположение устройства на эмуляторе?

    Emulator Control
    LogCat
    Allocation Tracker
    GPS Controller

    Назовите сервис, позволяющий определить местоположение телефона.

    Назовите Layout, который мы не можем использовать при создании виджета.

    Что обозначает i++ в цикле?

    перебор будет проводиться начиная с i и выше
    за каждый проход цикла i будет увеличиваться на единицу
    i+2
    за каждый проход цикла i будет увеличиваться на два

    В чем отличие виджетов от обычных приложений?

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

    Выберите строку с верным синтаксисом:

    <action android:name=»android.application.action.APPWIDGET_CONFIGURE»/>
    <action android:name=»android.appwidget.action.CONFIGURE»/>
    <action android:name=»android.application.action.APPWIDGET»/>
    <action android:name=»android.appwidget.action.APPWIDGET_CONFIGURE»/>

    Выберите строку с верным синтаксисом:

    Выберите строку с верным синтаксисом:

    for(int i=0;i<X; i++)
    for(int i=0;X; i=1)
    for(int i=0;X; i++)
    for(int i=0;i<X; i=1)

    Можно ли изменить минимальную версию Android, на которой запустится данное приложение после создания проекта?

    да, если выкладывать на Google Play
    да, через Manifest-файл
    нет, нельзя
    да, с помощью специального инструмента в android-sdk

    Можно ли просмотреть Log-сообщения после компиляции приложения?

    да, если их не удалили\закомментировали
    да, но только с помощью дебаггера
    нет, даже если они остались в коде
    да, даже если их закомментировали

    В чем различие между версией приложения и версией кода?

    версия кода выставляется программой после каждого сохранения
    нет различия
    в формате: первое имеет вид порядкового числа, второе — десятичной дроби
    в формате: первое имеет вид десятичной дроби, второе — порядкового числа

    С какой целью был создан Open Handset Alliance?

    рекламировать смартфоны под управлением Android
    разрабатывать открытые стандарты для мобильных устройств
    продавать смартфоны под управлением Android
    писать историю развития ОС Android

    Развитием и поддержкой ОС Android, главным образом, занимается компания:

    Ядро какой операционной системы использовалось в качестве базы для ОС Android?

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

    Application Framework
    Linux Kernel
    Applications
    Libraries & Android Runtime

    Какой движок баз данных используется в ОС Android?

    Какое название получила версия Android 4.4?

    Kit Kat
    Krispy Kreme
    kitekat
    kream-karamel

    Какая графическая библиотека входит в набор библиотек ОС Android?

    В какой формат компилируются Java-классы для исполнения на виртуальной машине Dalvik?

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

    Applications
    Libraries & Android Runtime
    Application Framework
    Linux Kernel

    Для пополнения коллекции приложений своего мобильного устройства пользователь может воспользоваться сервисом

    Google Play
    Android Play
    Google Market
    Google Maps

    Инструмент разработки, позволяющий адаптировать код С/С++ для работы на Android, это —

    Marmalade SDK
    Intel* Software Manager
    Android NDK
    Google Android SDK (ADT Bundle)

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

    JDK
    плагин ADT
    Android SDK
    Android NDK

    С какой целью инструмент Intel* Threading Building Blocks (Intel* TBB) используется в среде разработки Intel* Beacon Mountain?

    позволить разработчикам оптимизировать загруженность системы при использовании процедур OpenGL
    для ускорения работы эмулятора в среде разработки
    для оптимизированной обработки данных и изображений
    позволить разработчикам эффективно распараллелить С++ мобильные приложения

    С какой целью инструмент Intel* Hardware Accelerated Execution Manager (Intel* HAXM) используется в среде разработки Intel* Beacon Mountain?

    для оптимизированной обработки данных и изображений
    для эффективного распараллеливания С++ мобильных приложений
    для оптимизации загрузки системы при использовании процедур OpenGL
    для ускорения работы эмулятора в среде разработки

    Чем являются Eclipse и IDEA?

    SDK (набор средств разработки)
    API (интерфейс прикладного программирования)
    ADT (инструменты разработки под Android)
    IDE (интегрированная среда разработки)

    С какой целью инструмент Intel* Integrated Performance Primitives (Intel* IPP) используется в среде разработки Intel* Beacon Mountain?

    позволить разработчикам оптимизировать загруженность системы при использовании процедур OpenGL
    для оптимизированной обработки данных и изображений
    для ускорения работы эмулятора в среде разработки
    позволить разработчикам эффективно распараллелить С++ мобильные приложения

    С какой целью инструмент Intel* Graphics Performance Analyzers (Intel* GPA) System Analyzer используется в среде разработки Intel* Beacon Mountain?

    позволить разработчикам оптимизировать загруженность системы при использовании процедур OpenGL
    для оптимизированной обработки данных и изображений
    для ускорения работы эмулятора в среде разработки
    позволить разработчикам эффективно распараллелить С++ мобильные приложения

    К проблемам разработки под ОС Android можно отнести:

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

    Тестирование на реальных устройствах приложений, разработанных в Intel XDK

    можно проводить, собрав проект и установив результат сборки на устройство
    можно проводить, установив на устройство специальную программу
    невозможно
    можно проводить, установив на устройство специальную программу или собрав проект и установив результат сборки на устройство

    Приложения, не имеющие GUI и выполняющиеся в фоновом режиме — это

    К преимуществам среды разработки Intel XDK можно отнести:

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

    Удобное средство обмена между двумя NFC-устройствами:

    Среда разработки Intel XDK поддерживает следующие языки программирования:

    Эмулятор среды разработки Intel XDK:

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

    Преимуществом эмуляторов является:

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

    Для запуска приложений, разработанных в Android IDE, необходимо:

    настроить компьютер (для Windows необходимо установить нужный драйвер вручную, нужны права администратора)
    настроить устройство (включить режим отладки по USB)
    настроить среду и запустить проект на устройстве
    запустить виртуальную машину с установленной ОС Android

    Библиотеки, реализованные на базе PacketVideo OpenCORE:

    SQLiteFree
    TypeMedia
    Framework
    3D библиотеки

    В Intel XDK ведется разработка мобильных приложений с использованием:

    Intel XDK поддерживает разработку под:

    MtkOS, Symbian OS, Microsoft Windows 8
    Android, Apple iOS, Microsoft Windows 8, Tizen
    JavaFX Mobile
    Apple iOS, BlackBerry OS

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

    Фоновые приложения .

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

    Приложения переднего плана .

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

    В каком файле находятся строковые ресурсы приложения?

    Какая папка в структуре Android-приложения содержит файлы с исходным кодом на языке Java?

    Что позволяет протестировать мобильное приложение, не загружая его на реальное устройство?

    Android virtual device (AVD)
    Android virtual machine (AVM)
    Dalvik virtual machine (DVM)
    Java virtual machine (JVM)

    Возможность реагировать на пользовательский ввод и при этом не терять работоспособности в фоновом режиме является характерной особенностью

    смешанных приложений
    фоновых приложений
    виджетов
    приложений переднего плана

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

    приложение переднего плана
    фоновое приложение
    смешанное приложение
    виджет

    Выберите верные утверждения

    доступ к элементам приложения предоставляется любому другому приложению
    операционная система Android является многопользовательской ОС, в которой каждое приложение рассматривается как отдельный пользователь
    каждому приложению соответствует отдельный Linux процесс, который запускается как только это необходимо хотя бы одному компоненту приложения
    по умолчанию, система назначает каждому приложению уникальный пользовательский ID, который используется приложением по его усмотрению
    каждому процессу соответствует отдельный экземпляр виртуальной машины Dalvik

    Что находится в папке gen?

    автоматически сгенерированные java-файлы
    изображения
    аудио файлы
    ресурсы приложения

    В какой папке должны находиться все ресурсы приложения?

    Видимая часть Android-приложения (экран, окно, форма), отвечает за отображение графического интерфейса пользователя — это …

    контент-провайдер (Content Provider)
    приемник широковещательных сообщений (Broadcast Receiver)
    активность (Activity)
    сервис (Service)

    Каждый приемник широковещательных сообщений является наследником класса .

    Компонент, который работает в фоновом режиме, выполняет длительные по времени операции или работу для удаленных процессов — это .

    приемник широковещательных сообщений (Broadcast Receiver)
    сервис (Service)
    контент-провайдер (Content Provider)
    активность (Activity)

    Какой компонент управляет распределенным множеством данных приложения?

    контент-провайдер (Content Provider)
    активность (Activity)
    сервис (Service)
    приемник широковещательных сообщений (Broadcast Receiver)

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

    Какой класс является основным строительным блоком для компонентов пользовательского интерфейса (UI), определяет прямоугольную область экрана и отвечает за прорисовку и обработку событий?

    Какой слушатель используется для отслеживания события касания экрана устройства?

    Какая последовательность методов исполняется системой при возвращении невидимой активности на экран?

    onStart(), onResume()
    onCreate(), onStart(), onResume()
    onPause(), onRestart(), onStart()
    onRestart(), onStart(), onResume()

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

    Какие элементы являются обязательными в файле AndroidManifest.xml?

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

    Создание класса наследника от класса ContentProvider; Определение способа организации данных; Заполнение контент-провайдера данными
    Проектирование способа хранения данных; Определение способа организации данных; Определение способа работы с данными
    Проектирование способа хранения данных; Создание класса-наследника от класса ContentProvider; Определение строки авторизации провайдера, URI для его строк и имен столбцов
    Создание класса наследника от класса ContentProvider; Заполнение контент-провайдера данными; Определение способа работы с данными

    Какая информация не содержится в файле AndroidManifest.xml?

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

    В какой папке необходимо разместить XML файлы, которые определяют все меню приложения?

    Какой метод вызывается системой в случае, когда активность теряет фокус?

    Для чего используется папка res/value/?

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

    Направленное широковещание работает следующим образом:

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

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

    Project Explorer
    Navigator
    Package Explorer
    Internet Explorer

    Строительные блоки визуального дизайна интерфейсов:

    размер
    цвет
    форма
    все варианты ответа верны

    Объектами информационного дизайна являются

    всевозможные графики
    инфографика
    диаграммы
    все варианты ответа верны

    Дизайн или проектирование интерфейса для графических дизайнеров:

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

    Расположение элементов мобильного приложения:

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

    Следующие утверждения верны:

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

    Более крупные элементы:

    размер не влияет на уровень внимания
    привлекают больше внимания
    привлекают меньше внимания
    все варианты ответа верны

    Выделяют следующие категории элементов управления:

    системные элементы управления
    элементы управления интерфейсами
    все варианты ответа верны
    командные элементы управления

    Элементы управления «Радиокнопки»:

    не должны иметь круглую форму
    должны иметь круглую форму
    могут иметь любую форму
    должны иметь квадратную форму

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

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

    Какое средство организации интерфейса помогает визуально уравновесить элементы?

    В чем заключается суть структурных шаблонов проектирования?

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

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

    При проектировании окон приложения необходимо:

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

    Какие элементы управления применяются для действий по настройке?

    элементы отображения
    элементы выбора
    командные элементы управления
    элементы ввода

    При создании справочной системы необходимо:

    все вышеперечисленное
    создать руководство по «быстрому старту»
    использовать всплывающие подсказки
    учитывать, что она не должна становиться костылем для продукта

    Примерами комбо-элементов не являются:

    К элементам ввода относят:

    счетчики
    все вышеперечисленное
    ограничивающие элементы ввода
    ползунки

    К элементам управления отображением не относятся:

    полосы прокрутки
    сетки и рамки
    рукоятки
    разделители

    К традиционным типографическим инструментам не относят

    масштаб
    цвет
    разреженность
    выравнивание по сетке

    Нижняя панель (Navigation Bar) предназначена

    для вывода уровня сигнала сотовой сети
    для вывода уровня заряда батареи
    для навигации на тех устройствах, которые не имеют аппаратных навигационных клавиш
    для вывода времени

    Следующие утверждения не верны:

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

    Расстояние между элементами управления рекомендуется делать кратным:

    Выделяют следующие категории плотности экрана для Android-устройств:

    правильный вариант ответа отсутствует
    LDPI, MDPI, HDPI
    LDPI, MDPI, HDPI, XHDPI, XXHDPI, и XXXHDPI
    HDPI, XHDPI, XXHDPI, и XXXHDPI

    Один DP равен:

    одному пикселю на экране типа MDPI
    0,5 дюйма
    300 dpi
    0,3 мм

    Возможны следующие виды списков — элементов управления

    a и b
    нумерованные списки
    раскрывающие списки
    комбо-списки

    Минимальный размер элемента управления

    Использование ярлычков для всех панелей сетки и полупрозрачных «занавесок» для неактивных панелей

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

    Основные вкладки (FixedTabs) удобны при отображении

    трех и более вкладок
    от четырех вкладок
    двух вкладок
    трех и менее вкладок

    Возможность прокрутки сеток стоит осуществлять

    по горизонтали или по вертикали
    по горизонтали и по вертикали
    только по горизонтали
    только по вертикали

    Элементы управления «Флажки» используются в том случае, если из предлагаемого списка

    можно выбрать одновременно несколько вариантов
    можно выбрать только один вариант
    можно выбрать одновременно только 2 варианта
    нет правильного варианта ответа

    В ОС Android существует диалоговые окна следующего вида:

    уведомления
    все варианты ответа верны
    класс Dialog и его производные
    всплывающие подсказки

    Всплывающие подсказки стоит использовать, когда

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

    Уведомления стоит использовать, когда

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

    DatePickerDialog это:

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

    AlertDialog это:

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

    Любое диалоговое окно всегда содержит:

    содержательную часть
    управляющие кнопки
    заголовок
    все вышеперечисленное

    Максимально возможное число управляющих кнопок диалогового окна равно:

    Выберите верные утверждения о классе ContentValues?

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

    Высота уведомления в нормальном режиме составляет

    256 dp.
    128 dp.
    64 dp.
    32 dp.

    При загрузке приложения первой появляется активность,

    чье описание находится последним в манифесте
    правильный вариант ответа отсутствует
    чье описание находится первым в манифесте
    чье описание первым в лексикографическим порядке

    Стандартный шаблон активности Fixed Tabs + Swipe:

    поддерживается начиная с версии API 14
    поддерживается начиная с версии API 9;
    поддерживается начиная с версии API 11;
    поддерживается в любой версии;

    Для чего предназначен класс ListActivity?

    для создания активности, основным элементом которой является таблица
    для создания обычной активности
    для создания нового листа
    для создания активности, основным элементом

    Вы можете обратится к нам напрямую, через:

    skypeПо Skype: molodoyberkut
    telegramПо Telegram: @MolodoyBerkut
    icqПо ICQ: 657089516

    Мобильное приложение c архитектурой MVC с точки зрения системного анализа

    malinovsky

    Цель системы.
    Удовлетворить требования пользователя и решать его задачи на приемлемом уровне.

    Описание структуры системы.

    Структура приложения может отличаться от его предназначения и специфики использования, навыков и опыта команды разработчиков. Архитектура MVC (Model-View-Controller) является признанным стандартом в области разработки мобильных приложений и используется в компаниях по всему миру. В частности, компания Apple применяет MVC модель для разработки собственных iOS приложений. Структура системы включает следующие подсистемы:
    Модель данных (Model). Управляет данными приложения.
    Представления (View). Отображают визуальные элементы и элементы управления на экране.
    Контроллеры (Controller). Согласовывают действия между моделями данных и окнами.

    Интерпретация принципов системного анализа.

    1. Принцип целостности. Мобильное приложение можно считать обособленным от внешнего мира. Средой окружения для него являются пользователи, компании-владельцы мобильных рынков (могут диктовать свои условия попадания приложения в AppStore или Google Play), конкуренты (с приложениями сходной тематики). Действия пользователя в общем случае неизвестны. Приложение удовлетворяет условиям автономности: пользователь не имеет доступа к исходным кодам приложения, не может его модифицировать. Взаимодействие с пользователем приложения происходит строго через разработанные интерфейсы. Разработчики поставляют в магазин приложений бинарный файл, который может исполняться неограниченное время, без усилий разработчика (за исключением ситуации с поддержкой серверов). Таким образом, можно считать что приложение сохраняет определенную независимость от внешней среды. Система является внутренней — без каждого из компонент “тройки” MVC она не может функционировать, каждый из MVC элементов создается индивидуально, под конкретную задачу — является не полноценным объектом, а компонентом. Можно провести аналогию — Models, Views и Contollers — своего рода “органы” приложения.
    2. Принцип совместимости элементов в системе. Мобильное приложение с архитектурой MVC предоставляет пользователю возможность увидеть интерфейс взаимодействия с приложением (Представление, View). Оно может включать различные управляющие элементы (кнопки, поля ввода, поля вывода). Представления сообщают пользователю всю информацию о приложении и собирают пользовательские намерения-действия посредством жестов (нажатий на кнопки, “свайпов”, и т. д.), голосовых команд. Представление передает полученную информацию Контроллеру, который интерпретирует пользовательские данные, действия и в соответствии с этим обновляет Модель данных. Модель данных передает информацию в Контроллер, который, в свою очередь, обновляет Представление, чтобы проинформировать пользователя об изменении данных. Таким образом собственные свойства элементов позволяют сосуществование элементов в системе, дополняют друг друга, в результате чего система существует как целое.
    3. Принцип организованности связей. Модель данных в MVC приложении не взаимодействует напрямую с Представлением, также как и Представление не связано с Моделью данных. Связи, по которым в действительности проходит передача информации в системе можно описать как: “Модель данных → Контроллер → Представление” и “Представление → Контроллер → Модель данных”. Такой подход организации элементов и связей между ними приносит ощутимые преимущества. В частности, за счет того что бизнес-логика (Модель данных) отделена от графического интерфейса (Представления), имеется возможность разделить роли в команде разработчиков — одни могут разрабатывать графический интерфейс, а другие бизнес-логику. Разработчик бизнес-логики может вообще быть неосведомлен о том, какое представление будет использоваться.
    Кроме того, независимость Модели от Представления приносит широкие возможности для повторного использования программного кода (как следствие — удешевление процесса разработки, ускорение выхода приложения на рынок). К одной модели можно присоединить несколько представлений, не затрагивая при этом реализацию модели. К примеру, одни и те же данные могут быть представлены в виде гистограммы, электронных таблиц и круговой диаграммы.
    Не затрагивая реализацию Представлений, можно изменить реакции на действия пользователя (различные жесты, ввод данных) — для этого достаточно использовать другой Контроллер.
    4. Принцип эмерджентности. Новое системное свойство — способность к выполнению задач пользователя через взаимодействие на мобильном устройстве. Ни один из элементов системы “поодиночке” не может решить задачи пользователя. Представление не имеет практической ценности для пользователя без возможности чтения, редактирования и сохранения данных. Сами данные не могут быть считаны пользователем без графического интерфейса. Поскольку в архитектуре MVC Представление и Модель данных не имеют прямой связи друг с другом, а взаимодействуют через посредничество Контроллера, все три элемента мобильного приложения необходимы для появления нового системного свойства (и достижения цели системы).
    5. Принцип целеустремленности и целенаправленности. Все элементы системы действуют в соответствии с глобальной целью системы. Представление — единственный интерфейс, по которому пользователь взаимодействует с приложением. От множества задач, достижимых через графический интерфейс, и удобства достижения этих задач (наглядности расположения элементов, простоты жестов (ввода информации) напрямую зависит то множество задач, которое пользователь может выполнить при помощи приложения. При этом верным является выражение: “Число задач, доступных через Представление >= Число задач, доступных пользователю приложения”. Предположим, что Модель данных представляет N функций, а Представление — M функций. Если N > M, то пользователь приложения, не имеющий прямого доступа к модели данных имеет в своем распоряжении только M функций. Именно поэтому простота, наглядность и нацеленность на действия пользователя имеет такое значения для компонент “Представления”. Качественно спроектированное представление направлено на достижение общей цели системы.
    Модель данных (мозг системы) позволяет корректно выполнить задачи пользователя и способствует достижению глобальной цели системы.
    Контроллер интерпретирует пользовательские действия, полученные через Представление и “переводит” их на язык “модели”. Таким образом, он также служит общей цели системы.

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

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

    Что такое архитектура и для чего она нужна

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

    В той же википедии есть определения того, что такое программная архитектура

    Архитектура программного обеспечения (англ. software architecture) совокупность важнейших решений об организации программной системы, включающая в себя:

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

    соединение выбранных элементов структуры и поведения во всё более крупные системы;

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

    Наиболее понятным, на мой взгляд, кажется определение, которое объединит эти два понятия:

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

    Проще говоря, если мы решили использовать HEAD-FIRST подход (сначала думай, потом делай), то без проработки архитектуры нам не обойтись. Да и в ситуации, когда мы сначала всё сделали, а потом начали думать – к вопросу архитектуры мы тоже придем, только теперь с большим объемом кода, который надо переписывать.

    Виды архитектуры ПО

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

    Наиболее популярное сейчас деление архитектур (по опыту собеседований и общения с коллегами), это деление на монолитную архитектуру и микросервисную. На самом деле такое деление не совсем верно, поскольку:

    Во-первых, микросервисная архитектура является подтипом сервис-ориентированной архитектуры.

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

    Итак, монолит – это иерархическая архитектура, т.е каждый слой приложения отвечает за свою часть функционала, например: работа с базой, логирование, интерфейс (простота E2E тестирования, простота развертки). Глубоко разбирать монолиты не будем. Отметим, что есть несколько видов наиболее популярных шаблонов монолита:

    Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.

    Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние.

    Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели.

    Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.

    Model-View-Presenter (MVP) — шаблон проектирования, производный от MVC, который используется в основном для построения пользовательского интерфейса.

    Элемент Presenter в данном шаблоне берёт на себя функциональность посредника (аналогично контроллеру в MVC) и отвечает за управление событиями пользовательского интерфейса (например, использование мыши) так же, как в других шаблонах обычно отвечает представление.

    Model-View-ViewModel (MVVM) — шаблон проектирования архитектуры приложения, представленный в 2005 году Джоном Госсманом (John Gossman) как модификация шаблона Presentation Model. Ориентирован на современные платформы разработки, такие как Windows Presentation Foundation, Silverlight от компании Microsoft, ZK framework.

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

    Про масштабируемость:

    Монолит — масштабируется не рационально(поднимаем всё) + не всегда возможно, если монолит изначально не писался с учетом масштабируемости

    Микросервисы масштабируются рационально (увеличиваем количество экземпляров только нужных сервисов.)

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

    Лайфхак: никто не догадается о том, что монолит, это монолит, если не допускать людей к кодовой базе! 🙂

    Виды интеграций

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

    Что это означает: если у Вас есть монолитное приложение (один .exe файл), и в этом приложении один метод вызывает другой через, например, REST API, то это просто ненужное усложнение.

    Интеграция, как следует из перевода, это «внедрение». Соответственно, внедрение одного приложения в другое – целесообразно, а внедрение методов приложения один в другой – совершенно бессмысленно.

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

    Первый вопрос, которым мы зададим себе — какой вид обмена нам нужен: синхронный, либо асинхронный?

    Разберём, что такое синхронное взаимодействие.

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

    Приведу пример синхронного взаимодействия: вы пришли ногами в магазин, чтобы купить там хлеб. Результатом вашего посещения магазина должна стать полученная булка хлеба, без которой домой вы не уйдете. Так вот, в данной ситуации вы взаимодействуете с магазином синхронно, т.к вы пришли туда, отдали деньги кассиру и ждете от него ответ. На примере HTTP-запросов кассир может выдать Вам следующие ответы:

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

    200 – 299 (успешные) – кассир отдает Вам хлеб.

    300 – 399 (перенаправление) – у кассира хлеба нет, но он есть в соседнем магазине, о чем он Вам и сообщает

    400-499 (клиентские) – пожалуй, самые часто встречающиеся ошибки, например, при интернет-серфинге. Означает, что запрос составлен некорректно, или цитируя группу “Научно-технический рэп” — «не по понятиям». Означает, что, например, у кассира хлеб есть, но конкретно фиолетовый хлеб со вкусом утренней росы, который вы запросили — в ассортименте магазина отсутствует.

    500-599 (ошибки сервера) – что-то не то с самим кассиром, например он уснул или идентифицирует себя не как кассир, а как булка хлеба, в связи с чем не хочет продавать вам своего собрата.

    В данном примере мы получим какой-то результат взаимодействия с магазином и только после этого пойдем заниматься другими делами.

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

    Асинхронные взаимодействия — это те взаимодействия, в которых одна система отправляет сообщение другой и не ждет подтверждения или ответа, а продолжает работу.

    В данной ситуации можно привести аналогию с заказом хлеба через службу доставки.

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

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

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

    Файловый обмен

    Данный метод интеграции появился достаточно давно и проверен временем. Смысл метода в том, что система номер 1 передает в систему номер 2 файл в установленном формате(например csv).

    Плюсы данного подхода:

    Отсутствие необходимости соединения между системами

    Недостатки:

    Отсутствие возможности получить информацию о валидности файла со стороны вызывающей системы

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

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

    База к базе (или общая база данных)

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

    На самом деле для реализации данного подхода не обязательно, чтобы база была общей. Например в СУБД Oracle присутствует механизм database links, который позволяет получать в одной базе данных данные из другой.

    Плюс данного подхода:

    Недостаток:

    Подход создает сильную связанность между системами

    Такой метод обмена является асинхронным, поскольку чаще всего подход database links работает в одном направлении и данные в системе-получателе появляются только по запросу, т.е создать, например триггер, который отправляет данные в другую базу данных при заданном событии не получится.

    Удалённый вызов

    Идея данного метод интеграции в том, что система 1 удаленно вызывает метод системы 2, передавая туда нужные параметры. Способов, как конкретно можно реализовать данную идею довольно много. К методам удаленного вызова можно отнести, например, интеграцию через http/https, с использованием REST, SOAP, GRPC и т.д.

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

    GRPC – opensource фреймворк для удаленного вызова процедур.

    Все запросы в рамках GRPC строго типизированные, для их описания используются proto-файлы.

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

    Стоит отдельно выделить, что прото-файлы также поддерживают комментирование, что очень удобно.

    В целом proto-файлы оформляются в стиле, похожем на код, а если быть точным, то они описываются языком Interface Definition Language (IDL), что делает возможным генерировать сервисы на основе прото-файлов.

    Как видим файл достаточно нагляден.

    RPC позволяет реализовать как синхронное, так и асинхронное взаимодействие между сервисами.

    На картинке мы можем увидеть стандартную схему применения GRPC:

    У нас есть сервер GRPC, написанный на каком-либо языке (в данном случае C++) и два клиента, написанных либо на том же, либо на других языках. Соответственно, сервер может общаться одновременно с большим количеством клиентов.

    GRPC используется поверх протокола HTTP/2.

    GRPC также поддерживает передачу заголовков (метаданных). Что интересно – при отправке данных через GRPC поддерживается сжатие данных, т.е весь запрос, включая заголовки, сжимается, а при получении данных распаковывается. Т.е при отправке данные преобразуются в двоичный формат, а затем при получении распаковываются обратно. Такой подход увеличивает скорость передачи данных GRPC , по сравнению, например, с REST.

    SOAP — simple Object Access Protocol («простой протокол доступа к объектам»).

    SOAP появился достаточно давно, в 1998 и был одним из первых протоколов, предназначенных для работы в парадигме RPC. Поскольку это был один из первых протоколов такого назначения, он имеет ряд недостатков:

    SOAP поддерживает только SOAP-сообщения (сообщения, имеющие строго определенную структуру, в формате XML)

    SOAP достаточно громоздкий

    SOAP не поддерживает стриминговую передачу сообщений. Поэтому в SOAP всегда один запрос – один ответ.

    Структура SOAP запроса:

    Envelope («конверт»). Это корневой элемент. Определяет XML-документ как сообщение SOAP с помощью пространства имен xmlns:soap=»http://www.w3.org/2003/05/soap-envelope/». Если в определении будет указан другой адрес, сервер вернет ошибку.

    Header («заголовок»). Включает в себя атрибуты сообщения, связанные с конкретным приложением (аутентификация, проведение платежей и так далее). В заголовке могут использоваться три атрибута, которые указывают, как принимающая сторона должна обрабатывать сообщение, — mustUnderstand, actor и encodingStyle. Значение mustUnderstand — 1 или 0 — говорит принимающему приложению о том, следует ли распознавать заголовок в обязательном или опциональном порядке. Атрибут actor задает конкретную конечную точку для сообщения. Атрибут encodingStyle устанавливает специфическую кодировку для элемента. По умолчанию SOAP-сообщение не имеет определенной кодировки.

    Body («тело»). Сообщение, которое передает веб-приложение. Может содержать запрос к серверу или ответ от него.

    Пример сообщения, которое запрашивает стоимость ноутбука в онлайн-магазине:

    Пример ответа сервера онлайн-магазина:

    Fault («ошибка»). Опциональный элемент. Передает уведомление об ошибках, если они возникли в ходе обработки сообщения. Может содержать вложенные элементы, которые проясняют причину возникновения ошибки:

    faultcode — код неполадки;

    faultstring — «человекопонятное» описание проблемы;

    faultactor — информация о программном компоненте, который вызвал ошибку;

    detail — дополнительные сведения о месте возникновения неполадки.

    SOAP может использоваться поверх протоколов SMTP, FTP, HTTP, HTTPS.

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

    Другими словами, REST — это набор правил того, как программисту организовать написание кода серверного приложения, чтобы все системы легко обменивались данными и приложение можно было масштабировать. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. REST является альтернативой RPC.

    В случае, если приложение построено, в соответствии с парадигмой REST (не противоречит ей), то такое приложение называют RESTful.

    Но как же так вышло, что в данном определении указано, что REST это альтернатива RPC, а мы его отнесли к RPC способам интеграции?

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

    Концепция REST не предполагает, что у объекта на сервере есть состояние + в концепции REST все объекты имеют глаголы:

    GET — получение ресурса

    POST — создание ресурса

    PUT — обновление ресурса

    DELETE — удаление ресурса

    Т.е, если нам нужно, например, изменить состояние объекта на сервере, то в случае с RPC это будет выглядеть, как

    “POST /modifyItem” и далее в теле запроса мы передаем информацию об объекте, который мы хотим изменить. Т.е мы вызываем метод класса modifyItem

    В случае с REST запрос будет выглядеть так:

    “PUT /items/456“ и в теле запроса передается информация о том, к какому состоянию должен быть приведен объект с идентификатором 456.

    Простыми словами:

    REST = глагол + тип объекта + идентификатор + параметры запроса

    RPC = метод + параметры метода

    REST запрос обычно состоит из тела, заголовков и параметров запроса.

    Также для REST API существует такое понятие как «степень зрелости REST API». Данная модель позволяет оценить, насколько веб приложение RESTful.

    Уровень 0: Собачье болото (The Swamp of POX)

    В википедии данный уровень зрелости называется болотом оспы, но мне такое название не очень нравится(звучит противно), поэтому добавим немного поэзии и переведем The Swamp of Plain Old XML, как болото Простого Старого Ыксемеля, что сокращенное читается, как ПСЫ, а значит собачье.

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

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

    Однако, даже для такого спорного уровня зрелости существуют свои правила:

    В URL адресах должны использоваться дефисы (-), чтобы улучшить их читаемость. Это значит, что при составлении адресов должен использоваться spinal-case.

    Не должны использоваться нижние подчеркивания (_)

    Тут все очевидно – смотрим правило 1

    Предпочтительно использовать строчные буквы при составлении URL адресов

    Тут тоже все понятно:

    В URL нельзя включать расширения файлов

    Это значит, что когда мы хотим получить какой-либо файл с сервера, то мы не указываем его расширение:

    Уровень 1: Уровень Ресурсов

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

    Уровень 2: Уровень методов

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

    Можно реализовать данную идею, использую HTTP глаголы. Если мы хотим получить список страниц – мы можем сделать Get запрос к ресурсу /page, но если мы хотим создать новую страницу, мы можем использовать POST глаголы, вместо GET к тому же ресурсу — /page.

    Уровень 2.1: HTTP заголовки

    HTTP заголовки, это одно из базовых правил разработки REST API. Они нужны для того, чтобы передать больше информации о самом ресурсе: метаданные, данные авторизации и другое.

    Заголовки также предоставляют запрошенную информацию о запросе и ответе, либо об объекте, отправленном в теле сообщения.

    Существует 4 вида заголовков:

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

    Заголовки запроса клиента: эти поля применяются для запросов и ответов.

    Заголовки ответа сервера: эти заголовки применяются только для сообщений ответа.

    Заголовки сущностей: эти заголовки определяют мета информацию о сущности тела запроса или, если у запроса нет тела, то о ресурсах, определенных в запросе

    Уровень 2.2: Параметры запроса

    Другая важная часть разработки REST API, это использование параметров запроса. Они широко используются во многих случаях, но наиболее часто они используются для того, чтобы реализовать поиск, фильтрацию и запросы.

    Пагинация – необходима для разбивки данных на части определенного объема.

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

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

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

    Уровень 2.3: Коды статусов

    Очень важно, при проектировании REST API использовать соответствующие HTTP-коды статусов, особенно при разработке и тестировании RESTful API.

    Наиболее часто используемые коды статусов:

    200 — ОК: Всё работает

    201 – CREATED: Был создан новый ресурс

    204 – NO CONTENT: Ресурс был успешно удален, нет тела ответа

    304 – NOT MODIFIED: Возвращенные данные, это кэшированные данные (данные не изменились)

    400 – BAD REQUEST: Запрос некорректный или не может быть обработан. Конкретная ошибка должна быть объяснена в теле ответа, например «JSON IS Invalid»

    401 – UNATHORIZED: Запрос требует аутентификации пользователя.

    403 – FORBIDDEN: Сервер принял запрос, но отклонил, либо доступ к ресурсу запрещен

    404 — NOT FOUND: Нет ресурса, расположенного по данному URL

    500 — INTERNAL SERVER ERROR При разработке API стоит избегать данной ошибки. Все внутренние ошибки должны обрабатываться сервером и возвращаться в читаемом виде.

    Уровень 3: Hypermedia Controls

    Обычно все валятся при попытке реализовать данный уровень.

    Он состоит из двух частей:

    Определение контента – отвечает за определение вида контента

    HATEOS – отвечает за действия, производимые над ресурсом

    Определение контента

    Обычно определение контента производится соответствующим заголовком. Например Content-type.

    HATEOS

    Расшифровывается как Hypermedia As Transfer Engine Of Application State (Hypermedia как механизм передачи состояния приложения). Это ограничение REST приложений, которое отличает их от приложений другой архитектуры.

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

    Пример HATEOS ответа:

    Уровень 3.1 Версионирование

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

    Существует множество способов версионирования API, но приведем два наиболее используемых:

    Это могут быть настраиваемые заголовки, вроде X-API-VERSION, или любой другой

    Либо заголовок «Accept», например «Accept: application/vnd.hashmapinc.v2+json»

    Тут все просто. Версия указывается в запросе, например POST /v2/user.

    Способы организации Микросервисной Архитектуры

    Существует 2 способа организации МСА: оркестрация и хореография

    Оркестрация сервисов

    Оркестрация служб представляет собой единый централизованный исполняемый бизнес-процесс (оркестратор), который координирует взаимодействие между различными службами (например Camunda). Оркестратор отвечает за вызов и объединение служб.

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

    Хореография сервисов

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

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

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

    При подготовке материала были использованы следующие дополнительные источники:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *