Опубликован: 18.09.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 12:

Компонентные технологии и разработка распределенного ПО

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

  • Связь.

    Организация связи и передачи данных между элементами системы.

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

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

    Поддержка идентификации и поиска отдельных ресурсов внутри системы.

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

    Организация работ в рамках процессов и потоков.

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

    Синхронизация параллельно выполняемых потоков работ.

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

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

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

    Организация отказоустойчивой работы.

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

    Организация защищенности данных и коммуникаций.

    • Как организовать защиту системы в целом?

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

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

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

Владислав Нагорный
Владислав Нагорный

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

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия