Invest-currency.ru

Как обезопасить себя в кризис?
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Модульное программирование презентация

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

Презентация была опубликована 5 лет назад пользователемКлавдия Севергина

Похожие презентации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Алгоритмы структуры данных и программирование

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

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

Основные концепции модульного программирования. Принцип утаивания информации. Аксиома модульности Коуэна. Связность модуля, основные типы связности. Сцепление и рутинность модуля. Основные функции на языке C/C++. Основные коды инструкций модулей.

Подобные документы

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

практическая работа, добавлен 07.05.2014

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

шпаргалка, добавлен 06.05.2009

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

контрольная работа, добавлен 09.06.2013

Теория программирования и ее основные понятия: алгоритм, задача и вычислитель. Основные направления в программировании. Цели и задачи программирования как инженерной деятельности. Области разработки программного обеспечения. Понятие системной инженерии.

презентация, добавлен 06.09.2017

Основные понятия теории игр и линейного программирования. Исследование алгоритмов симплекс-метода и сведение к нему матричной игры, имеет место и обратный процесс сведения задачи линейного программирования к матричной игре на языке Turbo Pascal.

курсовая работа, добавлен 01.05.2011

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

лабораторная работа, добавлен 16.02.2012

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

курсовая работа, добавлен 15.11.2013

Понятие и основные достоинства языка программирования С# (C Sharp), предназначенного для создания распределенных компьютерных приложений. Анализ структуры программного модуля (алфавит, операторы, классы, объекты), сравнительная характеристика его версий.

реферат, добавлен 30.10.2014

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

реферат, добавлен 10.05.2015

Утопленный и выпуклый текст, текст с тенью как разновидности объемного текста. Выбор степени эффекта. Структура модуля ExTXT. Назначение модуля, назначение и выполнение головной программы. Описание применения модуля. Описание контрольного примера.

Презентация по теме: «Структурное программирование»
презентация к уроку по информатике и икт (9 класс) на тему

Презентация по теме: «Структурное программирование» для старшей школы.

Скачать:

Предварительный просмотр:

Подписи к слайдам:

Модульное программирование Согласно принципу модульности программа разбивается на отдельные смысловые части ( модули ). Модуль – это функционально законченная часть программы.

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

Структурное программирование Является дальнейшим развитием модульного программирования. Основой технологии метода структурного программирования являются: 1) Принцип модульной разработки программ 2) Использование при разработке модуля композиции трех базовых структур (элементов):

Структурное программирование А) линейной (структуры следования) Действия выполняются последовательно друг за другом

Структурное программирование Б) ветвления (структуры « если-то-иначе »)

Структурное программирование В)циклической (структуры «цикл пока»)

Структурное программирование Структурное программирование делает текст программы более понятным – алгоритм решения ясно виден из исходного текста.

Объектно-ориентированное программирование Основой объектно-ориентированного программирования (ООП) является понятие объект . Его суть состоит в том, что объект объединяет в себе структуры данных и характерные только для него процедуры (методы) их обработки. Такой подход полностью меняет стиль программирования, он заключается в отображении физических объектов реального мира на программную среду. Работать с объектами удобнее и естественнее, чем с традиционными конструкциями процедур преобразования данных.

Что такое блок-схема? Блок-схема — графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).

Практика Изобразите при помощи блок-схемы программу «приветствие» . . алг . . |приветствие . . нач . . . лит n . . . ввод n . . . вывод «Привет» , n . . кон 13

Практика Напишите программу для вычисления суммы 2х целых чисел Напишите программу нахождения большего из 2х целых чисел Напишите программу для сложения целых чисел от 1 до n 14

Практика 1. Напишите программу для перевода единиц измерения информации из Кбайт в биты 2. Составить программу, которая в случае если произведение двух введенных с клавиатуры чисел больше 50 – делит его на 2, иначе прибавляет к нему 25. 3. Составить программу определяющую существование треугольника со сторонами a , b и c . Условие существования треугольника известно из геометрии: сумма двух любых сторон должна быть больше третьей. Следовательно, для всех сторон условие “сумма двух больше третьей” должно выполняться .

