Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_all.doc
Скачиваний:
25
Добавлен:
24.04.2019
Размер:
7.84 Mб
Скачать
  1. Проектирование размещения программных компонентов для распределенных программных систем.

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

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

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

Рис. 14.27. Условные обозначения диаграммы размещения: а – процессор (компьютер). б – устройство

Пример 14.9. Разработать диаграмму размещения для системы учета успеваемости студентов.

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

Рис. 14.28. Диаграмма размещения в локальной сети системы учета успеваемости студентов

  1. Методы доказательства правильности программ.

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

  1. Метод индуктивных утверждений Флойда.

Исторически первой системой верификации программ явился метод ИУ Р.Флойда. Аналогичные мысли о верификации в те же годы высказал П. Наур.

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

Метод Флойда ориентирован на доказательство ПП из класса стандартных схем и стандартных схем с массивами. Объектом верификации выступают программы, представленные в виде блок-схем.

Метод ИУ Флойда, будучи исторически первой системой верификации, ориентирован на доказательство ПП довольно узкого класса и применим только для этой цели: он не позволяет в случае появления противоречия определить, является ли оно следствием ошибки в программе, или же ошибка содержится в самом доказательстве или в индуктивных утверждениях. Процесс демонстрации истинности условий верификации и их генерация осуществляется вручную и неудобен для автоматизации. Тем не менее с помощью этого метода удалось доказать правильность нескольких нетривиальных алгоритмов. Наиболее интересны доказательство Р. Лондоном алгоритма сортировки дерева, а также многочисленные числовые и нечисловые примеры Э Дейкстры. Подход Флойда используется при проектировании программ обработки данных методом формализованных технических заданий. В процессе проектирования обосновывается правильность результатов посредством установления соответствия между техническим заданием и его реализацией и приводятся определения различных свойств проектируемых объектов. Анализ результатов проектирования выполняется путем математического исследования и доказательства соответствующих утверждений.

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

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

  2. Генерация условий верификации по программе, снабженном указанной информацией (такую программу в дальнейшем будем называть аннотированной).

  3. Доказательство непротиворечивости полученных условий верификации.

  4. Доказательство завершимости программы (в процессе доказательства правильности или отдельно).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]