11. Проектирование программного обеспечения автоматизированных экономических информационных систем (АЭИС)

Скачать доклад: 11. Проектирование программного обеспечения автоматизированных экономических информационных систем (АЭИС)

Проектирование программного обеспечения автоматизированных экономических информационных систем (АЭИС); система языков проектирования программ; комплексирование программ; средства автоматизации разработки программ (23.1.).

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

В связи с разноплановостью задач, решаемых на различных технологических этапах разработки, целесообразна взаимосвязанная система языков, включающая (в порядке упрощения проблемной ориентировки и усложнения машинной ориентировки): Язык управления задачами Язык подготовки технологических средств Язык спецификаций требований Алгоритмический язык программирования Макроязык программирования Автокоды (ассемблеры) Языки отладки: в статике; в реальном времени Главными требованиями, предъявляемыми к системе языков проектирования, являются: технологичность разработки ПС методом модального нисходящего проектирования; получение надежного ПС; мобильность ПС, т.е.переносимость программных компонент как для различных объектных, так и технологических ЭВМ; сопровождаемость ПС в течение всего жизненного цикла.

Требования включают в себя также простоту написания программ, познаваемость их, удобство общения пользователя с технологической ЭВМ во всех режимах. Рационально разграничивать использование средств языка на различных этапах проектирования ПС между различными группами разработчиков; системными программистами, настройщиками кросс-систем на конкретные ЭВМ, разработчиками функциональных программ и специалистами по комплексированию программных компонент.

Характеристика языков проектирования:Языком управления заданиями обеспечиваются все этапы технологии. Технологические системы оснащаются монитором с языком управления заданиями, в т.ч. управления базой данных в различных режимах. Эти достигаются переносимость технологической системы и унификация управления ее работой. Язык управления заданиями представляет собой набор директив, имеющих фиксированный синтаксис. Для таких действий, как управление БД и диалог, набор директив стандартизирован; для других функциональных подсистем набор директив определяется их функциями. Элементами являются диагностические сообщения об обнаруженных ошибках.

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

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

Языки программирования поддерживают этап разработки программ. К программам ЭВМ предъявляются высокие требования по эффективному использованию вычислительных ресурсов. К этой группе относятся: алгоритмические языки, макроязыки и автокоды.

Алгоритмические языки при конкретном применении являются подмножеством базового языка. Основными свойствами алгоритмических языков являются: типизация языка, возможность определения новых типов данных, в т.ч. индексируемых, комбинированных и ссылочных типов с указанием ограничений на область значений, возможность семантического контроля применения данных различных типов; структурированность программных компонент и данных, строгое определение структурных операторов; наличие пакетов, содержащих описания глобальных данных, типов и процедур; наличие задач, обеспечивающих описание параллельного исполнения программ; обеспечение раздельной компиляции частных программ и пакетов данных. наличие настраиваемых элементов языка (процедур, операций) привязки к конкретной ЭВМ и т.д.

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

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

Языки, используемые на этапе отладки программ обеспечивают проведение контроля результатов работы программы по различным исходным данным. Этот тип включает: язык отладки в статике, который дает возможность задавать указания о режимах отладки, исходные данные и состав выходных результатов; язык комплексной динамической отладки.

Этап разработки программ включает: - методические документы, содержащие правила: * записи программ на языках программирования; * организации взаимодействия программ; * размещение различных частей программы в памяти реализующей ЭВМ; - спецификации требований на программные модули, позволяющая определить структуру, функции модуля и его связь с другими модулями ПС; спецификация модуля содержит: * заголовок, который целесообразно записывать в том же виде, как он принят для языков программирования, т.е. включать в него имя модуля, имена и типы формальных параметров и комментарий; * паспорт модуля, содержащий описание всех входных и выходных глобальных данных, вызываемых модулей; сюда же включаются данные о языке программирования и ориентировочные значения времени исполнения и объем модуля; * функции модуля; - спецификации требований на глобальные модули данных составляются одновременно со спецификациями на программные модули; они содержат глобальные переменные, объединенные в структуры или глобальные константы (формы аналогичны, но в спецификациях на модули данных отсутствует раздел функциональной схемы и содержатся только описания данных или значения констант); - программы на языках программирования  0разрабатываются в соответствии со спецификациями с применением методов структурного программирования.

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

Методы контроля программ.

Контроль состоит в проверке входной программы на соответствие некоторым формальным правилам; он подразделяется на лексический, синтаксический и семантический.

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

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

Семантический контроль проверяет правильность применения конструкций в конкретной записи. При программном методе проверка правильности применения конструкций производится семантическими программами, логика которых основана на неформализованных правилах синтаксиса и семантики языка.

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

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

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

Методы оптимизации программ.

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

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

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

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

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

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

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

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

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

Загрузка модулей может производиться по нескольким стратегиям: - в порядке их хранения в библиотеке; - в последовательности заранее присвоенных им номеров; - в соответствии с иерархией подчиненности.

Средства автоматизации разработки программ ..

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

Транслятор с алгоритмического языка решает следующие задачи: - лексический контроль  .проводится при первом просмотре текста; при этом выполняется ряд других функций транслятора, связанных с выделенными в процессе синтаксического анализа конструкциями языка, - составление списка глобальных переменных, меток и др.; - распределение памяти локальных переменных  .программных модулей производится транслятором по фиксированной для реализующей ЭВМ логике с использованием типа, длины и размерности массива, указанных в описании переменных; организация локальной памяти в значительной мере определяется структурой ПЭВМ и зависит от способов адресации, наличия аппаратной выборки переменного числа битов, системы модификации и т.д.; - семантический контроль  .использования величин в различных конструкциях программы осуществляется после того, как определены характеристики всех величин, применяемых в программе (локальных и глобальных переменных, констант); -оптимизация программ  .проводится по тексту на входном языке или на промежуточном языке, структура которого приспособлена для решения данной задачи; - генератор команд  .формирует машинную команду из ее составляющих, информация о которых получена в результате трансляции программы; любая машинная команда может быть представлена как совокупность полей: код операции, операнд, база, индексация, признаки типа адресации, признаки условий; - загрузчик ., используя редактор связей, производит комплексирование либо всех объектных модулей, содержащихся в библиотеке, либо части модулей, подлежащих отладке.

Результатом трансляции программ является  _модуль .. Модули состоят из управляющей и информационной частей.

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

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

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