Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOS / Дисциплины специализации.doc
Скачиваний:
40
Добавлен:
09.05.2015
Размер:
1.61 Mб
Скачать

Дисциплины специализации

  1. Операции над нечёткими множествами.

  2. Решение задачи кластеризации с помощью сетей Кохонена.

  3. Язык UML.

  4. Моделирование бизнес-процессов. Стандарты IDEF.

  5. Обратные связи.

  6. Основные организационные структуры.

  7. Интерфейс графических устройств GDJ. Кисть, карандаш, примитивы.

  8. Понятие ресурса. Ресурс меню, курсор, пиктограмма.

  9. Модальные и не модальные панели диалога.

  10. Формы записи алгоритмов в визуальной среде программирования.

  11. Этапы проектирования программной системы в визуальной среде программирования.

  12. Визуальное объектно-ориентированное программирование. Инкапсуляция, наследование, полиморфизм.

  13. Схема работы web-приложения иweb-браузера по протоколу НТТР: общий вид запроса и ответа НТТР, метод, представление, заголовки запроса, ответа и представления.

  14. Методы НТТРGETиPOST, понятие безопасного и идемпотентного метода, заголовки запроса НТТР:Host,Accept,User-AgentиReferer.

  15. Файловая система procfs.

  16. Средства командной строки по управлению учетными записями пользователей в Linux.

  17. Команда man

  18. Односторонние функции. Псевдослучайные генераторы.

  19. Умножение на основе классов вычетов.

  20. Избыточное кодирование.

  21. Распределенные системы. Отличия распределенных и сосредоточенных систем. Отличия распределенных и параллельных вычислений. Пример распределенного алгоритма – криптографический протокол принятия решения на основе случайного бита.

  22. Балансировка нагрузки в распределенных системах. Статическая и динамическая балансировки. Математическая постановка задачи динамической балансировки. Этапы балансировки. Архитектура подсистемы балансировки.

  23. Распределенное хранение информации. Распределенные базы данных. Правила Дейта для распределенных БД. Фрагментация. Репликация. Протокол двухфазной фиксации транзакций.

  24. Волновые алгоритмы распространения информации. Требования к волновому алгоритму. Алгоритм для кольцевой структуры. Алгоритм для дерева. Алгоритм голосования.

  25. Алгоритмы выбора сайтов (координаторов). Алгоритм смещения. Выборы с помощью алгоритма для деревьев. Алгоритмы выбора для кольцевых структур (Лелана, Чанга-Робертса).

1. Операции над нечёткими множествами.

С точки зрения характеристической функции, нечеткие множества есть естественное обобщение обычных множеств, когда мы отказываемся от бинарного характера этой функции и предполагаем, что она может принимать любые значения на отрезке [0, 1]. В теории нечетких множеств характеристическая функция называется функцией принадлежности, а ее значение — степенью принадлежности элементаx нечеткому множеству A.

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

Максиминные:

Алгебраические:

Ограниченные:

Пример. Пусть А — нечеткое множество "от 5 до 8" (рис.а) и — нечеткое множество "около 4" (рис. б), заданные своими функциями принадлежности:

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

Рис. 1.

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

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

2. Решение задач кластеризации с помощью сетей Кохонена.

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

По способам настройки входных весов сумматоров и по решаемым задачам различают много разновидностей сетей Кохонена. Наиболее известные из них:

  • Сети векторного квантования сигналов, тесно связанные с простейшим базовым алгоритмом кластерного анализа(метод динамических ядер илиK-средних, то естьK-means)

  • Самоорганизующиеся карты Кохонена(Self-Organising Maps, SOM)

  • Сети векторного квантования, обучаемые с учителем (Learning Vector Quantization)

Слой Кохонена

Слой Кохонена состоит из некоторого количества n параллельно действующих линейных элементов. Все они имеют одинаковое число входов m и получают на свои входы один и тот же вектор входных сигналов x = (x1,...xm). На выходе jго линейного элемента получаем сигнал

где wji — весовой коэффициент iго входа jго нейрона, wj0 — пороговой коэффициент.

