Использование модулей при разработке программ

Презентация на тему: » Модульное программирование Модульность в программировании подобна честности в политике: каждый утверждает, что она — одно из его достоинств, но кажется,» — Транскрипт:

1 Модульное программирование Модульность в программировании подобна честности в политике: каждый утверждает, что она — одно из его достоинств, но кажется, никто не знает, что она собой представляет. Йодан Э.

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

3 Основные концепции: В основе модульного программирования лежат три основные концепции: Принцип утаивания информации Парнаса При разработке программ формируется список проектных решений, которые особенно трудно понять или которые, скорее всего, будут меняться. Затем определяются отдельные модули, каждый из которых реализует одно из указанных решений.Большие программы должны использовать модули без каких-либо предварительных знаний об их внутренней структуре. Примерами удачных модулей могут служить программы ППП (пакетов прикладных программ) и стандартные процедуры. Сборочное программирование Цейтина. Модули – это программные «кирпичи», из которых строится программа.

Проектирование программного обеспечения. Модульное приложение.

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

5 Характеристики модуля (Майерс, 1980) Размер модуля Связность (прочность) модуля Сцепление модуля с другими модулями Рутинность (независимость от предыдущих обращений) модуля

6 Размер модуля Модуль не должен превышать 60 строк В результате его можно поместить на одну страницу распечатки или легко просмотреть на экране монитора

7 Связность модуля Связность модуля – мера независимости его частей. Чем выше связность, тем больше связей он «упрятывает» в себе Типы связности: Функциональная Модуль с функциональной связностью реализует одну какую-нибудь функцию и не может быть разбит на два модуля с теми же типами связности Последовательная

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

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

ТОП 5 Лучших графических (GUI) фреймворков Python / Графический интерфейс python

10 Связность модуля: Следует избегать Временной связности — когда объединяются действия, связанные со временем (например, действия, которые должны быть выполнены в один и тот же момент времени) Логической связности — когда в модуль объединяются действия по признаку их некоторого подобия (например, функции для проверки корректности входных данных для всей программы) Случайной связности — когда действия объединяются произвольным образом Процедурной связности — когда действия сгруппированы вместе только потому, что они выполняются в течение одной и той же части процесса

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

12 Типы сцепления Независимые модули – идеальный случай. В этом случае модули ничего не знают друг о друге. Взаимодействие модулей организуется через их интерфейсы, когда выходные данные одного модуля передаются на вход другого. Достичь такого сцепления очень сложно, и в большинстве случаев не нужно.

13 Типы сцепления Сцепление по данным (параметрическое) – это сцепление, когда данные передаются модулю как значения его параметров или как результат его обращения к другому модулю для вычисления некоторой функции ( Этот тип сцепления реализуется в языках программирования при обращении к функциям) Разновидности этого сцепления: Сцепление по простым элементам данных Сцепление по структуре данных (оба модуля при этом должны знать о внутренней структуре данных)

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

15 Рутинность модуля Рутинность модуля – это независимость модуля от предыдущих обращений к нему. Будем называть модуль рутинным, если результат его работы зависит только от количества переданных параметров (а не от количества обращений)

Читайте также:
Estelare программа обновления кожи в для проблемной и комбинированной кожи

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

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

18 Преимущества модульного программирования: Функциональные компоненты модульной программы могут быть написаны и отлажены порознь Модульную программу проще проектировать, легче сопровождать и модифицировать Становится проще процедура загрузки в оперативную память боль-шой программы, требующей сегментации

19 Недостатки модульного программирования: Может увеличиться время компиляции и загрузки. Может увеличиться время исполнения программы. Может возрасти объем требуемой памяти. Организация межмодульного взаимодействия может оказаться довольно сложной. Для современных компьютеров первые три недостатка несущественны.

20 Стандартные модули Разработка и использование стандартных библиотечных программ является одним из путей построения модульного программирования Преимущества стандартных модулей: 1) стандартные модули экономят время программирования; 2) они также могут экономить память компьютера и выполняться максимально быстро; 3) использование стандартных модулей защищает от ошибок программирования.

21 Стандартные модули Недостатки: Нужный стандартный модуль иногда бывает трудно найти. Еще труднее – подробную документацию к нему Стандартный модуль может оказаться более универсальным, чем это нужно пользователю Стандартный модуль может быть написан на другом языке Каждый программист решает самостоятельно использовать ему стандартные модули или разрабатывать свой собственный.

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

Источник: www.myshared.ru

Разработка программных модулей программного обеспечения

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

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

1. Как составляющая часть процесса разработки ПО. В данном случае разработка модулей, в зависимости от проекта, может вестись последовательно и (или) параллельно, но всегда завершается их объединением в единую систему.

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

В программном комплексе созданные модули могут представлять собой:

  • законченные компоненты;
  • функциональные группы;
  • пакеты программ;
  • единый программный комплекс – законченный программный продукт конкретного целевого назначения.

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

Компания АРТВЕЛЛ использует модульное программирование для различных целей – все зависит от задач и требований заказчика.

Источник: www.artwell.ru

Модульное и объектно-ориентированное программирование

Курсовая работа написана по теме «Модульное и объектно-ориентированное программирование».

