Рубрики
Без рубрики

Простой способ снизить сложность информационных систем

Как снизить сложность информационных систем с помощью программирования, ориентированного на данные. Помеченный ооп, javascript, java, cpp.

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

Традиционно информационные системы реализовывались с использованием парадигм программного программирования, таких как объектно-ориентированное программирование, основанное на концепции “объектов”, которые могут содержать данные и код. Информационные системы, которые следуют объектно-ориентированному программированию без ограничений, как правило, сложны в том смысле, что их трудно понять и трудно поддерживать.

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

Три аспекта объектно-ориентированного программирования являются источником сложности:

  1. Инкапсуляция данных в объекты
  2. Негибкое расположение данных в классах
  3. Мутация состояния

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

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

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

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

Идея TOP состоит в том, чтобы упростить проектирование и внедрение информационных систем, рассматривая данные как “первоклассного гражданина”. Вместо проектирования информационных систем вокруг объектов, объединяющих данные и код, TOP помогает нам отделять код от данных и представлять данные с помощью неизменяемых общих структур данных. Как следствие, в DOP разработчики манипулируют данными с такой же гибкостью и спокойствием, как они манипулируют числами или строками в любой программе. DOP снижает сложность системы, следуя трем основным принципам:

  1. Отделение кода от данных
  2. Представление данных с помощью общих структур данных
  3. Сохранение неизменности данных

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

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

Ехонатан Шарвит работает инженером-программистом с 2000 года, программируя на C++, Java, Ruby, JavaScript, Clojure и ClojureScript. В настоящее время он работает архитектором программного обеспечения в Cyclognition, создавая программные инфраструктуры для крупномасштабных конвейеров данных. Он делится информацией о программном обеспечении в своем техническом блоге. Ехонатан недавно опубликовал книгу Программирование, ориентированное на данные доступно у Мэннинга.

Оригинал: “https://dev.to/viebel/a-simple-way-to-reducing-complexity-of-information-systems-2d22”