После прохождения слоя линейных элементов сигналы посылаются на обработку по правилу «победитель забирает всё»: среди выходных сигналов yj ищется максимальный; его номер jmax = argmaxj{yj}. Окончательно, на выходе сигнал с номером jmax равен единице, остальные — нулю. Если максимум одновременно достигается для нескольких jmax, то либо принимают все соответствующие сигналы равными единице, либо только первый в списке (по соглашению). «Нейроны Кохонена можно воспринимать как набор электрических лампочек, так что для любого входного вектора загорается одна из них.»

Использование слоя Кохонена.

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

» X = [0 1; 0 1]; % Задание диапазонов возможного положения центров кластеров

» % Задание параметров для моделирования исходных данных,

» % принадлежащих 8 классам (кластерам)

» clusters = 8;

» points = 10;

»std_dev = 0.05;

» Р = nngenc(X,clusters,points,std_dev); % Моделирование входных данных

»h = newc([0 1;0 1],8,.1); % Создание слоя Кохонена

» h.trainParam. epochs = 500; % Задание количества циклов обучения

» h = init (h) ; % Инициализация сети

»h = train(h,P); % Обучение сети

»w = h.IW{1};

» % Вывод графика исходных данных и выявленных центров кла­стеров

»plot (P(1,:),P(2,:), '+r');

»hold on; plot(w(:,l),w(:,2), 'ob');

»xlabel ('p(1)');

»ylabel('p(2)');

»p = [0; 0.2]; % Задание нового входного вектора

» у = sim(h,p) % Опрос сети

»У = (3,1) 1

Работу обученной сети иллюстрирует рис. 1 и результат ее опроса (который выдается в форме разреженной матрицы). В условиях примера предъявленный вектор отнесен к третьему классу (кластеру).

Рис. 1. Исходные данные и выявленные центры кластеров

3. Язык uml

UML –

  • Это язык уровня промежуточного между формальными и неформальными языками

  • Это расширяемый язык

  • Это язык моделирования (но не имитации процессов)

UML это язык визуального моделирования, обеспечивающий спецификацию, визуализацию, проектирование и документирование любых компонентов программного обеспечения (ПО), преимущественно для реализации на объектно-ориентированных языках.

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

Зачем нужен UML:

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

  • Автоматическая генерация части кода - автоматический синтез программ алгоритмически неразрешим, хотя известны разрешимые подклассы

  • В инструментах обязательно использование механизма reverse engineering для создания визуальной модели по коду

  • Упрощение документирования – все элементы моделей UML позволяют вводить текстовое описание и как правило инструменты, работающие с UML позволяют собирать документы из этих описаний.

  • Поддерживаются все этапы создания программы – анализ, проектирование, разработка, сопросождение

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

Принципа Парето: Небольшая доля причин, вкладываемых средств или прилагаемых усилий (например, 20%) отвечает за большую долю результатов, получаемой продукции или заработанного вознаграждения (например, 80%).

Основные используемые принципы:

  1. Абстрагирование (в модель включаются наиболее существенныеобъекты проектируемой системы, имеющие непосредственное отношение к решаемой задаче).

  2. Многомодельность (никакая единственная модель не может с достаточной степенью адекватности описывать различные аспекты сложной системы)

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

  4. Иерархичность эффективных моделей.

Основные аспекты языка:

  • сущности (абстрактные классы, классы и экземпляры);

  • характеристики внешней среды;

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

  • структурные аспекты, включая агрегацию и наследование;

  • состояния объектов или классов, в том числе сложные(классы?), переходы между ними и условия переходов;

  • взаимодействия объектов с внешним миром и между собой.

