9. Приведите пример описания внешних и внутренних данных программы.
10. Зачем нужна модель "черного ящика"?
11. Назовите тесты, разрабатываемые до программирования. Назначение. Содержание. Формы.
12. Назовите признаки структуры ЦЕПОЧКА СЛЕДОВАНИЙ.
13. Назовите порядок детализации одиночного СЛЕДОВАНИЯ.
14. Назовите порядок детализации ЦЕПОЧКИ СЛЕДОВАНИЙ.
15. Назовите признаки структур вида АЛЬТЕРНАТИВА.
16. Назовите порядок детализации ЦЕПОЧКИ АЛЬТЕРНАТИВ.
17. Запишите пример кодировки альтернатив с одним и двумя действиями.
18. Запишите пример кодировки альтернатив с тремя и более действиями.
19. Назовите признаки структуры ПОВТОРЕНИЕ.
20. Назовите порядок детализации структур универсальных циклов ДО и ПОКА.
21. Запишите пример кодировки структуры НЕУНИВЕРСАЛЬНЫЙ ЦИКЛ-ДО.
22. Запишите пример кодировки структур УНИВЕРСАЛЬНЫЕ ЦИКЛЫ ДО и ПОКА.
23. Как производится доказательство корректности алгоритмов при выполнении проектной процедуры.
24. Дополните описание процесса "Кипячение воды в чайнике" наглядными рисунками.
Глава 6
АРХИТЕКТУРА ПРОГРАММНЫХ СИСТЕМ
6.1. ПОНЯТИЕ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ
Разработка архитектуры системы — это процесс разбиения большой системы на более мелкие части. Для обозначения этих частей придумано множество названий: программы, компоненты, подсистемы…
Процесс разработки архитектуры — этап, необходимый при проектировании систем или комплексов, но необязательный при создании программы. Если внешние спецификации (экранные формы, организация файлов и т. д.) описывают программную систему с точки зрения пользователя, то следующий шаг проектирования состоит в разработке архитектуры, а за ним следует проектирование структуры каждой программы.
Несмотря на то, что нет точного определения программной системы, можно сказать, что она представляет собой набор решений множества различных, но связанных между собой задач, и далее положиться на интуицию в случаях, когда надо отличить программу от системы.
Примеры систем: ОС, СУБД, система продажи авиабилетов и др.
Примеры программ: редактор текстов, компилятор, программы посылки запросов от кассира и др.
Понятие архитектуры программной системы можно проиллюстрировать на следующем примере. Пусть имеется на неком предприятии некая САПР. Допустим, что предприятие достаточно крупное, и САПР будет являться целым комплексом различных программных продуктов, причем зачастую различных производителей. Архитектурой этой системы будет являться описание связей этих программных средств в одно целое. Глазами программиста: САПР — комплекс комплексов программ.
6.2. СИСТЕМЫ ИЗ ОТДЕЛЬНЫХ ПРОГРАММ
Программная система может состоять из отдельных разработанных разными организациями выполняемых программ. Объединение функций этих программ в целую единую программу может привести к нехватке оперативной памяти машины, а сама разработка может быть экономически неоправданной.
Близкий аналог этой системы — система, управляемая командным файлом. Простейшая архитектура такой системы реализуется последовательным вызовом каждой из программ. Программы обмениваются данными через файлы, записанные на диске, или через элементы данных, которые находятся в оперативной памяти ЭВМ по известным абсолютным адресам.
Уже в конце 70-х годов этим способом можно было быстро реализовать весьма удобный ввод данных в программу. Применительно к более поздней операционной системе MS DOS достаточно было написать текстовый файл maket.txt с текстами пояснений сути данных и символом "?" обозначить поля вводимых данных. Далее готовился командный файл с последовательностью команд:
1) удаление файла work.txt с диска;
2) копирование файла maket.txt в файл work.txt;
3) запуск готовой программы текстового редактора с параметром work.txt;
4) запуск программы пользователя обработки данных (входная информация программы — файл work.txt, выходная информация программы — файл result.txt);
5) запуск готовой программы просмотра текстовых файлов с параметром result.txt.
После старта командного файла пользователь в окне текстового редактора мог читать пояснения по вводу информации, находить поля ввода данных поиском подстроки с символом "?", вводить значения в поля ввода с корректировкой. По окончании ввода и корректировки данных пользователь выходит из программы текстового редактора, что автоматически запускает программу обработки данных, а после завершения ее работы автоматически запускается программа просмотра текстовых файлов, которая обеспечивает пользователю возможность просмотра результатов работы программы обработки данных.
Если надо реализовать меню выбора отдельных программ, то невозможно обойтись последовательным вызовом команд командного файла. Для этого случая можно написать программу, которая визуализирует меню на экране и возвращает номер выбранного пользователем меню операционной системе. Возвратить номер выбранной темы меню можно вызовом подпрограммы Halt (номер_мен) модуля DOS Turbo Pascal, где номер_мен — значение выбранного номера темы меню.
Далее, используя команды DOS, организуйте вызов нужных программ командным файлом:
IF ERRORLEVEL 2 GOTO ITEM2
IF ERRORLEVEL 1 GOTO ITEM1
……………………..
:ITEM1
……………………..
:ITEM2
……………………..
Используя процедуру Halt для присвоения системной переменной ERRORLEVEL необходимого значения в каждой из программ и командный файл с выбором нужной программы, можно создать простейший механизм управления порядком выполнения программ, когда каждая завершающая работу программа определяет, какая программа должна выполняться следующей.
Вместо стандартного монитора командных файлов для вызова в произвольном порядке уже готовых программ можно написать программу своего монитора на основе подпрограммы вызова готовых программ.
Хотя проектирование систем из отдельных программ выполняется, по крайней мере, последние 30 лет, но не выработано никакой методики, кроме не особенно полезного совета: изобразите функциональную схему процесса, а затем разбейте процесс на программы.
6.3. СИСТЕМЫ ИЗ ОТДЕЛЬНЫХ РЕЗИДЕНТНЫХ ПРОГРАММ
Резидентная программа — программа, которая постоянно находится в оперативной памяти машины и не препятствует запуску новых программ. После запуска резидентная программа становится как бы частью операционной системы MS DOS путем изменения значения границы памяти операционной системы, далее она настраивает какое-то прерывание на передачу управления в свою точку входа, а затем завершает работу. Можно запустить еще несколько резидентных программ и обычную программу. После выполнения заданных прерываний MS DOS запускаются соответствующие резидентные программы.
Каждая из резидентных программ может быть загружена в любой последовательности. Резидентные программы могут содержать вектора прерываний, которые указывают на блоки данных каждой из программ. Эти блоки могут содержать идентификатор программы для контроля наличия программы и данные межпрограммного обмена. Ненужные программы могут быть удалены как при помощи специальных программ, так и с помощью универсальной программы Release.
6.4. СИСТЕМЫ ИЗ ПРОГРАММ, ОБМЕНИВАЮЩИХСЯ ДАННЫМИ ЧЕРЕЗ ПОРТЫ
Такой обмен обычно реализуется при многопроцессорной (многомашинной) обработке. Порт каждой из программ представляет программу накопления и верификации как входных, так и выходных данных в соответствующих очередях. По мере выполнения текущей работы, из входного порта берется очередная порция информации, обрабатывается, результаты записываются в выходной порт и дальше программа приступает к обработке следующей работы. Другие программы засылают информацию во входной порт и забирают результаты работы из выходного порта.