Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Компонентные технологии и разработка распределенного ПО
Перед разработчиками систем, удовлетворяющих перечисленным свойствам, встает огромное количество проблем. Решать их все сразу просто невозможно в силу ограниченности человеческих способностей. Чтобы хоть как-то структурировать эти проблемы, их разделяют по следующим аспектам [3].
-
Связь.
Организация связи и передачи данных между элементами системы.
В связи с этим аспектом возникают следующие задачи:
- Какие протоколы использовать для передачи данных?
- Как реализовать обращения к процедурам и методам объектов одних процессов из других?
- Какой способ передачи данных выбрать — синхронный или асинхронный? В первом случае сторона, инициировавшая передачу, приостанавливает свою работу до прихода ответа другой стороны на переданное сообщение. Во втором случае первая сторона имеет возможность продолжить работу, пока данные передаются и обрабатываются другой стороной.
- Нужно ли, и если нужно, то как, организовать хранение (асинхронных) сообщений в то время, когда и отправитель, и получатель сообщения могут быть неактивны.
- Как организовать передачу непрерывных потоков данных, представляющих собой аудио-, видеоданные или смешанные потоки данных. Этот вопрос имеет большое значение, поскольку заметные человеку прерывания в передаче таких данных приводят к значительному падению качества предоставляемых услуг.
-
Именование.
Поддержка идентификации и поиска отдельных ресурсов внутри системы.
- По каким правилам присваивать имена и идентификаторы различным ресурсам?
- Как организовать поиск ресурсов в системе по идентификаторам и атрибутам, описывающим какие-нибудь свойства ресурсов?
- Как размещать и находить мобильные ресурсы, изменяющие свое физическое положение в ходе работы?
- Как организовывать и поддерживать в рабочем состоянии сложные ссылочные структуры, необходимые для описания имеющихся в распределенной системе ресурсов? Как, например, находить и удалять ресурсы, ставшие никому не доступными?
-
Процессы.
Организация работ в рамках процессов и потоков.
- Как разделить работы в системе по отдельным процессам и машинам?
- Нужно ли определять различные роли процессов в системе, например, клиентские и серверные, и как организовывать их работу?
- Как организовать работу исполняемых агентов — процессов, способных перемещаться между машинами и выполнять свои задачи в любой подходящей среде?
-
Синхронизация.
Синхронизация параллельно выполняемых потоков работ.
- Как синхронизовать действия отдельных процессов и потоков, работающих в системе, для получения нужных результатов.
- Как организовать работу многих процессов на разных машинах в том случае, если в системе нельзя непротиворечиво определить глобальное время?
- Как организовать выполнение транзакций — таких наборов действий, которые надо либо все выполнить, либо не выполнить ни одного из них?
-
Целостность.
Поддержка целостности данных и непротиворечивости вносимых изменений.
- Каким образом можно обеспечивать целостность данных.
- Какие модели непротиворечивости нужно поддерживать. Модель непротиворечивости определяет, на основе каких требований формируются результаты выполняемых одновременно изменений и что доступно клиентам, выполнявшим эти изменения.
- Какие протоколы обеспечения непротиворечивости, создания и записи транзакций, создания и согласования реплик и кэшей использовать для выполнения требований этих моделей.
-
Отказоустойчивость.
Организация отказоустойчивой работы.
- Как организовать отказоустойчивую работу одного процесса?
- Как обеспечить надежную связь между элементами системы?
- Какие протоколы использовать для реализации надежной двусторонней связи или надежных групповых рассылок?
- Какие протоколы использовать для записи промежуточных состояний и восстановления данных и работы системы после сбоев?
-
Защита.
Организация защищенности данных и коммуникаций.
- Как организовать защиту системы в целом?
При этом большее значение, чем технические аспекты, имеют организационные и психологические факторы — проблемы определения процедур проведения работ, обеспечивающих нужный уровень защищенности, и проблемы соблюдения людьми этих процедур.
- Как организовать защиту данных от несанкционированного доступа.
- Как обеспечить защиту каналов связи от двух видов атак —несанкционированного доступа к передаваемой информации и подмены информации в канале?
- Какие протоколы аутентификации пользователей, подтверждения идентичности и авторства использовать?
- Как организовать защиту системы в целом?
Из перечисленных тем отдельного рассмотрения заслуживают вопросы организации передачи сообщений и транзакций, тем более что все рассматриваемые далее технологии используют эти механизмы. Более того, практически любая распределенная система сейчас строится на основе программного обеспечения промежуточного уровня (middleware – программное обеспечение, которое предназначено для облегчения интеграции ПО, размещенного на нескольких машинах, в единую распределенную систему и поддержки работы такой системы), содержащего ту или иную их реализацию.