Домашнее задание 4. Составить блок-схему нахождения большего из 3 введенных с клавиатуры чисел . 5. Вычислите среднее арифметическое 3х введенных с клавиатуры чисел

По теме: методические разработки, презентации и конспекты

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

Проверочная работа в 10 классе по типу ЕГЭ, со спецификацией.

Этот материал разработан для самостоятельной работы для студентов при изучении темы «Строение ядра. Кариотип. Хромосомы человека». Здесь есть задания, схемы и рисунки по которым студенты б.

Данное пособие может быть использовано в 8,9,10,11 классах при изучениии раздела биологии «Цитология». Оно содержит теоретический материал по строению и организации клетки растений и животных, обобщаю.

Биология .Общие закономерности. 9 класс-2014-2015 учебный год.Тест по теме : «Структурная организация клетки».

На выполнение тестового задания отводится 45 минут. Тест состоит из 3 частей: а-1- базовый уровень, а-2 и а-3 повышенный уровень. Часть а- 1включает 23 задания и состоит из 3 видов заданий: найти в.

В статье описаны основные черты одного из первых классических подходов к созданию программ.

Презентация по теме: «Структурное программирование»
презентация к уроку по информатике и икт (9 класс) на тему

Презентация по теме: «Структурное программирование» для старшей школы.

Скачать:

Предварительный просмотр:

Подписи к слайдам:

Модульное программирование Согласно принципу модульности программа разбивается на отдельные смысловые части ( модули ). Модуль – это функционально законченная часть программы.

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

Структурное программирование Является дальнейшим развитием модульного программирования. Основой технологии метода структурного программирования являются: 1) Принцип модульной разработки программ 2) Использование при разработке модуля композиции трех базовых структур (элементов):

Читать еще:  Теневая цена в линейном программировании это

Структурное программирование А) линейной (структуры следования) Действия выполняются последовательно друг за другом

Структурное программирование Б) ветвления (структуры « если-то-иначе »)

Структурное программирование В)циклической (структуры «цикл пока»)

Структурное программирование Структурное программирование делает текст программы более понятным – алгоритм решения ясно виден из исходного текста.

Объектно-ориентированное программирование Основой объектно-ориентированного программирования (ООП) является понятие объект . Его суть состоит в том, что объект объединяет в себе структуры данных и характерные только для него процедуры (методы) их обработки. Такой подход полностью меняет стиль программирования, он заключается в отображении физических объектов реального мира на программную среду. Работать с объектами удобнее и естественнее, чем с традиционными конструкциями процедур преобразования данных.

Что такое блок-схема? Блок-схема — графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).

Практика Изобразите при помощи блок-схемы программу «приветствие» . . алг . . |приветствие . . нач . . . лит n . . . ввод n . . . вывод «Привет» , n . . кон 13

Практика Напишите программу для вычисления суммы 2х целых чисел Напишите программу нахождения большего из 2х целых чисел Напишите программу для сложения целых чисел от 1 до n 14

Практика 1. Напишите программу для перевода единиц измерения информации из Кбайт в биты 2. Составить программу, которая в случае если произведение двух введенных с клавиатуры чисел больше 50 – делит его на 2, иначе прибавляет к нему 25. 3. Составить программу определяющую существование треугольника со сторонами a , b и c . Условие существования треугольника известно из геометрии: сумма двух любых сторон должна быть больше третьей. Следовательно, для всех сторон условие “сумма двух больше третьей” должно выполняться .

Домашнее задание 4. Составить блок-схему нахождения большего из 3 введенных с клавиатуры чисел . 5. Вычислите среднее арифметическое 3х введенных с клавиатуры чисел

По теме: методические разработки, презентации и конспекты

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

Проверочная работа в 10 классе по типу ЕГЭ, со спецификацией.

Этот материал разработан для самостоятельной работы для студентов при изучении темы «Строение ядра. Кариотип. Хромосомы человека». Здесь есть задания, схемы и рисунки по которым студенты б.

