Справочник от Автор24
Поделись лекцией за скидку на Автор24

Принципы разработки и анализа алгоритмов определение информационной технологии

  • ⌛ 2017 год
  • 👀 672 просмотра
  • 📌 586 загрузок
  • 🏢️ МАИ
Выбери формат для чтения
Статья: Принципы разработки и анализа алгоритмов определение информационной технологии
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате docx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Принципы разработки и анализа алгоритмов определение информационной технологии» docx
МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ) Факультет радиоэлектроники летательных аппаратов Кафедра № 402 Материал к лекционным занятиям по дисциплине «Наименование дисциплины» Москва, 2017 г. ЛЕКЦИЯ 1. ПРИНЦИПЫ РАЗРАБОТКИ И АНАЛИЗА АЛГОРИТМОВ ОПРЕДЕЛЕНИЕ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ Нисходящим проектированием алгоритмов, проектированием алгоритмов "сверху вниз" или методом последовательной (пошаговой) нисходящей разработки алгоритмов называется такой метод составления алгоритмов, когда исходная задача (алгоритм) разбивается на ряд вспомогательных подзадач (под алгоритмов), формулируемых и решаемых в терминах более простых и элементарных операций (процедур). Последние, в свою очередь, вновь разбиваются на более простые и элементарные, и так до тех пор, пока не дойдём до команд исполнителя. В терминах этих команд можно представить и выполнить полученные на последнем шаге разбиений подалгоритмы (команд системы команд исполнителя). Восходящий метод, наоборот, опираясь на некоторый, заранее определяемый корректный набор под алгоритмов, строит функционально завершенные подзадачи более общего назначения, от них переходит к более общим, и так далее, до тех пор, пока не дойдем до уровня, на котором можно записать решение поставленной задачи. Этот метод известен как метод проектирования "снизу вверх". Структурные принципы алгоритмизации (структурные методы алгоритмизации) – это принципы формирования алгоритмов из базовых структурных алгоритмических единиц (следование, ветвление, повторение), используя их последовательное соединение или вложение друг в друга с соблюдением определённых правил, гарантирующих читабельность и исполняемость алгоритма сверху вниз и последовательно. Структурированный алгоритм – это алгоритм, представленный как следования и вложения базовых алгоритмических структур. У структурированного алгоритма статическое состояние (до актуализации алгоритма) и динамическое состояние (после актуализации) имеют одинаковую логическую структуру, которая прослеживается сверху вниз ("как читается, так и исполняется"). При структурированной разработке алгоритмов правильность алгоритма можно проследить на каждом этапе его построения и выполнения. Теорема (о структурировании). Любой алгоритм может быть эквивалентно представлен структурированным алгоритмом, состоящим из базовых алгоритмических структур. Одним из широко используемых методов проектирования и разработки алгоритмов (программ) является модульный метод (модульная технология). Модуль – это некоторый алгоритм или некоторый его блок, имеющий конкретное наименование, по которому его можно выделить и актуализировать. Иногда модуль называется вспомогательным алгоритмом, хотя все алгоритмы носят вспомогательный характер. Это название имеет смысл, когда рассматривается динамическое состояние алгоритма; в этом случае можно назвать вспомогательным любой алгоритм, используемый данным в качестве блока (составной части) тела этого динамического алгоритма. Используют и другое название модуля – подалгоритм. В программировании используются синонимы – процедура, подпрограмма. Свойства модулей: функциональная целостность и завершенность (каждый модуль реализует одну функцию, но реализует хорошо и полностью); автономность и независимость от других модулей (независимость работы модуля-преемника от работы модуля-предшественника; при этом их связь осуществляется только на уровне передачи/приема параметров и управления); эволюционируемость (развиваемость); открытость для пользователей и разработчиков (для модернизации и использования); корректность и надежность; ссылка на тело модуля происходит только по имени модуля, то есть вызов и актуализация модуля возможны только через его заголовок. Свойства (преимущества) модульного проектирования алгоритмов: возможность разработки алгоритма большого объема (алгоритмического комплекса) различными исполнителями; возможность создания и ведения библиотеки наиболее часто используемых алгоритмов (подалгоритмов); облегчение тестирования алгоритмов и обоснования их правильности ; упрощение проектирования и модификации алгоритмов ; уменьшение сложности разработки (проектирования) алгоритмов (или комплексов алгоритмов); наблюдаемость вычислительного процесса при реализации алгоритмов. Тестирование алгоритма – это проверка правильности или неправильности работы алгоритма на специально заданных тестах или тестовых примерах – задачах с известными входными данными и результатами (иногда достаточны их приближения). Тестовый набор должен быть минимальным и полным, то есть обеспечивающим проверку каждого отдельного типа наборов входных данных, особенно исключительных случаев. Пример. Для задачи решения квадратного уравнения ax2 + bx + c = 0 такими исключительными случаями, например, будут: 1) a = b = c = 0; 2) a = 0, b, c – отличны от нуля; 3) D = b2 – 4ac < 0 и др. Тестирование алгоритма не может дать полной (100%-ой) гарантии правильности алгоритма для всех возможных наборов входных данных, особенно для достаточно сложных алгоритмов. Полную гарантию правильности алгоритма может дать описание работы и результатов алгоритма с помощью системы аксиом и правил вывода или верификация алгоритма. Пример. Составим алгоритм нахождения числа всех различных двоичных сообщений (двоичных последовательностей) длины n битов, используя при этом не более одной операции умножения, и докажем правильность этого алгоритма. Вначале найдем число всех таких сообщений. Число двоичных сообщений длины 1 равно 2 = 21 (это "0" и "1"), длины 2 равно 4 = 22 ("00", "01", "10", "11"). Отправляясь от этих частных фактов, методом математической индукции докажем, что число различных сообщений длины n равно 2n. Этот индуктивный вывод докажет правильность алгоритма. Пусть это наше утверждение верно для n = k. Тогда для n = k + 1 получаем, что добавление каждого бита (0 или 1) к любому из 2k сообщений длины k приведет к увеличению числа сообщений в 2 раза, то есть их число будет равно 2 × 2k = 2k+1, что и доказывает наше индуктивное предположение. Составим теперь алгоритм вычисления числа x = 2n с использованием операции умножения только один раз. Прологарифмируем последнее равенство. Получим ln(x) = ln(2n) = n ln(2) . Используя равенство exp(ln(x)) = x, получим, что exp(ln(x)) = x = exp(n ln(2)). Остается теперь, только, записать простейший алгоритм вычисления числа x. Rem Вычисление количества сообщений cls Input “Введите длину сообщения в битах”; n x=exp(n*log(2)) print “Количество сообщений равно ”; int(x) end Для несложных алгоритмов грамотный подбор тестов и полное тестирование может дать полную картину работоспособности (неработоспособности). Трассировка – это метод пошаговой фиксации динамического состояния алгоритма на некотором тесте. Часто осуществляется с помощью трассировочных таблиц, в которых каждая строка соответствует определённому состоянию алгоритма, а столбец – определённому состоянию параметров алгоритма (входных, выходных и промежуточных). Трассировка облегчает отладку и понимание алгоритма. Процесс поиска и исправления (явных или неявных) ошибок в алгоритме называется отладкой алгоритма. Некоторые (скрытые, трудно обнаруживаемые) ошибки в сложных программных комплексах могут выявиться только в процессе их эксплуатации, на последнем этапе поиска и исправления ошибок – этапе сопровождения. На этом этапе также уточняют и улучшают документацию, обучают персонал использованию алгоритма (программы). Пример. Определим функцию фрагмента алгоритма вида на тесте n=2 dim x(n) x(1)=4: x(2)=9 k=1 s=x(1) for i:=1 to n if s Все метки в программе должны быть описаны инструкцией объявления меток label. Метка ставится перед любым выполняемым оператором программы, причем на один оператор можно поставить несколько меток. Синтаксическая диаграмма <Объявление меток> Неструктурную передачу управления также осуществляют следующие процедуры: ·        Break - реализует выход из цикла любого типа. ·        Continue - осуществляет переход на следующую итерацию цикла, игнорируя оставшиеся до конца тела цикла операторы. ·        Halt (<код завершения>) - осуществляет выход из программы, возвращая операционной системе заданный код завершения. Считается, что программа завершилась нормально, если код завершения равен 0. Возвращение кода завершения отличного от 0 обычно означает что программа завершена по обнаружении каких либо ошибок. Коды завершения назначаются программистом, а информация о них помещается в программную документацию. ·        Exit - осуществляет выход из подпрограммы. если процедура использована в основной программе, то она выполняется аналогично Halt. Чаще всего проблема разработки структурного варианта алгоритма возникает при работе с поисковыми циклами. В таких циклах просматривают некоторые последовательности элементов, пока не будет обнаружен элемент с заданными характеристиками. Отличительной особенностью поискового цикла является то, что элемент с заданными характеристиками может отсутствовать, следовательно необходимо предусмотреть 2 варианта выхода из цикла: досрочный, когда нужный элемент найден и обычный - по завершении просмотра всех вариантов. Нисходящее проектирование Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы ("сверху-вниз"). В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций, которая носит название функциональная структура алгоритма (ФСА) приложения. Последовательность действий по разработке функциональной структуры алгоритма приложения: определяются цели автоматизации предметной области и их иерархия (цель-подцель); устанавливается состав приложений (задач обработки), обеспечивающих реализацию поставленных целей; уточняется характер взаимосвязи приложений и их основные характеристики (информация для решения задач, время и периодичность решения, условия выполнения и др.); определяются необходимые для решения задач функции обработки данных; выполняется декомпозиция функций обработки до необходимой структурной сложности, реализуемой предполагаемым инструментарием. Подобная структура приложения отражает наиболее важное - состав и взаимосвязь функций обработки информации для реализации приложений, хотя и не раскрывает логику выполнения каждой отдельной функции, условия или периодичность их вызовов. Разложение должно носить строго функциональный характер, т.е. отдельный элемент ФСА описывает законченную содержательную функцию обработки информации, которая предполагает определенный способ реализации на программном уровне. Функции ввода-вывода информации рекомендуется отделять от функций вычислительной или логической обработки данных. По частоте использования функции делятся на: однократно выполняемые; повторяющиеся. Степень детализации функций может быть различной, но иерархическая схема должна давать представление о составе и структуре взаимосвязанных функций и общем алгоритме обработки данных. Широко используемые функции приобретают ранг стандартных (встроенных) функций при проектировании внутренней структуры программного продукта. Пример Некоторые функции, например Ф2, далее неразложимы на составляющие: они предполагают непосредственную программную реализацию. Другие функции, например Ф1, Фm, могут быть представлены в виде структурною объединения более простых функций, например Ф11, Ф12 и т.д. Для всех функций-компонентов осуществляется самостоятельная программная реализация; составные функции (типа Ф1, Фm) реализуются как программные модули, управляющие функциями-компонентами. например, в виде программ-меню. Рис.. Функциональная структура приложения: Ц - цель; пЦ - подцель; П - приложение; Ф – функция КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Перечислите основные постулаты структурного программирования. 2.Перечислите основные постулаты объектно-ориентированного программирования. 3.В чем отличие структурного и объектно-ориентированного подхода при разработке программ. ЛЕКЦИЯ 3. МЕТОДЫ РЕКУРСИВНЫХ АЛГОРИТМОВ 1. Рекурсия и итерация В математике и программировании рекурсия – это метод определения или выражения функции или процедуры посредством той же функции и процедуры. Рекурсию обычно рассматривают в качестве антипода итерации. Соответственно различают два больших класса алгоритмов: итерационные и рекурсивные. В основе итерационных алгоритмов лежит итерация – многократное повторение одних и тех же действий. Структура таких алгоритмов хорошо описывается алгоритмическими конструкциями “следование”, “ветвление”, “цикл”. Анализ сложности итерационных алгоритмов сводится к определению трудоемкости этих конструкций и формированию интегральной асимптотической оценки с использованием правил суммы и произведения. Рекурсивный алгоритм — это алгоритм, определяемый через себя. В основе рекурсивных алгоритмов лежит рекурсия. Это тоже повторение, но повторение целого в его части. Необходимость применения рекурсивных алгоритмов в одних случаях диктуется самой формулировкой задач – задач, рекурсивных по своей сути, в других – они возникают как удобный метод решения. Рекурсия в сравнении с итерацией имеет ряд преимуществ. Однако практика разработки и использования алгоритмов выдвигает ряд серьезных причин, препятствующих широкому применению рекурсии: рекурсивные алгоритмы, как правило, более затратные с точки зрения времени и памяти, нежели итерационные алгоритмы, решающие ту же задачу. При этом на сложность рекурсивного алгоритма большое влияние оказывает сама организация рекурсии; анализ сложности рекурсивных алгоритмов — одна из наиболее сложных и до конца нерешенных проблем метрической теории алгоритмов. Поэтому всякий математический результат, дающий какой-либо общий подход решения проблемы анализа рекурсивных алгоритмов, интересен как теоретически, так и практически. 2. Методы и проблемы анализа сложности рекурсивных алгоритмов Основными современными инструментами исследования сложности рекурсивных алгоритмов являются метод рекуррентных соотношений и теоретико-графовый метод исследования дерева рекурсии. Идея метода рекуррентных соотношений состоит в построении и решении рекуррентного соотношения, которому удовлетворяет функция сложности t(n) алгоритма. Найденное решение позволяет получить O-оценку для t(n). Этот метод не является универсальным. Во-первых, он применим только для оценки временной сложности рекурсивных алгоритмов. Оценка емкостной сложности требует учета глубины рекурсии и, как следствие, других инструментов. Во-вторых, метод рекуррентных соотношений позволяет получить лишь верхние оценки временной сложности рекурсивных алгоритмов, т.е. только для худшего случая. В-третьих, рекуррентное соотношение для t(n) удается найти только тогда, когда преобразование, уменьшающее значение параметра рекурсии n, линейно относительно n. Если рекуррентное соотношение для t(n) все же найдено, то нет никакой гарантии, что удастся установить явную форму или хотя бы асимптотическую оценку для t(n). Проблема в том, что общих методов решения рекуррентных соотношений нет. Известны лишь методы решения некоторых классов рекуррентных соотношений. Тем не менее, во многих практических ситуациях выход находится. Так, допустимо использование общих приемов решения линейных рекуррентных соотношений с постоянными коэффициентами, аппарата производящих функций и интегральных методов [2]–[5]. Наконец, относительно хорошо решаются рекуррентные соотношения, характерные для прямой рекурсии, организованной по принципу “разделяй и властвуй” и аддитивным уменьшением размерности задачи на некоторую константу. Здесь имеются две основные теоремы о рекуррентных соотношениях, одна из которых доказывается в настоящей статье. Данные теоремы — удобный математический инструмент анализа сложности двух наиболее типичных принципов организации рекурсии, применяемых в практике разработки алгоритмов и программ. Их использование позволяет избежать утомительных расчетов и выбрать наименее трудоемкую схему организации рекурсии. В тех случаях, когда не удается получить рекуррентное соотношение для функции временной сложности, прибегают к построению дерева рекурсии. Кроме того, дерево рекурсии незаменимо для анализа емкостной сложности рекурсивного алгоритма. 3. Рекурсивные подпрограммы В теле подпрограммы доступны все объекты, описанные в программе, в том числе и имя самой подпрограммы. Процедуры и функции, использующие вызовы самих себя, называют рекурсивными (прямая рекурсия). Рекурсия – это такой способ организации вычислительного процесса, при котором процедура или функция в ходе выполнения составляющих ее операторов обращается сама к себе. Типичная рекурсивная процедура имеет вид: procedure Rec (n:Integer); begin <действие на входе рекурсию> if <проверка условия> then Rec(n-1); <действия на выходе из рекурсии>; end; Рассмотрим пример рекурсивной функции вычисления хn, где x – целое число, а n – целое неотрицательное число. Воспользуемся известным фактом: function Deg(x, n: integer):longint; begin if n = 0 then Deg:=1 else Deg:=Deg(x, n-1)*x; end; На рис. 1 показаны прямой и обратный ход рекурсии. Обратите внимание, что в любой рекурсивной подпрограмме обязательно должна быть нерекурсивная ветвь, в нашем случае – это if n = 0 then Deg:=1 При выполнении рекурсивных подпрограмм используется специальная область памяти, называемая «стеком возвратов». В нем запоминаются адреса точек возврата и значения локальных переменных. Пусть переменной a присваивается значение 2 Рисунок 1 - Прямой и обратный ход рекурсии Не следует путать рекурсию с итерацией – повторяемым выполнением некоторых действий до тех пор, пока не будет удовлетворяться некоторое условие. Хотя использование рекурсивной формы организации алгоритма обычно выглядит изящнее итерационной и дает более компактный текст программы, следует помнить, что при рекурсивном программировании велика вероятность ошибок, способных вынудить программиста к выполнению перезагрузки компьютера. Кроме того, если глубина рекурсии очень велика, то оттранслированная программа будет требовать во время выполнения много памяти, что может привести к переполнению стека. В начале каждой рекурсивной процедуры или функции можно поместить строку if KeyPressed then Halt;, позволяющую при «зависании» программы выйти из нее без перезагрузки компьютера, простым нажатием любой клавиши. Функция KeyPressed возвращает результат true, если на клавиатуре была нажата клавиша, порождающая символ, и false – в противном случае. Например, оператор repeat until KeyPressed; содержит пустой оператор и обеспечивает паузу при выполнении программы до нажатия клавиши. 4. Приведем несколько примеров для иллюстрации рекурсии. 1. Рекурсивная процедура печати двоичного представления натурального числа: procedure Rec(n: integer); begin if n > 1 then Rec(n div 2) Write(n mod 2); end; 2. Рекурсивная функция вычисления факториала натурального числа. Напомним, что факториал – это произведение натуральных чисел от единицы до какого-либо данного натурального числа n, то есть 1⋅2⋅ … ⋅(n-1)⋅n, обозначается n! function Factorial(n: integer):longint; begin if n = 1 then Factorial:= 1 else Factorial:= n* Factorial(n-1); end; 3. Рекурсивная функция возведения целого числа x в целую неотрицательную степень n выглядит следующим образом: function Deg(x, n: integer):longint; begin if n = 0 then Deg:=1 else if n mod 2=0 then Deg:=Deg(x*x, n div 2)*x; else Deg:=Deg(x, n-1)*x; end; Рекурсивный вызов может быть косвенным (косвенная рекурсия). В этом случае подпрограмма обращается к себе опосредованно, путем вызова другой подпрограммы, в которой содержится обращение к первой. Примером использования косвенной рекурсии может послужить пример приведенный выше для пояснения использования директивы forward. В данном примере процедура с именем А вызывает процедуру с именем В, а процедура В, в свою очередь, вызывает процедуру А. Пример показывающий использование рекурсивного алгоритма для создания сложного симметричного рисунка. Требуется написать программу, рисующую снежинку, показанную на рисунке. Входные данные: входных данных нет. Выходные данные: рисунок снежинки. Решение. Рисунок представляет собой десятиконечную снежинку, каждый конец которой, в свою очередь, представляет собой множество подобных десятиконечных снежинок, уменьшающихся в размере по направлению к центру. Рекурсивная процедура, рисующая такую снежинку, зависит от трех параметров (трех чисел, однозначно характеризующих изображаемую фигуру): координаты центра x, y и радиуса r. Снежинка с радиусом r ≤ 1 на экране монитора не будет отличаться от пикселя, отсюда следует условие выхода из рекурсивной процедуры: если r ≤ 1, то рисуется лишь одна точка с координатами (x, y), и процедура завершается. В противном случае (r > 1) в процедуре изображаются десять ветвей снежинки в цикле по углу с шагом 36°, начиная с крайней удаленной снежинки, радиусом в 5 раз меньшим начального радиуса (размера). Внутри этого цикла рисуется собственно сама ветвь (от края к центру), которая состоит опять же из восьми подобных снежинок, причем радиус очередной снежинки уменьшается по мере приближения к центру исходной снежинки в 1,5 раза. Для того чтобы нарисовать всю снежинку целиком, из основной программы достаточно вызвать эту процедуру один раз, передав в качестве параметров координаты центра экрана и радиуса исходной снежинки. Листинг 4. Рисование снежинки program p4; uses Graph; const Step=Pi*0.2; var Driver, Mode:integer; procedure DrowStar(x,y,Size:Integer); {x,y – координаты центра и Size – радиус снежинки} var i,j, NewSize, xNew,yNew:Integer; begin if Size<1 then PutPixel(x,y,white) else {Первый цикл – по количеству направляющих снежинки} for i:=0 to 9 do begin newsize:=size; {второй цикл – рисование 8-ми подуровней снежинки} for j:=1 to 8 do begin xnew:=x+Round(newsize*cos(i*Step)); ynew:=y+Round(newsize*sin(i*Step)); DrowStar(xnew,ynew,newsize div 5); newsize:=newsize*2 div 3; end; end; end; {основная программа} begin {задаем вид графического оборудования. Драйвер Vga в режиме VgaHi дает разрешение экрана 640×480 точек} Driver:=Vga; Mode:=VgaHi; {инициализация графического режима} InitGraph(Driver,Mode,'C:\BP\BGI'); {вызов рекурсивной процедуры} DrowStar(320,240,120); {320=GetMaxX/2; 240=GetMaxY/2} Readln; CloseGraph end. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Для чего применяют рекурсию? 2. Когда не стоит применять рекурсию? 3. Что является базой рекурсии? 4. Что является шагом рекурсии? 5. Почему выполнение шагов рекурсии всегда приведёт к базе? 6. Какова будет глубина рекурсии при данном значении аргументов? ЛЕКЦИЯ 4. МЕТОДЫ НЕ ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ Нисходящим проектированием алгоритмов, проектированием алгоритмов "сверху вниз" или методом последовательной (пошаговой) нисходящей разработки алгоритмов называется такой метод составления алгоритмов, когда исходная задача (алгоритм) разбивается на ряд вспомогательных подзадач (подалгоритмов), формулируемых и решаемых в терминах более простых и элементарных операций (процедур). Последние, в свою очередь, вновь разбиваются на более простые и элементарные, и так до тех пор, пока не дойдём до команд исполнителя. В терминах этих команд можно представить и выполнить полученные на последнем шаге разбиений подалгоритмы (команд системы команд исполнителя). Восходящий метод, наоборот, опираясь на некоторый, заранее определяемый корректный набор подалгоритмов, строит функционально завершенные подзадачи более общего назначения, от них переходит к более общим, и так далее, до тех пор, пока не дойдем до уровня, на котором можно записать решение поставленной задачи. Этот метод известен как метод проектирования "снизу вверх". Структурные принципы алгоритмизации ( структурные методы алгоритмизации) – это принципы формирования алгоритмов из базовых структурных алгоритмических единиц (следование, ветвление, повторение), используя их последовательное соединение или вложение друг в друга с соблюдением определённых правил, гарантирующих читабельность и исполняемость алгоритма сверху вниз и последовательно. Структурированный алгоритм – это алгоритм, представленный как следования и вложения базовых алгоритмических структур. У структурированного алгоритма статическое состояние (до актуализации алгоритма) и динамическое состояние (после актуализации) имеют одинаковую логическую структуру, которая прослеживается сверху вниз ("как читается, так и исполняется"). При структурированной разработке алгоритмов правильность алгоритма можно проследить на каждом этапе его построения и выполнения. Теорема (о структурировании). Любой алгоритм может быть эквивалентно представлен структурированным алгоритмом, состоящим из базовых алгоритмических структур. Одним из широко используемых методов проектирования и разработки алгоритмов (программ) является модульный метод (модульная технология). Модуль – это некоторый алгоритм или некоторый его блок, имеющий конкретное наименование, по которому его можно выделить и актуализировать. Иногда модуль называется вспомогательным алгоритмом, хотя все алгоритмы носят вспомогательный характер. Это название имеет смысл, когда рассматривается динамическое состояние алгоритма; в этом случае можно назвать вспомогательным любой алгоритм, используемый данным в качестве блока (составной части) тела этого динамического алгоритма. Используют и другое название модуля – подалгоритм. В программировании используются синонимы – процедура, подпрограмма. Свойства модулей: • функциональная целостность и завершенность (каждый модуль реализует одну функцию, но реализует хорошо и полностью); • автономность и независимость от других модулей (независимость работы модуля-преемника от работы модуля-предшественника; при этом их связь осуществляется только на уровне передачи/приема параметров и управления); • эволюционируемость (развиваемость); • открытость для пользователей и разработчиков (для модернизации и использования); • корректность и надежность; • ссылка на тело модуля происходит только по имени модуля, то есть вызов и актуализация модуля возможны только через его заголовок. Свойства (преимущества) модульного проектирования алгоритмов: • возможность разработки алгоритма большого объема (алгоритмического комплекса) различными исполнителями; • возможность создания и ведения библиотеки наиболее часто используемых алгоритмов (подалгоритмов); • облегчение тестирования алгоритмов и обоснования их правильности ; • упрощение проектирования и модификации алгоритмов ; • уменьшение сложности разработки ( проектирования ) алгоритмов (или комплексов алгоритмов); • наблюдаемость вычислительного процесса при реализации алгоритмов. Тестирование алгоритма – это проверка правильности или неправильности работы алгоритма на специально заданных тестах или тестовых примерах – задачах с известными входными данными и результатами (иногда достаточны их приближения). Тестовый набор должен быть минимальным и полным, то есть обеспечивающим проверку каждого отдельного типа наборов входных данных, особенно исключительных случаев. Пример. Для задачи решения квадратного уравнения ax2 + bx + c = 0 такими исключительными случаями, например, будут: 1) a = b = c = 0; 2) a = 0, b, c – отличны от нуля; 3) D = b2 – 4ac < 0 и др. Тестирование алгоритма не может дать полной (100%-ой) гарантии правильности алгоритма для всех возможных наборов входных данных, особенно для достаточно сложных алгоритмов. Полную гарантию правильности алгоритма может дать описание работы и результатов алгоритма с помощью системы аксиом и правил вывода или верификация алгоритма. Пример. Составим алгоритм нахождения числа всех различных двоичных сообщений (двоичных последовательностей) длины n битов, используя при этом не более одной операции умножения, и докажем правильность этого алгоритма. Вначале найдем число всех таких сообщений. Число двоичных сообщений длины 1 равно 2 = 21 (это "0" и "1"), длины 2 равно 4 = 22 ("00", "01", "10", "11"). Отправляясь от этих частных фактов, методом математической индукции докажем, что число различных сообщений длины n равно 2n . Этот индуктивный вывод докажет правильность алгоритма. Пусть это наше утверждение верно для n = k. Тогда для n = k + 1 получаем, что добавление каждого бита (0 или 1) к любому из 2kсообщений длины k приведет к увеличению числа сообщений в 2 раза, то есть их число будет равно 2 x 2k = 2k+1 , что и доказывает наше индуктивное предположение. Составим теперь алгоритм вычисления числа x = 2n с использованием операции умножения только один раз. Прологарифмируем последнее равенство. Получим ln(x) = ln(2n) = n ln(2) . Используя равенство exp(ln(x)) = x, получим, что exp(ln(x)) = x = exp(n ln(2)). Остается теперь записать простейший алгоритм вычисления числа x. Program Power; Uses Crt; Var x: real; n: integer; Begin ClrScr; WriteLn('Введите длину в битах n ='); { приглашение к вводу входного параметра } ReadLn(n); { ввод входного параметра } x:=exp(n*ln(2)); { вычисление степени } WriteLn('количество сообщений равно: ', int(x+0.5)); { вывод х с округлением } End. Для несложных алгоритмов грамотный подбор тестов и полное тестирование может дать полную картину работоспособности (неработоспособности). Трассировка – это метод пошаговой фиксации динамического состояния алгоритма на некотором тесте. Часто осуществляется с помощью трассировочных таблиц, в которых каждая строка соответствует определённому состоянию алгоритма, а столбец – определённому состоянию параметров алгоритма (входных, выходных и промежуточных). Трассировка облегчает отладку и понимание алгоритма. Процесс поиска и исправления (явных или неявных) ошибок в алгоритме называется отладкой алгоритма. Некоторые (скрытые, труднообнаруживаемые) ошибки в сложных программных комплексах могут выявиться только в процессе их эксплуатации, на последнем этапе поиска и исправления ошибок – этапе сопровождения. На этом этапе также уточняют и улучшают документацию, обучают персонал использованию алгоритма (программы). Пример. Определим функцию фрагмента алгоритма вида на тесте n=2; x[1]=4; x[2]=9: k:=1; s:=x[1]; for i:=1 to n if (s0 и п=>0. Атомы в множестве р1,..., рт представляют заключения, объединенные операторами дизъюнкции, а атомы в множестве q1 ..., qn — условия, объединенные операторами конъюнкции. Исчисление предикатов Исчисление высказываний имеет определенные ограничения. Оно не позволяет оперировать с обобщенными утверждениями вроде "Все люди смертны". Конечно, можно обозначить такое утверждение некоторой пропозициональной константой р, а другой константой q обозначить утверждение "Сократ — человек". Но из (р л q) нельзя вывести утверждение "Сократ смертен". Для этого нужно анализировать пропозициональные символы в форме предикатов и аргументов, кванторов и квантифщированных переменных. Логика предикатов предоставляет нам набор синтаксических правил, позволяющих выполнить такой анализ, набор семантических правил, с помощью которых интерпретируются эти выражения, и теорию доказательств, которая позволяет вывести правильные формулы, используя синтаксические правила дедукции. Предикатами обозначаются свойства, такие как "быть человеком", и отношения, такие как быть "выше, чем". Аргументы могут быть отдельными константами, или составным выражением "функция-аргумент", которое обозначает сущности некоторого мира интересующих нас объектов, или отдельными квантифицируемыми переменными, которые определены в этом пространстве объектов. Специальные операторы — кванторы — используются для связывания переменных и ограничения области их интерпретации. Стандартными являются кванторы общности (V) и существования (3). Первый интерпретируется как "все", а второй — "кое-кто" (или "кое-что"). Ниже приведены синтаксические правила исчисления предикатов первого порядка. Любой символ (константа или переменная) является термом. Если rk является символом k-местной функции и а1 ..., PHILOSOPHER(X)}. Также было показано, что если записать это выражение таким образом, чтобы слева от оператора ":-" стоял единственный позитивный литерал, а справа — негативные литералы, то получится выражение, представляющее фразу Хорна в синтаксисе языка логического программирования PROLOG: admire (Y, X) :- philosopher ( X) , beats (X,Y). Ниже мы рассмотрим, как организовать управление применением таких правил. Правила поиска в языке PROLOG Существует аналогия между выражениями вида admire(Y, X) :- philosopher (X) , beats (X,Y) в языке PROLOG и консеквентной теоремой в системе PLANNER. При запросе "who admires whom?" ("кто кем восхищается?"), который может быть представлен в виде фразы :- admire(V, W). , приведенное выше выражение интерпретируется следующим образом: "Для того чтобы показать, что Y восхищается X, покажите, что X является философом, а затем покажите, что X обогнал Y". Цель, которая унифицируется с выражением admire(Y, X), может быть истолкована как вызов процедуры, а процесс унификации может рассматриваться как механизм передачи действительных параметров другим литералам, образующим тело процедуры. В данном случае не имеет значения, являются ли эти "параметры" переменными, как в представленном примере. Подцели в теле процедуры упорядочены. В языке PROLOG такое упорядочение называется правилом поиска слева направо. В PLANNER и ранних системах, основанных на методе резолюций, цель легко достигается, если в базе данных содержатся утверждения philosopher (zeno) . beats (zeno, achilles). Тогда получим ответ admire (achilles, zeno). Если в базе данных содержится другая информация, касающаяся искомой цели, то программе может потребоваться выполнить обратный просмотр (backtrack), прежде чем добраться до цели. Обратный просмотр используется в том случае, когда нужно отменить присвоение значений переменным, выполненное при обработке некоторой подцели, поскольку это присвоение приводит к неудаче в обработке поздней подцели. Положим, что база данных содержит дополнительную фразу philosopher (socrates ). В этом случае, если эта формула отыщется прежде, чем формула philosopher(zeno)., обработка следующей подцели приведет к неудаче, а следовательно, нужно будет поискать другого философа. Объем работы, который придется выполнить системе в процессе достижения цели admire(V, W), зависит от количества альтернативных вариантов утверждений, касающихся философов, которые имеются в базе данных. Предположим, что в базе данных содержатся факты еще о ста философах, т.е. в ней имеются сто других выражений в формате philosopher(X), в которых X отличается от zeno. Тогда в худшем случае программе потребуется 100 раз выполнить обратный просмотр, прежде чем будет найдено именно то утверждение, которое согласуется с целью. База данных может содержать и другие правила, которые взаимодействуют с интересующим нас выражением admire (V, W). Например, можно положить, что утверждение "X обогнал Y" представляет транзитивное отношение. В этом случае в нашем распоряжении будет правило beats(X, Y) :- beats(X, Z), beatsf Z, Y). Можно также дать такое определение понятию "философ", что таковым будет считаться только тот, кого хотя бы однажды обогнала черепаха: philosopher(X) :- beats(Y, X), tortoise(Y). Наличие этих правил очень усложнит пространство поиска и значительно увеличит количество случаев, когда придется выполнять обратный просмотр. В следующем разделе описано одно из расширений языка PROLOG— система MBASE, на базе которой реализована программа МЕСНО для решения задач вузовского курса теоретической механики. Управление поиском в системе MBASE Один из распространенных способов управления поиском в применении к доказательству какого-либо утверждения — тщательное упорядочение базы данных. При поиске нужных фактов или правил исполнительная система языка PROLOG просматривает базу данных от начала до конца. Используя это обстоятельство, можно несколько сократить время доказательства. Определенные факты (основные атомы — ground atoms) нужно разместить в базе данных раньше, чем правила, которые в качестве цели имеют соответствующие предикаты. Таким образом будут минимизированы издержки обращения к правилам. Например, утверждение beats(achilles, zeno). должно стоять раньше правила beats(X, Y) :- beats(X, Z), beats( Z, Y). Исключения из общих правил также должны располагаться в базе данных раньше, чем сами общие правила. Например, правило, утверждающее, что пингвины не летают, flies(X) :- penguin(X), !, fail . должно стоять раньше общего правила, гласящего, что птицы летают, flies(X) :- bird(X). Литерал fail представляет собой один из способов выражения отрицания в языке PROLOG. Кроме того, в языке PROLOG имеется литерал !, который называется "отсечением". Этот литерал говорит исполнительной системе PROLOG, что не нужно осуществлять возврат из этой точки. Комбинация литералов представляет эффективный механизм управления обратным просмотром, предотвращая выполнение ненужных операций. Предположения по умолчанию реализуются включением неосновных атомов в самый конец базы знаний. Например, если желательно, чтобы по умолчанию квакеры считались пацифистами, то фраза pacifist(X):- quaker(X). должна появиться после всех фраз вида pacifist(nixon):- !, fail. В случае, если при просмотре базы знаний не будет найдено утверждение об обратном, касающееся конкретного квакера, то на него распространится утверждение, справедливое для всех остальных. Общее правило гласит, что сначала в базе данных следует располагать данные об особых случаях, т.е. определенные факты и исключения, затем данные об общих случаях, например правила влияния, и последними должны располагаться сведения о свойствах по умолчанию. Все эти требования соблюдены в системе MBASE, но, кроме того, еще существует и возможность управления глубиной поиска. В этой системе существуют литералы, задающие один из трех имеющихся режимов поиска. Обращение к базе данных (DBC — database call). Этот режим ограничивает зону поиска только основными литералами в базе данных и таким образом исключает применение правил. Для настройки этого режима нужно включить основной литерал в предикат ВВС. Например, факт, что b1 является блоком, будет представлен фразой DBC(block(b1)). Тогда для некоторой фразы Р при обработке подцелей в форме DBC (Р) будет просматриваться только указанная часть базы данных. Описанная выше комбинация литералов отсечения и неудачи также может использоваться в сочетании с предикатом DBC. Таким образом, формируется своего рода "ловушка", прекращающая поиск цели, которая не может быть найдена. Например, можно таким способом прекратить попытки доказать, что блок одновременно находится в двух местах: at(Block, Placel) :- DEC(at(Block, Place2)), different(Placel, Place2), !, fail. Обратите внимание на то, что если бы в теле процедуры отсутствовал предикат ВВС, то программа очень быстро зациклилась. Вызов правил влияния (DBINF — inference call) — это обычный режим работы исполнительной системы PROLOG с использованием всех имеющихся правил. При этом соблюдаются соглашения о порядке поиска в базе сверху вниз, а в правиле слева направо. Порождающий вызов (СС — creative call). В этом режиме формируются место-держатели для неизвестных и выполняются вычисления в тех случаях, когда обычный режим может привести к неудаче. Режим используется для математических вычислений, когда отсутствуют значения всех переменных в уравнении. С помощью литералов 1 и fail обычно определяется отрицание определенной процедуры, например, так: not(P) :- call(P) !, fail. not(P) . В языке PROLOG специальный предикат call обрабатывает цель, переданную ему в качестве параметра. Идея состоит в том, что если такая обработка приведет к успеху, то отрицание цели приведет к неудаче, а литерал отсечения предотвратит обратный просмотр. В противном случае мы перейдем ко второй фразе, и отрицание цели очевидно приведет к успеху. Некоторые из проблем полноты, отмеченные в системе PLANNER, существуют и в языке PROLOG. В частности, использование литералов отсечения и неудачи может серьезно сказаться на полноте и согласованности фактов и правил. Существует множество способов внедрения отрицаний в логику фразы Хорна, но условия, при которых это можно сделать, весьма ограничены (см., например, [Shepherdson, 1984], [Shepherdson, 1985]). Тем не менее исследователи пришли к выводу, что описанный выше механизм управления далеко не всегда может привести процесс вычислений к искомому заключению, поскольку не обладает достаточной "глобальностью". Проблема состоит в том, что все описанные методы базируются все-таки на довольно ограниченных, локальных знаниях о текущем состоянии процесса вычислений. В MBASE была предпринята попытка дополнить локальное управление двумя механизмами— схематизацией (schemata) и мета-предикатами. О них-то и пойдет речь ниже. Под схематизацией подразумеваются ассоциативные механизмы, которые используются в основном для представления в компьютере знаний общего характера. Например, ниже приведено представление знаний о системе подъема грузов на основе ворота (pulley system): sysinfo(pullsys, [Pull, Str, P1, P2], [pulley, string, solid, solid] [ supports(Pull, Str), attached(Str, Pi), attached(Str, P2) ]). Предикат sysinfo принимает четыре аргумента, каждый из которых аналогичен слоту в системе фреймов (см. об этом в главе 6): первый аргумент, pullsys, свидетельствует о том, что эта схема представляет типовую систему подъема грузов с воротом и, таким образом, аналогичен слоту наименования; второй аргумент, [Pull, Str, P1, P2], является перечнем деталей в этом механизме — ворот, трос и два груза; третий аргумент, [pulley, string, solid, solid], содержит информацию о типе этих компонентов; четвертый аргумент содержит список отношений (связей) между компонентами. Обратите внимание на то, что в этом представлении нет никакой пропозициональности, например сведений о том, каким способом можно неявно сопоставить два списка. По существу, это представление очень похоже на описание фрейма (но вряд ли с ним можно работать так же эффективно). Описанная схематизация представляет только один из использованных в МЕСНО способов организации фоновой информации, которая нужна программе. Имеются и другие типы структур, которые помогают выбрать подходящие формулы для определения характеристических параметров той или иной моделируемой системы. Например, выражение kind(al, accel, relaccel(...)). означает, что al является параметром типа accel (ускорение), который определен в утверждении relaccel, т.е. в контексте относительных ускорений. Другое выражение relates(accel, [resolve, constaccel, relaccel)). означает, что формулы resolve, constaccel и relaccel содержат переменные типа accel и, следовательно, могут быть использованы для вычисления ускорения. Приведенные выражения можно рассматривать как один из видов дополнительного индексирования в ассоциативной сети. В данном случае индексирование представлено в форме логики, причем используются структуры, обычно редко встречающиеся в исчислении предикатов первого порядка. Роль метапредикатов состоит в отборе правил, наиболее подходящих для вывода конкретной цели. Рассмотрим следующий пример: solve(U, Exprl, Ans):- occur)U, Exprl, 2), collect(U, Exprl, Expr2), isolate(U, Expr2, Ans). Эта процедура означает, что Ans является уравнением, которое решается относительно неизвестного U в выражении Exprl, если в выражение Exprl неизвестная U входит дважды: выражение Ехрг2 представляет собой Exprl, в котором выполнено приведение неизвестной U; Ans является выражением Ехрг2, в котором неизвестная U вынесена в левую часть. В данном случае метапредикат solve указывает способ преобразования уравнения к виду, который позволит разрешить его относительно неизвестного. Метапредикаты используются для того, чтобы формировать суждения о том, как формировать суждения, и в этом подобны метаправилам в продукционных системах. Некоторые примеры использования системы МЕСНО демонстрируют, что методика логического программирования во многом сходна с программированием на обычных языках. Однако при создании приложений, которые требуют обработки обширного набора структурированных фактов, подчиняющихся определенным физическим законам (анализ электрических цепей или сложных механических систем), единственным подходящим языком часто оказывается PROLOG. Этот же язык может быть использован и для описания теорий, затрагивающих такие общие категории, как пространство, время, допустимость и обязательность, в которых существуют общие принципы, допускающие декларативное представление, и в которых не требуется глубокий поиск. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Технология объектно-ориентированного программирования (ООП). Класс. 2. Что такое конструктор копирования? 3. Всегда ли нужен конструктор копирования? 4. Каким способом вызывается конструктор копирования и в какой момент времени? 5. Технология объектно-ориентированного программирования (ООП). Класс. 6. Что такое деструктор? Особенности оформления деструктора. ЛЕКЦИЯ 14. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ МАКРОСОВ Что такое макрос? Приходилось ли вам при работе с программой Microsoft Office выполнять повторяющиеся задачи, которые можно было бы выполнять автоматически? Возможно, вам приходилось переформатировать многочисленные таблицы в документе Word или преобразовывать данные в электронных таблицах Excel. А может, было необходимо сделать однотипные изменения на нескольких похожих страницах Visio или слайдах PowerPoint? Если описанные ситуации кажутся вам знакомыми, значит, вам пора узнать больше о макросах. Возможно, вы когда-нибудь работали с файлами, открытие которых сопровождалось предупреждением безопасности о том, что в файлах содержатся макросы, поэтому макросы чаще всего ассоциируются с пугающими словами «вирус» или «программирование». Запомните, что большинство макросов не только безвредны, но и могут значительно экономить ваше время. Кроме того, создать макрос намного проще, чем это может вам показаться. Не имеет значения, в каком приложении пакета Office вы работаете - это может быть Word, Excel или PowerPoint - вероятно вы по нескольку по нескольку раз в день выполняете некоторые рутинные операции, которые вы либо уже десятки раз выполняли раньше, либо которые вам нужно повторить много раз. В частности, это форматирование отдельных фрагментов текста, последовательное выполнение нескольких команд меню или форматирование документа определенным образом. Я думаю, что вы мечтаете избавиться от этой рутины и сократить время, необходимое на выполнение работы. Конечно, большинство приложений пакета Office содержит в меню Правка команду повторить, с помощью которой можно повторить последнее действие. Это очень удобно, но с помощью этой команды можно повторить только одно действие. Если же нужно повторить несколько действий, то данная команда не подойдет. Что следует делать в таких случаях? Можно автоматизировать практически любую рутинную работу и повторяющуюся работу. Можно выполнить эту автоматизированную работу МГНОВЕННО, просто выбрать одну команду, нажав клавишу либо щелкнув на панели инструментов. Это звучит слишком хорошо, чтобы быть правдой, но, используя VBA, можно сделать нечто, называемое МАКРОСОМ. Он в действительности состоит из списка действий, которые надо запомнить для повторного выполнения. Таким образом, макрос не сильно отличается от кулинарного рецепта, состоящего из набора инструкций, в которых говориться, какие действия необходимо выполнить, чтобы что-нибудь приготовить. Макрос - это набор инструкций, которые сообщают программе (такой как Word или Excel), какие действия следует выполнить, чтобы достичь определенной цели. Различие, однако, состоит в том, что макрос объединяет все эти инструкции в одном сценарии, который затем можно вызвать с помощью команды меню, кнопки панели инструментов или комбинации клавиш. С этой точки зрения макрос отличается от, скажем, рецепта приготовления хлеба, но похож на автоматическую хлебопекарню, загрузив ингредиенты в которую, можно испечь хлеб одним нажатием кнопки. Список инструкций, составляющих макрос, как правило, состоит из макрооператоров. Некоторые операторы выполняют особые действия, связанные с выполнением самого макроса, но большинство операторов соответствует командам меню и опциям диалоговых окон приложения, в котором выполняется макрос. Например, в любом приложении можно закрыть текущее (активное) окно, выбрав команду Закрыть из меню Файл. В макросе VBA следующий оператор позволяет сделать тоже самое: Active Window. Close (Активное Окно. Закрыть) Названия операторов очень информативны, говорят сами за себя о том, что они делают, и не требуется отдельных пояснений. VBA представляет собой среду программирования, разработанную специально для создания макросов в других приложениях. Возможно, последняя фраза звучит устрашающе, но наибольшим преимуществом языка программированияVBA является то, что он намного проще, чем большинство других языков программирования. Если вы не хотите ничего самостоятельно программировать, то с помощью VBA можете просто записать макрос и назначить его кнопке, расположенной непосредственно в самом документе окна простым перетаскиванием соответствующих элементов управления в окно документа. Другие средства позволяют настраивать меню и панели инструментов. Поэтому в вашем распоряжении есть все необходимое для создания простого сценария, при этом не нужно вручную писать не строчки кода. Конечно, если вы хотите воспользоваться средствами VBA, вам нужно будет добавить в записанный макрос несколько строк кода самостоятельно. Язык VBA разработан таким образом, чтобы можно было быстро начать программировать на нем, а затем по мере изучения совершенствовать свои навыки. С помощью языка VBA можно почти сразу (без длительного обучения) начать создавать полезные макросы. Данное свойство выгодно отличает VBA от других языком программирования. Самый простой способ создать макрос - воспользоваться средством записи макросов. Для этого нужно просто запустить средство записи и затем выполнить операции, которые вы хотите автоматизировать (таким образом можно выделить текст, а также выбирать команды меню или изменить опции диалогового окна.) Средство записи переведет все, что вы сделаете, в соответствующие операторы VBA. Результат записи будет сохранен в отдельной области, называемой модулем, откуда можно будет повторить всю процедуру в любое время. Макрос — это набор команд, которые можно применить, нажав всего лишь одну клавишу. С помощью макроса можно автоматизировать любое действие, которое выполняется в используемом приложении, и даже выполнять действия, о возможности выполнения которых вы даже не догадывались. Являются ли макросы программой? Макрос является программой, однако, чтобы использовать в работе макросы, вам не нужно быть разработчиком или программистом. Для создания большинства макросов, используемых в приложениях Office, применяется язык Microsoft Visual Basic for Applications, обозначаемый как язык VBA. Эта статья посвящена именно VBA-макросам. Когда и зачем использовать макросы? Макросы экономят время и расширяют возможности ежедневно используемых программ. Макросы можно использовать для автоматизации выполнения повторяющихся действий при редактировании документа, оптимизации выполнения трудоемких задач и для создания решений, например для автоматизации создания документов, которые вы и ваши коллеги постоянно используете. Те, кто хорошо знаком с языком VBA, могут использовать макрос для создания пользовательских надстроек, включающих шаблоны, диалоговые окна, и даже для хранения многократно использующихся сведений. В этой статье мы рассмотрим пример форматирования многочисленных таблиц в документе Word. Предположим, что в документе имеются 50 таблиц, форматирование которых необходимо изменить. Если вы опытный пользователь и форматирование одной таблицы займет у вас пять минут, выполнение одной задачи для всех таблиц займет не один час. Если для форматирования таблиц записать макрос и задать параметр повторения действий до конца документа, задача будет выполнена в считанные минуты. Создание макросов Во многих приложениях Office можно создать макрос, либо записав последовательность необходимых действий, либо написав код программы. Запись макроса Записать макрос так же просто, как и включить или выключить магнитофон. При использовании средства для записи макросов запись макроса осуществляется автоматически на основании действий, выполняемых пользователем. Макрос можно записать в таких приложениях семейства Office, как Word, Excel, PowerPoint, Visio и Project. Например, рассмотрим вариант записи макроса для задачи, упомянутой в начале статьи — изменение форматирования нескольких таблиц в большом документе Word. Применив к таблице табличный стиль, можно одновременно задать несколько параметров форматирования, но при этом может еще потребоваться изменить параметры, которые не имеют отношения к стилю, например ширину таблицы или высоту табличных ячеек. Чтобы записать такой макрос, поместите курсор в начало таблицы, форматирование которой необходимо изменить, и выполните следующие действия: В меню Сервис выберите команду Макрос, а затем — команду Начать запись. В диалоговом окне Запись макроса (см. рисунок) можно задать имя макроса, назначить для быстрого доступа к нему панель задач или сочетание клавиш, указать место, где макрос будет храниться, и добавить описание макроса для справки. При необходимости все эти шаги можно пропустить и нажать «ОК», чтобы начать запись. Макросы и безопасность В то время как большинство макросов не только безвредны, но и полезны, макросы представляют собой важную проблему безопасности. Макрос, созданный с вредительскими целями, может содержать код, который повлечет повреждение или уничтожение документа и даже всей системы. Чтобы защитить систему и файлы, не включайте макросы из неизвестных источников. Чтобы иметь возможность включать и отключать макросы и при этом иметь доступ ко всем макросам, которые необходимо использовать, в приложениях семейства Office установите средний уровень безопасности. Тогда вы получите возможность включать или выключать макросы каждый раз при открытии файла, который содержит макрос, и при этом сможете запускать любой макрос по вашему выбору. Чтобы установить уровень безопасности в приложении семейства Office, в котором можно использовать VBA-макрос, в меню Сервис выберите команду Макрос, а затем — Безопасность. Выберите необходимый уровень безопасности и нажмите ОК. Обратите внимание, что не рекомендуется использовать низкий уровень защиты. Использование макросов в приложении... Word В приложении Word можно записывать и создавать макросы программными средствами. Начало работы. Дополнительные сведения и справка по записи макросов Если вы опытный пользователь Word и умеете записывать макросы, именно с приложения Word, лучше всего начать подробное изучение редактирования и создания пользовательских макросов программными средствами, поскольку Word VBA использует термины, с которыми вы хорошо знакомы и используете каждый день. Excel Макросы очень часто используются в Excel, потому что они значительно расширяют функциональные возможности приложения. Макросы Excel можно использовать как для автоматизации обычных задач, так и для создания пользовательских функций. Начало работы. Запись и использование макроса в Excel В двух статьях базы знаний Microsoft описаны два макроса Excel, которые уже созданы и готовы к использованию: Использование VBA-макроса для расчета суммы только в отображаемых ячейках (на английском языке) Макрос для извлечения данных из диаграммы (на английском языке) Если вы умеете записывать и применять макросы в Excel и хотите научиться редактировать и создавать макросы в Excel с помощью программных средств, ознакомьтесь с учебным курсом, посвященным циклам. Использование макросов Microsoft Excel для создания циклов (на английском языке) Автоматически присваиваемое макросу имя можно изменить. Имена макросов могут состоять из букв и цифр и не должны содержать пробелы. По умолчанию новый макрос сохраняется в общем шаблоне Normal.dot. Макрос также можно сохранить в активном документе или шаблоне, равно как и в любом пользовательском шаблоне. Для быстрого доступа к макросу можно назначить панель задач или сочетание клавиш. Этот этап можно пропустить и выполнить назначения в любой момент времени. Описание макроса включает дату создания и имя пользователя, записавшего макрос. Описание можно редактировать по усмотрению пользователя. Если нажать кнопку «ОК», появится небольшая панель с двумя кнопками — Остановить запись и Пауза . Выполните действия по форматированию таблицы. Например, можно применить стиль к таблице, задать ширину таблицы не более 50% ширины страницы, выделить таблицу, а затем удалить параметры высоты строк для всех строк. Закончив форматирование, которое будет применено ко всем таблицам, нажмите кнопку Остановить запись. Теперь можно щелкнуть любую таблицу в документе и запустить макрос, чтобы автоматически выполнить все действия, которые были произведены с первой таблицей. Примечание. Если для доступа к макросу не назначена панель или сочетание клавиш, макрос можно выбрать с помощью диалогового окна «Макрос». Для этого в меню Сервис выберите команду Макрос, а затем — Макросы. Выберите макрос из списка и нажмите Выполнить. Создание макроса программными средствами В приложениях Office, в которых можно записать макрос, например в Access, Outlook, FrontPage или Publisher, можно также написать пользовательский VBA-макрос. Чтобы написать макрос, вам потребуется минимум знаний о языке VBA, вы будете удивлены тем, насколько легко его освоить на фоне представлений о самом приложении, которым вы пользуетесь. Язык VBA предназначен для автоматизации функций, используемых каждый день. Например, в приложении Word к терминам VBA относятся документы, таблицы, абзацы и разделы. Возможность создания макроса программными средствами или редактирования записанного макроса позволяет усовершенствовать макрос. Например, в макрос из описанного выше примера можно добавить так называемый цикл — простейший код VBA, который позволяет макросу последовательно применить форматирование ко всем таблицам в документе, тогда не потребуется запускать каждый раз макрос отдельно для каждой таблицы. Одно из наиболее удобных свойств VBA-макросов заключается в том, что, научившись писать VBA-макросы для одного из приложений Office, полученные навыки и знания можно использовать для написания и редактирования макросов в любом другом приложении Office. Терминология отличается в силу функциональных различий между приложениями, но синтаксис, применяющийся для настройки макроса или добавления новых функций, таких как циклы, один и тот же для всех приложений, которые используют VBA. Совет. Лучше всего начать изучение VBA с записи макроса, затем можно просмотреть его в окне редактора Visual Basic. Для этого в меню Сервис выберите команду Макрос, а затем — Макросы. Выберите записанный макрос из списка и нажмите Изменить. PowerPoint, Visio и Project Так же как и в приложениях Word и Excel макросы можно записывать и создавать в приложениях PowerPoint, Visio и Project. Начинаем работать с макросами в PowerPoint Начинаем работать с макросами в Project Access Макросы очень важны для работы с Access, потому что они значительно расширяют функциональные возможности баз данных. Несмотря на то, что записать макрос в Access нельзя, можно создать макрос с помощью программных средств Access VBA или с помощью инструмента Macro Builder. Access обладает несколькими возможностями, и язык VBA — всего лишь одно из ряда средств, с помощью которых можно задать требуемую автоматизацию. Знакомство с основами программирования в Access Создание и редактирование макросов в Access FrontPage и Publisher По аналогии с приложениями Word, Excel, PowerPoint и Visio в приложениях FrontPage и Publisher можно создавать макросы для экономии времени за счет автоматизации повторяющихся задач, а также, например в приложении FrontPage, для создания и использования надстроек, расширяющих функциональные возможности приложения. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Что такое макрос? 2. Что обеспечивают аргументы макрокоманды? 3. Для чего макрокоманда всегда связывается с событием? 4. Какие четыре области отображаются в окне макроса? 5. Как запускается макрос? ЛЕКЦИЯ 15. ПРОГРАММИРОВАНИЕ ОБРАБОТКИ ДАННЫХ НА МНОГОЯДЕРНЫХ ПРОЦЕССОРАХ 1. Логическая структура микропроцессорной системы При проектировании систем контроля, управления или вычислений на основе микропроцессора необходимо выяснить и описать функции, подлежащие выполнению в системе, а затем согласовать их с возможностями тех микропроцессоров, которые могут быть использованы в проектируемой системе. Реальная электронная система на основе микропроцессора содержит значительное число функциональных устройств, одним из которых является микропроцессор. Все устройства системы имеют стандартный интерфейс и подключаются к единой информационной магистрали, как это показано на рис.1. Микропроцессор в зависимости от требований, предъявляемых к системе, может быть устройством однокристальным или одноплатным, созданным на основе многокристального комплекта микропроцессорных БИС. В высокопроизводительных системах микропроцессор строится на основе биполярных микропроцессорных секций БИС. Микропроцессор выполняет в системе функции центрального устройства управления и устройства арифметическо-логического преобразования данных. В качестве устройства управления он генерирует последовательности синхронизирующих и логических сигналов, которые определяют последовательности срабатывания всех логических устройств системы. Микропроцессор задает и последовательно осуществляет микрооперации извлечения команд программы из памяти системы, их расшифровку и исполнение. Тип операций микропроцессора определяется кодом операции в команде. В соответствии с этими кодами микропроцессор выполняет арифметические, логические или иные операции над числами, представленными в двоичном или кодированном двоично-десятичном коде. Числа, подвергающиеся операционным преобразованиям в арифметическо-логическом блоке микропроцессора, называют операндами. Операнд может быть одним из исходных чисел, результатом, константой или некоторым параметром. Операция в микропроцессоре производится над одним или двумя операндами. Память микропроцессорной системы физически реализуется на основе различных ЗУ. Технико-экономическая целесообразность ведет к построению иерархической памяти на основе полупроводниковых постоянных и оперативных запоминающих устройств и магнитных внешних запоминающих устройств. Рис.1 Логическая структура микропроцессорной системы Полупроводниковые постоянные запоминающие устройства ПЗУ позволяют в процессе работы системы осуществлять только чтение заранее записанных данных. Имеют высокую скорость работы и энергонезависимы, т.е. сохраняют информацию при выключении питания. Полупроводниковые оперативные запоминающие устройства ОЗУ работают в режимах оперативной (совпадающей с темпом работы микропроцессора) записи и чтения данных. Недостаток ОЗУ – их энергозависимость, т.е. потеря записанной информации при выключении питания. Память системы адресуема, т.е. каждое слово записывается в ячейке памяти со своим уникальным адресом. Слово – совокупность двоичных единиц (бит) – двоичных разрядов, интерпретируемых как отдельное число или несколько смысловых групп двоичных разрядов. Для получения числа из памяти или записи числа в память необходимо точно задать его адрес в памяти и осуществить операцию считывания данных из памяти. Устройства ввода данных (УВв) – любые средства, предназначенные для передачи данных извне в регистры микропроцессора или в память (клавиатура пульта управления, ввод с перфолент и перфокарт, внешние запоминающие устройства на магнитных лентах, кассетах, дисках, дисплеи и т.д.). Устройства вывода данных (УВвыв) – любые средства, способные воспринимать данные, передаваемые из регистров микропроцессора или ячеек памяти (дисплеи, печатающие устройства, внешние запоминающие устройства, пульт управления и т.д.). Для подключения разнообразных устройств ввода или вывода данных (а также комбинированных устройств ввода-вывода) необходимо привести их все связи и сигналы к стандартному виду, т.е. провести согласование интерфейсов. Для этого используется специальный аппаратурный блок – информационный контроллер ИК, имеющий стандартный интерфейс со стороны подключения к информационной магистрали и нестандартный интерфейс со стороны устройств ввода-вывода, т.е. являющийся преобразователем интерфейсных сопряжений. Микропроцессор МП, ОЗУ и ПЗУ вместе с УВвыв, предназначенными для операций с человеком или другой электронной системой, называется микро-ЭВМ. Микро-ЭВМ – это ЭВМ, центральная часть которой в составе процессора, ОЗУ, ПЗУ, информационного контроллера построена на основе БИС. Применение БИС в качестве основных элементных компонентов обеспечивают микро-ЭВМ такие преимущества перед другими типами ЭВМ, как компактность, надежность, малая материалоемкость, низкие мощность потребления и стоимость. Но магистральная структура микро-ЭВМ и скоростные ограничения микропроцессора определяют умеренные характеристики производительности микро-ЭВМ. Это относится к микро-ЭВМ на основе микропроцессоров на одном или нескольких кристаллах. В микро-ЭВМ на основе биполярных микропроцессорных секций можно получить высокое быстродействие за счет реализации конвейерной обработки данных и скоростного высокоэффективного управления вычислительным процессом даже при магистральной структуре. Микро-ЭВМ становится центральной частью электронной системы контроля, управления и вычислений, когда она вводится в контур управления некоторого объекта (процесса). Для сопряжения с микро-ЭВМ объект (процесс) должен быть оснащен датчиками состояния и исполнительными механизмами. Датчики выступают как источники вводимой для микро-ЭВМ информации, а исполнительные механизмы – как приемники выводимой информации. Для согласования интерфейсов подключение датчиков и исполнительных механизмов в системе осуществляется через блоки сопряжения датчиков и исполнительных механизмов. В зависимости от особенностей объекта (процесса) и возможностей микропроцессора сложность каждого устройства или блока устанавливается на этапе проектирования. Части системы могут развиваться или вырождаться, но должен быть обеспечен общий принцип построения и работы всех электронных систем управления. Вследствие прямой зависимости между функциями программных и аппаратурных средств можно при построении электронной системы развивать либо аппаратуру, либо усложнять программное обеспечение. Именно эти обстоятельства и определяют массовые возможности применения микропроцессорных систем управления практически во всех сферах. Логическая структура универсального программируемого контроллера. Контроллер (блок местного управления) необходим для управления аппаратами ввода-вывода информации (АВВ). Он обеспечивает электромеханическое и логическое сопряжения информационного канала ЭВМ и частей АВВ, являющихся источниками или приемниками управляющей информации и данных, задает порядок следования, количество, электрические параметры, положение во времени и направление прохождения информации между информационными каналами и АВВ. Основная задача контроллера заключается в обеспечении условий отпирания и запирания одиночных вентилей или их групп, а также в запуске различного рода электрических двигателей, электромеханических переключателей, возбуждении соленоидов, приеме усиленных и сформированных разнообразных сигналов датчиков информации АВВ. При любых вариантах функционального разбиения системы на части аппаратурные средства блока сопряжения с АВВ либо интегрируется со средствами БИС микропроцессора, либо выполняются отдельно в виде интерфейсной (интерфейсных) БИС. Контроллер можно выполнить жестким соединением между группами вентилей, триггеров и т.д. как цифровой автомат на основе аппаратурной логики. Минимизация количества электронных элементов для корпусов интегральных схем, как правило, приводит к неупорядоченной электронной структуре, специализированной на конкретное использование только в данном устройстве. Изменение во временной диаграмме или введение новых сигналов в аппаратурном контроллере влекут за собой необходимость перепроектирования и переконструирования всего контроллера или его части. Универсальные программируемые контроллеры реализуются в виде однокристальных БИС или на основе секций микропроцессорных комплектов БИС. В таких контроллерах разнообразные временные диаграммы сигналов и их последовательности порождаются не распределением регулярных сигналов тактовых генераторов путем проводных соединений, а преобразованием последовательностей команд (микрокоманд). Из-за гибкости программных и микропрограммных средств адаптации программируемого контроллера к конкретной области применения осуществляется за счет перепрограммирования, не затрагивающего аппаратурную реализацию контроллера или вызывающего только перезапись содержимого управляющих запоминающих устройств. Технико-экономические параметры интегральных схем с высокой степенью интеграции элементов позволяют осуществлять управление АВВ информации ЭВМ посредством электронных структур, подобных структурам управляющих ЭВМ. При этом обеспечиваются: 1) функциональная гибкость за счет использования развитых систем команд и построения разнообразных сложных последовательностей сигналов на их основе с возможностью учета реакции системы на выдаваемые сигналы; 2) использование распределенных методов управления в иерархических управляющих системах, когда оптимизация процесса преобразования информации ведется на верхнем уровне управления, а непосредственное локальное управление осуществляется встроенным контроллером, воспринимающим и интерпретирующим как состояние АВВ, так и управляющие сигналы средств более высокого уровня управления; 3) простота специализации и модификации устройства управления АВВ. Алгоритм управления определенным типом АВВ задается однозначно и в виде программы может быть записан в ПЗУ. Таким образом, программируемый контроллер в процессе работы многократно может выполнять одну и ту же программу, получая с более высокого уровня управления исходные данные и задания и функционируя автономно, независимо и параллельно с работой средств более высокого уровня. Рис.2 Логическая структура универсального программного контроллера Логическая структура универсального программируемого контроллера приведена на рис.2. Контроллер имеет магистральную структуру. Управление АВВ обеспечивают микропроцессор МП, микроконтроллер и микро-ЭВМ, выполненная на одном кристалле. Если аппаратурных возможностей микропроцессора МП недостаточно, то к магистралям подключаются расширяющие ОЗУ и ПЗУ; поле памяти этих устройств может управлять дополнительным контроллером. Однако в отличие от микро-ЭВМ в контроллере системные функции расширяющих ОЗУ и ПЗУ развиты очень слабо и поэтому для управления ими достаточно простейших аппаратурных средств, обычно закладываемых в кристаллы БИС ОЗУ и ПЗУ. Узлы программируемого интерфейса УПИ и узлы сопряжения УС с пультом управления ПУ и АВВ имеют модульную структуру, что позволяет наращивать их при усложнении АВВ и увеличении их числа. Контроллер работает по жестко заданной, заранее отработанной и введенной в него программе. Во время работы контроллера нет необходимости в его взаимодействии с человеком. Узлы программируемого интерфейса УПИ дают возможность учесть специфику АВВ и осуществить переход от внутрисистемного интерфейса информационной магистрали к интерфейсу разнообразных АВВ. Специализация шин управления АВВ обеспечивается подачей сигналов при выполнении определенной последовательности команд МП; их число зависит от числа узлов программируемого интерфейса УПИ. Рис.3 Обобщенная логическая структура микро-ЭВМ с микропроцессорными контроллерами Логическая структура развитой микропроцессорной системы На рис.3 приведена обобщенная логическая структура микро-ЭВМ, в которой в качестве всех управляющих блоков устройств ЭВМ используются программируемые контроллеры, например контроллер системного пульта управления КСПУ. Он применяется для работы с системным пультом управления СПУ. Все аппараты ввода-вывода управляются контроллерами устройств ввода-вывода КУВВ или групповыми контроллерами устройств ввода-вывода ГрКУВВ. Оперативное ОЗУ и постоянные запоминающие устройства ПЗУ управляются с помощью соответствующих контроллеров КОЗУ, КПЗУ. При такой организации ЭВМ центральный процессор ЦП обеспечивает программируемые контроллеры только управляющей информацией высокого уровня, детализируемой контроллером. Поэтому количество управляющей информации на информационной магистрали системы резко уменьшается, что позволяет увеличить скорость передачи данных. По существу, в этой схеме приведена многопроцессорная вычислительная система, в которой в пределе контроллер имеет те же возможности, что и центральный процессор. Низкая стоимость и высокая надежность БИС позволяют для достижения желаемых параметров ввести распределенную обработку во всех подсистемах вычислительной системы, что определяет новые способы организации вычислительных процессов в системах с децентрализованными управлением и обработкой информации. 2. Интерфейс микропроцессоров Для включения микропроцессора в любую микропроцессорную систему необходимо установить единые принципы и средства его сопряжения с остальными устройствами системы, т.е. унифицированный интерфейс. Унифицированный интерфейс – совокупность правил, устанавливающих единые принципы взаимодействия устройств микропроцессорной системы. В состав интерфейса входят аппаратурные средства соединения устройств (разъем и связи), номенклатура и характер связей, программные средства, описывающие характер сигналов интерфейса и их временную диаграмму, а также описание электрофизических параметров сигналов. Рис.4 Схема интерфейсных связей микропроцессора На рис.4 представлена общая схема взаимодействия микропроцессора МП с устройствами ввода – вывода УВВ и ОЗУ в микропроцессорной системе. Связь МП с УВВ требует пяти групп связи, обеспечиваемых через выводы корпуса. По группе шин 1 передается код выбора (адреса) устройства, по шине 2 – сигнал управления считыванием – записью, по шине 3 – сигнал запроса на прерывания, шины 4 и 5 используются для передачи данных от процессора к УВВ и от УВВ к МП. Связь МП с ОЗУ также содержит пять групп связей, которые необходимо обеспечить через выводы корпуса МП. По группе шин 6 передается адрес в ОЗУ, шина 7 нужна для управления чтением/записью, по сигналам на шине 8 принимаются команды в процессор, а шины 9 и 10 обеспечивают передачу данных из ОЗУ в МП и обратно. Информационные магистрали При проектировании БИС и устройств на их основе необходимо принимать во внимание сложность выполнения разветвленных связей между различными узлами (блоками) и устройствами. Поэтому практически реализованы и получили широкое распространение магистральные структуры связей, к которым подключены входы и выходы электронных узлов (блоков). Информационная магистраль (МИ) представляет собой совокупность проводников (шин) или кабелей, физические свойства которых обеспечивают передачу высокочастотных информационных сигналов. Электронные узлы (блоки), подключаемые к информационной магистрали, должны обладать определенными свойствами, иначе возможно образование короткозамкнутых связей и низкоомных нагрузок. Рис.5 Схема магистральных связей трех регистров данных Рассмотрим пример передачи данных в системе трех 4-разрядных синхронизируемых регистров с информационными магистральными связями, позволяющий определить общие закономерности построения подобных структур (рис.5). Входные сигналы записи данных А0-А3 передаются в регистр и вызывают срабатывание триггеров только на переднем фронте сигнала синхронизации при наличии управляющего сигнала “Разрешение записи” РЗn. Если сигнал РЗn=0, то сигналы входных данных не проходят на входы триггеров и поэтому не могут изменить состояние регистра. Входные сопротивления для информационных входов Ai при этом становятся достаточно большими, их параллельное подключение к шинам магистрали данных не ведет к каким-либо проблемам. Выходные информационные сигналы Q0-Q3 в рассматриваемых схемах формируются с помощью управляемых трехуровневых каскадов, вырабатывающих выходные сигналы логических состояний “0”, “1” и “Выключено”. Управление выходными каскадами триггеров регистра осуществляется сигналом “Разрешение выдачи” РВ. При запрете выдачи выходных состояний (РВ=0) выходные каскады переводятся в режим с высоким выходным сопротивлением. Поэтому параллельное подключение выходных выводов регистров к шинам информационной магистрали также не порождает проблем. Сброс триггеров регистров происходит импульсом синхронизации при подаче сигнала “Разрешение установки 0” (РУ “0”). В рассматриваемой схеме разрешена только лишь последовательная передача информационных сигналов. Поэтому, несмотря на то, что все входы регистров подключены к шинам магистрали и проходящие по магистрали сигналы поступают на входные каскады всех регистров, запись осуществляется только в один регистр управляющим сигналом РЗn=1 (принципиальных ограничений на одновременную запись одной и той же информации в несколько регистров нет). Однозначность информационных сигналов на магистрали при выдаче информации из регистров обеспечивается подачей только одного управляющего сигнала РВ=1. Управляющие сигналы РВ=0 других регистров обеспечивают эффективную электрическую изоляцию их выходных каскадов от шин информационных магистралей. Операция передачи данных “регистр-регистр” осуществляется следующим образом. Рассмотрим таблицу истинности (табл.1) регистров с трехуровневыми выходными состояниями. Таблица 1 РЗn РВ РУ “0” Выходное состояние ø 1 ø 1 1 1 1 ø Q0=Q1=Q2=0 Qi=Ai (на заднем фронте С) Режим хранения (сигналы С не действуют) Отключено” Примечание: Знаком ø отмечены сигналы, которые могут принимать значения либо “0”, либо “1” и не влияют на выполнение тех функций регистром, которые определены другими управляющими сигналами. Используя таблицу истинности, определим условия передачи состояния регистра данных РгД1 в регистр данных РгД3 (в условной записи [РгД1 → РгД3]): После установки уровней управляющих сигналов передача информационного состояния происходит по импульсу синхронизации. При увеличении числа регистров (или иных электронных блоков), подключенных к магистрали, правильность работы схемы не нарушается, если соблюдены правила проектирования регистров и схем управления ими. Единая информационная магистраль микропроцессорной системы связывает между собой все устройства и функционально состоит из информационных магистралей, адресов, данных и сигналов управления. Магистраль адресов В простой микропроцессорной системе только микропроцессор может вырабатывать адреса передаваемой в системе информации. Поэтому магистраль адресов (МА) – однонаправленная: микропроцессор генерирует сигналы кода адреса, а остальные устройства, подключенные к МА, только могут воспринимать их, выполняя непрерывно микрооперацию опознания кода адреса. Количество шин магистрали адресов совпадает с разрядностью передаваемого кода адреса. Если используется 16-разрядный код, то в системе разрешается выработка =65536 адресов. Они могут все относиться к адресам ячеек памяти или к адресам ячеек памяти и адресам регистров данных устройств ввода-вывода. Магистраль данных Микропроцессор, а также ОЗУ, ВЗУ, дисплеи могут воспринимать или передавать данные. Другие устройства могут либо только принимать данные, например устройство печати, либо только выдавать их, например ПЗУ. Чтобы обеспечить все возможности системы, магистраль данных является двунаправленной. Ее разрядность определяется разрядностью микропроцессора и равна 2, 4, 8, 16 и 32 бит. Если в микропроцессоре обрабатываются данные по программам двойной разрядности, то двойное слово пересылается за два цикла, т.е. имеет место временное мультиплексирование (оно также применялось в нескольких первых микропроцессорах, когда использовалась общая магистраль адресов и данных). Магистраль управления Микропроцессор и некоторые шины устройств ввода-вывода генерируют управляющие сигналы, предназначенные для синхронизации и определения операций устройств. Эти сигналы передаются по совокупности однонаправленных шин, в целом образующих магистраль сигналов управления (МУ). Все сигналы управления в электронной системе согласованы с системными сигналами синхронизации. Эти сигналы задают начало и последовательность срабатывания, как различных устройств системы, так и различных блоков и узлов внутри всех кристаллов БИС. Для задания главной последовательности синхронизирующих импульсов, как правило, применяется внешний кварц или генератор на его основе. Выдаваемые микропроцессором сигналы синхронизации бывают однофазными, реже двухфазными. Каждый микропроцессор имеет уникальную систему сигналов управления. Поэтому конкретное описание всех шин МУ, так же как и цоколевки выводов корпуса, дается в технической документации на конкретный микропроцессор. Тем не менее, практически все микропроцессоры имеют общие сигналы. Среди них – сигнал “Сброс” – входной сигнал, вырабатываемый на пульте управления системы. Он приводит к сбросу всех внутренних регистров микропроцессора и загрузке счетчика команд – узла, определяющего последовательность выполнения команд программы, начальным значением адреса, где записана первая команда программы. Важнейшая управляющая функция микропроцессора – определение потоков данных в системе. Микропроцессор вызывает слова команд из памяти в процессе их чтения, обращается в память за операндами или к внешним устройствам за новыми данными, может записать результат операции в память или, сформировав массив данных, определить необходимость их вывода на внешние устройства. Когда микропроцессор посылает данные какому-то устройству, происходит операция записи данных, а когда получает данные от какого-то устройства, то считывает данные из его информационного регистра и выполняет операцию чтения данных. Чтобы задать направление передачи данных по МД, микропроцессор генерирует сигналы “Чтение/запись”, передаваемые по одной из шин МУ. Специфика устройств ввода-вывода данных такова, что информация может быть потеряна, если МП своевременно не осуществит операцию с устройством. Поэтому эти устройства генерируют сигналы “Запрос прерывания процессора”, обращающие внимание микропроцессора на состояние готовности (или неисправности). Микропроцессор имеет вход для приема, по крайней мере, одного сигнала “Запрос прерывания процессора”. Если же запрос принимается, то МП информирует систему, вырабатывая ответный сигнал “Запрос прерывания удовлетворен”. Разная скорость работы устройства ввода-вывода и микропроцессора порождает необходимость приостановки процессора на время подготовки данных во внешнем устройстве. Поэтому режим работы ожидание микропроцессора определяется внешним сигналом “Данные подготовлены (данные не подготовлены)”. Всего в МУ передается до десятка (и более) разнообразных сигналов управления. Преобразователи интерфейсов Когда необходимо перейти от одного вида интерфейса к другому, применяют специальные аппаратурные средства в виде преобразователя интерфейсов и интерфейсного контроллера. При построении микропроцессорных систем наиболее часто осуществляются преобразования, связанные с разными форматами электронных сигналов. Все МП обрабатывают цифровые данные, представленные в параллельной форме. В этом случае разряды слов данных передаются одновременно по информационной магистрали и обрабатываются параллельно во всех разрядах АЛБ микропроцессора, поэтому внутри электронной системы все передачи данных также производятся в параллельном формате. Но в периферийной части электронных систем могут быть разнообразные форматы информационных сигналов, среди которых наиболее важными являются аналоговые и цифровые последовательные Аналого-цифровые и цифро-аналоговые преобразователи в виде БИС решают задачи преобразования аналоговых сигналов в параллельные коды и наоборот. Развитие управляющих средств этих преобразователей позволяет не только существенно упростить их интерфейс с МП, но практически обеспечить прямое соединение без дополнительных аппаратурных средств. Данные в последовательном цифровом формате передаются по одной информационной шине, что существенно снижает количество связей в периферийной части систем, в случаях, когда не требуется осуществлять сопряжение с периферийными быстродействующими устройствами. Эти данные могут прямо вводиться (или выводиться) в МП, для чего необходимо разработать программные модули приема и преобразования форматов данных с соответствующей синхронизацией МП и внешних устройств. Временные затраты и низкая эффективность такого решения могут быть преодолены переходом к аппаратурной реализации системы ввода-вывода данных на основе использования специальных БИС контроллеров – преобразователей форматов данных, которые получили название универсальных асинхронных приемников-передатчиков. Асинхронная передача данных означает, что приемник (например, МП) и передатчик (например, телетайп) осуществляют связь в условиях, когда каждый имеет свою собственную систему синхронизации, поэтому передатчик посылает свои данные в любой момент, не сообразуясь с временным состоянием приемника. В приемнике должны быть предусмотрены средства анализа и вхождения во “временное зацепление”, т.е. средства синхронизации своей работы с работой передатчика. Формат последовательных информационных сигналов Последовательные информационные сигналы формируются в виде “1” или “0” уровней тока (напряжения), значения которых сохраняются постоянными в течение периода следования информационных сигналов Тп. Уровень сигнала может изменять свою величину только в начале периода следования информационных сигналов. До начала подачи цифровой информации в линию связи постоянно поступает сигнал “1” уровня. Если необходимо начать передачу данных, то им всегда предшествует так называемый стартовый бит “0”. Затем следует посылка битов слова данных, например 7-разрядного. Рис.6 Формат сигналов последовательных данных (А), последовательный байт данных с контролем по нечетности (Б) Слово данных может сопровождаться контрольным битом, соответствующим четности/нечетности “1” в передаваемом коде. Завершается посылка двумя стоповыми битами, всегда имеющими значение “1”. Внутри слова данных младший значащий разряд передается первым, старший – последним. После выдачи сигналов СТОП передатчик может либо сразу же передавать следующее слово данных, либо сохраняет уровень “1”, соответствующий исправности линии связи и передатчика при отсутствии передаваемых данных. Приемник следит за уровнями сигнала в линии связи, фиксируя переход от “1” к “0” как начало передачи, воспринимает данные следующих семи или восьми интервалов, анализирует наличие СТОП-битов и принимает решение о прекращении или продолжении приема. Следовательно, введение СТАРТ и СТОП в кодовую посылку позволяет осуществить синхронизацию приемника и передатчика и правильно интерпретировать сигналы данных. На рис.6,А приведен формат последовательных данных, а на рис.6,Б – пример последовательной передачи двух слов данных с контролем на нечетность передаваемых “1” данных. Схемы и принцип работы контроллера последовательно-параллельного интерфейса Чтобы облегчить построение схем сопряжения внешних устройств с последовательным форматом выходных сигналов при создании микропроцессорных систем, в состав комплектов микропроцессорных БИС включается БИС контроллера последовательно-параллельного интерфейса. Такие контроллеры интерфейса имеют различную сложность, свои специфические особенности, но функции, выполняемые ими, практически одинаковы и соответствуют смысловому названию БИС универсальных асинхронных приемников-передатчиков (УАПП) или асинхронных интерфейсных адаптеров связи (АСИА). Рис.7 Функциональная структура асинхронного приемопередатчика Рассмотрим особенности функционального построения и режим работы типового БИС УАПП (рис.7). В структуре БИС УАПП содержатся следующие основные электронные блоки: приемник последовательных сигналов, выполняющий преобразование данных последовательного формата в параллельный код; передатчик сигналов, осуществляющий преобразование параллельного кода в последовательный формат; блок центрального управления, блок буферного хранения данных и блок связи с информационной магистралью микропроцессора, блок системного управления. Как и любой другой компонент электронной информационно-управляющей системы, БИС УАПП имеет адресное программное управление. УАПП по командам МП может выполнять четыре операции, для задания которых достаточно выдавать коды двух адресов и управляющий сигнал на магистрали управления “Чтение/запись” (Чт/Зп). Рассмотрим выполнение команд УАПП. 1. Записать слово в передающий регистр данных. По этой команде слово данных из аккумулятора МП передается в передающий регистр данных (РгД) передатчика через буферный регистр данных (БРгД). Затем это слово данных передается в сдвигающий регистр данных передатчика и выдается в последовательном формате в интерфейс соответствующего внешнего устройства. 2. Считать слово из приемного регистра данных. При выполнении этой команды в аккумулятор МП передается слово данных, образованное в результате параллельной передачи из сдвигающего регистра приемника после окончания приема одного слова данных в последовательном формате. 3. Записать код управляющего слова в регистр сигналов управления. Блок центрального управления преобразует сигналы триггеров регистра управления (РгУ) (обычно восьмиразрядного) в сигналы управления различными блоками. Микропроцессор передает в БЦУ информацию о внешнем источнике синхронизации, формате последовательного кода и направлении передачи. В коде управления форматом задается число разрядов данных (обычно до восьми), число СТОП битов и признаки четности. Этой информации достаточно для программирования работы УАПП по передаче данных. 4. Считать информацию состояния. При осуществлении операции ввода данных МП может осуществлять считывание, ввод и анализ статусной информации УАПП, которая хранится в регистре состояния (РгС) (обычно восьмиразрядный). Рассмотрим режим взаимодействия МП и УАПП при вводе последовательных данных от внешнего устройства (ВУ). В программе работы МП должен быть предусмотрен процесс инициализации УАПП, который осуществляется засылкой управляющей информации в РгУ по команде 3. В составе этой управляющей информации имеются сигналы “Разрешение прерывания” (РПр) и “Готовность слова данных” (ГСД). Получив управляющую информацию, УАПП начинает анализ слова данных на входе и их ввод при наличии сигнала СТАРТ в коде слова данных. Когда в приемный РгД передается полное слово данных, то в триггере готовности слова данных устанавливается уровень “1”. Установка этого триггера является основанием для генерации сигнала запроса прерывания МП, если ранее от МП в составе управляющего слова поступил сигнал уровня “1”. На разрешение передачи слова микропроцессор вырабатывает сигнал “Запрос прерывания удовлетворен” и осуществляет переход на выполнение программы прерывания по вводу данных. В программе прерывания, прежде всего, осуществляются сохранение информационного содержания внутренних регистров МП и блокировка других сигналов прерывания на входе блока прерывания МП. Затем выполняется команда 4 и следует анализ тех битов информации состояния, которые связаны с контролем правильности выполнения операции приема данных, т.е. проверяется нарушение четности, переполнение или определяются ошибки форматирования. Если произошла ошибка, то совершается переход к подпрограмме анализа причин ошибок. Если ошибок нет, то выполняется команда 2, и принятые данные передаются в аккумулятор или какой-либо регистр МП. Затем МП снимает блокировку сигналов блока прерывания, восстанавливает состояние прерванной программы и продолжает ее выполнение до получения следующего сигнала запроса прерывания. Прием-передача последовательных информационных сигналов Для ввода данных МП через буферный регистр данных передается слово в передающий РгД. Узел управления передачей (УУПд) осуществляет параллельную передачу слова из передающего регистра в сдвигающий передающий регистр (СПР). Здесь слова данных дополняются стартовым битом, битом четности и необходимым числом СТОП-битов. Наличие 8-разрядов данных в аппаратурных ресурсах УАПП позволяет применять различные методы кодирования данных 5-, 7- и 8-разрядными кодами. Затем слово данных, сформированное в СПР, под действием импульсов синхронизации сдвигается, и электрические сигналы в виде токовых посылок поступают в линию связи. Таким образом, формируется последовательный информационный формат пересылаемых данных. При приеме данных последовательные кодовые сигналы принимаются в сдвигающий приемный регистр (СПрР). Затем информационные разряды данных параллельно передаются в приемный регистр данных УАПП. Как уже отмечалось, МП при взаимодействии с УАПП выполняет четыре основные операции, которые аналогичны чтению и записи данных, осуществляемых в определенных регистрах УАПП. Один и тот же адрес используется для операций с регистрами состояния и управления, поскольку сигнал на шине Чт/Зп магистрали управления точно дополняет адрес кода команды. Аналогично, оказывается достаточно только одного кода адреса для операций с приемным и передающим регистрами данных РгД. Если формат последовательных сигналов данных может быть реализован рассмотренными средствами приемника и передатчика, то УАПП используют для работы с любыми внешними устройствами последовательного действия без необходимости применения новых команд или каких-либо дополнительных аппаратурных средств. Для настройки аппаратурных интерфейсов средств УАПП на определенные функции приема-передачи данных необходимо выполнить его программную инициализацию. Рассмотрим функции, определяемые каждым битом типичного управляющего слова. Бит “Разрешение прерывания при приеме” управляет вместе с битом “Готовность слова данных” регистра состояния УАПП выработкой сигнала запроса прерывания работы МП при приеме данных. Бит “Разрешение прерывания при передаче данных” управляет вместе с битом “Окончание передачи слова данных” регистра статуса выработкой сигнала запроса прерывания работы МП при передаче данных. Несколько битов управляющего регистра используются для кодирования разрядности слов (7 или 8 бит), четности/нечетности или отсутствия контроля, количества СТОП-битов (1 или 2). Два бита кода управляющего слова достаточно для задания сигналов сброса управляющих цепей УАПП и определения коэффициента деления частоты синхроимпульсов при приеме данных. Отметим, что инициализации УАПП предшествует сброс управляющих цепей посылкой кода управляющего слова, в котором заданы условия обнуления (установкой соответствующих управляющих битов в уровень “1”). Коэффициент деления частоты синхроимпульсов отражает принятую схему выделения принимаемых информационных сигналов. Как уже было показано, начальная синхронизация вызывается СТАРТ-битом, сообщающим приемнику, что далее следуют, биты данных, четности, СТОП. Чтобы облегчить синхронизацию работы внешних устройств, в УАПП используется в 16 или 64 раза более высокая частота, чем скорость передачи данных, определяемая соотношением 1/Тп. Следовательно, один период следования синхроимпульсов, передаваемых в УАПП, должен быть равен 1/16 Тп или 1/64 Тп. Поэтому после обнаружения перехода “1” или “0”, вызываемого СТАРТ-битом, с помощью средств УАПП можно подтвердить этот переход через 8 (или 32) периодов (т.е. приблизительно в середине периода Тп) и установить, что именно СТАРТ-бит имеет место, а не случайная помеха. Аналогичным образом осуществляется стробированием всех остальных информационных переходов внутри периода следования последовательных сигналов, что увеличивает вероятность правильного выделения информационных сигналов на уровне помех. Узлы управления приемом и передачей данных (УУПд и УУПр) ведут анализ поступаемых и передаваемых сигналов. В случае отклонения от заданного режима эти блоки управления формируют уровень “1” соответствующих битов в регистре состояния. Регистр состояния фиксирует следующие важные сигналы состояния. Бит “Запрос прерывания” всегда находится в состоянии, соответствующем сигналу “Запрос прерывания работы МП” УАПП. Этот бит сбрасывается в состояние “0”, когда МП выполняет команды чтения или записи данных в приемных – передающих регистрах УАПП. Установка бита “Запрос прерывания” в регистре состояния УАПП позволяет МП выделить только один УАПП, выставивший запрос прерывания, из нескольких УАПП, работающих параллельно в системе. Микропроцессор по своим внутренним программам может осуществить последовательное считывание и анализ данного бита в кодах состояний всех подключенных УАПП и выделить активный интерфейсный контроллер, т.е. сформировавшийся сигнал запроса прерывания. Бит “Контроль четности” соответствует состоянию четности битов данных, если четность включена в формат и задана в управляющем слове. При нарушении четности данный бит регистра состояния устанавливается в значение “1”, что позволяет обратить внимание МП на нарушение установленного режима работы. Как только завершается прием последовательного слова с приемного сдвигающего регистра, УУПр выполняет анализ количества СТОП-битов. При обнаружении каких-либо отклонений генерируется сигнал “Ошибка форматирования” путем установки соответствующего бита регистра в состояние “1”. При приеме данных УАПП сформированные слова передаются из сдвигающего регистра в приемный РгД, а из него в МП. Если после приема одного слова не поступил запрос на его передачу в МП, то другое последовательное слово, сформированное в сдвигающем регистре, не может быть передано в приемный РгД. Поскольку приемный РгД заполнен, передача в него второго слова затрет первое. При этом теряется слово данных и нарушается правильная работа системы. Поэтому обнаружение факта приема следующего слова до передачи в МП предыдущего ведет к установке РгС в “1” бита “Ошибка переполнения”. Этот сигнал сообщает МП о том, что произошла потеря слова в процессе передачи последовательного массива данных. Бит “Приемный регистр данных заполнен” свидетельствует о готовности слова данных к передаче в МП. Бит “Передающий регистр данных освобожден” устанавливается в состояние “1” после передачи содержимого передающего регистра данных в сдвигающий регистр данных передатчика. Этот сигнал регистра состояния указывает микропроцессору те моменты, в которые может быть осуществлена передача очередного слова данных из МП и УАПП. В составе регистра состояния УАПП могут быть также триггеры, устанавливаемые сигналами состояния модемов. Модемы – электронные блоки связи МП с дистанционно отдаленными внешними устройствами по телефонной линии связи. Они преобразуют цифровую информацию в аналоговую, предназначенную для распространения по телефонным линиям связи. Модемы ставятся на обоих концах линии связи для осуществления процессов модуляции и демодуляции цифровой информации. Большая степень автономности работы УАПП позволяет обеспечить высокую эффективность использования МП в системе, поскольку требует от него только данных по инициализации своего состояния и позволяет МП выполнять вычислительный процесс одновременно с выполнением процесса ввода-вывода информации в УАПП. Отметим также, что развитые 16-разрядные МП имеют все те возможности, которые обеспечиваются в микросистемах на основе обычных МП и БИС УАПП. 3. Логическая структура микропроцессорной системы на основе комплекта БИС секционного микропроцессора Комплект БИС секционного микропроцессора Вследствие малой разрядности секций микропроцессора и определенности функционального наполнения их реализуют, как правило, в виде биполярных БИС в корпусе с 42 – 64 выводами. Большое количество выводов корпуса одной секции БИС и внутренняя логическая структура секции микропроцессора обеспечивают построение микро-ЭВМ различной разрядности с наращиваемым числом входов прерываний, различным количеством подключаемых УВВ и т.д. В состав комплекта БИС секционного микропроцессора входит значительное число секций. Рассмотрим наиболее важные из них. Секции арифметическо-логических БИС используются для построения операционных блоков обработки информации. Они включают в себя несколько разрядов АЛБ, управляющих регистров, СОЗУ и узлов связи с информационными магистралями. Секции БИС опережающего параллельного переноса позволяют объединить арифметическо-логические секции в высокоскоростные блоки обработки информации за счет создания пирамидальных схем ускоренного переноса. Секции БИС для задания последовательности микрокоманд, применяемые для построения блоков микропрограммного управления, дают возможность вырабатывать выходной код в зависимости от внешнего управляющего кода, кода состояния процессора, содержимого внутреннего стека, а также внутреннего состояния самой секции. При микропрограммном управлении каждой команде соответствует микропрограмма – последовательность микрокоманд, выполнение которых приводит к выполнению операций, заданных командой. Микрокоманда управляет выполнением одной или нескольких микроопераций. БИС микропрограммного управления на основе программируемой логической матрицы (ПЛМ) Рис.8 Структура программируемой матрицы Схема ПЛМ приведена на рис.8, она содержит логические матрицы адресов И и данных ИЛИ, с помощью которых осуществляется преобразование входного n-разрядного кода в m-разрядный выходной код. Матрицы данных ПЗУ и ПЛМ совпадают. Различие ПЗУ и ПЛМ существует только между матрицами адресов или дешифраторами адресов. При построении дешифратора адресов ПЗУ обязательна постановка коммутирующих элементов между входными шинами и шинами переходных функций. Поэтому в дешифраторе каждой комбинации входных сигналов соответствует одна и только одна переходная функция. Всего переходных функций . В ПЛМ коммутирующие элементы для ряда входных переменных могут отсутствовать. Поэтому некоторые переменные не влияют на выбор переходной функции. Число переходных функций ПЛМ . На практике получили распространение ПЛМ с многоразрядными адресами, для которых число входных переменных равно 16.24 разрядам и более. ПЗУ и ПЛМ различаются по системе адресации информационного поля данных, распределению информационных полей, возможности одновременного опроса нескольких переходных функций. Так как в ПЛМ осуществляется избыточная свободная адресация, а в ПЗУ – жесткая не избыточная адресация, то в ПЛМ большому количеству входных комбинаций адресов соответствует малое количество адресуемых переходных функций. Разные адреса могут определять одну и ту же переходную функцию или не определять ни одной. Кроме того, возможны варианты, когда один адрес определяет более одной переходной функции. Специфика внутреннего распределения информационных полей в ПЛМ заключается в том, что посредством двух (или более) различных адресов можно адресовать одну и ту же область данных матрицы, что позволяет обращаться к микропрограммам по различным адресам. Следовательно, появляется возможность микропрограммного перехода к микропрограммам из различных текущих условий без выполнения специальных микрокоманд перехода. Эта особенность адресации обеспечивается наличием безразличных разрядов в коде адреса. Одновременность выбора двух (и более) выходных информационных слов и объединение их по ИЛИ на выходе ПЛМ определяются возможностью адресации различных переходных функций одним адресом. При этом сохраняется выбор каждого информационного слова своим специфичным адресом. Жесткая не избыточная адресация ПЗУ позволяет иметь однозначное соответствие адресов и слов в информационном поле данных. Обычная ПЛМ – комбинационная логическая схема. Чтобы построить микропрограммный последовательностный автомат, необходимы регистры на входах и выходах ПЛМ и обратная связь для задания закона выработки последовательностных состояний. Встраивание входных и выходных регистров в блок управления с ПЛМ обеспечивает автономную функциональную законченность БИС. Управление приемом и выдачей информационных состояний регистров позволяет использовать такую БИС в любой асинхронной (а также синхронной) микро-ЭВМ и снимает проблему “гонок” (“состязаний”). Рис.9 Схема БИС микропрограммного управления на основе программируемой логической матрицы Схема БИС микропрограммного управления вертикального типа с информационным полем на основе ПЛМ приведена на рис.9. Она содержит ПЛМ, регистр команд РгК, регистр состояния системы РгС, регистр следующего адреса микрокоманды РгАМК, буферный регистр следующего адреса микрокоманды БРгАМК, регистр внутренних состояний блока микропрограммного управления РгСМУ, выходной регистр микрокоманд РгМК, а также узел местного управления и синхронизации УМУиС. В качестве входной информации в ПЛМ подаются код команды (например, 16-разрядный), код следующего адреса (например, 4-разрядный) и несколько разрядов кода состояния системы, определяющих формирование условий переходов в микропрограммах и обработку сигналов прерывания. Выходной код ПЛМ обычно содержит 20-30 разрядов, поскольку микрокоманды большей разрядности требуют применения корпусов БИС с большим количеством выводов. Часть выходных сигналов ПЛМ не выводится из БИС. Код следующего адреса микрокоманды записывается в регистр БРгАМК, а затем передается в регистр РгАМК. Сигналы с регистра РгСМУ делятся на две группы, одна из которых передается внутри БИС в УМУиС, а вторая через контакты корпуса выводится из БИС и используется блоком БЦУиС. В каждом машинном такте микрокоманда выдается на информационную магистраль микрокоманд ИММК, а в РгАМК заносится некоторый код, определяющий вместе с командами РгС и РгСМУ адрес следующей команды. Свойство одновременности выбора нескольких выходных адресных шин ПЛМ увеличивает информационную насыщенность ПЛМ по сравнению с ПЗУ и позволяет выиграть в 3-10 раз в числе элементов, требуемых для построения информационных полей БИС. Секции БИС приоритетно векторного прерывания включают в себя регистры приема внешних сигналов запросов прерывания, кода маскирования состояния, приоритетный шифратор, узел формирования кода приоритетного вектора, блоки местного микропрограммного управления и управления информационными магистралями. Секции БИС триггерных регистров широкого назначения используются для организации разнообразных буферов хранения цифровой информации. Секции БИС приемопередатчиков информации (с контролем правильности передачи или без него) содержат буферные регистры для хранения входной и выходной информации, усилители для работы на внешние информационные магистрали (как правило, с тремя внутренними состояниями: “Включено”, “Выключено”, “Отключено”). Комплект БИС для построения электронной системы В состав всех комплектов БИС (в том числе и секционных) входят БИС ОЗУ, ПЗУ, программируемого ПЗУ или ППЗУ, ПЛМ, программируемой ПЛМ или ППЛМ, имеющие разнообразную организацию информационных полей и управляющие интерфейсной логикой. Они позволяют создавать наращиваемые поля оперативной, постоянной и микропрограммной памяти, работать с прямыми и интерфейсными информационными сигналами, строить многовходовые системы адресной выборки, цепи контроля передаваемой и хранимой информации и т.д. Логическая структура процессора на основе комплекта БИС секционного микропроцессора Развитая внутренняя структура секционных комплектов БИС микропроцессора обеспечивает возможность построения высокопроизводительных средств эффективной эмуляции развитых микро-ЭВМ и позволяет создавать гибкие эффективные системы с адаптацией к области применения. Рис.10 Обобщенная структрура процессора на основе БИС комплекта секционного микропроцессора Обобщенная структура процессора на основе комплекта БИС приведена на рис.10. В основу процессора положены секции микропроцессоров МП и секции ускоренного опережающего переноса (Рассматриваемые микропроцессоры могут быть построены на основе микропроцессорных комплектов серий КР582, К583, КР584, К589, К1800, КР1802, КР1804, U83-К1883). Для построения интерфейсных схем применены секции приемопередатчиков сигналов ППС, позволяющие организовать двунаправленные магистрали данных, адресов и сигналов управления. Блок микропрограммного управления строится на основе ПЗУ или ППЗУ, а также БИС выработки последовательности управляющих сигналов. Последние применяются в качестве блока управления микрокомандами БУМК. Для управления приоритетными векторными прерываниями используются соответствующие секции БИС ПВП для построения регистров – секции БИС регистров универсального назначения. Блок местного управления БМУ управляет всей системой. Поскольку секции микропроцессора имеют некоторый набор рабочих регистров общего назначения, любые из них могут быть выделены в качестве счетчика команд, регистра – указателя стека или других рабочих и управляющих регистров. Рассмотрим взаимодействие основных блоков процессора. Команда извлекается из ОЗУ и по магистрали данных МД передается регистр команд РгК. Код команды поступает через блок адресации БА и блок управления микрокомандами БУМК, чтобы преобразовать его в первый адрес микрокоманды в запоминающем устройстве микрокоманд ЗУМК. Затем выполняется несколько микроопераций для поиска данных в ОЗУ и передачи их в микропроцессор МП, выполнения операций в арифметическо-логическом блоке, контроля переполнения и запросов на прерывание и т.д. Выходной код с ЗУМК является микрокомандой, обычно содержащей около 40 разрядов, например 9 разрядов для определения операции арифметическо-логического блока, 8 разрядов для адресации двух исходных операндов СОЗУ; остальные разряды – для сигналов выдачи выходных результатов, управления ОЗУ, приемопередатчиками, стеком и т.д. Наличие регистра микрокоманд РгМК дает возможность организовать конвейерную работу процессора. Пусть в регистре РгМК содержится код 1 выполняемой микрокоманды. Поле микрокоманды, управляющее последовательностью микрокоманд, анализируется блоком местного управления процессора БМУПр и направляется в виде управляющих сигналов 2 в БУМК для определения адреса следующей микрокоманды. Адрес микрокоманды в виде сигналов 3 посылается в ЗУМК и новая микрокоманда поступает на выход РгМК. Микропроцессор параллельно выполняет ранее полученную микрокоманду, поскольку на реализацию микрокоманд 1-4 требуется всего лишь один цикл работы процессора. За это время микропроцессор должен пройти состояния до 5 включительно, т.е. кроме выполнения действий внутри микропроцессора должен быть передан в регистр состояния РгС код состояния процессоров. Если он не вызывает ветвления в микрокоманде, что определяет БМУПр по сигналам 6 от регистра РгС, то начинает выполняться следующая команда, уже подготовленная в РгМК. Таким образом, наличие РгМК дает возможность извлекать следующую микрокоманду параллельно с работой микропроцессора МП, что удваивает скорость работы процессора из-за исключения последовательной работы его операционной и управляющей частей. Типичная команда в ЭВМ имеет такую последовательность исполнения отдельных тактов в процессе интерпретации: выборка команды; дешифрирование кода операции; выборка базового адреса; формирование исполнительного адреса; выборка операнда из ОЗУ; выполнение операции над операндом и содержимым рабочего регистра или регистра результата; засылка результата на хранение в регистр результата или рабочий регистр. Во время исполнения такой команды необходимы три обращения к ОЗУ. Высокой пропускной способности микропроцессора позволяет достичь метод перекрытия (поточный или конвейерный) путем параллельных действий над потоком команд во времени по отдельным фазам их исполнения. Выше приведенная последовательность шести тактов команды при поточном исполнении сокращает кажущееся время выполнения команд до трех тактов. При этом достигается максимально эффективное использование ресурсов ОЗУ, поскольку обращение к нему осуществляется в течение каждого такта. Для простейшего перекрытия процесса выполнения двух команд необходим доступ к информационным полям команды, что требует отдельного регистра команд. Код команды заносится в этот регистр из буферного регистра команд ОЗУ, в который он поступил в предыдущем такте выборки команды из ОЗУ. На время выполнения микропроцессором операции необходимо хранить операнд следующей команды в буферном регистре данных. Выбранный из ОЗУ базовый адрес помещается в выходной информационный регистр. Во время исполнения данной команды надо обеспечить единичное приращение содержимого счетчика команд. Поскольку арифметическо-логическое устройство занято выполнением операций, необходимо предусмотреть отдельный сумматор или инкрементный блок для единичного увеличения кода адреса команды. Микро-ЭВМ на основе секционного комплекта биполярных БИС, например серии К1800, может иметь 16-32 – разрядную сетку, 8-64 – уровневую приоритетную систему прерывания (цикл 100-200 нс). Это позволяет ЭВМ выполнять операции типа сложения за 100-200 нс, а операцию умножения четырехбайтовых слов – за 4-16 мкс. Система команд обеспечивает выполнение 100-150 операций, использующих 8-16 режимов адресации информации. 4. Области применения микропроцессорных вычислительных средств При проетировании микро-ЭВМ необходимо обеспечивать: простое наращивание разрядности и производительности; возможность широкого распараллеливания вычислительного процесса; эффективную обработку алгоритмов решения различных задач; простоту технической и математической эксплуатации. Сама микро-ЭВМ, будучи оснащенной разнообразными устройствами ввода-вывода информации, может применяться в качестве законченного изделия. Однако часто к микро-ЭВМ необходимо кроме устройств ввода-вывода информации подключить сигналы от множества датчиков и исполнительных механизмов какого-либо сложного объекта управления или технологического процесса. В этом случае уже образуется сложная управляющая система, центром которой является микро-ЭВМ. В управляющих системах используются отдельные микро-ЭВМ, расширенные микро-ЭВМ (за счет наращивания числа микропроцессоров для увеличения разрядности) и системы микро-ЭВМ, образующие вычислительные сети с параметрами, близкими к параметрам развитых мини-ЭВМ. Микропроцессоры и микро-ЭВМ находят широкое распространение в тестовых и контрольно-измерительных системах; системах управления технологическими процессами; программного управления станками; контроля состояний линий связи; подсистемах первичной обработки информации и управляющих системах промышленного назначения и системах автоматизации научного эксперимента; подсистемах управления периферийным оборудованием вычислительных систем и комплексов; специализированных вычислительных устройствах. Дешевые микропроцессоры применяют в часах, калькуляторах, кино- и фотокамерах, радиоприемниках и телевизорах. Микропроцессоры (например, однокристальные микропроцессоры серии К580) ставятся в замки и звонки, домашние приборы и устройства. Более дорогие микропроцессоры успешно конкурируют с механическими и электромеханическими блоками управления “жесткой”, или “аппаратурной”, логики. Микропроцессоры и микроконтроллеры устанавливаются для регулирования среды в домашних аквариумах и больших водоемах; они осуществляют контроль pH среды, температуры, плотности, содержания кислорода; управляют освещением, подогревом, уровнем воды, дозированием корма и биологических добавок, производят фильтрацию и аэрацию и т.д. Возьмем, например, обычный и широко распространненый механический инструмент – электрическую дрель. Встроенный в нее микропроцессор позволяет учитывать сопротивление сверлению и автоматически изменять частоту вращения в зависимости от твердости обрабатываемого материала. При использовании дрели для завинчивания винтов и гаек микропроцессор выключает питание электромотора до окончания операции, завершаемой за счет инерции. Встраивание микропроцессора, например серии К580, в пишущую машинку позволяет обрабатывать текст и запоминать его в памяти. Обработка текста представляет собой развитые операции редактирования от исправления слов и расстановки абзацев до вставки нового текста и формирования фраз из уже написанных словосочетаний. Затем запомненный текст может быть автоматически многократно и безошибочно отпечатан. Подключение внешней памяти на магнитной кассете (ленте, диске) к такой пишущей машинке с микропроцессорным управлением позволяет накапливать архив документов. Это позволяет осуществить в такой системе функции поиска документов по признакам, сортировку документов, ведение архива и т.д. Бурно развивается производство электронных игр с использованием микропроцессоров и микроконтроллеров. Оно порождает не только интересные средства развлечения, но и дает возможность проверить и развить приемы логических заключений, ловкость и скорость реакции. Игры с телевизионным индикатором или без него обеспечивают выполнение сложных функций вследствие применения логически более мощных, но доступных по стоимости микропроцессоров. Микропроцессор может выполнять важнейшие функции в автомобилях всех типов. Водитель может вызвать из микро-ЭВМ на индикатор числовые значения скорости, уровня топлива, средний и текущий расход топлива на единицу пройденного пути, время прибытия в заданный пункт при определенных водителем условиях, температуру двигателя и т.д. Ведутся исследования по применению микропроцессорных средств для управления двигателем (подача топлива, зажигание, регулирование частоты вращения, эффективность и контроль отходов при сгорании топлива); управления ходовой частью (управление скоростью и тормозной системой, учет влияния нагрузок и рельефа дорог); управления безопасностью движения (снижение требований к водителю и учет обстановки на дороге); управления комфортом в кабине (салоне). На основе микропроцессоров серии К587 разработан прибор для контроля психофизического состояния человека типа “Тонус НЦ-01”. Микропроцессоры эффективно встраиваются в дисплеи, экранные пульты и терминалы, где на них возложены функции редактирования данных, управления, генерации символов и хранения и воспроизведения изображений. Микропроцессоры и микро-ЭВМ берут на себя функции предварительной обработки информации внешних устройств, преобразования форматов данных, контроллеров электромеханических внешних устройств. Для этих целей применяют микропроцессоры серий К580, К536, К1803. Микропроцессоры в аппаратуре связи дают возможность производить контроль ошибок, кодирование – декодирование информации и управлять приемопередающими устройствами. Применение микропроцессоров позволит в несколько раз сократить необходимую ширину телевизионного и телефонного каналов, создать новое поколение оборудования связи. Для этих целей пригодны микропроцессорные средства на основе микро-ЭВМ типа “Электроника С5”, “Электроника НЦ-32” и др. Использование микропроцессоров в контрольно-измерительных приборах и в качестве контрольных средств радиоэлектронных систем дает возможность проводить калибровку, испытание и поверку приборов; коррекцию и температурную компенсацию; контроль и управление измерительными комплексами; преобразование и обработку, индикацию и представление данных; диагностику и локализацию неисправностей. Микро-ЭВМ типа “Электроника С5” успешно обрабатывают данные измерений. Микропроцессорные средства решают сложную техническую проблему разработки различных систем сбора и обработки информации, где общие функции сводятся к передаче множества сигналов в один центр для оценки и принятия решения. Например, в медицине для круглосуточного контроля состояния тяжелобольных необходимо периодически замерять кровяное давление, частоту биения сердца и дыхания, параметры электрокардиограмм и т.д. Централизованная система на основе большой или мини-ЭВМ для этих целей получается громоздкой и достаточно дорогой. Распределенная диагностическая система на основе микропроцессора имеет высокую живучесть, проста по организации и позволяет получить хорошие экономические показатели. Микропроцессорные распределенные системы на основе микро-ЭВМ типа “Электроника-60” решают успешно эти задачи. Обобщая рассмотренные примеры использования микропроцессоров, можно выделить четыре основных направления в применении микропроцессоров и микропроцессорных систем: 1) встроенные системы контроля и управления; 2) локальные системы накопления и обработки информации; 3) распределенные системы управления сложными объектами; 4) распределенные высокопроизводительные системы параллельных вычислений. Встроенные системы контроля и управления Встраивание, т.е. постановка микропроцессора в любую, даже простейшую схему (пульт) управления, принципиально изменяет качество функционирования отдельных инструментов, приборов, разнообразных устройств, отдельных агрегатов технологической линии и т.д. Встраивание микропроцессора позволяет оптимизировать режимы работы управляемых объектов или процессов и за счет этого получать и прямой и косвенный технико-экономический эффект. Прямой технико-экономический эффект выражается в экономии потребляемой энергии, повышении срока службы и снижении расхода сверл, фрез, нагревательных элементов и т.д. Косвенный технико-экономический эффект связан со снижением требований к обслуживающему персоналу и повышением производительности. Опыт показывает, что практически во всех случаях встраивания микропроцессора только экономия электроэнергии обеспечивает окупаемость микропроцессорного управления за 1-1,5 года. Управление оборудованием на основе встроенных систем контроля и управления создает реальные предпосылки осуществления полностью автоматизированных производств. Встраивание микропроцессора повышает качество работы и производительность оборудования, существенно снижает требования к персоналу, работающему на оборудовании. Цифровое управление отдельными единицами оборудования позволяет легко собирать информацию (или вызвать его) с нижних контуров на верхние уровни иерархической системы управления. Управляющие встроенные микропроцессоры предназначены для решения локальных задач управления объектами и могут выполнять функции контроллеров устройств, подключаемых к ЭВМ, более высоких контуров управления или быть центром управляющих систем нижних контуров управления. Микропроцессоры, встраиваемые в оборудование, в большинстве случаев не комплектуются внешними устройствами и содержат только упрощенный специализированный пульт управления и ПЗУ управляющих программ. Лишь для некоторых применений, требующих частой замены управляющих программ, необходим загрузчик, выполненный на основе простейших технических средств. Локальные системы накопления и обработки информации Для любого специалиста или руководителя необходимо всегда иметь “под рукой” достаточно большой объем специфичной информации. Сегодня эта информация доступна лишь в библиотеке, записной книжке или на экране терминала, подключенного к большой ЭВМ. Последнее средство является наиболее приемлемым, но дорогостоящим и имеющим большие ограничения из-за чрезмерной централизации информации. Локальные, т.е. расположенные на рабочем месте, микропроцессорные системы накопления и обработки информации технически просто и экономически доступно осуществляют информационное обеспечение специалистов и руководителей, инженеров и врачей. Объединение локальных систем между собой в сеть и дистанционное подключение этой сети к большой ЭВМ с громадным информационным архивом позволяют создать завершенную автоматизированную систему информационного обеспечения. Внешние устройства локальных вычислительных систем могут встраиваться в корпус микро-ЭВМ. Их комплект содержит устройства, минимально необходимые для вычислительных работ и обработки данных: цифровую, алфавитно-цифровую и функциональную клавиатуру; алфавитно-цифровой индикатор; печатающее устройство; внешние запоминающие устройства. В комплект более сложных микро-ЭВМ, ориентированных на решение инженерных и научных задач, могут входить разнообразные внешние устройства, например устройства ввода-вывода и печати, визуального отображения, внешней памяти, комплексирования, пульты операторов общего назначения и т.д. Распределенные системы управления сложными объектами. Альтернативой распространенным системам с центральным процессором становятся распределенные микропроцессорные управляющие системы. В этом случае микропроцессоры и связанные с ними схемы обработки данных физически располагаются вблизи мест возникновения информации, что позволяет вести обработку информации в месте ее возникновения, например, вблизи двигателя, рулей управления, тормозной системы и т.д. Связь таких локальных систем обработки с центральной системой обработки и накопления данных и создает пространственно распределенную систему управления. В распределенных системах достигается значительная экономия в количестве и распределении линий связи, повышается живучесть, существенно развиваются возможности оптимизации режимов управления и функционирования. Распределенные высокопроизводительные системы параллельных вычислений Микропроцессоры открыли новые возможности решения сложных вычислительных задач, алгоритмы вычисления которых допускают распараллеливание, т.е. одновременные (параллельные) вычисления на многих микропроцессорах. Системы параллельных вычислений на основе десятков, сотен, тысяч одинаковых или специализированных на определенные задачи микропроцессоров при значительно меньших затратах дают такую же производительность, как и вычислительные системы на основе мощных процессоров конвейерного типа. Микропроцессоры в распределенной вычислительной системе могут быть одинаковыми и универсальными или специализированными на определенные функции. Создание микропроцессорных систем с большим количеством специализированных по функциональному назначению процессоров позволяет проектировать мощные вычислительные системы нового типа по сравнению с традиционными развитыми большими вычислительными машинами. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Дайте определение системе команд микропроцессора 2. Дайте определение мнемонике команд 3. Перечислите и кратко охарактеризуйте методы адресации учебного микропроцессора 4. Дайте краткую характеристику командам пересылки кодов учебного микропроцессора 5. Дайте краткую характеристику командам арифметико-логической обработки учебного микропроцессора 6. Дайте краткую характеристику командам передачи управления учебного микропроцессора 7. Стековая память учебного микропроцессора и работа с ней ЛЕКЦИЯ 16. ИНТЕРНЕТ ПРОГРАММИРОВАНИЕ 1. Этапы разработки Web – сайтов Веб -страницы – это фактически основа известного нам интернета. Поэтому вопрос о средствах разработки Web – страниц является одним из наиболее важным. Основные этапы создания веб-сайта Продумайте структуру узла и решите, по крайней мере, какая информация должна находиться на домашней странице и на других важных страницах. Обязательно определите, для кого в первую очередь предназначен узел, какова ваша главная цель и как часто вы собираетесь обновлять материал. С помощью текстового редактора или редактора веб-страниц создайте страницы для своего узла (или хотя бы некоторые из них) и сохраните в виде HTML-файлов. Используя графический редактор, создайте иллюстрации. Просмотрите готовые HTML-файлы посредством браузера. Проверьте, грамотно ли набран текст, как функционируют ссылки, и обратите внимание на внешний вид графического материала. Повторяйте указанные в пунктах 2, 3 действия до тех пор, пока узел не станет вполне приемлемым для публикации. Опубликуйте свой веб-узел, разместив все его файлы (НТМL-файлы и файлы других типов) на веб-сервере, как описано в разделе «Рамещение сайтов». С помощью браузера просмотрите веб-страницы, хранящиеся на веб-сервере. Если вы рассчитываете на большую посещаемость своего веб-узла, просмотрите его страницы с применением последних версий наиболее популярных браузеров, поскольку браузеры разных производителей форматируют страницы немного по-разному. Кроме того, просмотрите страницы с компьютера, отличного от того, где они были созданы, – возможно, вы заметите случайно оставленные ссылки на файлы, находящиеся на жестком диске вашего компьютера. Сообщите всем о своем узле, дождитесь откликов, выберите наиболее удачные из предлагаемых рекомендаций и пожеланий и повторите описанные выше этапы с учетом новых идей. Планирование структуры веб-сайта Процесс планирования определяет успех веб-узла, а кроме того, позволяет выяснить, сколько потребуется страниц и как они будут связаны между собой. Веб-страницей называется отдельный текстовый файл, отформатированный для просмотра в Сети, а веб-узлом – набор взаимосвязанных страниц, поддерживаемых определенной организацией, частным лицом или группой лиц. Первая страница, которую видят посетители, обратившись к веб-узлу, называется домашней. Страницы веб-узла соединены между собой гиперсвязями. Так называют области на веб-странице, где пользователи могут щелкать мышью с целью перехода на определенное место этой же страницы или на другую страницу. Вы должны спланировать свой узел таким образом, чтобы посетители могли быстро перемещаться от одной страницы к другой и легко находить нужную информацию. Цель создания веб-сайта Вероятно, существует столько же разных веб-узлов, сколько может возникнуть причин для их создания и размещения в Веб. Некоторые типы веб-сайтов перечислены в таблице. Ознакомившись с ней, вы сможете точнее определить назначение своего узла, то есть понять, к какой категории он относится. Тип веб-сайта С какой целью создается Персональный сайт Для обмена мнениями и информацией со своими единомышленниками Сайт небольшого предприятия С целью расширения рамок деятельности предприятия, продажи продукции, утверждения своего присутствия в деловом сообществе Сайт большого предприятия Для рекламы предприятия и его продукции. Кроме того, всем желающим предоставляется возможность в любое время суток производить заказы товаров Школьный сайт С тем чтобы на практике обучить учащихся созданию и поддержке веб-узлов, дать им возможность оперативно выпускать школьные газеты, готовить выпуски новостей Сайт группы, клуба или общественной организации Для того чтобы приглашать членов группы на собрания, предоставлять другим группам возможность знакомиться с информацией о работе вашей группы, а также с целью объявить о своем присутствии, поскольку к данной группе могут пожелать присоединиться новые члены Сайт, посвященный конкретным вопросам С целью предоставления информации об определенном направлении деятельности. Например, любитель футбола может создать сайт, посвященный исключительно этому виду спорта. На нем будут размещены страницы, содержащие описание результатов спортивных соревнований и достижени любимой команды, а также ссылки на другие ресурсы Веб, посвященные футболу Определение состава посетителей Вне зависимости от того, сайт какого типа проектируется, конечной целью его организации является привлечение внимания максимального числа посетителей. В большинстве случаев веб-сайт создается либо для людей, которые посещают его с целью получения информации, либо для себя – при желании продемонстрировать свои знания, умение и мастерство. Кроме того, узел могут посетить те, кто хочет воспользоваться вашим опытом в плане подачи и представления информации. Для того чтобы выбрать форму подачи и тип размещаемой на сайте информации, для начала необходимо определить состав его потенциальных посетителей. Следует подумать, кто это может быть: мужчины или женщины, профессионалы или любители, лица, занимающиеся самообразованием или интересующиеся определенной темой. Выяснив, для кого предназначен веб-узел, вы можете его спроектировать с учетом интересов будущих посетителей. Средства навигации по веб-сайту Навигационная схема веб-узла зависит от его структуры и определяет, как пользователь будет перемещаться по сайту и получать доступ к представляемому материалу. Существует много подходов к реализации навигационной схемы. Вы, конечно же, посетили достаточно много узлов и наверняка заметили, что многие веб-разработчики в первую очередь занимаются тем, что пытаются с помощью всевозможных ухищрений – вызывающего дизайна, лотереи, бесплатной рекламы и т. п. – заинтересовать своим детищем максимальное количество клиентов. Но, к сожалению, не многие из них уделяют должного внимания вопросам навигации. Они, наверное, забывают, что скорость и удобство передвижения являются очень важными факторами, определяющими частоту посещаемости узла. Пользователи должны иметь возможность передвигаться по страницам узла, не возвращаясь периодически на домашнюю или предыдущую страницу. Вы можете упростить процесс перемещения по своему узлу, применив единый дизайн при оформлении всех веб-страниц. Помещайте кнопки или ссылки навигации (такие как Вперед, Назад и Домой) на каждой странице в одном и том же месте – в таком случае их проще будет найти. Используйте на разных страницах одинаковые цвета, линии, кнопки и значки, с тем чтобы страницы воспринимались как относящиеся к одному узлу. Если вы не можете самостоятельно создать проект узла или нанять для этой цели профессионалов, воспользуйтесь каким-либо из вариантов, представленных в редакторе Веб. Многие пакеты программного обеспечения предлагают превосходный набор тем и шаблонов, предоставляющий варианты компоновки страниц с подбором цветов, рамок, линий и кнопок навигации, короче, всего, что нужно Для создания веб-узла. Создание веб-сайта Создание веб-узла – процесс довольно длительный. Если вы еще не решили, каким будет дизайн вашего узла, начните с проектирования веб-страницы и составления перечня тех элементов, которые предполагаете на ней разместить. Файлы веб-страниц Веб-страница хранится в файле формата HTML с расширением htm или html. Такой файл обычно содержит отображаемый текст и теги HTML, которые задают Форматирование страницы, а также размещение на ней рисунков и гиперссылок. Главная страница веб-узла обычно имеет имя index. html, поскольку это – применяемое по умолчанию имя файла, которое ищут браузеры. Например, если пользователь введет в браузере адрес http: //www. leonardo-studio. narod. ru, то он увидит страницу данного веб-сайта, хранящуюся в файле index. htm. Каждый рисунок, который отображается на веб-странице или служит ее фоном, хранится в отдельном файле. Обычно это файлы с расширением gif, jpg, jpeg, png, bmp. Местоположение изображения на странице задается с помощью специального тега HTML. Используя графику на веб-страницах, следует помнить: чем больше общий объем файлов, необходимых для ее отображения, тем больше времени потребуется для ее просмотра, особенно если речь идет о пользователях, имеющих медленное соединение с Интернетом. В этой связи рекомендуется не размещать на веб-страницах слишком много изображений и применять графические файлы небольших размеров. С помощью каких же средств создаются веб-страницы? При желании весь HTML-код можно написать вручную. Однако данный процесс очень сложен и занимает много времени. А если вы при этом допустите ошибку, то код придется проверять построчно. Не проще ли разместить графику и текст там, где вы хотели бы их видеть, и позволить редактору веб-страниц создать HTML-код автоматически? Конечно, генерируемый веб-редактором код не всегда оптимален. Кроме того, может так случиться, что страница, которая была создана средствами веб-редактора одной компании, будет неправильно отображаться в браузерах других производителей. Поэтому многие профессиональные разработчики используют редакторы веб-страниц для выполнения большей части работы, а затем вручную вносят необходимые изменения и дополнения. Среди популярных профессиональных веб-редакторов можно отметить Microsoft Front Page. Он имеет достаточно широкую поддержку, обладает наглядным интерфейсом, благодаря чему научиться работать с ним совсем не сложно. Microsoft Front Page содержит специальные средства, функционирующие на серверах, которые их поддерживают, а также инструменты для редактирования простых изображений. Он поставляется с перечнем тем и шаблонов, которые могут быть применены на создаваемых веб-узлах. Важной особенностью редактора является его интеграция с Microsoft Office. К недостаткам Microsoft Front Page следует отнести следующие. Нередко созданный с его помощью код HTML вызывает проблемы при взаимодействии с браузерами, отличными от Internet Explorer. Редактор не всегда может работать с большими корпоративными узлами, часто не принимает изменения, вносимые в код вручную. Очень мощным инструментом, обладающим огромными возможностями по настройке интерфейса является Macromedia Dreamweaver. Он хорошо справляется с работой над крупномасштабными веб-узлами, способен обрабатывать практически любые виды сценариев, мультимедийные файлы и многие объекты, которые в него помещают, интегрирован с Flash и Fireworks. Но изучить Macromedia Dreamweaver MX очень непросто, в первую очередь из-за большого количества окон и кнопок – их намного больше, чем пользователю когда-либо может понадобиться. Для работы с этим редактором необходима специальная программа редактирования изображений. Реализация Это и есть работа по созданию сайта. На этом этапе проводится подготовка текстового и графического материала (печать, сканирование). Материал разбивается по файлам в соответствии со структурой. Организуются ссылки между файлами сайта. Рекомендуется создать шаблон-заготовку страницы с основными структурными областями и стилевым оформлением и использовать ее для создания всех страниц узла. Меняйте в каждой новой странице только содержимое и адресацию ссылок, такая организация работы сократит время, потраченное на каждую из них. Тестирование Завершив работу по размещению страниц на Web-сайте, необходимо выполнить тестирование. Оно состоит из двух этапов: тестирование на работоспособность и тестирование на удобство пользования интерфейсом. На этапе тестирования на работоспособность проверяют, как функционирует Web-сайт, используя те же условия, при которых с ним будет работать пользователь. Поработайте с Web-сайтом в различных браузерах и посмотрите, как выглядит Ваш сайт в каждом из них. Постарайтесь оценить время загрузки страниц, что очень важно. Публикация Готовый Web-сайт необходимо опубликовать на Web-сервере, чтобы он был доступен через Internet. Если ваш сайт создан посредством редактора FrontPage, то на сервере должны быть инсталлированы серверные расширения FrontPage, что обеспечит полную поддержку доступных в FrontPage компонентов, которые были помещены на странице в процессе создания сайта. Если у вас нет собственного сервера, то в Сети можно найти огромное количество ссылок на free web pages, где некоторые провайдеры предоставляют своим клиентам бесплатное место под страницу. Например, http: //narod. ru Однако для того чтобы окончательно выбрать сервер для размещения своего сайта необходимо обратить внимание на следующее: • отсутствие дискриминации по контенту. Некоторые сервера ставят условия, касающиеся содержимого Вашего сайта; • надежность Web-сервера. Посетите их Web-узел в пиковые часы и убедитесь, что проблем с доступом не возникает; • отсутствие скрытых завуалированных видов оплаты места в виде всевозможных доплат за различные услуги и рекламы; • техническая поддержка. Предоставят ли Вам возможность общения с администратором сервера, есть ли возможность доступа по протоколу FTP (File Transfer Protocol) и т. д. ; • объем выделяемого Вам пространства. Обычно это 5 – 10 мегабайт; • дополнительные возможности. Не будет лишним, если сервер предложит Вам: бесплатную почту, счетчик посещений, гостевую книгу, чат, различные CGI-скрипты и т. д. ; • какое программное обеспечение установлено на сервере. Например, UNIX-сервера чувствительны к регистру букв в названиях файлов, т. е. если у Вас в исходном коде будет стоять ссылка на файл background. gif, а файл будет назван background. Gif или Background. gif, то он не будет визуализирован. Однако у таких серверов более высокая степень защищенности от взломов; • есть ли на сервере автоматическая перекодировка содержимого страниц, в соответствии с пользовательскими настройками браузера. Если таковой нет, то у Вас могут возникнуть проблемы с отображением русских кодировок. 2. Средства разработки Web – страниц Для разработки web-страниц сайта можно использовать следующие инструментальные средства. 1) Текстовые редакторы для работы с “чистым” HTML-кодом. Поскольку HTML-документ представляет собой текстовый файл, его можно подготовить в простейшем текстовом редакторе, например, в блокноте (notepad), но при этом все команды разметки придется вводить вручную. 2) Программные средства, которые имеют специальные встроенные компоненты для конвертирования данных, созданных в этих продуктах, в HTML формат. Например, программы широко используемого пакета MS Office, начиная с версии 97, позволяет сохранить документ в формате HTML. При этом сохраняются, насколько это возможно, особенности форматирования символов и абзацев, изображения, таблицы, списки и так далее. Многие современные графические редакторы предоставляют возможность сохранить коллекцию картинок в виде HTML-документа. Надо отметить, что при таком конвертировании исходный текст HTML-документа получается крайне избыточным и нуждается в коррекции. 3) Специализированные программные средства – web-редакторы, предназначенные специально для разработки web-сайтов. Современные требования, предъявляемые к web-редакторам, включают в себя: Поддержку каскадных таблиц стилей. Использование современных скриптовых языков, таких как JavaScript и т. д. Генерацию Dynamic HTML для различных браузеров. Средства наглядного дизайна: вставка изображений, таблиц и фреймов. Динамическое отображение создаваемой страницы в браузере. Шаблоны WWW-страниц или специальные программы – «мастера» по их созданию. Средства по управлению web-сайтом (создание файловой структуры сайта, отслеживание связей и проверка ссылок между страницами, публикация сайта в Интернет). Существуют две разновидности web-редакторов: визуальные и невизуальные. Невизуальные редакторы работают с «чистым» HTML-кодом. Они предоставляют возможность быстрого ввода тэгов HTML с использованием инструментальных панелей, вставки изображений и таблиц с помощью специальных диалоговых окон, работы с файловым менеджером для выбора папок и файлов, подсветки синтаксиса, проверки правильности получившегося кода и ссылок, использования справки по тегам и их атрибутам. Невизуальныеweb-редакторы часто называют HTML-редакторами. Они прекрасно подходят как для опытных web-дизайнеров, знающих HTML и прекрасно представляющих, как должна выглядеть web-страница в результате тех или иных изменений в ее коде, так и для тех, кто только начинает осваивать процесс создания сайта. Визуальные редакторы позволяют работать с самой web-страницей «как она есть», в режиме WYSIWYG (WhatYouSeeIsWhatYouGet – То, что ты видишь, то и получаешь). Редактирование и форматирование текстов, вставка рисунков, таблиц, гиперссылок и других элементов происходит как в обычном текстовом редакторе, а сама программа формирует (генерирует) соответствующий HTML-код. Кроме средств визуального редактирования эти web-редакторы одновременно предоставляют доступ к получившемуся HTML-коду. Визуальные редакторы – отличная стартовая площадка для начинающих web-дизайнеров, плохо знакомых с HTML. Но и опытные дизайнеры часто пользуются визуальными редакторами, чтобы быстро «сверстать» web-страничку, а потом довести ее до ума вручную. Выбор редактора, который будет использоваться для создания HTML-документов, зависит исключительно от понятия удобства и личных пристрастий каждого автора. На сегодняшний день разработано большое число web-редакторов, которые можно разбить на три группы. 1) Свободно распространяемые (бесплатные). В основном это невизуальныеhtml-редакторы, разработанные небольшой группой авторов. Визуальные редакторы этой группы имеют ограниченный набор средств визуального редактирования. Характеризуются небольшим объемом занимаемой памяти, а некоторые из них даже не требуют специальной установки. 2) Условно-бесплатные. Web-редакторы этой группы характеризуются невысокой ценой – от 300 рублей. 3) Платные. В эту группу входят невизуальные и визуальные редакторы, разработанные крупными фирмами. Отвечают всем требованиям, предъявляемым к современным web-редакторам. Накладывают определенные ограничения на ресурсы компьютера. Обычно имеются демо-версии продукта, которые можно установит бесплатно и работать с ними ограниченное время (30 дней). Рекламирование сайта. Существует множество приемов рекламирования сайта: размещение информации о нем на поисковом Web-сайте, организация взаимных ссылок с другими сайтами и т. д. Как привлечь пользователя? Красиво оформленные страницы Web-сайта – это только половина дела. В первую очередь страницы должны быть содержательными. Основное требование к содержимому Web-сайта – полнота и достоверность. Информация должна быть представлена таким образом, чтобы пользователь, однажды посетивший Web-сайт, еще ни раз обратился к нему. Сопровождение сайта. Содержимое Web-сайта может подвергаться неоднократным изменениям. Важно, чтобы предоставляемая на Web-сайте информация всегда была актуальной, поэтому как можно чаще обновляйте информацию на своем Web-сайте, по возможности расширяйте материал, улучшайте дизайн. Обязательное правило. Web-сайт должен обновляться не реже одного раза в месяц. В противном случае вы потеряете не только потенциальных, но и уже состоявшихся посетителей. Рекомендуется создать на своем компьютере копию Web-сайта, вносить в нее изменения и новую версию передавать для размещения на сервере в завершенном виде. 3. Языки программирования Web – сайтов Для реализации функционала различной направленности, web-программисты “пишут” сайты, используя соответствующий языки веб-разметки, с целью максимально расширить интерактивные возможности веб-ресурса. Мы не будем глубоко забираться в дебри web-терминологии, но лишь поможем вам разобраться в основных моментах написания кода сайта, которые могут всплыть в процессе обсуждения проекта и при его дальнейшей реализации. HTML HTML – это один из самых старых языков web-программирования, появившийся еще на заре развития Интернета, и зарекомендовавший себя как один из самых простых и надежных способов web-программирования. HTML расшифровывается как Hyper Text Markup Language – Язык Разметки Гипертекста. Сайты, созданные по технологии HTML в большинстве своем являются набором статических страниц, не требующих наличия базы данных. Технология HTML может подойти для создания небольших, легких сайтов в несколько страничек, функционал которых не требует интерактивности и динамики. Как и любая технология, стандарт HTML не стоит на месте, и сегодня в среду веб-проектирования входит новый стандарт, носящий название HTML5. Данная технология очень молодая, но предоставляет большие возможности в плане создания сайтов, и позволяет реализовать новый, ранее невозможный, функционал. Хотя технология HTML5 еще не до конца вошла в сферу web-разработки, и еще далеко не все Интернет-браузеры ее поддерживают, программисты студии HINEX. RU, учитывают влияние HTML5 на дальнейшее развитие Интернет-технологий в будущем, и создают сайты, используя самые прогрессивные технологии web-программирования. PHP PHP является серверным языком программирования и осуществляет связь сайта с сервером и его базой данных. Сам по себе язык PHP засоздание сайта не отвечает, и если взглянуть на код страницы такого ресурса, мы увидим все тот же HTML, только с вкраплениями PHP кода. В сайтах на PHP часть кода, написанная на HTML, отвечает за внешний вид и вывод информации, а PHP в свою очередь за динамику и интерактивность функционала. Благодаря своей простоте, гибкости и скорости выполнения операций, язык PHP является одним из самых популярных стандартов, в веб-разработке. В разработке преобладающей части сайтов, созданных студией HINEX. RU, была использована технология PHP, т. к. связь сайта с базой данных, по средством PHP кода является неотъемлемым условием, при создании динамичных, многофункциональных Интернет-ресурсов. FLASH По сути, сама технология флеш не является языком web-программирования, но используется для визуализации элементов, написанные на языке XML. Создание сайта по технологии flash сложный и трудоемкий процесс, но результат стоит, затраченных на него сил и средств. Flash-элементы, позволяют сделать ваш сайт ярким и интерактивным. Живые, динамические страницы оставят неизгладимое впечатление о вашем ресурсе у посетителей, и положительный образ о вашем сайте надолго останется в умах зачарованных пользователей. Имидж же компании от использования в на своем ресурсе технологии flash, только выиграет, так как элементы сделанные на flash не из дешевых и считаются люксовым. Но во всем как говориться нужно, знать меру, и создание flash-сайтов не исключение. Flash-блоки значительно тяжелее стандартных web-элементови поэтому на их подгрузгу требуется больше времени. А пользователи сети, как правило, ждать не любят. Поэтому, доверяйте создание своего flash сайта профессионалам, которые оптимизируют его для максимально продуктивной работы. WAP WAP (Wireless Application Protocol) – это технология позволяющая получать доступ к ресурсам Интернета прямо с мобильного устройства. Основным отличием WAP-сайта от обычного Интернет-ресурса, является, то что WAP-сайт “заточен” под просмотр на небольших дисплеях телефонов и коммуникаторов, в связи с чем к разработке WAP-сайта предъявляется рад требований и стандартов, направленных на облегчение веса страницы WAP-портала и оптимизации содержимого сайта именно под просмотр в WAP-браузере телефона. Сайты, написанные под WAP имеют свой язык разметки, адоптированный именно под обмен информацией с WAP-браузером. И если обычные сайт, предназначенные для просмотра с компьютера в большинстве своем написаны на языках html, php, Perl, или xml, то для создания WAP-сайтовиспользуется стандарт WML (Wireless Markup Language). Помимо всего прочего при разработке WAP-ресурсов используется свой формат изображений – WBMP, позволяющий максимально облегчить WAP-страницу. В связи с постоянным ростом рынка мобильных устройств, развиваются и стандарты передачи данных, между всемирной сетью и мобильными устройствами, поэтому специалисты web-студии HINEX. RU не прекращают отслеживать нововведения в данной отрасли создания сайтов и вразработке WAP-сайтов всегда используют самые прогрессивные методы и передовые технологии. ASP ASP (Active Server Pages) – это открытая среда разработки web-приложений, которая позволяет комбинировать язык HTML, скрипты, и ActiveX серверные компоненты, с целью создать динамические и мощные web-решения для бизнеса. ASP-страницы это страницы, содержащие в себе скрипты, исполняемые на стороне сервера. Perl Perl (Practical Extraction and Report Languge) – универсальный, интерпретируемый язык web-программирования, используемый для написания cgi-скриптов и cgi-программ, выполняемых на стороне сервера и позволяющих автоматизировать работу сайта. Perl – это одна из наиболее удобных и распространённых сред для создания динамических web-страниц, хотя и вытесняемое в последнее время более новыми Интернет-технологиями. Формат Perl является прекрасным средством для взаимодействия с web-серверами через CGI (общий интерфейс взаимодействия). В настоящее время язык Perl теряет позиции по отношению к своему функциональному аналогу – PHP. C+ С, С++ – широко распространённые языки веб-программирования, используемые для написания cgi-скриптов. В настоящее время поддерживаются большинством серверов. Скрипты, написанные на C+ необходимо компилировать на стороне сервера. SSI SSI (Server Side Include) – технология позволяющая собирать web-страницу из нескольких скриптов или файлов в единое, функциональное целое. SSIпозволяет включить в web-страницу информацию на сервере, недоступную средствами HTML. По сути SSI – это своеобразный аналог инклудов в PHP. Позволяет внедрять в код сайта общие для каждой, или группы страниц элементы, позволяющих осуществлять редактирование каждой страницы через один только файл. SSI директивы поддерживаются. shtml,. htm и. html и прописываются в файле. htaccess. КОНТРОЛЬНЫЕ ВОПРОСЫ: 1. Какие объекты web-страницы могут быть гиперссылками? 2. Что собой представляет фреймовая структура web-страницы? 3. Сколько файлов нужно сохранить при создании web-страницы, состоящей из трех фреймов? 4. Как можно просмотреть готовую web-страницу в браузере? 5. Перечислите этапы создание веб страницы ЛЕКЦИЯ 17. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ ТИПОВЫХ ЗАДАЧ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ О необходимости объектно-ориентированного подхода к информационной безопасности В настоящее время информационная безопасность является относительно замкнутой дисциплиной, развитие которой не всегда синхронизировано с изменениями в других областях информационных технологий. В частности, в ИБ пока не нашли отражения основные положения объектно-ориентированного подхода, ставшего основой при построении современных информационных систем. Не учитываются в ИБ и достижения в технологии программирования, основанные на накоплении и многократном использовании программистских знаний. На наш взгляд, это очень серьезная проблема, затрудняющая прогресс в области ИБ. Попытки создания больших систем еще в 60-х годах вскрыли многочисленные проблемы программирования, главной из которых является сложность создаваемых и сопровождаемых систем. Результатами исследований в области технологии программирования стали сначала структурированное программирование, затем объектно-ориентированный подход. Объектно-ориентированный подход является основой современной технологии программирования, испытанным методом борьбы со сложностью систем. Представляется естественным и, более того, необходимым, стремление распространить этот подход и на системы информационной безопасности, для которых, как и для программирования в целом, имеет место упомянутая проблема сложности. Сложность эта имеет двоякую природу. Во-первых, сложны не только аппаратно-программные системы, которые необходимо защищать, но и сами средства безопасности. Во-вторых, быстро нарастает сложность семейства нормативных документов, таких, например, как профили защиты на основе "Общих критериев", речь о которых впереди. Эта сложность менее очевидна, но ею также нельзя пренебрегать; необходимо изначально строить семейства документов по объектному принципу. Любой разумный метод борьбы со сложностью опирается на принцип "divide et impera" - "разделяй и властвуй". В данном контексте этот принцип означает, что сложная система (информационной безопасности) на верхнем уровне должна состоять из небольшого числа относительно независимых компонентов. Относительная независимость здесь и далее понимается как минимизация числа связей между компонентами. Затем декомпозиции подвергаются выделенные на первом этапе компоненты, и так далее до заданного уровня детализации. В результате система оказывается представленной в виде иерархии с несколькими уровнями абстракции. Важнейший вопрос, возникающий при реализации принципа "разделяй и властвуй", - как, собственно говоря, разделять? Упоминавшийся выше структурный подход опирается на алгоритмическую декомпозицию, когда выделяются функциональные элементы системы. Основная проблема структурного подхода состоит в том, что он неприменим на ранних этапах анализа и моделирования предметной области, когда до алгоритмов и функций дело еще не дошло. Нужен подход "широкого спектра", не имеющий такого концептуального разрыва с анализируемыми системами и применимый на всех этапах разработки и реализации сложных систем. Мы постараемся показать, что объектно-ориентированный подходудовлетворяет таким требованиям. Основные понятия объектно-ориентированного подхода Объектно-ориентированный подход использует объектную декомпозицию, то есть поведение системы описывается в терминах взаимодействия объектов. Что же понимается под объектом и каковы другие основополагающие понятия данного подхода? Прежде всего, введем понятие класса. Класс - это абстракция множества сущностей реального мира, объединенных общностью структуры и поведения. Объект - это элемент класса, то есть абстракция определенной сущности. Подчеркнем, что объекты активны, у них есть не только внутренняя структура, но и поведение, которое описывается так называемыми методами объекта. Например, может быть определен класс "пользователь", характеризующий "пользователя вообще", то есть ассоциированные с пользователями данные и их поведение ( методы ). После этого может быть создан объект "пользователь Иванов" с соответствующей конкретизацией данных и, возможно, методов. К активности объектов мы еще вернемся. Следующую группу важнейших понятий объектного подхода составляют инкапсуляция, наследование и полиморфизм. Основным инструментом борьбы со сложностью в объектно-ориентированном подходе является инкапсуляция - сокрытие реализации объектов (их внутренней структуры и деталей реализации методов ) с предоставлением во вне только строго определенных интерфейсов. Понятие " полиморфизм " может трактоваться как способность объекта принадлежать более чем одному классу. Введение этого понятия отражает необходимость смотреть на объекты под разными углами зрения, выделять при построении абстракций разные аспекты сущностей моделируемой предметной области, не нарушая при этом целостности объекта. (Строго говоря, существуют и другие виды полиморфизма, такие как перегрузка и параметрический полиморфизм, но нас они сейчас не интересуют.) Наследование означает построение новых классов на основе существующих с возможностью добавления или переопределения данных и методов. Наследование является важным инструментом борьбы с размножением сущностей без необходимости. Общая информация не дублируется, указывается только то, что меняется. При этом класс -потомок помнит о своих "корнях". Очень важно и то, что наследование и полиморфизм в совокупности наделяют объектно-ориентированную систему способностью к относительно безболезненной эволюции. Средства информационной безопасности приходится постоянно модифицировать и обновлять, и если нельзя сделать так, чтобы это было экономически выгодно, ИБ из инструмента защиты превращается в обузу. Мы еще вернемся к механизму наследования при рассмотрении ролевого управления доступом. Пополним рассмотренный выше классический набор понятий объектно-ориентированного подхода еще двумя понятиями: грани объекта и уровня детализации. Объекты реального мира обладают, как правило, несколькими относительно независимыми характеристиками. Применительно к объектной модели будем называть такие характеристики гранями . Мы уже сталкивались с тремя основными гранями ИБ - доступностью, целостностью и конфиденциальностью. Понятие грани позволяет более естественно, чем полиморфизм, смотреть на объекты с разных точек зрения и строить разноплановые абстракции. Понятие уровня детализации важно не только для визуализации объектов, но и для систематического рассмотрения сложных систем, представленных в иерархическом виде. Само по себе оно очень простое: если очередной уровень иерархии рассматривается с уровнем детализации n > 0, то следующий - с уровнем (n - 1). Объект с уровнем детализации 0 считается атомарным. Понятие уровня детализации показа позволяет рассматривать иерархии с потенциально бесконечной высотой, варьировать детализацию как объектов в целом, так и их граней. Весьма распространенной конкретизацией объектно-ориентированного подхода являются компонентные объектные среды, к числу которых принадлежит, например, JavaBeans. Здесь появляется два новых важных понятия: компонент и контейнер. Неформально компонент можно определить как многократно используемый объект, допускающий обработку в графическом инструментальном окружении и сохранение в долговременной памяти. Контейнеры могут включать в себя множество компонентов, образуя общий контекст взаимодействия с другими компонентами и с окружением. Контейнеры могут выступать в роли компонентов других контейнеров . Компонентные объектные среды обладают всеми достоинствами, присущими объектно-ориентированному подходу: инкапсуляция объектных компонентов скрывает сложность реализации, делая видимым только предоставляемый вовне интерфейс; наследование позволяет развивать созданные ранее компоненты, не нарушая целостность объектной оболочки; полиморфизм по сути дает возможность группировать объекты, характеристики которых с некоторой точки зрения можно считать сходными. Понятия же компонента и контейнера необходимы нам потому, что с их помощью мы можем естественным образом представить защищаемую ИС и сами защитные средства. В частности, контейнер может определять границы контролируемой зоны (задавать так называемый "периметр безопасности"). На этом мы завершаем описание основных понятий объектно-ориентированного подхода. Применение объектно-ориентированного подхода к рассмотрению защищаемых систем Попытаемся применить объектно-ориентированный подход к вопросам информационной безопасности. Проблема обеспечения информационной безопасности - комплексная, защищать приходится сложные системы, и сами защитные средства тоже сложны, поэтому нам понадобятся все введенные понятия. Начнем с понятия грани. Фактически три грани уже были введены: это доступность, целостность и конфиденциальность. Их можно рассматривать относительно независимо, и считается, что если все они обеспечены, то обеспечена и ИБ в целом (то есть субъектам информационных отношений не будет нанесен неприемлемый ущерб). Таким образом, мы структурировали нашу цель. Теперь нужно структурировать средства ее достижения. Введем следующие грани: законодательные меры обеспечения информационной безопасности; административные меры (приказы и другие действия руководства организаций, связанных с защищаемыми информационными системами); процедурные меры (меры безопасности, ориентированные на людей); программно-технические меры. В дальнейшей части курса мы поясним подробнее, что понимается под каждой из выделенных граней. Здесь же отметим, что, в принципе, их можно рассматривать и как результат варьирования уровня детализации (по этой причине мы будем употреблять словосочетания "законодательный уровень", "процедурный уровень" и т.п.). Законы и нормативные акты ориентированы на всех субъектов информационных отношений независимо от их организационной принадлежности (это могут быть как юридические, так и физические лица) в пределах страны (международные конвенции имеют даже более широкую область действия), административные меры - на всех субъектов в пределах организации, процедурные – на отдельных людей (или небольшие категории субъектов), программно-технические – на оборудование и программное обеспечение. При такой трактовке в переходе с уровня на уровень можно усмотреть применение наследования (каждый следующий уровень не отменяет, а дополняет предыдущий), а также полиморфизма (субъекты выступают сразу в нескольких ипостасях - например, как инициаторы административных мер и как обычные пользователи, обязанные этим мерам подчиняться). Очевидно, для всех выделенных, относительно независимых граней действует принцип инкапсуляции (это и значит, что грани "относительно независимы"). Более того, эти две совокупности граней можно назвать ортогональными, поскольку для фиксированной грани в одной совокупности (например, доступности) грани в другой совокупности должны пробегать все множество возможных значений (нужно рассмотреть законодательные, административные, процедурные и программно-технические меры). Ортогональных совокупностей не должно быть много; думается, двух совокупностей с числом элементов, соответственно, 3 и 4 уже достаточно, так как они дают 12 комбинаций. Продемонстрируем теперь, как можно рассматривать защищаемую ИС, варьируя уровень детализации. Пусть интересы субъектов информационных отношений концентрируются вокруг ИС некой организации, располагающей двумя территориально разнесенными производственными площадками, на каждой из которых есть серверы, обслуживающие своих и внешних пользователей, а также пользователи, нуждающиеся во внутренних и внешних сервисах. Одна из площадок оборудована внешним подключением (то есть имеет выходв Internet). При взгляде с нулевым уровнем детализации мы увидим лишь то, что у организации есть информационная система Рис. ИС при рассмотрении с уровнем детализации 0. Подобная точка зрения может показаться несостоятельной, но это не так. Уже здесь необходимо учесть законы, применимые к организациям, располагающим информационными системами. Возможно, какую-либо информацию нельзя хранить и обрабатывать на компьютерах, если ИС не была аттестована на соответствие определенным требованиям. На административном уровне могут быть декларированы цели, ради которых создавалась ИС, общие правила закупок, внедрения новых компонентов, эксплуатации и т.п. На процедурном уровне нужно определить требования к физической безопасности ИС и пути их выполнения, правила противопожарной безопасности и т.п. На программно-техническом уровне могут быть определены предпочтительные аппаратно-программные платформы и т.п. По каким критериям проводить декомпозицию ИС – в значительной степени дело вкуса. Будем считать, что на первом уровне детализацииделаются видимыми сервисы и пользователи, точнее, разделение на клиентскую и серверную часть Рис. ИС при рассмотрении с уровнем детализации На этом уровне следует сформулировать требования к сервисам (к самому их наличию, к доступности, целостности и конфиденциальности предоставляемых информационных услуг), изложить способы выполнения этих требований, определить общие правила поведения пользователей, необходимый уровень их предварительной подготовки, методы контроля их поведения, порядок поощрения и наказания и т.п. Могут быть сформулированы требования и предпочтения по отношению к серверным и клиентским платформам. На втором уровне детализации мы увидим следующее Рис. ИС при рассмотрении с уровнем детализации На этом уровне нас все еще не интересует внутренняя структура ИС организации, равно как и детали Internet. Констатируется только существование связи между этими сетями, наличие в них пользователей, а также предоставляемых и внутренних сервисов. Что это за сервисы, пока неважно. Находясь на уровне детализации 2, мы должны учитывать законы, применимые к организациям, ИС которых снабжены внешними подключениями. Речь идет о допустимости такого подключения, о его защите, об ответственности пользователей, обращающихся к внешним сервисам, и об ответственности организаций, открывающих свои сервисы для внешнего доступа. Конкретизация аналогичной направленности, с учетом наличия внешнего подключения, должна быть выполнена на административном, процедурном и программно-техническом уровнях. Обратим внимание на то, что контейнер (в смысле компонентной объектной среды ) "ИС организации" задает границы контролируемой зоны, в пределах которых организация проводит определенную политику. Internet живет по другим правилам, которые организация должна принимать, как данность. Увеличивая уровень детализации, можно разглядеть две разнесенные производственные площадки и каналы связи между ними, распределение сервисов и пользователей по этим площадкам и средства обеспечения безопасности внутренних коммуникаций, специфику отдельных сервисов, разные категории пользователей и т.п. Мы, однако, на этом остановимся. Недостатки традиционного подхода к информационной безопасности с объектной точки зрения Исходя из основных положений объектно-ориентированного подхода, следует в первую очередь признать устаревшим традиционное деление на активные и пассивные сущности ( субъекты и объекты в привычной для дообъектной ИБ терминологии). Подобное деление устарело, покрайней мере, по двум причинам. Во-первых, в объектном подходе пассивных объектов нет. Можно считать, что все объекты активны одновременно и при необходимости вызывают методы друг друга. Как реализованы эти методы (и, в частности, как организован доступ к переменным и их значениям) - внутреннее дело вызываемого объекта ; детали реализации скрыты, инкапсулированы. Вызывающему объекту доступен только предоставляемый интерфейс. Во-вторых, нельзя сказать, что какие-то программы ( методы ) выполняются от имени пользователя. Реализации объектов сложны, так что последние нельзя рассматривать всего лишь как инструменты выполнения воли пользователей. Скорее можно считать, что пользователь прямо или (как правило) косвенно, на свой страх и риск, "просит" некоторый объект об определенной информационной услуге. Когда активизируется вызываемый метод, объект действует скорее от имени (во всяком случае, по воле) своего создателя, чем от имени вызвавшего его пользователя. Можно считать, что объекты обладают достаточной "свободой воли", чтобы выполнять действия, о которых пользователь не только не просил, но даже не догадывается об их возможности. Особенно это справедливо в сетевой среде и для программного обеспечения (ПО), полученного через Internet, но может оказаться верным и для коммерческого ПО, закупленного по всем правилам у солидной фирмы. Для иллюстрации приведем следующий гипотетический пример. Банк, ИС которого имеет соединение с Internet, приобрел за рубежом автоматизированную банковскую систему (АБС). Только спустя некоторое время в банке решили, что внешнее соединение нуждается в защите, и установили межсетевой экран. Изучение регистрационной информации экрана показало, что время от времени за рубеж отправляются IP-пакеты, содержащие какие-то непонятные данные (наверное, зашифрованные, решили в банке). Стали разбираться, куда же пакеты направляются, и оказалось, что идут они в фирму, разработавшую АБС. Возникло подозрение, что в АБС встроена закладка, чтобы получать информацию о деятельности банка. Связались с фирмой; там очень удивились, поначалу все отрицали, но в конце концов выяснили, что один из программистов не убрал из поставленного в банк варианта отладочную выдачу, которая была организована через сеть (как передача IP-пакетов специфического вида, с явно заданным IP-адресом рабочего места этого программиста). Таким образом, никакого злого умысла не было, однако некоторое время информация о платежах свободно гуляла по сетям. В дальнейшей части курса, в лекции, посвященной разграничению доступа, мы обсудим, как можно кардинальным образом решить подобные проблемы. Здесь отметим лишь, что при определении доступа важно не только (и не столько), кто обратился к объекту, но и то, какова семантика действия. Без привлечения семантики нельзя определить так называемые "троянские программы", выполняющие, помимо декларированных, некоторые скрытые (обычно негативные) действия. По-видимому, следует признать устаревшим и положение о том, что разграничение доступа направлено на защиту от злоумышленников. Приведенный выше пример показывает, что внутренние ошибки распределенных ИС представляют не меньшую опасность, а гарантировать их отсутствие в сложных системах современная технология программирования не позволяет. В дообъектной ИБ одним из важнейших требований является безопасность повторного использования пассивных сущностей (таких, например, как динамически выделяемые области памяти). Очевидно, подобное требование вступает в конфликт с таким фундаментальным принципом, как инкапсуляция. Объект нельзя очистить внешним образом (заполнить нулями или случайной последовательностью бит), если только он сам не предоставляет соответствующий метод. При наличии такого метода надежность очистки зависит от корректности его реализации и вызова. Одним из самых прочных стереотипов среди специалистов по ИБ является трактовка операционной системы как доминирующего средства безопасности. На разработку защищенных ОС выделяются значительные средства, зачастую в ущерб остальным направлениям защиты и, следовательно, в ущерб реальной безопасности. В современных ИС, выстроенных в многоуровневой архитектуре клиент/сервер, ОС не контролирует объекты, с которыми работают пользователи, равно как и действия самих пользователей, которые регистрируются и учитываются прикладными средствами. Основной функцией безопасности ОС становится защита возможностей, предоставляемых привилегированным пользователям, от атак пользователей обычных. Это важно, но безопасность такими мерами не исчерпывается. Далее мы рассмотрим подход к построению программно-технического уровня ИБ в виде совокупности сервисов безопасности. КОНТРОЛЬНЫЕ ВОПРОСЫ: 1.Назовите известные Вам технологии программирования, дайте им краткую характеристику и сопоставьте между собой. 2. Что такое структурное программирование, его отличительные особенности, достоинства и недостатки. Область применения технологии структурного программирования. 3. Нисходящее проектирование программы. Технология модульного программирования, ее отличительные особенности, достоинства и недостатки. Область применения технологии модульного программирования. Правила декомпозиции решаемой задачи (правило семи). Актуальна ли технология модульного программирования для технологии объектно-ориентированного программирования? 4. Технология объектно-ориентированного программирования (ООП). Основные принципы ООП и их краткая характеристика. Достоинства и недостатки ООП. Как можно использовать модульную технологию программирования в ООП? 5. Технология объектно-ориентированного программирования (ООП). Инкапсуляция (класс), ее особенности и достоинства. Как можно ограничивать доступ к членам класса? Как получить доступ к закрытым полям объекта-класса из произвольной программной среды? Приведите пример объявления какого-либо класса.
«Принципы разработки и анализа алгоритмов определение информационной технологии» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 493 лекции
Все самое важное и интересное в Telegram

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

Перейти в Telegram Bot