Смекни!
smekni.com

Разработка программного обеспечения (стр. 2 из 3)

1.1.5. Информационный адаптер

С учетом вешеизложенного для осуществления универсального информационного интерфейса необходимо:

1) произвести контроль наличия исходных данных для каждого отдельного модуля;

2) задать недостающие исходные данные;

3) проверить соответствие типов, структур и последовательности данных аналогичным характеристикам данных, принятым в вызываемом модуле;

4) преобразовать данные в случае несоответствия типов;

5) обеспечить передачу данных вызываемому модулю в соответствии с типом обмена;

6) организовать среду, определяемую языком программирования модуля;

7) проверить резулбтаты;

8) выполнить обратное преобразоавание данных в вид, принятый для хранения промежуточных результатов;

9) сохранить результаты работы модуля для дальнейшего использования;

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


МФ - модули

формирования; МВв - модули ввода; ТОНД - таблица описателей наборов данных; ТОМ - таблица описателей модулей; ПУС - программа установки среды; ТОВх - таблица описателей входов; МВыв - модули вывода; ОО - области обмена;

Рисунок 1.1 - Информационное обеспечение программного адаптера

Таблица описателей модулей содержит: имя модуля; идентификатор языка программирования; признак типа обмена, принятый в модуле (параметры, общие области, наборы данных); количество параметров; имя описателей входов модуля; имя области обмена; имя описателя набора данных.

Таблица описателей входов модуля содержит: имя параметра локальное; имя параметра глобальное; характеристику параметра (входной, выходной, модифицируемый); вид структуры (переменная строка, массив арифметический, массив строк, структура, массив структур и т.д.); размерность (для массива); длину (для строк); основание системы счисления (для переменной или элемента массива); форму представления; точность.

Таблица описателей наборов данных содержит: имя набора; имя DD-предложения; тип организации; метод доступа; формат и длина блока; атрибуты записи.

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

Для организации области обмена необходимо:

1) осуществить анализ данных, которые будут циркулировать в среде программного комплекса в составе САПР с целью определения одинаковых по смыслу переменных;

2) всем одинаковым по смыслу переменным присвоить одно и то же имя, отражающее семантику этих переменных (глобальные переменные);

3) каждой переменной, встречающейся только один раз, присвоить уникальное имя, отражающее семантику величины (локальные переменные);

4) каждой глобальной и локальной переменной поставить в соответствие тип и структуру, являющиеся наиболее информативными;

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

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

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

Банки данных в настоящее время находят все более широкое применение для организации межмодульного интерфейса. Их использование наиболее эффективно, когда совокупность модулей программного обеспечения зафиксирована и не подлежит изменениям в дальнейшем. В этом случае необходимо составить логическую схему для всей области обмена, в которой были бы указаны наименования переменных, их взаимосвязи, тип представления. Обращение из программных модулей для получения значений необходимых переменных должно выполняться с помощью операторов взаимодействия с СУБД. Применение банков данных для целей организации информационного обмена сокращает сроки разработки информационного и программного обеспечения САПР. /1/

2. АЛГОРИТМИЧЕСКАЯ ЧАСТЬ

2.1. Математическое решение задачи

Пусть даны два уравнения с двумя неизвестными

F1(x,у)=0, (1)

F2(x,у)=0

действительные корни которых требуется найти с заданной степенью точности.

Мы предположим, что система (1) допускает лишь изолирован­ные корни. Число этих корней и их грубо приближенные значения можно установить, построив кривые F1(x,у)=0; F2(x,у)=0 и определив координаты их точек пересечения.

Пусть х=x0; у=y0-приближенные значения корней системы (1), полученные графически или каким-нибудь другим способом (на­пример, грубой прикидкой).

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

x=j1(x,y),

y=j2(x,y)

и построим последовательные приближения по следующим форму­лам:

x1=j1(x0,y0); y1=j2(x0,y0);

x2=j1(x1,y1); y1=j2(x1,y1); (3)

xn+1=j1(xn,yn); yn+1=j2(xn,yn)

Если итерационный процесс (3) сходится, т. е. существуют пре­делы

x=lim xnиh=lim yn,

n®¥n®¥

то, предполагая функции j1(x,y) и j2(x,y) непрерывными и пере­ходя к пределу в равенстве (3) общего вида, получим:

lim xn+1=lim j1(xn,yn)

n®¥ n®¥

lim xn+1=lim j2(xn,yn)

n®¥n®¥

Отсюда x=j1(x,h); h=j2(x,h)

т. е. предельные значения x и h являются корнями системы (2), а следовательно, и системы (1). Поэтому, взяв достаточно большое число итераций (3), мы получим числа xn и yn, которые будут отличаться от точных корней x=x и y=hсистемы (1) сколь угодно ма­ло. Поставленная задача, таким образом, окажется решенной. Если итерационный процесс (3) расхо­дится, то им пользоваться нельзя.

Теорема. Пусть в некоторой замкнутой окрестности R {a£x£A; b£y£B}(рис.) имеется одна и только одна пара корней x=x и y=hсистемы (2). Если:1) функции j1(x,y) и j2(x,y) определены и непрерывно дифференцируемы в R; 2) начальные при­ближения x0, y0 и все последующие приближения xn, yn (n=1,2...) принадлежат R; 3) в R выполнены неравенства

½¶j1/¶x½+½¶j2/¶x ½£q1<1

½¶j1/¶x½+½¶j2/¶x ½£q2<1

то процесс последовательных приближений (3) сходится к корням x=xи y=hсистемы (2), т.е.

x=lim xnиh=lim yn,

n®¥ n®¥

Рисунок 2.1-Графики уравнений в замкнутой окрестности.

Структурная схема решения задачи представлена на рисунке 2.2.


Нет Да

Рисунок 2.2-Структурная схема решения задачи.

3. РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

3.1. Построение структуры программного обеспечения

При программировании использовался язык программирования TurboPascal. Текст программы приведен в приложении A. На рисунке 3.1 представлена структура программы, решающей поставленную задачу. Программа имеет монолитно-модульную структуру.


Рисунок 3.1-Монолитно-модульная структура программы

Опишем некоторые основные стандартные процедуры и функции, используемые для формирования собственных процедур.

Для установки (инициализации) графического режима служит функция initgraph ( ).

InitGraph(gd,gm,'');

(gd-graphic driver, gm-graphic mode);

Функция initgraph( )считывает в память соответствующий драйвер, устанавливает видеорежим, и определяет маршрут к директории, в которой находится драйвер egavga.bgi.

При работе с цветом активно использовалась функция SetColor (intcolor), выставляющая цвет надписи и фоновый цвет. В программе с помощью этой функций выводились следующие цвета:

1) синий - SetColor(LightBlue);

2) красный - SetColor(LightRed);

3) белый - SetColor (White);