Данное пособие может быть использовано в 8,9,10,11 классах при изучениии раздела биологии «Цитология». Оно содержит теоретический материал по строению и организации клетки растений и животных, обобщаю.

Биология .Общие закономерности. 9 класс-2014-2015 учебный год.Тест по теме : «Структурная организация клетки».

На выполнение тестового задания отводится 45 минут. Тест состоит из 3 частей: а-1- базовый уровень, а-2 и а-3 повышенный уровень. Часть а- 1включает 23 задания и состоит из 3 видов заданий: найти в.

В статье описаны основные черты одного из первых классических подходов к созданию программ.

Что такое модульное программирование и кому оно нужно

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

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

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

Классическая проблема программирования

В западной литературе существует термин «big ball of mud» для описания архитектуры программы. Давайте переведём его дословно. Графически «большой шар грязи» можно представить в виде точек на окружности, символизирующих функциональные элементы, и прямых – связей между ними:

Похоже на ваши глаза перед сдачей проекта, не так ли?

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

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

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

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

  • Ускорение разработки.
  • Повышение надёжности.
  • Упрощение тестирования.
  • Взаимозаменяемость.

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

Но не всё так просто.

Проблемы модульного программирования

Сама по себе идея использования модулей не сильно упрощает код, важно минимизировать количество прямых связей между ними. Здесь мы подходим к понятию «инверсия управления» (IoC). Упрощённо – это принцип программирования, при котором отдельные компоненты кода максимально изолированы друг от друга. То есть детали одного модуля не должны влиять на реализацию другого. Достигается это при помощи интерфейсов или других видов представления, не обеспечивающих прямого доступа к модульному коду.

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

В модульном программировании существует три основные реализации:

  • Внедрение зависимостей. Способ, при котором каждый элемент имеет свой интерфейс, взаимодействие модулей происходит через интерфейсы.
  • Фабричный метод. Основывается на существовании некого объекта, предназначенного для создания других объектов. Иначе говоря, введение в программу прототипа, объединяющего общие черты для большинства объектов. Прямого взаимодействия между модулями нет, все параметры наследуются от «завода».
  • Сервисный метод. Создаётся один общий интерфейс, являющийся буфером для взаимодействия объектов. Похожую функцию в реальной жизни выполняют колл-центры, магазины, площадки для объявлений и т.д.
Читать еще:  Перевести выражение в паскаль онлайн

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

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

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

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

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

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

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

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

Классическая проблема программирования

В западной литературе существует термин «big ball of mud» для описания архитектуры программы. Давайте переведём его дословно. Графически «большой шар грязи» можно представить в виде точек на окружности, символизирующих функциональные элементы, и прямых – связей между ними:

Похоже на ваши глаза перед сдачей проекта, не так ли?

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

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

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

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

  • Ускорение разработки.
  • Повышение надёжности.
  • Упрощение тестирования.
  • Взаимозаменяемость.

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

Но не всё так просто.

Проблемы модульного программирования

Сама по себе идея использования модулей не сильно упрощает код, важно минимизировать количество прямых связей между ними. Здесь мы подходим к понятию «инверсия управления» (IoC). Упрощённо – это принцип программирования, при котором отдельные компоненты кода максимально изолированы друг от друга. То есть детали одного модуля не должны влиять на реализацию другого. Достигается это при помощи интерфейсов или других видов представления, не обеспечивающих прямого доступа к модульному коду.

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

В модульном программировании существует три основные реализации:

  • Внедрение зависимостей. Способ, при котором каждый элемент имеет свой интерфейс, взаимодействие модулей происходит через интерфейсы.
  • Фабричный метод. Основывается на существовании некого объекта, предназначенного для создания других объектов. Иначе говоря, введение в программу прототипа, объединяющего общие черты для большинства объектов. Прямого взаимодействия между модулями нет, все параметры наследуются от «завода».
  • Сервисный метод. Создаётся один общий интерфейс, являющийся буфером для взаимодействия объектов. Похожую функцию в реальной жизни выполняют колл-центры, магазины, площадки для объявлений и т.д.

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

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

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

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

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

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector