В чем заключается независимость модуля
Модульное программирование
Структурное программирование
Самое общеизвестное определение структурного программирования – подход к программированию, в котором для передачи управления в программе используется три конструкции: следование, выбора и цикл.
Классическая теорема Боэма и Джакопини о структурном программировании утверждает, что всякую правильную программу (т. е. программу с одним входом и одним выходом, без зацикливаний и недостижимых веток) можно записать с использованием следующих логических структур:
последовательности двух или более операторов;
Дейкстра предложил отказаться от оператора безусловного перехода и ограничиться тремя конструкциями – последовательностью, выбором и циклом;
Дональд Кнут продемонстрировал случаи, в которых оператор безусловного перехода оказывался полезным (например, выход из нескольких вложенных циклов) и подверг критике утверждение Дейкстры.
В 1965 году академик Глушков обратил внимание на то, что структурированные программы можно рассматривать как формулы в некоторой алгебре. Зная правила преобразования выражений в такой алгебре, можно осуществлять глубокие формальные (и, следовательно, автоматизированные) преобразования программ.
Структурное программирование – не самоцель, его основное назначение – получение хорошей программы. Однако даже в самой хорошей программе операторы перехода требуются, например при выходе из множества вложенных циклов.
Модульное программирование
Модульное программирование – это такой способ программирования, при котором вся программа разбивается на группу компонентов, называемых модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности – монолитная программа, что, конечно, неудобно. Таким образом, наиболее интересный вопрос при изучении модульности – определение критерия разбиения на модули. В основе модульного программирования лежат три основные концепции.
Принцип утаивания информации. Всякий компонент утаивает единственное проектное решение, т. е. модуль служит для утаивания информации. Подход к разработке программ заключается в том, что сначала формируется список проектных решений, которые особенно трудно принять или которые, скорее всего, будут меняться. Затем определяются отдельные модули, каждый из которых реализует одно из указанных решений.
Аксиома модульности. Модуль – независимая программная единица, служащая для выполнения некоторой определенной функции программы и для связи с остальной частью программы. Программная единица должна удовлетворять следующим условиям:
– блочность организации, т. е. возможность вызвать программную единицу из блоков любой степени вложенности;
– синтаксическая обособленность, т. е. выделение модуля в тексте синтаксическими элементами;
– семантическая независимость, т. е. независимость от места, где программная единица вызвана;
– общность данных, т. е. наличие собственных данных, сохраняющихся при каждом обращении;
– полнота определения, т. е. самостоятельность программной единицы.
Сборочное программирование. Модули – это программные кирпичи, из которых строится программа.
Сцепление модулей – мера относительной независимости модуля от других модулей. Независимые модули могут быть модифицированы без переделки других модулей. Чем слабее сцепление модуля, тем лучше. Рассмотрим различные типы сцепления.
– независимые модули – это идеальный случай. Модули ничего не знают друг о друге. Организовать взаимодействие таких модулей можно, зная их интерфейс и соответствующим образом перенаправив выходные данные одного модуля на вход другого.
Рутинность модуля – это независимость модуля от предыдущих обращений к нему (от предыстории). Модуль является рутинным, если результат его работы зависит только от количества переданных параметров (а не от количества обращений). Модуль должен быть рутинным в большинстве случаев, но есть и случаи, когда модуль должен сохранять историю. В выборе степени рутинности модуля пользуются тремя рекомендациями:
– в большинстве случаев делаем модуль рутинным;
– зависящие от предыстории модули следует использовать только в тех случаях, когда это необходимо для сцепления по данным;
– в спецификации зависящего от предыстории модуля должна быть четко сформулирована эта зависимость, чтобы пользователи имели возможность прогнозировать поведение такого модуля.
Структурное и модульное программирование.
Структурное программирование
Структурное программирование — парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков.
По своей сути оно воплощает принципы системного подхода в процессе создания и эксплуатации программного обеспечения ЭВМ.
Структурное программирование воплощает принципы системного подхода в процессе создания и эксплуатации программного обеспечения ЭВМ. В основу структурного программирования положены следующие достаточно простые положения:
Структурное программирование иногда называют еще «программированием без go to». Рекомендуется избегать употребления оператора перехода всюду, где это возможно, но чтобы это не приводило к слишком громоздким структурированным программам.
goto (перейти на) — оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой) в некоторых языках программирования. В некоторых языках оператор безусловного перехода может иметь другое имя (например, jmp в языках ассемблера).
Фундаментом структурного программирования является теорема о структурировании. Эта теорема устанавливает, что, как бы сложна ни была задача, схема соответствующей программы всегда может быть представлена с использованием ограниченного числа элементарных управляющих структур.
Базовыми элементарными структурами являются структуры: следование, ветвление и повторение (цикл), любой алгоритм может быть реализован в виде композиции этих трех конструкций.
Достоинства структурного программирования:
Модульное программирование
Модульное программирование является естественным следствием проектирования сверху вниз и заключается в том, что программа разбивается на части – модули, разрабатываемые по отдельности.
В программировании под модулем понимается отдельная подпрограмма, а подпрограммы часто называются процедурами или процедурами-функциями. Поэтому модульное программирование еще называется процедурным.
Модуль должен обладать следующими свойствами:
Модули содержат определение доступных для обработки данных, операции обработки данных, схемы взаимосвязи с другими модулями.
Каждый модуль состоит из спецификации и тела. Спецификации определяют правила использования модуля, а тело – способ реализации процесса обработки.
Принципы модульного программирования программных продуктов во многом сходны с принципами нисходящего проектирования: сначала определяются состав и подчиненность функций, а затем — набор программных модулей, реализующих эти функции.
В чем заключается независимость модуля
Традиционным принципом разработки сложной системы является принцип модульности. Рассмотрим основные пути повышения независимости модулей. Основной путь упрощения сложной программы состоит в разделении ее на небольшие автономные модули. [c.130]
Модуль представляет собой закрытую подпрограмму, которая может вызываться любым другим модулем и может быть оттранслирована отдельно. Автономность (или независимость) модуля может достигаться за счет максимизации его внутренней связности и минимизации связей между модулями. На основе этого подхода в программе, состоящей из некоторого набора операторов, операторы должны быть взаимосвязаны между собой как в плане реализуемой функции, так и в плане использования информации. Необходимо организовать объединение этих операторов в небольшие по объему модули так, чтобы имела место тесная связь между операторами внутри модуля и исключалась (сводилась к минимуму), связь между двумя операторами из разных модулей. Целью приемов декомпозиции программы на модули является выделение отдельной функции для каждого модуля и минимизация связей посредством данных за счет использования способов передачи формальных параметров. [c.130]
Информационно-связанный модуль представляет собой конструкцию, реализующую несколько вложенных функций. Каждая функция работает с общей структурой данных и представлена единственной уникальной точкой входа. Этот тип модулей может рассматриваться как физическая группировка функционально-связанных модулей с целью локализации обработки информации в пределах одного модуля. Преимущество данного подхода состоит в том, что независимость модулей в программе возрастает, если все аспекты программы могут быть локализованы в одном модуле. [c.132]
Взаимосвязь модулей. Второй путь достижения независимости модулей состоит в минимизации связи между ними. Информационная взаимосвязь модулей рассматривается как совокупность механизма передачи данных и передачи атрибутов данных. Для любой пары модулей в программе могут быть проведены анализ с учетом их взаимосвязи и классификация при наличии взаимосвязи по одной из шести возможных категорий. При отсутствии взаимосвязи пара определяется как не имеющая прямой связи. [c.133]
Высокая степень внутренней связности модуля и низкий уровень внешней связности усиливают независимость модуля, минимизируя взаимосвязи и взаимозависимость модулей. Следующие три критерия обобщают эти выводы [c.135]
Другие принципы обеспечения независимости. Кроме внутренней и внешней связности, степень независимости модуля определяется и другими факторами. Например, размер модуля оказывает определенное влияние на независимость и читаемость программы, а также на сложность организации тестирования. Можно написать программу, отвечающую критериям максимальной внутренней и минимальной внешней связности, в качестве одного огромного модуля. Однако в целях снижения числа взаимосвязей между операторами программы и данными целесообразно разделить программу на некоторое количество самостоятельных модулей. Как правило, модуль должен состоять из 10—100 выполняемых операторов на языке высокого уровня. [c.135]
Независимость модуля существенно повышается, если его алгоритм не предусматривает запоминания информации о предыдущих вызовах и состояниях во время их реализации. [c.136]
Внутренняя и внешняя связность и другие пути достижения независимости модулей существенны в оценке подхода к проектированию системы, но не определяют самого процесса проектирования. Обоснование проектируемой системы включает анализ задач и трансформацию данных. 136 [c.136]
Структура системы программного обеспечения является еще одним важным фактором при проверке программ. Для небольших программ характерны независимые модули с ограниченным взаимодействием. В этом случае [c.258]
Еще одна важная тема — объем работы по настройке системы планирования ресурсов. Некоторые пакеты программ устроены таким образом, что при поступлении обновленных версий все пользовательские настройки сохраняются. В других случаях для работы с новыми версиями специализированные части вашей системы придется всякий раз перерабатывать. Революция в компонентном ПО, о которой идет речь в Приложении, состоит, в частности, и в том, чтобы облегчить независимое функционирование и поддержку специализированных модулей, что позволит не затрачивать значительных усилий при появлении очередной обновленной версии системы планирования ресурсов. [c.162]
Возможность приобретения систем различных конфигураций представляет заметный интерес для пользователей. Поэтому при рассмотрении системы важно учитывать такие ее характеристики, как набор модулей и реализуемых ими функций, степень автономности модулей, наличие межмодульного взаимодействия и формы его реализации (почта между модулями, пересылка управляющих сообщений и пр.), возможные конфигурации системы, ее минимальный состав, независимо функционирующие части, варианты расширения. [c.302]
В МПС с общей памятью каждый из процессоров имеет доступ к любому модулю памяти, которые могут функционировать независимо друг от друга и в каждый момент времени обеспечивать одновременные обращения в целях записи или чтения слова информации, число которых определяется числом модулей. Конфликтные ситуации (обращение к одному и тому же модулю памяти) разрешаются коммутатором, начинающим обслуживать первым устройство с наибольшим приоритетом, например процессор с наименьшим номером. Каждый из процессоров может инициировать работу любого канала ввода-вывода. [c.107]
Алгоритм определения перечисленных показателей представлен в виде блок-схемы на рис. 1. В основу разработки алгоритма положен принцип модульности, выражающийся в том, что любой компонент алгоритма создается самостоятельно, независимо от других компонентов. Модуль — это программно оформленные в виде типовых частей отдельные элементы алгоритма, охватывающие типовую процедуру обработки информации на ЭВМ. Общий алгоритм подзадачи включает в себя четыре модуля, описание которых приводится ниже. Общая блок-схема алгоритма состоит из 25 блоков, включающих в себя следующие операции. [c.52]
Интересные идеи, сформировавшиеся ранее в течение столетия относительно попытки быть более точными в распределении косвенных затрат на индивидуальные изделия, не были востребованы.. Сохранилось разделение финансового и управленческого учета в компаниях, расположенных в странах с немецкой диалектикой. Для многих компаний в этих странах финансовые системы ценообразования управляются независимо, с модулем согласования между ними в конце года, когда финансовые отчеты подготовлены. Но западные компании с накопленным опытом работы сами решают, когда затраты от ведения двух книг — одной для внешнего финансового учета, а второй для разработки управленческих решений — становятся слишком дорогостоящими относительно полученных выгод. [c.9]
При первом типе крупный строительный объект разбивается на несколько независимых строительных модулей, каждый из которых самостоятельно [c.48]
Задача проектирования решается быстрее, легче и надежнее в том случае, когда ее можно разделить на отдельные достаточно самостоятельные части, которые можно рассматривать независимо. В качестве такой части выступает модуль как набор из одного или нескольких смежных операторов программы. Этот набор имеет имя, с помощью которого модуль может быть вызван другими модулями программы. Кроме того, желательно, чтобы он имел собственный набор переменных. [c.124]
На сложность проектируемой системы и ее надежность оказывает влияние не только количество ссылок, но и степень связности, т. е. тот факт, становятся ли модули в результате ссылок взаимозависимыми или же сохраняют относительную независимость. Наличие сильной взаимосвязи усложняет систему, так как модуль в этом случае труднее понять, спроектировать, изменить или исправить при обнаружении ошибки. Все это порождает ненадежность. Сложность системы можно уменьшить, спроектировав ее так, чтобы она имела минимальную связь между модулями. [c.124]
Несмотря на то что этот тип архитектуры системы существует больше 30 лет, пока не создано какой-либо иной широко распространенной методологии построения, кроме предложения разработать укрупненную блок-схему системы с последующим разделением ее на подсистемы, программы, модули. Выделение подсистем (программ, модулей) должно производиться на основе принципов независимости иерархических частей, называемых уровнями и отвечающих определенным критериям построения. [c.127]
Каждый уровень может объединять группу тесно связанных программ (модулей). Цель выделения уровней — уменьшение сложности системы благодаря тому, что уровни определяются как максимально независимые друг от друга. В основу выделения уровней могут быть положены такие критерии построения, как общие для ряда программ используемые ресурсы, файлы данных во внешней памяти, представления данных и т. д. [c.127]
Два модуля обладают контрольной связностью, если один в явной форме.контролирует функционирование другого, например, посредством функционального кода. Контрольная связность и логическая внутренняя связность обычно существуют совместно. Таким образом, здесь имеется проблема, аналогичная рассмотренной при анализе логической внутренней связности использование одного сложного интерфейса для отражения одной из множества функций. Контрольная связность предполагает, что вызывающий модуль имеет некоторую информацию о логике вызываемого, что снижает их независимость. [c.134]
Описанные модули дополняют друг друга, их можно использовать независимо друг от друга. [c.137]
Колеса червячные разъемные и с литым зубом, независимо от модуля и диаметра. [c.26]
При создании ЕС1840 учитывались два основных фактора своеобразие линии персональных ЭВМ (микропроцессорная, однопользовательская система) и сложившаяся линия развития архитектуры, особенности производства и использования семейств ЕС ЭВМ. ПЭВМ ЕС 1840 основного исполнения выполнена в виде пяти конструктивно независимых модулей базового электронного модуля, блоков НГМД, печатающего устройства, монитора, клавиатуры. [c.59]
Функционально-ориентированные пакеты эффективно выполняют те или иные функции обработки данных, но эти пакеты созданы как отдельные независимые модули, а не как единая универсальная система. Каждый пакет выполняет различные функции, однако процесс передачи управления от одного пакета к другому является громоздким и длительным. Поэтому большое значение приобретают интегрированные пакеты типа Fraim Work, устанавливаемые на 16-разрядных АРМ. Интегрированный пакет, ориентированный на управленческую и организаторскую деятельность, включает в себя процессор базы данных, текстовой процессор, процессор обработки таблиц, подсистему деловой графики, службу времени, связь (электронную почту), средства обучения пользователя. [c.108]
Программное обеспечение формируется из программных модулей, что обеспечивает гибкость и способность системы к развитию. Из модулей составляются пакеты прикладных программ (ППП), на основе которых реализуются подсистемы САПР. Выделяют проектирующие и обслуживающие, объектно-ориентированные (объектные) и объектно-независимые (инвариантные) подсистемы. В формировании и функционировании прикладном части программного обеспечения принимает участие общесистемная, операционная часть, базирующаяся на операционной системе конкретной ЭВМ. Компоненты всех видов обеспечения объединяются в подсистемы САПР программными средствами, используемыми специалистом в диалоговом режиме работы с КСАП. [c.19]
Индикатор вероятной направленности ADXрассчитывается как абсолютная по модулю разница между линиями +/-DM Таким образом, чем значительней расхождение линий +/-DM, тем больше будет значение ADX, независимо от направления движения цены. [c.89]
Принципиальное значение для организации деловой игры имеет характер коммуникаций участников в процессе ее проведения. В целях моделирования условий конкуренции поведение каждого участника и оценка его результатов могут быть поставлены в зависимость от действий других участников игры (поведение на рынках, ограниченность ресурсов и т.п.). Такие деловые игры принято называть интерактивными. Неинтерактивные деловые игры ориентированы на не зависимое от других поведение и выбор управленческих решений каждым участником. В отдельных играх (см., например, деловую игру СИПРОМЕК) допускается два режима их проведения тренировочный, предусматривающей независимое поведение игроков (см. модуль участника), и рабочий, предусматривающий реальные отношения конкуренции между участниками. [c.242]
Построение модели — наиболее трудоемкий процесс и требует значительной подготовительной работы по сбору и анализу исходных данных. Различные модули Proje t Expert независимы и доступны пользователю практически в любой последовательности. Однако отсутствие некоторых необходимых исходных данных может блокировать доступ к другим модулям программы. Независимо от того, разрабатываете ли вы детальный финансовый план или хотите произвести предварительный экспресс-анализ программы, вы должны в первую очередь ввести следующие исходные данные [c.394]
Программный продукт Questioinnan Risk позволяет одному или нескольким независимым экспертам провести посредством многокритериального анализа качественную экспертизу бизнес-плана, рассчитать интегральный показатель уровня эффективности плана. При этом экспертный (опросный) лист может быть адаптирован (отредактирован, дополнен или изменен на новый) пользователем в соответствии с целями и задачами предприятия. В этих модулях предусмотрены средства, позволяющие экспертам при помощи диалога проанализировать риск при выполнении бизнес-плана, выделить факторы наибольшего риска и прокомментировать причины их возникновения. Использование специальных средств модуля дает эксперту возможность создать необходимый перечень факторов риска, учитывающий специфические условия реализации бизнес-плана. [c.112]
Наибольшей трудоемкостью в настоящее время обладают процедуры первой группы. Надобность в разработке общих видов составных частей отпадет лишь при проектировании на основе конструктивных модулей. До перехода к такому методу следует ориентироваться на типизацию, которая позволяет выявить структурную однородность составных частей объектов проектирования. На базе типовых структур компоновок могут быть выполнены модификации, которые, однако, не приводят к перестройке общей композиции. Типовые структурные компоновки должны реализовать прогрессивные технические решения. Храниться они могут на магнитных носителях, микрофишах. Каждое описание типовой структурной компоновки в базе данных включает спецификацию составных частей. Для идентификации типовых структурных компоновок можно использовать единую обезличенную классификационную систему обозначений изделий и конструкторских документов. Входящий в нее код классификационной характеристики присваивается конструкторскому документу пр Классификатору ЕСКД независимо от предметной области. Классификатор реализует иерархический метод характеристики изделий, что удобно для декомпозиции при разработке составных частей объекта проектирования. В характеристику должны быть включены наиболее существенные для целей поиска типовых структурных компоновок признаки функциональный, служебного назначения, конструктивный, принципа действия, параметрический, геометрической формы, наименования. [c.233]
Взаключение отмечу модульная реклама характерна для рекламных, рекламно-информационных газет. В общественно-политических газетах рекламные модули, если они размещаются на внутренних полосах, должны иметь размеры от 250 кв.см и более если они размещаются на первой или последней полосе, то не менее 100 кв.см. Плюс к этому модульная реклама, почти на сто процентов независима от источника ее передачи (газеты), в то время как публицистическая более закрепощенная. Ее отклонение от стиля той или иной газеты, не всегда является результативным. [c.131]
Использование библиотек. Для улучшения построения программ, ускорения их отладки и тестирования важным средством является использование библиотек программ Одним из источников библиотечных программ является выполнение программистами требований универсальности разработки Универсальность — это независимость прог рам мы от конкретного набора данных. Опытные программисты знают, что придание программе универсальности позволяет в дальнейшем сохранить силы и сделает прог рамму более устойчивой по отношению к изменениям. Ре комендуется всегда писать модули программ с таким расчетом, чтобы за счет незначительных изменений или улучшений сделать программу полезной еще где-нибудь При таком исполнении универсальные программы могут быть каталогизированы в библиотеку программ для использования в других программах. [c.151]
Контроль при одновременном объединении, Этот метод, является наиболее простым подходом к решению вопросу о выборе последовательнрсти, объединения модулей в единую прбграмму для совместного контроля. При его использовании сначала контролируются все модули независимо друг от друга, затем они одновременно объединяются в программу и контролируются совместно. По сравнению с другими методами контроля этот метод имеет ряд недрст. тат. ко в и сравнительно мало достоинств. К недостаткам метода можно отнести следующие его особенности для. каждого из модулей необходимо создавать управляющие, программы и макеты до последнего момента модули не объединяются для совместного контроля, а это ведет к тому, что серьезные ошибки в сопряжении модулей дли-, тельное время могут оставаться невыявленными. [c.164]
Зачастую пользователю модели для проведения эксперимента необходимо прогонять ее множество раз, изменяя входные параметры. При этом само изменение параметров модели может занимать гораздо меньше времени, чем перекомпиляция. Поэтому в системе Pilgrim реализована подсистема, позволяющая задавать входные параметры для уже скомпилированной модели. В таком случае набор входных данных, требующих настройки, определяется в самом конструкторе. Модуль, обеспечивающий их настройку, может быть выполнен как независимый программный файл или как часть конструктора. [c.198]
Для инновационных разработок, как правило, характерна высокая степень риска. Учет и тщательная оценка факторов, способных помешать осуществлению проекта, должны быть осуществлены в бизнес-плане, при подготовке соответствующего раздела должны использоваться мнения независимых экспертов в данной области. Возможно использование специализированного компьютерного программного модуля Proje t Risk (см. раздел «Компьютерные программные продукты, используемые при подготовке и анализе бизнес-планов инвестиционных проектов»). [c.57]