В стандарте UML 1.4 представлены 8 диаграмм, в стандарте UML 2.0 их уже 13. При реальном проектировании нет необходимости в таком большом количестве диаграмм. В рамках языка UML все представления о модели сложной системы фиксируются в виде специальных графических конструкций, получивших название диаграмм. В UML 2.0 определены следующие виды диаграмм:

  • Поведенческие диаграммы:

    • Диаграмма вариантов использования (use case diagram) - показывает набор вариантов использования, действующих субъектов (акторов) и их связи

    • Диаграмма последовательности (sequence diagram) - показывает взаимодействия классов и передачу сообщений с указанием временных характеристик.

    • Диаграмма коммуникации - описывает сообщения посылаемые и принимаемые структурированными объектами

    • Диаграмма состояний (statechart diagram) - изображает графически машину состояний(автомат).

    • Диаграмма деятельности (activity diagram)- показывает ход вычислительного процесса, определяя потоки управления, связывающие деятельности.

    • Временная диаграмм - отражает взаимодействие с сообщениями, развертываемое во времени

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

  • Структурные диаграммы

    • Диаграмма классов (class diagram) - определяет набор классов, интерфейсов, коопераций и связей между ними

    • Диаграмма объектов(object diagram) - определяет множество объектов и связей между ними.

    • Диаграмма компонентов (component diagram) - показывает внешние интерфейсы, включая порты, и внутреннее устройство компонента

    • Диаграмма составной структуры - представляет внешние интерфейсы и внутреннюю композицию структурированных классов.

    • Диаграмма размещения - задает размещение компонентов в сети.

    • Диаграмма пакетов - определят размещение элементов модели в пакетах.

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

  • Диаграммы классов

  • Диаграммы использования

  • Диаграммы деятельности

  • Диаграммы последовательностей

Более подробное рассмотрение диаграмм:

  1. диаграмма вариантов использования (use-case diagram)

Вариант использования – это очевидное для постановщика задачи взаимодействие пользователя и информационной системы (ИС), или двух ИС, или ИС и устройства.

Акторы – действующие лица.

Примеры: Менеджер по продажам, Принтер, Бухгалтерская система

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

Диаграммы Use-case не отображаются в программе однозначно, но позволяют

определить:

  • Интерфейсы (основные)

  • Производительности каналов связи

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

  1. Диаграмма классов (Class Diagram)

Класс в UML обозначает набор объектов, имеющих сходную архитектуру, поведение и отношения с другими объектами.

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

<квантор_видимости> <имя_атрибута> [кратность_атрибута]:

<тип_атрибута>= <нач_значение> {строка_свойство}.

Обозначения областей видимости атрибутов знаками:

  • + общедоступный (public)

  • # защищенный (protected)

  • - закрытый (private)

Кратность атрибута характеризует наличие ни одного(0) или нескольких атрибутов данного типа,

  • [0..1] - иногда есть, иногда нет

  • [0..1,5,7..11] - любое из перечисленных чисел

  • * - любая кратность

В UML различают следующие отношения между классами(каждое отношение имеет своё визуальное представление):

  • Отношения зависимости (dependency relationship) – изменение одного компонента модели вызовет изменение другого компонента модели

  • Отношения ассоциации (association relationship) – наличие связи между классами

  • Отношения обобщения (generation relationship) - это связь между общей сущностью, называемой суперклассом, или родителем, и более специализированной разновидностью этой сущности, называемой подклассом, или потомком.

  • Отношения реализации (realization relationship).

  • Отношения агрегации (aggregation relationship) употребляется, когда в состав сущности, описываемой одним классом, входят сущности описываемые другими классами. При этом все сущности существуют сами по себе.

  • Отношения композиции (composition relationship) –частный случай отношения агрегации, когда части не могут в каком-то смысле существовать вне зависимости от целого

При использовании UML для проектирования реляционных БД нужно очень осторожно использовать наследование классов и стараться вообще избегать

множественного наследования.

  1. Диаграммы состояний (Statechart Diagram)

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

  1. Диаграмма деятельности(Active Diagram)

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

  1. Диаграммы кооперации(Collaboration Diagram)

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

  1. Диаграмма компонентов. (Component Diagram)

Диаграмма компонентов описывает физическую реализацию системы и позволяет:

- показать наиболее общие черты структуры программной системы;

-дать спецификации исполняемого варианта;

-обеспечить повторное использование компонентов;

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

  1. Диаграмма последовательностей (Sequence Diagram)

На диаграмме последовательностей изображаются взаимодействующие между собой объекты, изображаемые обычным способом. Вертикальные линии соответствуют оси времени, изображаются пунктиром – object lifeline (линия жизни). Сообщения – это в некотором смысле законченные фрагменты

информации.