На заре развития программирования компьютерная программа рассматривалась как результат научного творчества и искусства. Программистов было совсем немного, а их труд считался сродни волшебству. В настоящее время ситуация изменилась: к программе подходят к результату сложного технологического процесса, а программисты – это прежде всего настоящие профессионалы своего дела, искусные, т.е. квалифицированные, мастера.

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

1. Построить таблицы по приведенным данным.

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

3. Результаты вычислений представить в виде консолидированной таблицы, содержащей сводные данные о выпущенной продукции.

4. Сформулировать и заполнить форму сводной ведомости по учету выпущенной продукции за квартал.

Читайте также:
Как взломать пробную программу

5. Результаты плановых и фактических показателей выпуска продукции за квартал по каждой бригаде представить в графическом виде.

Объектом изучения является модульное и объектно-ориентированное программирование.

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

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

Теоретическая часть

Введение

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

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

Языки высокого уровня появились в 60-е годы. Ресурсы ЭВМ были недостаточны, поэтому программисты вынуждены были писать программы весьма “хитроумно” с использованием оператора безусловного перехода. Программа получалась запутанной, имела структуру “блюдо спагетти”. Так как область применения ЭВМ расширялась, программное обеспечение усложнялось [2,c.15].

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

1.1. Модульное программирование

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

Использование модулей – прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования.

Концепцию модульного программирования можно сформулировать в виде нескольких понятий и положений:

  • Функциональная декомпозиция задачи — разбиение большой задачи на ряд более мелких, функционально самостоятельных подзадач — модулей. Модули связаны между собой только по входным и выходным данным.
  • Модуль — основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» содним входом и одним выходам. Модульный подход позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации и облегчает ее сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль.
  • Реализуемые решения должны быть простыми и ясными. Если назначение модуля непонятно, то это говорит о том, что декомпозиция начальной или промежуточной задачи была проведена недостаточно качественно. В этом случае необходимо еще раз проанализировать задачу и, возможно, провести дополнительное разбиение на подзадачи. При наличии сложных мест в проекте их нужно подробнее документировать с помощью продуманной системы комментариев. Этот процесс нужно продолжать до тех пор, пока вы действительно не добьетесь ясного понимания назначения всех модулей задачи и их оптимального сочетания.
  • Назначение всех переменных модуля должно быть описано с помощью комментариев по мере их определения [1,.57].

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

1.2. Объектно – ориентированное программирование

Объектно-ориентированное программирование является в настоящее время наиболее популярной технологией программирования. Объектно-ориентированными языками программирования являются Visual Basic, Visual Basic for Application (VBA), Delphi и др. Идея объектно-ориентированного программирования (ООП) заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое — объект. ООП основано на трех важнейших принципах, придающих объектам новые свойства.

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

Читайте также:
Установить программы для World of Tanks

2) Наследование – это такое свойство объекта, которое позволяет ему использовать поля и методы объекта родителя, без описания их в своей структуре. Наследование – это ещё одно базовое понятие объектно-ориентированного программирования. Наследование позволяет определять новые объекты, используя свойства прежних, дополняя или изменяя их.

Объект-наследник получает все поля и методы «родителя», к которым он может добавить свои собственные поля и методы или заменить («перекрыть») их своими методами. В чём привлекательность наследования? Если некий объект был уже определён и отлажен, он может быть использован и в других программах.

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

3) Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. Полиморфизм заключается в том, что одно и то же имя может соответствовать различным действиям в зависимости от типа объекта. [3].

В основу ООП положен принцип абстрагирования.

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

Руководящая идея объектно-ориентированного программирования заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое – объект. Характерной чертой объектов является инкапсуляция данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение. Фактически объектно-ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда во многом место случайного, механического объединения процедур и данных акцент делает на их смысловую связь. [4].

Следует заметить, что преимущества объектно-ориентированного программирования в полной мере проявляются лишь при разработке достаточно сложных программ. Более того, инкапсуляция придает объектам совершенно особое свойство «самостоятельности», максимальной независимости от остальных частей программы – правильно сконструированный объект располагает всеми необходимыми данными и процедурами их обработки, чтобы успешно реализовать требуемые от него действия. Таким образом, объектно-ориентированное программирование в наибольшей степени подходит к задаче разработки библиотек программирования. Попытки использовать объектно-ориентированное программирование для программирования несложных алгоритмических действий, связанных, например, с расчетными вычислениями по готовым формулам, чаще всего выглядят искусственными нагромождениями ненужных языковых конструкций.

Заключение

В курсовой работе я постаралась раскрыть такие понятия как модульное и объектно-ориентированное программирование, и пришла к выводу, что объектно-ориентированное программирование имеет целый ряд преимуществ:

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

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

— возможность многократного использования одних и тех же модулей.

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

Практическая часть

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

  1. Построить таблицы по приведенным ниже данным.
  2. Выполнить расчет отклонения фактических показателей от плановых в абсолютнойи относительной форме, подвести итоги за месяц.
  3. Результаты вычислений представить в виде консолидированной таблицы, содержащей сводные данные о выпущенной продукции.
  4. Сформировать и заполнить форму сводной ведомости по учету выпущенной продукции за квартал.
  5. Результаты плановых и фактических показателей выпуска продукции за квартал по каждой бригаде представить в графическом виде.

Ведомость учета выпущенной продукции за январь 2006г.

Абсолютное отклонение от плановых показателей

Относительное отклонение от плановых показателей

Источник: studrb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru