КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Понятие процедурной спецификации и порядок ее синтеза.Под спецификацией программы следует понимать исходное или промежуточное (на пути к программе) описание задачи, которую должна решать проектируемая программа. Таким образом, спецификация – задание для программиста, написанное проектировщиком. А программа – задание для вычислительной машины, написанное программистом. Свойства спецификации: Полнота спецификации означает, что ничто существенное из задачи в ней не упущено и не забыто. Точность спецификации (однозначностью ее понимания) предполагает недвусмысленности используемых при ее построении понятий. Она достигается использованием строгих математических методов и понятий. Понятность спецификации – ясность и читабельность. Задача генерации процедурных спецификаций может рассматриваться как синтез в некотором процедурном языке описания программы в той ее части, которая охватывается моделью вычислительного процесса. Спецификация строится по правилам структурного программирования, т.е. для каждого процесса-владельца шаблона описываются процессы его определяющие (нижний уровень иерархии), а затем – процессы следующего уровня иерархии вплоть до процесса-владельца шаблона. В качестве примеров рассмотрим автоматическое преобразование КМ ВП в спецификации алгоритмов в конструкциях языка программирования высокого уровня "Паскаль": 1. Для каждого процесса, связанного с подчиненными отношением "&" (рис.2) генерируется процедура, состоящая из вызовов процессов более низкого уровня. Здесь: type_X - имя типа процесса X ; type_Y - имя типа процесса Y; type_Z - имя типа процесса Z . Для случая отношения "V" генерируется условный оператор или оператор выбора (при количестве альтернатив больше двух) (рис.3). Здесь type_X – имя типа процесса X, определяющее условие выбора дальнейшего хода вычислений – инициирование процесса Y (при выполнении данного условия) или выполнение процедуры Z (в противном случае). Для случая итерационного отношения " " генерируется оператор цикла (рис.4): где type_X – имя типа процесса X (tp(X)), определяющее условие выполнения цикла. 2. Если процесс имеет входные и выходные данные (рис. 5), то при синтезе - тела процедуры – генерируется список формальных параметров; - вызова процедуры – генерируется список фактических параметров. Здесь: type_A – имя типа инфообъекта A; type_B – имя типа инфообъекта B; type_C – имя типа инфообъекта C; type_D – имя типа инфообъекта D. 3. Для информационных объектов в текст спецификации включаются описания типов и переменных. Для каждого неэлементарного данного связанного со своими компонентами отношением "&" синтезируется запись (рис. 6): В случае отношения иерархии между объектами типа "V" синтезируется запись с вариантами (рис. 7.): В случае итерационного отношения (*) – синтезируется массив (рис. 8): 4. При синтезе тела процедуры (рис.9) последовательность вызова составляющих это тело процедур определяется возможной последовательностью выполнения процессов: процесс не может быть выполнен раньше, чем будут сформированы его входные данные; процесс не может быть выполнен раньше, чем будут выполнены предшествующие ему процессы. Процесс Z должен выполняться после Y, так как он использует выходной инфообъект процесса Y – инфообъект D, поэтому процедура <type_Z> вызывается после <type_Y> в теле процедуры <type_X>.
|