
- •Санкт-петербургский государственный ордена трудового красного знамени институт точной механики и оптики (технический университет)
- •Б.С.Падун
- •Содержание
- •Глава 4. Качество программного обеспечения ……………………….
- •Глава 5. Вопросы разработки и внедрения пакетов прикладных
- •Глава 6. Основные требования, предъявляемые к программному
- •Глава 8. Основы технологии разработки программного обеспечения ..
- •Введение в1. Цель и задачи курса
- •В2. Роль программных систем сапр тпп в современном производстве
- •В3. Развитие сапр тпп
- •В4. Связь курса с другими дисциплинами в5. Основные разделы курса Глава 1. Общие вопросы программного обеспечения сапр тпп
- •Структура и состав программного обеспечения (по) сапр тпп
- •Назначение основных компонент по
- •. Основные принципы проектирования по сапр тпп
- •Структура математического обеспечения астпп
- •Программное обеспечение
- •Методы разработки по сапр
- •Глава 2. Классификация сфер применения и пользователей сапр тпп
- •Характеристика сфер применения сапр тпп
- •2.2. Характер решаемых задач и квалификация пользователей сапр тпп
- •Структуры пакетов прикладных программ
- •Глава 4. Качество программного обеспечения
- •4.1. Анализ эффективности функционирования программных систем
- •4.2. Основные характеристики качества программного обеспечения.
- •4.3. Показатели качества этапа проектирования программных систем
- •4.4. Показатели качества этапа эксплуатации программных систем
- •Вычислительная сложность
- •2.5. Показатели качества этапа сопровождения программных систем
- •Глава 5. Разработка и внедрение пакетов прикладных программ
- •5.1. Стадия исследования и обоснования создания сапр
- •5.2. Стадия технического задания
- •5.3. Стадия эскизного проекта
- •5.4. Стадия технического проекта
- •5.5. Стадия рабочего проекта
- •5.6. Стадия изготовления несерийных компонент
- •5.7. Стадия введения в действие комплекса средств автоматизации проектирования
- •5.8. Стадия сопровождение программных систем
- •Глава 6. Основные требования, предъявляемые к программному продукту со стороны пользователя
- •Система группирования деталей.
- •База данных «Деталь» и «Оснащение»
- •Основы технологии разработки программного обеспечения
- •8.1. Понятие технологии программирования
- •Язык программирования
- •8.2. Модульное программирование
- •8.3. Программирование сверху-вниз
- •8.4. Структурное программирование
- •8.5. Hipo – технология
- •Система мт (метатранслятор)
- •Примеры применения системы мт.
- •Обеспечение диалогового режима работы.
- •Обращение к вычислительной системе в графической форме
- •Описание внешних схем баз данных
- •Входной язык пакета прикладных программ
- •Пример оформления алгоритма расчета режимов резания
8.2. Модульное программирование
Модульное программирование получило широкое распространение. Под модули-зацией понимается разделение программы на части по некоторым установленным правилам. Этими частями могут быть программные секции (в КОБОЛЕ), внутренние процедуры (в ПЛ/1 и ПАСКАЛЕ) или внешние процедуры (в ФОРТРАНЕ, КОБОЛЕ и ПЛ/1). В процедурных (алгоритмических) системах программирования есть специальная библиотека программ (модулей) и средства работы с этой библиотекой. По мере усложнения функций, возлагаемых на ЭВМ, росла и сложность программ. Первоначально библиотека программ использовалась для уменьшения дублирования в работе программиста. Затем при создании сложных ПС возможности процедурных систем программирования (имеется в виду возможность организации библиотеки модулей) стали использоваться для обеспечения создания сложных программ одним или коллективом программистов. Это объяснялось тем, что сложность прикладных программ возросла на столько, что трудно было писать её как единое целое или разрабатывать одним программистом. Программы стали слишком велики, чтобы их можно было представить во всех подробностях как единое целое и поместить в памяти ЭВМ целиком. Поэтому сложность программ долгое время вызывала трудности при проектировании ПС.
Для размещения больших программ в памяти машины стали применяться структуры с перекрытиями (оверлейные структуры). Это потребовало разбиение программ на модули. Пошли по пути дальнейшего развития и совершенствования процедурного программирования и библиотек программ. С появлением ЭВМ со страничной (виртуальной) памятью управление оверлейными структурами осуществляется автоматически, но эффективность распределения программы по страницам зависит от выбираемого программистом способа разделения ее на модули.
Программы разбиваются на модули для того, чтобы: упростить их разработку и реализацию; облегчить чтение программы; упростить их настройку и модификацию; облегчить работу с данными, имеющими сложную структуру; избежать чрезмерной детализации алгоритмов; обеспечить более выгодное размещение программ в памяти ЭВМ.
Основная черта модульного программирования – это стандартизация и паспортизация интерфейса между отдельными программными единицами. Модуль – это отдельно функционально законченная программная единица, которая структурно идентифицируется (или оформляется) стандартным образом по отношению к компилятору и по отношению к объединению её с другими аналогичными единицами в загрузке. В общем случае любая программа имеет внешние и внутренние потоки данных, области хранения данных. Поэтому, как правило, модуль содержит паспорт, в котором указаны все основные его характеристики: язык программирования, объем, входные и выходные переменные, их формат, точки входа в модуль, параметры настройки и т.д. Объем модуля, обычно не превышает 1000 команд ЭВМ или операторов языка программирования. Наиболее оптимальный по размеру модуль, как правило, уменьшается на одном месте распечатки на АЦПУ. В этом случае, модульная система, будет наиболее технологичной.
Модульное программирование –это искусство разбиения задачи на некоторое число различных модулей, умение широко использовать стандартные модули, путем их параметрической настройки, автоматизации сборки готовых модулей из библиотек, банков модулей и т.д. Очень хорошо, в модульном программировании, используется техника макрогенерации.
Модульное программирование, обладает следующими преимуществами:
простота составления и отладки модульной программы, т.к. функциональные компоненты программы могут быть написаны и отлажены порознь;
модульная программа, легче сопровождается и модифицируется, т.к. функциональные компоненты могут быть изменены, переписаны или заменены, без изменения, в остальных компонентах;
облегчение процесса управления, разработкой модульной программы, т.к. более сложные модули, могут разрабатываться более опытными программистами, проще осуществляется контроль и отчетность программистов.
Но, модульное программирование, имеет и недостатки:
требуется выполнить большой объем работ, т.к. программист должен проектировать программы по нисходящей схеме и анализировать на каждом шаге декомпозиции программы, удобство ее модификации, а так же проводить документирование программы на каждом шаге декомпозиции;
возрастают затраты времени центрального процессора на выполнение программы и занимается несколько больший объем памяти под программу (на ~5 –10%), т.к. необходимо при входе и выходе из подпрограммы, выполнять команды, обеспечивающие их совместимость с программой более высокого уровня;
могут возникнуть трудности, в системах реального времени, т.к. при считывании подпрограмм в оперативную память, программа может быть переведена в режим ожидания.
Существует несколько методов построения модульных программ:
Первый метод характеризуется функциональной независимостью модулей. Каждая подпрограмма должна иметь определенное назначение, которое более или менее зависит от других подпрограмм программы. Выбор определенного размера модуля, определяется решаемой задачей, удобством сопровождения, языком программирования. Качество разбиения программы на модули, во многом зависит, от квалификации программиста.
Второй метод заключается в использовании, так называемых таблиц решений, которые позволяют формально записывать логические алгоритмы и реализовать их инвариантными программами [5,7,15]. Этот метод, обладает важными достоинствами:
способствует лучшему анализу и пониманию задачи, т.к. дисциплинирует мысли разработчика алгоритма;
организует удобный способ общения между разработчиками алгоритмов и программистами, исключающий многие неоднозначности, свойственные словестным описаниям программируемой задачи;
уменьшает, а в некоторых случаях и полностью исключает программирование алгоритмов;
обеспечивает удобный контроль ошибок, уменьшает неполноту, противоречивость и избыточность алгоритмов;
создает возможность определять модульность ПС и организовать базу знаний разработчику алгоритмов(технологу).
Третий метод состоит в отделении операций по вводу/выводу от вычислительных операций. Это способствует быстрому изменению и удобному заданию интерфейса между ПС и пользователем. При этом вычислительные операции не меняются. Кроме этого, создаются предпосылки, для разработки инвариантного набора программ ввода/вывода.
В дополнение, к рассмотренным методам, модульного программирования можно дать рекомендации, способствующие выделению модулей. Необходимо стремиться к заданию параметров в символьной форме, что обеспечивает простое изменение параметра в программе. Если параметры используются несколькими модулями, то имеет смысл централизованное задание значений параметров, что повышает использование модулей в различных конфигурациях и удобное изменение значений параметров. Рекомендуется параметры и действия таблиц решений задавать в отдельных модулях алгоритма: модуль входных параметров и модуль действий, что делает независимыми правила выбора действий от расположения в памяти параметров и от выполняемых действий [15]. Не рекомендуется, чтобы модули использовали общую рабочую память, что приводит к увеличению зависимости модулей.